From 509f577ac36f808d3b8e535a4dc66c70bd2fe9bd Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Thu, 5 Feb 2026 16:08:27 -0800 Subject: [PATCH 001/323] add agent structure dialog --- .../agent-structure-graph-dialog.html | 36 +++++++++ .../agent-structure-graph-dialog.scss | 75 +++++++++++++++++++ .../agent-structure-graph-dialog.ts | 48 ++++++++++++ src/app/components/chat/chat.component.html | 1 + src/app/components/chat/chat.component.ts | 16 +++- .../side-panel/side-panel.component.html | 6 +- .../side-panel/side-panel.component.ts | 1 + src/app/core/services/agent.service.ts | 9 +++ src/app/core/services/interfaces/agent.ts | 1 + 9 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html create mode 100644 src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss create mode 100644 src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html new file mode 100644 index 00000000..46806a21 --- /dev/null +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html @@ -0,0 +1,36 @@ + + +

Agent Structure Graph

+ + +
+ @if (appName) { +

Agent: {{ appName }}

+
+ account_tree +

Agent structure graph visualization will be displayed here.

+

This will show the hierarchical structure of your agent.

+
+ } @else { +

No agent selected.

+ } +
+
+ + + + diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss new file mode 100644 index 00000000..2a23e431 --- /dev/null +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss @@ -0,0 +1,75 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +h2[mat-dialog-title] { + color: var(--mdc-dialog-supporting-text-color) !important; +} + +mat-dialog-content { + color: var(--mdc-dialog-supporting-text-color) !important; +} + +button[mat-button] { + color: var(--mdc-dialog-supporting-text-color) !important; +} + +.dialog-content { + min-width: 600px; + min-height: 400px; + padding: 20px; +} + +.graph-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; +} + +.graph-placeholder { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 40px; + border: 2px dashed var(--mdc-dialog-supporting-text-color); + border-radius: 8px; + margin-top: 20px; + opacity: 0.6; + min-height: 300px; + width: 100%; +} + +.large-icon { + font-size: 64px; + width: 64px; + height: 64px; + margin-bottom: 16px; + color: var(--mdc-dialog-supporting-text-color); +} + +.hint { + font-size: 0.9em; + font-style: italic; + opacity: 0.7; +} + +.no-agent-message { + text-align: center; + padding: 40px; + font-size: 1.1em; +} diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts new file mode 100644 index 00000000..4a9b08e0 --- /dev/null +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts @@ -0,0 +1,48 @@ +/** + * @license + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, inject} from '@angular/core'; +import {MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose} from '@angular/material/dialog'; +import {MatButtonModule} from '@angular/material/button'; +import {MatIconModule} from '@angular/material/icon'; + +export interface AgentStructureGraphDialogData { + appName: string; +} + +@Component({ + selector: 'app-agent-structure-graph-dialog', + templateUrl: './agent-structure-graph-dialog.html', + styleUrls: ['./agent-structure-graph-dialog.scss'], + standalone: true, + imports: [ + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose, + MatButtonModule, + MatIconModule, + ], +}) +export class AgentStructureGraphDialogComponent { + readonly dialogRef = inject(MatDialogRef); + readonly data = inject(MAT_DIALOG_DATA); + + get appName(): string { + return this.data.appName; + } +} diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index b32c494b..ce47183b 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -69,6 +69,7 @@ (appSelectionChange)="onAppSelection($event)" (openAddItemDialog)="openAddItemDialog()" (enterBuilderMode)="enterBuilderMode()" + (showAgentStructureGraph)="openAgentStructureGraphDialog()" > } @else { diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 5453df97..ae634cf7 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -61,6 +61,7 @@ import {LOCATION_SERVICE} from '../../core/services/location.service'; import {ResizableBottomDirective} from '../../directives/resizable-bottom.directive'; import {ResizableDrawerDirective} from '../../directives/resizable-drawer.directive'; import {AddItemDialogComponent} from '../add-item-dialog/add-item-dialog.component'; +import {AgentStructureGraphDialogComponent} from '../agent-structure-graph-dialog/agent-structure-graph-dialog'; import {getMediaTypeFromMimetype, MediaType} from '../artifact-tab/artifact-tab.component'; import {BuilderTabsComponent} from '../builder-tabs/builder-tabs.component'; import {CanvasComponent} from '../canvas/canvas.component'; @@ -1941,6 +1942,17 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { }); } + openAgentStructureGraphDialog(): void { + const dialogRef = this.dialog.open(AgentStructureGraphDialogComponent, { + width: '800px', + maxWidth: '90vw', + maxHeight: '90vh', + data: { + appName: this.appName, + }, + }); + } + saveAgentBuilder() { this.canvasComponent()?.saveAgent(this.appName); } @@ -2037,7 +2049,9 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { this.selectedAppControl.setValue(app, {emitEvent: false}); this.selectApp(app); - + this.agentService.agentInfo(app).subscribe(info => { + console.log(info) + }) this.agentService.getAgentBuilder(app).subscribe((res: any) => { if (!res || res == '') { this.disableBuilderSwitch = true; diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index 3415e900..9d184189 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -68,7 +68,11 @@ [matTooltip]="disableBuilderIcon() ? 'This agent was not built by builder' : 'Edit in Builder Mode'" [style.cursor]="disableBuilderIcon() ? 'not-allowed' : 'pointer'" [style.opacity]="disableBuilderIcon() ? '0.5' : '1'" - [style.margin-right.px]="32">edit + [style.margin-right.px]="16">edit + account_tree } diff --git a/src/app/components/side-panel/side-panel.component.ts b/src/app/components/side-panel/side-panel.component.ts index 2bca4d08..f23ecaaf 100644 --- a/src/app/components/side-panel/side-panel.component.ts +++ b/src/app/components/side-panel/side-panel.component.ts @@ -122,6 +122,7 @@ export class SidePanelComponent implements AfterViewInit { readonly openImageDialog = output(); readonly openAddItemDialog = output(); readonly enterBuilderMode = output(); + readonly showAgentStructureGraph = output(); readonly sessionTabComponent = viewChild(SessionTabComponent); readonly evalTabComponent = viewChild(EvalTabComponent); diff --git a/src/app/core/services/agent.service.ts b/src/app/core/services/agent.service.ts index a0c50cb5..e1df4ce2 100644 --- a/src/app/core/services/agent.service.ts +++ b/src/app/core/services/agent.service.ts @@ -175,4 +175,13 @@ export class AgentService implements AgentServiceInterface { } return new Observable(); } + + agentInfo(name: string) { + if (this.apiServerDomain != undefined) { + let url = + this.apiServerDomain + `/get_app_info/${name}` + return this.http.get(url); + } + return new Observable<"">(); + } } diff --git a/src/app/core/services/interfaces/agent.ts b/src/app/core/services/interfaces/agent.ts index d999080c..129231d2 100644 --- a/src/app/core/services/interfaces/agent.ts +++ b/src/app/core/services/interfaces/agent.ts @@ -31,6 +31,7 @@ export abstract class AgentService { abstract getLoadingState(): BehaviorSubject; abstract runSse(req: AgentRunRequest): Observable; abstract listApps(): Observable; + abstract agentInfo(name: string): Observable; getAgentBuilderTmp(agentName: string): Observable { console.warn('unimplemented'); return of(''); From 2bb4cfa85cfba6138c273721769ec2d412328861 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Thu, 5 Feb 2026 16:49:31 -0800 Subject: [PATCH 002/323] add workflow agent graph --- .../agent-structure-graph-dialog.html | 57 ++++++-- .../agent-structure-graph-dialog.scss | 123 +++++++++++++++--- .../agent-structure-graph-dialog.ts | 109 +++++++++++++++- 3 files changed, 257 insertions(+), 32 deletions(-) diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html index 46806a21..b54a8672 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html @@ -1,5 +1,5 @@ + +
+
+ Workflow Graph + @if (isPinned) { + (Pinned - Click X to close) + } @else { + (Click to pin) + } + +
+
+ + +
+ +
+ + {{ getStatusIcon(ctx.node.data().status) }} + + {{ ctx.node.data().name }} +
+
+ {{ getStatusLabel(ctx.node.data().status) }} +
+ @if (ctx.node.data().retryCount && ctx.node.data().retryCount > 0) { +
Retry: {{ ctx.node.data().retryCount }}
+ } + +
+
+ + + + + + +
+
+
diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss new file mode 100644 index 00000000..4630f896 --- /dev/null +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss @@ -0,0 +1,131 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.workflow-graph-tooltip { + width: 500px; + height: 400px; + background-color: var(--mdc-dialog-container-color, #2b2b2f); + border-radius: 8px; + padding: 12px; + display: flex; + flex-direction: column; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4); +} + +.tooltip-header { + font-size: 14px; + font-weight: 500; + color: var(--mdc-dialog-supporting-text-color); + margin-bottom: 8px; + padding-bottom: 8px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + display: flex; + align-items: center; + gap: 8px; +} + +.pinned-hint { + font-size: 12px; + font-weight: 400; + opacity: 0.7; + font-style: italic; + flex: 1; +} + +.close-button { + width: 24px; + height: 24px; + line-height: 24px; + margin-left: auto; + + mat-icon { + font-size: 18px; + width: 18px; + height: 18px; + line-height: 18px; + } +} + +.vflow-container { + flex: 1; + min-height: 0; + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 4px; + overflow: hidden; + position: relative; + + vflow { + width: 100%; + height: 100%; + display: block; + } +} + +.workflow-node { + background-color: var(--mdc-dialog-container-color, #2b2b2f); + border: 2px solid; + border-radius: 6px; + padding: 8px 12px; + min-width: 160px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); +} + +.node-header { + display: flex; + align-items: center; + gap: 6px; + margin-bottom: 4px; +} + +.status-icon { + font-size: 16px; + width: 16px; + height: 16px; +} + +.node-label { + font-weight: 500; + font-size: 13px; + color: var(--mdc-dialog-supporting-text-color); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.node-status { + font-size: 11px; + font-weight: 600; + margin-top: 2px; +} + +.node-retry { + font-size: 10px; + color: var(--mdc-dialog-supporting-text-color); + opacity: 0.7; + margin-top: 2px; +} + +// Active edge animation +:host ::ng-deep .active-edge { + animation: dash 1.5s linear infinite; + stroke-dasharray: 8 4; +} + +@keyframes dash { + to { + stroke-dashoffset: -12; + } +} diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts new file mode 100644 index 00000000..72bd9548 --- /dev/null +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts @@ -0,0 +1,259 @@ +/** + * @license + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, Input, OnInit, signal} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {MatIconModule} from '@angular/material/icon'; +import {MatButtonModule} from '@angular/material/button'; +import {Vflow, Edge, HtmlTemplateDynamicNode} from 'ngx-vflow'; +import {NodeState, NodeStatus} from '../../core/models/types'; + +interface WorkflowNodeData { + name: string; + status: NodeStatus; + input?: any; + triggeredBy?: string; + retryCount?: number; + executionId?: string; +} + +@Component({ + selector: 'app-workflow-graph-tooltip', + templateUrl: './workflow-graph-tooltip.component.html', + styleUrls: ['./workflow-graph-tooltip.component.scss'], + standalone: true, + imports: [ + CommonModule, + MatIconModule, + MatButtonModule, + Vflow, + ], +}) +export class WorkflowGraphTooltipComponent implements OnInit { + @Input() nodes: {[key: string]: NodeState} | null = null; + @Input() agentGraphData: any = null; + @Input() isPinned: boolean = false; + @Input() onClose?: () => void; + + public graphNodes = signal[]>([]); + public graphEdges = signal([]); + public NodeStatus = NodeStatus; + + close() { + if (this.onClose) { + this.onClose(); + } + } + + ngOnInit(): void { + this.buildGraph(); + } + + private buildGraph(): void { + if (this.agentGraphData?.root_agent?.graph) { + this.buildGraphFromStructure(this.agentGraphData.root_agent); + } else { + this.buildGraphFromStateOnly(); + } + } + + private buildGraphFromStructure(agentData: any): void { + const nodes: HtmlTemplateDynamicNode[] = []; + const edges: Edge[] = []; + const ySpacing = 120; + const xPosition = 200; + const startY = 50; + + if (agentData.graph && agentData.graph.nodes) { + agentData.graph.nodes.forEach((node: any, index: number) => { + const nodeName = node.name || node.agent?.name || `node_${index}`; + const nodeState = this.nodes ? this.nodes[nodeName] : null; + + nodes.push({ + id: nodeName, + type: 'html-template', + point: signal({x: xPosition, y: startY + (index * ySpacing)}), + width: signal(180), + height: signal(80), + data: signal({ + name: nodeName, + status: nodeState?.status ?? NodeStatus.INACTIVE, + input: nodeState?.input, + triggeredBy: nodeState?.triggered_by, + retryCount: nodeState?.retry_count, + executionId: nodeState?.execution_id, + }), + }); + }); + + // Add edges from graph.edges + if (agentData.graph.edges) { + agentData.graph.edges.forEach((edge: any) => { + const fromName = edge.from_node?.name || edge.from_node?.agent?.name; + const toName = edge.to_node?.name || edge.to_node?.agent?.name; + + if (fromName && toName) { + // Check if source node is RUNNING to highlight this edge + const fromNodeState = this.nodes ? this.nodes[fromName] : null; + const isActive = fromNodeState?.status === NodeStatus.RUNNING; + + edges.push({ + id: `${fromName}_to_${toName}`, + source: fromName, + target: toName, + type: 'template', + data: { isActive }, + markers: { + end: { + type: 'arrow-closed', + width: 15, + height: 15, + color: isActive ? '#42A5F5' : 'rgba(138, 180, 248, 0.8)', + }, + }, + }); + } + }); + } + } + + this.graphNodes.set(nodes); + this.graphEdges.set(edges); + } + + private buildGraphFromStateOnly(): void { + const nodes: HtmlTemplateDynamicNode[] = []; + const edges: Edge[] = []; + const ySpacing = 120; + const xPosition = 200; + const startY = 50; + + if (!this.nodes) { + this.graphNodes.set(nodes); + this.graphEdges.set(edges); + return; + } + + const nodeNames = Object.keys(this.nodes); + + nodeNames.forEach((nodeName: string, index: number) => { + const nodeState = this.nodes![nodeName]; + + nodes.push({ + id: nodeName, + type: 'html-template', + point: signal({x: xPosition, y: startY + (index * ySpacing)}), + width: signal(180), + height: signal(80), + data: signal({ + name: nodeName, + status: nodeState.status, + input: nodeState.input, + triggeredBy: nodeState.triggered_by, + retryCount: nodeState.retry_count, + executionId: nodeState.execution_id, + }), + }); + }); + + // Build edges from triggered_by relationships + nodeNames.forEach((nodeName) => { + const nodeState = this.nodes![nodeName]; + if (nodeState.triggered_by && nodeNames.includes(nodeState.triggered_by)) { + // Check if source node is RUNNING to highlight this edge + const fromNodeState = this.nodes![nodeState.triggered_by]; + const isActive = fromNodeState?.status === NodeStatus.RUNNING; + + edges.push({ + id: `${nodeState.triggered_by}_to_${nodeName}`, + source: nodeState.triggered_by, + target: nodeName, + type: 'template', + data: { isActive }, + markers: { + end: { + type: 'arrow-closed', + width: 15, + height: 15, + color: isActive ? '#42A5F5' : 'rgba(138, 180, 248, 0.8)', + }, + }, + }); + } + }); + + this.graphNodes.set(nodes); + this.graphEdges.set(edges); + } + + getStatusColor(status: NodeStatus): string { + switch (status) { + case NodeStatus.INACTIVE: + return '#757575'; + case NodeStatus.PENDING: + return '#FFA726'; + case NodeStatus.RUNNING: + return '#42A5F5'; + case NodeStatus.COMPLETED: + return '#66BB6A'; + case NodeStatus.INTERRUPTED: + return '#FFCA28'; + case NodeStatus.FAILED: + return '#EF5350'; + default: + return '#757575'; + } + } + + getStatusLabel(status: NodeStatus): string { + switch (status) { + case NodeStatus.INACTIVE: + return 'INACTIVE'; + case NodeStatus.PENDING: + return 'PENDING'; + case NodeStatus.RUNNING: + return 'RUNNING'; + case NodeStatus.COMPLETED: + return 'COMPLETED'; + case NodeStatus.INTERRUPTED: + return 'INTERRUPTED'; + case NodeStatus.FAILED: + return 'FAILED'; + default: + return 'UNKNOWN'; + } + } + + getStatusIcon(status: NodeStatus): string { + switch (status) { + case NodeStatus.INACTIVE: + return 'radio_button_unchecked'; + case NodeStatus.PENDING: + return 'schedule'; + case NodeStatus.RUNNING: + return 'play_circle'; + case NodeStatus.COMPLETED: + return 'check_circle'; + case NodeStatus.INTERRUPTED: + return 'pause_circle'; + case NodeStatus.FAILED: + return 'error'; + default: + return 'help'; + } + } +} diff --git a/src/app/core/models/types.ts b/src/app/core/models/types.ts index 411fa074..a43446e9 100644 --- a/src/app/core/models/types.ts +++ b/src/app/core/models/types.ts @@ -78,6 +78,31 @@ export declare interface LlmResponse { longRunningToolIds?: string[]; } +export enum NodeStatus { + INACTIVE = 0, + PENDING = 1, + RUNNING = 2, + COMPLETED = 3, + INTERRUPTED = 4, + FAILED = 5 +} + +export declare interface NodeState { + status: NodeStatus; + input?: any; + triggered_by?: string; + retry_count?: number; + interrupts?: string[]; + resume_inputs?: {[key: string]: any}; + execution_id?: string; + parent_execution_id?: string; + source_node_name?: string; +} + +export declare interface AgentState { + nodes?: {[key: string]: NodeState}; +} + export declare interface EventActions { message?: string; artifactDelta?: any; @@ -85,6 +110,8 @@ export declare interface EventActions { functionCall?: FunctionCall; functionResponse?: FunctionResponse; finishReason?: string; + agentState?: AgentState; + endOfAgent?: boolean; } export declare interface Event extends LlmResponse { @@ -95,6 +122,8 @@ export declare interface Event extends LlmResponse { longRunningToolIds?: string[]; branch?: string; timestamp?: number; + nodePath?: any; + data?: any; } export interface ComputerUsePayload { diff --git a/src/app/directives/workflow-graph-tooltip.directive.ts b/src/app/directives/workflow-graph-tooltip.directive.ts new file mode 100644 index 00000000..e19257d1 --- /dev/null +++ b/src/app/directives/workflow-graph-tooltip.directive.ts @@ -0,0 +1,159 @@ +/** + * @license + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + Directive, + Input, + HostListener, + ComponentRef, + ViewContainerRef, + inject, + OnDestroy, +} from '@angular/core'; +import {Overlay, OverlayRef, OverlayPositionBuilder} from '@angular/cdk/overlay'; +import {ComponentPortal} from '@angular/cdk/portal'; +import {WorkflowGraphTooltipComponent} from '../components/workflow-graph-tooltip/workflow-graph-tooltip.component'; +import {NodeState} from '../core/models/types'; + +@Directive({ + selector: '[appWorkflowGraphTooltip]', + standalone: true, +}) +export class WorkflowGraphTooltipDirective implements OnDestroy { + @Input() appWorkflowGraphTooltip: {[key: string]: NodeState} | null = null; + @Input() agentGraphData: any = null; + + private overlay = inject(Overlay); + private overlayPositionBuilder = inject(OverlayPositionBuilder); + private viewContainerRef = inject(ViewContainerRef); + private overlayRef: OverlayRef | null = null; + private isPinned = false; + + @HostListener('click', ['$event']) + onClick(event: Event) { + event.stopPropagation(); + + if (!this.appWorkflowGraphTooltip || Object.keys(this.appWorkflowGraphTooltip).length === 0) { + return; + } + + // Toggle pinned state + if (this.isPinned) { + this.hide(); + } else { + this.showPinned(); + } + } + + @HostListener('mouseenter') + show() { + // Don't show hover tooltip if already pinned + if (this.isPinned) { + return; + } + + if (!this.appWorkflowGraphTooltip || Object.keys(this.appWorkflowGraphTooltip).length === 0) { + return; + } + + if (this.overlayRef) { + return; + } + + this.showTooltip(false); + } + + @HostListener('mouseleave') + hide() { + // Don't hide if pinned + if (this.isPinned) { + return; + } + + if (this.overlayRef) { + this.overlayRef.dispose(); + this.overlayRef = null; + } + } + + private showPinned() { + // If tooltip is already showing from hover, dispose it first + if (this.overlayRef) { + this.overlayRef.dispose(); + this.overlayRef = null; + } + + this.isPinned = true; + this.showTooltip(true); + } + + private showTooltip(pinned: boolean) { + if (this.overlayRef) { + return; + } + + const positionStrategy = this.overlayPositionBuilder + .flexibleConnectedTo(this.viewContainerRef.element) + .withPositions([ + { + originX: 'center', + originY: 'top', + overlayX: 'center', + overlayY: 'bottom', + offsetY: -8, + }, + { + originX: 'center', + originY: 'bottom', + overlayX: 'center', + overlayY: 'top', + offsetY: 8, + }, + ]); + + this.overlayRef = this.overlay.create({ + positionStrategy, + scrollStrategy: this.overlay.scrollStrategies.close(), + hasBackdrop: pinned, + backdropClass: pinned ? 'cdk-overlay-transparent-backdrop' : undefined, + }); + + if (pinned && this.overlayRef) { + this.overlayRef.backdropClick().subscribe(() => { + this.isPinned = false; + this.hide(); + }); + } + + const tooltipPortal = new ComponentPortal(WorkflowGraphTooltipComponent); + const componentRef: ComponentRef = + this.overlayRef.attach(tooltipPortal); + + componentRef.instance.nodes = this.appWorkflowGraphTooltip; + componentRef.instance.agentGraphData = this.agentGraphData; + componentRef.instance.isPinned = pinned; + componentRef.instance.onClose = () => { + this.isPinned = false; + this.hide(); + }; + } + + ngOnDestroy() { + this.isPinned = false; + this.hide(); + } +} diff --git a/src/styles.scss b/src/styles.scss index afd5199b..2c031b99 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -979,3 +979,8 @@ html.light-theme { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important; max-width: 800px !important; } + +// Transparent backdrop for workflow graph tooltip +.cdk-overlay-transparent-backdrop { + background: transparent; +} From 62d69e7516cdbb865dd5680ef620a212f4dcbd05 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Fri, 6 Mar 2026 10:52:13 -0800 Subject: [PATCH 005/323] add nested workflow support --- .../agent-structure-graph-dialog.html | 28 ++- .../agent-structure-graph-dialog.scss | 64 +++++- .../agent-structure-graph-dialog.ts | 181 ++++++++++++++-- .../chat-panel/chat-panel.component.html | 2 + .../chat-panel/chat-panel.component.ts | 35 +++ .../long-running-response.html | 6 + .../long-running-response.scss | 34 ++- .../long-running-response.ts | 5 + .../workflow-graph-tooltip.component.html | 30 ++- .../workflow-graph-tooltip.component.scss | 60 ++++++ .../workflow-graph-tooltip.component.ts | 148 +++++++++++-- .../workflow-graph-tooltip.directive.ts | 4 + src/app/utils/graph-layout.utils.ts | 204 ++++++++++++++++++ src/app/utils/graph-navigation.utils.ts | 113 ++++++++++ 14 files changed, 878 insertions(+), 36 deletions(-) create mode 100644 src/app/utils/graph-layout.utils.ts create mode 100644 src/app/utils/graph-navigation.utils.ts diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html index b54a8672..694143f9 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html @@ -30,6 +30,21 @@

Agent Structure Graph

} @else if (nodes().length > 0) {

Agent: {{ appName }}

+ @if (breadcrumbs().length > 1) { + + }
Agent Structure Graph [background]="{ type: 'dots', color: '#424242', size: 1, gap: 12 }" > -
+
- smart_toy + {{ getNodeIcon(ctx.node.data().type) }} {{ ctx.node.data().label }} + @if (ctx.node.data().hasNestedStructure) { + zoom_in + }
- @if (ctx.node.data().agentClass && ctx.node.data().label !== 'START') { +
{{ getNodeTypeLabel(ctx.node.data().type) }}
+ @if (ctx.node.data().agentClass) {
{{ ctx.node.data().agentClass }}
} diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss index 29e0e39f..a5ce073b 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss @@ -48,10 +48,42 @@ button[mat-button] { } .agent-info { - margin: 0 0 16px 0; + margin: 0 0 8px 0; font-size: 14px; } +.breadcrumb-nav { + display: flex; + align-items: center; + margin-bottom: 12px; + font-size: 13px; + color: var(--mdc-dialog-supporting-text-color); +} + +.breadcrumb-item { + cursor: pointer; + padding: 4px 8px; + border-radius: 4px; + transition: background-color 0.2s; + + &:hover:not(.active) { + background-color: rgba(138, 180, 248, 0.1); + } + + &.active { + font-weight: 500; + cursor: default; + } +} + +.breadcrumb-separator { + font-size: 16px; + width: 16px; + height: 16px; + opacity: 0.5; + margin: 0 4px; +} + .vflow-container { flex: 1; min-height: 400px; @@ -113,6 +145,17 @@ button[mat-button] { padding: 12px 16px; min-width: 180px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + transition: all 0.2s; + + &.expandable { + cursor: pointer; + + &:hover { + border-color: rgba(138, 180, 248, 0.8); + box-shadow: 0 4px 12px rgba(138, 180, 248, 0.3); + transform: scale(1.02); + } + } } .node-header { @@ -129,17 +172,34 @@ button[mat-button] { color: rgba(138, 180, 248, 0.9); } +.expand-icon { + font-size: 18px; + width: 18px; + height: 18px; + color: rgba(138, 180, 248, 0.9); + margin-left: auto; +} + .node-label { font-weight: 500; font-size: 14px; color: var(--mdc-dialog-supporting-text-color); } +.node-type { + font-size: 11px; + color: rgba(138, 180, 248, 0.8); + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-top: 4px; +} + .node-class { font-size: 12px; color: var(--mdc-dialog-supporting-text-color); opacity: 0.7; - margin-top: 4px; + margin-top: 2px; } // Edge styling diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts index 8971df73..6fd5f251 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts @@ -22,6 +22,8 @@ import {MatIconModule} from '@angular/material/icon'; import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; import {Vflow, Edge, HtmlTemplateDynamicNode} from 'ngx-vflow'; import {AGENT_SERVICE} from '../../core/services/interfaces/agent'; +import {calculateGraphLayout, getNodeName, getNodeTypeIcon, getNodeTypeLabel} from '../../utils/graph-layout.utils'; +import {findNodeInLevel, hasNestedStructure, NavigationStackItem, DEFAULT_LAYOUT_CONFIG} from '../../utils/graph-navigation.utils'; export interface AgentStructureGraphDialogData { appName: string; @@ -30,7 +32,10 @@ export interface AgentStructureGraphDialogData { interface NodeData { name: string; label: string; + type: string; agentClass?: string; + hasNestedStructure?: boolean; + nodeData?: any; // Store the full node data for navigation } @Component({ @@ -59,6 +64,12 @@ export class AgentStructureGraphDialogComponent implements OnInit { public isLoading = signal(true); public errorMessage = signal(null); + // Navigation state + private fullAgentData: any = null; + private navigationStack: NavigationStackItem[] = []; + public currentAgentName = signal(''); + public breadcrumbs = signal([]); + get appName(): string { return this.data.appName; } @@ -75,6 +86,9 @@ export class AgentStructureGraphDialogComponent implements OnInit { this.agentService.getAppInfo(this.appName).subscribe({ next: (agentData: any) => { try { + this.fullAgentData = agentData.root_agent; + this.navigationStack = [{name: agentData.root_agent.name, data: agentData.root_agent}]; + this.updateBreadcrumbs(); this.buildGraph(agentData.root_agent); this.isLoading.set(false); } catch (error) { @@ -94,40 +108,54 @@ export class AgentStructureGraphDialogComponent implements OnInit { private buildGraph(agentData: any): void { const nodes: HtmlTemplateDynamicNode[] = []; const edges: Edge[] = []; - const ySpacing = 150; - const xPosition = 300; - // Handle graph structure from the data - if (agentData.graph && agentData.graph.nodes) { - const startY = 100; + // Handle LlmAgent/Mesh with nodes field + if (agentData.nodes && Array.isArray(agentData.nodes)) { + this.buildMeshGraph(agentData.nodes, nodes, edges); + } + // Handle WorkflowAgent/SingleLlmAgent with graph field + else if (agentData.graph && agentData.graph.nodes) { + // Calculate layout using utility function + const layout = calculateGraphLayout( + agentData.graph.nodes, + agentData.graph.edges || [], + DEFAULT_LAYOUT_CONFIG + ); + // Create nodes with calculated positions agentData.graph.nodes.forEach((node: any, index: number) => { - const nodeName = node.name || node.agent?.name || `node_${index}`; + const nodeName = getNodeName(node, `node_${index}`); const isStartNode = nodeName === '__START__'; - console.log('Node ID:', nodeName); + const nodeType = node.type || 'agent'; + const position = layout.positions.get(nodeName) || {x: DEFAULT_LAYOUT_CONFIG.startX, y: DEFAULT_LAYOUT_CONFIG.startY}; + const hasNested = hasNestedStructure(node); + nodes.push({ id: nodeName, type: 'html-template', - point: signal({x: xPosition, y: startY + (index * ySpacing)}), + point: signal({x: position.x, y: position.y}), width: signal(200), height: signal(80), data: signal({ name: nodeName, label: isStartNode ? 'START' : nodeName, - agentClass: node.agent?.agent_class || 'Agent', + type: nodeType, + agentClass: node.agent?.agent_class || node.model || undefined, + hasNestedStructure: hasNested, + nodeData: node, }), }); }); // Add edges from graph.edges if (agentData.graph.edges) { - agentData.graph.edges.forEach((edge: any) => { - const fromName = edge.from_node?.name || edge.from_node?.agent?.name; - const toName = edge.to_node?.name || edge.to_node?.agent?.name; + agentData.graph.edges.forEach((edge: any, index: number) => { + const fromName = getNodeName(edge.from_node); + const toName = getNodeName(edge.to_node); if (fromName && toName) { edges.push({ - id: `${fromName}_to_${toName}`, + id: `${fromName}_to_${toName}_${index}`, source: fromName, target: toName, type: 'template', @@ -148,4 +176,131 @@ export class AgentStructureGraphDialogComponent implements OnInit { this.nodes.set(nodes); this.edges.set(edges); } + + private buildMeshGraph( + meshNodes: any[], + nodes: HtmlTemplateDynamicNode[], + edges: Edge[] + ): void { + // For LlmAgent/Mesh: nodes array contains coordinator + sub-agents + // Layout: coordinator in center, sub-agents arranged around it + const coordinatorIndex = meshNodes.findIndex(n => + (n.name === meshNodes[0]?.name) || n.type === 'coordinator' + ); + + const coordinator = coordinatorIndex >= 0 ? meshNodes[coordinatorIndex] : null; + const subAgents = meshNodes.filter((_, i) => i !== coordinatorIndex); + + const centerX = 400; + const centerY = 300; + const radius = 200; + + // Add coordinator node in center + if (coordinator) { + const hasNested = hasNestedStructure(coordinator); + nodes.push({ + id: coordinator.name, + type: 'html-template', + point: signal({x: centerX, y: centerY}), + width: signal(200), + height: signal(80), + data: signal({ + name: coordinator.name, + label: coordinator.name, + type: 'agent', + agentClass: coordinator.model || 'LlmAgent', + hasNestedStructure: hasNested, + nodeData: coordinator, + }), + }); + } + + // Add sub-agent nodes in circle around coordinator + subAgents.forEach((node: any, index: number) => { + const angle = (index / subAgents.length) * 2 * Math.PI; + const x = centerX + radius * Math.cos(angle); + const y = centerY + radius * Math.sin(angle); + const hasNested = hasNestedStructure(node); + + nodes.push({ + id: node.name, + type: 'html-template', + point: signal({x, y}), + width: signal(200), + height: signal(80), + data: signal({ + name: node.name, + label: node.name, + type: 'agent', + agentClass: node.model || 'Agent', + hasNestedStructure: hasNested, + nodeData: node, + }), + }); + + // Add edges: coordinator <-> sub-agent + if (coordinator) { + // Coordinator to sub-agent + edges.push({ + id: `${coordinator.name}_to_${node.name}`, + source: coordinator.name, + target: node.name, + type: 'template', + markers: { + end: { + type: 'arrow-closed', + width: 20, + height: 20, + color: 'rgba(138, 180, 248, 0.8)', + }, + }, + }); + + // Sub-agent to coordinator (transfer back) + edges.push({ + id: `${node.name}_to_${coordinator.name}`, + source: node.name, + target: coordinator.name, + type: 'template', + markers: { + end: { + type: 'arrow-closed', + width: 20, + height: 20, + color: 'rgba(138, 180, 248, 0.5)', + }, + }, + }); + } + }); + } + + private updateBreadcrumbs(): void { + this.breadcrumbs.set(this.navigationStack.map(item => item.name)); + this.currentAgentName.set(this.navigationStack[this.navigationStack.length - 1]?.name || ''); + } + + navigateIntoNode(nodeName: string): void { + const currentData = this.navigationStack[this.navigationStack.length - 1].data; + const nodeData = findNodeInLevel(currentData, nodeName); + + if (nodeData && hasNestedStructure(nodeData)) { + this.navigationStack.push({name: nodeName, data: nodeData}); + this.updateBreadcrumbs(); + this.buildGraph(nodeData); + } + } + + navigateToLevel(index: number): void { + if (index >= 0 && index < this.navigationStack.length) { + this.navigationStack = this.navigationStack.slice(0, index + 1); + this.updateBreadcrumbs(); + const currentData = this.navigationStack[this.navigationStack.length - 1].data; + this.buildGraph(currentData); + } + } + + // Expose utility functions for use in template + getNodeIcon = getNodeTypeIcon; + getNodeTypeLabel = getNodeTypeLabel; } diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index c0626b4b..066e483e 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -342,6 +342,8 @@ class="function-event-button" [appWorkflowGraphTooltip]="getWorkflowNodes(i)" [agentGraphData]="agentGraphData" + [nodePath]="getNodePath(i)" + [allNodes]="getAllWorkflowNodes(i)" (click)="handleAgentStateClick($event, i)" > account_tree diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index b92f4d50..14aca980 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -540,6 +540,41 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { return event?.actions?.agentState?.nodes || null; } + getAllWorkflowNodes(messageIndex: number): any { + // Collect node states from all events, organized by nodePath + // Structure: { "order_processing_pipeline": { "__START__": {...}, "validation_stage": {...} }, ... } + const nodesByPath: any = {}; + + for (let i = 0; i <= messageIndex; i++) { + const msg = this.messages[i]; + if (!msg.eventId) continue; + + const event = this.eventData.get(msg.eventId); + const nodes = event?.actions?.agentState?.nodes; + const nodePath = event?.nodePath; + + if (nodes && nodePath) { + // Initialize path if not exists + if (!nodesByPath[nodePath]) { + nodesByPath[nodePath] = {}; + } + + // Merge nodes for this path, later states override earlier ones + Object.assign(nodesByPath[nodePath], nodes); + } + } + + return Object.keys(nodesByPath).length > 0 ? nodesByPath : null; + } + + getNodePath(messageIndex: number): string | null { + const message = this.messages[messageIndex]; + if (!message.eventId) return null; + + const event = this.eventData.get(message.eventId); + return event?.nodePath || null; + } + hasEndOfAgent(messageIndex: number): boolean { const message = this.messages[messageIndex]; diff --git a/src/app/components/long-running-response/long-running-response.html b/src/app/components/long-running-response/long-running-response.html index 20a14d30..dc554c13 100644 --- a/src/app/components/long-running-response/long-running-response.html +++ b/src/app/components/long-running-response/long-running-response.html @@ -20,6 +20,12 @@ check_circle Response sent
+ @if (functionCall.sentUserResponse) { +
+ person + User input +
+ } } @else if (functionCall.responseStatus === 'sending') {
hourglass_empty diff --git a/src/app/components/long-running-response/long-running-response.scss b/src/app/components/long-running-response/long-running-response.scss index 4d4b4b1a..b90487b3 100644 --- a/src/app/components/long-running-response/long-running-response.scss +++ b/src/app/components/long-running-response/long-running-response.scss @@ -15,7 +15,9 @@ */ .response-chip-container { - display: inline-block; + display: inline-flex; + align-items: center; + gap: 8px; margin: 5px; } @@ -100,3 +102,33 @@ color: #4caf50; } } + +.user-response-chip { + display: inline-flex; + align-items: center; + gap: 4px; + border-radius: 16px; + padding: 0 12px; + font-size: 13px; + font-weight: 500; + height: 32px; + box-sizing: border-box; + border: 1px solid; + line-height: 32px; + background-color: rgba(138, 180, 248, 0.1); + border-color: rgba(138, 180, 248, 0.3); + color: #8ab4f8; + cursor: pointer; + transition: background-color 0.2s, border-color 0.2s; + + mat-icon { + font-size: 18px; + width: 18px; + height: 18px; + } + + &:hover { + background-color: rgba(138, 180, 248, 0.15); + border-color: rgba(138, 180, 248, 0.4); + } +} diff --git a/src/app/components/long-running-response/long-running-response.ts b/src/app/components/long-running-response/long-running-response.ts index ff8607ac..5c1363d5 100644 --- a/src/app/components/long-running-response/long-running-response.ts +++ b/src/app/components/long-running-response/long-running-response.ts @@ -22,6 +22,7 @@ import {MatIcon} from '@angular/material/icon'; import {AgentRunRequest} from '../../core/models/AgentRunRequest'; import {AGENT_SERVICE} from '../../core/services/interfaces/agent'; +import {JsonTooltipDirective} from '../../directives/html-tooltip.directive'; @Component({ selector: 'app-long-running-response', @@ -31,6 +32,7 @@ import {AGENT_SERVICE} from '../../core/services/interfaces/agent'; FormsModule, MatIconButton, MatIcon, + JsonTooltipDirective, ], }) export class LongRunningResponseComponent { @@ -51,6 +53,9 @@ export class LongRunningResponseComponent { return; } + // Store the user response before sending + this.functionCall.sentUserResponse = this.functionCall.userResponse; + // Update status to sending this.functionCall.responseStatus = 'sending'; this.cdr.detectChanges(); diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.html b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.html index 6fdbfd5c..99eb3ab0 100644 --- a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.html +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.html @@ -26,6 +26,21 @@ close
+ @if (breadcrumbs().length > 1) { + + }
-
+
+ + {{ getNodeTypeIcon(ctx.node.data().type) }} + + {{ ctx.node.data().name }} + @if (ctx.node.data().hasNestedStructure) { + zoom_in + } {{ getStatusIcon(ctx.node.data().status) }} - {{ ctx.node.data().name }}
+
{{ getNodeTypeLabel(ctx.node.data().type) }}
{{ getStatusLabel(ctx.node.data().status) }}
diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss index 4630f896..f7a81d02 100644 --- a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss @@ -59,6 +59,38 @@ } } +.breadcrumb-nav { + display: flex; + align-items: center; + margin-bottom: 8px; + font-size: 12px; + color: var(--mdc-dialog-supporting-text-color); +} + +.breadcrumb-item { + cursor: pointer; + padding: 3px 6px; + border-radius: 3px; + transition: background-color 0.2s; + + &:hover:not(.active) { + background-color: rgba(138, 180, 248, 0.1); + } + + &.active { + font-weight: 500; + cursor: default; + } +} + +.breadcrumb-separator { + font-size: 14px; + width: 14px; + height: 14px; + opacity: 0.5; + margin: 0 2px; +} + .vflow-container { flex: 1; min-height: 0; @@ -81,6 +113,16 @@ padding: 8px 12px; min-width: 160px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); + transition: all 0.2s; + + &.expandable { + cursor: pointer; + + &:hover { + box-shadow: 0 4px 12px rgba(138, 180, 248, 0.3); + transform: scale(1.02); + } + } } .node-header { @@ -90,10 +132,18 @@ margin-bottom: 4px; } +.node-type-icon { + font-size: 16px; + width: 16px; + height: 16px; + color: rgba(138, 180, 248, 0.9); +} + .status-icon { font-size: 16px; width: 16px; height: 16px; + margin-left: auto; } .node-label { @@ -103,6 +153,16 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + flex: 1; +} + +.node-type { + font-size: 10px; + color: rgba(138, 180, 248, 0.8); + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-top: 2px; } .node-status { diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts index 72bd9548..1abe4599 100644 --- a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts @@ -21,14 +21,19 @@ import {MatIconModule} from '@angular/material/icon'; import {MatButtonModule} from '@angular/material/button'; import {Vflow, Edge, HtmlTemplateDynamicNode} from 'ngx-vflow'; import {NodeState, NodeStatus} from '../../core/models/types'; +import {calculateGraphLayout, getNodeName, getNodeTypeIcon, getNodeTypeLabel} from '../../utils/graph-layout.utils'; +import {buildNavigationStackFromPath, findNodeInLevel, getCurrentPath, getNodesAtLevel, hasNestedStructure, NavigationStackItem, DEFAULT_LAYOUT_CONFIG} from '../../utils/graph-navigation.utils'; interface WorkflowNodeData { name: string; + type: string; status: NodeStatus; input?: any; triggeredBy?: string; retryCount?: number; executionId?: string; + hasNestedStructure?: boolean; + nodeData?: any; } @Component({ @@ -46,6 +51,8 @@ interface WorkflowNodeData { export class WorkflowGraphTooltipComponent implements OnInit { @Input() nodes: {[key: string]: NodeState} | null = null; @Input() agentGraphData: any = null; + @Input() nodePath: string | null = null; + @Input() allNodes: {[path: string]: {[nodeName: string]: NodeState}} | null = null; @Input() isPinned: boolean = false; @Input() onClose?: () => void; @@ -53,6 +60,11 @@ export class WorkflowGraphTooltipComponent implements OnInit { public graphEdges = signal([]); public NodeStatus = NodeStatus; + // Navigation state + private fullAgentData: any = null; + private navigationStack: NavigationStackItem[] = []; + public breadcrumbs = signal([]); + close() { if (this.onClose) { this.onClose(); @@ -64,8 +76,18 @@ export class WorkflowGraphTooltipComponent implements OnInit { } private buildGraph(): void { - if (this.agentGraphData?.root_agent?.graph) { - this.buildGraphFromStructure(this.agentGraphData.root_agent); + if (this.agentGraphData?.root_agent) { + this.fullAgentData = this.agentGraphData.root_agent; + this.navigationStack = [{name: this.agentGraphData.root_agent.name, data: this.agentGraphData.root_agent}]; + + // Navigate to the level specified by nodePath + if (this.nodePath) { + this.navigateToNodePath(this.nodePath); + } + + this.updateBreadcrumbs(); + const currentLevel = this.navigationStack[this.navigationStack.length - 1].data; + this.buildGraphFromStructure(currentLevel); } else { this.buildGraphFromStateOnly(); } @@ -74,45 +96,64 @@ export class WorkflowGraphTooltipComponent implements OnInit { private buildGraphFromStructure(agentData: any): void { const nodes: HtmlTemplateDynamicNode[] = []; const edges: Edge[] = []; - const ySpacing = 120; - const xPosition = 200; - const startY = 50; if (agentData.graph && agentData.graph.nodes) { + // Calculate layout using utility function + const layout = calculateGraphLayout( + agentData.graph.nodes, + agentData.graph.edges || [], + DEFAULT_LAYOUT_CONFIG + ); + + // Create nodes with calculated positions agentData.graph.nodes.forEach((node: any, index: number) => { - const nodeName = node.name || node.agent?.name || `node_${index}`; + const nodeName = getNodeName(node, `node_${index}`); const nodeState = this.nodes ? this.nodes[nodeName] : null; + const nodeType = node.type || 'agent'; + const position = layout.positions.get(nodeName) || {x: DEFAULT_LAYOUT_CONFIG.startX, y: DEFAULT_LAYOUT_CONFIG.startY}; + const hasNested = hasNestedStructure(node); + + // Get status - either direct state or RUNNING if children are executing + const status = this.getNodeStatusAtLevel(nodeName, node); nodes.push({ id: nodeName, type: 'html-template', - point: signal({x: xPosition, y: startY + (index * ySpacing)}), + point: signal({x: position.x, y: position.y}), width: signal(180), height: signal(80), data: signal({ name: nodeName, - status: nodeState?.status ?? NodeStatus.INACTIVE, + type: nodeType, + status: status, input: nodeState?.input, triggeredBy: nodeState?.triggered_by, retryCount: nodeState?.retry_count, executionId: nodeState?.execution_id, + hasNestedStructure: hasNested, + nodeData: node, }), }); }); // Add edges from graph.edges if (agentData.graph.edges) { - agentData.graph.edges.forEach((edge: any) => { - const fromName = edge.from_node?.name || edge.from_node?.agent?.name; - const toName = edge.to_node?.name || edge.to_node?.agent?.name; + agentData.graph.edges.forEach((edge: any, index: number) => { + const fromName = getNodeName(edge.from_node); + const toName = getNodeName(edge.to_node); if (fromName && toName) { - // Check if source node is RUNNING to highlight this edge - const fromNodeState = this.nodes ? this.nodes[fromName] : null; - const isActive = fromNodeState?.status === NodeStatus.RUNNING; + // Check if source node is RUNNING + const fromNodeStatus = this.getNodeStatusAtLevel(fromName, edge.from_node); + const toNodeStatus = this.getNodeStatusAtLevel(toName, edge.to_node); + + // Highlight edge if source is running or completed and target is running/pending + const isActive = fromNodeStatus === NodeStatus.RUNNING || + (fromNodeStatus === NodeStatus.COMPLETED && + (toNodeStatus === NodeStatus.RUNNING || toNodeStatus === NodeStatus.PENDING)); edges.push({ - id: `${fromName}_to_${toName}`, + id: `${fromName}_to_${toName}_${index}`, source: fromName, target: toName, type: 'template', @@ -161,6 +202,7 @@ export class WorkflowGraphTooltipComponent implements OnInit { height: signal(80), data: signal({ name: nodeName, + type: nodeName === '__START__' ? 'start' : 'agent', status: nodeState.status, input: nodeState.input, triggeredBy: nodeState.triggered_by, @@ -256,4 +298,80 @@ export class WorkflowGraphTooltipComponent implements OnInit { return 'help'; } } + + private updateBreadcrumbs(): void { + this.breadcrumbs.set(this.navigationStack.map(item => item.name)); + } + + navigateIntoNode(nodeName: string): void { + const currentData = this.navigationStack[this.navigationStack.length - 1].data; + const nodeData = findNodeInLevel(currentData, nodeName); + + if (nodeData && hasNestedStructure(nodeData)) { + this.navigationStack.push({name: nodeName, data: nodeData}); + this.updateBreadcrumbs(); + this.buildGraphFromStructure(nodeData); + } + } + + navigateToLevel(index: number): void { + if (index >= 0 && index < this.navigationStack.length) { + this.navigationStack = this.navigationStack.slice(0, index + 1); + this.updateBreadcrumbs(); + const currentData = this.navigationStack[this.navigationStack.length - 1].data; + this.buildGraphFromStructure(currentData); + } + } + + private navigateToNodePath(nodePath: string): void { + this.navigationStack = buildNavigationStackFromPath(this.agentGraphData.root_agent, nodePath); + } + + private getNodeStatusAtLevel(nodeName: string, nodeData: any): NodeStatus { + // Get the current navigation path + const currentPath = getCurrentPath(this.navigationStack); + + // Only use direct state if we're at the execution level + if (this.nodePath && currentPath === this.nodePath) { + const directState = this.nodes ? this.nodes[nodeName] : null; + if (directState) { + return directState.status; + } + } + + // If we're viewing a higher level than where execution is happening, + // check if this node is in the execution path (should show as RUNNING) + if (this.nodePath && hasNestedStructure(nodeData) && this.isInExecutionPath(nodeName, currentPath)) { + return NodeStatus.RUNNING; + } + + // Check allNodes for historical state at the current path level + // allNodes is now organized by path: { "path1": { "node1": state }, "path2": { ... } } + if (this.allNodes && this.allNodes[currentPath] && this.allNodes[currentPath][nodeName]) { + return this.allNodes[currentPath][nodeName].status; + } + + return NodeStatus.INACTIVE; + } + + private isInExecutionPath(nodeName: string, currentPath: string): boolean { + // If nodePath is not available, we can't determine + if (!this.nodePath) { + return false; + } + + // Check if nodePath starts with currentPath (we're viewing a parent level) + // and if nodeName is the next segment in the execution path + if (this.nodePath.startsWith(currentPath + '/')) { + const remainingPath = this.nodePath.substring(currentPath.length + 1); + const nextSegment = remainingPath.split('/')[0]; + return nodeName === nextSegment; + } + + return false; + } + + // Expose utility functions for use in template + getNodeTypeIcon = getNodeTypeIcon; + getNodeTypeLabel = getNodeTypeLabel; } diff --git a/src/app/directives/workflow-graph-tooltip.directive.ts b/src/app/directives/workflow-graph-tooltip.directive.ts index e19257d1..7ff481a2 100644 --- a/src/app/directives/workflow-graph-tooltip.directive.ts +++ b/src/app/directives/workflow-graph-tooltip.directive.ts @@ -36,6 +36,8 @@ import {NodeState} from '../core/models/types'; export class WorkflowGraphTooltipDirective implements OnDestroy { @Input() appWorkflowGraphTooltip: {[key: string]: NodeState} | null = null; @Input() agentGraphData: any = null; + @Input() nodePath: string | null = null; + @Input() allNodes: {[path: string]: {[nodeName: string]: NodeState}} | null = null; private overlay = inject(Overlay); private overlayPositionBuilder = inject(OverlayPositionBuilder); @@ -145,6 +147,8 @@ export class WorkflowGraphTooltipDirective implements OnDestroy { componentRef.instance.nodes = this.appWorkflowGraphTooltip; componentRef.instance.agentGraphData = this.agentGraphData; + componentRef.instance.nodePath = this.nodePath; + componentRef.instance.allNodes = this.allNodes; componentRef.instance.isPinned = pinned; componentRef.instance.onClose = () => { this.isPinned = false; diff --git a/src/app/utils/graph-layout.utils.ts b/src/app/utils/graph-layout.utils.ts new file mode 100644 index 00000000..62c21426 --- /dev/null +++ b/src/app/utils/graph-layout.utils.ts @@ -0,0 +1,204 @@ +/** + * @license + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface GraphEdge { + from_node?: any; + to_node?: any; +} + +export interface GraphNode { + name?: string; + agent?: { + name?: string; + }; +} + +export interface NodePosition { + x: number; + y: number; +} + +export interface LayoutConfig { + ySpacing?: number; + xSpacing?: number; + startX?: number; + startY?: number; +} + +export interface LayoutResult { + levels: Map; + nodesByLevel: Map; + positions: Map; +} + +/** + * Calculates graph layout with support for fan-out visualization. + * Uses BFS to assign nodes to levels, keeping nodes at minimum depth for better fan-out display. + */ +export function calculateGraphLayout( + nodes: GraphNode[], + edges: GraphEdge[], + config: LayoutConfig = {} +): LayoutResult { + const { + ySpacing = 150, + xSpacing = 250, + startX = 200, + startY = 50, + } = config; + + // Extract node names + const nodeNames = nodes.map((node) => + node.name || node.agent?.name || '' + ); + + // Build adjacency list and in-degree map + const adjacencyList: Map = new Map(); + const inDegreeMap: Map = new Map(); + + // Initialize + nodeNames.forEach((name: string) => { + adjacencyList.set(name, []); + inDegreeMap.set(name, 0); + }); + + // Build adjacency list and count in-degrees + edges.forEach((edge) => { + const fromName = edge.from_node?.name || edge.from_node?.agent?.name; + const toName = edge.to_node?.name || edge.to_node?.agent?.name; + + if (fromName && toName) { + adjacencyList.get(fromName)?.push(toName); + inDegreeMap.set(toName, (inDegreeMap.get(toName) || 0) + 1); + } + }); + + // Calculate levels using BFS - use minimum level for better fan-out visualization + const levels: Map = new Map(); + const queue: string[] = []; + const inDegree = new Map(inDegreeMap); // Copy for processing + + // Start with nodes that have no incoming edges + nodeNames.forEach((name: string) => { + if (inDegree.get(name) === 0) { + queue.push(name); + levels.set(name, 0); + } + }); + + // Process queue + while (queue.length > 0) { + const current = queue.shift()!; + const currentLevel = levels.get(current) || 0; + + adjacencyList.get(current)?.forEach((neighbor) => { + // Set level based on first parent (minimum level) + const newLevel = currentLevel + 1; + const existingLevel = levels.get(neighbor); + if (existingLevel === undefined) { + levels.set(neighbor, newLevel); + } + + // Decrement in-degree + const currentInDegree = inDegree.get(neighbor) || 0; + inDegree.set(neighbor, currentInDegree - 1); + + // Add to queue when all parents processed + if (inDegree.get(neighbor) === 0) { + queue.push(neighbor); + } + }); + } + + // Group nodes by level + const nodesByLevel: Map = new Map(); + levels.forEach((level, nodeName) => { + if (!nodesByLevel.has(level)) { + nodesByLevel.set(level, []); + } + nodesByLevel.get(level)?.push(nodeName); + }); + + // Calculate positions for each node + const positions: Map = new Map(); + nodes.forEach((node) => { + const nodeName = node.name || node.agent?.name || ''; + const level = levels.get(nodeName) || 0; + const nodesAtLevel = nodesByLevel.get(level) || []; + const indexInLevel = nodesAtLevel.indexOf(nodeName); + + // Center nodes horizontally if there are multiple at the same level + const totalNodesAtLevel = nodesAtLevel.length; + const xOffset = (indexInLevel - (totalNodesAtLevel - 1) / 2) * xSpacing; + + positions.set(nodeName, { + x: startX + xOffset, + y: startY + (level * ySpacing), + }); + }); + + return { + levels, + nodesByLevel, + positions, + }; +} + +/** + * Extracts the name from a graph node or edge node reference + */ +export function getNodeName(node: any, fallback: string = ''): string { + return node?.name || node?.agent?.name || fallback; +} + +/** + * Returns the Material icon name for a given node type + */ +export function getNodeTypeIcon(nodeType: string): string { + switch (nodeType) { + case 'start': + return 'play_arrow'; + case 'function': + return 'code'; + case 'tool': + return 'build'; + case 'join': + return 'merge'; + case 'agent': + default: + return 'smart_toy'; + } +} + +/** + * Returns the display label for a given node type + */ +export function getNodeTypeLabel(nodeType: string): string { + switch (nodeType) { + case 'start': + return 'Start'; + case 'function': + return 'Function'; + case 'tool': + return 'Tool'; + case 'join': + return 'Join'; + case 'agent': + default: + return 'Agent'; + } +} diff --git a/src/app/utils/graph-navigation.utils.ts b/src/app/utils/graph-navigation.utils.ts new file mode 100644 index 00000000..434129d8 --- /dev/null +++ b/src/app/utils/graph-navigation.utils.ts @@ -0,0 +1,113 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {getNodeName} from './graph-layout.utils'; + +export interface NavigationStackItem { + name: string; + data: any; +} + +/** + * Default layout configuration for graph visualization + */ +export const DEFAULT_LAYOUT_CONFIG = { + ySpacing: 150, + xSpacing: 250, + startX: 250, + startY: 75, +}; + +/** + * Get current path from navigation stack + */ +export function getCurrentPath(navigationStack: NavigationStackItem[]): string { + return navigationStack.map(item => item.name).join('/'); +} + +/** + * Check if a node has nested structure (sub-workflows or agents) + */ +export function hasNestedStructure(nodeData: any): boolean { + return !!(nodeData.graph || nodeData.nodes || (nodeData.sub_agents && nodeData.sub_agents.length > 0)); +} + +/** + * Get nodes at a specific level (works for both graph.nodes and nodes fields) + */ +export function getNodesAtLevel(agentData: any): any[] { + if (agentData.graph?.nodes) { + return agentData.graph.nodes; + } else if (agentData.nodes) { + return agentData.nodes; + } + return []; +} + +/** + * Find node data by name in the current level + */ +export function findNodeInLevel(currentData: any, nodeName: string): any | null { + // Search in nodes array + if (currentData.nodes) { + const found = currentData.nodes.find((n: any) => n.name === nodeName); + if (found) return found; + } + // Search in graph.nodes array + if (currentData.graph?.nodes) { + const found = currentData.graph.nodes.find((n: any) => n.name === nodeName); + if (found) return found; + } + // Search in sub_agents array + if (currentData.sub_agents) { + const found = currentData.sub_agents.find((n: any) => n.name === nodeName); + if (found) return found; + } + return null; +} + +/** + * Navigate to a specific path (e.g., "order_processing_pipeline/validation_stage") + * Returns the navigation stack to reach that path + */ +export function buildNavigationStackFromPath( + rootAgent: any, + nodePath: string +): NavigationStackItem[] { + const pathParts = nodePath.split('/'); + const stack: NavigationStackItem[] = [{name: rootAgent.name, data: rootAgent}]; + + let currentData = rootAgent; + + // Navigate through each level (skip first part as it's root) + for (let i = 1; i < pathParts.length; i++) { + const targetName = pathParts[i]; + const nodes = getNodesAtLevel(currentData); + + // Find the node with this name + const targetNode = nodes.find(node => getNodeName(node) === targetName); + + if (targetNode) { + stack.push({name: targetName, data: targetNode}); + currentData = targetNode; + } else { + console.warn(`Could not find node '${targetName}' in path '${nodePath}'`); + break; + } + } + + return stack; +} From 28ac4b490e1d07a8fb8322c7e0ea2a5792cc3b06 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Wed, 11 Mar 2026 14:42:42 -0700 Subject: [PATCH 006/323] agent structure graph supports LlmAgent --- .../agent-structure-graph-dialog.ts | 42 +++----- .../workflow-graph-tooltip.component.ts | 101 +++++++++++++++++- 2 files changed, 114 insertions(+), 29 deletions(-) diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts index 6fd5f251..a528f314 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts @@ -183,7 +183,7 @@ export class AgentStructureGraphDialogComponent implements OnInit { edges: Edge[] ): void { // For LlmAgent/Mesh: nodes array contains coordinator + sub-agents - // Layout: coordinator in center, sub-agents arranged around it + // Layout: coordinator at top, sub-agents in row below const coordinatorIndex = meshNodes.findIndex(n => (n.name === meshNodes[0]?.name) || n.type === 'coordinator' ); @@ -191,17 +191,21 @@ export class AgentStructureGraphDialogComponent implements OnInit { const coordinator = coordinatorIndex >= 0 ? meshNodes[coordinatorIndex] : null; const subAgents = meshNodes.filter((_, i) => i !== coordinatorIndex); - const centerX = 400; - const centerY = 300; - const radius = 200; + const startY = 100; + const ySpacing = 200; + const xSpacing = 300; - // Add coordinator node in center + // Calculate center X based on number of sub-agents + const totalWidth = (subAgents.length - 1) * xSpacing; + const startX = 400 - totalWidth / 2; + + // Add coordinator node at top center if (coordinator) { const hasNested = hasNestedStructure(coordinator); nodes.push({ id: coordinator.name, type: 'html-template', - point: signal({x: centerX, y: centerY}), + point: signal({x: 400, y: startY}), width: signal(200), height: signal(80), data: signal({ @@ -215,11 +219,10 @@ export class AgentStructureGraphDialogComponent implements OnInit { }); } - // Add sub-agent nodes in circle around coordinator + // Add sub-agent nodes in a row below coordinator subAgents.forEach((node: any, index: number) => { - const angle = (index / subAgents.length) * 2 * Math.PI; - const x = centerX + radius * Math.cos(angle); - const y = centerY + radius * Math.sin(angle); + const x = startX + (index * xSpacing); + const y = startY + ySpacing; const hasNested = hasNestedStructure(node); nodes.push({ @@ -238,9 +241,8 @@ export class AgentStructureGraphDialogComponent implements OnInit { }), }); - // Add edges: coordinator <-> sub-agent + // Add edge: coordinator -> sub-agent if (coordinator) { - // Coordinator to sub-agent edges.push({ id: `${coordinator.name}_to_${node.name}`, source: coordinator.name, @@ -255,22 +257,6 @@ export class AgentStructureGraphDialogComponent implements OnInit { }, }, }); - - // Sub-agent to coordinator (transfer back) - edges.push({ - id: `${node.name}_to_${coordinator.name}`, - source: node.name, - target: coordinator.name, - type: 'template', - markers: { - end: { - type: 'arrow-closed', - width: 20, - height: 20, - color: 'rgba(138, 180, 248, 0.5)', - }, - }, - }); } }); } diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts index 1abe4599..55389a42 100644 --- a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.ts @@ -97,7 +97,12 @@ export class WorkflowGraphTooltipComponent implements OnInit { const nodes: HtmlTemplateDynamicNode[] = []; const edges: Edge[] = []; - if (agentData.graph && agentData.graph.nodes) { + // Handle LlmAgent/Mesh with nodes field + if (agentData.nodes && Array.isArray(agentData.nodes)) { + this.buildMeshGraph(agentData.nodes, nodes, edges); + } + // Handle WorkflowAgent/SingleLlmAgent with graph field + else if (agentData.graph && agentData.graph.nodes) { // Calculate layout using utility function const layout = calculateGraphLayout( agentData.graph.nodes, @@ -176,6 +181,100 @@ export class WorkflowGraphTooltipComponent implements OnInit { this.graphEdges.set(edges); } + private buildMeshGraph( + meshNodes: any[], + nodes: HtmlTemplateDynamicNode[], + edges: Edge[] + ): void { + // For LlmAgent/Mesh: nodes array contains coordinator + sub-agents + // Layout: coordinator at top, sub-agents in row below + const coordinatorIndex = meshNodes.findIndex(n => + (n.name === meshNodes[0]?.name) || n.type === 'coordinator' + ); + + const coordinator = coordinatorIndex >= 0 ? meshNodes[coordinatorIndex] : null; + const subAgents = meshNodes.filter((_, i) => i !== coordinatorIndex); + + const startY = 100; + const ySpacing = 200; + const xSpacing = 300; + + // Calculate center X based on number of sub-agents + const totalWidth = (subAgents.length - 1) * xSpacing; + const startX = 400 - totalWidth / 2; + + // Add coordinator node at top center + if (coordinator) { + const hasNested = hasNestedStructure(coordinator); + const coordinatorName = getNodeName(coordinator); + const status = this.getNodeStatusAtLevel(coordinatorName, coordinator); + + nodes.push({ + id: coordinatorName, + type: 'html-template', + point: signal({x: 400, y: startY}), + width: signal(180), + height: signal(80), + data: signal({ + name: coordinatorName, + type: 'agent', + status: status, + hasNestedStructure: hasNested, + nodeData: coordinator, + }), + }); + } + + // Add sub-agent nodes in a row below coordinator + subAgents.forEach((node: any, index: number) => { + const x = startX + (index * xSpacing); + const y = startY + ySpacing; + const hasNested = hasNestedStructure(node); + const nodeName = getNodeName(node); + const status = this.getNodeStatusAtLevel(nodeName, node); + + nodes.push({ + id: nodeName, + type: 'html-template', + point: signal({x, y}), + width: signal(180), + height: signal(80), + data: signal({ + name: nodeName, + type: 'agent', + status: status, + hasNestedStructure: hasNested, + nodeData: node, + }), + }); + + // Add edge: coordinator -> sub-agent + if (coordinator) { + const coordinatorName = getNodeName(coordinator); + const coordinatorStatus = this.getNodeStatusAtLevel(coordinatorName, coordinator); + const isActive = coordinatorStatus === NodeStatus.RUNNING || + (coordinatorStatus === NodeStatus.COMPLETED && + (status === NodeStatus.RUNNING || status === NodeStatus.PENDING)); + + edges.push({ + id: `${coordinatorName}_to_${nodeName}`, + source: coordinatorName, + target: nodeName, + type: 'template', + data: { isActive }, + markers: { + end: { + type: 'arrow-closed', + width: 15, + height: 15, + color: isActive ? '#42A5F5' : 'rgba(138, 180, 248, 0.8)', + }, + }, + }); + } + }); + } + private buildGraphFromStateOnly(): void { const nodes: HtmlTemplateDynamicNode[] = []; const edges: Edge[] = []; From 65721fc99099eec0f613d68df92f0bf1eab1f91c Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Fri, 13 Mar 2026 11:16:29 -0700 Subject: [PATCH 007/323] change agent state icon to colored circles --- .../chat-panel/chat-panel.component.html | 18 ++++---- .../chat-panel/chat-panel.component.scss | 13 ++++++ .../chat-panel/chat-panel.component.ts | 31 ++++++++++---- src/app/components/chat/chat.component.ts | 41 +------------------ src/app/core/models/types.ts | 2 +- .../core/services/string-to-color.service.ts | 40 ++++++++++++++++-- 6 files changed, 82 insertions(+), 63 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 066e483e..902a222f 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -60,15 +60,15 @@
} @if (message.role === "bot") { - + @if (isEventContent(i) || message.isLoading) { + + } @else { +
+ } } @if (shouldShowMessageCard(message)) { 0) { const startIndex = this.longRunningEvents.length; this.getAsyncFunctionsFromParts( @@ -1341,17 +1337,6 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { } } - - createAgentIconColorClass(agentName: string) { - const agentIconColor = this.stringToColorService.stc(agentName); - - const agentIconColorClass = - `custom-icon-color-${agentIconColor.replace('#', '')}`; - - // Inject the style for this unique class - this.injectCustomIconColorStyle(agentIconColorClass, agentIconColor); - } - clickEvent(i: number) { const message = this.messages()[i]; const key = message.eventId; @@ -2337,28 +2322,4 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { input.click(); } - - // Helper method to dynamically inject the style - private injectCustomIconColorStyle(className: string, color: string): void { - // Check if the style already exists to prevent duplicates - if (this.document.getElementById(className)) { - return; - } - - const style = this.renderer.createElement('style'); - this.renderer.setAttribute( - style, 'id', className); // Set an ID to check for existence later - this.renderer.setAttribute(style, 'type', 'text/css'); - - // Define the CSS - const css = ` - .${className} { - background-color: ${color} !important; - } - `; - - this.renderer.appendChild(style, this.renderer.createText(css)); - this.renderer.appendChild( - this.document.head, style); // Append to the head of the document - } } diff --git a/src/app/core/models/types.ts b/src/app/core/models/types.ts index a43446e9..56e7282d 100644 --- a/src/app/core/models/types.ts +++ b/src/app/core/models/types.ts @@ -122,7 +122,7 @@ export declare interface Event extends LlmResponse { longRunningToolIds?: string[]; branch?: string; timestamp?: number; - nodePath?: any; + nodeInfo?: { path?: string;[key: string]: any; }; data?: any; } diff --git a/src/app/core/services/string-to-color.service.ts b/src/app/core/services/string-to-color.service.ts index 3ce9f2e7..02c3b401 100644 --- a/src/app/core/services/string-to-color.service.ts +++ b/src/app/core/services/string-to-color.service.ts @@ -15,9 +15,8 @@ * limitations under the License. */ -import {Injectable, InjectionToken} from '@angular/core'; -import stc from 'string-to-color'; -import {StringToColorService as StringToColorServiceInterface} from './interfaces/string-to-color'; +import { Injectable, InjectionToken } from '@angular/core'; +import { StringToColorService as StringToColorServiceInterface } from './interfaces/string-to-color'; /** * Service to convert a string to a color. @@ -30,6 +29,39 @@ export class StringToColorServiceImpl implements StringToColorServiceInterface { * Converts a string to a color, e.g. 'my string' -> '#8c8526ff'. */ stc(str: string): string { - return stc(str); + const hash = this.hashCode(str); + const h = Math.abs(hash % 360); + const s = 60 + Math.abs((hash >> 8) % 40); + const l = 40 + Math.abs((hash >> 16) % 30); + + return this.hslToHex(h, s, l); + } + + /** + * Simple hash function to generate a numeric hash from a string with good distribution + */ + private hashCode(str: string): number { + let hash = 0; + for (let i = 0, len = str.length; i < len; i++) { + let chr = str.charCodeAt(i); + hash = (hash << 5) - hash + chr; + hash = hash + i * 31; + hash |= 0; + } + return hash; + } + + /** + * Converts HSL values to a HEX color string + */ + private hslToHex(h: number, s: number, l: number): string { + l /= 100; + const a = s * Math.min(l, 1 - l) / 100; + const f = (n: number) => { + const k = (n + h / 30) % 12; + const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); + return Math.round(255 * color).toString(16).padStart(2, '0'); + }; + return `#${f(0)}${f(8)}${f(4)}ff`; } } From b8a4af911c2654e757716a31736cadbd515ee48d Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Fri, 13 Mar 2026 15:20:09 -0700 Subject: [PATCH 008/323] Add output chip --- .../chat-panel/chat-panel.component.html | 11 ++--- .../chat-panel/chat-panel.component.scss | 39 ++++++++++++++++ .../chat-panel/chat-panel.component.ts | 44 ++++++++++++++++--- src/app/core/models/types.ts | 1 + 4 files changed, 81 insertions(+), 14 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 902a222f..a553a5bc 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -325,15 +325,10 @@ } @if (message.role === "bot" && hasEventOutputData(i)) { - + {{ getEventOutputDataNodePath(i) }}: {{ getEventOutputResultText(i) }} +
} @if (message.role === "bot" && hasWorkflowNodes(i)) {
} + @if (message.role === "bot" && hasEventRoute(i)) { + + } @if (message.role === "bot" && hasWorkflowNodes(i)) { } @if (message.role === "bot" && hasArtifactDelta(i)) { diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 8e0198f8..9d16ed3b 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -54,15 +54,18 @@ .function-event-button { background-color: var(--chat-panel-function-event-button-background-color); margin: 5px 5px 5px; - font-size: 13px !important; + font-size: 11px !important; padding: 6px 12px !important; - min-height: 32px !important; - height: 32px !important; + min-height: 24px !important; + height: 24px !important; + border-radius: 6px !important; + font-family: 'Roboto Mono', monospace !important; mat-icon { font-size: 18px !important; width: 18px !important; height: 18px !important; + margin-right: 6px !important; } } @@ -87,28 +90,25 @@ .output-chip { display: inline-flex; align-items: center; - gap: 4px; - border-radius: 16px; - padding: 0 12px; - font-size: 13px; - font-weight: 500; - height: 32px; + border-radius: 6px; + padding: 6px 12px; + font-size: 11px; + height: 24px; + min-height: 24px; box-sizing: border-box; - border: 1px solid; - line-height: 32px; - background-color: rgba(138, 180, 248, 0.1); - border-color: rgba(138, 180, 248, 0.3); - color: #8ab4f8; + background-color: var(--chat-panel-function-event-button-background-color); + border: 1px solid var(--mat-standard-button-toggle-divider-color); cursor: pointer; - transition: background-color 0.2s, border-color 0.2s; margin: 5px; max-width: 400px; + font-family: 'Roboto Mono', monospace; mat-icon { - font-size: 18px; - width: 18px; - height: 18px; + font-size: 18px !important; + width: 18px !important; + height: 18px !important; flex-shrink: 0; + margin-right: 6px; } span { @@ -116,11 +116,6 @@ text-overflow: ellipsis; white-space: nowrap; } - - &:hover { - background-color: rgba(138, 180, 248, 0.15); - border-color: rgba(138, 180, 248, 0.4); - } } // Enables messages to have columns diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index a5d6a6f3..3b1905b0 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -462,6 +462,18 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { } + getStateDeltaKeys(messageIndex: number): string { + const message = this.messages[messageIndex]; + if (!message.eventId) return ''; + + const event = this.eventData.get(message.eventId); + const stateDelta = event?.actions?.stateDelta; + if (!stateDelta) return ''; + + const keys = Object.keys(stateDelta); + return keys.join(', '); + } + getStateDeltaTooltip(messageIndex: number): string { const message = this.messages[messageIndex]; if (!message.eventId) return ''; From a8a42efe3b6a1c7e69c183d1074aecce0b065555 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Sun, 15 Mar 2026 15:14:46 -0700 Subject: [PATCH 011/323] actions chips on separate row --- .../chat-panel/chat-panel.component.html | 23 +++-- .../chat-panel/chat-panel.component.scss | 99 ++++++++++--------- 2 files changed, 67 insertions(+), 55 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 664e710e..80ae1bd5 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -98,6 +98,7 @@ }
} + @if (message.thought || message.text || message.renderedContent || message.a2uiData) {
@if (message.thought) {
{{ i18n.thoughtChipLabel }}
@@ -149,6 +150,7 @@ }
+ } @if (message.executableCode) { {{ message.executableCode.code }} } @if (message.codeExecutionResult) { @@ -258,7 +260,8 @@
} - } + } +
@if (message.functionCalls && message.functionCalls.length > 0) { @for (functionCall of message.functionCalls; track functionCall) { @if (isComputerUseClick(functionCall)) { @@ -325,10 +328,15 @@ } @if (message.role === "bot" && hasEventOutputData(i)) { -
+
+ {{ getEventOutputDataNodePath(i) }}: {{ getEventOutputResultText(i) }} + } @if (message.role === "bot" && hasEventRoute(i)) {
+ @if (message.evalStatus === 1 || message.evalStatus === 2) {
+ } @if (evalCase && message.role === "bot" && isEvalEditMode) { @if (message.text) {
@@ -483,7 +494,7 @@
}
+ @if (messages.length === 0 && agentReadme) { +
+
+

{{ appName }}

+

Agent Documentation

+
+
+
+ +
+
+ } @for (message of messages; track message; let i = $index) {
(''); @Input() messages: any[] = []; @Input() isChatMode: boolean = true; diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 1796e910..f867ff6a 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -282,6 +282,7 @@ } } @if (appName != "") { { this.agentGraphData = info; + this.agentReadme = info?.readme || ''; }) this.agentService.getAgentBuilder(app).subscribe((res: any) => { if (!res || res == '') { From 1a0462925de663fb667bd185a6021d2a79db0692 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Sun, 15 Mar 2026 16:44:06 -0700 Subject: [PATCH 015/323] auto scroll to top for new readme --- .../components/chat-panel/chat-panel.component.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index 042a6918..8214ba10 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -236,6 +236,11 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { } ngOnChanges(changes: SimpleChanges) { + // Scroll to top when switching apps or when messages become empty (new session with README) + if ((changes['appName'] || changes['messages']) && this.messages.length === 0 && this.agentReadme) { + setTimeout(() => this.scrollToTop(), 0); + } + if (changes['messages']) { const currentLastMessage = this.messages[this.messages.length - 1]; const isNewMessageAppended = currentLastMessage !== this.lastMessageRef; @@ -262,6 +267,15 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { } } + scrollToTop() { + setTimeout(() => { + this.scrollContainer?.nativeElement.scrollTo({ + top: 0, + behavior: 'smooth', + }); + }, 50); + } + getAgentNameFromEvent(i: number) { const key = this.messages[i].eventId; const selectedEvent = this.eventData.get(key); From 7812b9adb5dc4a0a0489983301c33f3981c4036b Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Mon, 16 Mar 2026 14:07:12 -0700 Subject: [PATCH 016/323] remove readme header, and shrink the button width max-width --- .../chat-panel/chat-panel.component.html | 5 -- .../chat-panel/chat-panel.component.scss | 48 ++++--------------- 2 files changed, 10 insertions(+), 43 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index f27fddfa..78af96f2 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -25,11 +25,6 @@
@if (messages.length === 0 && agentReadme) {
-
-

{{ appName }}

-

Agent Documentation

-
-
diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 7905cc41..721c00b8 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -74,6 +74,13 @@ .state-delta-button { background-color: var(--chat-panel-function-event-button-background-color) !important; + max-width: 300px !important; +} + +:host ::ng-deep .state-delta-button .mdc-button__label { + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; } .artifact-delta-button { @@ -87,21 +94,13 @@ } .output-chip { - max-width: 400px !important; - - :host ::ng-deep .mdc-button__label { - overflow: hidden !important; - text-overflow: ellipsis !important; - white-space: nowrap !important; - max-width: 350px !important; - } + max-width: 300px !important; } :host ::ng-deep .output-chip .mdc-button__label { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; - max-width: 350px !important; } .event-chips-container { @@ -553,7 +552,7 @@ button.video-rec-btn { .readme-container { max-width: 900px; - margin: 60px auto; + margin: 0px auto; background-color: var(--chat-panel-message-background-color); border-radius: 16px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); @@ -561,35 +560,8 @@ button.video-rec-btn { overflow: hidden; } -.readme-header { - padding: 32px 40px 24px; - background: linear-gradient(135deg, rgba(138, 180, 248, 0.1) 0%, rgba(138, 180, 248, 0.05) 100%); -} - -.agent-title { - font-size: 32px; - font-weight: 600; - margin: 0; - color: var(--chat-panel-message-text-color); - letter-spacing: -0.5px; -} - -.readme-subtitle { - font-size: 14px; - margin: 8px 0 0; - color: rgba(138, 180, 248, 0.9); - font-weight: 500; - text-transform: uppercase; - letter-spacing: 1px; -} - -.readme-divider { - height: 1px; - background: linear-gradient(90deg, transparent 0%, rgba(138, 180, 248, 0.3) 50%, transparent 100%); -} - .readme-content { - padding: 32px 40px; + padding: 20px 40px 40px 40px; font-size: 14px; line-height: 1.8; color: var(--chat-panel-message-text-color); From 6c425e46d9c89e9c81fc7c023cf6df3054b0b179 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Mon, 16 Mar 2026 14:10:46 -0700 Subject: [PATCH 017/323] update colored circle styles --- src/app/components/chat-panel/chat-panel.component.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 721c00b8..80686300 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -539,10 +539,10 @@ button.video-rec-btn { } .node-circle-icon { - width: 12px; - height: 12px; + width: 16px; + height: 16px; border-radius: 50%; - margin-top: 14px; + margin-top: 9px; margin-left: 12px; margin-right: 28px; flex-shrink: 0; From c97e88ab4303ac3db06fc646e30998a1c553c742 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Mon, 16 Mar 2026 14:21:13 -0700 Subject: [PATCH 018/323] update tooltip headers to indicate type --- .../chat-panel/chat-panel.component.html | 8 +++++++- .../json-tooltip/json-tooltip.component.ts | 16 +++++++++++++++- src/app/directives/html-tooltip.directive.ts | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 78af96f2..40156946 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -280,6 +280,7 @@ [ngClass]="{'function-event-button-highlight': shouldMessageHighlighted(i)}" class="function-event-button" [appJsonTooltip]="functionCall.args ? JSON.stringify(functionCall.args) : ''" + [appJsonTooltipTitle]="'Function Call'" > bolt {{ functionCall.name }} @@ -305,7 +306,8 @@ } @else { @@ -318,6 +320,7 @@ [ngClass]="{'function-event-button-highlight': shouldMessageHighlighted(i)}" class="function-event-button state-delta-button" [appJsonTooltip]="getStateDeltaTooltip(i)" + [appJsonTooltipTitle]="'State Update'" > data_object State: {{ getStateDeltaKeys(i) }} @@ -329,6 +332,7 @@ [ngClass]="{'function-event-button-highlight': shouldMessageHighlighted(i)}" class="function-event-button artifact-delta-button" [appJsonTooltip]="getArtifactDeltaTooltip(i)" + [appJsonTooltipTitle]="'Artifact'" > attachment Artifact @@ -340,6 +344,7 @@ [ngClass]="{'function-event-button-highlight': shouldMessageHighlighted(i)}" class="function-event-button output-chip" [appJsonTooltip]="getEventOutputDataTooltip(i)" + [appJsonTooltipTitle]="'Node Output'" > output {{ getEventOutputDataNodePath(i) }}: {{ getEventOutputResultText(i) }} @@ -351,6 +356,7 @@ [ngClass]="{'function-event-button-highlight': shouldMessageHighlighted(i)}" class="function-event-button" [appJsonTooltip]="getEventRouteTooltip(i)" + [appJsonTooltipTitle]="'Route'" > route {{ getEventRouteText(i) }} diff --git a/src/app/components/json-tooltip/json-tooltip.component.ts b/src/app/components/json-tooltip/json-tooltip.component.ts index 473d70ae..bc0db5c7 100644 --- a/src/app/components/json-tooltip/json-tooltip.component.ts +++ b/src/app/components/json-tooltip/json-tooltip.component.ts @@ -21,7 +21,12 @@ import {SafeHtml} from '@angular/platform-browser'; @Component({ selector: 'app-json-tooltip', - template: `
`, + template: ` + @if (title) { +
{{ title }}
+ } +
+ `, styles: [` :host { display: block; @@ -31,10 +36,19 @@ import {SafeHtml} from '@angular/platform-browser'; white-space: pre-wrap; max-width: 800px; } + .tooltip-title { + font-weight: 600; + font-size: 13px; + margin-bottom: 8px; + padding-bottom: 6px; + border-bottom: 1px solid rgba(138, 180, 248, 0.3); + color: rgba(138, 180, 248, 0.9); + } `], standalone: true, }) export class JsonTooltipComponent { + @Input() title: string = ''; @Input() set json(value: string) { this.formattedJson = this.syntaxHighlight(value); } diff --git a/src/app/directives/html-tooltip.directive.ts b/src/app/directives/html-tooltip.directive.ts index 66199fdc..a92041a4 100644 --- a/src/app/directives/html-tooltip.directive.ts +++ b/src/app/directives/html-tooltip.directive.ts @@ -26,6 +26,7 @@ import {JsonTooltipComponent} from '../components/json-tooltip/json-tooltip.comp }) export class JsonTooltipDirective implements OnDestroy { @Input('appJsonTooltip') json: string = ''; + @Input('appJsonTooltipTitle') title: string = ''; private overlayRef: OverlayRef | null = null; private readonly overlay = inject(Overlay); @@ -54,6 +55,7 @@ export class JsonTooltipDirective implements OnDestroy { const tooltipPortal = new ComponentPortal(JsonTooltipComponent); const tooltipRef = this.overlayRef.attach(tooltipPortal); tooltipRef.instance.json = this.json; + tooltipRef.instance.title = this.title; } @HostListener('mouseleave') From 9484e97cd88c7d4bff70c03e7323b550e26539a8 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Mon, 16 Mar 2026 15:26:22 -0700 Subject: [PATCH 019/323] update tooltip header text --- .../components/chat-panel/chat-panel.component.ts | 12 +----------- .../json-tooltip/json-tooltip.component.ts | 15 ++++++++------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index 8214ba10..ab19c882 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -561,17 +561,7 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { if (!message.eventId) return ''; const event = this.eventData.get(message.eventId); - let nodePath = event?.nodeInfo?.path || ''; - - if (nodePath === 'root_agent') { - return nodePath; - } - - if (nodePath && nodePath.startsWith('root_agent/')) { - nodePath = nodePath.substring('root_agent/'.length); - } - - return nodePath; + return event?.author || ''; } getEventOutputResultText(messageIndex: number): string { diff --git a/src/app/components/json-tooltip/json-tooltip.component.ts b/src/app/components/json-tooltip/json-tooltip.component.ts index bc0db5c7..21b23b77 100644 --- a/src/app/components/json-tooltip/json-tooltip.component.ts +++ b/src/app/components/json-tooltip/json-tooltip.component.ts @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {SAFE_VALUES_SERVICE} from '../../core/services/interfaces/safevalues'; +import { SAFE_VALUES_SERVICE } from '../../core/services/interfaces/safevalues'; -import {Component, Input, inject} from '@angular/core'; -import {SafeHtml} from '@angular/platform-browser'; +import { Component, Input, inject } from '@angular/core'; +import { SafeHtml } from '@angular/platform-browser'; @Component({ selector: 'app-json-tooltip', @@ -37,10 +37,11 @@ import {SafeHtml} from '@angular/platform-browser'; max-width: 800px; } .tooltip-title { - font-weight: 600; - font-size: 13px; - margin-bottom: 8px; - padding-bottom: 6px; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + font-weight: 500; + font-size: 10px; + margin-bottom: 6px; + padding-bottom: 4px; border-bottom: 1px solid rgba(138, 180, 248, 0.3); color: rgba(138, 180, 248, 0.9); } From f1744d44e778b8beadee10df65d12870bf2b8150 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Mon, 16 Mar 2026 19:48:00 -0700 Subject: [PATCH 020/323] update output chip style --- .../chat-panel/chat-panel.component.html | 10 +++--- .../chat-panel/chat-panel.component.scss | 35 ++++++++++++++++--- .../chat-panel/chat-panel.component.ts | 3 ++ 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 40156946..0368fccb 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -339,16 +339,16 @@ } @if (message.role === "bot" && hasEventOutputData(i)) { - + {{ getEventOutputDataNodePath(i) }}: + +
} @if (message.role === "bot" && hasEventRoute(i)) { } - @if (message.role === "bot" && hasEventOutputData(i)) { -
- output - {{ getEventOutputDataNodePath(i) }}: - -
- } @if (message.role === "bot" && hasEventRoute(i)) { } - - @if (functionCall.needsResponse) { - - } } } @if (message.functionResponses && message.functionResponses.length > 0) { @@ -389,6 +379,19 @@ }
+ @if (message.functionCalls && message.functionCalls.length > 0) { + @for (functionCall of message.functionCalls; track functionCall.id) { + @if (functionCall.needsResponse) { + + } + } + } @if (message.evalStatus === 1 || message.evalStatus === 2) {
@if (functionCall.responseStatus === 'sent') { -
- check_circle - Response sent + + } @else if (functionCall.responseStatus === 'sending') { +
+ hourglass_empty + Sending... +
+ } @else { + @if (hasMessage()) { + +
+
+
- @if (functionCall.sentUserResponse) { -
- person - User input + + +
+ + @if (hasPayload() || hasResponseSchema()) { +
+ @if (hasPayload()) { + + } + @if (hasResponseSchema()) { + + } +
+ } + + +
+ +
- } - } @else if (functionCall.responseStatus === 'sending') { -
- hourglass_empty - Sending...
+
} @else { -
- rate_review - - + } + @if (hasResponseSchema()) { + + } +
+ } + + +
+ +
+
+ } } -
+
\ No newline at end of file diff --git a/src/app/components/long-running-response/long-running-response.scss b/src/app/components/long-running-response/long-running-response.scss index b90487b3..2c4a2035 100644 --- a/src/app/components/long-running-response/long-running-response.scss +++ b/src/app/components/long-running-response/long-running-response.scss @@ -14,61 +14,33 @@ * limitations under the License. */ +:host { + display: block; + width: 80%; + margin-left: 94px; +} + .response-chip-container { - display: inline-flex; - align-items: center; + display: flex; + flex-direction: column; gap: 8px; - margin: 5px; + margin: 5px 5px 5px 0; } -.input-chip { - display: inline-flex; - align-items: center; - gap: 4px; - border: 1px solid var(--mat-standard-button-toggle-divider-color); - border-radius: 16px; - padding: 0 4px 0 12px; - background-color: var(--chat-panel-function-event-button-background-color); - height: 30px; - box-sizing: border-box; - max-width: 300px; - - .input-icon { - color: var(--long-running-response-icon-color); - font-size: 18px; - width: 18px; - height: 18px; - } - - .response-input { - border: none; - outline: none; - background: transparent; - font-size: 13px; - flex: 1; - min-width: 120px; - padding: 0; - color: var(--long-running-response-input-text-color); - caret-color: var(--long-running-response-input-caret-color); - - &::placeholder { - color: var(--long-running-response-input-placeholder-color); - } - } - - .send-icon-btn { - width: 24px; - height: 24px; - padding: 0; - min-width: unset; - color: var(--long-running-response-send-button-color); +.message-box { + background-color: var(--chat-panel-bot-message-message-card-background-color); + border-radius: 20px; + padding: 15px 20px; + font-size: 14px; + font-weight: 400; + color: var(--chat-panel-bot-message-message-card-color); + display: flex; + flex-direction: column; + gap: 16px; +} - mat-icon { - font-size: 18px; - width: 18px; - height: 18px; - } - } +.message-content { + flex: 1; } .status-chip { @@ -95,40 +67,113 @@ border-color: rgba(33, 150, 243, 0.3); color: #2196f3; } +} + +.function-event-button { + background-color: var(--chat-panel-function-event-button-background-color); + margin: 5px 5px 5px; + font-size: 11px !important; + padding: 6px 12px !important; + min-height: 24px !important; + height: 24px !important; + border-radius: 6px !important; + font-family: 'Roboto Mono', monospace !important; + width: auto !important; + max-width: fit-content !important; - &.sent { - background-color: rgba(76, 175, 80, 0.1); - border-color: rgba(76, 175, 80, 0.3); - color: #4caf50; + mat-icon { + font-size: 18px !important; + width: 18px !important; + height: 18px !important; + margin-right: 6px !important; } } -.user-response-chip { +.request-card { + display: flex; + flex-direction: column; + gap: 12px; + width: 100%; +} + +.request-card-standalone { + background-color: var(--chat-panel-message-textarea-background-color); + border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); + border-radius: 12px; + padding: 16px; + display: flex; + flex-direction: column; + gap: 12px; + max-width: 400px; +} + +.data-buttons { + display: flex; + gap: 8px; +} + +.data-button { display: inline-flex; align-items: center; - gap: 4px; - border-radius: 16px; - padding: 0 12px; - font-size: 13px; - font-weight: 500; - height: 32px; - box-sizing: border-box; - border: 1px solid; - line-height: 32px; - background-color: rgba(138, 180, 248, 0.1); - border-color: rgba(138, 180, 248, 0.3); - color: #8ab4f8; + gap: 6px; + padding: 6px 12px; + border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); + border-radius: 6px; + background-color: var(--chat-panel-input-field-button-background-color); + color: var(--chat-panel-input-field-textarea-placeholder-color); + font-size: 12px; cursor: pointer; - transition: background-color 0.2s, border-color 0.2s; + transition: background-color 0.2s; mat-icon { - font-size: 18px; - width: 18px; - height: 18px; + font-size: 16px; + width: 16px; + height: 16px; } &:hover { - background-color: rgba(138, 180, 248, 0.15); - border-color: rgba(138, 180, 248, 0.4); + background-color: var(--chat-panel-message-textarea-focus-background-color); } } + +.input-container { + display: flex; + align-items: center; + gap: 8px; + border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); + border-radius: 8px; + padding: 8px 12px; + background-color: var(--chat-panel-input-field-button-background-color); + width: 100%; + box-sizing: border-box; + + .response-input { + flex: 1; + border: none; + outline: none; + background: transparent; + font-size: 14px; + color: var(--chat-panel-input-field-textarea-color); + caret-color: var(--chat-panel-input-field-textarea-caret-color); + + &::placeholder { + color: var(--chat-panel-input-field-textarea-placeholder-color); + } + } + + .send-button { + width: 32px; + height: 32px; + color: var(--chat-panel-input-field-button-color); + + mat-icon { + font-size: 20px; + width: 20px; + height: 20px; + } + + &:disabled { + opacity: 0.5; + } + } +} \ No newline at end of file diff --git a/src/app/components/long-running-response/long-running-response.ts b/src/app/components/long-running-response/long-running-response.ts index 1e8c15de..db7490d6 100644 --- a/src/app/components/long-running-response/long-running-response.ts +++ b/src/app/components/long-running-response/long-running-response.ts @@ -17,12 +17,13 @@ import {ChangeDetectorRef, Component, EventEmitter, inject, Input, Output} from '@angular/core'; import {FormsModule} from '@angular/forms'; -import {MatIconButton} from '@angular/material/button'; +import {MatButton, MatIconButton} from '@angular/material/button'; import {MatIcon} from '@angular/material/icon'; import {AgentRunRequest} from '../../core/models/AgentRunRequest'; import {AGENT_SERVICE} from '../../core/services/interfaces/agent'; import {JsonTooltipDirective} from '../../directives/html-tooltip.directive'; +import {MarkdownComponent} from '../markdown/markdown.component'; @Component({ selector: 'app-long-running-response', @@ -30,9 +31,11 @@ import {JsonTooltipDirective} from '../../directives/html-tooltip.directive'; styleUrl: './long-running-response.scss', imports: [ FormsModule, + MatButton, MatIconButton, MatIcon, JsonTooltipDirective, + MarkdownComponent, ], }) export class LongRunningResponseComponent { @@ -47,6 +50,47 @@ export class LongRunningResponseComponent { private readonly cdr = inject(ChangeDetectorRef); private responseChunks: any[] = []; + hasMessage(): boolean { + return !!(this.functionCall.args?.prompt || this.functionCall.args?.message); + } + + getPromptText(): string { + return this.functionCall.args?.prompt || this.functionCall.args?.message || 'Please provide your response'; + } + + hasPayload(): boolean { + return this.functionCall.args?.payload !== undefined && + this.functionCall.args?.payload !== null; + } + + getPayloadJson(): string { + try { + return JSON.stringify(this.functionCall.args?.payload || {}, null, 2); + } catch (e) { + return ''; + } + } + + hasResponseSchema(): boolean { + return !!this.functionCall.args?.responseSchema; + } + + getResponseSchemaJson(): string { + try { + return JSON.stringify(this.functionCall.args?.responseSchema || {}, null, 2); + } catch (e) { + return ''; + } + } + + getSentResponseJson(): string { + try { + return JSON.stringify({'response': this.functionCall.sentUserResponse}, null, 2); + } catch (e) { + return ''; + } + } + onSend() { if (!this.functionCall.userResponse || !this.functionCall.userResponse.trim()) { diff --git a/src/app/directives/html-tooltip.directive.ts b/src/app/directives/html-tooltip.directive.ts index a92041a4..45a55121 100644 --- a/src/app/directives/html-tooltip.directive.ts +++ b/src/app/directives/html-tooltip.directive.ts @@ -38,18 +38,45 @@ export class JsonTooltipDirective implements OnDestroy { const positionStrategy = this.overlay.position() .flexibleConnectedTo(this.elementRef) - .withPositions([{ - originX: 'center', - originY: 'top', - overlayX: 'center', - overlayY: 'bottom', - offsetY: -8, - }]); + .withPositions([ + { + originX: 'center', + originY: 'top', + overlayX: 'center', + overlayY: 'bottom', + offsetY: -8, + }, + { + originX: 'center', + originY: 'bottom', + overlayX: 'center', + overlayY: 'top', + offsetY: 8, + }, + { + originX: 'start', + originY: 'top', + overlayX: 'start', + overlayY: 'bottom', + offsetY: -8, + }, + { + originX: 'end', + originY: 'top', + overlayX: 'end', + overlayY: 'bottom', + offsetY: -8, + } + ]) + .withViewportMargin(16) + .withPush(false); this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy: this.overlay.scrollStrategies.close(), panelClass: 'json-tooltip-panel', + maxHeight: '80vh', + maxWidth: '90vw', }); const tooltipPortal = new ComponentPortal(JsonTooltipComponent); From 05230e80f766ba6ff2e943606e7463b3e3900451 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Tue, 17 Mar 2026 14:07:08 -0700 Subject: [PATCH 024/323] change hitl wrapper from response to result --- .../components/long-running-response/long-running-response.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/components/long-running-response/long-running-response.ts b/src/app/components/long-running-response/long-running-response.ts index db7490d6..3ea0b0e8 100644 --- a/src/app/components/long-running-response/long-running-response.ts +++ b/src/app/components/long-running-response/long-running-response.ts @@ -114,7 +114,7 @@ export class LongRunningResponseComponent { functionResponse: { id: this.functionCall.id, name: this.functionCall.name, - response: {'response': this.functionCall.userResponse}, + response: { 'result': this.functionCall.userResponse }, }, }], }, From 17b02ad0e1ce49b47d1486c667dfd4ebd3822848 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Tue, 17 Mar 2026 15:25:55 -0700 Subject: [PATCH 025/323] Fix streaming for inlineData --- .../chat-panel/chat-panel.component.scss | 1 + src/app/components/chat/chat.component.ts | 29 ++++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 3726901a..64c9dade 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -8,6 +8,7 @@ .generated-image-container { max-width: 400px; + margin-left: 20px; } .generated-image { diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 46db7d8a..e04137b7 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -753,21 +753,32 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { this.isModelThinkingSubject.next(false); this.storeEvents(part, chunkJson); + // If we have a streamingTextMessage, append inlineData to it + if (this.streamingTextMessage && part.inlineData) { + this.processPartIntoMessage(part, chunkJson, this.streamingTextMessage); + this.insertMessageBeforeLoadingMessage(this.streamingTextMessage); + this.changeDetectorRef.detectChanges(); + return; + } + + const role = chunkJson.author === 'user' ? 'user' : 'bot'; const existingMessages = this.messages(); const existingMessageIndex = existingMessages.findIndex( - msg => msg.eventId === chunkJson.id && msg.role === 'bot' + msg => msg.eventId === chunkJson.id && msg.role === role ); if (existingMessageIndex !== -1) { // Update existing message by adding this part this.messages.update(messages => { const updatedMessages = [...messages]; - this.processPartIntoMessage(part, chunkJson, updatedMessages[existingMessageIndex]); + const updatedMessage = { ...updatedMessages[existingMessageIndex] }; + this.processPartIntoMessage(part, chunkJson, updatedMessage); + updatedMessages[existingMessageIndex] = updatedMessage; return updatedMessages; }); + this.changeDetectorRef.detectChanges(); } else { - this.storeMessage( - part, chunkJson, chunkJson.author === 'user' ? 'user' : 'bot'); + this.storeMessage(part, chunkJson, role); } } else { this.isModelThinkingSubject.next(true); @@ -1079,12 +1090,8 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { !m.isLoading); if (existingIndex !== -1) { const updatedMessages = [...messages]; - updatedMessages[existingIndex] = { - ...updatedMessages[existingIndex], - text: message.text, - renderedContent: message.renderedContent || - updatedMessages[existingIndex].renderedContent - }; + // Replace with the new message to preserve all fields (including inlineData) + updatedMessages[existingIndex] = message; return updatedMessages; } } @@ -1121,10 +1128,12 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { } else if (part.inlineData) { const base64Data = this.formatBase64Data( part.inlineData.data, part.inlineData.mimeType); + const mediaType = getMediaTypeFromMimetype(part.inlineData.mimeType); message.inlineData = { displayName: part.inlineData.displayName, data: base64Data, mimeType: part.inlineData.mimeType, + mediaType, }; if (message.role === 'user' && event?.id) { message.eventId = event.id; From 4701a283b035fe639b7c5f8782448490eb0a7266 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Tue, 17 Mar 2026 15:54:43 -0700 Subject: [PATCH 026/323] update info button styles, add response_schema chips --- .../chat-panel/chat-panel.component.scss | 3 + .../json-tooltip/json-tooltip.component.ts | 61 +++---------------- .../long-running-response.scss | 35 ++++++----- .../long-running-response.ts | 4 +- src/styles.scss | 33 +++++++++- 5 files changed, 66 insertions(+), 70 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 64c9dade..628d0a4b 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -57,6 +57,8 @@ .function-event-button { background-color: var(--chat-panel-function-event-button-background-color); + border-color: var(--chat-panel-function-event-button-border-color) !important; + color: var(--chat-panel-function-event-button-text-color) !important; margin: 5px 5px 5px; font-size: 11px !important; padding: 6px 12px !important; @@ -70,6 +72,7 @@ width: 18px !important; height: 18px !important; margin-right: 6px !important; + color: var(--chat-panel-function-event-button-text-color) !important; } } diff --git a/src/app/components/json-tooltip/json-tooltip.component.ts b/src/app/components/json-tooltip/json-tooltip.component.ts index 3af88c71..65c34eda 100644 --- a/src/app/components/json-tooltip/json-tooltip.component.ts +++ b/src/app/components/json-tooltip/json-tooltip.component.ts @@ -14,10 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { SAFE_VALUES_SERVICE } from '../../core/services/interfaces/safevalues'; - -import { Component, Input, inject } from '@angular/core'; -import { SafeHtml } from '@angular/platform-browser'; +import { Component, Input } from '@angular/core'; +import { NgxJsonViewerModule } from 'ngx-json-viewer'; @Component({ selector: 'app-json-tooltip', @@ -25,15 +23,13 @@ import { SafeHtml } from '@angular/platform-browser'; @if (title) {
{{ title }}
} -
+ `, styles: [` :host { display: block; - font-family: 'Courier New', monospace; font-size: 12px; line-height: 1.4; - white-space: pre-wrap; max-width: 800px; max-height: 80vh; overflow: auto; @@ -54,59 +50,18 @@ import { SafeHtml } from '@angular/platform-browser'; } `], standalone: true, + imports: [NgxJsonViewerModule], }) export class JsonTooltipComponent { @Input() title: string = ''; @Input() set json(value: string) { - this.formattedJson = this.syntaxHighlight(value); - } - - formattedJson: SafeHtml = ''; - - readonly sanitizer = inject(SAFE_VALUES_SERVICE); - - private syntaxHighlight(json: string): SafeHtml { - if (!json) return ''; - try { - // Parse and re-stringify to ensure valid JSON - const obj = JSON.parse(json); - json = JSON.stringify(obj, null, 0); + this.parsedJson = JSON.parse(value); } catch (e) { - // If not valid JSON, just return the string - return this.sanitizer.bypassSecurityTrustHtml(this.escapeHtml(json)); + // If not valid JSON, display as string + this.parsedJson = value; } - - // Syntax highlight the JSON - json = json.replace(/&/g, '&').replace(//g, '>'); - json = json.replace( - /("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, - (match) => { - let cls = 'json-number'; - if (/^"/.test(match)) { - if (/:$/.test(match)) { - cls = 'json-key'; - } else { - cls = 'json-string'; - } - } else if (/true|false/.test(match)) { - cls = 'json-boolean'; - } else if (/null/.test(match)) { - cls = 'json-null'; - } - return '' + match + ''; - } - ); - - return this.sanitizer.bypassSecurityTrustHtml(json); } - private escapeHtml(text: string): string { - return text - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); - } + parsedJson: any = {}; } diff --git a/src/app/components/long-running-response/long-running-response.scss b/src/app/components/long-running-response/long-running-response.scss index 2c4a2035..7c14fe37 100644 --- a/src/app/components/long-running-response/long-running-response.scss +++ b/src/app/components/long-running-response/long-running-response.scss @@ -71,6 +71,8 @@ .function-event-button { background-color: var(--chat-panel-function-event-button-background-color); + border-color: var(--chat-panel-function-event-button-border-color) !important; + color: var(--chat-panel-function-event-button-text-color) !important; margin: 5px 5px 5px; font-size: 11px !important; padding: 6px 12px !important; @@ -86,6 +88,7 @@ width: 18px !important; height: 18px !important; margin-right: 6px !important; + color: var(--chat-panel-function-event-button-text-color) !important; } } @@ -117,11 +120,12 @@ align-items: center; gap: 6px; padding: 6px 12px; - border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); + border: 1px solid var(--chat-panel-function-event-button-border-color); border-radius: 6px; - background-color: var(--chat-panel-input-field-button-background-color); - color: var(--chat-panel-input-field-textarea-placeholder-color); - font-size: 12px; + background-color: var(--chat-panel-function-event-button-background-color); + color: var(--chat-panel-function-event-button-text-color); + font-size: 11px; + font-family: 'Roboto Mono', monospace; cursor: pointer; transition: background-color 0.2s; @@ -129,10 +133,11 @@ font-size: 16px; width: 16px; height: 16px; + color: var(--chat-panel-function-event-button-text-color); } &:hover { - background-color: var(--chat-panel-message-textarea-focus-background-color); + opacity: 0.8; } } @@ -140,10 +145,10 @@ display: flex; align-items: center; gap: 8px; - border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); - border-radius: 8px; + border: 1px solid var(--chat-panel-function-event-button-border-color); + border-radius: 6px; padding: 8px 12px; - background-color: var(--chat-panel-input-field-button-background-color); + background-color: var(--chat-panel-function-event-button-background-color); width: 100%; box-sizing: border-box; @@ -152,19 +157,21 @@ border: none; outline: none; background: transparent; - font-size: 14px; - color: var(--chat-panel-input-field-textarea-color); - caret-color: var(--chat-panel-input-field-textarea-caret-color); + font-size: 12px; + font-family: 'Roboto Mono', monospace; + color: var(--chat-panel-function-event-button-text-color); + caret-color: var(--chat-panel-function-event-button-text-color); &::placeholder { - color: var(--chat-panel-input-field-textarea-placeholder-color); + color: var(--chat-panel-function-event-button-text-color); + opacity: 0.6; } } .send-button { width: 32px; height: 32px; - color: var(--chat-panel-input-field-button-color); + color: var(--chat-panel-function-event-button-text-color); mat-icon { font-size: 20px; @@ -173,7 +180,7 @@ } &:disabled { - opacity: 0.5; + opacity: 0.3; } } } \ No newline at end of file diff --git a/src/app/components/long-running-response/long-running-response.ts b/src/app/components/long-running-response/long-running-response.ts index 3ea0b0e8..1645b04d 100644 --- a/src/app/components/long-running-response/long-running-response.ts +++ b/src/app/components/long-running-response/long-running-response.ts @@ -72,12 +72,12 @@ export class LongRunningResponseComponent { } hasResponseSchema(): boolean { - return !!this.functionCall.args?.responseSchema; + return !!this.functionCall.args?.response_schema; } getResponseSchemaJson(): string { try { - return JSON.stringify(this.functionCall.args?.responseSchema || {}, null, 2); + return JSON.stringify(this.functionCall.args?.response_schema || {}, null, 2); } catch (e) { return ''; } diff --git a/src/styles.scss b/src/styles.scss index 2c031b99..77217615 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -221,7 +221,9 @@ html.light-theme { // Dark theme progress spinner and custom properties html.dark-theme { - --chat-panel-function-event-button-background-color: white; + --chat-panel-function-event-button-background-color: #333; + --chat-panel-function-event-button-border-color: #777; + --chat-panel-function-event-button-text-color: #ccc; --chat-panel-function-event-button-highlight-background-color: rgb( 15, 82, @@ -521,6 +523,8 @@ html.dark-theme { html.light-theme { --mat-button-outlined-label-text-color: black; --chat-panel-function-event-button-background-color: #f2f1ef; + --chat-panel-function-event-button-border-color: #333; + --chat-panel-function-event-button-text-color: #333; --chat-panel-function-event-button-highlight-border-color: #0f5223; --chat-panel-function-event-button-highlight-color: white; --long-running-response-input-text-color: #202124; @@ -984,3 +988,30 @@ html.light-theme { .cdk-overlay-transparent-backdrop { background: transparent; } + +// ngx-json-viewer custom colors +ngx-json-viewer { + .segment-key { + color: #4285f4 !important; + } + + .segment-value { + color: inherit; + } + + .segment-type-string { + color: #0f9d58 !important; + } + + .segment-type-number { + color: #db4437 !important; + } + + .segment-type-boolean { + color: #f4b400 !important; + } + + .segment-type-null { + color: #9e9e9e !important; + } +} From 73e86fdb005df824b383d38294ab8eb057bfefe9 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Tue, 17 Mar 2026 16:01:13 -0700 Subject: [PATCH 027/323] lint --- src/styles.scss | 52 +++++++++++++++---------------------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/src/styles.scss b/src/styles.scss index 77217615..670af67d 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -184,12 +184,9 @@ html.dark-theme { --mdc-dialog-subhead-line-height: 32px; --mdc-dialog-subhead-color: #e3e3e3; - @include mat.dialog-overrides( - ( - container-color: #2b2b2f, + @include mat.dialog-overrides((container-color: #2b2b2f, subhead-color: white, - ) - ); + )); } // Light theme dialog overrides @@ -202,12 +199,9 @@ html.light-theme { --mdc-dialog-subhead-line-height: 32px; --mdc-dialog-subhead-color: #202124; - @include mat.dialog-overrides( - ( - container-color: #ffffff, + @include mat.dialog-overrides((container-color: #ffffff, subhead-color: #202124, - ) - ); + )); } .mat-mdc-dialog-container .mat-mdc-dialog-title.mdc-dialog__title { @@ -224,11 +218,9 @@ html.dark-theme { --chat-panel-function-event-button-background-color: #333; --chat-panel-function-event-button-border-color: #777; --chat-panel-function-event-button-text-color: #ccc; - --chat-panel-function-event-button-highlight-background-color: rgb( - 15, - 82, - 35 - ); + --chat-panel-function-event-button-highlight-background-color: rgb(15, + 82, + 35); --chat-panel-function-event-button-highlight-border-color: rgb(15, 82, 35); --chat-panel-function-event-button-highlight-color: white; --long-running-response-input-text-color: #000; @@ -511,12 +503,9 @@ html.dark-theme { --mat-table-row-item-label-text-color: #fff; --mat-table-header-headline-color: #fff; - @include mat.progress-spinner-overrides( - ( - active-indicator-color: #a8c7fa, + @include mat.progress-spinner-overrides((active-indicator-color: #a8c7fa, size: 80, - ) - ); + )); } // Light theme progress spinner and custom properties @@ -805,19 +794,14 @@ html.light-theme { --builder-tool-item-border-color: #c8c6c6; --builder-tool-item-hover-background-color: #dcd9d9; - @include mat.progress-spinner-overrides( - ( - active-indicator-color: #305f9d, + @include mat.progress-spinner-overrides((active-indicator-color: #305f9d, size: 80, - ) - ); + )); } // Form field overrides for dark theme html.dark-theme { - @include mat.form-field-overrides( - ( - disabled-input-text-placeholder-color: orange, + @include mat.form-field-overrides((disabled-input-text-placeholder-color: orange, filled-active-indicator-color: red, outlined-outline-color: #cccccc, outlined-input-text-color: #cccccc, @@ -828,15 +812,12 @@ html.dark-theme { outlined-disabled-input-text-color: #cccccc, outlined-disabled-outline-color: #cccccc, outlined-caret-color: #cccccc, - ) - ); + )); } // Form field overrides for light theme html.light-theme { - @include mat.form-field-overrides( - ( - disabled-input-text-placeholder-color: #ff8983, + @include mat.form-field-overrides((disabled-input-text-placeholder-color: #ff8983, filled-active-indicator-color: #ba1a1a, outlined-outline-color: #787777, outlined-input-text-color: #202124, @@ -847,8 +828,7 @@ html.light-theme { outlined-disabled-input-text-color: #929090, outlined-disabled-outline-color: #c8c6c6, outlined-caret-color: #305f9d, - ) - ); + )); } .mdc-line-ripple { @@ -1014,4 +994,4 @@ ngx-json-viewer { .segment-type-null { color: #9e9e9e !important; } -} +} \ No newline at end of file From 4ef0249b6fcb2930d8bdc1d39153268e88454144 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Tue, 17 Mar 2026 18:41:15 -0700 Subject: [PATCH 028/323] update agent structure graph to use graphviz from backend --- .../agent-structure-graph-dialog.html | 63 +---- .../agent-structure-graph-dialog.scss | 130 +-------- .../agent-structure-graph-dialog.ts | 253 ++---------------- src/app/core/services/agent.service.ts | 8 + src/app/core/services/interfaces/agent.ts | 1 + 5 files changed, 43 insertions(+), 412 deletions(-) diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html index f9162822..cfa251e4 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.html @@ -28,70 +28,13 @@

Agent Structure Graph

error_outline

{{ errorMessage() }}

- } @else if (nodes().length > 0) { + } @else if (renderedGraph()) {

Agent: {{ appName }}

- @if (breadcrumbs().length > 1) { - - } -
- - -
- - - - -
- {{ getNodeIcon(ctx.node.data().type) }} - {{ ctx.node.data().label }} - @if (ctx.node.data().hasNestedStructure) { - zoom_in - } -
-
{{ getNodeTypeLabel(ctx.node.data().type) }}
- @if (ctx.node.data().agentClass) { -
{{ ctx.node.data().agentClass }}
- } -
-
- - - - - - -
-
+
} @else {
account_tree -

No graph structure available for this agent.

+

Agent structure graph not available.

}
diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss index b5d3ddb3..f4172200 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss @@ -61,50 +61,22 @@ button[mat-button] { } } -.breadcrumb-nav { +.svg-container { + flex: 1; display: flex; align-items: center; - margin-bottom: 12px; - font-size: 13px; - color: var(--mdc-dialog-supporting-text-color); -} - -.breadcrumb-item { - cursor: pointer; - padding: 4px 8px; - border-radius: 4px; - transition: background-color 0.2s; - - &:hover:not(.active) { - background-color: rgba(138, 180, 248, 0.1); - } - - &.active { - font-weight: 500; - cursor: default; - } -} - -.breadcrumb-separator { - font-size: 16px; - width: 16px; - height: 16px; - opacity: 0.5; - margin: 0 4px; -} - -.vflow-container { - flex: 1; - min-height: 700px; + justify-content: center; + overflow: auto; border: 1px solid var(--mdc-dialog-supporting-text-color, rgba(255, 255, 255, 0.2)); border-radius: 8px; - overflow: hidden; - position: relative; - - vflow { - width: 100%; - height: 100%; - display: block; + padding: 16px; + background-color: rgba(255, 255, 255, 0.95); + + ::ng-deep svg { + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; } } @@ -144,82 +116,4 @@ button[mat-button] { height: 64px; color: var(--mdc-dialog-supporting-text-color); opacity: 0.6; -} - -// Agent node styling -.agent-node { - background-color: var(--mdc-dialog-container-color, #2b2b2f); - border: 2px solid rgba(138, 180, 248, 0.5); - border-radius: 8px; - padding: 12px 16px; - min-width: 180px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); - transition: all 0.2s; - - &.expandable { - cursor: pointer; - - &:hover { - border-color: rgba(138, 180, 248, 0.8); - box-shadow: 0 4px 12px rgba(138, 180, 248, 0.3); - transform: scale(1.02); - } - } -} - -.node-header { - display: flex; - align-items: center; - gap: 8px; - margin-bottom: 4px; -} - -.node-icon { - font-size: 20px; - width: 20px; - height: 20px; - color: rgba(138, 180, 248, 0.9); -} - -.expand-icon { - font-size: 18px; - width: 18px; - height: 18px; - color: rgba(138, 180, 248, 0.9); - margin-left: auto; -} - -.node-label { - font-weight: 500; - font-size: 14px; - color: var(--mdc-dialog-supporting-text-color); -} - -.node-type { - font-size: 11px; - color: rgba(138, 180, 248, 0.8); - font-weight: 500; - text-transform: uppercase; - letter-spacing: 0.5px; - margin-top: 4px; -} - -.node-class { - font-size: 12px; - color: var(--mdc-dialog-supporting-text-color); - opacity: 0.7; - margin-top: 2px; -} - -// Edge styling -::ng-deep { - .vflow-edge { - stroke: rgba(138, 180, 248, 0.6); - stroke-width: 2px; - fill: none; - } - - .vflow-edge-marker { - fill: rgba(138, 180, 248, 0.6); - } } \ No newline at end of file diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts index b5b1ef8b..fabecb7c 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts @@ -20,24 +20,15 @@ import {MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDial import {MatButtonModule} from '@angular/material/button'; import {MatIconModule} from '@angular/material/icon'; import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; -import {Vflow, Edge, HtmlTemplateDynamicNode, ConnectionSettings} from 'ngx-vflow'; +import {SafeHtml} from '@angular/platform-browser'; import {AGENT_SERVICE} from '../../core/services/interfaces/agent'; -import {calculateGraphLayout, getNodeName, getNodeTypeIcon, getNodeTypeLabel} from '../../utils/graph-layout.utils'; -import {findNodeInLevel, hasNestedStructure, NavigationStackItem, DEFAULT_LAYOUT_CONFIG} from '../../utils/graph-navigation.utils'; +import {GRAPH_SERVICE} from '../../core/services/interfaces/graph'; +import {SAFE_VALUES_SERVICE} from '../../core/services/interfaces/safevalues'; export interface AgentStructureGraphDialogData { appName: string; } -interface NodeData { - name: string; - label: string; - type: string; - agentClass?: string; - hasNestedStructure?: boolean; - nodeData?: any; // Store the full node data for navigation -} - @Component({ selector: 'app-agent-structure-graph-dialog', templateUrl: './agent-structure-graph-dialog.html', @@ -51,27 +42,18 @@ interface NodeData { MatButtonModule, MatIconModule, MatProgressSpinnerModule, - Vflow, ], }) export class AgentStructureGraphDialogComponent implements OnInit { readonly dialogRef = inject(MatDialogRef); readonly data = inject(MAT_DIALOG_DATA); private readonly agentService = inject(AGENT_SERVICE); + private readonly graphService = inject(GRAPH_SERVICE); + private readonly sanitizer = inject(SAFE_VALUES_SERVICE); - public nodes = signal[]>([]); - public edges = signal([]); + public renderedGraph = signal(null); public isLoading = signal(true); public errorMessage = signal(null); - public connection: ConnectionSettings = { - mode: 'loose', - }; - - // Navigation state - private fullAgentData: any = null; - private navigationStack: NavigationStackItem[] = []; - public currentAgentName = signal(''); - public breadcrumbs = signal([]); get appName(): string { return this.data.appName; @@ -84,227 +66,30 @@ export class AgentStructureGraphDialogComponent implements OnInit { private loadAgentGraph(): void { this.isLoading.set(true); this.errorMessage.set(null); + this.renderedGraph.set(null); - // Use agentInfo to get the graph data - this.agentService.getAppInfo(this.appName).subscribe({ - next: (agentData: any) => { + this.agentService.getAppGraphImage(this.appName).subscribe({ + next: async (response: any) => { try { - this.fullAgentData = agentData.root_agent; - this.navigationStack = [{name: agentData.root_agent.name, data: agentData.root_agent}]; - this.updateBreadcrumbs(); - this.buildGraph(agentData.root_agent); + if (!response?.dotSrc) { + this.errorMessage.set('Agent structure graph not available.'); + this.isLoading.set(false); + return; + } + const svg = await this.graphService.render(response.dotSrc); + this.renderedGraph.set(this.sanitizer.bypassSecurityTrustHtml(svg)); this.isLoading.set(false); } catch (error) { - console.error('Error building graph:', error); - this.errorMessage.set('Failed to build agent structure graph.'); + console.error('Error rendering graph:', error); + this.errorMessage.set('Agent structure graph not available.'); this.isLoading.set(false); } }, error: (error) => { console.error('Error loading agent graph:', error); - this.errorMessage.set('Failed to load agent structure.'); + this.errorMessage.set('Agent structure graph not available.'); this.isLoading.set(false); }, }); } - - private buildGraph(agentData: any): void { - const nodes: HtmlTemplateDynamicNode[] = []; - const edges: Edge[] = []; - - // Handle LlmAgent/Mesh with nodes field - if (agentData.nodes && Array.isArray(agentData.nodes)) { - this.buildMeshGraph(agentData.nodes, nodes, edges); - } - // Handle WorkflowAgent/SingleLlmAgent with graph field - else if (agentData.graph && agentData.graph.nodes) { - // Calculate layout using utility function - const layout = calculateGraphLayout( - agentData.graph.nodes, - agentData.graph.edges || [], - DEFAULT_LAYOUT_CONFIG - ); - - // Create nodes with calculated positions - agentData.graph.nodes.forEach((node: any, index: number) => { - const nodeName = getNodeName(node, `node_${index}`); - const isStartNode = nodeName === '__START__'; - const nodeType = node.type || 'agent'; - const position = layout.positions.get(nodeName) || {x: DEFAULT_LAYOUT_CONFIG.startX, y: DEFAULT_LAYOUT_CONFIG.startY}; - const hasNested = hasNestedStructure(node); - - nodes.push({ - id: nodeName, - type: 'html-template', - point: signal({x: position.x, y: position.y}), - width: signal(200), - height: signal(80), - data: signal({ - name: nodeName, - label: isStartNode ? 'START' : nodeName, - type: nodeType, - agentClass: node.agent?.agent_class || node.model || undefined, - hasNestedStructure: hasNested, - nodeData: node, - }), - }); - }); - - // Add edges from graph.edges - if (agentData.graph.edges) { - agentData.graph.edges.forEach((edge: any, index: number) => { - const fromName = getNodeName(edge.from_node); - const toName = getNodeName(edge.to_node); - - if (fromName && toName) { - edges.push({ - id: `${fromName}_to_${toName}_${index}`, - source: fromName, - target: toName, - type: 'template', - floating: true, - markers: { - end: { - type: 'arrow-closed', - width: 20, - height: 20, - color: 'rgba(138, 180, 248, 0.8)', - }, - }, - }); - } - }); - } - } - - this.nodes.set(nodes); - this.edges.set(edges); - } - - private buildMeshGraph( - meshNodes: any[], - nodes: HtmlTemplateDynamicNode[], - edges: Edge[] - ): void { - // For LlmAgent/Mesh: nodes array contains coordinator + sub-agents - const coordinatorIndex = meshNodes.findIndex(n => - (n.name === meshNodes[0]?.name) || n.type === 'coordinator' - ); - - const coordinator = coordinatorIndex >= 0 ? meshNodes[coordinatorIndex] : null; - const subAgents = meshNodes.filter((_, i) => i !== coordinatorIndex); - - const startY = 100; - const ySpacing = 200; - const xSpacing = 300; - const maxNodesPerRow = 6; - const rowSpacing = 120; - - // Add coordinator node at top center - if (coordinator) { - const hasNested = hasNestedStructure(coordinator); - nodes.push({ - id: coordinator.name, - type: 'html-template', - point: signal({x: 400, y: startY}), - width: signal(200), - height: signal(80), - data: signal({ - name: coordinator.name, - label: coordinator.name, - type: 'agent', - agentClass: coordinator.model || 'LlmAgent', - hasNestedStructure: hasNested, - nodeData: coordinator, - }), - }); - } - - // Add sub-agent nodes in grid layout - subAgents.forEach((node: any, index: number) => { - const hasNested = hasNestedStructure(node); - - let x: number, y: number; - if (subAgents.length <= maxNodesPerRow) { - // Single row for few nodes - const totalWidth = (subAgents.length - 1) * xSpacing; - const rowStartX = 400 - totalWidth / 2; - x = rowStartX + (index * xSpacing); - y = startY + ySpacing; - } else { - // Grid layout for many nodes - const row = Math.floor(index / maxNodesPerRow); - const col = index % maxNodesPerRow; - const nodesInThisRow = Math.min(maxNodesPerRow, subAgents.length - (row * maxNodesPerRow)); - const totalWidth = (nodesInThisRow - 1) * xSpacing; - const rowStartX = 400 - totalWidth / 2; - x = rowStartX + (col * xSpacing); - y = startY + ySpacing + (row * rowSpacing); - } - - nodes.push({ - id: node.name, - type: 'html-template', - point: signal({x, y}), - width: signal(200), - height: signal(80), - data: signal({ - name: node.name, - label: node.name, - type: 'agent', - agentClass: node.model || 'Agent', - hasNestedStructure: hasNested, - nodeData: node, - }), - }); - - // Add edge: coordinator -> sub-agent - if (coordinator) { - edges.push({ - id: `${coordinator.name}_to_${node.name}`, - source: coordinator.name, - target: node.name, - type: 'template', - floating: true, - markers: { - end: { - type: 'arrow-closed', - width: 20, - height: 20, - color: 'rgba(138, 180, 248, 0.8)', - }, - }, - }); - } - }); - } - - private updateBreadcrumbs(): void { - this.breadcrumbs.set(this.navigationStack.map(item => item.name)); - this.currentAgentName.set(this.navigationStack[this.navigationStack.length - 1]?.name || ''); - } - - navigateIntoNode(nodeName: string): void { - const currentData = this.navigationStack[this.navigationStack.length - 1].data; - const nodeData = findNodeInLevel(currentData, nodeName); - - if (nodeData && hasNestedStructure(nodeData)) { - this.navigationStack.push({name: nodeName, data: nodeData}); - this.updateBreadcrumbs(); - this.buildGraph(nodeData); - } - } - - navigateToLevel(index: number): void { - if (index >= 0 && index < this.navigationStack.length) { - this.navigationStack = this.navigationStack.slice(0, index + 1); - this.updateBreadcrumbs(); - const currentData = this.navigationStack[this.navigationStack.length - 1].data; - this.buildGraph(currentData); - } - } - - // Expose utility functions for use in template - getNodeIcon = getNodeTypeIcon; - getNodeTypeLabel = getNodeTypeLabel; } diff --git a/src/app/core/services/agent.service.ts b/src/app/core/services/agent.service.ts index d0a3cd10..03468ef8 100644 --- a/src/app/core/services/agent.service.ts +++ b/src/app/core/services/agent.service.ts @@ -183,4 +183,12 @@ export class AgentService implements AgentServiceInterface { } return new Observable<''>(); } + + getAppGraphImage(appName: string): Observable { + if (this.apiServerDomain != undefined) { + const url = this.apiServerDomain + `/dev/build_graph_image/${appName}`; + return this.http.get(url); + } + return new Observable(); + } } diff --git a/src/app/core/services/interfaces/agent.ts b/src/app/core/services/interfaces/agent.ts index bbd5b7c5..8a631ffd 100644 --- a/src/app/core/services/interfaces/agent.ts +++ b/src/app/core/services/interfaces/agent.ts @@ -32,6 +32,7 @@ export abstract class AgentService { abstract runSse(req: AgentRunRequest): Observable; abstract listApps(): Observable; abstract getAppInfo(name: string): Observable; + abstract getAppGraphImage(name: string): Observable; getAgentBuilderTmp(agentName: string): Observable { console.warn('unimplemented'); return of(''); From 4548c15e7a45039fefbf679eef577c7e2571cb88 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Thu, 19 Mar 2026 17:09:27 +0000 Subject: [PATCH 029/323] make node dot bigger and add initials --- .../chat-panel/chat-panel.component.html | 5 +++-- .../chat-panel/chat-panel.component.scss | 17 ++++++++++++----- .../chat-panel/chat-panel.component.ts | 9 +++++++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 6ce15548..ab2abb98 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -74,7 +74,9 @@ } @else {
+ [appJsonTooltip]="getNodePath(i) || getEventNodePath(i)" [ngClass]="{'hidden': !getAgentNameFromEvent(i)}"> + {{ getNodeInitial(i) }} + } } @if (shouldShowMessageCard(message)) { @@ -274,7 +276,6 @@ [ngClass]="{'message-card--highlighted': shouldMessageHighlighted(i)}" class="message-card output-chip" > -
Node Output
diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 628d0a4b..3b6f3956 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -563,14 +563,21 @@ button.video-rec-btn { } .node-circle-icon { - width: 16px; - height: 16px; + width: 32px; + height: 32px; border-radius: 50%; - margin-left: 12px; - margin-right: 28px; + margin-left: 4px; + margin-right: 16px; flex-shrink: 0; - display: inline-block; + display: inline-flex; + align-items: center; + justify-content: center; align-self: center; + color: white; + font-size: 14px; + font-weight: 600; + line-height: 1; + text-transform: uppercase; } .readme-container { diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index 120ba56f..3998d35d 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -304,6 +304,15 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { return this.stringToColorService.stc(nodePath); } + getNodeInitial(messageIndex: number): string { + const nodePath = this.getNodePath(messageIndex) || + this.getEventNodePath(messageIndex); + const nodeName = nodePath.split(/[/.>]/).filter(Boolean).pop() || nodePath; + const initialMatch = nodeName.match(/[A-Za-z0-9]/); + + return initialMatch ? initialMatch[0].toUpperCase() : 'N'; + } + shouldMessageHighlighted(index: number) { return this.hoveredEventMessageIndices.includes(index); } From b8d790a58f04afc0e302c65411b07296960728cd Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Thu, 19 Mar 2026 17:39:41 +0000 Subject: [PATCH 030/323] add tooltip to node output --- src/app/components/chat-panel/chat-panel.component.html | 7 ++++++- src/assets/config/runtime-config.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index ab2abb98..1cbe5e3e 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -271,7 +271,12 @@ } @if (message.role === "bot" && hasEventOutputData(i)) { -
+
Date: Mon, 16 Mar 2026 04:46:34 -0700 Subject: [PATCH 031/323] feat(otel): fix `'[error parsing request]'` error in the `Trace` tab when using semconv spans The error occurred in ADK Go, which uses semconv spans and logs. PiperOrigin-RevId: 884366926 --- src/utils/trace-utils.spec.ts | 9 ++++++--- src/utils/trace-utils.ts | 33 +++++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/utils/trace-utils.spec.ts b/src/utils/trace-utils.spec.ts index 01c0a794..f02d2e2b 100644 --- a/src/utils/trace-utils.spec.ts +++ b/src/utils/trace-utils.spec.ts @@ -103,7 +103,8 @@ describe('trace-utils', () => { attributes: {} }; const normalized = normalizeSpan(span); - expect(normalized.attributes['gcp.vertex.agent.llm_request']).toBeUndefined(); + expect(normalized.attributes) + .not.toContain('gcp.vertex.agent.llm_request'); }); it('should extract output from logs for non-execute_tool spans', () => { @@ -138,8 +139,10 @@ describe('trace-utils', () => { attributes: {} }; const normalized = normalizeSpan(span); - expect(normalized.attributes['gcp.vertex.agent.llm_request']).toBeUndefined(); - expect(normalized.attributes['gcp.vertex.agent.llm_response']).toBeUndefined(); + expect(normalized.attributes) + .not.toContain('gcp.vertex.agent.llm_request'); + expect(normalized.attributes) + .not.toContain('gcp.vertex.agent.llm_response'); }); }); diff --git a/src/utils/trace-utils.ts b/src/utils/trace-utils.ts index ec901aac..9556ed4b 100644 --- a/src/utils/trace-utils.ts +++ b/src/utils/trace-utils.ts @@ -20,6 +20,9 @@ import { EventTelemetry, Log, Span } from "../app/core/models/Trace"; const GCP_VERTEX_AGENT_TOOL_CALL_ARGS = 'gcp.vertex.agent.tool_call_args'; const GCP_VERTEX_AGENT_TOOL_RESPONSE = 'gcp.vertex.agent.tool_response'; +const GCP_VERTEX_AGENT_LLM_REQUEST = 'gcp.vertex.agent.llm_request' +const GCP_VERTEX_AGENT_LLM_RESPONSE = 'gcp.vertex.agent.llm_response' + const EXECUTE_TOOL = 'execute_tool'; const GENERATE_CONTENT = 'generate_content'; @@ -32,14 +35,23 @@ const FUNCTION_RESPONSE = 'functionResponse'; // - semconv `execute_tool` spans // - legacy `call_llm` spans export const normalizeSpan = (span: Span): Span => { - return { + const normalized = { ...span, attributes: { ...span.attributes, - 'gcp.vertex.agent.llm_request': span.attributes['gcp.vertex.agent.llm_request'] ?? extractInputFromSpan(span), - 'gcp.vertex.agent.llm_response': span.attributes['gcp.vertex.agent.llm_response'] ?? extractOutputFromSpan(span), } }; + const request = span.attributes[GCP_VERTEX_AGENT_LLM_REQUEST] ?? + extractInputFromSpan(span) + const response = span.attributes[GCP_VERTEX_AGENT_LLM_RESPONSE] ?? + extractOutputFromSpan(span) + if (request !== undefined) { + normalized.attributes[GCP_VERTEX_AGENT_LLM_REQUEST] = request + } + if (response !== undefined) { + normalized.attributes[GCP_VERTEX_AGENT_LLM_RESPONSE] = response + } + return normalized; }; const extractInputFromSpan = (span: Span): {[key: string]: any} | string | undefined => { @@ -155,11 +167,20 @@ const stringFromLogBody = (log: Log): string => { // - semconv `execute_tool` spans // - legacy `call_llm` spans export const normalizeEventTelemetry = (telemetry: EventTelemetry) => { - return { + const request = + telemetry[GCP_VERTEX_AGENT_LLM_REQUEST] ?? extractEventInput(telemetry) + const response = + telemetry[GCP_VERTEX_AGENT_LLM_RESPONSE] ?? extractEventOutput(telemetry) + const normalizedEvent = { ...telemetry, - 'gcp.vertex.agent.llm_request': telemetry['gcp.vertex.agent.llm_request'] ?? extractEventInput(telemetry), - 'gcp.vertex.agent.llm_response': telemetry['gcp.vertex.agent.llm_response'] ?? extractEventOutput(telemetry), }; + if (request !== undefined) { + normalizedEvent[GCP_VERTEX_AGENT_LLM_REQUEST] = request; + } + if (response !== undefined) { + normalizedEvent[GCP_VERTEX_AGENT_LLM_RESPONSE] = response; + } + return normalizedEvent; }; const extractEventInput = (telemetry: EventTelemetry): string | undefined => { From 9eebce5283c3f8e211016f4f4227ced0cbf5d6bc Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Tue, 17 Mar 2026 02:54:25 -0700 Subject: [PATCH 032/323] fix(otel): handle missing attributes in normalizeSpan and fix the assertions in tests This change: * adds optional chaining when accessing span.attributes to prevent errors if the attributes property is not present on the span object * uses the correct assertions for checking that request/response is not set on the normalized span when it's not present in the input PiperOrigin-RevId: 884907155 --- src/utils/trace-utils.spec.ts | 28 ++++++++++++++++++++++------ src/utils/trace-utils.ts | 4 ++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/utils/trace-utils.spec.ts b/src/utils/trace-utils.spec.ts index f02d2e2b..0bad84f1 100644 --- a/src/utils/trace-utils.spec.ts +++ b/src/utils/trace-utils.spec.ts @@ -103,8 +103,8 @@ describe('trace-utils', () => { attributes: {} }; const normalized = normalizeSpan(span); - expect(normalized.attributes) - .not.toContain('gcp.vertex.agent.llm_request'); + expect('gcp.vertex.agent.llm_request' in normalized.attributes) + .toBeFalse(); }); it('should extract output from logs for non-execute_tool spans', () => { @@ -139,10 +139,26 @@ describe('trace-utils', () => { attributes: {} }; const normalized = normalizeSpan(span); - expect(normalized.attributes) - .not.toContain('gcp.vertex.agent.llm_request'); - expect(normalized.attributes) - .not.toContain('gcp.vertex.agent.llm_response'); + expect('gcp.vertex.agent.llm_request' in normalized.attributes) + .toBeFalse(); + expect('gcp.vertex.agent.llm_response' in normalized.attributes) + .toBeFalse(); + }); + + it('should handle missing attributes gracefully', () => { + const span: Span = { + name: 'generate_content', + start_time: 0, + end_time: 100, + span_id: 's1', + trace_id: 't1', + logs: [] + }; + const normalized = normalizeSpan(span); + expect('gcp.vertex.agent.llm_request' in normalized.attributes) + .toBeFalse(); + expect('gcp.vertex.agent.llm_response' in normalized.attributes) + .toBeFalse(); }); }); diff --git a/src/utils/trace-utils.ts b/src/utils/trace-utils.ts index 9556ed4b..c457501a 100644 --- a/src/utils/trace-utils.ts +++ b/src/utils/trace-utils.ts @@ -41,9 +41,9 @@ export const normalizeSpan = (span: Span): Span => { ...span.attributes, } }; - const request = span.attributes[GCP_VERTEX_AGENT_LLM_REQUEST] ?? + const request = span?.attributes?.[GCP_VERTEX_AGENT_LLM_REQUEST] ?? extractInputFromSpan(span) - const response = span.attributes[GCP_VERTEX_AGENT_LLM_RESPONSE] ?? + const response = span?.attributes?.[GCP_VERTEX_AGENT_LLM_RESPONSE] ?? extractOutputFromSpan(span) if (request !== undefined) { normalized.attributes[GCP_VERTEX_AGENT_LLM_REQUEST] = request From f4ff34e4e34c12d29076c79095154873d70c64d5 Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Tue, 17 Mar 2026 08:12:49 -0700 Subject: [PATCH 033/323] ADK changes PiperOrigin-RevId: 885030729 --- .../chat-panel/chat-panel.component.html | 1 + .../chat-panel/chat-panel.component.scss | 15 ++++++++- .../components/chat/chat.component.spec.ts | 33 ++++++++++++++++++- src/app/components/chat/chat.component.ts | 26 +++++++++++++++ 4 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 1cbe5e3e..ee1542fb 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -82,6 +82,7 @@ @if (shouldShowMessageCard(message)) { { + const markdownContent = '# Welcome to the App\n\nThis is the landing page.'; + const encodedContent = encodeURIComponent(markdownContent); + const queryParams = { + [LANDING_PAGE_CONTENT_QUERY_PARAM]: encodedContent, + }; + mockActivatedRoute.snapshot!.queryParams = queryParams; + mockActivatedRoute.queryParams = of(queryParams); + + // Mock session service to return a new session + mockSessionService.createSessionResponse.next( + {id: SESSION_1_ID, state: {}, events: []}); + + fixture = TestBed.createComponent(ChatComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + tick(); // Allow component to stabilize and load session + + // Manually call displayLandingPageContent to simulate the effect + (component as any).displayLandingPageContent(); + tick(); + + const messages = component.messages(); + expect(messages.length).toBe(1); + expect(messages[0].role).toBe('bot'); + expect(messages[0].text).toBe(markdownContent); + expect(messages[0].isLanding).toBeTrue(); + })); }); describe('Session Management', () => { diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index e04137b7..f1c86855 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -80,6 +80,8 @@ const ROOT_AGENT = 'root_agent'; export const INITIAL_USER_INPUT_QUERY_PARAM = 'q'; /** Query parameter for hiding the side panel. */ export const HIDE_SIDE_PANEL_QUERY_PARAM = 'hideSidePanel'; +/** Query parameter for landing page content. */ +export const LANDING_PAGE_CONTENT_QUERY_PARAM = 'landing'; /** A2A data part markers */ @@ -276,6 +278,7 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: { app: app[0] }, + queryParamsHandling: 'merge', }); } }), @@ -470,6 +473,26 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { }); } + private displayLandingPageContent() { + this.activatedRoute.queryParams.pipe(first()).subscribe(params => { + const landingContent = params[LANDING_PAGE_CONTENT_QUERY_PARAM]; + if (landingContent) { + try { + const decodedContent = decodeURIComponent(landingContent); + // Check if the landing message already exists + if (!this.messages().some(m => m.isLanding)) { + this.messages.update(messages => [ + { role: 'bot', text: decodedContent, isLanding: true }, + ...messages + ]); + } + } catch (e) { + console.error('Error decoding landing page content:', e); + } + } + }); + } + private hideSidePanelIfNeeded() { this.activatedRoute.queryParams .pipe( @@ -489,6 +512,7 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { this.artifacts = []; this.userInput = ''; this.longRunningEvents = []; + this.displayLandingPageContent(); } createSession() { @@ -1775,6 +1799,8 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { } this.loadTraceData(); }); + + this.displayLandingPageContent(); } protected updateWithSelectedEvalCase(evalCase: EvalCase) { From 71500af134aa3c8ec54081fef4257f27e6491545 Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Tue, 17 Mar 2026 08:16:33 -0700 Subject: [PATCH 034/323] ADK changes PiperOrigin-RevId: 885032253 --- package-lock.json | 5155 +++++++++++------ .../components/chat/chat.component.spec.ts | 9 +- src/app/components/chat/chat.component.ts | 11 +- .../json-editor/json-editor.component.ts | 4 +- .../message-feedback.component.ts | 3 +- .../delete-session-dialog.component.ts | 3 +- .../session-tab/session-tab.component.ts | 3 +- .../side-panel/side-panel.component.ts | 3 +- .../state-tab/state-tab.component.ts | 3 +- .../components/theme-toggle/theme-toggle.ts | 12 +- .../trace-event/trace-event.component.ts | 3 +- .../trace-tab/trace-tab.component.ts | 28 +- .../trace-tree/trace-tree.component.ts | 3 +- .../view-image-dialog.component.ts | 3 +- .../resizable-drawer.directive.spec.ts | 3 +- 15 files changed, 3569 insertions(+), 1677 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a9ab35a..2d78249e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,207 +65,232 @@ } }, "node_modules/@a2ui/lit": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@a2ui/lit/-/lit-0.8.1.tgz", - "integrity": "sha512-QeqobciZz4OGMSgc2WGLFVidyhy+K7Z2GDpiuHN9NN+QlYMXByZqlzMvYPJsXrqf1lpQcMFRHgmUn1mwPpq9ew==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@a2ui/lit/-/lit-0.8.3.tgz", + "integrity": "sha512-YXJksuier3nZLFtdrXfMNd7WdEOldQEfXGDMqoBTMVIM8xU22F/SvfNeDJoKQ4Wn7hXzRMi0vnwq0HI7Lzpyow==", + "license": "Apache-2.0", "dependencies": { + "@a2ui/web_core": "^0.8.0", "@lit-labs/signals": "^0.1.3", "@lit/context": "^1.1.4", "lit": "^3.3.1", - "markdown-it": "^14.1.0", "signal-utils": "^0.21.1" } }, + "node_modules/@a2ui/web_core": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@a2ui/web_core/-/web_core-0.8.0.tgz", + "integrity": "sha512-UG8IDsiLYuZjnEmqH7129EbN1Ds3DfC8FXPSI/E+0kcZ4VGxo//Kij6ZF2jBXBKyrHYPehoDtffFFIIFvgBp6g==", + "license": "Apache-2.0", + "dependencies": { + "zod": "^3.25.76", + "zod-to-json-schema": "^3.25.1" + } + }, "node_modules/@algolia/abtesting": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.2.tgz", - "integrity": "sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.14.1.tgz", + "integrity": "sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz", - "integrity": "sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.48.1.tgz", + "integrity": "sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.2.tgz", - "integrity": "sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.48.1.tgz", + "integrity": "sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.2.tgz", - "integrity": "sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.48.1.tgz", + "integrity": "sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.2.tgz", - "integrity": "sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.48.1.tgz", + "integrity": "sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.2.tgz", - "integrity": "sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.48.1.tgz", + "integrity": "sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz", - "integrity": "sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.48.1.tgz", + "integrity": "sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz", - "integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.48.1.tgz", + "integrity": "sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/ingestion": { - "version": "1.46.2", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.2.tgz", - "integrity": "sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.48.1.tgz", + "integrity": "sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.46.2", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.2.tgz", - "integrity": "sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==", + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.48.1.tgz", + "integrity": "sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.2.tgz", - "integrity": "sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.48.1.tgz", + "integrity": "sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz", - "integrity": "sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.48.1.tgz", + "integrity": "sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz", - "integrity": "sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.48.1.tgz", + "integrity": "sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz", - "integrity": "sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==", + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.48.1.tgz", + "integrity": "sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==", "dev": true, + "license": "MIT", "dependencies": { - "@algolia/client-common": "5.46.2" + "@algolia/client-common": "5.48.1" }, "engines": { "node": ">= 14.0.0" @@ -276,6 +301,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -285,12 +311,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2101.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.0.tgz", - "integrity": "sha512-vnNAzWXwSRGTHk2K7woIQsj7WDYZp69Z3DBdlxkK0H08ymkJ/ELbhN0/AnIJNNtYCqEb57AH7Ro98n422beDuw==", + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.2.tgz", + "integrity": "sha512-CDvFtXwyBtMRkTQnm+LfBNLL0yLV8ZGskrM1T6VkcGwXGFDott1FxUdj96ViodYsYL5fbJr0MNA6TlLcanV3kQ==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.0", + "@angular-devkit/core": "21.2.2", "rxjs": "7.8.2" }, "bin": { @@ -303,63 +330,64 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.1.0.tgz", - "integrity": "sha512-LOXMvIxOXpdYcudkGONSyXt4a0cErOxbrA50B5v6QnjcJ1H2XgzHPNP0Ni6LCaIiTfmxYpi1H/rpm5SAcKPWUg==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.2.tgz", + "integrity": "sha512-+KaqvraSGvhnSL3fUazHR8297k6lv/pzhV1p2x2mb6r5FyzD/HjYIP2fiIB2DII36YOVli2mgECoY3CmWj6n8Q==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2101.0", - "@angular-devkit/build-webpack": "0.2101.0", - "@angular-devkit/core": "21.1.0", - "@angular/build": "21.1.0", - "@babel/core": "7.28.5", - "@babel/generator": "7.28.5", + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/build-webpack": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular/build": "21.2.2", + "@babel/core": "7.29.0", + "@babel/generator": "7.29.1", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.28.0", - "@babel/plugin-transform-async-to-generator": "7.27.1", - "@babel/plugin-transform-runtime": "7.28.5", - "@babel/preset-env": "7.28.5", - "@babel/runtime": "7.28.4", + "@babel/plugin-transform-async-generator-functions": "7.29.0", + "@babel/plugin-transform-async-to-generator": "7.28.6", + "@babel/plugin-transform-runtime": "7.29.0", + "@babel/preset-env": "7.29.0", + "@babel/runtime": "7.28.6", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "21.1.0", + "@ngtools/webpack": "21.2.2", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.23", + "autoprefixer": "10.4.27", "babel-loader": "10.0.0", "browserslist": "^4.26.0", - "copy-webpack-plugin": "13.0.1", - "css-loader": "7.1.2", - "esbuild-wasm": "0.27.2", + "copy-webpack-plugin": "14.0.0", + "css-loader": "7.1.3", + "esbuild-wasm": "0.27.3", "http-proxy-middleware": "3.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", "less": "4.4.2", - "less-loader": "12.3.0", + "less-loader": "12.3.1", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", - "mini-css-extract-plugin": "2.9.4", + "mini-css-extract-plugin": "2.10.0", "open": "11.0.0", - "ora": "9.0.0", + "ora": "9.3.0", "picomatch": "4.0.3", "piscina": "5.1.4", "postcss": "8.5.6", "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", "rxjs": "7.8.2", - "sass": "1.97.1", - "sass-loader": "16.0.6", - "semver": "7.7.3", + "sass": "1.97.3", + "sass-loader": "16.0.7", + "semver": "7.7.4", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.44.1", + "terser": "5.46.0", "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.104.1", + "webpack": "5.105.2", "webpack-dev-middleware": "7.4.5", - "webpack-dev-server": "5.2.2", + "webpack-dev-server": "5.2.3", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, @@ -369,7 +397,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.27.2" + "esbuild": "0.27.3" }, "peerDependencies": { "@angular/compiler-cli": "^21.0.0", @@ -378,7 +406,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.1.0", + "@angular/ssr": "^21.2.2", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^30.2.0", @@ -435,12 +463,13 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2101.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2101.0.tgz", - "integrity": "sha512-UhR57f3IhTwFYqfNCm52czsRy6kjtgNLgVX52K+9p6fN66HmiHdxSambeh7hP7RqhwLvSzIoR7VSnNgkVCzhww==", + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.2.tgz", + "integrity": "sha512-5wQmVnpozBCeAMx1SKHSv2GGH3pVZ1WMwX4k0tnsgsHTt8ia24Zxa7P7pAsqkCbpHpa+7/nEjNuW9Teg/isumg==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.0", + "@angular-devkit/architect": "0.2102.2", "rxjs": "7.8.2" }, "engines": { @@ -454,12 +483,13 @@ } }, "node_modules/@angular-devkit/core": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.0.tgz", - "integrity": "sha512-dPfVy0CictDjWffRv4pGTPOFjdlJL3ZkGUqxzaosUjMbJW+Ai9cNn1VNr7zxYZ4kem3BxLBh1thzDsCPrkXlZA==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.2.tgz", + "integrity": "sha512-xUeKGe4BDQpkz0E6fnAPIJXE0y0nqtap0KhJIBhvN7xi3NenIzTmoi6T9Yv5OOBUdLZbOm4SOel8MhdXiIBpAQ==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "8.17.1", + "ajv": "8.18.0", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.3", @@ -481,15 +511,16 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.0.tgz", - "integrity": "sha512-sVgTntCZCOV7mOpHzj6V14KOAoy4B9Ur9yHNRFZVgL2yD77TYRrJ0qwq+l7Im9fSjMCar6csjboqCvyAEpfV1g==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.2.tgz", + "integrity": "sha512-CCeyQxGUq+oyGnHd7PfcYIVbj9pRnqjQq0rAojoAqs1BJdtInx9weLBCLy+AjM3NHePeZrnwm+wEVr8apED8kg==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.0", + "@angular-devkit/core": "21.2.2", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", - "ora": "9.0.0", + "ora": "9.3.0", "rxjs": "7.8.2" }, "engines": { @@ -499,9 +530,10 @@ } }, "node_modules/@angular/animations": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.1.0.tgz", - "integrity": "sha512-RTpRdWhwz1PsMJC8NuuYIKCgMFP9EyxOrSaI0bpCLIGtXCfmvvHiU2FkBksV86MqYOf+wurKATb71QcfGrV3Hg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.4.tgz", + "integrity": "sha512-hO1P7ks9n7lW3D31bzHohSuoAaj05xJUlK8rZgX8IkH5DLx4qhvfNh0t4bbLuBJLP2r1TaLsQ8KFcemCkFRO2w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -509,25 +541,26 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.0" + "@angular/core": "21.2.4" } }, "node_modules/@angular/build": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.1.0.tgz", - "integrity": "sha512-ftms4F/TlkRNhf/4ykFO12zTG0f9sIRZ4fGFnaOVGmnKYkPKZklWvMCPoaoIligHS2pqKye1a5JSiTgTeUDp9w==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.2.tgz", + "integrity": "sha512-Vq2eIneNxzhHm1MwEmRqEJDwHU9ODfSRDaMWwtysGMhpoMQmLdfTqkQDmkC2qVUr8mV8Z1i5I+oe5ZJaMr/PlQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2101.0", - "@babel/core": "7.28.5", + "@angular-devkit/architect": "0.2102.2", + "@babel/core": "7.29.0", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", "@inquirer/confirm": "5.1.21", - "@vitejs/plugin-basic-ssl": "2.1.0", - "beasties": "0.3.5", + "@vitejs/plugin-basic-ssl": "2.1.4", + "beasties": "0.4.1", "browserslist": "^4.26.0", - "esbuild": "0.27.2", + "esbuild": "0.27.3", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -537,14 +570,14 @@ "parse5-html-rewriting-stream": "8.0.0", "picomatch": "4.0.3", "piscina": "5.1.4", - "rolldown": "1.0.0-beta.58", - "sass": "1.97.1", - "semver": "7.7.3", + "rolldown": "1.0.0-rc.4", + "sass": "1.97.3", + "semver": "7.7.4", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.18.0", - "vite": "7.3.0", - "watchpack": "2.5.0" + "undici": "7.22.0", + "vite": "7.3.1", + "watchpack": "2.5.1" }, "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", @@ -552,7 +585,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "lmdb": "3.4.4" + "lmdb": "3.5.1" }, "peerDependencies": { "@angular/compiler": "^21.0.0", @@ -562,7 +595,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.1.0", + "@angular/ssr": "^21.2.2", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^21.0.0", @@ -612,9 +645,10 @@ } }, "node_modules/@angular/cdk": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.1.0.tgz", - "integrity": "sha512-zvV37HPKhtu0bOfuK0IhjKKq++Xb57Z11uZYZJI34BZnZ5y1TPhJpcmrHhjb2uKUNfDvePUqhlnIlKAXHSBIhw==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.2.tgz", + "integrity": "sha512-9AsZkwqy07No7+0qPydcJfXB6SpA9qLDBanoesNj5KsiZJ62PJH3oIjVyNeQEEe1HQWmSwBnhwN12OPLNMUlnw==", + "license": "MIT", "dependencies": { "parse5": "^8.0.0", "tslib": "^2.3.0" @@ -627,30 +661,30 @@ } }, "node_modules/@angular/cli": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.0.tgz", - "integrity": "sha512-kzk8du388x6EBybJeq5AB27qGm8oGC9HhvBJDbu8o+aBIOY+JwVON9m4SYLCzeT+EVK8sKA1NMVYi2CDerk6hA==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.2.tgz", + "integrity": "sha512-eZo8/qX+ZIpIWc0CN+cCX13Lbgi/031wAp8DRVhDDO6SMVtcr/ObOQ2S16+pQdOMXxiG3vby6IhzJuz9WACzMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.0", - "@angular-devkit/core": "21.1.0", - "@angular-devkit/schematics": "21.1.0", + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.25.2", - "@schematics/angular": "21.1.0", + "@modelcontextprotocol/sdk": "1.26.0", + "@schematics/angular": "21.2.2", "@yarnpkg/lockfile": "1.1.0", - "algoliasearch": "5.46.2", + "algoliasearch": "5.48.1", "ini": "6.0.0", "jsonc-parser": "3.3.1", "listr2": "9.0.5", "npm-package-arg": "13.0.2", - "pacote": "21.0.4", + "pacote": "21.3.1", "parse5-html-rewriting-stream": "8.0.0", - "resolve": "1.22.11", - "semver": "7.7.3", + "semver": "7.7.4", "yargs": "18.0.0", - "zod": "4.3.5" + "zod": "4.3.6" }, "bin": { "ng": "bin/ng.js" @@ -661,10 +695,21 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@angular/common": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.1.0.tgz", - "integrity": "sha512-hL3Chp51TU9iBcIfkNtoBS1wuseP1gsyDW2IFtK5HUpAVhbso9B3fdCaDTFkU98A2unluo2YgzI6D/6IS6N+1g==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.4.tgz", + "integrity": "sha512-NrP6qOuUpo3fqq14UJ1b2bIRtWsfvxh1qLqOyFV4gfBrHhXd0XffU1LUlUw1qp4w1uBSgPJ0/N5bSPUWrAguVg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -672,14 +717,15 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.0", + "@angular/core": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.0.tgz", - "integrity": "sha512-UprCiJwEU1Ilw1dVk+yLgNiHlbH81obAuh92lRKozUQRgtSCpOfCQUM79q5r+VdmCPxDshr79U2Ke0fRaiJfAQ==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.4.tgz", + "integrity": "sha512-9+ulVK3idIo/Tu4X2ic7/V0+Uj7pqrOAbOuIirYe6Ymm3AjexuFRiGBbfcH0VJhQ5cf8TvIJ1fuh+MI4JiRIxA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -688,12 +734,13 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.1.0.tgz", - "integrity": "sha512-//BTtxJovsF0LaOWQkOVxWX4EVyNJaPus+IlwWxzmdRHpojIl1Zdyy9BJMVJOifvj3XQ16sZwR1PDWDI5DIWrg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.4.tgz", + "integrity": "sha512-vGjd7DZo/Ox50pQCm5EycmBu91JclimPtZoyNXu/2hSxz3oAkzwiHCwlHwk2g58eheSSp+lYtYRLmHAqSVZLjg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "7.28.5", + "@babel/core": "7.29.0", "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^5.0.0", "convert-source-map": "^1.5.1", @@ -710,8 +757,8 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.0", - "typescript": ">=5.9 <6.0" + "@angular/compiler": "21.2.4", + "typescript": ">=5.9 <6.1" }, "peerDependenciesMeta": { "typescript": { @@ -720,9 +767,10 @@ } }, "node_modules/@angular/core": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.1.0.tgz", - "integrity": "sha512-QTl9s8GYNN0pt1k3GE6UVlfe6zWtfdykhfchinKq2YJywQ6LBM4UcZgoc56YkgscmyrRFYrr4JYUJjlzTF57+A==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.4.tgz", + "integrity": "sha512-2+gd67ZuXHpGOqeb2o7XZPueEWEP81eJza2tSHkT5QMV8lnYllDEmaNnkPxnIjSLGP1O3PmiXxo4z8ibHkLZwg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -730,7 +778,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.0", + "@angular/compiler": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0 || ~0.16.0" }, @@ -744,9 +792,10 @@ } }, "node_modules/@angular/forms": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.1.0.tgz", - "integrity": "sha512-1Qxsu2cQhraKe2dKzIVm7no1qWi76QsXVwY7+VGKRYG7p+fKaFmnr7oU5EbJL66TsFzCb8mDGxLGikS+YE+X/g==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.4.tgz", + "integrity": "sha512-1fOhctA9ADEBYjI3nPQUR5dHsK2+UWAjup37Ksldk/k0w8UpD5YsN7JVNvsDMZRFMucKYcGykPblU7pABtsqnQ==", + "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "tslib": "^2.3.0" @@ -755,21 +804,22 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.0", - "@angular/core": "21.1.0", - "@angular/platform-browser": "21.1.0", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-21.1.0.tgz", - "integrity": "sha512-VFWUQMU5Rm8w6uW5+FcMbsDvHMmhviVxPsKAFdinJ4ySbm5c6z9c64nhlYCNRswRgLB1VcoVxEWitP77LUagYg==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-21.2.2.tgz", + "integrity": "sha512-yY7kdmltNd28Tw8bHvoSFuoO8jMJSicSU9gB9r4jSLHPWAI9Y3V2qvLEimfPLRmzEaWwSoqKda95k/646lgg6A==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "21.1.0", + "@angular/cdk": "21.2.2", "@angular/common": "^21.0.0 || ^22.0.0", "@angular/core": "^21.0.0 || ^22.0.0", "@angular/forms": "^21.0.0 || ^22.0.0", @@ -778,9 +828,10 @@ } }, "node_modules/@angular/platform-browser": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.1.0.tgz", - "integrity": "sha512-Drkal25x+OuRQosAE/cL4uM5WDmgFehanCpsjQ1jGp6Rxoad6Q5Do1uQAE3qgMKHL1aqCPZ+uWzcVVG+Bn1ddg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.4.tgz", + "integrity": "sha512-1A9e/cQVu+3BkRCktLcO3RZGuw8NOTHw1frUUrpAz+iMyvIT4sDRFbL+U1g8qmOCZqRNC1Pi1HZfZ1kl6kvrcQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -788,9 +839,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "21.1.0", - "@angular/common": "21.1.0", - "@angular/core": "21.1.0" + "@angular/animations": "21.2.4", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4" }, "peerDependenciesMeta": { "@angular/animations": { @@ -799,9 +850,10 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.1.0.tgz", - "integrity": "sha512-NsjHxqgErrIIp96lWq5IqyuyJv5sb8L6pdINtY04kFh8bVWzS7+clr/P6emIi3N7d+pX+JGd4EOp8b8veQi8Lg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.4.tgz", + "integrity": "sha512-LRJLnGh4rdgD0+S5xuDd4YRm5bV8WP2e6F1Pe5rIr6N4V9ofgpB0/uOjYy9se99FJZjoyPnpxaKsp8+XA753Zg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -809,16 +861,17 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.0", - "@angular/compiler": "21.1.0", - "@angular/core": "21.1.0", - "@angular/platform-browser": "21.1.0" + "@angular/common": "21.2.4", + "@angular/compiler": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4" } }, "node_modules/@angular/router": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.1.0.tgz", - "integrity": "sha512-Sneu0ePuH+bf8ZslRX3iQk1iLziindLskdTeHV1ZCrXdT0ZScsZyI/gjxQKBtsIU9692D2DnFQRLGnzTBYVGVw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.4.tgz", + "integrity": "sha512-OjWze4XT8i2MThcBXMv7ru1k6/5L6QYZbcXuseqimFCHm2avEJ+mXPovY066fMBZJhqbXdjB82OhHAWkIHjglQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -826,9 +879,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.0", - "@angular/core": "21.1.0", - "@angular/platform-browser": "21.1.0", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -836,6 +889,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", "optional": true, "dependencies": { "package-manager-detector": "^1.3.0", @@ -846,10 +900,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -860,29 +915,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", - "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", - "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -902,25 +959,28 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -934,6 +994,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.27.3" }, @@ -946,6 +1007,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", @@ -962,6 +1024,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -971,6 +1034,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", @@ -992,6 +1056,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1001,6 +1066,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "regexpu-core": "^6.3.1", @@ -1018,21 +1084,23 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.7.tgz", + "integrity": "sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" + "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -1043,6 +1111,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1052,6 +1121,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" @@ -1065,6 +1135,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" @@ -1078,6 +1149,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", @@ -1095,6 +1167,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.27.1" }, @@ -1107,6 +1180,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1116,6 +1190,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", @@ -1133,6 +1208,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", @@ -1150,6 +1226,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -1163,6 +1240,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -1175,6 +1253,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1184,6 +1263,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1193,6 +1273,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1202,6 +1283,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", @@ -1216,6 +1298,7 @@ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" @@ -1225,12 +1308,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1244,6 +1328,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" @@ -1260,6 +1345,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1275,6 +1361,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1290,6 +1377,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", @@ -1307,6 +1395,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/traverse": "^7.28.6" @@ -1323,6 +1412,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -1335,6 +1425,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1350,6 +1441,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1365,6 +1457,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1381,6 +1474,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1392,14 +1486,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1409,13 +1504,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { @@ -1430,6 +1526,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1445,6 +1542,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1460,6 +1558,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" @@ -1476,6 +1575,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" @@ -1492,6 +1592,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-compilation-targets": "^7.28.6", @@ -1512,6 +1613,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/template": "^7.28.6" @@ -1528,6 +1630,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" @@ -1544,6 +1647,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" @@ -1560,6 +1664,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1571,10 +1676,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", - "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" @@ -1591,6 +1697,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1606,6 +1713,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5" @@ -1622,6 +1730,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1637,6 +1746,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1652,6 +1762,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1668,6 +1779,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1685,6 +1797,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1700,6 +1813,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1715,6 +1829,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1730,6 +1845,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1745,6 +1861,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1761,6 +1878,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" @@ -1773,15 +1891,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", - "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.5" + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1795,6 +1914,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1807,13 +1927,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1827,6 +1948,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1842,6 +1964,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1857,6 +1980,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1872,6 +1996,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", @@ -1891,6 +2016,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1" @@ -1907,6 +2033,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1922,6 +2049,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1938,6 +2066,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1953,6 +2082,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" @@ -1969,6 +2099,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.6", @@ -1986,6 +2117,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1997,10 +2129,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", - "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -2016,6 +2149,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" @@ -2032,6 +2166,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2043,13 +2178,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", - "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", @@ -2067,6 +2203,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2076,6 +2213,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2091,6 +2229,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -2107,6 +2246,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2122,6 +2262,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2137,6 +2278,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2152,6 +2294,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2167,6 +2310,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" @@ -2183,6 +2327,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2199,6 +2344,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" @@ -2211,80 +2357,81 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", - "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.5", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.4", - "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.28.5", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.4", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.4", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "engines": { @@ -2294,11 +2441,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.1.tgz", + "integrity": "sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.7", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2308,6 +2470,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2318,10 +2481,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -2331,6 +2495,7 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -2341,44 +2506,30 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", - "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/generator": "^7.28.6", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.6", + "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", - "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" @@ -2388,66 +2539,61 @@ } }, "node_modules/@braintree/sanitize-url": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", - "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT", "optional": true }, "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", + "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "license": "Apache-2.0", "optional": true, "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" + "@chevrotain/gast": "11.1.2", + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" } }, - "node_modules/@chevrotain/cst-dts-gen/node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "optional": true - }, "node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", + "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "license": "Apache-2.0", "optional": true, "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" } }, - "node_modules/@chevrotain/gast/node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "optional": true - }, "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", + "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", + "license": "Apache-2.0", "optional": true }, "node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0", "optional": true }, "node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", + "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "license": "Apache-2.0", "optional": true }, "node_modules/@codemirror/autocomplete": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.0.tgz", - "integrity": "sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz", + "integrity": "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -2456,12 +2602,13 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.1.tgz", - "integrity": "sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", + "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } @@ -2470,6 +2617,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.2.tgz", "integrity": "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==", + "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/json": "^1.0.0" @@ -2479,6 +2627,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.2.1.tgz", "integrity": "sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.3.2", "@codemirror/language": "^6.8.0", @@ -2488,9 +2637,10 @@ } }, "node_modules/@codemirror/language": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.1.tgz", - "integrity": "sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.2.tgz", + "integrity": "sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", @@ -2501,9 +2651,10 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.2.tgz", - "integrity": "sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ==", + "version": "6.9.5", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.5.tgz", + "integrity": "sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA==", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", @@ -2514,6 +2665,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.6.0.tgz", "integrity": "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==", + "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.37.0", @@ -2521,19 +2673,21 @@ } }, "node_modules/@codemirror/state": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.4.tgz", - "integrity": "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", + "license": "MIT", "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "node_modules/@codemirror/view": { - "version": "6.39.11", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.39.11.tgz", - "integrity": "sha512-bWdeR8gWM87l4DB/kYSF9A+dVackzDb/V56Tq7QVrQ7rn86W0rgZFtlL3g3pem6AeGcb9NQNoy3ao4WpW4h5tQ==", + "version": "6.40.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.40.0.tgz", + "integrity": "sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg==", + "license": "MIT", "dependencies": { - "@codemirror/state": "^6.5.0", + "@codemirror/state": "^6.6.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" @@ -2544,6 +2698,7 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } @@ -2553,49 +2708,54 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.17.0" } }, "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.1.0", + "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -2605,13 +2765,14 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2621,13 +2782,14 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2637,13 +2799,14 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2653,13 +2816,14 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2669,13 +2833,14 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2685,13 +2850,14 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2701,13 +2867,14 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2717,13 +2884,14 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2733,13 +2901,14 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2749,13 +2918,14 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2765,13 +2935,14 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2781,13 +2952,14 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2797,13 +2969,14 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2813,13 +2986,14 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2829,13 +3003,14 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2845,13 +3020,14 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2861,13 +3037,14 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2877,13 +3054,14 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2893,13 +3071,14 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2909,13 +3088,14 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2925,13 +3105,14 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" @@ -2941,13 +3122,14 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2957,13 +3139,14 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2973,13 +3156,14 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2989,13 +3173,14 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3005,40 +3190,65 @@ } }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.1.0.tgz", - "integrity": "sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.2.0.tgz", + "integrity": "sha512-IpR0bER9FY25p+e7BmFH25MZKEwFHTfRAfhOyJubgiDnoJNsSvJ7nigLraHtp4VOG/cy8D7uiV0dLkHOne5Fhw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-7.1.0.tgz", - "integrity": "sha512-0e2fdEyB4AR+e6kU4yxwA/MonnYcw/CsMEP9lH82ORFi9svA6/RhDyhxIv5mlJaldmaHLLYVTb+3iEr+PDSZuQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-7.2.0.tgz", + "integrity": "sha512-iycmlN51EULlQ4D/UU9WZnHiN0CvjJ2TuuCrAh+1MVdzD+4ViKYH2deNAll4XAAYlZa8WAefHR5taSK8hYmSMw==", + "license": "(CC-BY-4.0 AND MIT)", "dependencies": { - "@fortawesome/fontawesome-common-types": "7.1.0" + "@fortawesome/fontawesome-common-types": "7.2.0" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.1.0.tgz", - "integrity": "sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.2.0.tgz", + "integrity": "sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w==", + "license": "(CC-BY-4.0 AND MIT)", "dependencies": { - "@fortawesome/fontawesome-common-types": "7.1.0" + "@fortawesome/fontawesome-common-types": "7.2.0" }, "engines": { "node": ">=6" } }, + "node_modules/@gar/promise-retry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.2.tgz", + "integrity": "sha512-Lm/ZLhDZcBECta3TmCQSngiQykFdfw+QtI1/GYMsZd4l3nG+P8WLB16XuS7WaBGLQ+9E+cOcWQsth9cayuGt8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "retry": "^0.13.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@harperfast/extended-iterable": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@harperfast/extended-iterable/-/extended-iterable-1.0.3.tgz", + "integrity": "sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, "node_modules/@hono/node-server": { - "version": "1.19.9", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", - "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", + "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.14.1" }, @@ -3050,12 +3260,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT", "optional": true }, "node_modules/@iconify/utils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", "optional": true, "dependencies": { "@antfu/install-pkg": "^1.1.0", @@ -3068,6 +3280,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -3077,6 +3290,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -3101,6 +3315,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -3122,6 +3337,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", @@ -3149,6 +3365,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", @@ -3171,6 +3388,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", @@ -3193,6 +3411,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" @@ -3214,6 +3433,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -3223,6 +3443,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -3244,6 +3465,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -3265,6 +3487,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -3287,6 +3510,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", @@ -3316,6 +3540,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", @@ -3338,6 +3563,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", @@ -3361,6 +3587,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -3385,6 +3612,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3397,32 +3625,12 @@ } } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.4" }, @@ -3435,6 +3643,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3443,6 +3652,7 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -3452,6 +3662,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -3461,6 +3672,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3470,6 +3682,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -3478,12 +3691,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3493,6 +3708,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", + "license": "MIT", "engines": { "node": ">= 10.16.0" }, @@ -3504,6 +3720,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", + "license": "MIT", "engines": { "node": ">= 10.16.0" }, @@ -3516,6 +3733,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -3528,10 +3746,11 @@ } }, "node_modules/@jsonjoy.com/buffers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", - "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -3548,6 +3767,283 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.11.tgz", + "integrity": "sha512-wThHjzUp01ImIjfCwhs+UnFkeGPFAymwLEkOtenHewaKe2pTP12p6r1UuwikA9NEvNf9Vlck92r8fb8n/MWM5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.11.tgz", + "integrity": "sha512-ZYlF3XbMayyp97xEN8ZvYutU99PCHjM64mMZvnCseXkCJXJDVLAwlF8Q/7q/xiWQRsv3pQBj1WXHd9eEyYcaCQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.11.tgz", + "integrity": "sha512-D65YrnP6wRuZyEWoSFnBJSr5zARVpVBGctnhie4rCsMuGXNzX7IHKaOt85/Aj7SSoG1N2+/xlNjWmkLvZ2H3Tg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.11.tgz", + "integrity": "sha512-CNmt3a0zMCIhniFLXtzPWuUxXFU+U+2VyQiIrgt/rRVeEJNrMQUABaRbVxR0Ouw1LyR9RjaEkPM6nYpED+y43A==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.11.tgz", + "integrity": "sha512-5OzGdvJDgZVo+xXWEYo72u81zpOWlxlbG4d4nL+hSiW+LKlua/dldNgPrpWxtvhgyntmdFQad2UTxFyGjJAGhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.11.tgz", + "integrity": "sha512-JADOZFDA3wRfsuxkT0+MYc4F9hJO2PYDaY66kRTG6NqGX3+bqmKu66YFYAbII/tEmQWPZeHoClUB23rtQM9UPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.11" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.11.tgz", + "integrity": "sha512-rnaKRgCRIn8JGTjxhS0JPE38YM3Pj/H7SW4/tglhIPbfKEkky7dpPayNKV2qy25SZSL15oFVgH/62dMZ/z7cyA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.56.11", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.11.tgz", + "integrity": "sha512-IIldPX+cIRQuUol9fQzSS3hqyECxVpYMJQMqdU3dCKZFRzEl1rkIkw4P6y7Oh493sI7YdxZlKr/yWdzEWZ1wGQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, "engines": { "node": ">=10.0" }, @@ -3564,6 +4060,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/base64": "^1.1.2", "@jsonjoy.com/buffers": "^1.2.0", @@ -3585,11 +4082,29 @@ "tslib": "2" } }, + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@jsonjoy.com/json-pointer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/codegen": "^1.0.0", "@jsonjoy.com/util": "^1.9.0" @@ -3610,6 +4125,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/buffers": "^1.0.0", "@jsonjoy.com/codegen": "^1.0.0" @@ -3625,10 +4141,28 @@ "tslib": "2" } }, + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@jsonquerylang/jsonquery": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@jsonquerylang/jsonquery/-/jsonquery-5.1.1.tgz", "integrity": "sha512-Fj4SoA6Ku09EF+t7OEI8QLipA2A+fJCdEOwnDWG84o5jXMRjkcN5NCMH7kFZb5fP62xz914XV5LBOiDdiUXObg==", + "license": "ISC", "bin": { "jsonquery": "bin/cli.js" } @@ -3637,17 +4171,20 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@lezer/common": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.0.tgz", - "integrity": "sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.1.tgz", + "integrity": "sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==", + "license": "MIT" }, "node_modules/@lezer/highlight": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.3.0" } @@ -3656,6 +4193,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz", "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", @@ -3663,9 +4201,10 @@ } }, "node_modules/@lezer/lr": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.7.tgz", - "integrity": "sha512-wNIFWdSUfX9Jc6ePMzxSPVgTVB4EOfDIwLQLWASyiUdHKaMsiilj9bYiGkGQCKVodd0x6bgQCV207PILGFCF9Q==", + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.8.tgz", + "integrity": "sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0" } @@ -3674,6 +4213,7 @@ "version": "1.1.18", "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.18.tgz", "integrity": "sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg==", + "license": "MIT", "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", @@ -3685,6 +4225,7 @@ "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.5.tgz", "integrity": "sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/type": "^3.0.8" }, @@ -3700,6 +4241,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@lit-labs/signals/-/signals-0.1.3.tgz", "integrity": "sha512-P0yWgH5blwVyEwBg+WFspLzeu1i0ypJP1QB0l1Omr9qZLIPsUu0p4Fy2jshOg7oQyha5n163K3GJGeUhQQ682Q==", + "license": "BSD-3-Clause", "dependencies": { "lit": "^2.0.0 || ^3.0.0", "signal-polyfill": "^0.2.0" @@ -3708,12 +4250,14 @@ "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", - "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==" + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", + "license": "BSD-3-Clause" }, "node_modules/@lit/context": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@lit/context/-/context-1.1.6.tgz", "integrity": "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^1.6.2 || ^2.1.0" } @@ -3722,96 +4266,104 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.5.0" } }, "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.4.tgz", - "integrity": "sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.5.1.tgz", + "integrity": "sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.4.tgz", - "integrity": "sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.5.1.tgz", + "integrity": "sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.4.tgz", - "integrity": "sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.5.1.tgz", + "integrity": "sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.4.tgz", - "integrity": "sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.5.1.tgz", + "integrity": "sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.4.tgz", - "integrity": "sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.5.1.tgz", + "integrity": "sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@lmdb/lmdb-win32-arm64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.4.tgz", - "integrity": "sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.5.1.tgz", + "integrity": "sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.4.tgz", - "integrity": "sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.5.1.tgz", + "integrity": "sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3820,24 +4372,27 @@ "node_modules/@marijn/find-cluster-break": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", - "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==" + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "license": "MIT" }, "node_modules/@mermaid-js/parser": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", - "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.1.tgz", + "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==", + "license": "MIT", "optional": true, "dependencies": { - "langium": "3.3.1" + "langium": "^4.0.0" } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.2.tgz", - "integrity": "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "dev": true, + "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.7", + "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", @@ -3845,14 +4400,15 @@ "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "jose": "^6.1.1", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.0" + "zod-to-json-schema": "^3.25.1" }, "engines": { "node": ">=18" @@ -3878,6 +4434,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3891,6 +4448,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3904,6 +4462,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3917,6 +4476,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3930,6 +4490,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3943,6 +4504,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3953,6 +4515,7 @@ "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">= 10" @@ -3989,6 +4552,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -4005,6 +4569,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -4021,6 +4586,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4037,6 +4603,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4053,6 +4620,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -4069,6 +4637,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4085,6 +4654,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4101,6 +4671,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4117,6 +4688,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4133,6 +4705,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4149,6 +4722,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4165,6 +4739,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4181,6 +4756,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4197,6 +4773,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" @@ -4213,6 +4790,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4229,6 +4807,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4245,6 +4824,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4258,6 +4838,7 @@ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "^1.7.1", @@ -4270,10 +4851,11 @@ } }, "node_modules/@ngtools/webpack": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.1.0.tgz", - "integrity": "sha512-u5a/xYQw8jka/YLwUg+AU1jeh0vJ/InPSt4ggNYSBFHqurtj9FgZPHbicamwb0uZ3viabF25UiHGui0lVgPosw==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.2.tgz", + "integrity": "sha512-EnDlYg0KWqtvJ2FBIFR03nBHRhs8JFtb4yrdnL5zt7OP6mlRpCcFJ+kXwm6v9OVTEIsKKRdPRe0qpSYOAOdo6w==", "dev": true, + "license": "MIT", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -4285,11 +4867,25 @@ "webpack": "^5.54.0" } }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@npmcli/agent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", "dev": true, + "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -4302,10 +4898,11 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -4315,6 +4912,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -4323,17 +4921,18 @@ } }, "node_modules/@npmcli/git": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", - "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz", + "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==", "dev": true, + "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/promise-spawn": "^9.0.0", "ini": "^6.0.0", "lru-cache": "^11.2.1", "npm-pick-manifest": "^11.0.1", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^6.0.0" }, @@ -4342,30 +4941,33 @@ } }, "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -4379,6 +4981,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^5.0.0", "npm-normalize-package-bin": "^5.0.0" @@ -4395,15 +4998,17 @@ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/package-json": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz", - "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", + "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^7.0.0", "glob": "^13.0.0", @@ -4411,39 +5016,64 @@ "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "spdx-expression-parse": "^4.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/@npmcli/package-json/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@npmcli/package-json/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4454,6 +5084,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", "dev": true, + "license": "ISC", "dependencies": { "which": "^6.0.0" }, @@ -4462,21 +5093,23 @@ } }, "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -4490,66 +5123,45 @@ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/run-script": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz", - "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz", + "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "node-gyp": "^12.1.0", - "proc-log": "^6.0.0", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "proc-log": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@oxc-project/types": { - "version": "0.106.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.106.0.tgz", - "integrity": "sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==", + "version": "0.113.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz", + "integrity": "sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/Boshen" } }, "node_modules/@parcel/watcher": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.4.tgz", - "integrity": "sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { "detect-libc": "^2.0.3", @@ -4565,29 +5177,30 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.4", - "@parcel/watcher-darwin-arm64": "2.5.4", - "@parcel/watcher-darwin-x64": "2.5.4", - "@parcel/watcher-freebsd-x64": "2.5.4", - "@parcel/watcher-linux-arm-glibc": "2.5.4", - "@parcel/watcher-linux-arm-musl": "2.5.4", - "@parcel/watcher-linux-arm64-glibc": "2.5.4", - "@parcel/watcher-linux-arm64-musl": "2.5.4", - "@parcel/watcher-linux-x64-glibc": "2.5.4", - "@parcel/watcher-linux-x64-musl": "2.5.4", - "@parcel/watcher-win32-arm64": "2.5.4", - "@parcel/watcher-win32-ia32": "2.5.4", - "@parcel/watcher-win32-x64": "2.5.4" + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.4.tgz", - "integrity": "sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -4601,13 +5214,14 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.4.tgz", - "integrity": "sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4621,13 +5235,14 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.4.tgz", - "integrity": "sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4641,13 +5256,14 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.4.tgz", - "integrity": "sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -4661,13 +5277,14 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.4.tgz", - "integrity": "sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4681,13 +5298,14 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.4.tgz", - "integrity": "sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4701,13 +5319,14 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.4.tgz", - "integrity": "sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4721,13 +5340,14 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.4.tgz", - "integrity": "sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4741,13 +5361,14 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.4.tgz", - "integrity": "sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4761,13 +5382,14 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.4.tgz", - "integrity": "sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4781,13 +5403,14 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.4.tgz", - "integrity": "sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4801,13 +5424,14 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.4.tgz", - "integrity": "sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4821,13 +5445,14 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.4.tgz", - "integrity": "sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4845,12 +5470,173 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, - "optional": true + "license": "MIT", + "optional": true + }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", + "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", + "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", + "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", + "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-rsa": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", + "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", + "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pfx": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", + "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", + "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", + "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } }, "node_modules/@replit/codemirror-indentation-markers": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/@replit/codemirror-indentation-markers/-/codemirror-indentation-markers-6.5.3.tgz", "integrity": "sha512-hL5Sfvw3C1vgg7GolLe/uxX5T3tmgOA3ZzqlMv47zjU1ON51pzNWiVbS22oh6crYhtVhv8b3gdXwoYp++2ilHw==", + "license": "MIT", "peerDependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -4858,13 +5644,14 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.58.tgz", - "integrity": "sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -4874,13 +5661,14 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.58.tgz", - "integrity": "sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4890,13 +5678,14 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.58.tgz", - "integrity": "sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.4.tgz", + "integrity": "sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4906,13 +5695,14 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.58.tgz", - "integrity": "sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.4.tgz", + "integrity": "sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -4922,13 +5712,14 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.58.tgz", - "integrity": "sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.4.tgz", + "integrity": "sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4938,13 +5729,14 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.58.tgz", - "integrity": "sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.4.tgz", + "integrity": "sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4954,13 +5746,14 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.58.tgz", - "integrity": "sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.4.tgz", + "integrity": "sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4970,13 +5763,14 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.58.tgz", - "integrity": "sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.4.tgz", + "integrity": "sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4986,13 +5780,14 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.58.tgz", - "integrity": "sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.4.tgz", + "integrity": "sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -5002,13 +5797,14 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.58.tgz", - "integrity": "sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" @@ -5018,13 +5814,14 @@ } }, "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.58.tgz", - "integrity": "sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.4.tgz", + "integrity": "sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==", "cpu": [ "wasm32" ], "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" @@ -5034,13 +5831,14 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.58.tgz", - "integrity": "sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.4.tgz", + "integrity": "sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -5050,13 +5848,14 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.58.tgz", - "integrity": "sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.4.tgz", + "integrity": "sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -5066,344 +5865,371 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.58.tgz", - "integrity": "sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==", - "dev": true + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.4.tgz", + "integrity": "sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==", + "dev": true, + "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz", - "integrity": "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz", - "integrity": "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz", - "integrity": "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz", - "integrity": "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz", - "integrity": "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz", - "integrity": "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz", - "integrity": "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz", - "integrity": "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz", - "integrity": "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz", - "integrity": "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz", - "integrity": "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz", - "integrity": "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz", - "integrity": "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz", - "integrity": "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz", - "integrity": "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz", - "integrity": "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz", - "integrity": "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz", - "integrity": "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz", - "integrity": "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz", - "integrity": "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz", - "integrity": "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz", - "integrity": "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz", - "integrity": "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz", - "integrity": "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.1.tgz", - "integrity": "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@schematics/angular": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.0.tgz", - "integrity": "sha512-gXf3gO5SeU+tiPHxXeQvdbua4C4/V+KH43JH2PYPxaNCD2HGo1uV0pfyNSNgcVF21voKlbAQ13YRrNDh7z5Kig==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.2.tgz", + "integrity": "sha512-Ywa6HDtX7TRBQZTVMMnxX3Mk7yVnG8KtSFaXWrkx779+q8tqYdBwNwAqbNd4Zatr1GccKaz9xcptHJta5+DTxw==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.0", - "@angular-devkit/schematics": "21.1.0", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "jsonc-parser": "3.3.1" }, "engines": { @@ -5417,6 +6243,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.5.0" }, @@ -5429,6 +6256,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -5438,6 +6266,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -5447,6 +6276,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", @@ -5464,6 +6294,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.5.0", "tuf-js": "^4.1.0" @@ -5477,6 +6308,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", @@ -5490,22 +6322,26 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sphinxxxx/color-conversion": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==", + "license": "ISC" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" }, "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", - "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz", + "integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==", + "license": "MIT", "peerDependencies": { "acorn": "^8.9.0" } @@ -5515,6 +6351,7 @@ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, + "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -5524,6 +6361,7 @@ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^10.1.1" @@ -5532,16 +6370,40 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/@tufjs/models/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5552,6 +6414,7 @@ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" @@ -5562,6 +6425,7 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5572,6 +6436,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5581,6 +6446,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5590,6 +6456,7 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -5600,6 +6467,7 @@ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5608,6 +6476,7 @@ "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-array": "*", @@ -5646,12 +6515,14 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-axis": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-selection": "*" @@ -5661,6 +6532,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-selection": "*" @@ -5670,17 +6542,20 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-array": "*", @@ -5691,18 +6566,21 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-dispatch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-drag": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -5711,18 +6589,21 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-dsv": "*" @@ -5732,18 +6613,21 @@ "version": "3.0.10", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-format": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", "optional": true, "dependencies": { "@types/geojson": "*" @@ -5753,12 +6637,14 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", "dependencies": { "@types/d3-color": "*" } @@ -5767,30 +6653,35 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-polygon": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-random": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-scale": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-time": "*" @@ -5800,17 +6691,20 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==" + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" }, "node_modules/@types/d3-shape": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-path": "*" @@ -5820,24 +6714,28 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT", "optional": true }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", "optional": true, "dependencies": { "@types/d3-selection": "*" @@ -5847,6 +6745,7 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" @@ -5857,6 +6756,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5867,6 +6767,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -5875,13 +6776,15 @@ "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.25", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -5894,6 +6797,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -5905,19 +6809,22 @@ "version": "7946.0.16", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT", "optional": true }, "node_modules/@types/http-errors": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.17", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5926,61 +6833,60 @@ "version": "5.1.15", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.15.tgz", "integrity": "sha512-ZAC8KjmV2MJxbNTrwXFN+HKeajpXQZp6KpPiR6Aa4XvaEnjP6qh23lL/Rqb7AYzlp3h/rcwDrQ7Gg7q28cQTQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", "dev": true, - "dependencies": { - "undici-types": "~7.16.0" - } + "license": "MIT" }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "undici-types": "~7.18.0" } }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5990,6 +6896,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } @@ -5999,6 +6906,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -6010,6 +6918,7 @@ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -6020,6 +6929,7 @@ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6027,22 +6937,49 @@ "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@typescript-eslint/types": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.0.tgz", + "integrity": "sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optional": true, + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, "node_modules/@vitejs/plugin-basic-ssl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz", - "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.4.tgz", + "integrity": "sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, @@ -6051,15 +6988,17 @@ } }, "node_modules/@viz-js/viz": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@viz-js/viz/-/viz-3.24.0.tgz", - "integrity": "sha512-sTRz2cFN6PwICVC7GVlF2aYNAZ/LwF7Y1mp3B+8LXQ7otyHrzQYSzNBwJ4lctL/aS3x97ppw59z6zIW+wPs6bQ==" + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@viz-js/viz/-/viz-3.25.0.tgz", + "integrity": "sha512-dM7zAYMdf7mcRz5Kdb+YJb6+qv5Rjk0rPZ18gROdpMrP/3S7RFOp8uxybeiz5RypHrE1zo1vccA8Twh4mIcLZw==", + "license": "MIT" }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -6069,25 +7008,29 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -6098,13 +7041,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6117,6 +7062,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -6126,6 +7072,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -6134,13 +7081,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6157,6 +7106,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -6170,6 +7120,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -6182,6 +7133,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -6196,6 +7148,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -6205,25 +7158,29 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/abbrev": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -6233,6 +7190,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" @@ -6242,9 +7200,10 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -6257,6 +7216,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" }, @@ -6269,6 +7229,7 @@ "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -6282,6 +7243,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -6296,14 +7258,16 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -6320,6 +7284,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -6337,6 +7302,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -6345,25 +7311,26 @@ } }, "node_modules/algoliasearch": { - "version": "5.46.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz", - "integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==", - "dev": true, - "dependencies": { - "@algolia/abtesting": "1.12.2", - "@algolia/client-abtesting": "5.46.2", - "@algolia/client-analytics": "5.46.2", - "@algolia/client-common": "5.46.2", - "@algolia/client-insights": "5.46.2", - "@algolia/client-personalization": "5.46.2", - "@algolia/client-query-suggestions": "5.46.2", - "@algolia/client-search": "5.46.2", - "@algolia/ingestion": "1.46.2", - "@algolia/monitoring": "1.46.2", - "@algolia/recommend": "5.46.2", - "@algolia/requester-browser-xhr": "5.46.2", - "@algolia/requester-fetch": "5.46.2", - "@algolia/requester-node-http": "5.46.2" + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.48.1.tgz", + "integrity": "sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.14.1", + "@algolia/client-abtesting": "5.48.1", + "@algolia/client-analytics": "5.48.1", + "@algolia/client-common": "5.48.1", + "@algolia/client-insights": "5.48.1", + "@algolia/client-personalization": "5.48.1", + "@algolia/client-query-suggestions": "5.48.1", + "@algolia/client-search": "5.48.1", + "@algolia/ingestion": "1.48.1", + "@algolia/monitoring": "1.48.1", + "@algolia/recommend": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { "node": ">= 14.0.0" @@ -6374,15 +7341,17 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", - "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, + "license": "MIT", "dependencies": { "environment": "^1.0.0" }, @@ -6401,6 +7370,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -6410,6 +7380,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6422,6 +7393,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6434,6 +7406,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6447,6 +7420,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6457,12 +7431,14 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -6471,12 +7447,28 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } }, "node_modules/autoprefixer": { - "version": "10.4.23", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", - "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", "dev": true, "funding": [ { @@ -6492,9 +7484,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001760", + "caniuse-lite": "^1.0.30001774", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -6513,6 +7506,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -6522,6 +7516,7 @@ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^5.0.0" }, @@ -6534,13 +7529,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.16.tgz", + "integrity": "sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.7", "semver": "^6.3.1" }, "peerDependencies": { @@ -6552,6 +7548,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -6561,6 +7558,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5", "core-js-compat": "^3.43.0" @@ -6570,12 +7568,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.7.tgz", + "integrity": "sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" + "@babel/helper-define-polyfill-provider": "^0.6.7" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6585,37 +7584,45 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", - "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", + "version": "2.10.8", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz", + "integrity": "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==", "dev": true, + "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/beasties": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz", - "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.4.1.tgz", + "integrity": "sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "css-select": "^6.0.0", "css-what": "^7.0.0", @@ -6624,10 +7631,11 @@ "htmlparser2": "^10.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.49", - "postcss-media-query-parser": "^0.2.3" + "postcss-media-query-parser": "^0.2.3", + "postcss-safe-parser": "^7.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/big.js": { @@ -6635,6 +7643,7 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -6644,6 +7653,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6656,6 +7666,7 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", @@ -6680,6 +7691,7 @@ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -6689,13 +7701,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6706,6 +7720,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -6732,6 +7747,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6750,13 +7766,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, + "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" }, @@ -6772,15 +7790,27 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/cacache": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", @@ -6798,42 +7828,68 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/cacache/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/cacache/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/cacache/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6844,6 +7900,7 @@ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -6857,6 +7914,7 @@ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -6873,14 +7931,15 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001764", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", - "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==", + "version": "1.0.30001779", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001779.tgz", + "integrity": "sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==", "dev": true, "funding": [ { @@ -6895,13 +7954,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -6913,26 +7974,29 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", + "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "license": "Apache-2.0", "optional": true, "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" + "@chevrotain/cst-dts-gen": "11.1.2", + "@chevrotain/gast": "11.1.2", + "@chevrotain/regexp-to-ast": "11.1.2", + "@chevrotain/types": "11.1.2", + "@chevrotain/utils": "11.1.2", + "lodash-es": "4.17.23" } }, "node_modules/chevrotain-allstar": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", "optional": true, "dependencies": { "lodash-es": "^4.17.21" @@ -6941,17 +8005,12 @@ "chevrotain": "^11.0.0" } }, - "node_modules/chevrotain/node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "optional": true - }, "node_modules/chokidar": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "dev": true, + "license": "MIT", "dependencies": { "readdirp": "^5.0.0" }, @@ -6967,6 +8026,7 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } @@ -6976,6 +8036,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -6985,6 +8046,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^5.0.0" }, @@ -7000,6 +8062,7 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.20" }, @@ -7008,13 +8071,14 @@ } }, "node_modules/cli-truncate": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", - "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", "dev": true, + "license": "MIT", "dependencies": { - "slice-ansi": "^7.1.0", - "string-width": "^8.0.0" + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" }, "engines": { "node": ">=20" @@ -7028,6 +8092,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -7036,6 +8101,7 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", "optional": true, "dependencies": { "good-listener": "^1.2.2", @@ -7048,6 +8114,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", @@ -7062,6 +8129,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -7079,6 +8147,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -7096,6 +8165,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -7110,6 +8180,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -7121,6 +8192,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -7129,6 +8201,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", + "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -7143,6 +8216,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/codemirror-wrapped-line-indent/-/codemirror-wrapped-line-indent-1.0.9.tgz", "integrity": "sha512-oc976hHLt35u6Ojbhub+IWOxEpapZSqYieLEdGhsgFZ4rtYQtdb5KjxzgjCCyVe3t0yk+a6hmaIOEsjU/tZRxQ==", + "license": "MIT", "peerDependencies": { "@codemirror/language": "^6.9.0", "@codemirror/state": "^6.2.1", @@ -7154,6 +8228,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7165,23 +8240,27 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colornames": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha512-/pyV40IrsdulWv+wFPmERh9k/mjsPZ64yUMDmWrtj/k1nmgrzzIENWKdaVKyBbvFdQWqkcaRxr+polCo3VMe7A==" + "integrity": "sha512-/pyV40IrsdulWv+wFPmERh9k/mjsPZ64yUMDmWrtj/k1nmgrzzIENWKdaVKyBbvFdQWqkcaRxr+polCo3VMe7A==", + "license": "MIT" }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -7192,6 +8271,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -7204,6 +8284,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -7222,6 +8303,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7230,13 +8312,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compression/node_modules/negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7245,12 +8329,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/confbox": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT", "optional": true }, "node_modules/connect": { @@ -7258,6 +8344,7 @@ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -7273,6 +8360,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -7282,6 +8370,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7291,6 +8380,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7300,6 +8390,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7317,13 +8408,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/connect/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -7336,6 +8429,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7345,6 +8439,7 @@ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7358,6 +8453,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7366,13 +8462,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7382,6 +8480,7 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.6.0" } @@ -7391,6 +8490,7 @@ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -7399,19 +8499,20 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", - "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", "dev": true, + "license": "MIT", "dependencies": { "glob-parent": "^6.0.1", "normalize-path": "^3.0.0", "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2", + "serialize-javascript": "^7.0.3", "tinyglobby": "^0.2.12" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 20.9.0" }, "funding": { "type": "opencollective", @@ -7422,12 +8523,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", - "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.28.0" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -7438,35 +8540,43 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cose-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", "optional": true, "dependencies": { "layout-base": "^1.0.0" } }, "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -7491,13 +8601,15 @@ "node_modules/crelt": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7508,19 +8620,20 @@ } }, "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz", + "integrity": "sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.33", + "postcss": "^8.4.40", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "semver": "^7.6.3" }, "engines": { "node": ">= 18.12.0" @@ -7547,6 +8660,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^7.0.0", @@ -7563,6 +8677,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -7575,6 +8690,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -7586,12 +8702,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cytoscape": { "version": "3.33.1", "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", "optional": true, "engines": { "node": ">=0.10" @@ -7601,6 +8719,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "optional": true, "dependencies": { "cose-base": "^1.0.0" @@ -7613,6 +8732,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", "optional": true, "dependencies": { "cose-base": "^2.2.0" @@ -7625,6 +8745,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", "optional": true, "dependencies": { "layout-base": "^2.0.0" @@ -7634,12 +8755,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT", "optional": true }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "optional": true, "dependencies": { "d3-array": "3", @@ -7681,6 +8804,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "optional": true, "dependencies": { "internmap": "1 - 2" @@ -7693,6 +8817,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7702,6 +8827,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "optional": true, "dependencies": { "d3-dispatch": "1 - 3", @@ -7718,6 +8844,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "optional": true, "dependencies": { "d3-path": "1 - 3" @@ -7730,6 +8857,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7738,6 +8866,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "optional": true, "dependencies": { "d3-array": "^3.2.0" @@ -7750,6 +8879,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "optional": true, "dependencies": { "delaunator": "5" @@ -7762,6 +8892,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7770,6 +8901,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -7782,6 +8914,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "optional": true, "dependencies": { "commander": "7", @@ -7807,6 +8940,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "optional": true, "engines": { "node": ">= 10" @@ -7816,6 +8950,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -7828,6 +8963,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -7836,6 +8972,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "optional": true, "dependencies": { "d3-dsv": "1 - 3" @@ -7848,6 +8985,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "optional": true, "dependencies": { "d3-dispatch": "1 - 3", @@ -7862,6 +9000,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7871,6 +9010,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "optional": true, "dependencies": { "d3-array": "2.5.0 - 3" @@ -7883,6 +9023,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7892,6 +9033,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -7903,6 +9045,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7912,6 +9055,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7921,6 +9065,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7930,6 +9075,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -7939,6 +9085,7 @@ "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", "optional": true, "dependencies": { "d3-array": "1 - 2", @@ -7949,6 +9096,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", "optional": true, "dependencies": { "internmap": "^1.0.0" @@ -7958,12 +9106,14 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause", "optional": true }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", "optional": true, "dependencies": { "d3-path": "1" @@ -7973,12 +9123,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC", "optional": true }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "optional": true, "dependencies": { "d3-array": "2.10.0 - 3", @@ -7995,6 +9147,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "optional": true, "dependencies": { "d3-color": "1 - 3", @@ -8008,6 +9161,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8016,6 +9170,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "optional": true, "dependencies": { "d3-path": "^3.1.0" @@ -8028,6 +9183,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "optional": true, "dependencies": { "d3-array": "2 - 3" @@ -8040,6 +9196,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "optional": true, "dependencies": { "d3-time": "1 - 3" @@ -8052,6 +9209,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8060,6 +9218,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -8078,6 +9237,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -8090,9 +9250,10 @@ } }, "node_modules/dagre-d3-es": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", - "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", "optional": true, "dependencies": { "d3": "^7.9.0", @@ -8104,14 +9265,16 @@ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT", "optional": true }, "node_modules/debug": { @@ -8119,6 +9282,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -8132,10 +9296,11 @@ } }, "node_modules/default-browser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", - "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "dev": true, + "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -8152,6 +9317,7 @@ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8164,6 +9330,7 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8175,6 +9342,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", "optional": true, "dependencies": { "robust-predicates": "^3.0.2" @@ -8184,6 +9352,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "license": "MIT", "optional": true }, "node_modules/depd": { @@ -8191,6 +9360,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8200,6 +9370,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -8210,6 +9381,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, + "license": "Apache-2.0", "optional": true, "engines": { "node": ">=8" @@ -8219,23 +9391,27 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==" + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.4.tgz", + "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==", + "license": "MIT" }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -8245,6 +9421,7 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -8257,6 +9434,7 @@ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, + "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -8269,6 +9447,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -8288,13 +9467,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -8306,9 +9487,10 @@ } }, "node_modules/dompurify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", - "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "license": "(MPL-2.0 OR Apache-2.0)", "optional": true, "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -8319,6 +9501,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -8333,6 +9516,7 @@ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -8346,24 +9530,28 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "dev": true + "version": "1.5.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz", + "integrity": "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-toolkit": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-9.0.1.tgz", - "integrity": "sha512-sMMNqKNLVHXJfIKoPbrRJwtYuysVNC9GlKetr72zE3SSVbHqoeDLWVrxP0uM0AE0qvdl3hbUk+tJhhwXZrDHaw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-10.0.0.tgz", + "integrity": "sha512-GkIAvgutEVbkqcT2HjBzV002SWvpdNaT3aP9q/YjQ6hlgDq8HhE9GcqxWkyYkRRQnLADGpwDoj1heTw9KzO9wQ==", + "license": "MIT", "optional": true }, "node_modules/emojis-list": { @@ -8371,6 +9559,7 @@ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -8380,41 +9569,21 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/engine.io": { - "version": "6.6.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.5.tgz", - "integrity": "sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.6.tgz", + "integrity": "sha512-U2SN0w3OpjFRVlrc17E6TMDmH58Xl9rai1MblNjAdwWp07Kk+llmzX0hjDpQdrDGzwmvOtgM5yI+meYX6iZ2xA==", "dev": true, + "license": "MIT", "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", + "@types/ws": "^8.5.12", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", @@ -8432,6 +9601,7 @@ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -8441,6 +9611,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -8454,6 +9625,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8463,6 +9635,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -8475,18 +9648,20 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/enhanced-resolve": { - "version": "5.18.4", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", + "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" @@ -8497,6 +9672,7 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -8511,6 +9687,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -8523,6 +9700,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8532,6 +9710,7 @@ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8543,13 +9722,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -8563,6 +9744,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -8572,6 +9754,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -8581,6 +9764,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -8589,13 +9773,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -8604,11 +9790,12 @@ } }, "node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8616,39 +9803,40 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/esbuild-wasm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.2.tgz", - "integrity": "sha512-eUTnl8eh+v8UZIZh4MrMOKDAc8Lm7+NqP3pyuTORGFY1s/o9WoiJgKnwXy+te2J3hX7iRbFSHEyig7GsPeeJyw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.3.tgz", + "integrity": "sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==", "dev": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8661,6 +9849,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8669,13 +9858,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -8687,14 +9878,17 @@ "node_modules/esm-env": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "license": "MIT" }, "node_modules/esrap": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz", - "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.4.tgz", + "integrity": "sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==", + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.4.15", + "@typescript-eslint/types": "^8.2.0" } }, "node_modules/esrecurse": { @@ -8702,6 +9896,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -8714,6 +9909,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -8723,6 +9919,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -8732,6 +9929,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -8741,6 +9939,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8749,13 +9948,15 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -8765,6 +9966,7 @@ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "dev": true, + "license": "MIT", "dependencies": { "eventsource-parser": "^3.0.1" }, @@ -8777,6 +9979,7 @@ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.0.0" } @@ -8785,13 +9988,15 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -8831,10 +10036,14 @@ } }, "node_modules/express-rate-limit": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", - "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "10.1.0" + }, "engines": { "node": ">= 16" }, @@ -8849,12 +10058,14 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.0", @@ -8869,13 +10080,15 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -8888,6 +10101,7 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -8905,6 +10119,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8917,6 +10132,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", @@ -8938,6 +10154,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8954,15 +10171,17 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.11", @@ -8975,6 +10194,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8989,6 +10209,7 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8998,6 +10219,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -9011,6 +10233,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9020,6 +10243,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -9034,6 +10258,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -9045,7 +10270,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -9053,6 +10279,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -9066,6 +10293,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9075,6 +10303,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -9084,15 +10313,17 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -9105,6 +10336,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -9129,6 +10361,7 @@ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -9141,8 +10374,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9163,6 +10397,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -9175,6 +10410,7 @@ "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -9190,12 +10426,14 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/good-listener": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "license": "MIT", "optional": true, "dependencies": { "delegate": "^3.1.2" @@ -9206,6 +10444,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9217,25 +10456,29 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hachure-fill": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT", "optional": true }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9245,6 +10488,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9257,6 +10501,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -9272,6 +10517,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -9283,6 +10529,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz", "integrity": "sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -9291,11 +10538,11 @@ } }, "node_modules/hono": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz", - "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", + "version": "4.12.8", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.8.tgz", + "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">=16.9.0" } @@ -9305,6 +10552,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^11.1.0" }, @@ -9313,10 +10561,11 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -9326,6 +10575,7 @@ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -9338,6 +10588,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9352,13 +10603,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -9367,12 +10620,13 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -9381,18 +10635,20 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" + "domutils": "^3.2.2", + "entities": "^7.0.1" } }, "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -9404,19 +10660,22 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", @@ -9436,13 +10695,15 @@ "version": "0.5.10", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -9457,6 +10718,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -9470,6 +10732,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.15", "debug": "^4.3.6", @@ -9487,6 +10750,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -9500,6 +10764,7 @@ "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.18" } @@ -9509,6 +10774,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -9525,6 +10791,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -9537,6 +10804,7 @@ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^10.0.3" }, @@ -9544,16 +10812,40 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/ignore-walk/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -9564,6 +10856,7 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, + "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -9573,21 +10866,24 @@ } }, "node_modules/immutable": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", - "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", - "dev": true + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" }, "node_modules/immutable-json-patch": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/immutable-json-patch/-/immutable-json-patch-6.0.2.tgz", - "integrity": "sha512-KwCA5DXJiyldda8SPha1zB+6+vbEi5/jRRcYii/6yFXlyu9ZjiSH/wPq8Ri2Hk8iGjjTMcHW3Z21S4MOpl7sOw==" + "integrity": "sha512-KwCA5DXJiyldda8SPha1zB+6+vbEi5/jRRcYii/6yFXlyu9ZjiSH/wPq8Ri2Hk8iGjjTMcHW3Z21S4MOpl7sOw==", + "license": "ISC" }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9604,6 +10900,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -9614,6 +10911,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9623,13 +10921,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -9638,6 +10938,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "optional": true, "engines": { "node": ">=12" @@ -9648,6 +10949,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -9657,6 +10959,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -9665,13 +10968,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9684,6 +10989,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -9699,6 +11005,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9714,6 +11021,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9723,6 +11031,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, + "license": "MIT", "dependencies": { "get-east-asian-width": "^1.3.1" }, @@ -9738,6 +11047,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9750,6 +11060,7 @@ "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", "dev": true, + "license": "MIT", "engines": { "node": ">=20" }, @@ -9762,6 +11073,7 @@ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -9780,6 +11092,7 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9788,10 +11101,11 @@ } }, "node_modules/is-network-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", - "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -9804,6 +11118,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -9813,6 +11128,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9825,6 +11141,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9833,12 +11150,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -9848,6 +11167,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -9866,6 +11186,7 @@ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -9877,13 +11198,15 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -9898,13 +11221,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -9916,13 +11241,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9932,6 +11259,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -9941,6 +11269,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", "@babel/parser": "^7.23.9", @@ -9957,6 +11286,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -9971,6 +11301,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -9985,6 +11316,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -9994,6 +11326,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -10006,13 +11339,15 @@ "version": "5.9.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.9.0.tgz", "integrity": "sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -10027,6 +11362,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10042,6 +11378,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, + "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -10050,15 +11387,17 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", "engines": { "node": ">= 0.6.0" } }, "node_modules/jose": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", - "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.1.tgz", + "integrity": "sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" } @@ -10067,13 +11406,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -10085,6 +11426,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", + "license": "MIT", "engines": { "node": ">= 10.16.0" } @@ -10094,6 +11436,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -10106,6 +11449,7 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", "dev": true, + "license": "MIT", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -10113,24 +11457,28 @@ "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/json-schema-typed": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/json-source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", - "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==", + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -10142,13 +11490,15 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -10160,12 +11510,14 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/jsonpath-plus": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz", - "integrity": "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz", + "integrity": "sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==", + "license": "MIT", "dependencies": { "@jsep-plugin/assignment": "^1.3.0", "@jsep-plugin/regex": "^1.0.4", @@ -10180,9 +11532,10 @@ } }, "node_modules/jsonrepair": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.13.2.tgz", - "integrity": "sha512-Leuly0nbM4R+S5SVJk3VHfw1oxnlEK9KygdZvfUtEtTawNDyzB4qa1xWTmFt1aeoA7sXZkVTRuIixJ8bAvqVUg==", + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.13.3.tgz", + "integrity": "sha512-BTznj0owIt2CBAH/LTo7+1I5pMvl1e1033LRl/HUowlZmJOIhzC0zbX5bxMngLkfT4WnzPP26QnW5wMr2g9tsQ==", + "license": "ISC", "bin": { "jsonrepair": "bin/cli.js" } @@ -10192,6 +11545,7 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -10230,6 +11584,7 @@ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, + "license": "MIT", "dependencies": { "which": "^1.2.1" } @@ -10239,6 +11594,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10251,6 +11607,7 @@ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, + "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-instrument": "^5.1.0", @@ -10268,6 +11625,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -10284,6 +11642,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -10293,6 +11652,7 @@ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, + "license": "MIT", "dependencies": { "jasmine-core": "^4.1.0" }, @@ -10304,12 +11664,13 @@ } }, "node_modules/karma-jasmine-html-reporter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", - "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.2.0.tgz", + "integrity": "sha512-J0laEC43Oy2RdR5V5R3bqmdo7yRIYySq6XHKbA+e5iSAgLjhR1oICLGeSREPlJXpeyNcdJf3J17YcdhD0mRssQ==", "dev": true, + "license": "MIT", "peerDependencies": { - "jasmine-core": "^4.0.0 || ^5.0.0", + "jasmine-core": "^4.0.0 || ^5.0.0 || ^6.0.0", "karma": "^6.0.0", "karma-jasmine": "^5.0.0" } @@ -10318,13 +11679,15 @@ "version": "4.6.1", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, + "license": "MIT", "dependencies": { "source-map-support": "^0.5.5" } @@ -10334,6 +11697,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10343,6 +11707,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10358,6 +11723,7 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", @@ -10382,6 +11748,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -10406,6 +11773,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -10417,6 +11785,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10425,13 +11794,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/karma/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -10444,6 +11815,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -10456,6 +11828,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10465,6 +11838,7 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10474,6 +11848,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10483,6 +11858,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -10494,13 +11870,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/karma/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -10508,11 +11886,28 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/karma/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/karma/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -10528,6 +11923,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -10540,6 +11936,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10549,6 +11946,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10563,6 +11961,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10575,6 +11974,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -10588,6 +11988,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10605,6 +12006,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -10623,18 +12025,20 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/katex": { - "version": "0.16.27", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz", - "integrity": "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==", + "version": "0.16.38", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.38.tgz", + "integrity": "sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "optional": true, "dependencies": { "commander": "^8.3.0" @@ -10654,31 +12058,35 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/langium": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", - "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", + "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", + "license": "MIT", "optional": true, "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", + "chevrotain": "~11.1.1", + "chevrotain-allstar": "~0.3.1", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" + "vscode-uri": "~3.1.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=20.10.0", + "npm": ">=10.2.3" } }, "node_modules/launch-editor": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", - "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.1.tgz", + "integrity": "sha512-lPSddlAAluRKJ7/cjRFoXUFzaX7q/YKI7yPHuEvSJVqoXvFnJov1/Ud87Aa4zULIbA9Nja4mSPK8l0z/7eV2wA==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" @@ -10688,6 +12096,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT", "optional": true }, "node_modules/less": { @@ -10695,6 +12104,7 @@ "resolved": "https://registry.npmjs.org/less/-/less-4.4.2.tgz", "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -10717,10 +12127,11 @@ } }, "node_modules/less-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.0.tgz", - "integrity": "sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.1.tgz", + "integrity": "sha512-JZZmG7gMzoDP3VGeEG8Sh6FW5wygB5jYL7Wp29FFihuRTsIBacqO3LbRPr2yStYD11riVf13selLm/CPFRDBRQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18.12.0" }, @@ -10729,7 +12140,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" }, @@ -10747,6 +12158,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -10761,6 +12173,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -10774,6 +12187,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -10784,6 +12198,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -10794,6 +12209,7 @@ "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, + "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" }, @@ -10810,12 +12226,14 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } @@ -10825,6 +12243,7 @@ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", @@ -10838,16 +12257,18 @@ } }, "node_modules/listr2/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "dev": true, + "license": "MIT" }, "node_modules/listr2/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -10865,6 +12286,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -10881,6 +12303,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", "integrity": "sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^2.1.0", "lit-element": "^4.2.0", @@ -10891,6 +12314,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.5.0", "@lit/reactive-element": "^2.1.0", @@ -10901,18 +12325,21 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } }, "node_modules/lmdb": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.4.tgz", - "integrity": "sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.1.tgz", + "integrity": "sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { + "@harperfast/extended-iterable": "^1.0.3", "msgpackr": "^1.11.2", "node-addon-api": "^6.1.0", "node-gyp-build-optional-packages": "5.2.2", @@ -10923,13 +12350,13 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.4.4", - "@lmdb/lmdb-darwin-x64": "3.4.4", - "@lmdb/lmdb-linux-arm": "3.4.4", - "@lmdb/lmdb-linux-arm64": "3.4.4", - "@lmdb/lmdb-linux-x64": "3.4.4", - "@lmdb/lmdb-win32-arm64": "3.4.4", - "@lmdb/lmdb-win32-x64": "3.4.4" + "@lmdb/lmdb-darwin-arm64": "3.5.1", + "@lmdb/lmdb-darwin-x64": "3.5.1", + "@lmdb/lmdb-linux-arm": "3.5.1", + "@lmdb/lmdb-linux-arm64": "3.5.1", + "@lmdb/lmdb-linux-x64": "3.5.1", + "@lmdb/lmdb-win32-arm64": "3.5.1", + "@lmdb/lmdb-win32-x64": "3.5.1" } }, "node_modules/loader-runner": { @@ -10937,6 +12364,7 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" }, @@ -10950,6 +12378,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } @@ -10957,13 +12386,15 @@ "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -10975,42 +12406,49 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.22", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz", - "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==" + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.padend": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", + "license": "MIT" }, "node_modules/lodash.trimstart": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz", - "integrity": "sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ==" + "integrity": "sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ==", + "license": "MIT" }, "node_modules/lodash.words": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-4.2.0.tgz", - "integrity": "sha512-mXxqd8Yx9BGPij3lZKFSdOsjOTbL4krbCCp9slEozaN4EMppA2dFmK/f8HeohodprY6W0vOdiQ5WFgPaTI75xQ==" + "integrity": "sha512-mXxqd8Yx9BGPij3lZKFSdOsjOTbL4krbCCp9slEozaN4EMppA2dFmK/f8HeohodprY6W0vOdiQ5WFgPaTI75xQ==", + "license": "MIT" }, "node_modules/log-symbols": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", "dev": true, + "license": "MIT", "dependencies": { "is-unicode-supported": "^2.0.0", "yoctocolors": "^2.1.1" @@ -11027,18 +12465,36 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/log-update/node_modules/string-width": { @@ -11046,6 +12502,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -11063,6 +12520,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -11080,6 +12538,7 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -11096,6 +12555,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -11104,6 +12564,7 @@ "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -11113,6 +12574,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -11124,11 +12586,13 @@ } }, "node_modules/make-fetch-happen": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz", - "integrity": "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==", + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.4.tgz", + "integrity": "sha512-vM2sG+wbVeVGYcCm16mM3d5fuem9oC28n436HjsGO3LcxoTI8LNVa4rwZDn3f76+cWyT4GGJDxjTYU1I2nr6zw==", "dev": true, + "license": "ISC", "dependencies": { + "@gar/promise-retry": "^1.0.0", "@npmcli/agent": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", @@ -11138,7 +12602,6 @@ "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", "ssri": "^13.0.0" }, "engines": { @@ -11146,9 +12609,10 @@ } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -11162,9 +12626,10 @@ } }, "node_modules/marked": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.1.tgz", - "integrity": "sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==", + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.4.tgz", + "integrity": "sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==", + "license": "MIT", "peer": true, "bin": { "marked": "bin/marked.js" @@ -11178,6 +12643,7 @@ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -11185,23 +12651,34 @@ "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" }, "node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/memfs": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.52.0.tgz", - "integrity": "sha512-dG5ZY1wUCPWhtl4M2mlc7Wx4OrMGtiI79axnScxwDoPR/25biQYrYm21OpKyZcnKv8pvWaX95SRtZgecZ84gFg==", - "dev": true, - "dependencies": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -11212,18 +12689,23 @@ "funding": { "type": "github", "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" }, "node_modules/merge-descriptors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -11235,30 +12717,33 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mermaid": { - "version": "11.12.2", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.2.tgz", - "integrity": "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz", + "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==", + "license": "MIT", "optional": true, "dependencies": { "@braintree/sanitize-url": "^7.1.1", - "@iconify/utils": "^3.0.1", - "@mermaid-js/parser": "^0.6.3", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^1.0.1", "@types/d3": "^7.4.3", - "cytoscape": "^3.29.3", + "@upsetjs/venn.js": "^2.0.0", + "cytoscape": "^3.33.1", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.13", - "dayjs": "^1.11.18", - "dompurify": "^3.2.5", - "katex": "^0.16.22", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.19", + "dompurify": "^3.3.1", + "katex": "^0.16.25", "khroma": "^2.1.0", - "lodash-es": "^4.17.21", - "marked": "^16.2.1", + "lodash-es": "^4.17.23", + "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", @@ -11269,6 +12754,7 @@ "version": "16.4.2", "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", "optional": true, "bin": { "marked": "bin/marked.js" @@ -11282,6 +12768,7 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11291,6 +12778,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -11304,6 +12792,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -11316,6 +12805,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -11328,6 +12818,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11337,6 +12828,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "^1.54.0" }, @@ -11353,6 +12845,7 @@ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -11361,10 +12854,11 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", - "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", + "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -11384,13 +12878,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11403,15 +12899,17 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -11421,6 +12919,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -11429,20 +12928,21 @@ } }, "node_modules/minipass-fetch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.0.tgz", - "integrity": "sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", + "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", + "minipass-sized": "^2.0.0", "minizlib": "^3.0.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" }, "optionalDependencies": { - "encoding": "^0.1.13" + "iconv-lite": "^0.7.2" } }, "node_modules/minipass-flush": { @@ -11450,6 +12950,7 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11462,6 +12963,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11473,13 +12975,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11492,6 +12996,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11503,43 +13008,28 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/minipass-sized": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", + "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", "dev": true, + "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { "node": ">=8" } }, - "node_modules/minipass-sized/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/minizlib": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.1.2" }, @@ -11552,6 +13042,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -11560,15 +13051,16 @@ } }, "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.1.tgz", + "integrity": "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==", + "license": "MIT", "optional": true, "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", - "ufo": "^1.6.1" + "ufo": "^1.6.3" } }, "node_modules/mrmime": { @@ -11576,6 +13068,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -11584,13 +13077,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/msgpackr": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.8.tgz", - "integrity": "sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz", + "integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==", "dev": true, + "license": "MIT", "optional": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" @@ -11602,6 +13097,7 @@ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { "node-gyp-build-optional-packages": "5.2.2" @@ -11623,6 +13119,7 @@ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -11636,6 +13133,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, + "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -11651,6 +13149,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11661,13 +13160,15 @@ "node_modules/natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" }, "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", + "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -11685,6 +13186,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -11698,6 +13200,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11706,26 +13209,29 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ngx-json-viewer": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ngx-json-viewer/-/ngx-json-viewer-3.2.1.tgz", "integrity": "sha512-TTHtXsrBX+IXPqqAIsxklHPqSNmyGeQaziFZbCDJq1PnPOQmTrEHfwNrzN3LnWGhf7UxeM1cK0njegVPChwEcg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/ngx-markdown": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-21.0.1.tgz", - "integrity": "sha512-TQnxrU9b+JclgXBFVg0Xp/6YEMom+hpiEjBMlE56cIWzONNh7pshMeMkz972wWzvQvTP+55/BmEZQc+4Vq1MWg==", + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-21.1.0.tgz", + "integrity": "sha512-qiyn9Je20F9yS4/q0p1Xhk2b/HW0rHWWlJNRm8DIzJKNck9Rmn/BfFxq0webmQHPPyYkg2AjNq/ZeSqDTQJbsQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "optionalDependencies": { "clipboard": "^2.0.11", - "emoji-toolkit": ">= 8.0.0 < 10.0.0", + "emoji-toolkit": ">= 8.0.0 < 11.0.0", "katex": "^0.16.0", "mermaid": ">= 10.6.0 < 12.0.0", "prismjs": "^1.30.0" @@ -11743,6 +13249,7 @@ "version": "1.16.4", "resolved": "https://registry.npmjs.org/ngx-vflow/-/ngx-vflow-1.16.4.tgz", "integrity": "sha512-TqCkKrMdUlDgkc5VMP9KcBKKbhzSgmk2tVgttkjVoejID7XOq1x/EewDEqGPM+yyNvImCmcz0tLY1xMeObFUfQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -11762,22 +13269,15 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true, + "license": "MIT", "optional": true }, - "node_modules/node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-gyp": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.1.0.tgz", - "integrity": "sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", + "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -11786,7 +13286,7 @@ "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", - "tar": "^7.5.2", + "tar": "^7.5.4", "tinyglobby": "^0.2.12", "which": "^6.0.0" }, @@ -11802,6 +13302,7 @@ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "detect-libc": "^2.0.1" @@ -11813,21 +13314,23 @@ } }, "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/node-gyp/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -11837,16 +13340,18 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" }, "node_modules/nopt": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^4.0.0" }, @@ -11862,6 +13367,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11871,6 +13377,7 @@ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^5.0.0" }, @@ -11883,6 +13390,7 @@ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz", "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -11895,6 +13403,7 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -11904,6 +13413,7 @@ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz", "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^9.0.0", "proc-log": "^6.0.0", @@ -11915,10 +13425,11 @@ } }, "node_modules/npm-packlist": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz", - "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz", + "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==", "dev": true, + "license": "ISC", "dependencies": { "ignore-walk": "^8.0.0", "proc-log": "^6.0.0" @@ -11932,6 +13443,7 @@ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz", "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^8.0.0", "npm-normalize-package-bin": "^5.0.0", @@ -11947,6 +13459,7 @@ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz", "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/redact": "^4.0.0", "jsonparse": "^1.3.1", @@ -11966,6 +13479,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -11978,6 +13492,7 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11987,6 +13502,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11998,13 +13514,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -12017,6 +13535,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -12026,6 +13545,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -12035,6 +13555,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-function": "^5.0.0" }, @@ -12050,6 +13571,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", "dev": true, + "license": "MIT", "dependencies": { "default-browser": "^5.4.0", "define-lazy-prop": "^3.0.0", @@ -12066,10 +13588,11 @@ } }, "node_modules/ora": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz", - "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz", + "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^5.6.2", "cli-cursor": "^5.0.0", @@ -12077,9 +13600,8 @@ "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", - "stdin-discarder": "^0.2.2", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.2" + "stdin-discarder": "^0.3.1", + "string-width": "^8.1.0" }, "engines": { "node": ">=20" @@ -12093,6 +13615,7 @@ "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.1.tgz", "integrity": "sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/p-limit": { @@ -12100,6 +13623,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -12115,6 +13639,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -12130,6 +13655,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -12142,6 +13668,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -12154,26 +13681,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/package-manager-detector": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT", "optional": true }, "node_modules/pacote": { - "version": "21.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", - "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", + "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", @@ -12205,6 +13725,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -12217,6 +13738,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -12234,13 +13756,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -12249,6 +13773,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "license": "MIT", "dependencies": { "entities": "^6.0.0" }, @@ -12261,6 +13786,7 @@ "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.0.tgz", "integrity": "sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^6.0.0", "parse5": "^8.0.0", @@ -12275,6 +13801,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -12287,6 +13814,7 @@ "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz", "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^8.0.0" }, @@ -12298,6 +13826,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -12310,6 +13839,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -12318,6 +13848,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT", "optional": true }, "node_modules/path-exists": { @@ -12325,6 +13856,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12334,6 +13866,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12343,6 +13876,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12351,29 +13885,32 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -12383,6 +13920,7 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/express" @@ -12392,19 +13930,22 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT", "optional": true }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -12417,6 +13958,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -12427,6 +13969,7 @@ "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.4.tgz", "integrity": "sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==", "dev": true, + "license": "MIT", "engines": { "node": ">=20.x" }, @@ -12439,6 +13982,7 @@ "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.20.0" } @@ -12447,6 +13991,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", "optional": true, "dependencies": { "confbox": "^0.1.8", @@ -12454,16 +13999,36 @@ "pathe": "^2.0.1" } }, + "node_modules/pkijs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/points-on-curve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT", "optional": true }, "node_modules/points-on-path": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", "optional": true, "dependencies": { "path-data-parser": "0.1.0", @@ -12489,6 +14054,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -12503,6 +14069,7 @@ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.0.tgz", "integrity": "sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", "jiti": "^2.5.1", @@ -12533,13 +14100,15 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -12552,6 +14121,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -12569,6 +14139,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -12584,6 +14155,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -12594,11 +14166,39 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/postcss-selector-parser": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -12611,13 +14211,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/powershell-utils": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=20" }, @@ -12629,6 +14231,7 @@ "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -12639,6 +14242,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -12647,13 +14251,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -12662,11 +14268,22 @@ "node": ">=10" } }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -12680,36 +14297,61 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.9" } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" }, @@ -12720,20 +14362,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -12743,6 +14377,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -12758,6 +14393,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12772,6 +14408,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 20.19.0" }, @@ -12784,19 +14421,22 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -12808,13 +14448,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regexpu-core": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.2", @@ -12831,13 +14473,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regjsparser": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.1.0" }, @@ -12850,6 +14494,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12858,6 +14503,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12866,13 +14512,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", @@ -12893,6 +14541,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -12902,6 +14551,7 @@ "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, + "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -12918,6 +14568,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12932,6 +14583,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12941,6 +14593,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" @@ -12953,10 +14606,11 @@ } }, "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -12965,12 +14619,14 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rgb-hex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-3.0.0.tgz", "integrity": "sha512-8h7ZcwxCBDKvchSWbWngJuSCqJGQ6nDuLLg+QcRyQDbX9jMWt+PpPeXAhSla0GOooEomk3lCprUpGkMdsLjKyg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -12981,6 +14637,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -12995,16 +14652,18 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense", "optional": true }, "node_modules/rolldown": { - "version": "1.0.0-beta.58", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.58.tgz", - "integrity": "sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz", + "integrity": "sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==", "dev": true, + "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.106.0", - "@rolldown/pluginutils": "1.0.0-beta.58" + "@oxc-project/types": "=0.113.0", + "@rolldown/pluginutils": "1.0.0-rc.4" }, "bin": { "rolldown": "bin/cli.mjs" @@ -13013,26 +14672,27 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-beta.58", - "@rolldown/binding-darwin-arm64": "1.0.0-beta.58", - "@rolldown/binding-darwin-x64": "1.0.0-beta.58", - "@rolldown/binding-freebsd-x64": "1.0.0-beta.58", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.58", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.58", - "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.58", - "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.58", - "@rolldown/binding-linux-x64-musl": "1.0.0-beta.58", - "@rolldown/binding-openharmony-arm64": "1.0.0-beta.58", - "@rolldown/binding-wasm32-wasi": "1.0.0-beta.58", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.58", - "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.58" + "@rolldown/binding-android-arm64": "1.0.0-rc.4", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.4", + "@rolldown/binding-darwin-x64": "1.0.0-rc.4", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.4", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.4", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.4", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.4", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.4", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.4", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.4", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.4", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.4" } }, "node_modules/rollup": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", - "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.8" }, @@ -13044,31 +14704,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.55.1", - "@rollup/rollup-android-arm64": "4.55.1", - "@rollup/rollup-darwin-arm64": "4.55.1", - "@rollup/rollup-darwin-x64": "4.55.1", - "@rollup/rollup-freebsd-arm64": "4.55.1", - "@rollup/rollup-freebsd-x64": "4.55.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", - "@rollup/rollup-linux-arm-musleabihf": "4.55.1", - "@rollup/rollup-linux-arm64-gnu": "4.55.1", - "@rollup/rollup-linux-arm64-musl": "4.55.1", - "@rollup/rollup-linux-loong64-gnu": "4.55.1", - "@rollup/rollup-linux-loong64-musl": "4.55.1", - "@rollup/rollup-linux-ppc64-gnu": "4.55.1", - "@rollup/rollup-linux-ppc64-musl": "4.55.1", - "@rollup/rollup-linux-riscv64-gnu": "4.55.1", - "@rollup/rollup-linux-riscv64-musl": "4.55.1", - "@rollup/rollup-linux-s390x-gnu": "4.55.1", - "@rollup/rollup-linux-x64-gnu": "4.55.1", - "@rollup/rollup-linux-x64-musl": "4.55.1", - "@rollup/rollup-openbsd-x64": "4.55.1", - "@rollup/rollup-openharmony-arm64": "4.55.1", - "@rollup/rollup-win32-arm64-msvc": "4.55.1", - "@rollup/rollup-win32-ia32-msvc": "4.55.1", - "@rollup/rollup-win32-x64-gnu": "4.55.1", - "@rollup/rollup-win32-x64-msvc": "4.55.1", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -13076,6 +14736,7 @@ "version": "4.6.6", "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", "optional": true, "dependencies": { "hachure-fill": "^0.5.2", @@ -13089,6 +14750,7 @@ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", @@ -13105,6 +14767,7 @@ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -13116,12 +14779,14 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause", "optional": true }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -13144,13 +14809,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -13167,18 +14834,21 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/safevalues": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-1.2.0.tgz", - "integrity": "sha512-zIsuhjYvJCjfsfjoim2ab6gLKFYAnTiDSJGh0cC3T44L/4kNLL90hBG2BzrXPrHA3f8Ms8FSJ1mljKH5dVR1cw==" + "integrity": "sha512-zIsuhjYvJCjfsfjoim2ab6gLKFYAnTiDSJGh0cC3T44L/4kNLL90hBG2BzrXPrHA3f8Ms8FSJ1mljKH5dVR1cw==", + "license": "Apache-2.0" }, "node_modules/sass": { - "version": "1.97.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.1.tgz", - "integrity": "sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -13195,10 +14865,11 @@ } }, "node_modules/sass-loader": { - "version": "16.0.6", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", - "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", + "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -13210,7 +14881,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", @@ -13239,6 +14910,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -13254,6 +14926,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.18.0" }, @@ -13263,10 +14936,11 @@ } }, "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", "dev": true, + "license": "BlueOak-1.0.0", "optional": true, "engines": { "node": ">=11.0.0" @@ -13277,6 +14951,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -13296,6 +14971,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -13312,32 +14988,36 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT", "optional": true }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -13350,6 +15030,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", @@ -13372,30 +15053,36 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.4.tgz", + "integrity": "sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" } }, "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.4", + "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-index/node_modules/accepts": { @@ -13403,6 +15090,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -13416,6 +15104,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -13425,36 +15114,34 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, "node_modules/serve-index/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13464,6 +15151,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -13475,28 +15163,25 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13506,6 +15191,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", @@ -13524,13 +15210,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -13543,6 +15231,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13555,6 +15244,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13564,6 +15254,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13576,6 +15267,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -13595,6 +15287,7 @@ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -13611,6 +15304,7 @@ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -13629,6 +15323,7 @@ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -13648,6 +15343,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -13658,12 +15354,14 @@ "node_modules/signal-polyfill": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/signal-polyfill/-/signal-polyfill-0.2.2.tgz", - "integrity": "sha512-p63Y4Er5/eMQ9RHg0M0Y64NlsQKpiu6MDdhBXpyywRuWiPywhJTpKJ1iB5K2hJEbFZ0BnDS7ZkJ+0AfTuL37Rg==" + "integrity": "sha512-p63Y4Er5/eMQ9RHg0M0Y64NlsQKpiu6MDdhBXpyywRuWiPywhJTpKJ1iB5K2hJEbFZ0BnDS7ZkJ+0AfTuL37Rg==", + "license": "Apache-2.0" }, "node_modules/signal-utils": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/signal-utils/-/signal-utils-0.21.1.tgz", "integrity": "sha512-i9cdLSvVH4j8ql8mz2lyrA93xL499P8wEbIev3ldSriXeUwqh+wM4Q5VPhIZ19gPtIS4BOopJuKB8l1+wH9LCg==", + "license": "MIT", "peerDependencies": { "signal-polyfill": "^0.2.0" } @@ -13673,6 +15371,7 @@ "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz", "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", @@ -13686,16 +15385,17 @@ } }, "node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -13706,6 +15406,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -13716,6 +15417,7 @@ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz", "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -13734,6 +15436,7 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~4.4.1", "ws": "~8.18.3" @@ -13744,6 +15447,7 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz", "integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" @@ -13757,6 +15461,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -13770,6 +15475,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13779,6 +15485,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -13791,6 +15498,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13800,6 +15508,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -13811,6 +15520,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -13820,6 +15530,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -13834,6 +15545,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -13848,6 +15560,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 12" } @@ -13857,6 +15570,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -13866,6 +15580,7 @@ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" @@ -13886,6 +15601,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -13898,6 +15614,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13908,47 +15625,42 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -13965,6 +15677,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -13975,10 +15688,11 @@ } }, "node_modules/ssri": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", - "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", + "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -13991,15 +15705,17 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.1.tgz", + "integrity": "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -14012,6 +15728,7 @@ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -14026,6 +15743,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -14034,6 +15752,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/string-to-color/-/string-to-color-2.2.2.tgz", "integrity": "sha512-XeA2goP7PNsSlz8RRn6KhYswnMf5Tl+38ajfy8n4oZJyMGC4qqKgHNHsZ/3qwvr42NRIjf9eSr721SyetDeMkA==", + "license": "MIT", "dependencies": { "colornames": "^1.1.1", "hex-rgb": "^4.1.0", @@ -14044,13 +15763,14 @@ } }, "node_modules/string-width": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", - "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", "dev": true, + "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { "node": ">=20" @@ -14060,12 +15780,13 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -14077,12 +15798,14 @@ "node_modules/style-mod": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", - "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==" + "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", + "license": "MIT" }, "node_modules/stylis": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT", "optional": true }, "node_modules/supports-color": { @@ -14090,6 +15813,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -14102,6 +15826,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -14110,21 +15835,23 @@ } }, "node_modules/svelte": { - "version": "5.46.4", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.4.tgz", - "integrity": "sha512-VJwdXrmv9L8L7ZasJeWcCjoIuMRVbhuxbss0fpVnR8yorMmjNDwcjIH08vS6wmSzzzgAG5CADQ1JuXPS2nwt9w==", + "version": "5.53.12", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.53.12.tgz", + "integrity": "sha512-4x/uk4rQe/d7RhfvS8wemTfNjQ0bJbKvamIzRBfTe2eHHjzBZ7PZicUQrC2ryj83xxEacfA1zHKd1ephD1tAxA==", + "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.4", "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", + "@types/trusted-types": "^2.0.7", "acorn": "^8.12.1", - "aria-query": "^5.3.1", + "aria-query": "5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", - "devalue": "^5.6.2", + "devalue": "^5.6.4", "esm-env": "^1.2.1", - "esrap": "^2.2.1", + "esrap": "^2.2.2", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", @@ -14139,6 +15866,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -14148,10 +15876,11 @@ } }, "node_modules/tar": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", - "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -14168,15 +15897,17 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, "node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -14191,15 +15922,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -14228,13 +15959,15 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thingies": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.18" }, @@ -14250,18 +15983,21 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT", "optional": true }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "license": "MIT", "optional": true, "engines": { "node": ">=18" @@ -14272,6 +16008,7 @@ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, + "license": "MIT", "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" @@ -14288,6 +16025,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } @@ -14297,6 +16035,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -14309,6 +16048,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -14318,6 +16058,7 @@ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -14334,6 +16075,7 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } @@ -14342,6 +16084,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", "optional": true, "engines": { "node": ">=6.10" @@ -14350,13 +16093,35 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" }, "node_modules/tuf-js": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/models": "4.1.0", "debug": "^4.4.3", @@ -14371,6 +16136,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, + "license": "MIT", "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", @@ -14384,13 +16150,15 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14418,6 +16186,7 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "bin": { "ua-parser-js": "script/cli.js" }, @@ -14428,34 +16197,39 @@ "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" }, "node_modules/ufo": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT", "optional": true }, "node_modules/undici": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.0.tgz", - "integrity": "sha512-CfPufgPFHCYu0W4h1NiKW9+tNJ39o3kWm7Cm29ET1enSJx+AERfz7A2wAr26aY0SZbYzZlTBQtcHy15o60VZfQ==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=20.18.1" } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -14465,6 +16239,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -14478,6 +16253,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -14487,6 +16263,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -14496,6 +16273,7 @@ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz", "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^6.0.0" }, @@ -14508,6 +16286,7 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz", "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -14520,6 +16299,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -14529,6 +16309,7 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14552,6 +16333,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -14567,13 +16349,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -14586,6 +16370,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "optional": true, "bin": { "uuid": "dist/esm/bin/uuid" @@ -14595,25 +16380,17 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/uuidv7/-/uuidv7-1.1.0.tgz", "integrity": "sha512-2VNnOC0+XQlwogChUDzy6pe8GQEys9QFZBGOh54l6qVfwoCUwwRvk7rDTgaIsRgsF5GFa5oiNg8LqXE3jofBBg==", + "license": "Apache-2.0", "bin": { "uuidv7": "cli.js" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/validate-npm-package-name": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", "dev": true, + "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -14622,6 +16399,7 @@ "version": "3.11.0", "resolved": "https://registry.npmjs.org/vanilla-jsoneditor/-/vanilla-jsoneditor-3.11.0.tgz", "integrity": "sha512-/Zw09Yv8Q2i1yC2q5cDsNtFpyFOQu1Aci4u8dsHwyzhueWnibCMteZz6n1aE9+RGgU92Ni5K4cXTMDUowJPE0A==", + "license": "ISC", "dependencies": { "@codemirror/autocomplete": "^6.18.1", "@codemirror/commands": "^6.7.1", @@ -14655,6 +16433,7 @@ "version": "2.12.3", "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "license": "ISC", "dependencies": { "@sphinxxxx/color-conversion": "^2.2.2" } @@ -14664,15 +16443,17 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -14747,6 +16528,7 @@ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14755,6 +16537,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", "optional": true, "engines": { "node": ">=14.0.0" @@ -14764,6 +16547,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", "optional": true, "dependencies": { "vscode-languageserver-protocol": "3.17.5" @@ -14776,6 +16560,7 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "optional": true, "dependencies": { "vscode-jsonrpc": "8.2.0", @@ -14786,30 +16571,35 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT", "optional": true }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT", "optional": true }, "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT", "optional": true }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" }, "node_modules/watchpack": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", - "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -14823,6 +16613,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -14832,13 +16623,15 @@ "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/webpack": { - "version": "5.104.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", - "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -14850,7 +16643,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.4", + "enhanced-resolve": "^5.19.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -14863,7 +16656,7 @@ "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.4.4", + "watchpack": "^2.5.1", "webpack-sources": "^3.3.3" }, "bin": { @@ -14887,6 +16680,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.43.1", @@ -14912,14 +16706,15 @@ } }, "node_modules/webpack-dev-server": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", - "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", + "@types/express": "^4.17.25", "@types/express-serve-static-core": "^4.17.21", "@types/serve-index": "^1.9.4", "@types/serve-static": "^1.15.5", @@ -14929,9 +16724,9 @@ "bonjour-service": "^1.2.1", "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "express": "^4.21.2", + "express": "^4.22.1", "graceful-fs": "^4.2.6", "http-proxy-middleware": "^2.0.9", "ipaddr.js": "^2.1.0", @@ -14939,7 +16734,7 @@ "open": "^10.0.3", "p-retry": "^6.2.0", "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", @@ -14973,6 +16768,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -14986,6 +16782,7 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", @@ -15010,6 +16807,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -15034,6 +16832,7 @@ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -15045,13 +16844,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -15060,13 +16861,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/express": { "version": "4.22.1", "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -15113,6 +16916,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -15131,6 +16935,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15140,6 +16945,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -15152,6 +16958,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -15176,6 +16983,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -15188,6 +16996,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -15197,6 +17006,7 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15206,6 +17016,7 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -15215,6 +17026,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -15227,6 +17039,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15236,6 +17049,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -15248,6 +17062,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15257,6 +17072,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, + "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -15274,13 +17090,15 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -15288,11 +17106,28 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/webpack-dev-server/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/webpack-dev-server/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", @@ -15308,6 +17143,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -15320,6 +17156,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -15344,6 +17181,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -15359,6 +17197,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -15372,6 +17211,7 @@ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "dev": true, + "license": "MIT", "dependencies": { "is-wsl": "^3.1.0" }, @@ -15387,6 +17227,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -15397,10 +17238,11 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -15410,6 +17252,7 @@ "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, + "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" }, @@ -15430,13 +17273,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15446,6 +17291,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -15458,6 +17304,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -15472,6 +17319,7 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -15481,6 +17329,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -15495,13 +17344,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -15516,6 +17367,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -15525,6 +17377,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15539,13 +17392,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -15555,6 +17410,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15569,6 +17425,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -15580,13 +17437,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { "version": "8.18.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -15608,6 +17467,7 @@ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", "dev": true, + "license": "MIT", "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" @@ -15624,6 +17484,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -15632,12 +17493,14 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -15653,6 +17516,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", @@ -15670,6 +17534,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, + "license": "ISC", "engines": { "node": "^20.19.0 || ^22.12.0 || >=23" } @@ -15679,6 +17544,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -15696,6 +17562,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -15708,6 +17575,7 @@ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -15720,6 +17588,7 @@ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -15730,13 +17599,14 @@ "node_modules/zimmerframe": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", - "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==" + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", + "license": "MIT" }, "node_modules/zod": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", - "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", - "dev": true, + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -15745,7 +17615,7 @@ "version": "3.25.1", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", - "dev": true, + "license": "ISC", "peerDependencies": { "zod": "^3.25 || ^4" } @@ -15753,7 +17623,8 @@ "node_modules/zone.js": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", - "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==" + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", + "license": "MIT" } } -} +} \ No newline at end of file diff --git a/src/app/components/chat/chat.component.spec.ts b/src/app/components/chat/chat.component.spec.ts index 8428ff6e..059c0362 100644 --- a/src/app/components/chat/chat.component.spec.ts +++ b/src/app/components/chat/chat.component.spec.ts @@ -17,7 +17,7 @@ import {Location} from '@angular/common'; import {HttpErrorResponse} from '@angular/common/http'; -import {Component, ErrorHandler} from '@angular/core'; +import {ChangeDetectionStrategy, Component, ErrorHandler} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {MatDialog, MatDialogModule} from '@angular/material/dialog'; import {MatSnackBar} from '@angular/material/snack-bar'; @@ -74,6 +74,7 @@ import {ChatComponent, HIDE_SIDE_PANEL_QUERY_PARAM, INITIAL_USER_INPUT_QUERY_PAR // Mock EvalTabComponent to satisfy the required viewChild in ChatComponent @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-eval-tab', template: '', standalone: true, @@ -86,6 +87,7 @@ class MockEvalTabComponent { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-host-component', template: `
@@ -510,7 +512,8 @@ describe('ChatComponent', () => { it( 'should display landing page content from "landing" query param', fakeAsync(() => { - const markdownContent = '# Welcome to the App\n\nThis is the landing page.'; + const markdownContent = + '# Welcome to the App\n\nThis is the landing page.'; const encodedContent = encodeURIComponent(markdownContent); const queryParams = { [LANDING_PAGE_CONTENT_QUERY_PARAM]: encodedContent, @@ -525,7 +528,7 @@ describe('ChatComponent', () => { fixture = TestBed.createComponent(ChatComponent); component = fixture.componentInstance; fixture.detectChanges(); - tick(); // Allow component to stabilize and load session + tick(); // Allow component to stabilize and load session // Manually call displayLandingPageContent to simulate the effect (component as any).displayLandingPageContent(); diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index f1c86855..7f99f4dd 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -17,7 +17,7 @@ import { AsyncPipe, DOCUMENT, NgClass } from '@angular/common'; import { HttpErrorResponse } from '@angular/common/http'; -import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, HostListener, inject, Injectable, OnDestroy, OnInit, Renderer2, signal, viewChild, WritableSignal } from '@angular/core'; +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, inject, Injectable, OnDestroy, OnInit, Renderer2, signal, viewChild, WritableSignal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButton, MatFabButton } from '@angular/material/button'; @@ -124,6 +124,7 @@ const BIDI_STREAMING_RESTART_WARNING = 'Restarting bidirectional streaming is not currently supported. Please refresh the page or start a new session.'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-chat', templateUrl: './chat.component.html', styleUrl: './chat.component.scss', @@ -481,10 +482,10 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { const decodedContent = decodeURIComponent(landingContent); // Check if the landing message already exists if (!this.messages().some(m => m.isLanding)) { - this.messages.update(messages => [ - { role: 'bot', text: decodedContent, isLanding: true }, - ...messages - ]); + this.messages.update( + messages => + [{ role: 'bot', text: decodedContent, isLanding: true }, + ...messages]); } } catch (e) { console.error('Error decoding landing page content:', e); diff --git a/src/app/components/json-editor/json-editor.component.ts b/src/app/components/json-editor/json-editor.component.ts index ab5f0478..5d3f65cb 100644 --- a/src/app/components/json-editor/json-editor.component.ts +++ b/src/app/components/json-editor/json-editor.component.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import {AfterViewInit, Component, ElementRef, Input} from '@angular/core'; +import {AfterViewInit, Component, ElementRef, Input, ChangeDetectionStrategy} from '@angular/core'; import {createJSONEditor, Mode} from 'vanilla-jsoneditor'; @Component({ - selector: 'app-json-editor', + changeDetection: ChangeDetectionStrategy.Eager,selector: 'app-json-editor', templateUrl: './json-editor.component.html', styleUrls: ['./json-editor.component.scss'], }) diff --git a/src/app/components/message-feedback/message-feedback.component.ts b/src/app/components/message-feedback/message-feedback.component.ts index adfdcaa0..bebc4f6a 100644 --- a/src/app/components/message-feedback/message-feedback.component.ts +++ b/src/app/components/message-feedback/message-feedback.component.ts @@ -16,7 +16,7 @@ */ import {CommonModule} from '@angular/common'; -import {Component, computed, inject, input, signal} from '@angular/core'; +import {ChangeDetectionStrategy, Component, computed, inject, input, signal} from '@angular/core'; import {rxResource} from '@angular/core/rxjs-interop'; import {FormControl, ReactiveFormsModule} from '@angular/forms'; import {MatButtonModule} from '@angular/material/button'; @@ -31,6 +31,7 @@ import {Feedback, FEEDBACK_SERVICE} from '../../core/services/interfaces/feedbac import {MessageFeedbackMessagesInjectionToken} from './message-feedback.component.i18n'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-message-feedback', templateUrl: './message-feedback.component.html', styleUrl: './message-feedback.component.scss', diff --git a/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts b/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts index 45282334..23bfcb15 100644 --- a/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts +++ b/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts @@ -16,7 +16,7 @@ */ import {CdkScrollable} from '@angular/cdk/scrolling'; -import {Component, Inject} from '@angular/core'; +import {Component, Inject, ChangeDetectionStrategy} from '@angular/core'; import {MatButton} from '@angular/material/button'; import {MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle} from '@angular/material/dialog'; @@ -34,6 +34,7 @@ export interface DeleteSessionDialogData { * Dialog component to confirm deleting a session. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-delete-session-dialog', templateUrl: './delete-session-dialog.component.html', styleUrls: ['./delete-session-dialog.component.scss'], diff --git a/src/app/components/session-tab/session-tab.component.ts b/src/app/components/session-tab/session-tab.component.ts index de2b520d..b087c5a8 100644 --- a/src/app/components/session-tab/session-tab.component.ts +++ b/src/app/components/session-tab/session-tab.component.ts @@ -16,7 +16,7 @@ */ import {AsyncPipe, NgClass} from '@angular/common'; -import {ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, signal} from '@angular/core'; +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, signal} from '@angular/core'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {MatButtonModule} from '@angular/material/button'; import {MatFormFieldModule} from '@angular/material/form-field'; @@ -38,6 +38,7 @@ import {SessionTabMessagesInjectionToken} from './session-tab.component.i18n'; * Displays a list of sessions and handles session loading and pagination. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-session-tab', templateUrl: './session-tab.component.html', styleUrl: './session-tab.component.scss', diff --git a/src/app/components/side-panel/side-panel.component.ts b/src/app/components/side-panel/side-panel.component.ts index 2f153045..f23247ce 100644 --- a/src/app/components/side-panel/side-panel.component.ts +++ b/src/app/components/side-panel/side-panel.component.ts @@ -16,7 +16,7 @@ */ import {AsyncPipe, NgComponentOutlet, NgTemplateOutlet} from '@angular/common'; -import {AfterViewInit, Component, computed, effect, EnvironmentInjector, inject, input, output, runInInjectionContext, signal, Type, viewChild, ViewContainerRef, type WritableSignal} from '@angular/core'; +import {AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, EnvironmentInjector, inject, input, output, runInInjectionContext, signal, Type, viewChild, ViewContainerRef, type WritableSignal} from '@angular/core'; import {toObservable} from '@angular/core/rxjs-interop'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {MatMiniFabButton} from '@angular/material/button'; @@ -54,6 +54,7 @@ import {SidePanelMessagesInjectionToken} from './side-panel.component.i18n'; * Side panel component. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-side-panel', templateUrl: './side-panel.component.html', styleUrls: ['./side-panel.component.scss'], diff --git a/src/app/components/state-tab/state-tab.component.ts b/src/app/components/state-tab/state-tab.component.ts index 885ddd19..33133b29 100644 --- a/src/app/components/state-tab/state-tab.component.ts +++ b/src/app/components/state-tab/state-tab.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, inject, Input} from '@angular/core'; +import {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core'; import {NgxJsonViewerModule} from 'ngx-json-viewer'; import type {SessionState} from '../../core/models/Session'; @@ -24,6 +24,7 @@ import {StateTabMessagesInjectionToken} from './state-tab.component.i18n'; /** Component to display contents of a SessionState. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-state-tab', templateUrl: './state-tab.component.html', styleUrl: './state-tab.component.scss', diff --git a/src/app/components/theme-toggle/theme-toggle.ts b/src/app/components/theme-toggle/theme-toggle.ts index e9a95b92..46b12e36 100644 --- a/src/app/components/theme-toggle/theme-toggle.ts +++ b/src/app/components/theme-toggle/theme-toggle.ts @@ -15,13 +15,15 @@ * limitations under the License. */ -import { Component, inject } from '@angular/core'; -import { MatIconModule } from '@angular/material/icon'; -import { MatButtonModule } from '@angular/material/button'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { THEME_SERVICE } from '../../core/services/interfaces/theme'; +import {ChangeDetectionStrategy, Component, inject} from '@angular/core'; +import {MatButtonModule} from '@angular/material/button'; +import {MatIconModule} from '@angular/material/icon'; +import {MatTooltipModule} from '@angular/material/tooltip'; + +import {THEME_SERVICE} from '../../core/services/interfaces/theme'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-theme-toggle', imports: [MatIconModule, MatButtonModule, MatTooltipModule], templateUrl: './theme-toggle.html', diff --git a/src/app/components/trace-tab/trace-event/trace-event.component.ts b/src/app/components/trace-tab/trace-event/trace-event.component.ts index 569ef3ef..d2dd94df 100644 --- a/src/app/components/trace-tab/trace-event/trace-event.component.ts +++ b/src/app/components/trace-tab/trace-event/trace-event.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ import {AsyncPipe} from '@angular/common'; -import {Component, EventEmitter, inject, Input, OnInit, Output, signal} from '@angular/core'; +import {ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnInit, Output, signal} from '@angular/core'; import {toSignal} from '@angular/core/rxjs-interop'; import {MatIconButton} from '@angular/material/button'; import {MatDialog} from '@angular/material/dialog'; @@ -36,6 +36,7 @@ import {UI_STATE_SERVICE} from '../../../core/services/interfaces/ui-state'; import {ViewImageDialogComponent} from '../../view-image-dialog/view-image-dialog.component'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-trace-event', templateUrl: './trace-event.component.html', styleUrl: './trace-event.component.scss', diff --git a/src/app/components/trace-tab/trace-tab.component.ts b/src/app/components/trace-tab/trace-tab.component.ts index 824a5ca0..c1187a63 100644 --- a/src/app/components/trace-tab/trace-tab.component.ts +++ b/src/app/components/trace-tab/trace-tab.component.ts @@ -14,20 +14,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {Component, inject, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core'; -import { MatDialogTitle } from '@angular/material/dialog'; -import { MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle } from '@angular/material/expansion'; -import { TraceTreeComponent } from './trace-tree/trace-tree.component'; -import { KeyValuePipe } from '@angular/common'; +import {KeyValuePipe} from '@angular/common'; +import {ChangeDetectionStrategy, Component, inject, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core'; +import {MatDialogTitle} from '@angular/material/dialog'; +import {MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle} from '@angular/material/expansion'; + import {LlmRequest} from '../../core/models/types'; -import { TraceTabMessagesInjectionToken } from './trace-tab.component.i18n'; + +import {TraceTabMessagesInjectionToken} from './trace-tab.component.i18n'; +import {TraceTreeComponent} from './trace-tree/trace-tree.component'; @Component({ - selector: 'app-trace-tab', - templateUrl: './trace-tab.component.html', - styleUrl: './trace-tab.component.scss', - standalone: true, - imports: [MatDialogTitle, MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle, TraceTreeComponent, KeyValuePipe] + changeDetection: ChangeDetectionStrategy.Eager, + selector: 'app-trace-tab', + templateUrl: './trace-tab.component.html', + styleUrl: './trace-tab.component.scss', + standalone: true, + imports: [ + MatDialogTitle, MatExpansionPanel, MatExpansionPanelHeader, + MatExpansionPanelTitle, TraceTreeComponent, KeyValuePipe + ] }) export class TraceTabComponent implements OnInit, OnChanges { diff --git a/src/app/components/trace-tab/trace-tree/trace-tree.component.ts b/src/app/components/trace-tab/trace-tree/trace-tree.component.ts index e7037dd7..ce8e7bde 100644 --- a/src/app/components/trace-tab/trace-tree/trace-tree.component.ts +++ b/src/app/components/trace-tab/trace-tree/trace-tree.component.ts @@ -14,12 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {Component, inject, Input} from '@angular/core'; +import {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core'; import {Span} from '../../../core/models/Trace'; import {TRACE_SERVICE} from '../../../core/services/interfaces/trace'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-trace-tree', templateUrl: './trace-tree.component.html', styleUrl: './trace-tree.component.scss', diff --git a/src/app/components/view-image-dialog/view-image-dialog.component.ts b/src/app/components/view-image-dialog/view-image-dialog.component.ts index 462d09dc..2074b468 100644 --- a/src/app/components/view-image-dialog/view-image-dialog.component.ts +++ b/src/app/components/view-image-dialog/view-image-dialog.component.ts @@ -16,7 +16,7 @@ */ import {SAFE_VALUES_SERVICE} from '../../core/services/interfaces/safevalues'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, OnInit, ChangeDetectionStrategy} from '@angular/core'; import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog'; import {SafeHtml, SafeUrl} from '@angular/platform-browser'; @@ -25,6 +25,7 @@ export interface ViewImageDialogData { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-view-image-dialog', templateUrl: './view-image-dialog.component.html', styleUrls: ['./view-image-dialog.component.scss'], diff --git a/src/app/directives/resizable-drawer.directive.spec.ts b/src/app/directives/resizable-drawer.directive.spec.ts index e30327d4..2b4fffc4 100644 --- a/src/app/directives/resizable-drawer.directive.spec.ts +++ b/src/app/directives/resizable-drawer.directive.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component} from '@angular/core'; +import {ChangeDetectionStrategy, Component} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; @@ -31,6 +31,7 @@ const MOCKED_WINDOW_WIDTH = 2000; const MAX_WIDTH = MOCKED_WINDOW_WIDTH / 2; // 1000 @Component({ + changeDetection: ChangeDetectionStrategy.Eager, template: `
Drawer
From dc80686eb95904a5b6bb4fcf531065dd50060fa0 Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Wed, 18 Mar 2026 10:18:37 -0700 Subject: [PATCH 035/323] ADK changes PiperOrigin-RevId: 885663148 --- src/app/app.component.ts | 3 ++- .../add-callback-dialog/add-callback-dialog.component.ts | 3 ++- .../components/add-item-dialog/add-item-dialog.component.ts | 3 ++- .../components/add-tool-dialog/add-tool-dialog.component.ts | 3 ++- src/app/components/artifact-tab/artifact-tab.component.ts | 3 ++- src/app/components/audio-player/audio-player.component.ts | 3 ++- .../builder-assistant/builder-assistant.component.ts | 3 ++- .../built-in-tool-dialog/built-in-tool-dialog.component.ts | 3 ++- src/app/components/canvas/canvas.component.ts | 3 ++- src/app/components/chat-panel/chat-panel.component.ts | 3 ++- src/app/components/code-editor/code-editor.component.ts | 2 ++ .../components/computer-action/computer-action.component.ts | 3 ++- .../confirmation-dialog/confirmation-dialog.component.ts | 3 ++- src/app/components/custom-logo/custom-logo.component.ts | 3 ++- .../components/edit-json-dialog/edit-json-dialog.component.ts | 3 ++- .../add-eval-session-dialog.component.ts | 3 ++- src/app/components/eval-tab/eval-tab.component.ts | 3 ++- .../new-eval-set-dialog-component.component.ts | 3 ++- .../run-eval-config-dialog/run-eval-config-dialog.component.ts | 3 ++- src/app/components/event-tab/event-tab.component.ts | 3 ++- .../components/event-tab/trace-chart/trace-chart.component.ts | 3 ++- src/app/components/json-tooltip/json-tooltip.component.ts | 3 ++- .../components/long-running-response/long-running-response.ts | 3 ++- src/app/components/markdown/markdown.component.ts | 3 ++- src/app/components/markdown/testing/mock-markdown.component.ts | 3 ++- 25 files changed, 50 insertions(+), 24 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index c2e905bc..05243a37 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -15,10 +15,11 @@ * limitations under the License. */ -import {Component} from '@angular/core'; +import {ChangeDetectionStrategy, Component} from '@angular/core'; import { ChatComponent } from './components/chat/chat.component'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-root', templateUrl: './app.component.html', styleUrl: './app.component.scss', diff --git a/src/app/components/add-callback-dialog/add-callback-dialog.component.ts b/src/app/components/add-callback-dialog/add-callback-dialog.component.ts index d12b18a9..23786265 100644 --- a/src/app/components/add-callback-dialog/add-callback-dialog.component.ts +++ b/src/app/components/add-callback-dialog/add-callback-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Inject, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Inject, ViewChild } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule, NgModel } from '@angular/forms'; import { @@ -44,6 +44,7 @@ export class ImmediateErrorStateMatcher implements ErrorStateMatcher { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-add-callback-dialog', templateUrl: './add-callback-dialog.component.html', styleUrl: './add-callback-dialog.component.scss', diff --git a/src/app/components/add-item-dialog/add-item-dialog.component.ts b/src/app/components/add-item-dialog/add-item-dialog.component.ts index 0dc139ae..45e620ee 100644 --- a/src/app/components/add-item-dialog/add-item-dialog.component.ts +++ b/src/app/components/add-item-dialog/add-item-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, inject, Inject} from '@angular/core'; +import {ChangeDetectionStrategy, Component, inject, Inject} from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogActions, @@ -34,6 +34,7 @@ import { FormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-add-item-dialog', templateUrl: './add-item-dialog.component.html', styleUrl: './add-item-dialog.component.scss', diff --git a/src/app/components/add-tool-dialog/add-tool-dialog.component.ts b/src/app/components/add-tool-dialog/add-tool-dialog.component.ts index 1ae4cf8f..c4429d62 100644 --- a/src/app/components/add-tool-dialog/add-tool-dialog.component.ts +++ b/src/app/components/add-tool-dialog/add-tool-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Inject, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog'; @@ -27,6 +27,7 @@ import { MatIcon } from '@angular/material/icon'; import { TooltipUtil } from '../../../utils/tooltip-util'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-add-tool-dialog', templateUrl: './add-tool-dialog.component.html', styleUrl: './add-tool-dialog.component.scss', diff --git a/src/app/components/artifact-tab/artifact-tab.component.ts b/src/app/components/artifact-tab/artifact-tab.component.ts index 37b6ab02..b89dbf31 100644 --- a/src/app/components/artifact-tab/artifact-tab.component.ts +++ b/src/app/components/artifact-tab/artifact-tab.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, Inject, inject, input, OnChanges, SimpleChanges} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Inject, inject, input, OnChanges, SimpleChanges} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {MatButton} from '@angular/material/button'; import {MatOption} from '@angular/material/core'; @@ -88,6 +88,7 @@ export function isArtifactAudio(mimeType: string): boolean { @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-artifact-tab', templateUrl: './artifact-tab.component.html', styleUrl: './artifact-tab.component.scss', diff --git a/src/app/components/audio-player/audio-player.component.ts b/src/app/components/audio-player/audio-player.component.ts index 0cf7ec2e..3166a92a 100644 --- a/src/app/components/audio-player/audio-player.component.ts +++ b/src/app/components/audio-player/audio-player.component.ts @@ -15,9 +15,10 @@ * limitations under the License. */ -import {Component, ElementRef, input, OnChanges, SimpleChanges, viewChild} from '@angular/core'; +import {ChangeDetectionStrategy, Component, ElementRef, input, OnChanges, SimpleChanges, viewChild} from '@angular/core'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-audio-player', templateUrl: './audio-player.component.html', styleUrls: ['./audio-player.component.scss'], diff --git a/src/app/components/builder-assistant/builder-assistant.component.ts b/src/app/components/builder-assistant/builder-assistant.component.ts index f30d429c..ec882783 100644 --- a/src/app/components/builder-assistant/builder-assistant.component.ts +++ b/src/app/components/builder-assistant/builder-assistant.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Input, Output, EventEmitter, OnInit, Inject, ViewChild, ElementRef, AfterViewChecked, inject, Type} from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter, OnInit, Inject, ViewChild, ElementRef, AfterViewChecked, inject, Type} from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { MatIcon } from '@angular/material/icon'; @@ -32,6 +32,7 @@ import { YamlUtils } from '../../../utils/yaml-utils'; import {MARKDOWN_COMPONENT, MarkdownComponentInterface} from '../markdown/markdown.component.interface'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-builder-assistant', templateUrl: './builder-assistant.component.html', styleUrl: './builder-assistant.component.scss', diff --git a/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts b/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts index 6d282fc2..66418dc7 100644 --- a/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts +++ b/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Inject, OnInit, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Inject, OnInit, ViewChild } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog'; @@ -30,6 +30,7 @@ interface ToolCategory { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-built-in-tool-dialog', templateUrl: './built-in-tool-dialog.component.html', styleUrl: './built-in-tool-dialog.component.scss', diff --git a/src/app/components/canvas/canvas.component.ts b/src/app/components/canvas/canvas.component.ts index be573e8c..5e8fefa7 100644 --- a/src/app/components/canvas/canvas.component.ts +++ b/src/app/components/canvas/canvas.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, ElementRef, ViewChild, AfterViewInit, OnInit, OnChanges, SimpleChanges, inject, signal, Input, Output, EventEmitter, ChangeDetectorRef, computed} from '@angular/core'; +import {ChangeDetectionStrategy, Component, ElementRef, ViewChild, AfterViewInit, OnInit, OnChanges, SimpleChanges, inject, signal, Input, Output, EventEmitter, ChangeDetectorRef, computed} from '@angular/core'; import { DiagramConnection, AgentNode, ToolNode, CallbackNode, YamlConfig } from '../../core/models/AgentBuilder'; import { MatDialog } from '@angular/material/dialog'; import { AgentService } from '../../core/services/agent.service'; @@ -38,6 +38,7 @@ import { AsyncPipe } from "@angular/common"; import { BuilderAssistantComponent } from "../builder-assistant/builder-assistant.component"; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: "app-canvas", templateUrl: "./canvas.component.html", styleUrl: "./canvas.component.scss", diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index 3998d35d..f0e708ab 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -17,7 +17,7 @@ import {TextFieldModule} from '@angular/cdk/text-field'; import {CommonModule, NgClass} from '@angular/common'; -import {AfterViewInit, Component, DestroyRef, effect, ElementRef, EventEmitter, HostListener, inject, input, Input, OnChanges, Output, signal, SimpleChanges, Type, ViewChild} from '@angular/core'; +import {AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, effect, ElementRef, EventEmitter, HostListener, inject, input, Input, OnChanges, Output, signal, SimpleChanges, Type, ViewChild} from '@angular/core'; import {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop'; import {FormsModule} from '@angular/forms'; import {MatButtonModule} from '@angular/material/button'; @@ -58,6 +58,7 @@ import {ChatPanelMessagesInjectionToken} from './chat-panel.component.i18n'; const ROOT_AGENT = 'root_agent'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-chat-panel', templateUrl: './chat-panel.component.html', styleUrl: './chat-panel.component.scss', diff --git a/src/app/components/code-editor/code-editor.component.ts b/src/app/components/code-editor/code-editor.component.ts index f48ba06a..1750fee7 100644 --- a/src/app/components/code-editor/code-editor.component.ts +++ b/src/app/components/code-editor/code-editor.component.ts @@ -16,6 +16,7 @@ */ import { + ChangeDetectionStrategy, AfterViewInit, Component, ElementRef, @@ -89,6 +90,7 @@ const pythonLinter = linter((view) => { }); @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-code-editor', templateUrl: './code-editor.component.html', styleUrls: ['./code-editor.component.scss'], diff --git a/src/app/components/computer-action/computer-action.component.ts b/src/app/components/computer-action/computer-action.component.ts index b0fb0e57..98687584 100644 --- a/src/app/components/computer-action/computer-action.component.ts +++ b/src/app/components/computer-action/computer-action.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ import {CommonModule} from '@angular/common'; -import {Component, EventEmitter, Input, Output} from '@angular/core'; +import {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core'; import {MatIconModule} from '@angular/material/icon'; import {MatTooltipModule} from '@angular/material/tooltip'; @@ -23,6 +23,7 @@ import {ComputerUseClickCall, ComputerUsePayload, isComputerUseResponse, isVisib import type {FunctionCall, FunctionResponse} from '../../core/models/types'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-computer-action', templateUrl: './computer-action.component.html', styleUrl: './computer-action.component.scss', diff --git a/src/app/components/confirmation-dialog/confirmation-dialog.component.ts b/src/app/components/confirmation-dialog/confirmation-dialog.component.ts index 0e043587..b7b58152 100644 --- a/src/app/components/confirmation-dialog/confirmation-dialog.component.ts +++ b/src/app/components/confirmation-dialog/confirmation-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, Inject} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Inject} from '@angular/core'; import {CommonModule} from '@angular/common'; import { MAT_DIALOG_DATA, @@ -44,6 +44,7 @@ export interface ConfirmationDialogData { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-confirmation-dialog', templateUrl: './confirmation-dialog.component.html', styleUrls: ['./confirmation-dialog.component.scss'], diff --git a/src/app/components/custom-logo/custom-logo.component.ts b/src/app/components/custom-logo/custom-logo.component.ts index c26f7ee5..7a324478 100644 --- a/src/app/components/custom-logo/custom-logo.component.ts +++ b/src/app/components/custom-logo/custom-logo.component.ts @@ -15,12 +15,13 @@ * limitations under the License. */ -import {Component} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Input, Output, EventEmitter, OnInit, Inject, ViewChild, ElementRef, AfterViewChecked, inject, Type} from '@angular/core'; import {RuntimeConfigUtil} from '../../../utils/runtime-config-util'; /** Logo component to override the default logo. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-custom-logo', standalone: true, templateUrl: './custom-logo.component.html', diff --git a/src/app/components/edit-json-dialog/edit-json-dialog.component.ts b/src/app/components/edit-json-dialog/edit-json-dialog.component.ts index 9acd3f6d..5964f98e 100644 --- a/src/app/components/edit-json-dialog/edit-json-dialog.component.ts +++ b/src/app/components/edit-json-dialog/edit-json-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, Inject, inject, OnInit, viewChild} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Inject, inject, OnInit, viewChild} from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog'; import {JsonEditorComponent} from '../json-editor/json-editor.component'; @@ -30,6 +30,7 @@ export interface EditJsonData { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-edit-json-dialog', templateUrl: './edit-json-dialog.component.html', styleUrls: ['./edit-json-dialog.component.scss'], diff --git a/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts b/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts index ce78f989..7b612779 100644 --- a/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts +++ b/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, inject} from '@angular/core'; +import {ChangeDetectionStrategy, Component, inject} from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog'; import {uuidv4} from 'uuidv7'; import {EVAL_SERVICE} from '../../../../core/services/interfaces/eval'; @@ -26,6 +26,7 @@ import { FormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-add-eval-session-dialog', templateUrl: './add-eval-session-dialog.component.html', styleUrl: './add-eval-session-dialog.component.scss', diff --git a/src/app/components/eval-tab/eval-tab.component.ts b/src/app/components/eval-tab/eval-tab.component.ts index 520d1261..5a833188 100644 --- a/src/app/components/eval-tab/eval-tab.component.ts +++ b/src/app/components/eval-tab/eval-tab.component.ts @@ -17,7 +17,7 @@ import {SelectionModel} from '@angular/cdk/collections'; import {NgClass} from '@angular/common'; -import {ChangeDetectorRef, Component, inject, InjectionToken, input, OnChanges, OnInit, output, signal, SimpleChanges, Type, viewChildren} from '@angular/core'; +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, InjectionToken, input, OnChanges, OnInit, output, signal, SimpleChanges, Type, viewChildren} from '@angular/core'; import {MatCheckbox} from '@angular/material/checkbox'; import {MatDialog} from '@angular/material/dialog'; import {MatIcon} from '@angular/material/icon'; @@ -79,6 +79,7 @@ interface AppEvaluationResult { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-eval-tab', templateUrl: './eval-tab.component.html', styleUrl: './eval-tab.component.scss', diff --git a/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts b/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts index 293d2c80..7adf09f9 100644 --- a/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts +++ b/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, inject} from '@angular/core'; +import {ChangeDetectionStrategy, Component, inject} from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog'; import {uuidv4} from 'uuidv7'; import {EVAL_SERVICE} from '../../../../core/services/interfaces/eval'; @@ -26,6 +26,7 @@ import { FormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-new-eval-set-dialog-component', templateUrl: './new-eval-set-dialog-component.component.html', styleUrl: './new-eval-set-dialog-component.component.scss', diff --git a/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts b/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts index 94ef2199..14e5c8b5 100644 --- a/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts +++ b/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, Inject} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Inject} from '@angular/core'; import { FormBuilder, FormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog'; @@ -34,6 +34,7 @@ export interface EvalConfigData { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-run-eval-config-dialog', templateUrl: './run-eval-config-dialog.component.html', styleUrls: ['./run-eval-config-dialog.component.scss'], diff --git a/src/app/components/event-tab/event-tab.component.ts b/src/app/components/event-tab/event-tab.component.ts index 449ac9c4..9d283ba7 100644 --- a/src/app/components/event-tab/event-tab.component.ts +++ b/src/app/components/event-tab/event-tab.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, computed, inject, input, signal} from '@angular/core'; +import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, computed, inject, input, signal} from '@angular/core'; import {MatDialog} from '@angular/material/dialog'; import {Span} from '../../core/models/Trace'; @@ -29,6 +29,7 @@ import {EventTabMessagesInjectionToken} from './event-tab.component.i18n'; import {InvocIdPipe} from './invoc-id.pipe'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-event-tab', templateUrl: './event-tab.component.html', styleUrl: './event-tab.component.scss', diff --git a/src/app/components/event-tab/trace-chart/trace-chart.component.ts b/src/app/components/event-tab/trace-chart/trace-chart.component.ts index af2c96ac..48038043 100644 --- a/src/app/components/event-tab/trace-chart/trace-chart.component.ts +++ b/src/app/components/event-tab/trace-chart/trace-chart.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Inject, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, Inject, OnInit } from "@angular/core"; import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from "@angular/material/dialog"; import { CdkScrollable } from "@angular/cdk/scrolling"; import { MatButton } from "@angular/material/button"; @@ -44,6 +44,7 @@ interface TimeTick { } @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-trace-chart', templateUrl: './trace-chart.component.html', styleUrl: './trace-chart.component.scss', diff --git a/src/app/components/json-tooltip/json-tooltip.component.ts b/src/app/components/json-tooltip/json-tooltip.component.ts index 65c34eda..5c01fdc6 100644 --- a/src/app/components/json-tooltip/json-tooltip.component.ts +++ b/src/app/components/json-tooltip/json-tooltip.component.ts @@ -14,10 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { NgxJsonViewerModule } from 'ngx-json-viewer'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-json-tooltip', template: ` @if (title) { diff --git a/src/app/components/long-running-response/long-running-response.ts b/src/app/components/long-running-response/long-running-response.ts index 1645b04d..57ee2f5e 100644 --- a/src/app/components/long-running-response/long-running-response.ts +++ b/src/app/components/long-running-response/long-running-response.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import {ChangeDetectorRef, Component, EventEmitter, inject, Input, Output} from '@angular/core'; +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {MatButton, MatIconButton} from '@angular/material/button'; import {MatIcon} from '@angular/material/icon'; @@ -26,6 +26,7 @@ import {JsonTooltipDirective} from '../../directives/html-tooltip.directive'; import {MarkdownComponent} from '../markdown/markdown.component'; @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-long-running-response', templateUrl: './long-running-response.html', styleUrl: './long-running-response.scss', diff --git a/src/app/components/markdown/markdown.component.ts b/src/app/components/markdown/markdown.component.ts index 9e7a0705..04449731 100644 --- a/src/app/components/markdown/markdown.component.ts +++ b/src/app/components/markdown/markdown.component.ts @@ -16,13 +16,14 @@ */ import {CommonModule} from '@angular/common'; -import {Component, input} from '@angular/core'; +import {ChangeDetectionStrategy, Component, input} from '@angular/core'; import {MarkdownModule, provideMarkdown} from 'ngx-markdown'; /** * Renders markdown text. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-markdown', templateUrl: './markdown.component.html', standalone: true, diff --git a/src/app/components/markdown/testing/mock-markdown.component.ts b/src/app/components/markdown/testing/mock-markdown.component.ts index a954236a..6af7769d 100644 --- a/src/app/components/markdown/testing/mock-markdown.component.ts +++ b/src/app/components/markdown/testing/mock-markdown.component.ts @@ -16,7 +16,7 @@ */ import {CommonModule} from '@angular/common'; -import {Component, input} from '@angular/core'; +import {ChangeDetectionStrategy, Component, input} from '@angular/core'; import {MarkdownComponentInterface} from '../markdown.component.interface'; @@ -24,6 +24,7 @@ import {MarkdownComponentInterface} from '../markdown.component.interface'; * Mock markdown component for testing. */ @Component({ + changeDetection: ChangeDetectionStrategy.Eager, selector: 'app-markdown', imports: [CommonModule], template: ` From a201a3ad124a3a801f9eb7e5629462ddad0a98cc Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Thu, 19 Mar 2026 12:02:21 -0700 Subject: [PATCH 036/323] Fix ChangeDetectStrategy error --- src/app/app.component.ts | 2 +- .../add-callback-dialog/add-callback-dialog.component.ts | 2 +- .../components/add-item-dialog/add-item-dialog.component.ts | 2 +- .../components/add-tool-dialog/add-tool-dialog.component.ts | 2 +- src/app/components/artifact-tab/artifact-tab.component.ts | 2 +- src/app/components/audio-player/audio-player.component.ts | 2 +- .../builder-assistant/builder-assistant.component.ts | 2 +- .../built-in-tool-dialog/built-in-tool-dialog.component.ts | 2 +- src/app/components/canvas/canvas.component.ts | 2 +- src/app/components/chat-panel/chat-panel.component.ts | 2 +- src/app/components/chat/chat.component.spec.ts | 4 ++-- src/app/components/chat/chat.component.ts | 4 ++-- src/app/components/code-editor/code-editor.component.ts | 2 +- .../components/computer-action/computer-action.component.ts | 2 +- .../confirmation-dialog/confirmation-dialog.component.ts | 2 +- src/app/components/custom-logo/custom-logo.component.ts | 2 +- .../components/edit-json-dialog/edit-json-dialog.component.ts | 2 +- .../add-eval-session-dialog.component.ts | 2 +- src/app/components/eval-tab/eval-tab.component.ts | 2 +- .../new-eval-set-dialog-component.component.ts | 2 +- .../run-eval-config-dialog.component.ts | 2 +- src/app/components/event-tab/event-tab.component.ts | 2 +- .../components/event-tab/trace-chart/trace-chart.component.ts | 2 +- src/app/components/json-editor/json-editor.component.ts | 2 +- src/app/components/json-tooltip/json-tooltip.component.ts | 2 +- .../components/long-running-response/long-running-response.ts | 2 +- src/app/components/markdown/markdown.component.ts | 2 +- .../components/markdown/testing/mock-markdown.component.ts | 2 +- .../components/message-feedback/message-feedback.component.ts | 2 +- .../delete-session-dialog/delete-session-dialog.component.ts | 2 +- src/app/components/session-tab/session-tab.component.ts | 2 +- src/app/components/side-panel/side-panel.component.ts | 2 +- src/app/components/state-tab/state-tab.component.ts | 2 +- src/app/components/theme-toggle/theme-toggle.ts | 2 +- .../components/trace-tab/trace-event/trace-event.component.ts | 2 +- src/app/components/trace-tab/trace-tab.component.ts | 2 +- .../components/trace-tab/trace-tree/trace-tree.component.ts | 2 +- .../view-image-dialog/view-image-dialog.component.ts | 2 +- src/app/directives/resizable-drawer.directive.spec.ts | 2 +- 39 files changed, 41 insertions(+), 41 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 05243a37..490830ac 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -19,7 +19,7 @@ import {ChangeDetectionStrategy, Component} from '@angular/core'; import { ChatComponent } from './components/chat/chat.component'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-root', templateUrl: './app.component.html', styleUrl: './app.component.scss', diff --git a/src/app/components/add-callback-dialog/add-callback-dialog.component.ts b/src/app/components/add-callback-dialog/add-callback-dialog.component.ts index 23786265..7f047ac3 100644 --- a/src/app/components/add-callback-dialog/add-callback-dialog.component.ts +++ b/src/app/components/add-callback-dialog/add-callback-dialog.component.ts @@ -44,7 +44,7 @@ export class ImmediateErrorStateMatcher implements ErrorStateMatcher { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-add-callback-dialog', templateUrl: './add-callback-dialog.component.html', styleUrl: './add-callback-dialog.component.scss', diff --git a/src/app/components/add-item-dialog/add-item-dialog.component.ts b/src/app/components/add-item-dialog/add-item-dialog.component.ts index 45e620ee..44a5e7d6 100644 --- a/src/app/components/add-item-dialog/add-item-dialog.component.ts +++ b/src/app/components/add-item-dialog/add-item-dialog.component.ts @@ -34,7 +34,7 @@ import { FormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-add-item-dialog', templateUrl: './add-item-dialog.component.html', styleUrl: './add-item-dialog.component.scss', diff --git a/src/app/components/add-tool-dialog/add-tool-dialog.component.ts b/src/app/components/add-tool-dialog/add-tool-dialog.component.ts index c4429d62..c02062a8 100644 --- a/src/app/components/add-tool-dialog/add-tool-dialog.component.ts +++ b/src/app/components/add-tool-dialog/add-tool-dialog.component.ts @@ -27,7 +27,7 @@ import { MatIcon } from '@angular/material/icon'; import { TooltipUtil } from '../../../utils/tooltip-util'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-add-tool-dialog', templateUrl: './add-tool-dialog.component.html', styleUrl: './add-tool-dialog.component.scss', diff --git a/src/app/components/artifact-tab/artifact-tab.component.ts b/src/app/components/artifact-tab/artifact-tab.component.ts index b89dbf31..d40c3602 100644 --- a/src/app/components/artifact-tab/artifact-tab.component.ts +++ b/src/app/components/artifact-tab/artifact-tab.component.ts @@ -88,7 +88,7 @@ export function isArtifactAudio(mimeType: string): boolean { @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-artifact-tab', templateUrl: './artifact-tab.component.html', styleUrl: './artifact-tab.component.scss', diff --git a/src/app/components/audio-player/audio-player.component.ts b/src/app/components/audio-player/audio-player.component.ts index 3166a92a..cbf97ddb 100644 --- a/src/app/components/audio-player/audio-player.component.ts +++ b/src/app/components/audio-player/audio-player.component.ts @@ -18,7 +18,7 @@ import {ChangeDetectionStrategy, Component, ElementRef, input, OnChanges, SimpleChanges, viewChild} from '@angular/core'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-audio-player', templateUrl: './audio-player.component.html', styleUrls: ['./audio-player.component.scss'], diff --git a/src/app/components/builder-assistant/builder-assistant.component.ts b/src/app/components/builder-assistant/builder-assistant.component.ts index ec882783..49555f3e 100644 --- a/src/app/components/builder-assistant/builder-assistant.component.ts +++ b/src/app/components/builder-assistant/builder-assistant.component.ts @@ -32,7 +32,7 @@ import { YamlUtils } from '../../../utils/yaml-utils'; import {MARKDOWN_COMPONENT, MarkdownComponentInterface} from '../markdown/markdown.component.interface'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-builder-assistant', templateUrl: './builder-assistant.component.html', styleUrl: './builder-assistant.component.scss', diff --git a/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts b/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts index 66418dc7..e7b84450 100644 --- a/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts +++ b/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.ts @@ -30,7 +30,7 @@ interface ToolCategory { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-built-in-tool-dialog', templateUrl: './built-in-tool-dialog.component.html', styleUrl: './built-in-tool-dialog.component.scss', diff --git a/src/app/components/canvas/canvas.component.ts b/src/app/components/canvas/canvas.component.ts index 5e8fefa7..8eacc43b 100644 --- a/src/app/components/canvas/canvas.component.ts +++ b/src/app/components/canvas/canvas.component.ts @@ -38,7 +38,7 @@ import { AsyncPipe } from "@angular/common"; import { BuilderAssistantComponent } from "../builder-assistant/builder-assistant.component"; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: "app-canvas", templateUrl: "./canvas.component.html", styleUrl: "./canvas.component.scss", diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index f0e708ab..5d53b3cc 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -58,7 +58,7 @@ import {ChatPanelMessagesInjectionToken} from './chat-panel.component.i18n'; const ROOT_AGENT = 'root_agent'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-chat-panel', templateUrl: './chat-panel.component.html', styleUrl: './chat-panel.component.scss', diff --git a/src/app/components/chat/chat.component.spec.ts b/src/app/components/chat/chat.component.spec.ts index 059c0362..f1263ebc 100644 --- a/src/app/components/chat/chat.component.spec.ts +++ b/src/app/components/chat/chat.component.spec.ts @@ -74,7 +74,7 @@ import {ChatComponent, HIDE_SIDE_PANEL_QUERY_PARAM, INITIAL_USER_INPUT_QUERY_PAR // Mock EvalTabComponent to satisfy the required viewChild in ChatComponent @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-eval-tab', template: '', standalone: true, @@ -87,7 +87,7 @@ class MockEvalTabComponent { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'test-host-component', template: `
diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 6baa73b1..eb8b1d8f 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -17,7 +17,7 @@ import { AsyncPipe, DOCUMENT, NgClass } from '@angular/common'; import { HttpErrorResponse } from '@angular/common/http'; -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, inject, Injectable, OnDestroy, OnInit, Renderer2, signal, viewChild, WritableSignal } from '@angular/core'; +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, inject, Injectable, OnDestroy, OnInit, Renderer2, signal, viewChild, WritableSignal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButton, MatFabButton } from '@angular/material/button'; @@ -124,7 +124,7 @@ const BIDI_STREAMING_RESTART_WARNING = 'Restarting bidirectional streaming is not currently supported. Please refresh the page or start a new session.'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-chat', templateUrl: './chat.component.html', styleUrl: './chat.component.scss', diff --git a/src/app/components/code-editor/code-editor.component.ts b/src/app/components/code-editor/code-editor.component.ts index 1750fee7..131aa14c 100644 --- a/src/app/components/code-editor/code-editor.component.ts +++ b/src/app/components/code-editor/code-editor.component.ts @@ -90,7 +90,7 @@ const pythonLinter = linter((view) => { }); @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-code-editor', templateUrl: './code-editor.component.html', styleUrls: ['./code-editor.component.scss'], diff --git a/src/app/components/computer-action/computer-action.component.ts b/src/app/components/computer-action/computer-action.component.ts index 98687584..a4852393 100644 --- a/src/app/components/computer-action/computer-action.component.ts +++ b/src/app/components/computer-action/computer-action.component.ts @@ -23,7 +23,7 @@ import {ComputerUseClickCall, ComputerUsePayload, isComputerUseResponse, isVisib import type {FunctionCall, FunctionResponse} from '../../core/models/types'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-computer-action', templateUrl: './computer-action.component.html', styleUrl: './computer-action.component.scss', diff --git a/src/app/components/confirmation-dialog/confirmation-dialog.component.ts b/src/app/components/confirmation-dialog/confirmation-dialog.component.ts index b7b58152..b1d7561b 100644 --- a/src/app/components/confirmation-dialog/confirmation-dialog.component.ts +++ b/src/app/components/confirmation-dialog/confirmation-dialog.component.ts @@ -44,7 +44,7 @@ export interface ConfirmationDialogData { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-confirmation-dialog', templateUrl: './confirmation-dialog.component.html', styleUrls: ['./confirmation-dialog.component.scss'], diff --git a/src/app/components/custom-logo/custom-logo.component.ts b/src/app/components/custom-logo/custom-logo.component.ts index 7a324478..6b404c8a 100644 --- a/src/app/components/custom-logo/custom-logo.component.ts +++ b/src/app/components/custom-logo/custom-logo.component.ts @@ -21,7 +21,7 @@ import {RuntimeConfigUtil} from '../../../utils/runtime-config-util'; /** Logo component to override the default logo. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-custom-logo', standalone: true, templateUrl: './custom-logo.component.html', diff --git a/src/app/components/edit-json-dialog/edit-json-dialog.component.ts b/src/app/components/edit-json-dialog/edit-json-dialog.component.ts index 5964f98e..08f1bf9d 100644 --- a/src/app/components/edit-json-dialog/edit-json-dialog.component.ts +++ b/src/app/components/edit-json-dialog/edit-json-dialog.component.ts @@ -30,7 +30,7 @@ export interface EditJsonData { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-edit-json-dialog', templateUrl: './edit-json-dialog.component.html', styleUrls: ['./edit-json-dialog.component.scss'], diff --git a/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts b/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts index 7b612779..65094f37 100644 --- a/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts +++ b/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.ts @@ -26,7 +26,7 @@ import { FormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-add-eval-session-dialog', templateUrl: './add-eval-session-dialog.component.html', styleUrl: './add-eval-session-dialog.component.scss', diff --git a/src/app/components/eval-tab/eval-tab.component.ts b/src/app/components/eval-tab/eval-tab.component.ts index 5a833188..091f8f08 100644 --- a/src/app/components/eval-tab/eval-tab.component.ts +++ b/src/app/components/eval-tab/eval-tab.component.ts @@ -79,7 +79,7 @@ interface AppEvaluationResult { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-eval-tab', templateUrl: './eval-tab.component.html', styleUrl: './eval-tab.component.scss', diff --git a/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts b/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts index 7adf09f9..ba48a69f 100644 --- a/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts +++ b/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.ts @@ -26,7 +26,7 @@ import { FormsModule } from '@angular/forms'; import { MatButton } from '@angular/material/button'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-new-eval-set-dialog-component', templateUrl: './new-eval-set-dialog-component.component.html', styleUrl: './new-eval-set-dialog-component.component.scss', diff --git a/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts b/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts index 14e5c8b5..f04bffda 100644 --- a/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts +++ b/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.ts @@ -34,7 +34,7 @@ export interface EvalConfigData { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-run-eval-config-dialog', templateUrl: './run-eval-config-dialog.component.html', styleUrls: ['./run-eval-config-dialog.component.scss'], diff --git a/src/app/components/event-tab/event-tab.component.ts b/src/app/components/event-tab/event-tab.component.ts index 9d283ba7..7fca276f 100644 --- a/src/app/components/event-tab/event-tab.component.ts +++ b/src/app/components/event-tab/event-tab.component.ts @@ -29,7 +29,7 @@ import {EventTabMessagesInjectionToken} from './event-tab.component.i18n'; import {InvocIdPipe} from './invoc-id.pipe'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-event-tab', templateUrl: './event-tab.component.html', styleUrl: './event-tab.component.scss', diff --git a/src/app/components/event-tab/trace-chart/trace-chart.component.ts b/src/app/components/event-tab/trace-chart/trace-chart.component.ts index 48038043..7c02a8b3 100644 --- a/src/app/components/event-tab/trace-chart/trace-chart.component.ts +++ b/src/app/components/event-tab/trace-chart/trace-chart.component.ts @@ -44,7 +44,7 @@ interface TimeTick { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-trace-chart', templateUrl: './trace-chart.component.html', styleUrl: './trace-chart.component.scss', diff --git a/src/app/components/json-editor/json-editor.component.ts b/src/app/components/json-editor/json-editor.component.ts index 5d3f65cb..b39de4b3 100644 --- a/src/app/components/json-editor/json-editor.component.ts +++ b/src/app/components/json-editor/json-editor.component.ts @@ -19,7 +19,7 @@ import {AfterViewInit, Component, ElementRef, Input, ChangeDetectionStrategy} fr import {createJSONEditor, Mode} from 'vanilla-jsoneditor'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager,selector: 'app-json-editor', + changeDetection: ChangeDetectionStrategy.Default,selector: 'app-json-editor', templateUrl: './json-editor.component.html', styleUrls: ['./json-editor.component.scss'], }) diff --git a/src/app/components/json-tooltip/json-tooltip.component.ts b/src/app/components/json-tooltip/json-tooltip.component.ts index 5c01fdc6..d42fcde7 100644 --- a/src/app/components/json-tooltip/json-tooltip.component.ts +++ b/src/app/components/json-tooltip/json-tooltip.component.ts @@ -18,7 +18,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { NgxJsonViewerModule } from 'ngx-json-viewer'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-json-tooltip', template: ` @if (title) { diff --git a/src/app/components/long-running-response/long-running-response.ts b/src/app/components/long-running-response/long-running-response.ts index 57ee2f5e..ea40570a 100644 --- a/src/app/components/long-running-response/long-running-response.ts +++ b/src/app/components/long-running-response/long-running-response.ts @@ -26,7 +26,7 @@ import {JsonTooltipDirective} from '../../directives/html-tooltip.directive'; import {MarkdownComponent} from '../markdown/markdown.component'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-long-running-response', templateUrl: './long-running-response.html', styleUrl: './long-running-response.scss', diff --git a/src/app/components/markdown/markdown.component.ts b/src/app/components/markdown/markdown.component.ts index 04449731..733d1ca7 100644 --- a/src/app/components/markdown/markdown.component.ts +++ b/src/app/components/markdown/markdown.component.ts @@ -23,7 +23,7 @@ import {MarkdownModule, provideMarkdown} from 'ngx-markdown'; * Renders markdown text. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-markdown', templateUrl: './markdown.component.html', standalone: true, diff --git a/src/app/components/markdown/testing/mock-markdown.component.ts b/src/app/components/markdown/testing/mock-markdown.component.ts index 6af7769d..b6d36380 100644 --- a/src/app/components/markdown/testing/mock-markdown.component.ts +++ b/src/app/components/markdown/testing/mock-markdown.component.ts @@ -24,7 +24,7 @@ import {MarkdownComponentInterface} from '../markdown.component.interface'; * Mock markdown component for testing. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-markdown', imports: [CommonModule], template: ` diff --git a/src/app/components/message-feedback/message-feedback.component.ts b/src/app/components/message-feedback/message-feedback.component.ts index bebc4f6a..34d447ae 100644 --- a/src/app/components/message-feedback/message-feedback.component.ts +++ b/src/app/components/message-feedback/message-feedback.component.ts @@ -31,7 +31,7 @@ import {Feedback, FEEDBACK_SERVICE} from '../../core/services/interfaces/feedbac import {MessageFeedbackMessagesInjectionToken} from './message-feedback.component.i18n'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-message-feedback', templateUrl: './message-feedback.component.html', styleUrl: './message-feedback.component.scss', diff --git a/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts b/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts index 23bfcb15..7fb147e9 100644 --- a/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts +++ b/src/app/components/session-tab/delete-session-dialog/delete-session-dialog.component.ts @@ -34,7 +34,7 @@ export interface DeleteSessionDialogData { * Dialog component to confirm deleting a session. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-delete-session-dialog', templateUrl: './delete-session-dialog.component.html', styleUrls: ['./delete-session-dialog.component.scss'], diff --git a/src/app/components/session-tab/session-tab.component.ts b/src/app/components/session-tab/session-tab.component.ts index b087c5a8..6bc6d725 100644 --- a/src/app/components/session-tab/session-tab.component.ts +++ b/src/app/components/session-tab/session-tab.component.ts @@ -38,7 +38,7 @@ import {SessionTabMessagesInjectionToken} from './session-tab.component.i18n'; * Displays a list of sessions and handles session loading and pagination. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-session-tab', templateUrl: './session-tab.component.html', styleUrl: './session-tab.component.scss', diff --git a/src/app/components/side-panel/side-panel.component.ts b/src/app/components/side-panel/side-panel.component.ts index f23247ce..c7701a99 100644 --- a/src/app/components/side-panel/side-panel.component.ts +++ b/src/app/components/side-panel/side-panel.component.ts @@ -54,7 +54,7 @@ import {SidePanelMessagesInjectionToken} from './side-panel.component.i18n'; * Side panel component. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-side-panel', templateUrl: './side-panel.component.html', styleUrls: ['./side-panel.component.scss'], diff --git a/src/app/components/state-tab/state-tab.component.ts b/src/app/components/state-tab/state-tab.component.ts index 33133b29..44415d45 100644 --- a/src/app/components/state-tab/state-tab.component.ts +++ b/src/app/components/state-tab/state-tab.component.ts @@ -24,7 +24,7 @@ import {StateTabMessagesInjectionToken} from './state-tab.component.i18n'; /** Component to display contents of a SessionState. */ @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-state-tab', templateUrl: './state-tab.component.html', styleUrl: './state-tab.component.scss', diff --git a/src/app/components/theme-toggle/theme-toggle.ts b/src/app/components/theme-toggle/theme-toggle.ts index 46b12e36..e1e5aa36 100644 --- a/src/app/components/theme-toggle/theme-toggle.ts +++ b/src/app/components/theme-toggle/theme-toggle.ts @@ -23,7 +23,7 @@ import {MatTooltipModule} from '@angular/material/tooltip'; import {THEME_SERVICE} from '../../core/services/interfaces/theme'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-theme-toggle', imports: [MatIconModule, MatButtonModule, MatTooltipModule], templateUrl: './theme-toggle.html', diff --git a/src/app/components/trace-tab/trace-event/trace-event.component.ts b/src/app/components/trace-tab/trace-event/trace-event.component.ts index d2dd94df..120f94c8 100644 --- a/src/app/components/trace-tab/trace-event/trace-event.component.ts +++ b/src/app/components/trace-tab/trace-event/trace-event.component.ts @@ -36,7 +36,7 @@ import {UI_STATE_SERVICE} from '../../../core/services/interfaces/ui-state'; import {ViewImageDialogComponent} from '../../view-image-dialog/view-image-dialog.component'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-trace-event', templateUrl: './trace-event.component.html', styleUrl: './trace-event.component.scss', diff --git a/src/app/components/trace-tab/trace-tab.component.ts b/src/app/components/trace-tab/trace-tab.component.ts index c1187a63..2f7f430b 100644 --- a/src/app/components/trace-tab/trace-tab.component.ts +++ b/src/app/components/trace-tab/trace-tab.component.ts @@ -25,7 +25,7 @@ import {TraceTabMessagesInjectionToken} from './trace-tab.component.i18n'; import {TraceTreeComponent} from './trace-tree/trace-tree.component'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-trace-tab', templateUrl: './trace-tab.component.html', styleUrl: './trace-tab.component.scss', diff --git a/src/app/components/trace-tab/trace-tree/trace-tree.component.ts b/src/app/components/trace-tab/trace-tree/trace-tree.component.ts index ce8e7bde..79b3d226 100644 --- a/src/app/components/trace-tab/trace-tree/trace-tree.component.ts +++ b/src/app/components/trace-tab/trace-tree/trace-tree.component.ts @@ -20,7 +20,7 @@ import {Span} from '../../../core/models/Trace'; import {TRACE_SERVICE} from '../../../core/services/interfaces/trace'; @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-trace-tree', templateUrl: './trace-tree.component.html', styleUrl: './trace-tree.component.scss', diff --git a/src/app/components/view-image-dialog/view-image-dialog.component.ts b/src/app/components/view-image-dialog/view-image-dialog.component.ts index 2074b468..d6e088ca 100644 --- a/src/app/components/view-image-dialog/view-image-dialog.component.ts +++ b/src/app/components/view-image-dialog/view-image-dialog.component.ts @@ -25,7 +25,7 @@ export interface ViewImageDialogData { } @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, selector: 'app-view-image-dialog', templateUrl: './view-image-dialog.component.html', styleUrls: ['./view-image-dialog.component.scss'], diff --git a/src/app/directives/resizable-drawer.directive.spec.ts b/src/app/directives/resizable-drawer.directive.spec.ts index 2b4fffc4..13c0127a 100644 --- a/src/app/directives/resizable-drawer.directive.spec.ts +++ b/src/app/directives/resizable-drawer.directive.spec.ts @@ -31,7 +31,7 @@ const MOCKED_WINDOW_WIDTH = 2000; const MAX_WIDTH = MOCKED_WINDOW_WIDTH / 2; // 1000 @Component({ - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.Default, template: `
Drawer
From 7f66b4f0a764eab0bff43a007e243d63f80b8acd Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Thu, 19 Mar 2026 20:19:53 +0000 Subject: [PATCH 037/323] fix(chat-panel): fix vertical alignment of message elements - Align user/bot messages, event numbers, and node circle icons to flex-start - Fix button alignment in bot-message container - Reduce event number label font size from 14px to 12px - Adjust margin-left for event-chips-container has-content-above from 94px to 82px - Fix output-chip padding/margin and function-event-button margin --- .../chat-panel/chat-panel.component.scss | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 92a395a2..f86be12c 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -83,7 +83,7 @@ background-color: var(--chat-panel-function-event-button-background-color); border-color: var(--chat-panel-function-event-button-border-color) !important; color: var(--chat-panel-function-event-button-text-color) !important; - margin: 5px 5px 5px; + margin: 5px 5px 5px 0px; font-size: 11px !important; padding: 6px 12px !important; min-height: 24px !important; @@ -132,7 +132,7 @@ .message-card.output-chip { display: inline-block !important; - padding: 10px 20px !important; + margin: 0 !important; background-color: rgba(138, 180, 248, 0.15) !important; border: 1px solid rgba(138, 180, 248, 0.3); border-radius: 8px !important; @@ -160,7 +160,7 @@ display: flex; width: 100%; margin-top: 4px; - margin-left: 94px; + margin-left: 82px; } } @@ -198,7 +198,7 @@ .user-message { display: flex; justify-content: flex-end; - align-items: center; + align-items: flex-start; flex-grow: 1; gap: 15px; @@ -221,7 +221,7 @@ .bot-message { display: flex; flex-wrap: wrap; - align-items: center; + align-items: flex-start; flex-grow: 1; .message-card { @@ -230,6 +230,11 @@ color: var(--chat-panel-bot-message-message-card-color); box-shadow: none; } + + button { + align-self: flex-start; + margin-top: 5px; + } } .bot-message:focus-within { @@ -499,25 +504,24 @@ .event-number-container { display: flex; flex-direction: column; - align-self: center; + align-self: flex-start; min-width: 30px; -} - -.bot-message .event-number-container { - margin-right: 8px; + margin-top: 5px; } .user-event-number { margin-right: 8px; - align-self: center; + align-self: flex-start; + margin-top: 5px; } .event-number-label, .event-number-placeholder { - font-size: 14px; + font-size: 12px; font-weight: 600; text-align: center; display: inline-block; + margin-top: 5px; } .event-number-label { @@ -594,11 +598,12 @@ button.video-rec-btn { border-radius: 50%; margin-left: 4px; margin-right: 16px; + margin-top: 2px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; - align-self: center; + align-self: flex-start; color: white; font-size: 14px; font-weight: 600; From 0239222ae231a8ab75e7a4f3cc1f73e45b4f2f65 Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Thu, 19 Mar 2026 14:20:42 -0700 Subject: [PATCH 038/323] pass dark mode to structure graph --- .../agent-structure-graph-dialog.scss | 9 ++++++++- .../agent-structure-graph-dialog.ts | 6 +++++- src/app/core/services/agent.service.ts | 6 ++++-- src/app/core/services/interfaces/agent.ts | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss index f4172200..e8aeb3cc 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss @@ -70,7 +70,6 @@ button[mat-button] { border: 1px solid var(--mdc-dialog-supporting-text-color, rgba(255, 255, 255, 0.2)); border-radius: 8px; padding: 16px; - background-color: rgba(255, 255, 255, 0.95); ::ng-deep svg { max-width: 100%; @@ -80,6 +79,14 @@ button[mat-button] { } } +:host-context(.dark-theme) .svg-container { + background-color: #0e172a; +} + +:host-context(.light-theme) .svg-container { + background-color: #f9fafc; +} + .loading-container, .error-container, .no-graph-container { diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts index fabecb7c..6e661e1d 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.ts @@ -24,6 +24,7 @@ import {SafeHtml} from '@angular/platform-browser'; import {AGENT_SERVICE} from '../../core/services/interfaces/agent'; import {GRAPH_SERVICE} from '../../core/services/interfaces/graph'; import {SAFE_VALUES_SERVICE} from '../../core/services/interfaces/safevalues'; +import {THEME_SERVICE} from '../../core/services/interfaces/theme'; export interface AgentStructureGraphDialogData { appName: string; @@ -50,6 +51,7 @@ export class AgentStructureGraphDialogComponent implements OnInit { private readonly agentService = inject(AGENT_SERVICE); private readonly graphService = inject(GRAPH_SERVICE); private readonly sanitizer = inject(SAFE_VALUES_SERVICE); + private readonly themeService = inject(THEME_SERVICE); public renderedGraph = signal(null); public isLoading = signal(true); @@ -68,7 +70,9 @@ export class AgentStructureGraphDialogComponent implements OnInit { this.errorMessage.set(null); this.renderedGraph.set(null); - this.agentService.getAppGraphImage(this.appName).subscribe({ + const isDarkMode = this.themeService.currentTheme() === 'dark'; + + this.agentService.getAppGraphImage(this.appName, isDarkMode).subscribe({ next: async (response: any) => { try { if (!response?.dotSrc) { diff --git a/src/app/core/services/agent.service.ts b/src/app/core/services/agent.service.ts index 03468ef8..1dd7fb2d 100644 --- a/src/app/core/services/agent.service.ts +++ b/src/app/core/services/agent.service.ts @@ -184,10 +184,12 @@ export class AgentService implements AgentServiceInterface { return new Observable<''>(); } - getAppGraphImage(appName: string): Observable { + getAppGraphImage(appName: string, darkMode: boolean): Observable { if (this.apiServerDomain != undefined) { const url = this.apiServerDomain + `/dev/build_graph_image/${appName}`; - return this.http.get(url); + return this.http.get(url, { + params: { dark_mode: darkMode } + }); } return new Observable(); } diff --git a/src/app/core/services/interfaces/agent.ts b/src/app/core/services/interfaces/agent.ts index 8a631ffd..9c6bb47d 100644 --- a/src/app/core/services/interfaces/agent.ts +++ b/src/app/core/services/interfaces/agent.ts @@ -32,7 +32,7 @@ export abstract class AgentService { abstract runSse(req: AgentRunRequest): Observable; abstract listApps(): Observable; abstract getAppInfo(name: string): Observable; - abstract getAppGraphImage(name: string): Observable; + abstract getAppGraphImage(name: string, darkMode: boolean): Observable; getAgentBuilderTmp(agentName: string): Observable { console.warn('unimplemented'); return of(''); From bc69570e128cc7ea08e70394dbd6608fd17b9dba Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Thu, 19 Mar 2026 22:27:58 +0000 Subject: [PATCH 039/323] Preserve nulls in event details JSON filtering --- .../side-panel/side-panel.component.html | 2 +- .../side-panel/side-panel.component.spec.ts | 54 +++++++++++++++++++ .../side-panel/side-panel.component.ts | 39 ++++++++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index 4fe9d6f4..f928732d 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -179,7 +179,7 @@
}
- +
@if ((uiStateService.isEventRequestResponseLoading() | async) === true || (llmRequest() && Object.keys(llmRequest()!).length > 0)) { diff --git a/src/app/components/side-panel/side-panel.component.spec.ts b/src/app/components/side-panel/side-panel.component.spec.ts index 229e38b0..68c99a98 100644 --- a/src/app/components/side-panel/side-panel.component.spec.ts +++ b/src/app/components/side-panel/side-panel.component.spec.ts @@ -522,6 +522,60 @@ describe('SidePanelComponent', () => { expect(component.openImageDialog.emit).toHaveBeenCalled(); }); }); + + it('filters empty values from selected event JSON', () => { + fixture.componentRef.setInput('selectedEvent', { + id: 'event1', + emptyString: '', + nullValue: null, + undefinedValue: undefined, + nested: { + keep: 'value', + empty: '', + emptyObject: {}, + }, + list: [ + 'item', + '', + null, + { + keep: 1, + empty: '', + }, + {}, + ], + } as any); + fixture.detectChanges(); + + expect(component.getFilteredSelectedEvent() as any).toEqual({ + id: 'event1', + nullValue: null, + nested: { + keep: 'value', + }, + list: [ + 'item', + null, + { + keep: 1, + }, + ], + }); + }); + + it('returns undefined when selected event has only empty values', () => { + fixture.componentRef.setInput('selectedEvent', { + nullValue: null, + nested: { + empty: '', + }, + } as any); + fixture.detectChanges(); + + expect(component.getFilteredSelectedEvent() as any).toEqual({ + nullValue: null, + }); + }); }); describe('Loading state', () => { diff --git a/src/app/components/side-panel/side-panel.component.ts b/src/app/components/side-panel/side-panel.component.ts index c7701a99..7f7cf73f 100644 --- a/src/app/components/side-panel/side-panel.component.ts +++ b/src/app/components/side-panel/side-panel.component.ts @@ -206,6 +206,45 @@ export class SidePanelComponent implements AfterViewInit { return artifacts; }); + getFilteredSelectedEvent(): Event | undefined { + return this.filterEmptyValues(this.selectedEvent()) as Event | undefined; + } + + private filterEmptyValues(value: unknown): unknown { + if (value === undefined) { + return undefined; + } + + if (value === null) { + return null; + } + + if (typeof value === 'string') { + return value.trim() === '' ? undefined : value; + } + + if (Array.isArray(value)) { + const filteredArray = value + .map((item) => this.filterEmptyValues(item)) + .filter((item) => item !== undefined); + return filteredArray.length > 0 ? filteredArray : undefined; + } + + if (typeof value === 'object') { + const filteredEntries = Object.entries(value) + .map(([key, item]) => [key, this.filterEmptyValues(item)] as const) + .filter(([, item]) => item !== undefined); + + if (filteredEntries.length === 0) { + return undefined; + } + + return Object.fromEntries(filteredEntries); + } + + return value; + } + ngAfterViewInit() { // Wait one tick until the eval tab container is ready. setTimeout(() => { From 9171291eebfa689ab5c7f7fb94f92f2c70f4dc54 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Thu, 19 Mar 2026 22:28:35 +0000 Subject: [PATCH 040/323] Adjust chat panel message spacing --- src/app/components/chat-panel/chat-panel.component.scss | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index f86be12c..8a7a58c4 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -38,7 +38,6 @@ .message-card { padding: 5px 20px; - margin: 5px; border-radius: 20px; max-width: 80%; font-size: 14px; @@ -233,7 +232,6 @@ button { align-self: flex-start; - margin-top: 5px; } } From 5a932824375c97e2b51322c1a3198281209e05bf Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Thu, 19 Mar 2026 22:46:19 +0000 Subject: [PATCH 041/323] fix(json-tooltip): improve scroll containment and layout in tooltip panel --- .../json-tooltip/json-tooltip.component.ts | 30 +++++++++++++++---- src/app/directives/html-tooltip.directive.ts | 3 +- src/styles.scss | 1 + 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/app/components/json-tooltip/json-tooltip.component.ts b/src/app/components/json-tooltip/json-tooltip.component.ts index d42fcde7..de481323 100644 --- a/src/app/components/json-tooltip/json-tooltip.component.ts +++ b/src/app/components/json-tooltip/json-tooltip.component.ts @@ -21,20 +21,35 @@ import { NgxJsonViewerModule } from 'ngx-json-viewer'; changeDetection: ChangeDetectionStrategy.Default, selector: 'app-json-tooltip', template: ` - @if (title) { -
{{ title }}
- } - +
+ @if (title) { +
{{ title }}
+ } +
+ +
+
`, styles: [` :host { display: block; font-size: 12px; line-height: 1.4; + word-break: break-word; + overflow: hidden; + } + .tooltip-shell { + display: flex; + flex-direction: column; max-width: 800px; max-height: 80vh; + overflow: hidden; + } + .tooltip-content { + min-height: 0; overflow: auto; - word-break: break-word; + overscroll-behavior: contain; + scrollbar-gutter: stable; } .tooltip-title { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; @@ -49,6 +64,11 @@ import { NgxJsonViewerModule } from 'ngx-json-viewer'; background: inherit; z-index: 1; } + ngx-json-viewer { + display: block; + height: auto !important; + min-width: 0; + } `], standalone: true, imports: [NgxJsonViewerModule], diff --git a/src/app/directives/html-tooltip.directive.ts b/src/app/directives/html-tooltip.directive.ts index 45a55121..3c306730 100644 --- a/src/app/directives/html-tooltip.directive.ts +++ b/src/app/directives/html-tooltip.directive.ts @@ -75,7 +75,6 @@ export class JsonTooltipDirective implements OnDestroy { positionStrategy, scrollStrategy: this.overlay.scrollStrategies.close(), panelClass: 'json-tooltip-panel', - maxHeight: '80vh', maxWidth: '90vw', }); @@ -83,6 +82,8 @@ export class JsonTooltipDirective implements OnDestroy { const tooltipRef = this.overlayRef.attach(tooltipPortal); tooltipRef.instance.json = this.json; tooltipRef.instance.title = this.title; + tooltipRef.changeDetectorRef.detectChanges(); + this.overlayRef.updatePosition(); } @HostListener('mouseleave') diff --git a/src/styles.scss b/src/styles.scss index 670af67d..bc3656de 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -962,6 +962,7 @@ html.light-theme { padding: 8px 12px !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important; max-width: 800px !important; + overflow: hidden !important; } // Transparent backdrop for workflow graph tooltip From 543efe1d2b3cf53510de25afd2dec8be489552dc Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Fri, 20 Mar 2026 03:28:03 +0000 Subject: [PATCH 042/323] Refine chat toolbar session actions menu styling --- .../chat-panel/chat-panel.component.scss | 1 + src/app/components/chat/chat.component.html | 63 +++++++++---------- .../components/chat/chat.component.i18n.ts | 1 + src/app/components/chat/chat.component.scss | 12 ++-- src/app/components/chat/chat.component.ts | 6 +- src/styles.scss | 2 + 6 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 8a7a58c4..c74a438b 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -135,6 +135,7 @@ background-color: rgba(138, 180, 248, 0.15) !important; border: 1px solid rgba(138, 180, 248, 0.3); border-radius: 8px !important; + padding: 5px !important; .output-chip-header { font-weight: 600; diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index f867ff6a..132f8af2 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -198,20 +198,6 @@
@if (isSessionLoading === false) {
-
- - {{ i18n.tokenStreamingLabel }} - -
-
add {{ i18n.newSessionButton }}
- @if (isDeleteSessionEnabledObs | async) { - - delete - - } @if (isExportSessionEnabledObs | async) { - - download - - } @if (importSessionEnabledObs | async) { + @if (importSessionEnabledObs | async) { } + + + @if (isTokenStreamingEnabledObs | async) { + + } + @if (isDeleteSessionEnabledObs | async) { + + } + @if (isExportSessionEnabledObs | async) { + + } +
} } diff --git a/src/app/components/chat/chat.component.i18n.ts b/src/app/components/chat/chat.component.i18n.ts index 29a6f67b..c6de6d7f 100644 --- a/src/app/components/chat/chat.component.i18n.ts +++ b/src/app/components/chat/chat.component.i18n.ts @@ -31,6 +31,7 @@ export const CHAT_MESSAGES = { userIdLabel: 'User ID', loadingSessionLabel: 'Loading session...', tokenStreamingLabel: 'Token Streaming', + moreOptionsTooltip: 'More options', createNewSessionTooltip: 'Create a new Session', newSessionButton: 'New Session', deleteSessionTooltip: 'Delete current session', diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 99bdd920..23327000 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -339,11 +339,6 @@ border-radius: 4px; } -button { - margin-left: 20px; - margin-right: 20px; -} - .empty-state-container { color: var(--chat-empty-state-container-color); height: 100%; @@ -572,6 +567,13 @@ button { ); } +.toolbar-more-actions-button { + margin-right: 8px; + background-color: transparent !important; + border: none !important; + box-shadow: none !important; +} + :host ::ng-deep pre { white-space: pre-wrap; word-break: break-word; diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index eb8b1d8f..2c7b2b62 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -23,11 +23,10 @@ import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButton, MatFabButton } from '@angular/material/button'; import { MatCard } from '@angular/material/card'; import { MatDialog } from '@angular/material/dialog'; -import { MatDivider } from '@angular/material/divider'; import { MatIcon } from '@angular/material/icon'; +import { MatMenuModule } from '@angular/material/menu'; import { MatPaginatorIntl } from '@angular/material/paginator'; import { MatDrawer, MatDrawerContainer } from '@angular/material/sidenav'; -import { MatSlideToggle } from '@angular/material/slide-toggle'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatTooltip } from '@angular/material/tooltip'; import { SafeHtml } from '@angular/platform-browser'; @@ -142,8 +141,7 @@ const BIDI_STREAMING_RESTART_WARNING = NgxJsonViewerModule, NgClass, MatButton, - MatSlideToggle, - MatDivider, + MatMenuModule, MatCard, MatFabButton, ResizableBottomDirective, diff --git a/src/styles.scss b/src/styles.scss index bc3656de..e49f6f6b 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -183,6 +183,7 @@ html.dark-theme { --mdc-dialog-subhead-font-size: 24px; --mdc-dialog-subhead-line-height: 32px; --mdc-dialog-subhead-color: #e3e3e3; + --mdc-dialog-container-color: #2b2b2f; @include mat.dialog-overrides((container-color: #2b2b2f, subhead-color: white, @@ -198,6 +199,7 @@ html.light-theme { --mdc-dialog-subhead-font-size: 24px; --mdc-dialog-subhead-line-height: 32px; --mdc-dialog-subhead-color: #202124; + --mdc-dialog-container-color: #ffffff; @include mat.dialog-overrides((container-color: #ffffff, subhead-color: #202124, From 665911e3316c4d2d0e1c0c9c9ba380a3459eb216 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Fri, 20 Mar 2026 03:51:22 +0000 Subject: [PATCH 043/323] Add toolbar session copy UX and theme-aware tooltip colors --- src/app/components/chat/chat.component.html | 13 +++++- .../components/chat/chat.component.i18n.ts | 7 +++- src/app/components/chat/chat.component.scss | 41 +++++++++++++------ src/app/components/chat/chat.component.ts | 21 ++++++++++ src/styles.scss | 7 ++++ 5 files changed, 74 insertions(+), 15 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 132f8af2..70b8e622 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -182,7 +182,18 @@ @let isSessionLoading = uiStateService.isSessionLoading() | async; @if (isSessionLoading === false) {
{{ i18n.sessionIdLabel }}
-
{{ sessionId }}
+
+
{{ getToolbarSessionId() }}
+ +
@if (isUserIdOnToolbarEnabledObs | async) {
{{ i18n.userIdLabel }}
{{ userId }}
diff --git a/src/app/components/chat/chat.component.i18n.ts b/src/app/components/chat/chat.component.i18n.ts index c6de6d7f..1cead9f0 100644 --- a/src/app/components/chat/chat.component.i18n.ts +++ b/src/app/components/chat/chat.component.i18n.ts @@ -28,14 +28,17 @@ export const CHAT_MESSAGES = { editEvalCaseTooltip: 'Edit current eval case', deleteEvalCaseTooltip: 'Delete current eval case', sessionIdLabel: 'Session ID', + copySessionIdTooltip: 'Copy session ID', + sessionIdCopiedMessage: 'Session ID copied', + copySessionIdFailedMessage: 'Failed to copy session ID', userIdLabel: 'User ID', loadingSessionLabel: 'Loading session...', tokenStreamingLabel: 'Token Streaming', moreOptionsTooltip: 'More options', createNewSessionTooltip: 'Create a new Session', newSessionButton: 'New Session', - deleteSessionTooltip: 'Delete current session', - exportSessionTooltip: 'Export current session', + deleteSessionTooltip: 'Delete session', + exportSessionTooltip: 'Export session', importSessionTooltip: 'Import session', loadingAgentsLabel: 'Loading agents, please wait...', welcomeMessage: 'Welcome to ADK!', diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 23327000..4c573da0 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -475,6 +475,8 @@ display: flex; align-items: center; z-index: 10; + font-size: 13px; + padding-left: 20px; } .chat-toolbar.edit-mode { @@ -491,27 +493,43 @@ .toolbar-session-text { color: var(--chat-toolbar-session-text-color); font-family: Roboto; - font-size: 12px; font-style: normal; font-weight: 500; - line-height: 12px; - letter-spacing: 0.8px; text-transform: uppercase; - margin-left: 20px; - padding-top: 4px; flex-shrink: 0; } .toolbar-session-id { color: var(--chat-toolbar-session-id-color); font-family: 'Google Sans Mono', monospace; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 20px; - letter-spacing: 0.25px; margin-left: 5px; - flex-shrink: 0; +} + +.toolbar-session-id-container { + display: flex; + align-items: center; + margin-left: 5px; + + .toolbar-session-id { + margin-left: 0; + } +} + +.toolbar-copy-session-id-button { + width: 24px; + height: 24px; + padding: 0; + margin-left: 4px; + color: var(--chat-toolbar-icon-color); + background-color: transparent; + border: none; + cursor: pointer; + + mat-icon { + font-size: 16px; + width: 16px; + height: 16px; + } } .toolbar-icon { @@ -523,7 +541,6 @@ } #toolbar-new-session-button { - font-size: 14px; margin-right: 16px; color: var(--chat-toolbar-new-session-color); cursor: pointer; diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 2c7b2b62..7c7bc7d6 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -1996,6 +1996,27 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { } } + getToolbarSessionId() { + if (!this.sessionId) { + return ''; + } + + return this.sessionId.length > 8 ? `${this.sessionId.slice(0, 8)}...` : this.sessionId; + } + + async copySessionId() { + if (!this.sessionId) { + return; + } + + try { + await navigator.clipboard.writeText(this.sessionId); + this.openSnackBar(this.i18n.sessionIdCopiedMessage, 'OK'); + } catch { + this.openSnackBar(this.i18n.copySessionIdFailedMessage, 'OK'); + } + } + onFileSelect(event: Event) { const input = event.target as HTMLInputElement; if (input.files) { diff --git a/src/styles.scss b/src/styles.scss index e49f6f6b..ca9f7d01 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -841,6 +841,13 @@ html.light-theme { .mat-mdc-tooltip { z-index: 10000 !important; max-width: 300px; + background-color: var(--mdc-dialog-container-color) !important; + color: var(--mdc-dialog-supporting-text-color) !important; + + .mdc-tooltip__surface { + background-color: var(--mdc-dialog-container-color) !important; + color: var(--mdc-dialog-supporting-text-color) !important; + } } // Ensure Material select panel has proper background From 67370101844b33daa749cbc29cf3bd88b6a1f148 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Fri, 20 Mar 2026 03:59:38 +0000 Subject: [PATCH 044/323] Add editable user ID in chat toolbar --- src/app/components/chat/chat.component.html | 41 ++++++++++++++++++- .../components/chat/chat.component.i18n.ts | 5 +++ src/app/components/chat/chat.component.scss | 40 ++++++++++++++++++ .../components/chat/chat.component.spec.ts | 40 ++++++++++++++++++ src/app/components/chat/chat.component.ts | 38 +++++++++++++++++ 5 files changed, 163 insertions(+), 1 deletion(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 70b8e622..84f50c1d 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -196,7 +196,46 @@
@if (isUserIdOnToolbarEnabledObs | async) {
{{ i18n.userIdLabel }}
-
{{ userId }}
+
+ @if (!isEditingUserId) { +
{{ userId }}
+ + } @else { + + + + } +
} @if (!canEditSession()) {
visibility diff --git a/src/app/components/chat/chat.component.i18n.ts b/src/app/components/chat/chat.component.i18n.ts index 1cead9f0..18025fba 100644 --- a/src/app/components/chat/chat.component.i18n.ts +++ b/src/app/components/chat/chat.component.i18n.ts @@ -32,6 +32,11 @@ export const CHAT_MESSAGES = { sessionIdCopiedMessage: 'Session ID copied', copySessionIdFailedMessage: 'Failed to copy session ID', userIdLabel: 'User ID', + editUserIdTooltip: 'Edit user ID', + userIdInputPlaceholder: 'Enter user ID', + saveUserIdTooltip: 'Save user ID', + cancelUserIdEditTooltip: 'Cancel editing user ID', + invalidUserIdMessage: 'User ID cannot be empty', loadingSessionLabel: 'Loading session...', tokenStreamingLabel: 'Token Streaming', moreOptionsTooltip: 'More options', diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 4c573da0..e7a65b0f 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -532,6 +532,46 @@ } } +.toolbar-user-id-container { + display: flex; + align-items: center; + margin-left: 5px; +} + +.toolbar-user-id-edit-button, +.toolbar-user-id-action-button { + width: 24px; + height: 24px; + padding: 0; + margin-left: 4px; + color: var(--chat-toolbar-icon-color); + background-color: transparent; + border: none; + cursor: pointer; + + mat-icon { + font-size: 16px; + width: 16px; + height: 16px; + } +} + +.toolbar-user-id-input { + width: 140px; + height: 24px; + border: 1px solid var(--chat-toolbar-session-text-color); + border-radius: 4px; + background-color: transparent; + color: var(--chat-toolbar-session-id-color); + padding: 0 6px; + font-family: 'Google Sans Mono', monospace; + font-size: 12px; +} + +.toolbar-user-id-input:focus { + outline: 1px solid var(--chat-toolbar-icon-color); +} + .toolbar-icon { width: 24px; height: 24px; diff --git a/src/app/components/chat/chat.component.spec.ts b/src/app/components/chat/chat.component.spec.ts index f1263ebc..c0b96e44 100644 --- a/src/app/components/chat/chat.component.spec.ts +++ b/src/app/components/chat/chat.component.spec.ts @@ -748,6 +748,46 @@ describe('ChatComponent', () => { }); }); + describe('when editing user ID', () => { + it('starts and cancels edit mode', () => { + component.userId = USER_ID; + + component.startUserIdEdit(); + + expect(component.isEditingUserId).toBeTrue(); + expect(component.userIdDraft).toBe(USER_ID); + + component.cancelUserIdEdit(); + + expect(component.isEditingUserId).toBeFalse(); + expect(component.userIdDraft).toBe(''); + }); + + it('saves edited user ID and updates URL params', () => { + component.userId = USER_ID; + component.userIdDraft = 'new-user-id'; + + component.saveUserId(); + + expect(component.userId).toBe('new-user-id'); + expect(component.isEditingUserId).toBeFalse(); + expect(mockLocation.replaceState).toHaveBeenCalled(); + }); + + it('does not save empty user ID', () => { + component.userId = USER_ID; + component.userIdDraft = ' '; + + component.saveUserId(); + + expect(component.userId).toBe(USER_ID); + expect(mockSnackBar.open).toHaveBeenCalledWith( + 'User ID cannot be empty', + OK_BUTTON_TEXT, + ); + }); + }); + describe('when deleting a session', () => { describe('and dialog is confirmed', () => { beforeEach(() => { diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 7c7bc7d6..f6871c30 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -201,6 +201,8 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { userInput: string = ''; userEditEvalCaseMessage: string = ''; userId = 'user'; + userIdDraft = ''; + isEditingUserId = false; appName = ''; sessionId = ``; sessionIdOfLoadedMessages = ''; @@ -2017,6 +2019,42 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { } } + startUserIdEdit() { + this.userIdDraft = this.userId; + this.isEditingUserId = true; + } + + cancelUserIdEdit() { + this.userIdDraft = ''; + this.isEditingUserId = false; + } + + saveUserId() { + const updatedUserId = this.userIdDraft.trim(); + if (!updatedUserId) { + this.openSnackBar(this.i18n.invalidUserIdMessage, 'OK'); + return; + } + + this.userId = updatedUserId; + this.isEditingUserId = false; + this.isSessionUrlEnabledObs.pipe(take(1)).subscribe((enabled) => { + if (enabled) { + this.updateSelectedSessionUrl(); + } + }); + } + + handleUserIdInputKeydown(event: KeyboardEvent) { + if (event.key === 'Enter') { + event.preventDefault(); + this.saveUserId(); + } else if (event.key === 'Escape') { + event.preventDefault(); + this.cancelUserIdEdit(); + } + } + onFileSelect(event: Event) { const input = event.target as HTMLInputElement; if (input.files) { From 69d82e0b155762b0eb1e7ea891aed8e62c0bd3bb Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Fri, 20 Mar 2026 06:17:10 +0000 Subject: [PATCH 045/323] refactor: replace has-content-above class with CSS sibling selectors and message-content wrapper --- .../chat-panel/chat-panel.component.html | 5 ++-- .../chat-panel/chat-panel.component.scss | 27 ++++++++++++------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index ee1542fb..f63ee702 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -79,6 +79,7 @@
} } +
@if (shouldShowMessageCard(message)) { @@ -288,7 +288,7 @@
} -
+
@if (message.functionCalls && message.functionCalls.length > 0) { @for (functionCall of message.functionCalls; track functionCall.id) { @if (isComputerUseClick(functionCall)) { @@ -448,6 +448,7 @@
} } +
@if (message.role === "user") {
- @if (importSessionEnabledObs | async) { - - upload - - } + } + @if (importSessionEnabledObs | async) { + + } diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 1f8ee2a4..c04aa31d 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -2501,18 +2501,30 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { try { const sessionData = JSON.parse(e.target.result as string) as Session; - if (!sessionData.userId || !sessionData.appName || - !sessionData.events) { - this.openSnackBar('Invalid session file format', 'OK'); + if (!sessionData.events || sessionData.events.length === 0) { + this.openSnackBar('Invalid session file: no events found', 'OK'); return; } - this.sessionService - .importSession( - sessionData.userId, sessionData.appName, sessionData.events) - .subscribe((res) => { - this.openSnackBar('Session imported', 'OK'); - this.sessionTab?.refreshSession(); + + if (sessionData.appName && sessionData.appName !== this.appName) { + const dialogData: DeleteSessionDialogData = { + title: 'App name mismatch', + message: `The session file was exported from app "${sessionData.appName}" but the current app is "${this.appName}". Do you want to import it anyway?`, + confirmButtonText: 'Import', + cancelButtonText: 'Cancel', + }; + const dialogRef = this.dialog.open(DeleteSessionDialogComponent, { + width: '600px', + data: dialogData, + }); + dialogRef.afterClosed().subscribe((confirmed: boolean) => { + if (confirmed) { + this.doImportSession(sessionData); + } }); + } else { + this.doImportSession(sessionData); + } } catch (error) { this.openSnackBar('Error parsing session file', 'OK'); } @@ -2524,4 +2536,20 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { input.click(); } + + private doImportSession(sessionData: Session) { + const now = Date.now() / 1000; + const events = sessionData.events!.map(event => ({ + ...event, + timestamp: now, + })); + + this.sessionService + .importSession(this.userId, this.appName, events, sessionData.state) + .subscribe((res) => { + this.openSnackBar( + `Session imported successfully (ID: ${res.id})`, 'OK'); + this.sessionTab?.refreshSession(); + }); + } } diff --git a/src/app/core/services/feature-flag.service.ts b/src/app/core/services/feature-flag.service.ts index e7906342..ebacf115 100644 --- a/src/app/core/services/feature-flag.service.ts +++ b/src/app/core/services/feature-flag.service.ts @@ -30,9 +30,7 @@ export class FeatureFlagService implements FeatureFlagServiceInterface { constructor() {} isImportSessionEnabled(): Observable { - return this.route.queryParams.pipe( - map((params) => params[IMPORT_SESSION] === 'true'), - ); + return of(true); } isEditFunctionArgsEnabled(): Observable { diff --git a/src/app/core/services/interfaces/session.ts b/src/app/core/services/interfaces/session.ts index 9ef00ad9..9f26f99d 100644 --- a/src/app/core/services/interfaces/session.ts +++ b/src/app/core/services/interfaces/session.ts @@ -18,7 +18,7 @@ import {InjectionToken} from '@angular/core'; import {Observable} from 'rxjs'; -import {Session} from '../../models/Session'; +import {Session, SessionState} from '../../models/Session'; export const SESSION_SERVICE = new InjectionToken('SessionService'); @@ -51,6 +51,7 @@ export declare abstract class SessionService { userId: string, appName: string, events: any[], + state?: SessionState, ): Observable; abstract canEdit(userId: string, session: Session): Observable; } diff --git a/src/app/core/services/session.service.ts b/src/app/core/services/session.service.ts index e0631f0c..7d768ac8 100644 --- a/src/app/core/services/session.service.ts +++ b/src/app/core/services/session.service.ts @@ -21,7 +21,7 @@ import {Observable, of} from 'rxjs'; import {map} from 'rxjs/operators'; import {URLUtil} from '../../../utils/url-util'; -import {Session} from '../models/Session'; +import {Session, SessionState} from '../models/Session'; import {ListResponse, SessionService as SessionServiceInterface} from './interfaces/session'; @@ -74,16 +74,16 @@ export class SessionService implements SessionServiceInterface { return this.http.get(url); } - importSession(userId: string, appName: string, events: any[]) { + importSession(userId: string, appName: string, events: any[], state?: SessionState) { if (this.apiServerDomain != undefined) { const url = this.apiServerDomain + `/apps/${appName}/users/${userId}/sessions`; - return this.http.post(url, { - appName: appName, - userId: userId, - events: events, - }); + const body: {events: any[]; state?: SessionState} = {events}; + if (state) { + body.state = state; + } + return this.http.post(url, body); } return new Observable(); From 53f83291406e3118933c79398dad6607e0978121 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:32:11 +0000 Subject: [PATCH 048/323] Improve chat input layout and move disclaimer to side panel - Widen chat input box (60% -> min(960px, 88%)) - Add send button inline with textarea as matSuffix - Move action buttons outside mat-form-field for proper alignment - Fix button spacing (remove 106% width overflow, use gap) - Add subscriptSizing=dynamic to mat-form-field - Fix send button right padding via scoped icon-suffix override - Remove bottom-right ADK disclaimer label - Add info icon with disclosure tooltip to Agent Development Kit title --- .../chat-panel/chat-panel.component.html | 111 ++++++++++-------- .../chat-panel/chat-panel.component.i18n.ts | 1 + .../chat-panel/chat-panel.component.scss | 24 ++-- src/app/components/chat/chat.component.html | 11 +- .../components/chat/chat.component.i18n.ts | 3 - .../side-panel/side-panel.component.html | 5 + .../side-panel/side-panel.component.i18n.ts | 2 + .../side-panel/side-panel.component.scss | 8 ++ 8 files changed, 91 insertions(+), 74 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index f63ee702..164ae2aa 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -467,7 +467,7 @@ @if(canEditSession()) {
- + @if ((selectedFiles.length && appName != "") || updatedSessionState) {
@for (file of selectedFiles; track file; let i = $index) { @@ -514,58 +514,65 @@ (keydown.enter)="sendMessage.emit($event)" [placeholder]="i18n.typeMessagePlaceholder" > -
-
- - - - {{ i18n.updateStateMenuLabel }} - - -
-
- - -
-
+ +
+
+ + + + {{ i18n.updateStateMenuLabel }} + + +
+
+ + +
+
} diff --git a/src/app/components/chat-panel/chat-panel.component.i18n.ts b/src/app/components/chat-panel/chat-panel.component.i18n.ts index 62d34e30..9f877b89 100644 --- a/src/app/components/chat-panel/chat-panel.component.i18n.ts +++ b/src/app/components/chat-panel/chat-panel.component.i18n.ts @@ -38,6 +38,7 @@ export const CHAT_PANEL_MESSAGES = { deleteEvalMessageTooltip: 'Delete eval case message', editFunctionArgsTooltip: 'Edit function arguments', typeMessagePlaceholder: 'Type a Message...', + sendMessageTooltip: 'Send message', uploadFileTooltip: 'Upload local file', moreOptionsTooltip: 'More options', updateStateMenuLabel: 'Update state', diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index b8599dda..2c6df01b 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -350,8 +350,9 @@ .chat-input { display: flex; + flex-direction: column; padding: 10px; - width: 60%; + width: min(960px, 88%); margin: 0 auto; position: relative; z-index: 1; @@ -365,7 +366,6 @@ textarea { color: var(--chat-panel-input-field-textarea-color); border: none; - padding: 10px; box-sizing: content-box; caret-color: var(--chat-panel-input-field-textarea-caret-color); @@ -381,17 +381,18 @@ } .chat-input-actions { - width: 106%; + width: 100%; margin-top: 10px; display: flex; justify-content: space-between; align-items: center; - max-width: 100%; +} - button { - margin-left: 10px; - margin-right: 10px; - } +.chat-input-actions-left, +.chat-input-actions-right { + display: flex; + align-items: center; + gap: 4px; } .file-preview { @@ -449,6 +450,10 @@ border-radius: 16px; } +:host ::ng-deep .input-field .mat-mdc-form-field-icon-suffix { + padding: 0 16px 0 8px; +} + .image-container { position: relative; display: inline-block; @@ -580,7 +585,8 @@ } button.audio-rec-btn, -button.video-rec-btn { +button.video-rec-btn, +button.send-message-btn { background-color: var(--chat-card-background-color); &.recording { diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index d8ade4ad..ac95f05f 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -378,16 +378,7 @@ >
} - @if (isDeveloperUiDisclaimerEnabledObs | async) { -
- {{i18n.adkWebDeveloperUiMessage}} -
- } + } diff --git a/src/app/components/chat/chat.component.i18n.ts b/src/app/components/chat/chat.component.i18n.ts index 9b764cf2..dc10afca 100644 --- a/src/app/components/chat/chat.component.i18n.ts +++ b/src/app/components/chat/chat.component.i18n.ts @@ -54,9 +54,6 @@ export const CHAT_MESSAGES = { cannotEditSessionMessage: 'Chat is disabled to prevent changes to the end user\'s session.', readOnlyBadgeLabel: 'Read-only', - disclosureTooltip: - 'ADK Web is for development purposes. It has access to all the data and should not be used in production.', - adkWebDeveloperUiMessage: 'ADK Web Developer UI', }; /** diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index f928732d..bf747254 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -11,6 +11,11 @@ } @else { {{ i18n.agentDevelopmentKitLabel }} + info }
diff --git a/src/app/components/side-panel/side-panel.component.i18n.ts b/src/app/components/side-panel/side-panel.component.i18n.ts index 46e50983..19b77f37 100644 --- a/src/app/components/side-panel/side-panel.component.i18n.ts +++ b/src/app/components/side-panel/side-panel.component.i18n.ts @@ -22,6 +22,8 @@ import {InjectionToken} from '@angular/core'; */ export const SIDE_PANEL_MESSAGES = { agentDevelopmentKitLabel: 'Agent Development Kit', + disclosureTooltip: + 'ADK Web is for development purposes. It has access to all the data and should not be used in production.', collapsePanelTooltip: 'Collapse panel', traceTabLabel: 'Trace', eventsTabLabel: 'Events', diff --git a/src/app/components/side-panel/side-panel.component.scss b/src/app/components/side-panel/side-panel.component.scss index 099e777a..709af99f 100644 --- a/src/app/components/side-panel/side-panel.component.scss +++ b/src/app/components/side-panel/side-panel.component.scss @@ -135,6 +135,14 @@ margin-top: -5px; } +.adk-info-icon { + font-size: 16px; + color: var(--side-panel-mat-icon-color, #bdc1c6); + cursor: pointer; + margin-left: 4px; + vertical-align: middle; +} + .app-select { width: 100%; } From c9444baacfa28bba51bed942db86c4d6b527bb92 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Fri, 20 Mar 2026 18:00:32 +0000 Subject: [PATCH 049/323] Fix token streaming toggle check icon not updating - Update enableSseIndicator signal when toggling SSE - Add CSS for .menu-check-icon.inactive to hide checkmark when off --- src/app/components/chat/chat.component.scss | 4 ++++ src/app/components/chat/chat.component.ts | 1 + 2 files changed, 5 insertions(+) diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index e7a65b0f..ca190440 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -809,3 +809,7 @@ app-canvas { font-size: 10px; color: var(--adk-web-text-color-light-gray); } + +.menu-check-icon.inactive { + visibility: hidden; +} diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index c04aa31d..61063e10 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -2109,6 +2109,7 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { toggleSse() { this.useSse = !this.useSse; + this.enableSseIndicator.set(this.useSse); } enterBuilderMode() { From d9c3d3ad2917901e03df1beb1e68ff02dc8ebe6d Mon Sep 17 00:00:00 2001 From: Yifan Wang Date: Tue, 24 Mar 2026 12:02:37 -0700 Subject: [PATCH 050/323] Fix user message not showing up --- src/app/components/chat/chat.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index 61063e10..44823476 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -616,6 +616,7 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { // Add the combined user message as a single row this.messages.update(messages => [...messages, userMessage]); + this.changeDetectorRef.detectChanges(); const userEvent = { id: userEventId, From 35d5ce5291f9288b69cee492be521f34be2fbf74 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:10:57 +0000 Subject: [PATCH 051/323] Reset styles to use Angular standard theme. Remove all manipulation of background color and z-index. --- _theme-colors.scss | 185 ---- .../add-callback-dialog.component.scss | 5 - .../add-item-dialog.component.scss | 1 - .../add-tool-dialog.component.scss | 2 - .../agent-structure-graph-dialog.scss | 6 +- .../artifact-tab/artifact-tab.component.scss | 3 - .../audio-player/audio-player.component.scss | 3 - .../builder-assistant.component.scss | 25 - .../builder-tabs/builder-tabs.component.scss | 257 ----- .../built-in-tool-dialog.component.scss | 4 - .../components/canvas/canvas.component.scss | 53 - .../chat-panel/chat-panel.component.scss | 71 -- src/app/components/chat/chat.component.scss | 180 ---- .../code-editor/code-editor.component.scss | 1 - .../computer-action.component.scss | 9 - .../confirmation-dialog.component.scss | 36 - .../add-eval-session-dialog.component.scss | 4 - .../eval-tab/eval-tab.component.scss | 12 - ...w-eval-set-dialog-component.component.scss | 4 - .../run-eval-config-dialog.component.scss | 13 - .../event-tab/event-tab.component.scss | 21 - .../trace-chart/trace-chart.component.scss | 3 - .../long-running-response.scss | 7 - .../message-feedback.component.scss | 5 - .../session-tab/session-tab.component.scss | 15 - .../side-panel/side-panel.component.scss | 84 -- .../components/theme-toggle/theme-toggle.scss | 2 - .../trace-event/trace-event.component.scss | 2 - .../trace-tab/trace-tab.component.scss | 46 - .../trace-tree/trace-tree.component.scss | 5 - .../view-image-dialog.component.scss | 4 - .../workflow-graph-tooltip.component.scss | 3 - src/styles.scss | 931 +----------------- 33 files changed, 22 insertions(+), 1980 deletions(-) delete mode 100644 _theme-colors.scss diff --git a/_theme-colors.scss b/_theme-colors.scss deleted file mode 100644 index 71e0a395..00000000 --- a/_theme-colors.scss +++ /dev/null @@ -1,185 +0,0 @@ -/** - * Copyright 2025 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This file was generated by running 'ng generate @angular/material:theme-color'. -// Proceed with caution if making changes to this file. - -@use 'sass:map'; -@use '@angular/material' as mat; - -// Note: Color palettes are generated from primary: #9AA0A6, secondary: #89b4f8 -$_palettes: ( - primary: ( - 0: #000000, - 10: #161c21, - 20: #2b3136, - 25: #363c41, - 30: #41474d, - 35: #4d5358, - 40: #595f65, - 50: #72787d, - 60: #8b9197, - 70: #a6acb2, - 80: #c1c7cd, - 90: #dde3e9, - 95: #ecf1f8, - 98: #f6faff, - 99: #fbfcff, - 100: #ffffff, - ), - secondary: ( - 0: #000000, - 10: #001b3c, - 20: #003061, - 25: #003b74, - 30: #0f4784, - 35: #215390, - 40: #305f9d, - 50: #4c78b8, - 60: #6792d4, - 70: #82adf0, - 80: #a7c8ff, - 90: #d5e3ff, - 95: #ebf1ff, - 98: #f9f9ff, - 99: #fdfbff, - 100: #ffffff, - ), - tertiary: ( - 0: #000000, - 10: #1f1a21, - 20: #342e36, - 25: #403941, - 30: #4b454c, - 35: #575058, - 40: #635c64, - 50: #7c757d, - 60: #978e97, - 70: #b2a8b1, - 80: #cdc3cd, - 90: #eadfe9, - 95: #f8edf7, - 98: #fff7fc, - 99: #fffbff, - 100: #ffffff, - ), - neutral: ( - 0: #000000, - 10: #1c1b1c, - 20: #313030, - 25: #3c3b3b, - 30: #474647, - 35: #535252, - 40: #5f5e5e, - 50: #787777, - 60: #929090, - 70: #adabab, - 80: #c8c6c6, - 90: #e5e2e2, - 95: #f3f0f0, - 98: #fcf9f8, - 99: #fffbfb, - 100: #ffffff, - 4: #0e0e0e, - 6: #131314, - 12: #201f20, - 17: #2a2a2a, - 22: #353535, - 24: #393939, - 87: #dcd9d9, - 92: #eae7e7, - 94: #f0eded, - 96: #f6f3f3, - ), - neutral-variant: ( - 0: #000000, - 10: #191c1f, - 20: #2d3134, - 25: #393c3f, - 30: #44474a, - 35: #505356, - 40: #5c5f62, - 50: #74777b, - 60: #8e9194, - 70: #a9abaf, - 80: #c4c7ca, - 90: #e1e2e6, - 95: #eff1f4, - 98: #f8f9fd, - 99: #fbfcff, - 100: #ffffff, - ), - error: ( - 0: #000000, - 10: #410002, - 20: #690005, - 25: #7e0007, - 30: #93000a, - 35: #a80710, - 40: #ba1a1a, - 50: #de3730, - 60: #ff5449, - 70: #ff897d, - 80: #ffb4ab, - 90: #ffdad6, - 95: #ffedea, - 98: #fff8f7, - 99: #fffbff, - 100: #ffffff, - ), -); - -$_rest: ( - secondary: map.get($_palettes, secondary), - neutral: map.get($_palettes, neutral), - neutral-variant: map.get($_palettes, neutral-variant), - error: map.get($_palettes, error), -); - -$primary-palette: map.merge(map.get($_palettes, primary), $_rest); -$tertiary-palette: map.merge(map.get($_palettes, tertiary), $_rest); - -// Light theme - uses lighter tones for backgrounds, darker for text -$light-theme: mat.define-theme(( - color: ( - theme-type: light, - primary: $primary-palette, - tertiary: $tertiary-palette, - ), - typography: ( - brand-family: 'Google Sans', - plain-family: 'Google Sans', - ), - density: ( - scale: 0, - ) -)); - -// Dark theme - uses darker tones for backgrounds, lighter for text -$dark-theme: mat.define-theme(( - color: ( - theme-type: dark, - primary: $primary-palette, - tertiary: $tertiary-palette, - ), - typography: ( - brand-family: 'Google Sans', - plain-family: 'Google Sans', - ), - density: ( - scale: 0, - ) -)); \ No newline at end of file diff --git a/src/app/components/add-callback-dialog/add-callback-dialog.component.scss b/src/app/components/add-callback-dialog/add-callback-dialog.component.scss index 0fc5dbef..04b9f39f 100644 --- a/src/app/components/add-callback-dialog/add-callback-dialog.component.scss +++ b/src/app/components/add-callback-dialog/add-callback-dialog.component.scss @@ -42,12 +42,7 @@ mat-form-field { margin-top: 8px !important; } -.mat-mdc-raised-button.mat-secondary:not([disabled]) { - background-color: #8ab4f8; -} - .callback-info-container { - background-color: rgba(138, 180, 248, 0.08); border: 1px solid rgba(138, 180, 248, 0.2); border-radius: 8px; padding: 16px; diff --git a/src/app/components/add-item-dialog/add-item-dialog.component.scss b/src/app/components/add-item-dialog/add-item-dialog.component.scss index 2d0dfb8c..7d1a9c8e 100644 --- a/src/app/components/add-item-dialog/add-item-dialog.component.scss +++ b/src/app/components/add-item-dialog/add-item-dialog.component.scss @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@use '@angular/material' as mat; .new-app-title { color: var(--mdc-dialog-subhead-color) !important; diff --git a/src/app/components/add-tool-dialog/add-tool-dialog.component.scss b/src/app/components/add-tool-dialog/add-tool-dialog.component.scss index 5021f35b..ffd5212a 100644 --- a/src/app/components/add-tool-dialog/add-tool-dialog.component.scss +++ b/src/app/components/add-tool-dialog/add-tool-dialog.component.scss @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@use '@angular/material' as mat; .dialog-title { color: var(--mdc-dialog-supporting-text-color) !important; @@ -29,7 +28,6 @@ mat-dialog-content { } .tool-info-container { - background-color: rgba(138, 180, 248, 0.08); border: 1px solid rgba(138, 180, 248, 0.2); border-radius: 8px; padding: 16px; diff --git a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss index e8aeb3cc..068ef12e 100644 --- a/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss +++ b/src/app/components/agent-structure-graph-dialog/agent-structure-graph-dialog.scss @@ -79,12 +79,10 @@ button[mat-button] { } } -:host-context(.dark-theme) .svg-container { - background-color: #0e172a; +.svg-container { } -:host-context(.light-theme) .svg-container { - background-color: #f9fafc; +.svg-container.dark-theme { } .loading-container, diff --git a/src/app/components/artifact-tab/artifact-tab.component.scss b/src/app/components/artifact-tab/artifact-tab.component.scss index 341bc35a..ba8451e0 100644 --- a/src/app/components/artifact-tab/artifact-tab.component.scss +++ b/src/app/components/artifact-tab/artifact-tab.component.scss @@ -35,7 +35,6 @@ } .download-button { - background-color: var(--artifact-tab-download-button-background-color) !important; margin-left: 35px; width: 130px; height: 28px; @@ -56,13 +55,11 @@ hr.white-separator { } .version-select-container { - background-color: var(--artifact-tab-version-select-container-background-color); width: 80px; margin-left: 15px; } .link-style-button { - background: none; border: none; padding: 0; font: inherit; diff --git a/src/app/components/audio-player/audio-player.component.scss b/src/app/components/audio-player/audio-player.component.scss index fce473c1..300a56c6 100644 --- a/src/app/components/audio-player/audio-player.component.scss +++ b/src/app/components/audio-player/audio-player.component.scss @@ -4,7 +4,6 @@ justify-content: center; align-items: center; padding: 15px; - background-color: var(--audio-player-container-background-color); border-radius: 8px; box-shadow: 0 2px 5px var(--audio-player-container-box-shadow-color); margin: 20px auto; @@ -29,7 +28,6 @@ audio { padding: 8px 15px; border: none; border-radius: 5px; - background-color: var(--audio-player-custom-controls-button-background-color); color: var(--audio-player-custom-controls-button-color); cursor: pointer; font-size: 14px; @@ -37,5 +35,4 @@ audio { } .custom-controls button:hover { - background-color: var(--audio-player-custom-controls-button-hover-background-color); } \ No newline at end of file diff --git a/src/app/components/builder-assistant/builder-assistant.component.scss b/src/app/components/builder-assistant/builder-assistant.component.scss index 6ad4aceb..622202f8 100644 --- a/src/app/components/builder-assistant/builder-assistant.component.scss +++ b/src/app/components/builder-assistant/builder-assistant.component.scss @@ -20,10 +20,8 @@ top: 72px; // Leave space for the builder mode action buttons (20px top + 40px height + 12px padding) width: 400px; height: calc(100vh - 72px); // Adjust height to account for top offset - background: var(--builder-assistant-panel-background-color); border-left: 1px solid var(--builder-assistant-panel-border-color); box-shadow: -2px 0 10px rgba(0, 0, 0, 0.4); - z-index: 999; // Lower than action buttons (1000) display: flex; flex-direction: column; transition: transform 0.3s ease; @@ -39,7 +37,6 @@ justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--builder-assistant-panel-border-color); - background: var(--builder-assistant-panel-header-background-color); } .panel-title { @@ -64,7 +61,6 @@ &:hover { color: var(--builder-text-primary-color); - background-color: var(--builder-add-button-background-color); } } @@ -72,7 +68,6 @@ flex: 1; display: flex; flex-direction: column; - background: var(--builder-assistant-panel-background-color); overflow: hidden; } @@ -120,13 +115,11 @@ .chat-input-container { padding: 16px 20px 20px 20px; border-top: none; - background: var(--builder-assistant-panel-background-color); } .input-wrapper { display: flex; align-items: center; - background-color: var(--builder-assistant-input-background-color); border-radius: 50px; padding: 10px 6px 10px 18px; gap: 8px; @@ -137,7 +130,6 @@ color: var(--builder-assistant-input-text-color); border: none; padding: 0; - background: transparent; resize: none; overflow: hidden; font-family: 'Google Sans', 'Helvetica Neue', sans-serif; @@ -160,13 +152,11 @@ } &::-webkit-scrollbar-thumb { - background: var(--builder-border-color); border-radius: 4px; } } .send-button { - background-color: transparent; color: var(--builder-assistant-send-button-color); width: 36px; height: 36px; @@ -175,21 +165,11 @@ margin: 0; padding: 0; - ::ng-deep .mat-mdc-button-touch-target { - display: none; - } - - ::ng-deep .mat-mdc-button-persistent-ripple { - display: none; - } - &:disabled { - background-color: transparent; color: var(--builder-assistant-send-button-disabled-color); } &:hover:not(:disabled) { - background-color: var(--builder-add-button-background-color); color: var(--builder-assistant-send-button-hover-color); border-radius: 50%; } @@ -220,7 +200,6 @@ margin-bottom: 12px; .message-card { - background-color: var(--builder-assistant-user-message-background-color); border: 1px solid var(--builder-assistant-user-message-border-color); border-radius: 4px; color: var(--builder-assistant-user-message-text-color); @@ -234,7 +213,6 @@ margin-bottom: 0; .message-card { - background-color: transparent; border: none; border-radius: 0; color: var(--builder-assistant-bot-message-text-color); @@ -283,7 +261,6 @@ } code { - background-color: rgba(255, 255, 255, 0.1); padding: 2px 4px; border-radius: 3px; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; @@ -291,14 +268,12 @@ } pre { - background-color: rgba(255, 255, 255, 0.05); padding: 8px 12px; border-radius: 6px; overflow-x: auto; margin: 0.5em 0; code { - background: none; padding: 0; } } diff --git a/src/app/components/builder-tabs/builder-tabs.component.scss b/src/app/components/builder-tabs/builder-tabs.component.scss index 4b2cdf3a..95018ba5 100644 --- a/src/app/components/builder-tabs/builder-tabs.component.scss +++ b/src/app/components/builder-tabs/builder-tabs.component.scss @@ -14,7 +14,6 @@ * limitations under the License. */ -@use '@angular/material' as mat; // Builder tabs container .builder-tabs-container { width: 100%; @@ -35,7 +34,6 @@ } .breadcrumb-chip { - background-color: transparent; color: var(--builder-text-muted-color); font-family: 'Google Sans'; font-size: 16px; @@ -77,22 +75,6 @@ font-size: 14px; line-height: 1.5; } - - @include mat.form-field-overrides( - ( - filled-container-color: var(--builder-form-field-background-color), - filled-focus-active-indicator-color: var(--builder-form-field-background-color), - filled-active-indicator-color: var(--builder-form-field-background-color), - filled-hover-active-indicator-color: var(--builder-form-field-background-color), - filled-label-text-color: var(--builder-text-secondary-color), - filled-focus-label-text-color: var(--builder-text-link-color), - filled-hover-label-text-color: var(--builder-text-secondary-color), - ) - ); -} - -:host ::ng-deep .mat-mdc-text-field-wrapper { - border: none !important; } // Components section header @@ -180,11 +162,9 @@ } .tree-view mat-tree { - background-color: inherit !important; } .tree-view expand-button { - background-color: transparent; border: 0; } @@ -225,7 +205,6 @@ justify-content: space-between; align-items: center; margin-bottom: 4px; - background-color: var(--builder-card-background-color); color: var(--builder-text-primary-color); font-family: 'Google Sans Mono', monospace; font-size: 14px; @@ -239,7 +218,6 @@ } &:hover { - background-color: var(--builder-hover-background-color); button { visibility: visible; @@ -256,131 +234,6 @@ padding-right: 8px; /* Add some space between text and delete button */ } -// Tools chips styling -::ng-deep .tools-chips-container { - .mat-mdc-chip-set { - width: 100%; - } - - &.callbacks-list .mat-mdc-chip-set { - display: flex; - flex-direction: column; - gap: 8px; - width: 100%; - } - - .mat-mdc-chip.tool-chip { - background-color: var(--builder-tool-chip-background-color); - color: var(--builder-text-primary-color); - font-family: 'Google Sans', sans-serif; - font-size: 14px; - font-weight: 500; - cursor: pointer; - margin: 4px; - - &:hover { - background-color: var(--builder-tool-chip-hover-color); - } - } - - .mat-mdc-chip.tool-chip .mat-mdc-chip-action-label { - display: flex; - align-items: center; - gap: 6px; - } - - .mat-mdc-chip.tool-chip .tool-chip-name { - display: inline-flex; - align-items: center; - } - - .mat-mdc-chip.tool-chip .tool-icon { - font-size: 18px; - width: 18px; - height: 18px; - } - - .mat-mdc-chip.tool-chip .mat-mdc-chip-remove { - opacity: 1; - color: var(--builder-text-secondary-color); - - mat-icon { - font-size: 18px; - width: 18px; - height: 18px; - } - - &:hover { - color: var(--builder-text-primary-color); - } - } - - .mat-mdc-chip.callback-chip { - background: var(--builder-callback-chip-background-color); - background-color: var(--builder-callback-chip-background-color); - color: var(--builder-callback-chip-text-color); - font-family: 'Google Sans', sans-serif; - font-size: 14px; - display: flex; - flex-direction: row; - align-items: center; - gap: 12px; - width: auto; - height: 40px; - border-radius: 8px; - border: none; - box-shadow: none; - outline: none; - --mdc-chip-outline-width: 0; - --mdc-chip-outline-color: transparent; - --mdc-chip-elevated-container-color: var(--builder-callback-chip-background-color); - --mdc-chip-flat-container-color: var(--builder-callback-chip-background-color); - flex: 1 1 auto; - min-width: 0; - } - - .mat-mdc-chip.callback-chip::before, - .mat-mdc-chip.callback-chip::after, - .mat-mdc-chip.callback-chip .mat-mdc-chip-focus-overlay { - border: none; - box-shadow: none; - } - - .mat-mdc-chip.callback-chip .mat-mdc-chip-action-label { - display: flex; - flex: 1; - align-items: center; - width: 100%; - gap: 12px; - } - - .mat-mdc-chip.callback-chip .chip-content { - display: flex; - flex-direction: row; - align-items: center; - gap: 12px; - flex: 1; - min-width: 0; - } - - .mat-mdc-chip.callback-chip .chip-type { - color: var(--builder-callback-chip-type-color); - font-size: 13px; - font-weight: 500; - white-space: nowrap; - } - - .mat-mdc-chip.callback-chip .chip-name { - color: var(--builder-callback-chip-name-color); - font-size: 15px; - font-weight: 600; - flex: 1; - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - } -} - .tools-chips-container { margin-top: 12px; padding: 0 4px; @@ -429,12 +282,6 @@ .add-tool-button { width: 100%; - background: linear-gradient( - 0deg, - var(--builder-add-button-background-color) 0%, - var(--builder-add-button-background-color) 100% - ), - var(--builder-panel-background-color); border: none; border-radius: 4px; margin-top: 12px; @@ -466,7 +313,6 @@ padding: 16px; border: 1px solid var(--builder-border-color); border-radius: 8px; - background-color: var(--builder-secondary-background-color); h3 { color: var(--builder-text-primary-color); @@ -483,12 +329,10 @@ } .create-agent-tool-btn { - background-color: var(--builder-button-primary-background-color); color: var(--builder-button-primary-text-color); font-weight: 500; &:hover { - background-color: var(--builder-button-primary-hover-color); } } } @@ -528,14 +372,6 @@ .callback-group { margin-top: 5px; - @include mat.expansion-overrides( - ( - container-background-color: var(--builder-expansion-background-color), - header-focus-state-layer-color: red, - header-description-color: var(--builder-expansion-header-description-color), - header-text-size: 15, - ) - ); } .callback-list { @@ -558,7 +394,6 @@ justify-content: space-between; align-items: center; margin-bottom: 4px; - background-color: var(--builder-card-background-color); color: var(--builder-text-primary-color); font-family: 'Google Sans Mono', monospace; font-size: 14px; @@ -572,7 +407,6 @@ } &:hover { - background-color: var(--builder-expansion-hover-color); button { visibility: visible; @@ -584,29 +418,9 @@ color: var(--builder-button-primary-background-color); &:hover { - background-color: var(--builder-add-button-background-color); } } -// Override expansion panel styles for callbacks -::ng-deep .callback-group .mat-expansion-panel-header.mat-expanded:focus { - background-color: var(--builder-expansion-hover-color) !important; -} - -::ng-deep .callback-group .mat-expansion-panel-header.mat-expanded { - background-color: var(--builder-expansion-hover-color) !important; -} - -::ng-deep .callback-group .mat-expansion-panel-header.mat-expanded:hover { - background-color: var(--builder-expansion-hover-color) !important; -} - -::ng-deep .callback-group .mat-expansion-panel-header-title { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - // Make tab group take available space mat-tab-group { flex: 1; @@ -617,20 +431,6 @@ mat-tab-group { min-height: 0; } -::ng-deep .mat-mdc-tab-body-wrapper { - flex: 1; - overflow: hidden; - min-height: 0; -} - -::ng-deep .mat-mdc-tab-body-content { - flex: 1; - overflow: hidden; - display: flex; - flex-direction: column; - min-height: 0; -} - // Make tab group take available space mat-tab-group { flex: 1; @@ -640,20 +440,6 @@ mat-tab-group { overflow: hidden; } -::ng-deep .mat-mdc-tab-body-wrapper { - flex: 1; - overflow: hidden; -} - -::ng-deep .mat-mdc-tab-body-content { - height: 100%; - overflow: hidden; -} - -::ng-deep .mat-drawer-inner-container { - overflow: hidden; -} - // Action buttons .action-buttons { display: flex; @@ -663,15 +449,12 @@ mat-tab-group { border-top: 1px solid var(--builder-border-color); flex-shrink: 0; margin-top: auto; - background-color: var(--builder-panel-background-color); .save-button { - background-color: var(--builder-button-primary-background-color); color: var(--builder-button-primary-text-color); font-weight: 500; &:hover { - background-color: var(--builder-button-primary-hover-color); } } @@ -680,7 +463,6 @@ mat-tab-group { border: 1px solid var(--builder-button-secondary-border-color); &:hover { - background-color: var(--builder-button-secondary-hover-background-color); color: var(--builder-button-secondary-hover-text-color); } } @@ -754,45 +536,6 @@ mat-tab-group { display: flex; justify-content: space-between; align-items: center; - @include mat.button-overrides( - ( - filled-container-color: var(--side-panel-button-filled-container-color), - filled-label-text-color: var(--side-panel-button-filled-label-text-color), - ) - ); - - .mat-icon { - width: 36px; - height: 36px; - color: var(--side-panel-mat-icon-color); - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - } } -::ng-deep .mat-mdc-menu-panel { - background-color: var(--builder-menu-background-color) !important; - - .menu-header { - color: var(--builder-text-secondary-color); - font-size: 12px; - padding: 8px 16px; - font-weight: 500; - text-transform: uppercase; - pointer-events: none; - } - - .mat-mdc-menu-item { - color: var(--builder-text-primary-color); - &:hover { - background-color: var(--builder-menu-item-hover-color); - } - } - mat-divider { - border-top-color: var(--builder-menu-divider-color); - margin: 4px 0; - } -} diff --git a/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.scss b/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.scss index b9f919a1..5554b4c7 100644 --- a/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.scss +++ b/src/app/components/built-in-tool-dialog/built-in-tool-dialog.component.scss @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@use '@angular/material' as mat; .dialog-title { color: var(--mdc-dialog-subhead-color) !important; @@ -55,16 +54,13 @@ border-radius: 8px; cursor: pointer; transition: all 0.2s ease; - background-color: var(--builder-tool-item-background-color); border: 1px solid var(--builder-tool-item-border-color); min-width: 0; &:hover { - background-color: var(--builder-tool-item-hover-background-color); } &.selected { - background-color: rgba(138, 180, 248, 0.2); border: 1px solid #8ab4f8; } diff --git a/src/app/components/canvas/canvas.component.scss b/src/app/components/canvas/canvas.component.scss index 95b705cd..c3aa3907 100644 --- a/src/app/components/canvas/canvas.component.scss +++ b/src/app/components/canvas/canvas.component.scss @@ -28,7 +28,6 @@ .canvas-container { width: 100%; height: 100%; - background: var(--builder-canvas-container-background); display: flex; flex-direction: column; border-radius: 8px; @@ -40,7 +39,6 @@ } .canvas-header { - background: var(--builder-canvas-header-background); padding: 16px 24px; border-bottom: 2px solid var(--builder-border-color); display: flex; @@ -53,7 +51,6 @@ font-size: 18px; font-weight: 600; font-family: 'Google Sans', 'Helvetica Neue', sans-serif; - background: var(--builder-canvas-header-title-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -65,13 +62,11 @@ gap: 8px; button { - background: var(--builder-button-background-color); border: 1px solid var(--builder-button-border-color); color: var(--builder-button-text-color); transition: all 0.3s ease; &:hover { - background: var(--builder-button-hover-background-color); border-color: var(--builder-button-hover-border-color); transform: translateY(-1px); } @@ -82,7 +77,6 @@ flex: 1; position: relative; overflow: hidden; - background-color: var(--builder-canvas-workspace-background); min-height: 0; width: 100%; height: 100%; @@ -94,8 +88,6 @@ top: 0; left: 0; right: 0; - z-index: 1000; - background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%); border-bottom: 2px solid rgba(59, 130, 246, 0.3); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); @@ -106,13 +98,11 @@ gap: 16px; .back-to-main-btn { - background: rgba(255, 255, 255, 0.1); color: white; border: 1px solid rgba(255, 255, 255, 0.2); transition: all 0.2s ease; &:hover { - background: rgba(255, 255, 255, 0.2); transform: scale(1.05); } @@ -179,7 +169,6 @@ } ::ng-deep vflow .root-svg { - background-color: var(--builder-canvas-workspace-background) !important; color: var(--builder-text-primary-color) !important; width: 100% !important; height: 100% !important; @@ -208,11 +197,9 @@ transform: translate(-50%, -50%); text-align: center; pointer-events: none; - z-index: 1; } .instruction-content { - background: var(--builder-canvas-instruction-background); backdrop-filter: blur(10px); border: 2px solid var(--builder-canvas-instruction-border); border-radius: 16px; @@ -270,12 +257,10 @@ top: 20px; left: 50%; transform: translateX(-50%); - z-index: 10; animation: slideDown 0.3s ease-out; } .connection-indicator-content { - background: linear-gradient(135deg, #1b73e8 0%, #4285f4 100%); color: white; padding: 12px 20px; border-radius: 24px; @@ -299,7 +284,6 @@ } button { - background: rgba(255, 255, 255, 0.2); color: white; border: 1px solid rgba(255, 255, 255, 0.3); width: 32px; @@ -307,7 +291,6 @@ min-width: 32px; &:hover { - background: rgba(255, 255, 255, 0.3); transform: scale(1.1); } @@ -332,7 +315,6 @@ } .canvas-footer { - background: var(--builder-canvas-header-background); padding: 12px 24px; border-top: 1px solid var(--builder-border-color); display: flex; @@ -373,22 +355,6 @@ // Drag over effect .canvas-workspace.drag-over { - background: radial-gradient( - circle at 20% 50%, - rgba(66, 133, 244, 0.1) 0%, - transparent 50% - ), - radial-gradient( - circle at 80% 20%, - rgba(52, 168, 83, 0.1) 0%, - transparent 50% - ), - radial-gradient( - circle at 40% 80%, - rgba(251, 188, 4, 0.1) 0%, - transparent 50% - ), - #131314; &::before { content: ''; @@ -452,7 +418,6 @@ .custom-node { width: 340px; - background: var(--builder-canvas-node-background); border: 1px solid var(--builder-canvas-node-border); border-radius: 8px; align-items: center; @@ -480,7 +445,6 @@ } :host ::ng-deep .default-group-node { - background-color: var(--builder-canvas-group-background) !important; border: 2px solid var(--builder-canvas-group-border) !important; } @@ -506,7 +470,6 @@ margin-left: 8px; padding: 2px 6px; border-radius: 999px; - background: var(--builder-canvas-node-badge-background); color: var(--builder-accent-color); font-size: 11px; font-weight: 600; @@ -536,7 +499,6 @@ color: var(--builder-text-primary-color); &:hover { - background-color: var(--builder-item-hover-color); } .tool-item-icon { @@ -602,7 +564,6 @@ .callback-type { font-size: 11px; - background: var(--builder-chip-background-color); color: var(--builder-accent-color); padding: 2px 6px; border-radius: 4px; @@ -611,7 +572,6 @@ } .add-callback-btn { - background: none; border: none; cursor: pointer; border-radius: 4px; @@ -628,7 +588,6 @@ &:hover { color: var(--builder-text-primary-color); - background-color: var(--builder-item-hover-color); transform: scale(1.1); } } @@ -669,7 +628,6 @@ margin-right: 4px; .action-btn { - background: none; color: var(--builder-text-secondary-color); border: none; width: 32px; @@ -684,7 +642,6 @@ &:hover { color: var(--builder-text-primary-color); - background-color: var(--builder-item-hover-color); transform: scale(1.1); } @@ -703,7 +660,6 @@ } .add-tool-btn { - background: none; border: none; cursor: pointer; border-radius: 4px; @@ -720,7 +676,6 @@ &:hover { color: var(--builder-text-primary-color); - background-color: var(--builder-item-hover-color); transform: scale(1.1); } } @@ -747,7 +702,6 @@ height: 48px; border-radius: 50%; border: 2px solid var(--builder-accent-color); - background: var(--builder-canvas-add-btn-background); color: var(--builder-accent-color); display: flex; align-items: center; @@ -769,7 +723,6 @@ &:hover { transform: scale(1.05); box-shadow: var(--builder-canvas-add-btn-shadow); - background: var(--builder-canvas-add-btn-hover-background); } &:focus-visible { @@ -786,7 +739,6 @@ cursor: pointer; margin-left: 20px; margin-top: 20px; - z-index: 9999; } .custom-node { @@ -833,7 +785,6 @@ align-items: center; gap: 6px; padding: 6px 12px; - background: var(--builder-canvas-workflow-chip-background); border: 1px solid var(--builder-canvas-workflow-chip-border); border-radius: 16px; color: var(--builder-accent-color); @@ -869,18 +820,15 @@ padding: 16px; border-radius: 8px; text-align: center; - background: var(--builder-canvas-empty-group-background); border: 2px dashed var(--builder-canvas-empty-group-border); transition: all 0.3s ease; &:hover { - background: var(--builder-canvas-empty-group-hover-background); border-color: var(--builder-canvas-empty-group-hover-border); } button { border: 2px solid var(--builder-accent-color); - background-color: var(--builder-canvas-empty-group-btn-background); color: var(--builder-accent-color); width: 40px; height: 40px; @@ -891,7 +839,6 @@ transition: all 0.2s ease; &:hover { - background-color: var(--builder-canvas-empty-group-btn-hover-background); transform: scale(1.1); box-shadow: var(--builder-canvas-add-btn-shadow); } diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 2c6df01b..2c0799c2 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -1,5 +1,3 @@ -@use '@angular/material' as mat; - :host { display: flex; flex-direction: column; @@ -46,7 +44,6 @@ display: inline-block; &.message-card--highlighted { - background-color: var(--chat-panel-function-event-button-highlight-background-color); } &:empty { @@ -55,31 +52,22 @@ &.landing-message { border: 2px solid var(--chat-panel-landing-message-border-color, #4285f4); - background-color: var(--chat-panel-landing-message-background-color, - #e8f0fe); } &.landing-message { border: 2px solid var(--chat-panel-landing-message-border-color, #4285f4); - background-color: var(--chat-panel-landing-message-background-color, - #e8f0fe); } &.landing-message { border: 2px solid var(--chat-panel-landing-message-border-color, #4285f4); - background-color: var(--chat-panel-landing-message-background-color, - #e8f0fe); } &.landing-message { border: 2px solid var(--chat-panel-landing-message-border-color, #4285f4); - background-color: var(--chat-panel-landing-message-background-color, - #e8f0fe); } } .function-event-button { - background-color: var(--chat-panel-function-event-button-background-color); border-color: var(--chat-panel-function-event-button-border-color) !important; color: var(--chat-panel-function-event-button-text-color) !important; margin: 5px 5px 5px 0px; @@ -100,22 +88,13 @@ } .state-delta-button { - background-color: var(--chat-panel-function-event-button-background-color) !important; max-width: 300px !important; } -:host ::ng-deep .state-delta-button .mdc-button__label { - overflow: hidden !important; - text-overflow: ellipsis !important; - white-space: nowrap !important; -} - .artifact-delta-button { - background-color: var(--chat-panel-function-event-button-background-color) !important; } .function-event-button-highlight { - background-color: var(--chat-panel-function-event-button-highlight-background-color); border-color: var(--chat-panel-function-event-button-highlight-border-color) !important; color: var(--chat-panel-function-event-button-highlight-color) !important; } @@ -133,7 +112,6 @@ .message-card.output-chip { display: inline-block !important; margin: 0 !important; - background-color: rgba(138, 180, 248, 0.15) !important; border: 1px solid rgba(138, 180, 248, 0.3); border-radius: 8px !important; padding: 5px !important; @@ -174,19 +152,15 @@ border: 2px solid transparent; border-radius: 4px; - // All rows have transparent background by default - background-color: transparent; transition: background-color 0.2s ease; cursor: pointer; // Hover effect for all rows &:hover { - background-color: rgba(66, 133, 244, 0.08); } // Selected row (stays highlighted when side drawer is open) &.selected { - background-color: rgba(66, 133, 244, 0.2) !important; border: 2px solid rgba(66, 133, 244, 0.6); border-radius: 4px; } @@ -200,7 +174,6 @@ gap: 15px; .message-card { - background-color: var(--chat-panel-user-message-message-card-background-color); align-self: flex-start; color: var(--chat-panel-user-message-message-card-color); box-shadow: none; @@ -222,7 +195,6 @@ flex-grow: 1; .message-card { - background-color: var(--chat-panel-bot-message-message-card-background-color); align-self: flex-start; color: var(--chat-panel-bot-message-message-card-color); box-shadow: none; @@ -247,20 +219,17 @@ .bot-message:focus-within { .message-card { - background-color: var(--chat-panel-bot-message-focus-within-message-card-background-color); border: 1px solid var(--chat-panel-bot-message-focus-within-message-card-border-color); } } .message-textarea { - background-color: var(--chat-panel-message-textarea-background-color); max-width: 100%; border: none; font-family: 'Google Sans', 'Helvetica Neue', sans-serif; } .message-textarea:focus { - background-color: var(--chat-panel-message-textarea-focus-background-color); outline: none; } @@ -273,8 +242,6 @@ visibility: hidden; position: absolute; left: 10px; - z-index: 10; - background-color: var(--chat-panel-eval-compare-container-background-color); overflow: hidden; border-radius: 20px; padding: 5px 20px; @@ -355,13 +322,11 @@ width: min(960px, 88%); margin: 0 auto; position: relative; - z-index: 1; } .input-field { flex-grow: 1; position: relative; - z-index: 1; textarea { color: var(--chat-panel-input-field-textarea-color); @@ -376,7 +341,6 @@ button { color: var(--chat-panel-input-field-button-color); - background-color: var(--chat-panel-input-field-button-background-color); } } @@ -418,25 +382,6 @@ align-items: center; } -:host ::ng-deep .mat-mdc-mini-fab { - background-color: var(--chat-panel-mat-mdc-mini-fab-background-color, - - #4285f4); - margin-right: 15px; - - mat-icon { - color: var(--chat-panel-mat-mdc-mini-fab-mat-icon-color, white); - } - - &.mat-mdc-button-disabled { - background-color: rgba(255, 255, 255, 0.2) !important; - - mat-icon { - color: rgba(255, 255, 255, 0.6) !important; - } - } -} - :host ::ng-deep .message-text { p { white-space: pre-line; @@ -445,15 +390,6 @@ } } -:host ::ng-deep .input-field .mat-mdc-text-field-wrapper { - border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); - border-radius: 16px; -} - -:host ::ng-deep .input-field .mat-mdc-form-field-icon-suffix { - padding: 0 16px 0 8px; -} - .image-container { position: relative; display: inline-block; @@ -474,7 +410,6 @@ position: absolute; top: 1px; right: 1px; - background-color: var(--chat-panel-delete-button-background-color); border: none; border-radius: 50%; padding: 8px; @@ -496,7 +431,6 @@ flex-direction: column; gap: 8px; height: 80px; - background-color: var(--chat-panel-file-container-background-color); border-radius: 12px; } @@ -508,7 +442,6 @@ .thought-chip { border-radius: 5px; - background-color: var(--chat-panel-thought-chip-background-color); width: 80px; text-align: center; margin-top: 5px; @@ -553,7 +486,6 @@ } .link-style-button { - background: none; border: none; padding: 0; font: inherit; @@ -587,10 +519,8 @@ button.audio-rec-btn, button.video-rec-btn, button.send-message-btn { - background-color: var(--chat-card-background-color); &.recording { - background-color: var(--chat-panel-eval-fail-color); } } @@ -628,7 +558,6 @@ button.send-message-btn { .readme-container { max-width: 900px; margin: 0 auto; - background-color: var(--chat-panel-message-background-color); border-radius: 16px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border: 1px solid rgba(138, 180, 248, 0.2); diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index ca190440..64bf8b43 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -14,8 +14,6 @@ * limitations under the License. */ -@use '@angular/material' as mat; - .expand-side-drawer { position: relative; top: 4%; @@ -24,7 +22,6 @@ .drawer-container { height: 100%; - background-color: var(--chat-drawer-container-background-color); } .drawer-header { @@ -32,22 +29,6 @@ display: flex; justify-content: space-between; align-items: center; - @include mat.button-overrides( - ( - filled-container-color: #89b4f8, - filled-label-text-color: black, - ) - ); - - .mat-icon { - width: 36px; - height: 36px; - color: #bdc1c6; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - } .drawer-logo { margin-left: 9px; @@ -71,22 +52,6 @@ display: flex; justify-content: space-between; align-items: center; - @include mat.button-overrides( - ( - filled-container-color: #89b4f8, - filled-label-text-color: black, - ) - ); - - .mat-icon { - width: 36px; - height: 36px; - color: #bdc1c6; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - } .drawer-logo { margin-left: 9px; @@ -126,11 +91,6 @@ flex: 1; min-height: 12%; box-shadow: none; - background-color: var(--chat-card-background-color); -} - -.function-event-button .mdc-button__label { - font-family: 'Google Sans Mono', monospace; } .loading-bar { @@ -157,14 +117,10 @@ } .function-event-button { - background-color: var(--chat-function-event-button-background-color); margin: 5px 5px 10px; } .function-event-button-highlight { - background-color: var( - --chat-function-event-button-highlight-background-color - ); border-color: var( --chat-function-event-button-highlight-border-color ) !important; @@ -177,7 +133,6 @@ align-items: center; .message-card { - background-color: var(--chat-user-message-message-card-background-color); align-self: flex-end; color: var(--chat-user-message-message-card-color); box-shadow: none; @@ -189,7 +144,6 @@ align-items: center; .message-card { - background-color: var(--chat-bot-message-message-card-background-color); align-self: flex-start; color: var(--chat-bot-message-message-card-color); box-shadow: none; @@ -198,23 +152,18 @@ .bot-message:focus-within { .message-card { - background-color: var( - --chat-bot-message-focus-within-message-card-background-color - ); border: 1px solid var(--chat-bot-message-focus-within-message-card-border-color); } } .message-textarea { - background-color: var(--chat-message-textarea-background-color); max-width: 100%; border: none; font-family: 'Google Sans', 'Helvetica Neue', sans-serif; } .message-textarea:focus { - background-color: var(--chat-message-textarea-focus-background-color); outline: none; } @@ -227,8 +176,6 @@ visibility: hidden; position: absolute; left: 10px; - z-index: 10; - background-color: var(--chat-eval-compare-container-background-color); overflow: hidden; border-radius: 20px; padding: 5px 20px; @@ -307,17 +254,14 @@ position: fixed; bottom: 200px; right: 100px; - z-index: 1000; } .sidepanel-toggle { position: relative; top: 100px; - z-index: 1000; } .side-drawer { - background-color: var(--chat-side-drawer-background-color); color: var(--chat-side-drawer-color); border-radius: 0; } @@ -334,7 +278,6 @@ display: flex; align-items: center; gap: 5px; - background: var(--chat-file-item-background-color); padding: 5px; border-radius: 4px; } @@ -362,51 +305,7 @@ } } -:host ::ng-deep .mat-mdc-unelevated-button:not(:disabled) { - color: var(--chat-mat-mdc-unelevated-button-color); - background-color: var(--chat-mat-mdc-unelevated-button-background-color); -} - -:host ::ng-deep .mdc-linear-progress__buffer-dots { - background-image: radial-gradient( - circle, - var( - --chat-mdc-linear-progress-buffer-dots-background-color, - var(--mat-sys-surface-variant) - ) - calc(var(--mat-progress-bar-track-height, 4px) / 2), - transparent 0 - ); -} - -:host ::ng-deep .mat-mdc-select-arrow-wrapper { - margin-left: 4px; -} - -:host ::ng-deep .mat-mdc-text-field-wrapper { - border: 1px solid var(--chat-mat-mdc-text-field-wrapper-border-color); -} - -:host ::ng-deep .mdc-notched-outline__leading, -:host ::ng-deep .mdc-notched-outline__notch, -:host ::ng-deep .mdc-notched-outline__trailing { - border: none; -} - -:host ::ng-deep .mat-mdc-form-field-icon-suffix { - padding: 0 10px 0 40px; -} - -:host ::ng-deep .segment-key { - color: var(--chat-segment-key-color) !important; -} - -.mat-mdc-select-placeholder { - margin-left: 20px; -} - .bottom-resize-handler { - background: var(--chat-bottom-resize-handler-background-color); height: 5px; border-radius: 4px; position: absolute; @@ -415,13 +314,11 @@ left: 40%; top: 0; right: 0; - z-index: 9999; cursor: ns-resize; } .trace-detail-container { position: relative; - background-color: var(--chat-trace-detail-container-background-color); app-trace-event { padding-top: 8px; @@ -438,7 +335,6 @@ .app-select-container { width: 35%; - background-color: #212123; height: 30px; display: flex; justify-content: space-between; @@ -448,16 +344,6 @@ padding-top: 5px; } -.app-select-container { - @include mat.select-overrides( - ( - placeholder-text-color: #8ab4f8, - enabled-trigger-text-color: #8ab4f8, - enabled-arrow-color: #8ab4f8, - ) - ); -} - .adk-checkbox { position: fixed; bottom: 0; @@ -471,16 +357,13 @@ position: sticky; top: 0; height: 48px; - background: var(--chat-toolbar-background-color); display: flex; align-items: center; - z-index: 10; font-size: 13px; padding-left: 20px; } .chat-toolbar.edit-mode { - background: var(--chat-toolbar-edit-mode-background-color); } .toolbar-actions { @@ -521,7 +404,6 @@ padding: 0; margin-left: 4px; color: var(--chat-toolbar-icon-color); - background-color: transparent; border: none; cursor: pointer; @@ -545,7 +427,6 @@ padding: 0; margin-left: 4px; color: var(--chat-toolbar-icon-color); - background-color: transparent; border: none; cursor: pointer; @@ -561,7 +442,6 @@ height: 24px; border: 1px solid var(--chat-toolbar-session-text-color); border-radius: 4px; - background-color: transparent; color: var(--chat-toolbar-session-id-color); padding: 0 6px; font-family: 'Google Sans Mono', monospace; @@ -588,45 +468,8 @@ align-items: center; } -.toolbar-sse-toggle { - @include mat.slide-toggle-overrides( - ( - label-text-size: 14px, - label-text-color: var(--chat-toolbar-sse-toggle-label-text-color), - unselected-track-color: - var(--chat-toolbar-sse-toggle-unselected-track-color), - unselected-focus-track-color: - var(--chat-toolbar-sse-toggle-unselected-track-color), - unselected-hover-track-color: - var(--chat-toolbar-sse-toggle-unselected-track-color), - unselected-handle-color: - var(--chat-toolbar-sse-toggle-unselected-handle-color), - unselected-focus-handle-color: - var(--chat-toolbar-sse-toggle-unselected-handle-color), - unselected-hover-handle-color: - var(--chat-toolbar-sse-toggle-unselected-handle-color), - selected-track-color: var(--chat-toolbar-sse-toggle-selected-track-color), - selected-focus-track-color: - var(--chat-toolbar-sse-toggle-selected-track-color), - selected-hover-track-color: - var(--chat-toolbar-sse-toggle-selected-track-color), - selected-handle-color: - var(--chat-toolbar-sse-toggle-selected-handle-color), - selected-focus-handle-color: - var(--chat-toolbar-sse-toggle-selected-handle-color), - selected-hover-handle-color: - var(--chat-toolbar-sse-toggle-selected-handle-color), - track-height: 24px, - track-width: 46px, - track-outline-color: var(--chat-toolbar-sse-toggle-track-outline-color), - with-icon-handle-size: 20px, - ) - ); -} - .toolbar-more-actions-button { margin-right: 8px; - background-color: transparent !important; border: none !important; box-shadow: none !important; } @@ -640,7 +483,6 @@ .readonly-badge { color: var(--chat-readonly-badge-color); - background-color: var(--chat-readonly-badge-background-color); border-radius: 4px; padding: 1px 6px; display: flex; @@ -670,14 +512,6 @@ flex-shrink: 1; } -::ng-deep .mat-drawer-content { - display: flex !important; -} - -::ng-deep .mat-drawer { - border-right: 1px solid var(--chat-mat-drawer-border-right-color) !important; -} - // Builder mode container and exit button .builder-mode-container { position: relative; @@ -685,20 +519,17 @@ height: 100vh; display: flex; flex-direction: column; - background-color: var(--builder-container-background-color); } .builder-exit-button { position: absolute; top: 20px; right: 20px; - z-index: 1000; display: flex; gap: 8px; } .builder-mode-action-button { - background-color: var(--builder-secondary-background-color) !important; color: var(--builder-text-tertiary-color) !important; border-radius: 50% !important; transition: all 0.2s ease !important; @@ -715,22 +546,14 @@ justify-content: center !important; &:hover { - background-color: var( - --builder-tool-item-hover-background-color - ) !important; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15) !important; } &.active { - background-color: var(--builder-button-primary-background-color) !important; color: white !important; border-color: var(--builder-button-primary-background-color) !important; } - .mat-mdc-button-touch-target { - display: none !important; - } - mat-icon { font-size: 20px; width: 20px; @@ -752,7 +575,6 @@ app-canvas { display: flex; width: 100%; height: 100%; - background-color: var(--builder-container-background-color); } .build-left-panel, @@ -760,14 +582,12 @@ app-canvas { flex: 1; display: flex; flex-direction: column; - background-color: var(--builder-tertiary-background-color); border: 1px solid var(--builder-border-color); margin: 10px; border-radius: 8px; } .build-panel-header { - background-color: var(--builder-secondary-background-color); padding: 16px 20px; border-bottom: 1px solid var(--builder-border-color); border-radius: 8px 8px 0 0; diff --git a/src/app/components/code-editor/code-editor.component.scss b/src/app/components/code-editor/code-editor.component.scss index 1bfc8f69..ed03dc06 100644 --- a/src/app/components/code-editor/code-editor.component.scss +++ b/src/app/components/code-editor/code-editor.component.scss @@ -13,7 +13,6 @@ /* Style the linting tooltips to match the dark theme */ ::ng-deep .cm-tooltip-lint { - background-color: #3a3f4b; border: 1px solid rgba(255, 255, 255, 0.12); color: #c9d1d9; } diff --git a/src/app/components/computer-action/computer-action.component.scss b/src/app/components/computer-action/computer-action.component.scss index 2650c6af..f92b6ca8 100644 --- a/src/app/components/computer-action/computer-action.component.scss +++ b/src/app/components/computer-action/computer-action.component.scss @@ -11,7 +11,6 @@ overflow: hidden; cursor: pointer; margin: 5px 5px 10px; - background-color: var(--chat-panel-bot-message-message-card-background-color); transition: opacity 0.2s; &:hover { opacity: 0.9; @@ -44,7 +43,6 @@ align-items: center; padding: 8px 12px; gap: 8px; - background-color: var(--chat-panel-thought-chip-background-color); } .computer-icon { @@ -76,10 +74,8 @@ border: 1px solid rgba(255, 255, 255, 0.8); border-radius: 50%; transform: translate(-50%, -50%); - background-color: rgba(255, 0, 0, 0.3); box-shadow: 0 0 4px rgba(0, 0, 0, 0.5); pointer-events: none; - z-index: 10; display: flex; align-items: center; justify-content: center; @@ -87,19 +83,14 @@ content: ''; width: 2px; height: 2px; - background-color: #ff0000; border-radius: 50%; box-shadow: 0 0 2px white; - z-index: 11; } &::after { content: ''; position: absolute; width: 100%; height: 100%; - background: - linear-gradient(to right, transparent 48%, rgba(255, 255, 255, 0.6) 48%, rgba(255, 255, 255, 0.6) 52%, transparent 52%), - linear-gradient(to bottom, transparent 48%, rgba(255, 255, 255, 0.6) 48%, rgba(255, 255, 255, 0.6) 52%, transparent 52%); border-radius: 50%; } } diff --git a/src/app/components/confirmation-dialog/confirmation-dialog.component.scss b/src/app/components/confirmation-dialog/confirmation-dialog.component.scss index ebc04b09..26cf247d 100644 --- a/src/app/components/confirmation-dialog/confirmation-dialog.component.scss +++ b/src/app/components/confirmation-dialog/confirmation-dialog.component.scss @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@use '@angular/material' as mat; - mat-dialog-content { padding: 20px 24px; display: flex; @@ -27,41 +25,7 @@ mat-dialog-content { } } -// Form field and input styling for dialogs -:host ::ng-deep { - .mat-mdc-form-field { - @include mat.form-field-overrides( - ( - filled-container-color: var(--builder-form-field-background-color), - filled-label-text-color: var(--mdc-dialog-supporting-text-color), - filled-focus-label-text-color: var(--builder-text-link-color), - filled-hover-label-text-color: var(--mdc-dialog-supporting-text-color), - ) - ); - } - - .mat-mdc-input-element { - color: var(--mdc-dialog-supporting-text-color) !important; - caret-color: var(--mdc-dialog-supporting-text-color) !important; - } - - .mat-mdc-input-element::placeholder { - color: var(--builder-text-muted-color) !important; - opacity: 0 !important; - } - - // Show placeholder only when focused and empty - .mat-mdc-input-element:focus::placeholder { - opacity: 0.6 !important; - } - - .mat-mdc-form-field-hint { - color: var(--builder-text-muted-color) !important; - } -} - .tool-info-container { - background-color: rgba(138, 180, 248, 0.08); border: 1px solid rgba(138, 180, 248, 0.2); border-radius: 8px; padding: 16px; diff --git a/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.scss b/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.scss index 4c0ebeaf..340ecc06 100644 --- a/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.scss +++ b/src/app/components/eval-tab/add-eval-session-dialog/add-eval-session-dialog/add-eval-session-dialog.component.scss @@ -30,10 +30,6 @@ mat-form-field { input { color: var(--mdc-dialog-supporting-text-color) !important; caret-color: var(--mdc-dialog-supporting-text-color) !important; - background-color: transparent !important; } } -html.darkmode :host ::ng-deep .mat-mdc-text-field-wrapper { - background-color: #3f3f42; -} \ No newline at end of file diff --git a/src/app/components/eval-tab/eval-tab.component.scss b/src/app/components/eval-tab/eval-tab.component.scss index dadc466c..de56c72e 100644 --- a/src/app/components/eval-tab/eval-tab.component.scss +++ b/src/app/components/eval-tab/eval-tab.component.scss @@ -35,7 +35,6 @@ .empty-eval-info { margin-top: 12px; - background-color: var(--eval-tab-empty-eval-info-background-color); border-radius: 8px; box-shadow: 0px 2px 6px 2px var(--eval-tab-empty-eval-info-box-shadow-color1), @@ -88,12 +87,6 @@ .save-session-btn { width: 100%; - background: linear-gradient( - 0deg, - var(--eval-tab-save-session-btn-background-color1) 0%, - var(--eval-tab-save-session-btn-background-color1) 100% - ), - var(--eval-tab-save-session-btn-background-color2); border: none; border-radius: 4px; margin-top: 12px; @@ -123,7 +116,6 @@ .run-eval-btn { border-radius: 4px; border: 1px solid var(--eval-tab-run-eval-btn-border-color); - background-color: transparent; padding-left: 24px; padding-right: 24px; padding-top: 8px; @@ -133,20 +125,17 @@ cursor: pointer; &:hover { - background-color: var(--eval-tab-run-eval-btn-hover-background-color); } } .result-btn { display: flex; - background-color: transparent; border-radius: 4px; border: 1px solid var(--eval-tab-result-btn-border-color); margin-top: 4px; cursor: pointer; &:hover { - background-color: var(--eval-tab-result-btn-hover-background-color); } &.pass { @@ -175,7 +164,6 @@ flex-direction: column; align-items: center; border-radius: 8px; - background-color: var(--eval-tab-status-card-background-color); padding: 12px 16px; margin-top: 12px; diff --git a/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.scss b/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.scss index d2f697e1..8bb53758 100644 --- a/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.scss +++ b/src/app/components/eval-tab/new-eval-set-dialog/new-eval-set-dialog-component/new-eval-set-dialog-component.component.scss @@ -30,11 +30,7 @@ mat-form-field { input { color: var(--mdc-dialog-supporting-text-color) !important; caret-color: var(--mdc-dialog-supporting-text-color) !important; - background-color: transparent !important; } } -:host ::ng-deep .mat-mdc-text-field-wrapper { - background-color: #3f3f42; -} diff --git a/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.scss b/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.scss index a53d5691..c207cab0 100644 --- a/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.scss +++ b/src/app/components/eval-tab/run-eval-config-dialog/run-eval-config-dialog.component.scss @@ -5,14 +5,6 @@ build.dialog-container { box-shadow: 0 8px 16px var(--run-eval-config-dialog-container-box-shadow-color); } -.threshold-slider { - --mdc-slider-active-track-color: var(--run-eval-config-dialog-threshold-slider-active-track-color); - --mdc-slider-inactive-track-color: var(--run-eval-config-dialog-threshold-slider-inactive-track-color); - --mdc-slider-handle-color: var(--run-eval-config-dialog-threshold-slider-handle-color); - --mdc-slider-ripple-color: var(--run-eval-config-dialog-threshold-slider-ripple-color); - width: 100px -} - .metric-row { display: flex; flex-direction: row; @@ -27,11 +19,6 @@ build.dialog-container { margin-left: 20px; } -.mdc-slider__thumb--with-indicator { - background-color: var(--mdc-slider-handle-color, var(--run-eval-config-dialog-mdc-slider-thumb-background-color)); - border: none !important; - box-shadow: none !important; -} h2[mat-dialog-title] { color: var(--mdc-dialog-supporting-text-color) !important; diff --git a/src/app/components/event-tab/event-tab.component.scss b/src/app/components/event-tab/event-tab.component.scss index 2d66a5d6..12875a55 100644 --- a/src/app/components/event-tab/event-tab.component.scss +++ b/src/app/components/event-tab/event-tab.component.scss @@ -14,8 +14,6 @@ * limitations under the License. */ -@use '@angular/material' as mat; - .events-wrapper { padding-left: 25px; padding-right: 25px; @@ -64,25 +62,6 @@ } .event-list { - @include mat.list-overrides( - ( - active-indicator-color: var(--event-tab-event-list-active-indicator-color), - list-item-container-color: - var(--event-tab-event-list-list-item-container-color), - list-item-label-text-size: 14px, - list-item-label-text-weight: 400, - list-item-one-line-container-height: 52px, - ) - ); -} - -:host ::ng-deep .mdc-list-item { - border: 1px solid var(--event-tab-mdc-list-item-border-color); - cursor: pointer; - - &:hover { - background-color: var(--event-tab-mdc-list-item-hover-background-color); - } } .event-header { diff --git a/src/app/components/event-tab/trace-chart/trace-chart.component.scss b/src/app/components/event-tab/trace-chart/trace-chart.component.scss index 47969a9d..c51eecf2 100644 --- a/src/app/components/event-tab/trace-chart/trace-chart.component.scss +++ b/src/app/components/event-tab/trace-chart/trace-chart.component.scss @@ -40,7 +40,6 @@ .trace-bar { position: absolute; height: 18px; - background-color: var(--trace-chart-trace-bar-background-color); border-radius: 4px; padding-left: 4px; overflow: hidden; @@ -81,7 +80,6 @@ bottom: 0; left: 9px; width: 1px; - background-color: var(--trace-chart-vertical-line-background-color); } .horizontal-line { @@ -90,5 +88,4 @@ left: 9px; width: 10px; height: 1px; - background-color: var(--trace-chart-horizontal-line-background-color); } diff --git a/src/app/components/long-running-response/long-running-response.scss b/src/app/components/long-running-response/long-running-response.scss index 7c14fe37..674d9b7a 100644 --- a/src/app/components/long-running-response/long-running-response.scss +++ b/src/app/components/long-running-response/long-running-response.scss @@ -28,7 +28,6 @@ } .message-box { - background-color: var(--chat-panel-bot-message-message-card-background-color); border-radius: 20px; padding: 15px 20px; font-size: 14px; @@ -63,14 +62,12 @@ } &.sending { - background-color: rgba(33, 150, 243, 0.1); border-color: rgba(33, 150, 243, 0.3); color: #2196f3; } } .function-event-button { - background-color: var(--chat-panel-function-event-button-background-color); border-color: var(--chat-panel-function-event-button-border-color) !important; color: var(--chat-panel-function-event-button-text-color) !important; margin: 5px 5px 5px; @@ -100,7 +97,6 @@ } .request-card-standalone { - background-color: var(--chat-panel-message-textarea-background-color); border: 1px solid var(--chat-panel-input-field-mat-mdc-text-field-wrapper-border-color); border-radius: 12px; padding: 16px; @@ -122,7 +118,6 @@ padding: 6px 12px; border: 1px solid var(--chat-panel-function-event-button-border-color); border-radius: 6px; - background-color: var(--chat-panel-function-event-button-background-color); color: var(--chat-panel-function-event-button-text-color); font-size: 11px; font-family: 'Roboto Mono', monospace; @@ -148,7 +143,6 @@ border: 1px solid var(--chat-panel-function-event-button-border-color); border-radius: 6px; padding: 8px 12px; - background-color: var(--chat-panel-function-event-button-background-color); width: 100%; box-sizing: border-box; @@ -156,7 +150,6 @@ flex: 1; border: none; outline: none; - background: transparent; font-size: 12px; font-family: 'Roboto Mono', monospace; color: var(--chat-panel-function-event-button-text-color); diff --git a/src/app/components/message-feedback/message-feedback.component.scss b/src/app/components/message-feedback/message-feedback.component.scss index 5a091218..34f15640 100644 --- a/src/app/components/message-feedback/message-feedback.component.scss +++ b/src/app/components/message-feedback/message-feedback.component.scss @@ -26,10 +26,6 @@ } &.selected { - background-color: var( - --side-panel-button-filled-container-color, - var(--mat-sys-primary) - ); color: var(--side-panel-button-filled-label-text-color, white); mat-icon { @@ -47,7 +43,6 @@ margin-left: 54px; max-width: 500px; padding: 16px; - background-color: var(--builder-card-background-color); border-radius: 8px; margin-top: 8px; border: 1px solid var(--builder-border-color); diff --git a/src/app/components/session-tab/session-tab.component.scss b/src/app/components/session-tab/session-tab.component.scss index acdffe9c..1e0ed4af 100644 --- a/src/app/components/session-tab/session-tab.component.scss +++ b/src/app/components/session-tab/session-tab.component.scss @@ -34,9 +34,6 @@ } .session-filter-container { - background-color: var( - --session-tab-session-filter-container-background-color - ); border-radius: 8px; padding: 16px; margin-bottom: 16px; @@ -45,14 +42,6 @@ .session-filter { width: 100%; - - ::ng-deep { - .mdc-floating-label--float-above { - background-color: var( - --session-tab-session-filter-container-background-color - ); - } - } } } @@ -66,16 +55,13 @@ justify-content: space-between; align-items: center; border: none; - background-color: var(--session-tab-session-item-background-color); border-radius: 8px; margin-bottom: 4px; cursor: pointer; &:hover { - background-color: var(--session-tab-session-item-hover-background-color); } &.current { - background-color: var(--session-tab-session-item-current-background-color); } mat-chip { @@ -122,7 +108,6 @@ .readonly-badge { color: var(--chat-readonly-badge-color); - background-color: var(--chat-readonly-badge-background-color); border-radius: 4px; padding: 1px 6px; display: flex; diff --git a/src/app/components/side-panel/side-panel.component.scss b/src/app/components/side-panel/side-panel.component.scss index 709af99f..da9bbc74 100644 --- a/src/app/components/side-panel/side-panel.component.scss +++ b/src/app/components/side-panel/side-panel.component.scss @@ -14,29 +14,11 @@ * limitations under the License. */ -@use '@angular/material' as mat; - .drawer-header { width: 100%; display: flex; justify-content: space-between; align-items: center; - @include mat.button-overrides( - ( - filled-container-color: var(--side-panel-button-filled-container-color), - filled-label-text-color: var(--side-panel-button-filled-label-text-color), - ) - ); - - .mat-icon { - width: 36px; - height: 36px; - color: var(--side-panel-mat-icon-color); - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - } } .tabs-container { width: 100%; @@ -47,7 +29,6 @@ font-size: 14px; } .resize-handler { - background: var(--side-panel-resize-handler-background-color); width: 4px; border-radius: 4px; position: absolute; @@ -55,7 +36,6 @@ height: 20%; top: 40%; right: 0; - z-index: 9999; cursor: ew-resize; } .json-viewer-container { @@ -65,14 +45,10 @@ .event-paginator { margin-top: -8px; margin-right: auto; - background-color: inherit; display: flex; justify-content: center; } -:host ::ng-deep .mat-mdc-paginator-page-size { - display: none; -} .details-panel-container { position: absolute; @@ -81,11 +57,9 @@ left: 0; right: 0; bottom: 0; - background: var(--side-panel-details-panel-container-background-color); display: inline-block; justify-content: center; align-items: center; - z-index: 10; } .details-content { @@ -150,7 +124,6 @@ .app-select-container { width: 60%; margin-top: 12px; - background-color: var(--side-panel-app-select-container-background-color); margin-left: 10px; height: 30px; display: flex; @@ -161,17 +134,6 @@ padding-top: 5px; } -.app-select-container { - @include mat.select-overrides( - ( - placeholder-text-color: var(--side-panel-select-placeholder-text-color), - enabled-trigger-text-color: - var(--side-panel-select-enabled-trigger-text-color), - enabled-arrow-color: var(--side-panel-select-enabled-arrow-color), - ) - ); -} - .app-name-option { color: var(--side-panel-app-name-option-color); font-family: 'Google Sans Mono', monospace; @@ -197,9 +159,6 @@ .build-mode-button { margin: 0 4px; - &.mat-mdc-unelevated-button { - height: 30px; - } } .app-actions { @@ -232,52 +191,9 @@ font-style: italic; } -:host ::ng-deep .mat-mdc-tooltip .mdc-tooltip__surface { - max-width: 250px; - white-space: wrap; - font-size: 11px; -} -:host ::ng-deep .wide-agent-dropdown-panel { - min-width: 300px; - max-width: 600px; - max-height: 400px; - - .mat-mdc-option { - white-space: normal; - line-height: 1.4; - height: auto; - min-height: 48px; - padding: 8px 16px; - } - - .search-option { - position: sticky !important; - top: 0 !important; - z-index: 1000 !important; - background-color: var(--mat-select-panel-background-color, white) !important; - padding: 8px 16px !important; - border-bottom: 1px solid var(--mat-divider-color, rgba(0, 0, 0, 0.12)); - min-height: auto !important; - height: auto !important; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - opacity: 1 !important; - - &:hover { - background-color: var(--mat-select-panel-background-color, white) !important; - } - - &.mat-mdc-option.mat-mdc-option-active { - background-color: var(--mat-select-panel-background-color, white) !important; - } - } -} .agent-search-field { width: 100%; - - .mat-mdc-form-field-subscript-wrapper { - display: none; - } } diff --git a/src/app/components/theme-toggle/theme-toggle.scss b/src/app/components/theme-toggle/theme-toggle.scss index b5ce5cd4..530a1272 100644 --- a/src/app/components/theme-toggle/theme-toggle.scss +++ b/src/app/components/theme-toggle/theme-toggle.scss @@ -24,14 +24,12 @@ // Builder mode styling - when used with builder-mode-action-button class :host.builder-mode-action-button .theme-toggle-button { - background-color: var(--builder-secondary-background-color); color: var(--builder-text-tertiary-color); border-radius: 50%; transition: all 0.2s ease; margin-right: 0px !important; &:hover { - background-color: var(--builder-hover-background-color); color: var(--builder-text-primary-color); opacity: 1; } diff --git a/src/app/components/trace-tab/trace-event/trace-event.component.scss b/src/app/components/trace-tab/trace-event/trace-event.component.scss index 6f22f011..a66fc375 100644 --- a/src/app/components/trace-tab/trace-event/trace-event.component.scss +++ b/src/app/components/trace-tab/trace-event/trace-event.component.scss @@ -17,7 +17,6 @@ padding-top: 8px; padding-left: 12px; padding-right: 12px; - background-color: var(--trace-event-json-viewer-container-background-color); } .event-graph-container { @@ -39,6 +38,5 @@ top: 0; right: 0; height: 48px; /* match tab header height */ - z-index: 2; margin-right: 10px; } diff --git a/src/app/components/trace-tab/trace-tab.component.scss b/src/app/components/trace-tab/trace-tab.component.scss index 87c730c9..43897732 100644 --- a/src/app/components/trace-tab/trace-tab.component.scss +++ b/src/app/components/trace-tab/trace-tab.component.scss @@ -14,8 +14,6 @@ * limitations under the License. */ -@use '@angular/material' as mat; - .trace-wrapper { padding-left: 25px; padding-right: 25px; @@ -63,7 +61,6 @@ .trace-bar { position: absolute; height: 18px; - background-color: var(--trace-tab-trace-bar-background-color); border-radius: 4px; padding-left: 4px; overflow: hidden; @@ -107,7 +104,6 @@ bottom: 0; left: 9px; width: 1px; - background-color: var(--trace-tab-vertical-line-background-color); } .horizontal-line { @@ -116,50 +112,8 @@ left: 9px; width: 10px; height: 1px; - background-color: var(--trace-tab-horizontal-line-background-color); } .trace-item { margin-top: 5px; - @include mat.expansion-overrides( - ( - container-background-color: - var(--trace-tab-trace-item-container-background-color), - header-focus-state-layer-color: - var(--trace-tab-trace-item-header-focus-state-layer-color), - header-description-color: - var(--trace-tab-trace-item-header-description-color), - header-text-size: 15, - ) - ); - - ::ng-deep .mat-expansion-panel-header.mat-expanded:focus { - background-color: var( - --trace-tab-mat-expansion-panel-header-focus-background-color - ); - } - - ::ng-deep .mat-expansion-panel-header.mat-expanded { - background-color: var( - --trace-tab-mat-expansion-panel-header-background-color - ); - } - - ::ng-deep .mat-expansion-panel-header.mat-expanded:hover { - background-color: var( - --trace-tab-mat-expansion-panel-header-hover-background-color - ); - } -} - -::ng-deep .mat-expansion-panel-header-title { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -::ng-deep .mat-expansion-panel-header-description { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; } diff --git a/src/app/components/trace-tab/trace-tree/trace-tree.component.scss b/src/app/components/trace-tab/trace-tree/trace-tree.component.scss index 7b2214d2..865aea3b 100644 --- a/src/app/components/trace-tab/trace-tree/trace-tree.component.scss +++ b/src/app/components/trace-tab/trace-tree/trace-tree.component.scss @@ -42,7 +42,6 @@ .trace-bar { position: absolute; height: 18px; - background-color: var(--trace-tree-trace-bar-background-color); border-radius: 4px; padding-left: 4px; overflow: hidden; @@ -72,12 +71,10 @@ cursor: pointer; &:hover { - background-color: var(--trace-tree-trace-row-hover-background-color); } } .trace-row.selected { - background-color: var(--trace-tree-trace-row-selected-background-color); } .trace-indent { @@ -99,7 +96,6 @@ bottom: 0; left: 9px; width: 1px; - background-color: var(--trace-tree-vertical-line-background-color); } .horizontal-line { @@ -108,7 +104,6 @@ left: 9px; width: 10px; height: 1px; - background-color: var(--trace-tree-horizontal-line-background-color); } .trace-row-left { diff --git a/src/app/components/view-image-dialog/view-image-dialog.component.scss b/src/app/components/view-image-dialog/view-image-dialog.component.scss index 31d12b5e..3731febc 100644 --- a/src/app/components/view-image-dialog/view-image-dialog.component.scss +++ b/src/app/components/view-image-dialog/view-image-dialog.component.scss @@ -1,6 +1,5 @@ :host { display: block; - background-color: var(--mdc-dialog-container-color); padding: 16px; } @@ -8,7 +7,6 @@ position: absolute; top: 5px; right: 10px; - background: none; border: none; cursor: pointer; padding: 8px; @@ -18,11 +16,9 @@ display: flex; align-items: center; justify-content: center; - z-index: 10; /* Ensure button is clickable */ margin-bottom: 15px; &:hover { - background-color: var(--builder-tool-item-hover-background-color); } svg { diff --git a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss index f7a81d02..8fc7752f 100644 --- a/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss +++ b/src/app/components/workflow-graph-tooltip/workflow-graph-tooltip.component.scss @@ -17,7 +17,6 @@ .workflow-graph-tooltip { width: 500px; height: 400px; - background-color: var(--mdc-dialog-container-color, #2b2b2f); border-radius: 8px; padding: 12px; display: flex; @@ -74,7 +73,6 @@ transition: background-color 0.2s; &:hover:not(.active) { - background-color: rgba(138, 180, 248, 0.1); } &.active { @@ -107,7 +105,6 @@ } .workflow-node { - background-color: var(--mdc-dialog-container-color, #2b2b2f); border: 2px solid; border-radius: 6px; padding: 8px 12px; diff --git a/src/styles.scss b/src/styles.scss index ca9f7d01..7d6f4b10 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -14,32 +14,42 @@ * limitations under the License. */ -/* You can add global styles to this file, and also import other style files */ @use '@angular/material' as mat; -@use '../theme-colors.scss' as theme; // Apply dark theme by default html { - @include mat.theme(theme.$dark-theme); + @include mat.theme(( + color: (theme-type: dark), + typography: (brand-family: 'Google Sans', plain-family: 'Google Sans'), + density: (scale: 0), + )); + color-scheme: dark; } // Light theme override html.light-theme { - @include mat.theme(theme.$light-theme); + @include mat.theme(( + color: (theme-type: light), + typography: (brand-family: 'Google Sans', plain-family: 'Google Sans'), + density: (scale: 0), + )); + color-scheme: light; } // Dark theme explicit class (for consistency) html.dark-theme { - @include mat.theme(theme.$dark-theme); -} - -html { - font-family: 'Google Sans', 'Helvetica Neue', sans-serif !important; + @include mat.theme(( + color: (theme-type: dark), + typography: (brand-family: 'Google Sans', plain-family: 'Google Sans'), + density: (scale: 0), + )); + color-scheme: dark; } body { height: 100vh; margin: 0; + font-family: Roboto, 'Helvetica Neue', sans-serif; } markdown p { @@ -47,901 +57,6 @@ markdown p { margin-block-end: 0.5em; } -// Ensure menus and overlays appear above all other content -.cdk-overlay-container { - z-index: 9999 !important; -} - -.mat-mdc-menu-panel { - z-index: 10000 !important; -} - -// Menu styling for both themes -.mat-mdc-menu-panel, -.mat-mdc-menu-panel .mat-mdc-menu-content { - background-color: var(--mdc-dialog-container-color) !important; -} - -.mat-mdc-menu-item, -.mat-mdc-menu-item .mdc-list-item__primary-text { - color: var(--mdc-dialog-supporting-text-color) !important; -} - -.mat-mdc-menu-item:hover, -.mat-mdc-menu-item:focus { - background-color: var(--builder-tool-item-hover-background-color) !important; -} - -.mat-mdc-menu-item .mat-icon { - color: var(--mdc-dialog-supporting-text-color) !important; -} - -// Snackbar (notification/warning) styling for both themes -.mat-mdc-snack-bar-container { - --mdc-snackbar-container-color: var(--mdc-dialog-container-color) !important; - --mdc-snackbar-supporting-text-color: var(--mdc-dialog-supporting-text-color) !important; - --mat-snack-bar-button-color: var(--builder-text-link-color) !important; -} - -.mdc-snackbar__surface { - background-color: var(--mdc-dialog-container-color) !important; -} - -.mdc-snackbar__label, -.mat-mdc-snack-bar-label { - color: var(--mdc-dialog-supporting-text-color) !important; -} - -.mat-mdc-snack-bar-action { - color: var(--builder-text-link-color) !important; -} - -// Dark theme custom properties -html.dark-theme { - --mat-sys-primary: black; - --mdc-checkbox-selected-icon-color: white; - --mat-sys-background: #131314; - // tab variable overrides - --mat-tab-header-active-label-text-color: #8ab4f8; - --mat-tab-header-active-hover-label-text-color: #8ab4f8; - --mat-tab-header-active-focus-label-text-color: #8ab4f8; - --mat-tab-header-label-text-weight: 500; - --mdc-text-button-label-text-color: #89b4f8; - - // Select dropdown styling for dark theme - --mat-select-trigger-text-color: #8ab4f8; - --mat-select-panel-background-color: #2b2b2f; - --mat-option-label-text-color: #e8eaed; - --mat-option-hover-state-layer-color: rgba(255, 255, 255, 0.08); - --mat-option-focus-state-layer-color: rgba(255, 255, 255, 0.08); - --mat-option-selected-state-layer-color: rgba(138, 180, 248, 0.24); - - // Form field styling for dark theme - --mat-form-field-container-text-color: white; - --mdc-filled-text-field-input-text-color: white; - --mdc-filled-text-field-label-text-color: #9aa0a6; - --mdc-filled-text-field-container-color: #303030; - --mdc-outlined-text-field-input-text-color: white; - --mdc-outlined-text-field-label-text-color: #9aa0a6; - --mat-form-field-state-layer-color: white; - - // Dialog text for dark theme - --mdc-dialog-supporting-text-color: #e8eaed; - --mat-dialog-content-text-color: #e8eaed; - - // Expansion panel text color for dark theme - --mat-expansion-container-text-color: #e8eaed; - --mat-expansion-header-text-color: #e8eaed; - --adk-web-text-color-light-gray: #c4c7c5; -} - -// Light theme custom properties -html.light-theme { - --mat-sys-primary: #9AA0A6; - --mdc-checkbox-selected-icon-color: #305f9d; - --mat-sys-background: #ffffff; - // tab variable overrides - --mat-tab-header-active-label-text-color: #305f9d; - --mat-tab-header-active-hover-label-text-color: #305f9d; - --mat-tab-header-active-focus-label-text-color: #305f9d; - --mat-tab-header-label-text-weight: 500; - --mdc-text-button-label-text-color: #305f9d; - - // Fix select dropdown visibility - --mat-select-trigger-text-color: #202124; - --mat-select-panel-background-color: #ffffff; - --mat-option-label-text-color: #202124; - --mat-option-hover-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-option-focus-state-layer-color: rgba(0, 0, 0, 0.04); - --mat-option-selected-state-layer-color: rgba(48, 95, 157, 0.12); - - // Fix form field visibility - --mat-form-field-container-text-color: #202124; - --mdc-filled-text-field-input-text-color: #202124; - --mdc-filled-text-field-label-text-color: #5f5e5e; - --mdc-filled-text-field-container-color: #f3f0f0; - --mdc-outlined-text-field-input-text-color: #202124; - --mdc-outlined-text-field-label-text-color: #5f5e5e; - --mat-form-field-state-layer-color: #202124; - - // Fix dialog text visibility - --mdc-dialog-supporting-text-color: #202124; - --mat-dialog-content-text-color: #202124; - - // Expansion panel text color for light theme - --mat-expansion-container-text-color: #202124; - --mat-expansion-header-text-color: #202124; - --adk-web-text-color-light-gray: #c4c7c5; -} - -// Dark theme dialog overrides -html.dark-theme { - // Custom property for dialog subhead font - --mdc-dialog-subhead-font-family: 'Google Sans'; - --mdc-dialog-subhead-font-style: normal; - --mdc-dialog-subhead-font-weight: 400; - --mdc-dialog-subhead-font-size: 24px; - --mdc-dialog-subhead-line-height: 32px; - --mdc-dialog-subhead-color: #e3e3e3; - --mdc-dialog-container-color: #2b2b2f; - - @include mat.dialog-overrides((container-color: #2b2b2f, - subhead-color: white, - )); -} - -// Light theme dialog overrides -html.light-theme { - // Custom property for dialog subhead font - --mdc-dialog-subhead-font-family: 'Google Sans'; - --mdc-dialog-subhead-font-style: normal; - --mdc-dialog-subhead-font-weight: 400; - --mdc-dialog-subhead-font-size: 24px; - --mdc-dialog-subhead-line-height: 32px; - --mdc-dialog-subhead-color: #202124; - --mdc-dialog-container-color: #ffffff; - - @include mat.dialog-overrides((container-color: #ffffff, - subhead-color: #202124, - )); -} - -.mat-mdc-dialog-container .mat-mdc-dialog-title.mdc-dialog__title { - font-family: var(--mdc-dialog-subhead-font-family); - font-style: var(--mdc-dialog-subhead-font-style); - font-weight: var(--mdc-dialog-subhead-font-weight); - font-size: var(--mdc-dialog-subhead-font-size); - line-height: var(--mdc-dialog-subhead-line-height); - color: var(--mdc-dialog-subhead-color); -} - -// Dark theme progress spinner and custom properties -html.dark-theme { - --chat-panel-function-event-button-background-color: #333; - --chat-panel-function-event-button-border-color: #777; - --chat-panel-function-event-button-text-color: #ccc; - --chat-panel-function-event-button-highlight-background-color: rgb(15, - 82, - 35); - --chat-panel-function-event-button-highlight-border-color: rgb(15, 82, 35); - --chat-panel-function-event-button-highlight-color: white; - --long-running-response-input-text-color: #000; - --long-running-response-input-caret-color: #000; - --long-running-response-input-placeholder-color: rgba(0, 0, 0, 0.5); - --long-running-response-icon-color: #000; - --long-running-response-send-button-color: #000; - --chat-panel-user-message-message-card-background-color: #004a77; - --chat-panel-user-message-message-card-color: white; - --chat-panel-bot-message-message-card-background-color: #303030; - --chat-panel-bot-message-message-card-color: white; - --chat-panel-bot-message-focus-within-message-card-background-color: #131314; - --chat-panel-bot-message-focus-within-message-card-border-color: #8ab4f8; - --chat-panel-message-textarea-background-color: #303030; - --chat-panel-message-textarea-focus-background-color: #131314; - --chat-panel-eval-compare-container-background-color: #484848; - --chat-panel-actual-result-border-right-color: #8a8686; - --chat-panel-eval-response-header-border-bottom-color: #8a8686; - --chat-panel-header-expected-color: #44c265; - --chat-panel-header-actual-color: #ff8983; - --chat-panel-eval-pass-color: #44c265; - --chat-panel-eval-fail-color: #ff8983; - --chat-panel-input-field-textarea-color: white; - --chat-panel-input-field-textarea-placeholder-color: #8e918f; - --chat-panel-input-field-textarea-caret-color: white; - --chat-panel-input-field-button-color: white; - --chat-panel-input-field-button-background-color: rgb(51, 53, 55); - --chat-panel-mat-mdc-mini-fab-background-color: white; - --chat-panel-mat-mdc-mini-fab-mat-icon-color: black; - --chat-panel-input-field-mat-mdc-text-field-wrapper-border-color: #8e918f; - --chat-panel-delete-button-background-color: rgba(0, 0, 0, 0.7); - --chat-panel-delete-button-color: white; - --chat-panel-file-container-background-color: #1e1e1e; - --chat-panel-thought-chip-background-color: #8ab4f8; - --chat-panel-link-style-button-color: #007bff; - --artifact-tab-download-button-background-color: #8ab4f8; - --artifact-tab-white-separator-border-top-color: white; - --artifact-tab-version-select-container-background-color: #212123; - --artifact-tab-link-style-button-color: #007bff; - --artifact-tab-link-style-button-hover-color: #0056b3; - --artifact-tab-link-style-button-focus-outline-color: #007bff; - --artifact-tab-link-style-button-active-color: #004085; - --artifact-tab-link-style-button-disabled-color: #6c757d; - --audio-player-container-background-color: #f0f0f0; - --audio-player-container-box-shadow-color: rgba(0, 0, 0, 0.1); - --audio-player-custom-controls-button-background-color: #007bff; - --audio-player-custom-controls-button-color: white; - --audio-player-custom-controls-button-hover-background-color: #0056b3; - --chat-drawer-container-background-color: #131314; - --chat-event-container-color: white; - --chat-card-background-color: #131314; - --chat-function-event-button-background-color: white; - --chat-function-event-button-highlight-background-color: rgb(15, 82, 35); - --chat-function-event-button-highlight-border-color: rgb(15, 82, 35); - --chat-function-event-button-highlight-color: white; - --chat-user-message-message-card-background-color: #004a77; - --chat-user-message-message-card-color: white; - --chat-bot-message-message-card-background-color: #303030; - --chat-bot-message-message-card-color: white; - --chat-bot-message-focus-within-message-card-background-color: #131314; - --chat-bot-message-focus-within-message-card-border-color: #8ab4f8; - --chat-message-textarea-background-color: #303030; - --chat-message-textarea-focus-background-color: #131314; - --chat-eval-compare-container-background-color: #484848; - --chat-actual-result-border-right-color: #8a8686; - --chat-eval-response-header-border-bottom-color: #8a8686; - --chat-header-expected-color: #44c265; - --chat-header-actual-color: #ff8983; - --chat-eval-pass-color: #44c265; - --chat-eval-fail-color: #ff8983; - --chat-side-drawer-background-color: #1b1b1b; - --chat-side-drawer-color: white; - --chat-file-item-background-color: #eee; - --chat-empty-state-container-color: #eee; - --chat-warning-color: #ffc185; - --chat-error-color: #ff4545; - --chat-mat-mdc-unelevated-button-color: #202124; - --chat-mat-mdc-unelevated-button-background-color: #8ab4f8; - --chat-mdc-linear-progress-buffer-dots-background-color: white; - --chat-mat-mdc-text-field-wrapper-border-color: #8e918f; - --chat-segment-key-color: lightgray; - --chat-bottom-resize-handler-background-color: #5f6368; - --chat-readonly-badge-background-color: #ff8983; - --chat-readonly-badge-color: #202124; - --chat-trace-detail-container-background-color: #1b1b1b; - --chat-toolbar-background-color: #1b1b1b; - --chat-toolbar-edit-mode-background-color: #44c2651a; - --chat-toolbar-session-text-color: #fdfdfd; - --chat-toolbar-session-id-color: #9aa0a6; - --chat-toolbar-icon-color: #c4c7c5; - --chat-toolbar-new-session-color: #9aa0a6; - --chat-toolbar-sse-toggle-label-text-color: #e8eaed; - --chat-toolbar-sse-toggle-unselected-track-color: #5f6368; - --chat-toolbar-sse-toggle-unselected-handle-color: #9aa0a6; - --chat-toolbar-sse-toggle-selected-track-color: #8ab4f9; - --chat-toolbar-sse-toggle-selected-handle-color: #1b73e8; - --chat-toolbar-sse-toggle-track-outline-color: #1b73e8; - --chat-mat-drawer-border-right-color: #444746; - --edit-json-dialog-container-box-shadow-color: rgba(0, 0, 0, 0.4); - --eval-tab-eval-set-actions-color: #9aa0a6; - --eval-tab-empty-eval-info-background-color: #202124; - --eval-tab-empty-eval-info-box-shadow-color1: rgba(0, 0, 0, 0.15); - --eval-tab-empty-eval-info-box-shadow-color2: rgba(0, 0, 0, 0.3); - --eval-tab-info-title-color: #e8eaed; - --eval-tab-info-detail-color: #e8eaed; - --eval-tab-info-create-color: #8ab4f8; - --eval-tab-selected-eval-case-color: #8ab4f8; - --eval-tab-save-session-btn-background-color1: rgba(138, 180, 248, 0.24); - --eval-tab-save-session-btn-background-color2: #202124; - --eval-tab-save-session-btn-text-color: #d2e3fc; - --eval-tab-run-eval-btn-border-color: #5f6368; - --eval-tab-run-eval-btn-color: #8ab4f8; - --eval-tab-run-eval-btn-hover-background-color: #202124; - --eval-tab-result-btn-border-color: #5f6368; - --eval-tab-result-btn-hover-background-color: #202124; - --eval-tab-result-btn-pass-color: #44c265; - --eval-tab-result-btn-fail-color: #ff8983; - --eval-tab-status-card-background-color: #2d2d2d; - --eval-tab-status-card-timestamp-color: #e0e0e0; - --eval-tab-status-card-metric-color: #bbb; - --eval-tab-status-card-failed-color: #ff6b6b; - --eval-tab-status-card-separator-color: #666; - --eval-tab-status-card-passed-color: #63e6be; - --eval-tab-status-card-action-mat-icon-color: #bdbdbd; - --eval-tab-status-card-icon-color: #bdbdbd; - --run-eval-config-dialog-container-box-shadow-color: rgba(0, 0, 0, 0.4); - --run-eval-config-dialog-threshold-slider-active-track-color: #4285f4; - --run-eval-config-dialog-threshold-slider-inactive-track-color: #616161; - --run-eval-config-dialog-threshold-slider-handle-color: #4285f4; - --run-eval-config-dialog-threshold-slider-ripple-color: #4285f4; - --run-eval-config-dialog-mdc-slider-thumb-background-color: black; - --event-tab-events-wrapper-color: #9aa0a6; - --event-tab-event-index-color: #80868b; - --event-tab-event-list-active-indicator-color: orange; - --event-tab-event-list-list-item-container-color: #2b2b2f; - --event-tab-mdc-list-item-border-color: #5f6368; - --event-tab-mdc-list-item-hover-background-color: #1c1b1c; - --trace-chart-trace-label-color: #e3e3e3; - --trace-chart-trace-bar-background-color: #2f4d65; - --trace-chart-trace-bar-color: #8dabbf; - --trace-chart-trace-duration-color: #888; - --trace-chart-vertical-line-background-color: #ccc; - --trace-chart-horizontal-line-background-color: #ccc; - --session-tab-session-wrapper-color: #9aa0a6; - --session-tab-session-item-background-color: #303030; - --session-tab-session-item-hover-background-color: #141414; - --session-tab-session-item-current-background-color: #004a77; - --session-tab-session-id-color: #e8eaed; - --session-tab-session-date-color: #9aa0a6; - --side-panel-button-filled-container-color: #89b4f8; - --side-panel-button-filled-label-text-color: black; - --side-panel-mat-icon-color: #bdc1c6; - --side-panel-resize-handler-background-color: #5f6368; - --side-panel-details-panel-container-background-color: #242424; - --side-panel-details-content-color: white; - --side-panel-powered-by-adk-color: grey; - --side-panel-app-select-container-background-color: #212123; - --side-panel-select-placeholder-text-color: #8ab4f8; - --side-panel-select-enabled-trigger-text-color: #8ab4f8; - --side-panel-select-enabled-arrow-color: #8ab4f8; - --side-panel-app-name-option-color: #9aa0a6; - --trace-tab-trace-title-color: #9aa0a6; - --trace-tab-trace-label-color: #e3e3e3; - --trace-tab-trace-bar-background-color: #2f4d65; - --trace-tab-trace-bar-color: #8dabbf; - --trace-tab-trace-duration-color: #888; - --trace-tab-vertical-line-background-color: #ccc; - --trace-tab-horizontal-line-background-color: #ccc; - --trace-tab-trace-item-container-background-color: #333537; - --trace-tab-trace-item-header-focus-state-layer-color: rgba(138, 180, 248, 0.12); - --trace-tab-trace-item-header-description-color: #8e918f; - --trace-tab-mat-expansion-panel-header-focus-background-color: #444746; - --trace-tab-mat-expansion-panel-header-background-color: #444746; - --trace-tab-mat-expansion-panel-header-hover-background-color: #444746; - --trace-event-json-viewer-container-background-color: #1b1b1b; - --trace-tree-trace-label-color: #e3e3e3; - --trace-tree-trace-bar-background-color: #2f4d65; - --trace-tree-trace-bar-color: #8dabbf; - --trace-tree-short-trace-bar-duration-color: #8dabbf; - --trace-tree-trace-duration-color: #888; - --trace-tree-trace-row-hover-background-color: #3b3d3c; - --trace-tree-trace-row-selected-background-color: #3b3d3c; - --trace-tree-vertical-line-background-color: #ccc; - --trace-tree-horizontal-line-background-color: #ccc; - --trace-tree-invocation-id-container-color: #9aa0a6; - --trace-tree-trace-row-left-span-div-color: white; - --trace-tree-trace-row-left-is-event-row-color: #8ab4f8; - - // Builder mode custom properties - Dark theme - --builder-container-background-color: #131314; - --builder-panel-background-color: #202124; - --builder-tabs-background-color: #202124; - --builder-card-background-color: #303030; - --builder-secondary-background-color: #333537; - --builder-tertiary-background-color: #1b1b1b; - --builder-hover-background-color: #141414; - --builder-border-color: #444746; - --builder-text-primary-color: #e8eaed; - --builder-text-secondary-color: #9aa0a6; - --builder-text-tertiary-color: #c4c7c5; - --builder-text-muted-color: #5c5f5e; - --builder-text-link-color: #aecbfa; - --builder-breadcrumb-separator-color: #666; - --builder-form-field-background-color: #333537; - --builder-tool-chip-background-color: #303030; - --builder-tool-chip-hover-color: #3c4043; - --builder-callback-chip-background-color: #333537; - --builder-callback-chip-text-color: #f1f3f4; - --builder-callback-chip-type-color: #8f9aa6; - --builder-callback-chip-name-color: #f5f7f9; - --builder-expansion-background-color: #333537; - --builder-expansion-header-description-color: #8e918f; - --builder-expansion-hover-color: #444746; - --builder-menu-background-color: #303030; - --builder-menu-item-hover-color: #444746; - --builder-menu-divider-color: #444746; - --builder-button-primary-background-color: #8ab4f8; - --builder-button-primary-text-color: #202124; - --builder-button-primary-hover-color: #aecbfa; - --builder-button-secondary-text-color: #9aa0a6; - --builder-button-secondary-border-color: rgba(154, 160, 166, 0.3); - --builder-button-secondary-hover-background-color: rgba(154, 160, 166, 0.1); - --builder-button-secondary-hover-text-color: #e8eaed; - --builder-add-button-background-color: rgba(138, 180, 248, 0.24); - --builder-add-button-text-color: #d2e3fc; - --builder-icon-color: #f1f3f4; - --builder-assistant-panel-background-color: #2b2b2b; - --builder-assistant-panel-header-background-color: #292929; - --builder-assistant-panel-border-color: #3c3c3c; - --builder-assistant-input-background-color: #1a1a1a; - --builder-assistant-input-text-color: #e0e0e0; - --builder-assistant-input-placeholder-color: #808080; - --builder-assistant-user-message-background-color: #1a1a1a; - --builder-assistant-user-message-border-color: #404040; - --builder-assistant-user-message-text-color: #e3e3e3; - --builder-assistant-bot-message-text-color: #d4d4d4; - --builder-assistant-send-button-color: #888888; - --builder-assistant-send-button-hover-color: #b0b0b0; - --builder-assistant-send-button-disabled-color: #4a4a4a; - - // Canvas-specific custom properties - Dark theme - --builder-canvas-container-background: linear-gradient(135deg, #0f0f0f 0%, #1a1a1a 100%); - --builder-canvas-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); - --builder-canvas-header-background: linear-gradient(90deg, #1e1e1e 0%, #2a2a2a 100%); - --builder-canvas-header-title-gradient: linear-gradient(45deg, #8ab4f8, #4285f4); - --builder-canvas-workspace-background: #131314; - --builder-canvas-instruction-background: rgba(19, 19, 20, 0.9); - --builder-canvas-instruction-border: rgba(138, 180, 248, 0.2); - --builder-canvas-node-background: rgba(85, 107, 116, 0.4); - --builder-canvas-node-border: #474747; - --builder-canvas-node-hover-border: #666; - --builder-canvas-node-chip-outline: rgba(255, 255, 255, 0.1); - --builder-canvas-node-badge-background: linear-gradient(135deg, rgba(0, 187, 234, 0.2), rgba(0, 78, 122, 0.4)); - --builder-canvas-group-background: #1c1c1c; - --builder-canvas-group-border: #3e3e3e; - --builder-canvas-handle-fill: rgba(0, 0, 0, 1); - --builder-canvas-reconnect-handle-fill: rgba(0, 187, 234, 0.15); - --builder-canvas-workflow-chip-background: rgba(0, 187, 234, 0.2); - --builder-canvas-workflow-chip-border: rgba(0, 187, 234, 0.4); - --builder-canvas-add-btn-background: radial-gradient(circle at 50% 50%, #1f2330 0%, #131314 100%); - --builder-canvas-add-btn-hover-background: radial-gradient(circle at 50% 50%, #222a3a 0%, #16181d 100%); - --builder-canvas-add-btn-shadow: 0 4px 12px rgba(0, 187, 234, 0.35); - --builder-canvas-empty-group-background: rgba(255, 255, 255, 0.02); - --builder-canvas-empty-group-border: rgba(0, 187, 234, 0.3); - --builder-canvas-empty-group-hover-background: rgba(255, 255, 255, 0.04); - --builder-canvas-empty-group-hover-border: rgba(0, 187, 234, 0.5); - --builder-canvas-empty-group-btn-background: rgba(0, 187, 234, 0.1); - --builder-canvas-empty-group-btn-hover-background: rgba(0, 187, 234, 0.2); - --builder-button-background-color: rgba(138, 180, 248, 0.1); - --builder-button-border-color: rgba(138, 180, 248, 0.3); - --builder-button-text-color: #8ab4f8; - --builder-button-hover-background-color: rgba(138, 180, 248, 0.2); - --builder-button-hover-border-color: #8ab4f8; - --builder-item-hover-color: rgba(138, 180, 248, 0.1); - --builder-chip-background-color: rgba(138, 180, 248, 0.2); - --builder-accent-color: #00bbea; - --builder-tool-item-background-color: rgba(255, 255, 255, 0.05); - --builder-tool-item-border-color: rgba(255, 255, 255, 0.1); - --builder-tool-item-hover-background-color: rgba(255, 255, 255, 0.1); - --mat-table-row-item-label-text-color: #fff; - --mat-table-header-headline-color: #fff; - - @include mat.progress-spinner-overrides((active-indicator-color: #a8c7fa, - size: 80, - )); -} - -// Light theme progress spinner and custom properties -html.light-theme { - --mat-button-outlined-label-text-color: black; - --chat-panel-function-event-button-background-color: #f2f1ef; - --chat-panel-function-event-button-border-color: #333; - --chat-panel-function-event-button-text-color: #333; - --chat-panel-function-event-button-highlight-border-color: #0f5223; - --chat-panel-function-event-button-highlight-color: white; - --long-running-response-input-text-color: #202124; - --long-running-response-input-caret-color: #202124; - --long-running-response-input-placeholder-color: rgba(0, 0, 0, 0.5); - --long-running-response-icon-color: rgba(0, 0, 0, 0.7); - --long-running-response-send-button-color: #305f9d; - --chat-panel-user-message-message-card-background-color: #d5e3ff; - --chat-panel-user-message-message-card-color: #202124; - --chat-panel-bot-message-message-card-background-color: #f3f0f0; - --chat-panel-bot-message-message-card-color: #202124; - --chat-panel-bot-message-focus-within-message-card-background-color: #ffffff; - --chat-panel-bot-message-focus-within-message-card-border-color: #305f9d; - --chat-panel-message-textarea-background-color: #f3f0f0; - --chat-panel-message-textarea-focus-background-color: #ffffff; - --chat-panel-eval-compare-container-background-color: #e5e2e2; - --chat-panel-actual-result-border-right-color: #c8c6c6; - --chat-panel-eval-response-header-border-bottom-color: #c8c6c6; - --chat-panel-header-expected-color: #0f5223; - --chat-panel-header-actual-color: #ba1a1a; - --chat-panel-eval-pass-color: #0f5223; - --chat-panel-eval-fail-color: #ba1a1a; - --chat-panel-input-field-textarea-color: #202124; - --chat-panel-input-field-textarea-placeholder-color: #5f5e5e; - --chat-panel-input-field-textarea-caret-color: #202124; - --chat-panel-input-field-button-color: #202124; - --chat-panel-input-field-button-background-color: #e5e2e2; - --chat-panel-mat-mdc-mini-fab-background-color: #305f9d; - --chat-panel-mat-mdc-mini-fab-mat-icon-color: white; - --chat-panel-input-field-mat-mdc-text-field-wrapper-border-color: #adabab; - --chat-panel-delete-button-background-color: rgba(255, 255, 255, 0.9); - --chat-panel-delete-button-color: #202124; - --chat-panel-file-container-background-color: #f3f0f0; - --chat-panel-thought-chip-background-color: #305f9d; - --chat-panel-link-style-button-color: #305f9d; - --artifact-tab-download-button-background-color: #305f9d; - --artifact-tab-white-separator-border-top-color: #202124; - --artifact-tab-version-select-container-background-color: #f3f0f0; - --artifact-tab-link-style-button-color: #305f9d; - --artifact-tab-link-style-button-hover-color: #0f4784; - --artifact-tab-link-style-button-focus-outline-color: #305f9d; - --artifact-tab-link-style-button-active-color: #003061; - --artifact-tab-link-style-button-disabled-color: #929090; - --audio-player-container-background-color: #f3f0f0; - --audio-player-container-box-shadow-color: rgba(0, 0, 0, 0.1); - --audio-player-custom-controls-button-background-color: #305f9d; - --audio-player-custom-controls-button-color: white; - --audio-player-custom-controls-button-hover-background-color: #0f4784; - --chat-drawer-container-background-color: #ffffff; - --chat-event-container-color: #202124; - --chat-card-background-color: #ffffff; - --chat-function-event-button-background-color: #202124; - --chat-function-event-button-highlight-background-color: #0f5223; - --chat-function-event-button-highlight-border-color: #0f5223; - --chat-function-event-button-highlight-color: white; - --chat-user-message-message-card-background-color: #d5e3ff; - --chat-user-message-message-card-color: #202124; - --chat-bot-message-message-card-background-color: #f3f0f0; - --chat-bot-message-message-card-color: #202124; - --chat-bot-message-focus-within-message-card-background-color: #ffffff; - --chat-bot-message-focus-within-message-card-border-color: #305f9d; - --chat-message-textarea-background-color: #f3f0f0; - --chat-message-textarea-focus-background-color: #ffffff; - --chat-eval-compare-container-background-color: #e5e2e2; - --chat-actual-result-border-right-color: #c8c6c6; - --chat-eval-response-header-border-bottom-color: #c8c6c6; - --chat-header-expected-color: #0f5223; - --chat-header-actual-color: #ba1a1a; - --chat-eval-pass-color: #0f5223; - --chat-eval-fail-color: #ba1a1a; - --chat-side-drawer-background-color: #f3f0f0; - --chat-side-drawer-color: #202124; - --chat-file-item-background-color: #e5e2e2; - --chat-empty-state-container-color: #202124; - --chat-warning-color: #93000a; - --chat-error-color: #ba1a1a; - --chat-mat-mdc-unelevated-button-color: white; - --chat-mat-mdc-unelevated-button-background-color: #305f9d; - --chat-mdc-linear-progress-buffer-dots-background-color: #202124; - --chat-mat-mdc-text-field-wrapper-border-color: #adabab; - --chat-segment-key-color: #5f5e5e; - --chat-bottom-resize-handler-background-color: #adabab; - --chat-readonly-badge-background-color: #ba1a1a; - --chat-readonly-badge-color: white; - --chat-trace-detail-container-background-color: #f3f0f0; - --chat-toolbar-background-color: #f3f0f0; - --chat-toolbar-edit-mode-background-color: rgba(15, 82, 35, 0.1); - --chat-toolbar-session-text-color: #202124; - --chat-toolbar-session-id-color: #5f5e5e; - --chat-toolbar-icon-color: #5f5e5e; - --chat-toolbar-new-session-color: #5f5e5e; - --chat-toolbar-sse-toggle-label-text-color: #202124; - --chat-toolbar-sse-toggle-unselected-track-color: #c8c6c6; - --chat-toolbar-sse-toggle-unselected-handle-color: #5f5e5e; - --chat-toolbar-sse-toggle-selected-track-color: #82adf0; - --chat-toolbar-sse-toggle-selected-handle-color: #305f9d; - --chat-toolbar-sse-toggle-track-outline-color: #305f9d; - --chat-mat-drawer-border-right-color: #c8c6c6; - --edit-json-dialog-container-box-shadow-color: rgba(0, 0, 0, 0.2); - --eval-tab-eval-set-actions-color: #5f5e5e; - --eval-tab-empty-eval-info-background-color: #f3f0f0; - --eval-tab-empty-eval-info-box-shadow-color1: rgba(0, 0, 0, 0.08); - --eval-tab-empty-eval-info-box-shadow-color2: rgba(0, 0, 0, 0.15); - --eval-tab-info-title-color: #202124; - --eval-tab-info-detail-color: #202124; - --eval-tab-info-create-color: #305f9d; - --eval-tab-selected-eval-case-color: #305f9d; - --eval-tab-save-session-btn-background-color1: rgba(48, 95, 157, 0.12); - --eval-tab-save-session-btn-background-color2: #f3f0f0; - --eval-tab-save-session-btn-text-color: #0f4784; - --eval-tab-run-eval-btn-border-color: #adabab; - --eval-tab-run-eval-btn-color: #305f9d; - --eval-tab-run-eval-btn-hover-background-color: #f3f0f0; - --eval-tab-result-btn-border-color: #adabab; - --eval-tab-result-btn-hover-background-color: #f3f0f0; - --eval-tab-result-btn-pass-color: #0f5223; - --eval-tab-result-btn-fail-color: #ba1a1a; - --eval-tab-status-card-background-color: #f3f0f0; - --eval-tab-status-card-timestamp-color: #5f5e5e; - --eval-tab-status-card-metric-color: #787777; - --eval-tab-status-card-failed-color: #ba1a1a; - --eval-tab-status-card-separator-color: #c8c6c6; - --eval-tab-status-card-passed-color: #0f5223; - --eval-tab-status-card-action-mat-icon-color: #5f5e5e; - --eval-tab-status-card-icon-color: #5f5e5e; - --run-eval-config-dialog-container-box-shadow-color: rgba(0, 0, 0, 0.2); - --run-eval-config-dialog-threshold-slider-active-track-color: #305f9d; - --run-eval-config-dialog-threshold-slider-inactive-track-color: #c8c6c6; - --run-eval-config-dialog-threshold-slider-handle-color: #305f9d; - --run-eval-config-dialog-threshold-slider-ripple-color: #305f9d; - --run-eval-config-dialog-mdc-slider-thumb-background-color: white; - --event-tab-events-wrapper-color: #5f5e5e; - --event-tab-event-index-color: #787777; - --event-tab-event-list-active-indicator-color: #ff5449; - --event-tab-event-list-list-item-container-color: #f3f0f0; - --event-tab-mdc-list-item-border-color: #c8c6c6; - --event-tab-mdc-list-item-hover-background-color: #e5e2e2; - --trace-chart-trace-label-color: #202124; - --trace-chart-trace-bar-background-color: #a7c8ff; - --trace-chart-trace-bar-color: #305f9d; - --trace-chart-trace-duration-color: #787777; - --trace-chart-vertical-line-background-color: #c8c6c6; - --trace-chart-horizontal-line-background-color: #c8c6c6; - --session-tab-session-wrapper-color: #5f5e5e; - --session-tab-session-item-background-color: #f3f0f0; - --session-tab-session-item-hover-background-color: #e5e2e2; - --session-tab-session-item-current-background-color: #d5e3ff; - --session-tab-session-id-color: #202124; - --session-tab-session-date-color: #5f5e5e; - --side-panel-button-filled-container-color: #305f9d; - --side-panel-button-filled-label-text-color: white; - --side-panel-mat-icon-color: #5f5e5e; - --side-panel-resize-handler-background-color: #adabab; - --side-panel-details-panel-container-background-color: #f3f0f0; - --side-panel-details-content-color: #202124; - --side-panel-powered-by-adk-color: #787777; - --side-panel-app-select-container-background-color: #ffffff; - --side-panel-select-placeholder-text-color: #305f9d; - --side-panel-select-enabled-trigger-text-color: #305f9d; - --side-panel-select-enabled-arrow-color: #305f9d; - --side-panel-app-name-option-color: #5f5e5e; - --trace-tab-trace-title-color: #5f5e5e; - --trace-tab-trace-label-color: #202124; - --trace-tab-trace-bar-background-color: #a7c8ff; - --trace-tab-trace-bar-color: #305f9d; - --trace-tab-trace-duration-color: #787777; - --trace-tab-vertical-line-background-color: #c8c6c6; - --trace-tab-horizontal-line-background-color: #c8c6c6; - --trace-tab-trace-item-container-background-color: #f3f0f0; - --trace-tab-trace-item-header-focus-state-layer-color: rgba(48, 95, 157, 0.12); - --trace-tab-trace-item-header-description-color: #787777; - --trace-tab-mat-expansion-panel-header-focus-background-color: #e5e2e2; - --trace-tab-mat-expansion-panel-header-background-color: #e5e2e2; - --trace-tab-mat-expansion-panel-header-hover-background-color: #e5e2e2; - --trace-event-json-viewer-container-background-color: #ffffff; - --trace-tree-trace-label-color: #202124; - --trace-tree-trace-bar-background-color: #a7c8ff; - --trace-tree-trace-bar-color: #305f9d; - --trace-tree-short-trace-bar-duration-color: #305f9d; - --trace-tree-trace-duration-color: #787777; - --trace-tree-trace-row-hover-background-color: #e5e2e2; - --trace-tree-trace-row-selected-background-color: #e5e2e2; - --trace-tree-vertical-line-background-color: #c8c6c6; - --trace-tree-horizontal-line-background-color: #c8c6c6; - --trace-tree-invocation-id-container-color: #5f5e5e; - --trace-tree-trace-row-left-span-div-color: #202124; - --trace-tree-trace-row-left-is-event-row-color: #305f9d; - - // Builder mode custom properties - Light theme - --builder-container-background-color: #ffffff; - --builder-panel-background-color: #f3f0f0; - --builder-tabs-background-color: #f3f0f0; - --builder-card-background-color: #ffffff; - --builder-secondary-background-color: #e5e2e2; - --builder-tertiary-background-color: #f3f0f0; - --builder-hover-background-color: #dcd9d9; - --builder-border-color: #c8c6c6; - --builder-text-primary-color: #202124; - --builder-text-secondary-color: #5f5e5e; - --builder-text-tertiary-color: #787777; - --builder-text-muted-color: #929090; - --builder-text-link-color: #305f9d; - --builder-breadcrumb-separator-color: #c8c6c6; - --builder-form-field-background-color: #e5e2e2; - --builder-tool-chip-background-color: #ffffff; - --builder-tool-chip-hover-color: #e5e2e2; - --builder-callback-chip-background-color: #e5e2e2; - --builder-callback-chip-text-color: #202124; - --builder-callback-chip-type-color: #5f5e5e; - --builder-callback-chip-name-color: #202124; - --builder-expansion-background-color: #e5e2e2; - --builder-expansion-header-description-color: #787777; - --builder-expansion-hover-color: #dcd9d9; - --builder-menu-background-color: #ffffff; - --builder-menu-item-hover-color: #e5e2e2; - --builder-menu-divider-color: #c8c6c6; - --builder-button-primary-background-color: #305f9d; - --builder-button-primary-text-color: #ffffff; - --builder-button-primary-hover-color: #0f4784; - --builder-button-secondary-text-color: #5f5e5e; - --builder-button-secondary-border-color: rgba(95, 94, 94, 0.3); - --builder-button-secondary-hover-background-color: rgba(95, 94, 94, 0.1); - --builder-button-secondary-hover-text-color: #202124; - --builder-add-button-background-color: rgba(48, 95, 157, 0.12); - --builder-add-button-text-color: #0f4784; - --builder-icon-color: #202124; - --builder-assistant-panel-background-color: #f3f0f0; - --builder-assistant-panel-header-background-color: #e5e2e2; - --builder-assistant-panel-border-color: #c8c6c6; - --builder-assistant-input-background-color: #ffffff; - --builder-assistant-input-text-color: #202124; - --builder-assistant-input-placeholder-color: #929090; - --builder-assistant-user-message-background-color: #d5e3ff; - --builder-assistant-user-message-border-color: #a7c8ff; - --builder-assistant-user-message-text-color: #202124; - --builder-assistant-bot-message-text-color: #202124; - --builder-assistant-send-button-color: #5f5e5e; - --builder-assistant-send-button-hover-color: #305f9d; - --builder-assistant-send-button-disabled-color: #c8c6c6; - - // Canvas-specific custom properties - Light theme - --builder-canvas-container-background: linear-gradient(135deg, #f8f9fa 0%, #e8eaed 100%); - --builder-canvas-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); - --builder-canvas-header-background: linear-gradient(90deg, #ffffff 0%, #f3f0f0 100%); - --builder-canvas-header-title-gradient: linear-gradient(45deg, #305f9d, #0f4784); - --builder-canvas-workspace-background: #ffffff; - --builder-canvas-instruction-background: rgba(255, 255, 255, 0.95); - --builder-canvas-instruction-border: rgba(48, 95, 157, 0.3); - --builder-canvas-node-background: rgba(229, 226, 226, 0.6); - --builder-canvas-node-border: #c8c6c6; - --builder-canvas-node-hover-border: #adabab; - --builder-canvas-node-chip-outline: rgba(200, 198, 198, 0.3); - --builder-canvas-node-badge-background: linear-gradient(135deg, rgba(48, 95, 157, 0.15), rgba(15, 71, 132, 0.2)); - --builder-canvas-group-background: #f3f0f0; - --builder-canvas-group-border: #c8c6c6; - --builder-canvas-handle-fill: rgba(255, 255, 255, 1); - --builder-canvas-reconnect-handle-fill: rgba(48, 95, 157, 0.15); - --builder-canvas-workflow-chip-background: rgba(48, 95, 157, 0.15); - --builder-canvas-workflow-chip-border: rgba(48, 95, 157, 0.3); - --builder-canvas-add-btn-background: radial-gradient(circle at 50% 50%, #ffffff 0%, #f8f9fa 100%); - --builder-canvas-add-btn-hover-background: radial-gradient(circle at 50% 50%, #f3f0f0 0%, #e8eaed 100%); - --builder-canvas-add-btn-shadow: 0 4px 12px rgba(48, 95, 157, 0.25); - --builder-canvas-empty-group-background: rgba(48, 95, 157, 0.03); - --builder-canvas-empty-group-border: rgba(48, 95, 157, 0.3); - --builder-canvas-empty-group-hover-background: rgba(48, 95, 157, 0.06); - --builder-canvas-empty-group-hover-border: rgba(48, 95, 157, 0.5); - --builder-canvas-empty-group-btn-background: rgba(48, 95, 157, 0.1); - --builder-canvas-empty-group-btn-hover-background: rgba(48, 95, 157, 0.2); - --builder-button-background-color: rgba(48, 95, 157, 0.1); - --builder-button-border-color: rgba(48, 95, 157, 0.3); - --builder-button-text-color: #305f9d; - --builder-button-hover-background-color: rgba(48, 95, 157, 0.2); - --builder-button-hover-border-color: #305f9d; - --builder-item-hover-color: rgba(48, 95, 157, 0.1); - --builder-chip-background-color: rgba(48, 95, 157, 0.15); - --builder-accent-color: #305f9d; - --builder-tool-item-background-color: #f6f3f3; - --builder-tool-item-border-color: #c8c6c6; - --builder-tool-item-hover-background-color: #dcd9d9; - - @include mat.progress-spinner-overrides((active-indicator-color: #305f9d, - size: 80, - )); -} - -// Form field overrides for dark theme -html.dark-theme { - @include mat.form-field-overrides((disabled-input-text-placeholder-color: orange, - filled-active-indicator-color: red, - outlined-outline-color: #cccccc, - outlined-input-text-color: #cccccc, - outlined-label-text-color: #cccccc, - outlined-hover-label-text-color: #cccccc, - outlined-focus-label-text-color: #cccccc, - outlined-disabled-label-text-color: #cccccc, - outlined-disabled-input-text-color: #cccccc, - outlined-disabled-outline-color: #cccccc, - outlined-caret-color: #cccccc, - )); -} - -// Form field overrides for light theme -html.light-theme { - @include mat.form-field-overrides((disabled-input-text-placeholder-color: #ff8983, - filled-active-indicator-color: #ba1a1a, - outlined-outline-color: #787777, - outlined-input-text-color: #202124, - outlined-label-text-color: #5f5e5e, - outlined-hover-label-text-color: #202124, - outlined-focus-label-text-color: #305f9d, - outlined-disabled-label-text-color: #929090, - outlined-disabled-input-text-color: #929090, - outlined-disabled-outline-color: #c8c6c6, - outlined-caret-color: #305f9d, - )); -} - -.mdc-line-ripple { - display: none; -} - -// Tooltip styling to prevent overlap -.mat-mdc-tooltip { - z-index: 10000 !important; - max-width: 300px; - background-color: var(--mdc-dialog-container-color) !important; - color: var(--mdc-dialog-supporting-text-color) !important; - - .mdc-tooltip__surface { - background-color: var(--mdc-dialog-container-color) !important; - color: var(--mdc-dialog-supporting-text-color) !important; - } -} - -// Ensure Material select panel has proper background -.mat-mdc-select-panel { - background-color: var(--mat-select-panel-background-color) !important; -} - -// Fix expansion panel box shadow in light theme -html.light-theme { - .mat-expansion-panel { - box-shadow: none !important; - border: 1px solid #e0e0e0; - border-radius: 4px !important; - - &:not(:last-child) { - margin-bottom: 8px; - } - } - - .mat-expansion-panel-header { - border-bottom: none !important; - } -} - -// Fix expansion panel box shadow in dark theme -html.dark-theme { - .mat-expansion-panel { - box-shadow: none !important; - border: 1px solid #444746; - border-radius: 4px !important; - - &:not(:last-child) { - margin-bottom: 8px; - } - } - - .mat-expansion-panel-header { - border-bottom: none !important; - } -} - -.wide-agent-dropdown-panel { - padding: 0 !important; - - .search-option { - position: sticky !important; - top: 0 !important; - z-index: 1000 !important; - opacity: 1 !important; - padding-top: 8px; - padding-bottom: 8px; - } - - span { - width: 100%; - } -} - -html.dark-theme .wide-agent-dropdown-panel .search-option { - background-color: #2b2b2f !important; - - input { - caret-color: white !important; - } -} - -html.light-theme .wide-agent-dropdown-panel .search-option { - background-color: #ffffff !important; -} - -.function-args-tooltip { - .mdc-tooltip__surface { - background-color: #333 !important; - color: #fff !important; - border: 2px solid #666 !important; - border-radius: 2px !important; - padding: 8px 12px !important; - font-family: 'Courier New', monospace !important; - font-size: 12px !important; - white-space: pre-wrap !important; - max-width: 800px !important; - line-height: 1.2 !important; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important; - } -} - -html.dark-theme { - --chat-panel-event-number-label-color: rgba(255, 255, 255, 0.8); -} - -html.light-theme { - --chat-panel-event-number-label-color: #5f6368; -} - .json-key { color: #9876aa; font-weight: 600; @@ -964,7 +79,6 @@ html.light-theme { } .json-tooltip-panel { - background-color: #333 !important; color: #fff !important; border: 2px solid #666 !important; border-radius: 4px !important; @@ -974,11 +88,6 @@ html.light-theme { overflow: hidden !important; } -// Transparent backdrop for workflow graph tooltip -.cdk-overlay-transparent-backdrop { - background: transparent; -} - // ngx-json-viewer custom colors ngx-json-viewer { .segment-key { @@ -1004,4 +113,4 @@ ngx-json-viewer { .segment-type-null { color: #9e9e9e !important; } -} \ No newline at end of file +} From 4f78951807b67ef128e47a467b2b126218f175a4 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 03:24:34 +0000 Subject: [PATCH 052/323] feat(chat): conditionally apply border-radius on chat-card based on side panel state --- src/app/components/chat/chat.component.html | 2 +- src/app/components/chat/chat.component.scss | 37 ++++++--------------- src/styles.scss | 4 +++ 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index ac95f05f..67b48dd3 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -298,7 +298,7 @@ } }
} - + @if (!selectedAppControl.value) { @if (isLoadingApps()) {
{{ i18n.loadingAgentsLabel }} diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 64bf8b43..59f6734f 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -91,6 +91,11 @@ flex: 1; min-height: 12%; box-shadow: none; + border-radius: 12px 0 0 0; + + &.no-side-panel { + border-radius: 0; + } } .loading-bar { @@ -398,7 +403,11 @@ } } -.toolbar-copy-session-id-button { +.toolbar-copy-session-id-button, +.toolbar-user-id-edit-button, +.toolbar-user-id-action-button, +.toolbar-new-session-button, +.toolbar-more-actions-button { width: 24px; height: 24px; padding: 0; @@ -406,6 +415,7 @@ color: var(--chat-toolbar-icon-color); border: none; cursor: pointer; + background-color: transparent; mat-icon { font-size: 16px; @@ -420,23 +430,6 @@ margin-left: 5px; } -.toolbar-user-id-edit-button, -.toolbar-user-id-action-button { - width: 24px; - height: 24px; - padding: 0; - margin-left: 4px; - color: var(--chat-toolbar-icon-color); - border: none; - cursor: pointer; - - mat-icon { - font-size: 16px; - width: 16px; - height: 16px; - } -} - .toolbar-user-id-input { width: 140px; height: 24px; @@ -460,14 +453,6 @@ margin-right: 16px; } -#toolbar-new-session-button { - margin-right: 16px; - color: var(--chat-toolbar-new-session-color); - cursor: pointer; - display: flex; - align-items: center; -} - .toolbar-more-actions-button { margin-right: 8px; border: none !important; diff --git a/src/styles.scss b/src/styles.scss index 7d6f4b10..608ba9ab 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -78,6 +78,10 @@ markdown p { color: #808080; } +.wide-agent-dropdown-panel { + max-height: 600px !important; +} + .json-tooltip-panel { color: #fff !important; border: 2px solid #666 !important; From a55beaccd09d8a5c638fd9fbdff656a1404e87ba Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 03:41:37 +0000 Subject: [PATCH 053/323] refactor(ui): unify top bar sizing, move theme toggle to menu, add hamburger nav --- src/app/components/chat/chat.component.html | 39 +++---------- src/app/components/chat/chat.component.scss | 58 ++++--------------- src/app/components/chat/chat.component.ts | 2 + .../side-panel/side-panel.component.html | 42 +++++++------- .../side-panel/side-panel.component.scss | 32 ++++++++-- .../side-panel/side-panel.component.ts | 2 - .../components/theme-toggle/theme-toggle.scss | 9 +++ 7 files changed, 79 insertions(+), 105 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 67b48dd3..d3a0d26b 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -15,24 +15,6 @@ --> - @if (!showSidePanel && appName === "") { - left_panel_open - } @if (!isBuilderMode()) { @if (!showSidePanel) { left_panel_openmenu - } @if (evalCase) { + } + @if (evalCase) {
{{ i18n.evalCaseIdLabel }}
{{ evalCase.evalId }}
@@ -252,6 +226,7 @@
add @@ -268,6 +243,10 @@ more_vert + @if (isTokenStreamingEnabledObs | async) { + + @if (appName != "") { +
+ @if (evalCase) { +
+
{{ i18n.evalCaseIdLabel }}
+
{{ evalCase.evalId }}
+
+
+ @if (this.isEvalEditMode()) { + + + } @else { + + edit + + + delete + + } +
+ } @else { +
+ @let isSessionLoading = uiStateService.isSessionLoading() | async; @if (isSessionLoading === + false) { +
{{ i18n.sessionIdLabel }}
+
+
{{ getToolbarSessionId() }}
+ +
+ @if (isUserIdOnToolbarEnabledObs | async) { +
{{ i18n.userIdLabel }}
+
+ @if (!isEditingUserId) { +
{{ userId }}
+ + } @else { + + + + } +
+ } @if (!canEditSession()) { +
+ visibility + {{ i18n.readOnlyBadgeLabel }} +
+
{{i18n.cannotEditSessionMessage}}
+ } } @else { +
{{ i18n.loadingSessionLabel }}
+ } +
+ @if (isSessionLoading === false) { +
+
+
+ add + {{ i18n.newSessionButton }} +
+ + + + + @if (isTokenStreamingEnabledObs | async) { + + } + @if (isDeleteSessionEnabledObs | async) { + + } + @if (isExportSessionEnabledObs | async) { + + } + @if (importSessionEnabledObs | async) { + + } + +
+
+ } } +
+ } + + @if (!isBuilderMode()) { @@ -106,177 +283,6 @@
- @if (appName != "") { -
- @if (!showSidePanel) { - menu - } - @if (evalCase) { -
-
{{ i18n.evalCaseIdLabel }}
-
{{ evalCase.evalId }}
-
-
- @if (this.isEvalEditMode()) { - - - } @else { - - edit - - - delete - - } -
- } @else { -
- @let isSessionLoading = uiStateService.isSessionLoading() | async; @if (isSessionLoading === - false) { -
{{ i18n.sessionIdLabel }}
-
-
{{ getToolbarSessionId() }}
- -
- @if (isUserIdOnToolbarEnabledObs | async) { -
{{ i18n.userIdLabel }}
-
- @if (!isEditingUserId) { -
{{ userId }}
- - } @else { - - - - } -
- } @if (!canEditSession()) { -
- visibility - {{ i18n.readOnlyBadgeLabel }} -
-
{{i18n.cannotEditSessionMessage}}
- } } @else { -
{{ i18n.loadingSessionLabel }}
- } -
- @if (isSessionLoading === false) { -
-
-
- add - {{ i18n.newSessionButton }} -
- - - - - @if (isTokenStreamingEnabledObs | async) { - - } - @if (isDeleteSessionEnabledObs | async) { - - } - @if (isExportSessionEnabledObs | async) { - - } - @if (importSessionEnabledObs | async) { - - } - -
-
- } } -
- } @if (!selectedAppControl.value) { @if (isLoadingApps()) {
diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index c99aefa8..2cae2efb 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -20,10 +20,6 @@ left: 1%; } -.drawer-container { - height: 100%; -} - .chat-container { width: 100%; height: 100%; @@ -312,6 +308,42 @@ margin-left: 20px; } +.app-toolbar { + height: 48px; + min-height: 48px !important; + display: flex; + align-items: center; + font-size: 14px; + padding: 0 8px !important; + background: transparent !important; + z-index: 1; +} + +.toolbar-logo { + display: flex; + align-items: center; + gap: 6px; + margin-right: 16px; + flex-shrink: 0; +} + +.toolbar-logo-text { + font-size: 14px; + font-weight: 500; + white-space: nowrap; +} + +.toolbar-content { + display: flex; + align-items: center; + flex: 1; + min-width: 0; +} + +.drawer-container { + height: calc(100% - 48px); +} + .chat-toolbar { position: sticky; top: 0; diff --git a/src/app/components/chat/chat.component.ts b/src/app/components/chat/chat.component.ts index b1b0b119..ba85ccbe 100644 --- a/src/app/components/chat/chat.component.ts +++ b/src/app/components/chat/chat.component.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import { AsyncPipe, DOCUMENT, NgClass } from '@angular/common'; +import { AsyncPipe, DOCUMENT, NgClass, NgComponentOutlet } from '@angular/common'; import { HttpErrorResponse } from '@angular/common/http'; -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, inject, Injectable, OnDestroy, OnInit, Renderer2, signal, viewChild, WritableSignal } from '@angular/core'; +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, inject, Injectable, OnDestroy, OnInit, Renderer2, signal, Type, viewChild, WritableSignal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButton, MatFabButton } from '@angular/material/button'; @@ -29,6 +29,7 @@ import { MatPaginatorIntl } from '@angular/material/paginator'; import { MatDrawer, MatDrawerContainer } from '@angular/material/sidenav'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatTooltip } from '@angular/material/tooltip'; +import { MatToolbar } from '@angular/material/toolbar'; import { SafeHtml } from '@angular/platform-browser'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { NgxJsonViewerModule } from 'ngx-json-viewer'; @@ -55,6 +56,7 @@ import { STREAM_CHAT_SERVICE } from '../../core/services/interfaces/stream-chat' import { STRING_TO_COLOR_SERVICE } from '../../core/services/interfaces/string-to-color'; import { TRACE_SERVICE } from '../../core/services/interfaces/trace'; import { THEME_SERVICE } from '../../core/services/interfaces/theme'; +import { LOGO_COMPONENT } from '../../injection_tokens'; import { ListResponse } from '../../core/services/interfaces/types'; import { UI_STATE_SERVICE } from '../../core/services/interfaces/ui-state'; import { LOCATION_SERVICE } from '../../core/services/location.service'; @@ -145,6 +147,8 @@ const BIDI_STREAMING_RESTART_WARNING = MatMenuModule, MatCard, MatFabButton, + MatToolbar, + NgComponentOutlet, ResizableBottomDirective, TraceEventComponent, AsyncPipe, @@ -180,6 +184,9 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { protected readonly uiStateService = inject(UI_STATE_SERVICE); protected readonly agentBuilderService = inject(AGENT_BUILDER_SERVICE); protected readonly themeService = inject(THEME_SERVICE); + protected readonly logoComponent: Type|null = inject(LOGO_COMPONENT, { + optional: true, + }); chatPanel = viewChild.required(ChatPanelComponent); canvasComponent = viewChild.required(CanvasComponent); diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index 3393fc36..5a4c3d8a 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -1,34 +1,4 @@ @if ((isAlwaysOnSidePanelEnabledObs | async) === false) { -
-
-
-
- menu - -
-
-
-
@if (isApplicationSelectorEnabledObs() | async) {
From d2f21902708d4cca7e3f7c9273ecd2230b4e3c06 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 04:29:05 +0000 Subject: [PATCH 055/323] Committing latest changes --- src/app/components/chat/chat.component.html | 39 ++++++++------ src/app/components/chat/chat.component.scss | 59 ++------------------- 2 files changed, 26 insertions(+), 72 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 2e7c0df4..37219eca 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -15,7 +15,7 @@ --> - } @else { @@ -72,7 +76,7 @@
{{ getToolbarSessionId() }}
@@ -450,7 +450,7 @@ }
@if (message.role === "user") { - } diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index 892632f8..cb6e3a4e 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -70,6 +70,7 @@ .function-event-button { border-color: var(--chat-panel-function-event-button-border-color) !important; color: var(--chat-panel-function-event-button-text-color) !important; + background-color: var(--mat-sys-surface-container-high) !important; margin: 5px 5px 5px 0px; font-size: 11px !important; padding: 6px 12px !important; @@ -115,14 +116,15 @@ .message-card.output-chip { display: inline-block !important; margin: 0 !important; - border: 1px solid rgba(138, 180, 248, 0.3); + border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px !important; padding: 5px !important; + background-color: var(--mat-sys-surface-container-low); .output-chip-header { font-weight: 600; font-size: 9px; - color: rgba(138, 180, 248, 0.9); + color: var(--mat-sys-primary); margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.5px; @@ -179,6 +181,7 @@ .message-card { align-self: flex-start; color: var(--chat-panel-user-message-message-card-color); + background-color: var(--mat-sys-primary-container); box-shadow: none; order: 1; width: auto; @@ -200,6 +203,7 @@ .message-card { align-self: flex-start; color: var(--chat-panel-bot-message-message-card-color); + background-color: var(--mat-sys-surface-container); box-shadow: none; } @@ -572,4 +576,13 @@ button.send-message-btn { font-size: 14px; line-height: 1.8; color: var(--chat-panel-message-text-color); +} + +.bot-avatar { + margin-right: 12px; + box-shadow: none; +} + +.user-avatar { + box-shadow: none; } \ No newline at end of file diff --git a/src/app/components/side-panel/side-panel.component.scss b/src/app/components/side-panel/side-panel.component.scss index 07e02108..37f30b97 100644 --- a/src/app/components/side-panel/side-panel.component.scss +++ b/src/app/components/side-panel/side-panel.component.scss @@ -39,8 +39,8 @@ border-radius: 4px; position: absolute; display: block; - height: 20%; - top: 40%; + top: 0; + bottom: 0; right: 0; cursor: ew-resize; } From 7402863dced585763b262e8da73a12239cdbfa81 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 18:20:48 +0000 Subject: [PATCH 060/323] more --- src/app/components/chat-panel/chat-panel.component.html | 2 +- src/app/components/chat-panel/chat-panel.component.scss | 2 ++ src/app/components/chat-panel/chat-panel.component.ts | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app/components/chat-panel/chat-panel.component.html b/src/app/components/chat-panel/chat-panel.component.html index 1adb5397..40809565 100644 --- a/src/app/components/chat-panel/chat-panel.component.html +++ b/src/app/components/chat-panel/chat-panel.component.html @@ -69,7 +69,7 @@ @if (message.role === "bot") { @if (isEventContent(i) || message.isLoading) { } @else { diff --git a/src/app/components/chat-panel/chat-panel.component.scss b/src/app/components/chat-panel/chat-panel.component.scss index cb6e3a4e..65c8d489 100644 --- a/src/app/components/chat-panel/chat-panel.component.scss +++ b/src/app/components/chat-panel/chat-panel.component.scss @@ -581,6 +581,8 @@ button.send-message-btn { .bot-avatar { margin-right: 12px; box-shadow: none; + --mdc-fab-small-container-color: transparent; + color: white; } .user-avatar { diff --git a/src/app/components/chat-panel/chat-panel.component.ts b/src/app/components/chat-panel/chat-panel.component.ts index 5d53b3cc..cac5cf74 100644 --- a/src/app/components/chat-panel/chat-panel.component.ts +++ b/src/app/components/chat-panel/chat-panel.component.ts @@ -300,15 +300,20 @@ export class ChatPanelComponent implements OnChanges, AfterViewInit { return nodePath; } + getNodeName(nodePath: string): string { + return nodePath.split(/[/.>]/).filter(Boolean).pop() || nodePath; + } + getNodePathColor(messageIndex: number): string { const nodePath = this.getEventNodePath(messageIndex); - return this.stringToColorService.stc(nodePath); + const nodeName = this.getNodeName(nodePath); + return this.stringToColorService.stc(nodeName); } getNodeInitial(messageIndex: number): string { const nodePath = this.getNodePath(messageIndex) || this.getEventNodePath(messageIndex); - const nodeName = nodePath.split(/[/.>]/).filter(Boolean).pop() || nodePath; + const nodeName = this.getNodeName(nodePath); const initialMatch = nodeName.match(/[A-Za-z0-9]/); return initialMatch ? initialMatch[0].toUpperCase() : 'N'; From 4c16cf297368659abba8565790b088ae92d86548 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 18:32:58 +0000 Subject: [PATCH 061/323] more --- src/app/components/side-panel/side-panel.component.html | 2 +- src/app/components/side-panel/side-panel.component.scss | 3 +++ src/app/components/side-panel/side-panel.component.ts | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index 5a4c3d8a..75d7dcba 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -136,7 +136,7 @@ [attr.aria-label]="i18n.selectEventAriaLabel" > -
diff --git a/src/app/components/side-panel/side-panel.component.scss b/src/app/components/side-panel/side-panel.component.scss index 37f30b97..fbbd3695 100644 --- a/src/app/components/side-panel/side-panel.component.scss +++ b/src/app/components/side-panel/side-panel.component.scss @@ -53,6 +53,7 @@ margin-right: auto; display: flex; justify-content: center; + background-color: var(--mat-sidenav-content-background-color, var(--mat-app-background-color, var(--sys-surface, #fff))); } @@ -66,6 +67,8 @@ display: inline-block; justify-content: center; align-items: center; + background-color: var(--mat-sidenav-content-background-color, var(--mat-app-background-color, var(--sys-surface, #fff))); + z-index: 10; } .details-content { diff --git a/src/app/components/side-panel/side-panel.component.ts b/src/app/components/side-panel/side-panel.component.ts index e81a247e..d93cfe39 100644 --- a/src/app/components/side-panel/side-panel.component.ts +++ b/src/app/components/side-panel/side-panel.component.ts @@ -19,7 +19,7 @@ import {AsyncPipe, NgComponentOutlet, NgTemplateOutlet} from '@angular/common'; import {AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, EnvironmentInjector, inject, input, output, runInInjectionContext, signal, Type, viewChild, ViewContainerRef, type WritableSignal} from '@angular/core'; import {toObservable} from '@angular/core/rxjs-interop'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; -import {MatMiniFabButton} from '@angular/material/button'; +import {MatIconButton, MatMiniFabButton} from '@angular/material/button'; import {MatOption} from '@angular/material/core'; import {MatFormField} from '@angular/material/form-field'; import {MatIcon} from '@angular/material/icon'; @@ -74,6 +74,7 @@ import {SidePanelMessagesInjectionToken} from './side-panel.component.i18n'; MatPaginator, MatMiniFabButton, MatIcon, + MatIconButton, NgxJsonViewerModule, MatOption, MatSelect, From 8c807a50fbadca3f0ef19742d4106ef4ebc34e15 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 18:38:40 +0000 Subject: [PATCH 062/323] event tab style --- .../side-panel/side-panel.component.html | 1 + .../side-panel/side-panel.component.scss | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index 75d7dcba..247834bf 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -129,6 +129,7 @@
Date: Wed, 25 Mar 2026 18:49:06 +0000 Subject: [PATCH 063/323] move user id to the user avatar --- src/app/components/chat/chat.component.html | 97 ++++++++++++--------- src/app/components/chat/chat.component.scss | 66 ++++++++++++++ src/styles.scss | 6 ++ 3 files changed, 126 insertions(+), 43 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index ad7d5914..ef7ad09d 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -84,49 +84,7 @@ content_copy
- @if (isUserIdOnToolbarEnabledObs | async) { -
{{ i18n.userIdLabel }}
-
- @if (!isEditingUserId) { -
{{ userId }}
- - } @else { - - - - } -
- } @if (!canEditSession()) { + @if (!canEditSession()) {
visibility {{ i18n.readOnlyBadgeLabel }} @@ -194,6 +152,59 @@ } }
} + + +
+
+ User ID +
+
+ @if (!isEditingUserId) { +
{{ userId }}
+ + } @else { + + + + } +
+
+
diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 00438c30..a7633483 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -419,6 +419,72 @@ outline: 1px solid var(--chat-toolbar-icon-color); } +.user-avatar-button { + margin-left: auto; + flex-shrink: 0; + + mat-icon { + font-size: 28px; + width: 28px; + height: 28px; + } +} + +.user-menu-panel { + padding: 16px; + min-width: 240px; +} + +.user-menu-header { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 12px; +} + +.user-menu-avatar-icon { + font-size: 36px; + width: 36px; + height: 36px; + color: var(--chat-toolbar-icon-color); +} + +.user-menu-label { + font-size: 14px; + font-weight: 500; + color: var(--chat-toolbar-session-text-color); + text-transform: uppercase; +} + +.user-menu-content { + display: flex; + align-items: center; + gap: 4px; +} + +.user-menu-id { + font-family: 'Google Sans Mono', monospace; + font-size: 14px; + color: var(--chat-toolbar-session-id-color); + word-break: break-all; +} + +.user-menu-input { + flex: 1; + height: 28px; + border: 1px solid var(--chat-toolbar-session-text-color); + border-radius: 4px; + color: var(--chat-toolbar-session-id-color); + padding: 0 8px; + font-family: 'Google Sans Mono', monospace; + font-size: 13px; + background: transparent; + + &:focus { + outline: 1px solid var(--chat-toolbar-icon-color); + } +} + :host ::ng-deep pre { white-space: pre-wrap; word-break: break-word; diff --git a/src/styles.scss b/src/styles.scss index 246dfda9..3777dd81 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -119,3 +119,9 @@ ngx-json-viewer { color: #9e9e9e !important; } } + +.user-avatar-menu { + .mat-mdc-menu-content { + padding: 0; + } +} From 918aee21f94bef6a54f9c4f864dec30bd5502527 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:03:15 +0000 Subject: [PATCH 064/323] event panel color --- src/app/components/side-panel/side-panel.component.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/components/side-panel/side-panel.component.scss b/src/app/components/side-panel/side-panel.component.scss index e135a816..0300cd98 100644 --- a/src/app/components/side-panel/side-panel.component.scss +++ b/src/app/components/side-panel/side-panel.component.scss @@ -62,7 +62,7 @@ margin-right: auto; display: flex; justify-content: center; - background-color: var(--mat-sidenav-content-background-color, var(--mat-app-background-color, var(--sys-surface, #fff))); + background-color: var(--mat-sys-surface-variant); } @@ -76,7 +76,7 @@ bottom: 0; display: flex; flex-direction: column; - background-color: var(--mat-sidenav-content-background-color, var(--mat-app-background-color, var(--sys-surface, #fff))); + background-color: var(--mat-sys-surface-variant); z-index: 10; overflow: auto; border-radius: 12px; From dc680c43cde09f3bc42e798a85a2116c47c1a8e5 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:20:08 +0000 Subject: [PATCH 065/323] app selector panel --- src/app/components/chat/chat.component.html | 44 ++++++ src/app/components/chat/chat.component.scss | 145 ++++++++++++++++++++ src/app/components/chat/chat.component.ts | 43 +++++- 3 files changed, 231 insertions(+), 1 deletion(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index ef7ad09d..98e1f32d 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -26,6 +26,10 @@ Agent Development Kit }
+ @if (appName != "") {
@if (evalCase) { @@ -208,6 +212,46 @@ + +
+ Select an App + +
+ +
+ @if (isLoadingApps()) { +
+ } @else if (filteredDrawerApps$ | async; as apps) { + @for (app of apps; track app) { + + } @empty { +
No apps found
+ } + } +
+
+ @if (!isBuilderMode()) { = this.apps$.pipe( + switchMap(apps => + combineLatest([ + of(apps), + this.appDrawerSearchControl.valueChanges.pipe(startWith('')), + ]) + ), + map(([apps, searchTerm]) => { + if (!apps) return apps; + if (!searchTerm || searchTerm.trim() === '') return apps; + const lower = searchTerm.toLowerCase().trim(); + return apps.filter(app => app.toLowerCase().includes(lower)); + }), + ); + // Feature flag references for use in template. readonly importSessionEnabledObs: Observable = this.featureFlagService.isImportSessionEnabled(); @@ -1584,6 +1609,22 @@ export class ChatComponent implements OnInit, AfterViewInit, OnDestroy { this.showSidePanel = !this.showSidePanel; } + toggleAppSelectorDrawer() { + this.showAppSelectorDrawer = !this.showAppSelectorDrawer; + if (this.showAppSelectorDrawer) { + this.appDrawerSearchControl.setValue(''); + } + } + + onAppSelectorDrawerClosed() { + this.showAppSelectorDrawer = false; + } + + selectAppFromDrawer(app: string) { + this.selectedAppControl.setValue(app); + this.showAppSelectorDrawer = false; + } + protected handleTabChange(event: any) { if (!this.isChatMode()) { this.resetEditEvalCaseVars(); From 4c39126e61ec7e7154ab34210a5f68f810f6d9f5 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:22:27 +0000 Subject: [PATCH 066/323] style --- src/app/components/chat/chat.component.html | 1 + src/app/components/chat/chat.component.scss | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 98e1f32d..395fc5c1 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -29,6 +29,7 @@ @if (appName != "") {
diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index c231675f..e63bc74a 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -635,6 +635,17 @@ app-canvas { .app-selector-label { overflow: hidden; text-overflow: ellipsis; + flex: 1; + text-align: left; +} + +.app-selector-caret { + font-size: 18px; + width: 18px; + height: 18px; + flex-shrink: 0; + margin-left: auto; + opacity: 0.7; } // App selector drawer (mat-drawer with mode=over) From e8a9cd5cad06cc7d36d28f4006c191bb02d04145 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:25:52 +0000 Subject: [PATCH 067/323] disclosure icon --- src/app/components/chat/chat.component.html | 1 + src/app/components/chat/chat.component.scss | 9 +++++++++ src/app/components/chat/chat.component.ts | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 395fc5c1..e0a0508f 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -24,6 +24,7 @@ } @else { Agent Development Kit + info_outline }
+ @if (!isBuilderMode()) { } + diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 23bde1ca..98903ce9 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -352,6 +352,11 @@ height: calc(100% - 48px); } +.side-panel-container { + width: 100%; + height: 100%; +} + .toolbar-actions { margin-left: auto; display: flex; From c348ac3a96af235aa83f1f7869e234b98ede3bec Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:44:50 +0000 Subject: [PATCH 069/323] remove old app selector --- src/app/components/chat/chat.component.html | 4 -- src/app/components/chat/chat.component.scss | 11 ----- .../side-panel/side-panel.component.html | 30 ------------- .../side-panel/side-panel.component.scss | 36 --------------- .../side-panel/side-panel.component.spec.ts | 40 ----------------- .../side-panel/side-panel.component.ts | 45 ++----------------- 6 files changed, 3 insertions(+), 163 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 5a721c3e..c7c7301f 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -259,9 +259,6 @@ @if (!isBuilderMode()) { -
- - - - - - - @if (filteredApps$ | async; as availableApps) { - @for (appName of availableApps; track appName) { - {{ appName }} - } - } - @if (selectedAppControl().value && isLoadingApps()()) { - {{ selectedAppControl().value }} - } - -
@if (!isBuilderMode()) {
{ expect(component).toBeTruthy(); }); - describe('App Selector', () => { - beforeEach(() => { - fixture.componentRef.setInput('isApplicationSelectorEnabledObs', of(true)); - fixture.componentRef.setInput('apps$', of(['app1', 'app2'])); - fixture.detectChanges(); - }); - - it('shows app selector', () => { - expect(fixture.debugElement.query(APP_SELECT_SELECTOR)).toBeTruthy(); - }); - - it('shows all apps in selector', () => { - const appSelect = fixture.debugElement.query(APP_SELECT_SELECTOR); - const options = appSelect.componentInstance.options; - // Filter out the search option (which has value=null) - const appOptions = options.filter((option: MatOption) => option.value !== null); - expect(appOptions.map((option: MatOption) => option.value)).toEqual([ - 'app1', - 'app2', - ]); - }); - - describe('when app is selected', () => { - beforeEach(() => { - spyOn(component.appSelectionChange, 'emit'); - const appSelect = fixture.debugElement.query(APP_SELECT_SELECTOR); - const mockEvent = - new MatSelectChange(appSelect.componentInstance, 'app1'); - appSelect.triggerEventHandler('selectionChange', mockEvent); - }); - it('emits appSelectionChange event', () => { - expect(component.appSelectionChange.emit) - .toHaveBeenCalledWith(jasmine.objectContaining({value: 'app1'})); - }); - }); - }); - describe('Tab hiding', () => { it('should hide Trace tab when isTraceEnabled is false', () => { mockFeatureFlagService.isTraceEnabledResponse.next(false); diff --git a/src/app/components/side-panel/side-panel.component.ts b/src/app/components/side-panel/side-panel.component.ts index d93cfe39..99d54d9a 100644 --- a/src/app/components/side-panel/side-panel.component.ts +++ b/src/app/components/side-panel/side-panel.component.ts @@ -16,23 +16,17 @@ */ import {AsyncPipe, NgComponentOutlet, NgTemplateOutlet} from '@angular/common'; -import {AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, EnvironmentInjector, inject, input, output, runInInjectionContext, signal, Type, viewChild, ViewContainerRef, type WritableSignal} from '@angular/core'; -import {toObservable} from '@angular/core/rxjs-interop'; -import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; +import {AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, EnvironmentInjector, inject, input, output, runInInjectionContext, Type, viewChild, ViewContainerRef} from '@angular/core'; import {MatIconButton, MatMiniFabButton} from '@angular/material/button'; -import {MatOption} from '@angular/material/core'; -import {MatFormField} from '@angular/material/form-field'; import {MatIcon} from '@angular/material/icon'; -import {MatInput} from '@angular/material/input'; import {MatPaginator, PageEvent} from '@angular/material/paginator'; import {MatProgressSpinner} from '@angular/material/progress-spinner'; -import {MatSelect, MatSelectChange} from '@angular/material/select'; import {MatTab, MatTabChangeEvent, MatTabGroup, MatTabLabel} from '@angular/material/tabs'; import {MatTooltip} from '@angular/material/tooltip'; import {type SafeHtml} from '@angular/platform-browser'; import {NgxJsonViewerModule} from 'ngx-json-viewer'; -import {combineLatest, Observable, of} from 'rxjs'; -import {first, map, startWith, switchMap} from 'rxjs/operators'; +import {Observable, of} from 'rxjs'; +import {first} from 'rxjs/operators'; import {EvalCase} from '../../core/models/Eval'; import {Session, SessionState} from '../../core/models/Session'; @@ -60,7 +54,6 @@ import {SidePanelMessagesInjectionToken} from './side-panel.component.i18n'; standalone: true, imports: [ AsyncPipe, - FormsModule, NgComponentOutlet, NgTemplateOutlet, MatTooltip, @@ -76,12 +69,7 @@ import {SidePanelMessagesInjectionToken} from './side-panel.component.i18n'; MatIcon, MatIconButton, NgxJsonViewerModule, - MatOption, - MatSelect, - ReactiveFormsModule, MatProgressSpinner, - MatFormField, - MatInput, ], }) export class SidePanelComponent implements AfterViewInit { @@ -102,16 +90,10 @@ export class SidePanelComponent implements AfterViewInit { llmResponse = input(); showSidePanel = input(false); isApplicationSelectorEnabledObs = input>(of(false)); - apps$ = input>(of([])); - isLoadingApps = input>(signal(false)); - selectedAppControl = input(new FormControl('', { - nonNullable: true, - })); readonly isBuilderMode = input(false); readonly disableBuilderIcon = input(false); readonly closePanel = output(); - readonly appSelectionChange = output(); readonly tabChange = output(); readonly sessionSelected = output(); readonly sessionReloaded = output(); @@ -158,27 +140,6 @@ export class SidePanelComponent implements AfterViewInit { protected readonly isSessionsTabReorderingEnabledObs = this.featureFlagService.isSessionsTabReorderingEnabled(); - // Agent search - readonly agentSearchControl = new FormControl('', { nonNullable: true }); - readonly filteredApps$: Observable = toObservable(this.apps$).pipe( - switchMap(appsObservable => - combineLatest([ - appsObservable, - this.agentSearchControl.valueChanges.pipe(startWith('')) - ]) - ), - map(([apps, searchTerm]) => { - if (!apps) { - return apps; - } - if (!searchTerm || searchTerm.trim() === '') { - return apps; - } - const lowerSearch = searchTerm.toLowerCase().trim(); - return apps.filter(app => app.toLowerCase().startsWith(lowerSearch)); - }) - ); - readonly artifactDeltaArray = computed(() => { const artifactDelta = this.selectedEvent()?.actions?.artifactDelta; if (!artifactDelta || Object.keys(artifactDelta).length === 0) { From 5b53a7d820748ce239f7d29a50ad0078cb462117 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:06:16 +0000 Subject: [PATCH 070/323] remove old banner --- src/app/components/chat/chat.component.html | 15 +++++++++++++ .../side-panel/side-panel.component.html | 21 ------------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index c7c7301f..7e0fec67 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -32,6 +32,21 @@ {{ appName || 'Select an app' }} arrow_drop_down + @if (!isBuilderMode()) { + + + + } @if (appName != "") {
@if (evalCase) { diff --git a/src/app/components/side-panel/side-panel.component.html b/src/app/components/side-panel/side-panel.component.html index d70ee0b8..84e6d97d 100644 --- a/src/app/components/side-panel/side-panel.component.html +++ b/src/app/components/side-panel/side-panel.component.html @@ -1,25 +1,4 @@ @if ((isAlwaysOnSidePanelEnabledObs | async) === false) { -@if (isApplicationSelectorEnabledObs() | async) { -
- @if (!isBuilderMode()) { -
- add - edit - account_tree -
- } -
-} } @let isSessionLoading = uiStateService.isSessionLoading() | async; From 2838cd85e7278bbfacb174b9da65f31edd925b30 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:19:52 +0000 Subject: [PATCH 071/323] create button --- src/app/components/chat/chat.component.html | 6 +++--- src/app/components/chat/chat.component.scss | 12 +++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 7e0fec67..58790ab6 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -33,9 +33,6 @@ arrow_drop_down @if (!isBuilderMode()) { - @@ -240,6 +237,9 @@ >
Select an App + diff --git a/src/app/components/chat/chat.component.scss b/src/app/components/chat/chat.component.scss index 4c325648..09ba540e 100644 --- a/src/app/components/chat/chat.component.scss +++ b/src/app/components/chat/chat.component.scss @@ -679,15 +679,25 @@ app-canvas { } .app-selector-search { - padding: 0 12px 8px; + padding: 0 12px 4px; flex-shrink: 0; } .app-selector-search-field { width: 100%; + font-size: 13px; + + .mat-mdc-form-field-infix { + min-height: 36px; + padding-top: 6px !important; + padding-bottom: 6px !important; + } mat-icon { color: var(--chat-toolbar-session-text-color); + font-size: 18px; + width: 18px; + height: 18px; } } From e139c2bc66e82c83c97ea26e4113cd673e0176a8 Mon Sep 17 00:00:00 2001 From: Bo Yang <55513966+boyangsvl@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:22:25 +0000 Subject: [PATCH 072/323] update --- src/app/components/chat/chat.component.html | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/app/components/chat/chat.component.html b/src/app/components/chat/chat.component.html index 58790ab6..baa5ba1a 100644 --- a/src/app/components/chat/chat.component.html +++ b/src/app/components/chat/chat.component.html @@ -237,12 +237,14 @@ >
Select an App - - +
+ + +