diff --git a/api/pkg/agent/skill/github/pr_create_review_comment.go b/api/pkg/agent/skill/github/pr_create_review_comment.go new file mode 100644 index 0000000000..20d94089da --- /dev/null +++ b/api/pkg/agent/skill/github/pr_create_review_comment.go @@ -0,0 +1,157 @@ +package github + +import ( + "context" + "fmt" + "strconv" + + "github.com/google/go-github/v57/github" + "github.com/sashabaranov/go-openai" + + "github.com/helixml/helix/api/pkg/agent" + "github.com/helixml/helix/api/pkg/types" + "github.com/helixml/helix/api/pkg/util/jsonschema" +) + +const createReviewCommentSkillDescription = `Create a review comment on a GitHub pull request. Use it when you need to add a comment to a pull request. +If you provide file_path and line_number, the comment will be an inline review comment on that specific line. +If you omit file_path and line_number, the comment will be a general comment on the pull request. +DO NOT try to pass owner or repository name to this skill, they are set automatically to the correct values by the trigger.` + +var createReviewCommentParameters = jsonschema.Definition{ + Type: jsonschema.Object, + Properties: map[string]jsonschema.Definition{ + "content": { + Type: jsonschema.String, + Description: "The content of the comment", + }, + "file_path": { + Type: jsonschema.String, + Description: "The relative file path to comment on (e.g. src/main.go). Required for inline comments.", + }, + "line_number": { + Type: jsonschema.Integer, + Description: "The line number in the file to comment on. Starts at 1. Required for inline comments.", + }, + }, + Required: []string{"content"}, +} + +func NewCreateReviewCommentSkill(token, baseURL string) agent.Skill { + return agent.Skill{ + Name: "GitHubCreateReviewComment", + Description: createReviewCommentSkillDescription, + Parameters: createReviewCommentParameters, + Direct: true, + Tools: []agent.Tool{ + &GitHubCreateReviewCommentTool{ + token: token, + baseURL: baseURL, + }, + }, + } +} + +type GitHubCreateReviewCommentTool struct { + token string + baseURL string +} + +func (t *GitHubCreateReviewCommentTool) Name() string { + return "GitHubCreateReviewComment" +} + +func (t *GitHubCreateReviewCommentTool) Description() string { + return "Create a review comment on a GitHub pull request" +} + +func (t *GitHubCreateReviewCommentTool) Icon() string { + return "" +} + +func (t *GitHubCreateReviewCommentTool) String() string { + return "GitHubCreateReviewComment" +} + +func (t *GitHubCreateReviewCommentTool) StatusMessage() string { + return "Creating a review comment on a GitHub pull request" +} + +func (t *GitHubCreateReviewCommentTool) OpenAI() []openai.Tool { + return []openai.Tool{ + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "GitHubCreateReviewComment", + Description: createReviewCommentSkillDescription, + Parameters: createReviewCommentParameters, + }, + }, + } +} + +func (t *GitHubCreateReviewCommentTool) Execute(ctx context.Context, _ agent.Meta, args map[string]interface{}) (string, error) { + content, ok := args["content"].(string) + if !ok { + return "", fmt.Errorf("content is required") + } + + ghCtx, ok := types.GetGitHubRepositoryContext(ctx) + if !ok { + return "", fmt.Errorf("github repository context not found") + } + + client := NewClientWithPATAndBaseURL(t.token, t.baseURL) + + content = fmt.Sprintf("[Helix] %s", content) + + filePath, hasFilePath := args["file_path"].(string) + lineNumberRaw, hasLineNumber := args["line_number"] + + if hasFilePath && hasLineNumber { + lineNumber, err := parseInt(lineNumberRaw) + if err != nil { + return "", fmt.Errorf("failed to parse line_number: %w", err) + } + if lineNumber < 1 { + lineNumber = 1 + } + + comment := &github.PullRequestComment{ + Body: &content, + CommitID: &ghCtx.HeadSHA, + Path: &filePath, + Line: &lineNumber, + } + + created, _, err := client.client.PullRequests.CreateComment(ctx, ghCtx.Owner, ghCtx.RepositoryName, ghCtx.PullRequestID, comment) + if err != nil { + return "", fmt.Errorf("failed to create inline review comment: %w", err) + } + + return fmt.Sprintf("Inline review comment created on %s line %d (ID: %d)", filePath, lineNumber, created.GetID()), nil + } + + comment := &github.IssueComment{ + Body: &content, + } + + created, _, err := client.client.Issues.CreateComment(ctx, ghCtx.Owner, ghCtx.RepositoryName, ghCtx.PullRequestID, comment) + if err != nil { + return "", fmt.Errorf("failed to create PR comment: %w", err) + } + + return fmt.Sprintf("PR comment created (ID: %d)", created.GetID()), nil +} + +func parseInt(value any) (int, error) { + switch v := value.(type) { + case int: + return v, nil + case float64: + return int(v), nil + case string: + return strconv.Atoi(v) + } + return 0, fmt.Errorf("invalid integer value") +} diff --git a/api/pkg/agent/skill/github/pull_request_diff.go b/api/pkg/agent/skill/github/pull_request_diff.go new file mode 100644 index 0000000000..8298fe4f6f --- /dev/null +++ b/api/pkg/agent/skill/github/pull_request_diff.go @@ -0,0 +1,116 @@ +package github + +import ( + "context" + "fmt" + "strings" + + "github.com/google/go-github/v57/github" + "github.com/sashabaranov/go-openai" + + "github.com/helixml/helix/api/pkg/agent" + "github.com/helixml/helix/api/pkg/types" + "github.com/helixml/helix/api/pkg/util/jsonschema" +) + +const pullRequestDiffSkillDescription = `Get the diff of a GitHub pull request, use it when you need to see the changes in a pull request. +DO NOT try to pass owner or repository name to this skill, they are set automatically to the correct values by the trigger.` + +var pullRequestDiffParameters = jsonschema.Definition{ + Type: jsonschema.Object, + Properties: map[string]jsonschema.Definition{}, + Required: []string{}, +} + +func NewPullRequestDiffSkill(token, baseURL string) agent.Skill { + return agent.Skill{ + Name: "GitHubPullRequestDiff", + Description: pullRequestDiffSkillDescription, + Parameters: pullRequestDiffParameters, + Direct: true, + Tools: []agent.Tool{ + &GitHubPullRequestDiffTool{ + token: token, + baseURL: baseURL, + }, + }, + } +} + +type GitHubPullRequestDiffTool struct { + token string + baseURL string +} + +func (t *GitHubPullRequestDiffTool) Name() string { + return "GitHubPullRequestDiff" +} + +func (t *GitHubPullRequestDiffTool) Description() string { + return "Get the diff of a GitHub pull request" +} + +func (t *GitHubPullRequestDiffTool) Icon() string { + return "" +} + +func (t *GitHubPullRequestDiffTool) String() string { + return "GitHubPullRequestDiff" +} + +func (t *GitHubPullRequestDiffTool) StatusMessage() string { + return "Getting GitHub pull request diff" +} + +func (t *GitHubPullRequestDiffTool) OpenAI() []openai.Tool { + return []openai.Tool{ + { + Type: openai.ToolTypeFunction, + Function: &openai.FunctionDefinition{ + Name: "GitHubPullRequestDiff", + Description: pullRequestDiffSkillDescription, + Parameters: pullRequestDiffParameters, + }, + }, + } +} + +func (t *GitHubPullRequestDiffTool) Execute(ctx context.Context, _ agent.Meta, _ map[string]interface{}) (string, error) { + ghCtx, ok := types.GetGitHubRepositoryContext(ctx) + if !ok { + return "", fmt.Errorf("github repository context not found") + } + + client := NewClientWithPATAndBaseURL(t.token, t.baseURL) + + pr, err := client.GetPullRequest(ctx, ghCtx.Owner, ghCtx.RepositoryName, ghCtx.PullRequestID) + if err != nil { + return "", fmt.Errorf("failed to get pull request: %w", err) + } + + opts := &github.ListOptions{PerPage: 100} + files, _, err := client.client.PullRequests.ListFiles(ctx, ghCtx.Owner, ghCtx.RepositoryName, ghCtx.PullRequestID, opts) + if err != nil { + return "", fmt.Errorf("failed to list pull request files: %w", err) + } + + var sb strings.Builder + sb.WriteString("Pull Request Details:\n") + sb.WriteString(fmt.Sprintf("Title: %s\n", pr.GetTitle())) + sb.WriteString(fmt.Sprintf("Description: %s\n", pr.GetBody())) + sb.WriteString(fmt.Sprintf("Author: %s\n", pr.GetUser().GetLogin())) + sb.WriteString(fmt.Sprintf("Head: %s (%s)\n", ghCtx.HeadBranch, ghCtx.HeadSHA)) + sb.WriteString(fmt.Sprintf("Base: %s (%s)\n\n", ghCtx.BaseBranch, ghCtx.BaseSHA)) + + sb.WriteString(fmt.Sprintf("Changed files (%d):\n\n", len(files))) + + for _, f := range files { + sb.WriteString(fmt.Sprintf("--- %s (%s, +%d -%d)\n", f.GetFilename(), f.GetStatus(), f.GetAdditions(), f.GetDeletions())) + if patch := f.GetPatch(); patch != "" { + sb.WriteString(patch) + sb.WriteString("\n\n") + } + } + + return sb.String(), nil +} diff --git a/api/pkg/controller/inference_agent.go b/api/pkg/controller/inference_agent.go index 086f4a22dc..2e79fdd65c 100644 --- a/api/pkg/controller/inference_agent.go +++ b/api/pkg/controller/inference_agent.go @@ -8,6 +8,7 @@ import ( agent "github.com/helixml/helix/api/pkg/agent" "github.com/helixml/helix/api/pkg/agent/skill" azuredevops "github.com/helixml/helix/api/pkg/agent/skill/azure_devops" + githubskill "github.com/helixml/helix/api/pkg/agent/skill/github" "github.com/helixml/helix/api/pkg/agent/skill/mcp" "github.com/helixml/helix/api/pkg/agent/skill/memory" "github.com/helixml/helix/api/pkg/agent/skill/project" @@ -170,6 +171,11 @@ func (c *Controller) runAgent(ctx context.Context, req *runAgentRequest) (*agent skills = append(skills, azuredevops.NewPullRequestDiffSkill(assistantTool.Config.AzureDevOps.OrganizationURL, assistantTool.Config.AzureDevOps.PersonalAccessToken)) } + if assistantTool.ToolType == types.ToolTypeGitHub { + skills = append(skills, githubskill.NewPullRequestDiffSkill(assistantTool.Config.GitHub.PersonalAccessToken, assistantTool.Config.GitHub.BaseURL)) + skills = append(skills, githubskill.NewCreateReviewCommentSkill(assistantTool.Config.GitHub.PersonalAccessToken, assistantTool.Config.GitHub.BaseURL)) + } + } // Get assistant knowledge diff --git a/api/pkg/server/docs.go b/api/pkg/server/docs.go index 2553fec668..898658c5e0 100644 --- a/api/pkg/server/docs.go +++ b/api/pkg/server/docs.go @@ -20144,6 +20144,9 @@ const docTemplate = `{ "generation_model_provider": { "type": "string" }, + "github": { + "$ref": "#/definitions/types.AssistantGitHub" + }, "id": { "type": "string" }, @@ -20286,6 +20289,20 @@ const docTemplate = `{ } } }, + "types.AssistantGitHub": { + "type": "object", + "properties": { + "base_url": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "personal_access_token": { + "type": "string" + } + } + }, "types.AssistantKnowledge": { "type": "object", "properties": { @@ -20415,6 +20432,9 @@ const docTemplate = `{ "email": { "$ref": "#/definitions/types.AssistantEmail" }, + "github": { + "$ref": "#/definitions/types.AssistantGitHub" + }, "mcps": { "type": "array", "items": { @@ -29193,6 +29213,9 @@ const docTemplate = `{ "email": { "$ref": "#/definitions/types.ToolEmailConfig" }, + "github": { + "$ref": "#/definitions/types.ToolGitHubConfig" + }, "mcp": { "$ref": "#/definitions/types.ToolMCPClientConfig" }, @@ -29223,6 +29246,20 @@ const docTemplate = `{ } } }, + "types.ToolGitHubConfig": { + "type": "object", + "properties": { + "base_url": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "personal_access_token": { + "type": "string" + } + } + }, "types.ToolMCPClientConfig": { "type": "object", "properties": { @@ -29287,6 +29324,7 @@ const docTemplate = `{ "email", "web_search", "azure_devops", + "github", "mcp", "project_manager" ], @@ -29298,6 +29336,7 @@ const docTemplate = `{ "ToolTypeEmail", "ToolTypeWebSearch", "ToolTypeAzureDevOps", + "ToolTypeGitHub", "ToolTypeMCP", "ToolTypeProjectManager" ] diff --git a/api/pkg/server/swagger.json b/api/pkg/server/swagger.json index 46ec937a73..ba1a3465ba 100644 --- a/api/pkg/server/swagger.json +++ b/api/pkg/server/swagger.json @@ -20140,6 +20140,9 @@ "generation_model_provider": { "type": "string" }, + "github": { + "$ref": "#/definitions/types.AssistantGitHub" + }, "id": { "type": "string" }, @@ -20282,6 +20285,20 @@ } } }, + "types.AssistantGitHub": { + "type": "object", + "properties": { + "base_url": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "personal_access_token": { + "type": "string" + } + } + }, "types.AssistantKnowledge": { "type": "object", "properties": { @@ -20411,6 +20428,9 @@ "email": { "$ref": "#/definitions/types.AssistantEmail" }, + "github": { + "$ref": "#/definitions/types.AssistantGitHub" + }, "mcps": { "type": "array", "items": { @@ -29189,6 +29209,9 @@ "email": { "$ref": "#/definitions/types.ToolEmailConfig" }, + "github": { + "$ref": "#/definitions/types.ToolGitHubConfig" + }, "mcp": { "$ref": "#/definitions/types.ToolMCPClientConfig" }, @@ -29219,6 +29242,20 @@ } } }, + "types.ToolGitHubConfig": { + "type": "object", + "properties": { + "base_url": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "personal_access_token": { + "type": "string" + } + } + }, "types.ToolMCPClientConfig": { "type": "object", "properties": { @@ -29283,6 +29320,7 @@ "email", "web_search", "azure_devops", + "github", "mcp", "project_manager" ], @@ -29294,6 +29332,7 @@ "ToolTypeEmail", "ToolTypeWebSearch", "ToolTypeAzureDevOps", + "ToolTypeGitHub", "ToolTypeMCP", "ToolTypeProjectManager" ] diff --git a/api/pkg/server/swagger.yaml b/api/pkg/server/swagger.yaml index b28bda0582..7e79d6b015 100644 --- a/api/pkg/server/swagger.yaml +++ b/api/pkg/server/swagger.yaml @@ -2768,6 +2768,8 @@ definitions: type: string generation_model_provider: type: string + github: + $ref: '#/definitions/types.AssistantGitHub' id: type: string image: @@ -2878,6 +2880,15 @@ definitions: template_example: type: string type: object + types.AssistantGitHub: + properties: + base_url: + type: string + enabled: + type: boolean + personal_access_token: + type: string + type: object types.AssistantKnowledge: properties: description: @@ -2982,6 +2993,8 @@ definitions: $ref: '#/definitions/types.AssistantCalculator' email: $ref: '#/definitions/types.AssistantEmail' + github: + $ref: '#/definitions/types.AssistantGitHub' mcps: items: $ref: '#/definitions/types.AssistantMCP' @@ -9211,6 +9224,8 @@ definitions: $ref: '#/definitions/types.ToolCalculatorConfig' email: $ref: '#/definitions/types.ToolEmailConfig' + github: + $ref: '#/definitions/types.ToolGitHubConfig' mcp: $ref: '#/definitions/types.ToolMCPClientConfig' project: @@ -9229,6 +9244,15 @@ definitions: template_example: type: string type: object + types.ToolGitHubConfig: + properties: + base_url: + type: string + enabled: + type: boolean + personal_access_token: + type: string + type: object types.ToolMCPClientConfig: properties: description: @@ -9274,6 +9298,7 @@ definitions: - email - web_search - azure_devops + - github - mcp - project_manager type: string @@ -9285,6 +9310,7 @@ definitions: - ToolTypeEmail - ToolTypeWebSearch - ToolTypeAzureDevOps + - ToolTypeGitHub - ToolTypeMCP - ToolTypeProjectManager types.ToolWebSearchConfig: diff --git a/api/pkg/trigger/project/helix_code_review.go b/api/pkg/trigger/project/helix_code_review.go index 95b817e189..ce8dcef521 100644 --- a/api/pkg/trigger/project/helix_code_review.go +++ b/api/pkg/trigger/project/helix_code_review.go @@ -10,6 +10,7 @@ import ( "time" azuredevops "github.com/helixml/helix/api/pkg/agent/skill/azure_devops" + "github.com/helixml/helix/api/pkg/agent/skill/github" "github.com/helixml/helix/api/pkg/config" "github.com/helixml/helix/api/pkg/controller" "github.com/helixml/helix/api/pkg/data" @@ -61,6 +62,8 @@ func (h *HelixCodeReviewTrigger) ProcessGitPushEvent(ctx context.Context, specTa switch repo.ExternalType { case types.ExternalRepositoryTypeADO: return h.processAzureDevOpsPullRequest(ctx, specTask, project, repo, commitHash) + case types.ExternalRepositoryTypeGitHub: + return h.processGitHubPullRequest(ctx, specTask, project, repo, commitHash) default: return fmt.Errorf("unsupported external repository type: %s", repo.ExternalType) } @@ -138,6 +141,101 @@ func (h *HelixCodeReviewTrigger) processAzureDevOpsPullRequest(ctx context.Conte return h.runReviewSession(ctx, project, specTask, commitHash) } +func (h *HelixCodeReviewTrigger) processGitHubPullRequest(ctx context.Context, specTask *types.SpecTask, project *types.Project, repo *types.GitRepository, commitHash string) error { + log.Info(). + Str("spec_task_id", specTask.ID). + Str("commit_hash", commitHash). + Msg("Processing GitHub pull request") + + client, err := h.getGitHubClient(ctx, repo) + if err != nil { + return fmt.Errorf("failed to create github client: %w", err) + } + + owner, repoName, err := github.ParseGitHubURL(repo.ExternalURL) + if err != nil { + return fmt.Errorf("failed to parse github URL: %w", err) + } + + // Get the PR for this specific repo, or fall back to first open PR + repoPR := specTask.GetPRForRepo(repo.ID) + if repoPR == nil { + repoPR = specTask.GetFirstOpenPR() + } + if repoPR == nil { + return fmt.Errorf("no pull request found for spec task %s", specTask.ID) + } + + prID, err := strconv.Atoi(repoPR.PRID) + if err != nil { + return fmt.Errorf("failed to parse pull request ID: %w", err) + } + + pr, err := client.GetPullRequest(ctx, owner, repoName, prID) + if err != nil { + return fmt.Errorf("failed to get pull request: %w", err) + } + + var headSHA, baseSHA, headBranch, baseBranch string + if pr.Head != nil { + headSHA = pr.Head.GetSHA() + headBranch = pr.Head.GetRef() + } + if pr.Base != nil { + baseSHA = pr.Base.GetSHA() + baseBranch = pr.Base.GetRef() + } + + ctx = types.SetGitHubRepositoryContext(ctx, types.GitHubRepositoryContext{ + RemoteURL: repo.ExternalURL, + Owner: owner, + RepositoryName: repoName, + PullRequestID: prID, + HeadSHA: headSHA, + BaseSHA: baseSHA, + HeadBranch: headBranch, + BaseBranch: baseBranch, + }) + + return h.runReviewSession(ctx, project, specTask, commitHash) +} + +func (h *HelixCodeReviewTrigger) getGitHubClient(ctx context.Context, repo *types.GitRepository) (*github.Client, error) { + var baseURL string + if repo.GitHub != nil { + baseURL = repo.GitHub.BaseURL + } + + // GitHub App takes priority (service-to-service) + if repo.GitHub != nil && repo.GitHub.AppID != 0 && repo.GitHub.InstallationID != 0 && repo.GitHub.PrivateKey != "" { + client, err := github.NewClientWithGitHubApp(repo.GitHub.AppID, repo.GitHub.InstallationID, repo.GitHub.PrivateKey, baseURL) + if err != nil { + return nil, fmt.Errorf("failed to create GitHub App client: %w", err) + } + return client, nil + } + + // OAuth connection + if repo.OAuthConnectionID != "" { + conn, err := h.store.GetOAuthConnection(ctx, repo.OAuthConnectionID) + if err == nil && conn.AccessToken != "" { + return github.NewClientWithOAuthAndBaseURL(conn.AccessToken, baseURL), nil + } + } + + // GitHub-specific PAT + if repo.GitHub != nil && repo.GitHub.PersonalAccessToken != "" { + return github.NewClientWithPATAndBaseURL(repo.GitHub.PersonalAccessToken, baseURL), nil + } + + // Password field (typically a PAT) + if repo.Password != "" { + return github.NewClientWithPATAndBaseURL(repo.Password, baseURL), nil + } + + return nil, fmt.Errorf("no GitHub authentication configured - provide a Personal Access Token, GitHub App, or connect via OAuth") +} + func (h *HelixCodeReviewTrigger) runReviewSession(ctx context.Context, project *types.Project, specTask *types.SpecTask, commitHash string) error { if project.PullRequestReviewerHelixAppID == "" { return fmt.Errorf("no pull request reviewer agent configured for project %s", project.ID) diff --git a/api/pkg/types/github.go b/api/pkg/types/github.go new file mode 100644 index 0000000000..9e029919a7 --- /dev/null +++ b/api/pkg/types/github.go @@ -0,0 +1,36 @@ +package types + +import ( + "context" +) + +// GitHubRepositoryContext allows passing certain metadata between triggers and skills, useful to prevent the LLM from making mistakes +// around IDs, links, etc. +type GitHubRepositoryContext struct { + RemoteURL string // For example "https://github.com/owner/repo" + Owner string + RepositoryName string + PullRequestID int + + HeadSHA string // PR head commit + BaseSHA string // Base branch commit + HeadBranch string // For example "feature/my-feature" + BaseBranch string // For example "main" +} + +type GitHubRepositoryContextKeyType string + +const GitHubRepositoryContextKey GitHubRepositoryContextKeyType = "github_repository_context" + +func SetGitHubRepositoryContext(ctx context.Context, vals GitHubRepositoryContext) context.Context { + ctx = context.WithValue(ctx, GitHubRepositoryContextKey, vals) + return ctx +} + +func GetGitHubRepositoryContext(ctx context.Context) (GitHubRepositoryContext, bool) { + vals, ok := ctx.Value(GitHubRepositoryContextKey).(GitHubRepositoryContext) + if !ok { + return GitHubRepositoryContext{}, false + } + return vals, true +} diff --git a/api/pkg/types/types.go b/api/pkg/types/types.go index e0100fabca..5cc5ce5c8d 100644 --- a/api/pkg/types/types.go +++ b/api/pkg/types/types.go @@ -1380,6 +1380,7 @@ const ( ToolTypeEmail ToolType = "email" ToolTypeWebSearch ToolType = "web_search" ToolTypeAzureDevOps ToolType = "azure_devops" + ToolTypeGitHub ToolType = "github" ToolTypeMCP ToolType = "mcp" ToolTypeProjectManager ToolType = "project_manager" ) @@ -1402,6 +1403,7 @@ type ToolConfig struct { Calculator *ToolCalculatorConfig `json:"calculator"` Email *ToolEmailConfig `json:"email"` AzureDevOps *ToolAzureDevOpsConfig `json:"azure_devops"` + GitHub *ToolGitHubConfig `json:"github"` MCP *ToolMCPClientConfig `json:"mcp"` ProjectManager *ToolProjectManagerConfig `json:"project"` // Helix project management skill } @@ -1425,6 +1427,12 @@ type ToolAzureDevOpsConfig struct { PersonalAccessToken string `json:"personal_access_token" yaml:"personal_access_token"` } +type ToolGitHubConfig struct { + Enabled bool `json:"enabled" yaml:"enabled"` + PersonalAccessToken string `json:"personal_access_token" yaml:"personal_access_token"` + BaseURL string `json:"base_url,omitempty" yaml:"base_url,omitempty"` +} + type ToolBrowserConfig struct { Enabled bool `json:"enabled" yaml:"enabled"` MarkdownPostProcessing bool `json:"markdown_post_processing" yaml:"markdown_post_processing"` // If true, the browser will return the HTML as markdown @@ -1583,6 +1591,12 @@ type AssistantAzureDevOps struct { PersonalAccessToken string `json:"personal_access_token" yaml:"personal_access_token"` } +type AssistantGitHub struct { + Enabled bool `json:"enabled" yaml:"enabled"` + PersonalAccessToken string `json:"personal_access_token" yaml:"personal_access_token"` + BaseURL string `json:"base_url,omitempty" yaml:"base_url,omitempty"` +} + // AssistantSkills groups all skill-related configuration. // Used for project-level skills that overlay on top of agent skills. type AssistantSkills struct { @@ -1595,6 +1609,7 @@ type AssistantSkills struct { Email *AssistantEmail `json:"email,omitempty" yaml:"email,omitempty"` ProjectManager *AssistantProjectManager `json:"project_manager,omitempty" yaml:"project_manager,omitempty"` AzureDevOps *AssistantAzureDevOps `json:"azure_devops,omitempty" yaml:"azure_devops,omitempty"` + GitHub *AssistantGitHub `json:"github,omitempty" yaml:"github,omitempty"` } // apps are a collection of assistants @@ -1700,6 +1715,7 @@ type AssistantConfig struct { Calculator AssistantCalculator `json:"calculator,omitempty" yaml:"calculator,omitempty"` Email AssistantEmail `json:"email,omitempty" yaml:"email,omitempty"` AzureDevOps AssistantAzureDevOps `json:"azure_devops,omitempty" yaml:"azure_devops,omitempty"` + GitHub AssistantGitHub `json:"github,omitempty" yaml:"github,omitempty"` Tools []*Tool `json:"tools,omitempty" yaml:"tools,omitempty"` Tests []struct { diff --git a/frontend/src/api/api.ts b/frontend/src/api/api.ts index d71903cbb7..89da6793e9 100644 --- a/frontend/src/api/api.ts +++ b/frontend/src/api/api.ts @@ -1708,6 +1708,7 @@ export interface TypesAssistantConfig { frequency_penalty?: number; generation_model?: string; generation_model_provider?: string; + github?: TypesAssistantGitHub; id?: string; image?: string; /** Defaults to 4 */ @@ -1773,6 +1774,12 @@ export interface TypesAssistantEmail { template_example?: string; } +export interface TypesAssistantGitHub { + base_url?: string; + enabled?: boolean; + personal_access_token?: string; +} + export interface TypesAssistantKnowledge { /** * Description of the knowledge, will be used in the prompt @@ -1844,6 +1851,7 @@ export interface TypesAssistantSkills { browser?: TypesAssistantBrowser; calculator?: TypesAssistantCalculator; email?: TypesAssistantEmail; + github?: TypesAssistantGitHub; mcps?: TypesAssistantMCP[]; project_manager?: TypesAssistantProjectManager; web_search?: TypesAssistantWebSearch; @@ -5544,6 +5552,7 @@ export interface TypesToolConfig { browser?: TypesToolBrowserConfig; calculator?: TypesToolCalculatorConfig; email?: TypesToolEmailConfig; + github?: TypesToolGitHubConfig; mcp?: TypesToolMCPClientConfig; /** Helix project management skill */ project?: TypesToolProjectManagerConfig; @@ -5556,6 +5565,12 @@ export interface TypesToolEmailConfig { template_example?: string; } +export interface TypesToolGitHubConfig { + base_url?: string; + enabled?: boolean; + personal_access_token?: string; +} + export interface TypesToolMCPClientConfig { description?: string; enabled?: boolean; @@ -5583,6 +5598,7 @@ export enum TypesToolType { ToolTypeEmail = "email", ToolTypeWebSearch = "web_search", ToolTypeAzureDevOps = "azure_devops", + ToolTypeGitHub = "github", ToolTypeMCP = "mcp", ToolTypeProjectManager = "project_manager", } diff --git a/frontend/src/components/app/GitHubSkill.tsx b/frontend/src/components/app/GitHubSkill.tsx new file mode 100644 index 0000000000..f74c3460b7 --- /dev/null +++ b/frontend/src/components/app/GitHubSkill.tsx @@ -0,0 +1,288 @@ +import React, { useState, useEffect } from 'react'; +import { + DialogContent, + DialogActions, + Button, + Box, + Typography, + Alert, + TextField, + Link, + InputAdornment, + IconButton, +} from '@mui/material'; +import { Visibility, VisibilityOff } from '@mui/icons-material'; +import GitHubIcon from '@mui/icons-material/GitHub'; +import { IAppFlatState } from '../../types'; +import { TypesAssistantGitHub } from '../../api/api'; +import { styled } from '@mui/material/styles'; +import DarkDialog from '../dialog/DarkDialog'; +import useLightTheme from '../../hooks/useLightTheme'; + +interface GitHubSkillProps { + open: boolean; + onClose: () => void; + onClosed?: () => void; + app: IAppFlatState; + onUpdate: (updates: IAppFlatState) => Promise; + isEnabled: boolean; +} + +const NameTypography = styled(Typography)(({ theme }) => ({ + fontSize: '2rem', + fontWeight: 700, + color: '#F8FAFC', + marginBottom: theme.spacing(1), +})); + +const DescriptionTypography = styled(Typography)(({ theme }) => ({ + fontSize: '1.1rem', + color: '#A0AEC0', + marginBottom: theme.spacing(3), +})); + +const SectionCard = styled(Box)(({ theme }) => ({ + background: '#23262F', + borderRadius: 12, + padding: theme.spacing(3), + marginBottom: theme.spacing(3), + boxShadow: '0 2px 8px rgba(0,0,0,0.15)', +})); + +const DarkTextField = styled(TextField)(({ theme }) => ({ + '& .MuiOutlinedInput-root': { + color: '#F8FAFC', + '& fieldset': { + borderColor: '#4A5568', + }, + '&:hover fieldset': { + borderColor: '#718096', + }, + '&.Mui-focused fieldset': { + borderColor: '#3182CE', + }, + }, + '& .MuiInputLabel-root': { + color: '#A0AEC0', + '&.Mui-focused': { + color: '#3182CE', + }, + }, + '& .MuiFormHelperText-root': { + color: '#718096', + }, +})); + +const GitHubSkill: React.FC = ({ + open, + onClose, + onClosed, + app, + onUpdate, + isEnabled: initialIsEnabled, +}) => { + const lightTheme = useLightTheme(); + const [error, setError] = useState(null); + const [gitHubConfig, setGitHubConfig] = useState({ + personal_access_token: '', + base_url: '', + enabled: false, + }); + const [showPassword, setShowPassword] = useState(false); + + useEffect(() => { + if (app.gitHubTool) { + setGitHubConfig({ + ...app.gitHubTool, + enabled: app.gitHubTool.enabled ?? false, + }); + } else { + setGitHubConfig({ + personal_access_token: '', + base_url: '', + enabled: false, + }); + } + }, [app.gitHubTool]); + + const handleChange = (field: keyof TypesAssistantGitHub, value: string) => { + setError(null); + setGitHubConfig({ + ...gitHubConfig, + [field]: value, + }); + }; + + const handleEnable = async () => { + try { + setError(null); + const appCopy = JSON.parse(JSON.stringify(app)); + appCopy.gitHubTool = { + ...gitHubConfig, + enabled: true, + }; + await onUpdate(appCopy); + onClose(); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to save GitHub configuration'); + } + }; + + const handleDisable = async () => { + try { + const appCopy = JSON.parse(JSON.stringify(app)); + appCopy.gitHubTool = { + ...gitHubConfig, + enabled: false, + }; + await onUpdate(appCopy); + onClose(); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to disable GitHub'); + } + }; + + const handleClose = () => { + onClose(); + }; + + const isConfigured = !!gitHubConfig.personal_access_token; + + return ( + { + setGitHubConfig({ + personal_access_token: '', + base_url: '', + enabled: false, + }); + setError(null); + onClosed?.(); + } + }} + > + + + + + + GitHub PRs + + + + Enable the GitHub skill to allow the AI to review pull requests on GitHub repositories. The AI can read PR diffs and post inline review comments. + + + + + GitHub Configuration + + + handleChange('personal_access_token', e.target.value)} + type={showPassword ? 'text' : 'password'} + placeholder="Enter your GitHub Personal Access Token" + helperText={ + + + Create a Personal Access Token with repo scope for PR review access. + + + Learn how to create a Personal Access Token + + + } + margin="normal" + required + autoComplete="new-github-pat" + InputProps={{ + endAdornment: ( + + setShowPassword(!showPassword)} + onMouseDown={(event) => event.preventDefault()} + edge="end" + > + {showPassword ? : } + + + ), + }} + /> + + handleChange('base_url', e.target.value)} + placeholder="https://github.example.com" + helperText="Only needed for GitHub Enterprise instances. Leave empty for github.com." + margin="normal" + autoComplete="new-github-base-url" + /> + + + + + {error && ( + + + {error} + + + )} + + + + + + {initialIsEnabled && ( + + )} + + + + + + + ); +}; + +export default GitHubSkill; diff --git a/frontend/src/components/app/Skills.tsx b/frontend/src/components/app/Skills.tsx index 2c5e15d01b..725b7a46ab 100644 --- a/frontend/src/components/app/Skills.tsx +++ b/frontend/src/components/app/Skills.tsx @@ -45,6 +45,7 @@ import { airQualityTool } from './examples/skillAirQualityApi'; import { exchangeRatesSkill } from './examples/skillExchangeRatesApi'; import WebSearchSkill from './WebSearchSkill'; import AzureDevOpsSkill from './AzureDevOpsSkill'; +import GitHubSkill from './GitHubSkill'; import DroneCiSkill from './DroneCiSkill'; import GitHubMcpSkill from './GitHubMcpSkill'; import RocketLaunchIcon from '@mui/icons-material/RocketLaunch'; @@ -91,6 +92,7 @@ const SKILL_TYPE_PROJECT_MANAGER = 'Project Manager'; const SKILL_TYPE_CALCULATOR = 'Calculator'; const SKILL_TYPE_EMAIL = 'Email'; const SKILL_TYPE_AZURE_DEVOPS = 'Azure DevOps'; +const SKILL_TYPE_GITHUB_PR = 'GitHub PRs'; const SKILL_TYPE_MCP = 'MCP'; const SKILL_TYPE_LOCAL_MCP = 'Local MCP'; const SKILL_TYPE_DRONE_CI = 'Drone CI'; @@ -252,6 +254,25 @@ const BASE_SKILLS: ISkill[] = [ configurable: true, }, }, + { + id: 'github-prs', + icon: , + name: 'GitHub PRs', + description: 'Enable the AI to review pull requests on GitHub repositories. The AI can read PR diffs and post inline review comments.', + type: SKILL_TYPE_GITHUB_PR, + categories: [SKILL_CATEGORY_GITHUB], + skill: { + name: 'GitHub PRs', + description: 'Enable the AI to review GitHub pull requests.', + systemPrompt: '', + apiSkill: { + schema: '', + url: '', + requiredParameters: [], + }, + configurable: true, + }, + }, { id: 'drone-ci', icon: , @@ -837,6 +858,9 @@ const Skills: React.FC = ({ if (skillName === 'Azure DevOps') { return app.azureDevOpsTool?.enabled ?? false; } + if (skillName === 'GitHub PRs') { + return app.gitHubTool?.enabled ?? false; + } if (skillName === 'Drone CI') { // Check if Drone CI MCP is configured in mcpTools return app.mcpTools?.some(mcp => mcp.name === 'Drone CI' && mcp.transport === 'stdio') ?? false; @@ -1160,6 +1184,24 @@ const Skills: React.FC = ({ ); } + if (selectedSkill.name === 'GitHub PRs') { + return ( + { + setIsDialogOpen(false); + }} + onClosed={() => { + setSelectedSkill(null); + setDialogType(null); + }} + app={app} + onUpdate={onUpdate} + isEnabled={isSkillEnabled('GitHub PRs')} + /> + ); + } + if (selectedSkill.name === 'Drone CI') { return ( { assistants[0].azure_devops = updates.azureDevOpsTool } + if (updates.gitHubTool !== undefined) { + assistants[0].github = updates.gitHubTool + } + if (updates.projectManagerTool !== undefined) { assistants[0].project_manager = updates.projectManagerTool } diff --git a/frontend/src/pages/ProjectSettings.tsx b/frontend/src/pages/ProjectSettings.tsx index a98cf73baa..7d05b1144c 100644 --- a/frontend/src/pages/ProjectSettings.tsx +++ b/frontend/src/pages/ProjectSettings.tsx @@ -730,6 +730,7 @@ const ProjectSettings: FC = ({ projectId, tab = 'general' emailTool: projectSkills?.email, projectManagerTool: projectSkills?.project_manager, azureDevOpsTool: projectSkills?.azure_devops, + gitHubTool: projectSkills?.github, zapierTools: projectSkills?.zapier, default_agent_type: AGENT_TYPE_ZED_EXTERNAL, }), [projectSkills]); @@ -744,6 +745,7 @@ const ProjectSettings: FC = ({ projectId, tab = 'general' email: updates.emailTool, project_manager: updates.projectManagerTool, azure_devops: updates.azureDevOpsTool, + github: updates.gitHubTool, zapier: updates.zapierTools, }; setProjectSkills(newSkills); diff --git a/frontend/src/types.ts b/frontend/src/types.ts index feff3dc73e..be6927c3e0 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -12,6 +12,7 @@ import { TypesAssistantWebSearch, TypesToolWebSearchConfig, TypesAssistantAzureDevOps, + TypesAssistantGitHub, TypesAssistantProjectManager, TypesTrigger, TypesSession, @@ -915,6 +916,7 @@ export interface IAppFlatState { calculatorTool?: TypesAssistantCalculator emailTool?: TypesAssistantEmail azureDevOpsTool?: TypesAssistantAzureDevOps + gitHubTool?: TypesAssistantGitHub projectManagerTool?: TypesAssistantProjectManager conversation_starters?: string[]; triggers?: TypesTrigger[]; diff --git a/frontend/src/utils/app.ts b/frontend/src/utils/app.ts index e3cda1d547..d8608b8206 100644 --- a/frontend/src/utils/app.ts +++ b/frontend/src/utils/app.ts @@ -95,6 +95,7 @@ export const getAppFlatState = (app: IApp): IAppFlatState => { flatState.emailTool = assistant.email || undefined flatState.tests = assistant.tests || [] flatState.azureDevOpsTool = assistant.azure_devops || undefined + flatState.gitHubTool = assistant.github || undefined flatState.projectManagerTool = assistant.project_manager || undefined flatState.tools = assistant.tools || [] diff --git a/frontend/swagger/swagger.yaml b/frontend/swagger/swagger.yaml index b28bda0582..7e79d6b015 100644 --- a/frontend/swagger/swagger.yaml +++ b/frontend/swagger/swagger.yaml @@ -2768,6 +2768,8 @@ definitions: type: string generation_model_provider: type: string + github: + $ref: '#/definitions/types.AssistantGitHub' id: type: string image: @@ -2878,6 +2880,15 @@ definitions: template_example: type: string type: object + types.AssistantGitHub: + properties: + base_url: + type: string + enabled: + type: boolean + personal_access_token: + type: string + type: object types.AssistantKnowledge: properties: description: @@ -2982,6 +2993,8 @@ definitions: $ref: '#/definitions/types.AssistantCalculator' email: $ref: '#/definitions/types.AssistantEmail' + github: + $ref: '#/definitions/types.AssistantGitHub' mcps: items: $ref: '#/definitions/types.AssistantMCP' @@ -9211,6 +9224,8 @@ definitions: $ref: '#/definitions/types.ToolCalculatorConfig' email: $ref: '#/definitions/types.ToolEmailConfig' + github: + $ref: '#/definitions/types.ToolGitHubConfig' mcp: $ref: '#/definitions/types.ToolMCPClientConfig' project: @@ -9229,6 +9244,15 @@ definitions: template_example: type: string type: object + types.ToolGitHubConfig: + properties: + base_url: + type: string + enabled: + type: boolean + personal_access_token: + type: string + type: object types.ToolMCPClientConfig: properties: description: @@ -9274,6 +9298,7 @@ definitions: - email - web_search - azure_devops + - github - mcp - project_manager type: string @@ -9285,6 +9310,7 @@ definitions: - ToolTypeEmail - ToolTypeWebSearch - ToolTypeAzureDevOps + - ToolTypeGitHub - ToolTypeMCP - ToolTypeProjectManager types.ToolWebSearchConfig: diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 50556f7c63..f09bc581ca 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -250,7 +250,7 @@ dependencies: tslib "^2.0.0" -"@dnd-kit/core@^6.3.0", "@dnd-kit/core@^6.3.1": +"@dnd-kit/core@^6.3.1": version "6.3.1" resolved "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz" integrity sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ== @@ -307,13 +307,6 @@ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz" integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== -"@emotion/is-prop-valid@^1.3.0": - version "1.3.1" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz" - integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== - dependencies: - "@emotion/memoize" "^0.9.0" - "@emotion/is-prop-valid@1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" @@ -321,6 +314,13 @@ dependencies: "@emotion/memoize" "^0.8.1" +"@emotion/is-prop-valid@^1.3.0": + version "1.3.1" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz" + integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== + dependencies: + "@emotion/memoize" "^0.9.0" + "@emotion/memoize@^0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" @@ -331,7 +331,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.7.1", "@emotion/react@^11.9.0": +"@emotion/react@^11.7.1": version "11.14.0" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz" integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA== @@ -361,7 +361,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.3.0", "@emotion/styled@^11.6.0", "@emotion/styled@^11.8.1": +"@emotion/styled@^11.6.0": version "11.14.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz" integrity sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA== @@ -373,16 +373,16 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.2.0" "@emotion/utils" "^1.4.2" -"@emotion/unitless@^0.10.0": - version "0.10.0" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz" - integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== - "@emotion/unitless@0.8.1": version "0.8.1" resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== + "@emotion/use-insertion-effect-with-fallbacks@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz" @@ -398,6 +398,166 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== +"@esbuild/aix-ppc64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" + integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== + +"@esbuild/aix-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" + integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== + +"@esbuild/android-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" + integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== + +"@esbuild/android-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" + integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== + +"@esbuild/android-arm@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" + integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== + +"@esbuild/android-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" + integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== + +"@esbuild/android-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" + integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== + +"@esbuild/android-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" + integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== + +"@esbuild/darwin-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" + integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== + +"@esbuild/darwin-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" + integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== + +"@esbuild/darwin-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" + integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== + +"@esbuild/darwin-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" + integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== + +"@esbuild/freebsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" + integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== + +"@esbuild/freebsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" + integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== + +"@esbuild/freebsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" + integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== + +"@esbuild/freebsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" + integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== + +"@esbuild/linux-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" + integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== + +"@esbuild/linux-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" + integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== + +"@esbuild/linux-arm@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" + integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== + +"@esbuild/linux-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" + integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== + +"@esbuild/linux-ia32@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" + integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== + +"@esbuild/linux-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" + integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== + +"@esbuild/linux-loong64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" + integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== + +"@esbuild/linux-loong64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" + integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== + +"@esbuild/linux-mips64el@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" + integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== + +"@esbuild/linux-mips64el@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" + integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== + +"@esbuild/linux-ppc64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" + integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== + +"@esbuild/linux-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" + integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== + +"@esbuild/linux-riscv64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" + integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== + +"@esbuild/linux-riscv64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" + integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== + +"@esbuild/linux-s390x@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" + integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== + +"@esbuild/linux-s390x@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" + integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== + "@esbuild/linux-x64@0.25.1": version "0.25.1" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz" @@ -408,6 +568,91 @@ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz" integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== +"@esbuild/netbsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" + integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== + +"@esbuild/netbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" + integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== + +"@esbuild/netbsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" + integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== + +"@esbuild/netbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" + integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== + +"@esbuild/openbsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" + integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== + +"@esbuild/openbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" + integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== + +"@esbuild/openbsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" + integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== + +"@esbuild/openbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" + integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== + +"@esbuild/openharmony-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" + integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== + +"@esbuild/sunos-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" + integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== + +"@esbuild/sunos-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" + integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== + +"@esbuild/win32-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" + integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== + +"@esbuild/win32-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" + integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== + +"@esbuild/win32-ia32@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" + integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== + +"@esbuild/win32-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" + integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== + +"@esbuild/win32-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" + integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== + +"@esbuild/win32-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" + integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== + "@exodus/schemasafe@^1.0.0-rc.2": version "1.3.0" resolved "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz" @@ -509,7 +754,7 @@ dependencies: "@babel/runtime" "^7.23.9" -"@mui/material@^5.0.0", "@mui/material@^5.15.14 || ^6.0.0 || ^7.0.0 || ^7.0.0-beta", "@mui/material@^5.3.1": +"@mui/material@^5.3.1": version "5.16.14" resolved "https://registry.npmjs.org/@mui/material/-/material-5.16.14.tgz" integrity sha512-eSXQVCMKU2xc7EcTxe/X/rC9QsV2jUe8eLM3MUCPYbo6V52eCE436akRIvELq/AqZpxx2bwkq7HC0cRhLB+yaw== @@ -536,15 +781,6 @@ "@mui/utils" "^5.16.14" prop-types "^15.8.1" -"@mui/private-theming@^7.3.8": - version "7.3.8" - resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.8.tgz" - integrity sha512-du5dlPZ9XL3xW2apHoGDXBI+QLtyVJGrXNCfcNYfP/ojkz1RQ0rRV6VG9Rkm1DqEFRG8mjjTL7zmE1Bvn1eR4A== - dependencies: - "@babel/runtime" "^7.28.6" - "@mui/utils" "^7.3.8" - prop-types "^15.8.1" - "@mui/styled-engine@^5.16.14": version "5.16.14" resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.14.tgz" @@ -555,18 +791,6 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/styled-engine@^7.3.8": - version "7.3.8" - resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.8.tgz" - integrity sha512-JHAeXQzS0tJ+Fq3C6J4TVDsW+yKhO4uuxuiLaopNStJeQYBIUCXpKYyUCcgXym4AmhbznQnv9RlHywSH6b0FOg== - dependencies: - "@babel/runtime" "^7.28.6" - "@emotion/cache" "^11.14.0" - "@emotion/serialize" "^1.3.3" - "@emotion/sheet" "^1.4.0" - csstype "^3.2.3" - prop-types "^15.8.1" - "@mui/styles@^5.12.0": version "5.16.14" resolved "https://registry.npmjs.org/@mui/styles/-/styles-5.16.14.tgz" @@ -590,20 +814,6 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@^5.15.14 || ^6.0.0 || ^7.0.0 || ^7.0.0-beta": - version "7.3.8" - resolved "https://registry.npmjs.org/@mui/system/-/system-7.3.8.tgz" - integrity sha512-hoFRj4Zw2Km8DPWZp/nKG+ao5Jw5LSk2m/e4EGc6M3RRwXKEkMSG4TgtfVJg7dS2homRwtdXSMW+iRO0ZJ4+IA== - dependencies: - "@babel/runtime" "^7.28.6" - "@mui/private-theming" "^7.3.8" - "@mui/styled-engine" "^7.3.8" - "@mui/types" "^7.4.11" - "@mui/utils" "^7.3.8" - clsx "^2.1.1" - csstype "^3.2.3" - prop-types "^15.8.1" - "@mui/system@^5.16.14": version "5.16.14" resolved "https://registry.npmjs.org/@mui/system/-/system-5.16.14.tgz" @@ -618,7 +828,7 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/types@^7.2.15", "@mui/types@^7.4.11": +"@mui/types@^7.2.15": version "7.4.11" resolved "https://registry.npmjs.org/@mui/types/-/types-7.4.11.tgz" integrity sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q== @@ -637,18 +847,6 @@ prop-types "^15.8.1" react-is "^19.0.0" -"@mui/utils@^7.3.8": - version "7.3.8" - resolved "https://registry.npmjs.org/@mui/utils/-/utils-7.3.8.tgz" - integrity sha512-kZRcE2620CBGr+XI8YMmwPj6WIPwSF7uMJjvSfqd8zXVvlz0MCJbzRRUGNf8NgflCLthdji2DdS643TeyJ3+nA== - dependencies: - "@babel/runtime" "^7.28.6" - "@mui/types" "^7.4.11" - "@types/prop-types" "^15.7.15" - clsx "^2.1.1" - prop-types "^15.8.1" - react-is "^19.2.3" - "@mui/x-charts-vendor@7.20.0": version "7.20.0" resolved "https://registry.npmjs.org/@mui/x-charts-vendor/-/x-charts-vendor-7.20.0.tgz" @@ -942,6 +1140,91 @@ resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.47.tgz" integrity sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw== +"@rollup/rollup-android-arm-eabi@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz#add5e608d4e7be55bc3ca3d962490b8b1890e088" + integrity sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg== + +"@rollup/rollup-android-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz#10bd0382b73592beee6e9800a69401a29da625c4" + integrity sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w== + +"@rollup/rollup-darwin-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz#1e99ab04c0b8c619dd7bbde725ba2b87b55bfd81" + integrity sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg== + +"@rollup/rollup-darwin-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz#69e741aeb2839d2e8f0da2ce7a33d8bd23632423" + integrity sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w== + +"@rollup/rollup-freebsd-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz#3736c232a999c7bef7131355d83ebdf9651a0839" + integrity sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug== + +"@rollup/rollup-freebsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz#227dcb8f466684070169942bd3998901c9bfc065" + integrity sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz#ba004b30df31b724f99ce66e7128248bea17cb0c" + integrity sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw== + +"@rollup/rollup-linux-arm-musleabihf@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz#6929f3e07be6b6da5991f63c6b68b3e473d0a65a" + integrity sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw== + +"@rollup/rollup-linux-arm64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz#06e89fd4a25d21fe5575d60b6f913c0e65297bfa" + integrity sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g== + +"@rollup/rollup-linux-arm64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz#fddabf395b90990d5194038e6cd8c00156ed8ac0" + integrity sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q== + +"@rollup/rollup-linux-loong64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz#04c10bb764bbf09a3c1bd90432e92f58d6603c36" + integrity sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA== + +"@rollup/rollup-linux-loong64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz#f2450361790de80581d8687ea19142d8a4de5c0f" + integrity sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw== + +"@rollup/rollup-linux-ppc64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz#0474f4667259e407eee1a6d38e29041b708f6a30" + integrity sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w== + +"@rollup/rollup-linux-ppc64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz#9f32074819eeb1ddbe51f50ea9dcd61a6745ec33" + integrity sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw== + +"@rollup/rollup-linux-riscv64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz#3fdb9d4b1e29fb6b6a6da9f15654d42eb77b99b2" + integrity sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A== + +"@rollup/rollup-linux-riscv64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz#1de780d64e6be0e3e8762035c22e0d8ea68df8ed" + integrity sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw== + +"@rollup/rollup-linux-s390x-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz#1da022ffd2d9e9f0fd8344ea49e113001fbcac64" + integrity sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg== + "@rollup/rollup-linux-x64-gnu@4.57.1": version "4.57.1" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz" @@ -952,6 +1235,36 @@ resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz" integrity sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw== +"@rollup/rollup-openbsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz#c51d48c07cd6c466560e5bed934aec688ce02614" + integrity sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw== + +"@rollup/rollup-openharmony-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz#f09921d0b2a0b60afbf3586d2a7a7f208ba6df17" + integrity sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ== + +"@rollup/rollup-win32-arm64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz#08d491717135376e4a99529821c94ecd433d5b36" + integrity sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ== + +"@rollup/rollup-win32-ia32-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz#b0c12aac1104a8b8f26a5e0098e5facbb3e3964a" + integrity sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew== + +"@rollup/rollup-win32-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz#b9cccef26f5e6fdc013bf3c0911a3c77428509d0" + integrity sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ== + +"@rollup/rollup-win32-x64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz#a03348e7b559c792b6277cc58874b89ef46e1e72" + integrity sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA== + "@rudderstack/analytics-js@^3.0.3": version "3.11.17" resolved "https://registry.npmjs.org/@rudderstack/analytics-js/-/analytics-js-3.11.17.tgz" @@ -1015,17 +1328,6 @@ "@sentry/types" "7.120.3" "@sentry/utils" "7.120.3" -"@sentry/browser@^8.50.0": - version "8.50.0" - resolved "https://registry.npmjs.org/@sentry/browser/-/browser-8.50.0.tgz" - integrity sha512-aGJSpuKiHVKkLvd1VklJSZ2oCsl4wcKUVxKIa8dhJC8KjDY0vREQCywrlWuS5KYP0xFy4k28pg6PPR3HKkUlNw== - dependencies: - "@sentry-internal/browser-utils" "8.50.0" - "@sentry-internal/feedback" "8.50.0" - "@sentry-internal/replay" "8.50.0" - "@sentry-internal/replay-canvas" "8.50.0" - "@sentry/core" "8.50.0" - "@sentry/browser@7.120.3": version "7.120.3" resolved "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.3.tgz" @@ -1040,6 +1342,17 @@ "@sentry/types" "7.120.3" "@sentry/utils" "7.120.3" +"@sentry/browser@^8.50.0": + version "8.50.0" + resolved "https://registry.npmjs.org/@sentry/browser/-/browser-8.50.0.tgz" + integrity sha512-aGJSpuKiHVKkLvd1VklJSZ2oCsl4wcKUVxKIa8dhJC8KjDY0vREQCywrlWuS5KYP0xFy4k28pg6PPR3HKkUlNw== + dependencies: + "@sentry-internal/browser-utils" "8.50.0" + "@sentry-internal/feedback" "8.50.0" + "@sentry-internal/replay" "8.50.0" + "@sentry-internal/replay-canvas" "8.50.0" + "@sentry/core" "8.50.0" + "@sentry/core@7.120.3": version "7.120.3" resolved "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz" @@ -1106,6 +1419,31 @@ resolved "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz" integrity sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g== +"@swc/core-darwin-arm64@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz#6f177125831b765e5dacdd1d8c07de576962ad16" + integrity sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg== + +"@swc/core-darwin-x64@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz#31381b6560bbd8b8ca6a0755262df321e28c039d" + integrity sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA== + +"@swc/core-linux-arm-gnueabihf@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz#ea7831776f7d8a548db4a8a5f38ef37faf5c0c66" + integrity sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg== + +"@swc/core-linux-arm64-gnu@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz#c99a5843115ef57cbefd40b93c99cb130d6db12f" + integrity sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA== + +"@swc/core-linux-arm64-musl@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz#9a7831f558b2ff504d3d6eaaf6a4c84e5232284b" + integrity sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w== + "@swc/core-linux-x64-gnu@1.15.11": version "1.15.11" resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz" @@ -1116,6 +1454,21 @@ resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz" integrity sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw== +"@swc/core-win32-arm64-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz#73eda8b54c94046728f5983e5516223ad1009c59" + integrity sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA== + +"@swc/core-win32-ia32-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz#0df41547974ba9f26ba3e903e803ff523c15650b" + integrity sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw== + +"@swc/core-win32-x64-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz#f6f97500472c0ea4ab756c383c5d97896075f95c" + integrity sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw== + "@swc/core@^1.13.5": version "1.15.11" resolved "https://registry.npmjs.org/@swc/core/-/core-1.15.11.tgz" @@ -1140,7 +1493,7 @@ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/helpers@^0.5.12", "@swc/helpers@>=0.5.17": +"@swc/helpers@^0.5.12": version "0.5.17" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz" integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A== @@ -1166,7 +1519,7 @@ dependencies: "@tanstack/query-core" "5.69.0" -"@testing-library/dom@^10.0.0", "@testing-library/dom@^10.4.0": +"@testing-library/dom@^10.4.0": version "10.4.0" resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz" integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== @@ -1425,7 +1778,7 @@ "@types/d3-transition" "*" "@types/d3-zoom" "*" -"@types/debug@^4.0.0", "@types/debug@^4.1.12": +"@types/debug@^4.0.0": version "4.1.12" resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== @@ -1439,7 +1792,7 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@1.0.8": +"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0": version "1.0.8" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== @@ -1512,7 +1865,7 @@ resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/node@*", "@types/node@^18.0.0 || ^20.0.0 || >=22.0.0", "@types/node@^20.19.0 || >=22.12.0", "@types/node@^22.12.0": +"@types/node@*", "@types/node@^22.12.0": version "22.12.0" resolved "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz" integrity sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA== @@ -1534,7 +1887,7 @@ resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz" integrity sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ== -"@types/prop-types@*", "@types/prop-types@^15.7.12", "@types/prop-types@^15.7.15": +"@types/prop-types@*", "@types/prop-types@^15.7.12": version "15.7.15" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz" integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== @@ -1551,7 +1904,7 @@ dependencies: "@types/react" "*" -"@types/react-dom@^18.0.0 || ^19.0.0", "@types/react-dom@^18.3.0": +"@types/react-dom@^18.3.0": version "18.3.6" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.6.tgz" integrity sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw== @@ -1582,7 +1935,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^18.0.0", "@types/react@^18.0.0 || ^19.0.0", "@types/react@^18.2.25 || ^19", "@types/react@^18.3.3", "@types/react@>=18": +"@types/react@*", "@types/react@^18.3.3": version "18.3.20" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz" integrity sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg== @@ -1610,12 +1963,7 @@ resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== -"@types/unist@^2": - version "2.0.11" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" - integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== - -"@types/unist@^2.0.0": +"@types/unist@^2", "@types/unist@^2.0.0": version "2.0.11" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== @@ -1703,7 +2051,7 @@ estree-walker "^3.0.3" magic-string "^0.30.17" -"@vitest/pretty-format@^3.0.9", "@vitest/pretty-format@3.0.9": +"@vitest/pretty-format@3.0.9", "@vitest/pretty-format@^3.0.9": version "3.0.9" resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz" integrity sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA== @@ -1780,7 +2128,7 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0, aria-query@5.3.0: +aria-query@5.3.0, aria-query@^5.0.0: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== @@ -1849,7 +2197,7 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bare-events@*, bare-events@^2.0.0, bare-events@^2.2.0: +bare-events@^2.0.0, bare-events@^2.2.0: version "2.5.4" resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz" integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA== @@ -1887,16 +2235,16 @@ base64-arraybuffer@^1.0.2: resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz" integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== -base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - base64-js@0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" integrity sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw== +base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + basic-auth@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" @@ -1947,7 +2295,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.24.0, "browserslist@>= 4.21.0": +browserslist@^4.24.0: version "4.24.4" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz" integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== @@ -2104,7 +2452,7 @@ chevrotain-allstar@~0.3.0: dependencies: lodash-es "^4.17.21" -chevrotain@^11.0.0, chevrotain@~11.0.3: +chevrotain@~11.0.3: version "11.0.3" resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz" integrity sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw== @@ -2190,16 +2538,16 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - commander@7: version "7.2.0" resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + confbox@^0.1.8: version "0.1.8" resolved "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz" @@ -2222,7 +2570,7 @@ copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js@^3.1.4, core-js@^3.38.1, core-js@^3.6.0, core-js@^3.8.3: +core-js@^3.38.1, core-js@^3.6.0, core-js@^3.8.3: version "3.40.0" resolved "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz" integrity sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ== @@ -2319,16 +2667,11 @@ cssstyle@^4.2.1: "@asamuzakjp/css-color" "^3.1.1" rrweb-cssom "^0.8.0" -csstype@^3.0.10, csstype@^3.0.2, csstype@^3.1.3, csstype@3.1.3: +csstype@3.1.3, csstype@^3.0.2, csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -csstype@^3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz" - integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ== - cytoscape-cose-bilkent@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz" @@ -2343,18 +2686,11 @@ cytoscape-fcose@^2.2.0: dependencies: cose-base "^2.2.0" -cytoscape@^3.2.0, cytoscape@^3.29.3: +cytoscape@^3.29.3: version "3.33.1" resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz" integrity sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ== -d3-array@^3.1.6, d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: - version "3.2.4" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== - dependencies: - internmap "1 - 2" - "d3-array@1 - 2": version "2.12.1" resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz" @@ -2362,6 +2698,13 @@ d3-array@^3.1.6, d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-a dependencies: internmap "^1.0.0" +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.1.6, d3-array@^3.2.0: + version "3.2.4" + resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + d3-axis@3: version "3.0.0" resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" @@ -2385,9 +2728,9 @@ d3-chord@3: dependencies: d3-path "1 - 3" -d3-color@^3.1.0, "d3-color@1 - 3", d3-color@3: +"d3-color@1 - 3", d3-color@3, d3-color@3.1.0, d3-color@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== d3-contour@4: @@ -2397,7 +2740,7 @@ d3-contour@4: dependencies: d3-array "^3.2.0" -d3-delaunay@^6.0.4, d3-delaunay@6: +d3-delaunay@6, d3-delaunay@^6.0.4: version "6.0.4" resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== @@ -2426,7 +2769,7 @@ d3-delaunay@^6.0.4, d3-delaunay@6: iconv-lite "0.6" rw "1" -d3-ease@^3.0.1, "d3-ease@1 - 3", d3-ease@3: +"d3-ease@1 - 3", d3-ease@3, d3-ease@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== @@ -2464,23 +2807,23 @@ d3-hierarchy@3: resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -d3-interpolate@^3.0.1, "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== dependencies: d3-color "1 - 3" -d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" - integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== - d3-path@1: version "1.0.9" resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz" integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== +"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + d3-polygon@3: version "3.0.1" resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" @@ -2512,7 +2855,7 @@ d3-scale-chromatic@3: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@^4.0.2, d3-scale@4: +d3-scale@4, d3-scale@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -2528,6 +2871,13 @@ d3-scale@^4.0.2, d3-scale@4: resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== +d3-shape@3, d3-shape@^3.1.0, d3-shape@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + d3-shape@^1.2.0: version "1.3.7" resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" @@ -2535,13 +2885,6 @@ d3-shape@^1.2.0: dependencies: d3-path "1" -d3-shape@^3.1.0, d3-shape@^3.2.0, d3-shape@3: - version "3.2.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" - integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== - dependencies: - d3-path "^3.1.0" - "d3-time-format@2 - 4", d3-time-format@4: version "4.1.0" resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" @@ -2549,14 +2892,14 @@ d3-shape@^3.1.0, d3-shape@^3.2.0, d3-shape@3: dependencies: d3-time "1 - 3" -d3-time@^3.0.0, d3-time@^3.1.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3, d3-time@^3.0.0, d3-time@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -d3-timer@^3.0.1, "d3-timer@1 - 3", d3-timer@3: +"d3-timer@1 - 3", d3-timer@3, d3-timer@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== @@ -2645,6 +2988,13 @@ dayjs@^1.11.18: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz" integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -2652,13 +3002,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.4.0, debug@4: - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - decimal.js-light@^2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" @@ -2695,7 +3038,7 @@ degenerator@^5.0.0: escodegen "^2.1.0" esprima "^4.0.1" -delaunator@^5.0.1, delaunator@5: +delaunator@5, delaunator@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz" integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== @@ -2719,7 +3062,7 @@ devlop@^1.0.0, devlop@^1.1.0: dependencies: dequal "^2.0.0" -devtools-protocol@*, devtools-protocol@0.0.1380148: +devtools-protocol@0.0.1380148: version "0.0.1380148" resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1380148.tgz" integrity sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA== @@ -3102,6 +3445,11 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -3582,16 +3930,16 @@ inline-style-parser@0.2.4: resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz" integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== -internmap@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" - integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== - "internmap@1 - 2": version "2.0.3" resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + iobuffer@^5.3.2: version "5.4.0" resolved "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz" @@ -3722,7 +4070,7 @@ jsbn@1.1.0: resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== -jsdom@*, jsdom@^26.0.0: +jsdom@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz" integrity sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw== @@ -3759,7 +4107,7 @@ json-parse-even-better-errors@^2.3.0: 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== -json-pointer@^0.6.2, json-pointer@0.6.2: +json-pointer@0.6.2, json-pointer@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz" integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== @@ -3850,7 +4198,7 @@ jss-plugin-vendor-prefixer@^10.10.0: css-vendor "^2.0.8" jss "10.10.0" -jss@^10.10.0, jss@10.10.0: +jss@10.10.0, jss@^10.10.0: version "10.10.0" resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz" integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== @@ -3927,16 +4275,16 @@ localforage@^1.8.1: dependencies: lie "3.1.1" -lodash-es@^4.17.21: - version "4.17.22" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz" - integrity sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q== - lodash-es@4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== +lodash-es@^4.17.21: + version "4.17.22" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz" + integrity sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q== + lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" @@ -4624,7 +4972,7 @@ mobx-react@^9.1.1: dependencies: mobx-react-lite "^4.1.0" -mobx@^6.0.4, mobx@^6.13.5, mobx@^6.9.0: +mobx@^6.13.5: version "6.13.5" resolved "https://registry.npmjs.org/mobx/-/mobx-6.13.5.tgz" integrity sha512-/HTWzW2s8J1Gqt+WmUj5Y0mddZk+LInejADc79NJadrWla3rHzmRHki/mnEUH1AvOmbNTZ1BRbKxr8DSgfdjMA== @@ -4879,7 +5227,7 @@ path-browserify@^1.0.1: resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-data-parser@^0.1.0, path-data-parser@0.1.0: +path-data-parser@0.1.0, path-data-parser@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz" integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== @@ -4932,7 +5280,7 @@ picocolors@^1.0.0, picocolors@^1.1.1: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -"picomatch@^3 || ^4", picomatch@^4.0.3: +picomatch@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== @@ -4951,7 +5299,7 @@ pluralize@^8.0.0: resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -points-on-curve@^0.2.0, points-on-curve@0.2.0: +points-on-curve@0.2.0, points-on-curve@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz" integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== @@ -4985,6 +5333,15 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.38: + version "8.4.38" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + postcss@^8.5.3: version "8.5.3" resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz" @@ -5003,15 +5360,6 @@ postcss@^8.5.6: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@8.4.38: - version "8.4.38" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - pretty-bytes@^6.0.0: version "6.1.1" resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz" @@ -5041,7 +5389,7 @@ progress@^2.0.3: resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.8.1, prop-types@>=15.5.0: +prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -5162,7 +5510,7 @@ react-copy-to-clipboard@^5.1.0: copy-to-clipboard "^3.3.1" prop-types "^15.8.1" -"react-dom@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.4 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0", "react-dom@>= 16.8.0", react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=16.8.0-0, react-dom@18.3.1: +react-dom@18.3.1: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -5179,36 +5527,26 @@ react-dropzone@^14.2.3: file-selector "^2.1.0" prop-types "^15.8.1" -react-hook-form@^7.0.0: - version "7.71.1" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.71.1.tgz" - integrity sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w== - react-icons@^5.5.0: version "5.5.0" resolved "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz" integrity sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw== -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react-is@^19.0.0, react-is@^19.2.3: - version "19.2.4" - resolved "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz" - integrity sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA== - react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^19.0.0: + version "19.2.4" + resolved "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz" + integrity sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA== + react-markdown-editor-lite@^1.3.4: version "1.3.4" resolved "https://registry.npmjs.org/react-markdown-editor-lite/-/react-markdown-editor-lite-1.3.4.tgz" @@ -5235,7 +5573,7 @@ react-markdown@^9.0.1, react-markdown@~9.0.1: unist-util-visit "^5.0.0" vfile "^6.0.0" -"react-redux@^7.2.1 || ^8.1.3 || ^9.0.0", "react-redux@8.x.x || 9.x.x": +"react-redux@8.x.x || 9.x.x": version "9.2.0" resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz" integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== @@ -5306,7 +5644,7 @@ react-window@^1.8.11: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" -react@*, "react@^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^15.3.0 || 16 || 17 || 18", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.4 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18 || ^19", "react@^16.9.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18 || ^19", "react@^18.0 || ^19", "react@^18.0.0 || ^19.0.0", react@^18.3.1, "react@>= 0.14.0", "react@>= 16.8 || 18.0.0", "react@>= 16.8.0", react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=16.8.0-0, react@>=18, "react@15.x || 16.x || 17.x || 18.x", react@18.3.1: +react@18.3.1: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -5375,7 +5713,7 @@ redux-thunk@^3.1.0: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== -redux@^5.0.0, redux@^5.0.1: +redux@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== @@ -5447,10 +5785,10 @@ rehype-parse@^9.0.0: hast-util-from-html "^2.0.0" unified "^11.0.0" -rehype-prism-plus@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.1.tgz" - integrity sha512-Wglct0OW12tksTUseAPyWPo3srjBOY7xKlql/DPKi7HbsdZTyaLCAoO58QBKSczFQxElTsQlOY3JDOFzB/K++Q== +rehype-prism-plus@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.0.tgz" + integrity sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ== dependencies: hast-util-to-string "^3.0.0" parse-numeric-range "^1.3.0" @@ -5459,10 +5797,10 @@ rehype-prism-plus@~2.0.0: unist-util-filter "^5.0.0" unist-util-visit "^5.0.0" -rehype-prism-plus@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.0.tgz" - integrity sha512-FeM/9V2N7EvDZVdR2dqhAzlw5YI49m9Tgn7ZrYJeYHIahM6gcXpH0K1y2gNnKanZCydOMluJvX2cB9z3lhY8XQ== +rehype-prism-plus@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.1.tgz" + integrity sha512-Wglct0OW12tksTUseAPyWPo3srjBOY7xKlql/DPKi7HbsdZTyaLCAoO58QBKSczFQxElTsQlOY3JDOFzB/K++Q== dependencies: hast-util-to-string "^3.0.0" parse-numeric-range "^1.3.0" @@ -5591,7 +5929,7 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^5.1.0, reselect@5.1.1: +reselect@5.1.1, reselect@^5.1.0: version "5.1.1" resolved "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== @@ -5693,7 +6031,7 @@ router5-transition-path@^8.0.1: resolved "https://registry.npmjs.org/router5-transition-path/-/router5-transition-path-8.0.1.tgz" integrity sha512-l7MFEUmasEhe1emrO79t7BkCqQQRZdenz4c3qJmZpe8V6BCerZQR+SYbZL5zmQ3hazY7nR264jCWuNed+cMD2A== -router5@^8.0.0, router5@^8.0.1: +router5@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/router5/-/router5-8.0.1.tgz" integrity sha512-LBLQAYd2ZI1FiiBqGf82oC+LRD0PUABrZqTzd6OmyK+t5N8wRs3hbIxeiy/9Zy+xI8Fdf/0WM68P41W6MH8pdQ== @@ -5712,16 +6050,16 @@ rw@1: resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -5734,6 +6072,11 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" +scheduler@0.25.0-rc-603e6108-20241029: + version "0.25.0-rc-603e6108-20241029" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0-rc-603e6108-20241029.tgz" + integrity sha512-pFwF6H1XrSdYYNLfOcGlM28/j8CGLu8IvdrxqhjWULe2bPcKiKW4CV+OWqR/9fT52mywx65l7ysNkjLKBda7eA== + scheduler@^0.23.2: version "0.23.2" resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz" @@ -5741,11 +6084,6 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -scheduler@0.25.0-rc-603e6108-20241029: - version "0.25.0-rc-603e6108-20241029" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0-rc-603e6108-20241029.tgz" - integrity sha512-pFwF6H1XrSdYYNLfOcGlM28/j8CGLu8IvdrxqhjWULe2bPcKiKW4CV+OWqR/9fT52mywx65l7ysNkjLKBda7eA== - search-params@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/search-params/-/search-params-3.0.0.tgz" @@ -5962,13 +6300,6 @@ streamx@^2.15.0, streamx@^2.21.0: optionalDependencies: bare-events "^2.2.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -5978,6 +6309,13 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + stringify-entities@^4.0.0: version "4.0.4" resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" @@ -6012,7 +6350,7 @@ style-to-object@^1.0.0: dependencies: inline-style-parser "0.2.4" -"styled-components@^4.1.1 || ^5.1.1 || ^6.0.5", styled-components@^6.1.13: +styled-components@^6.1.13: version "6.1.14" resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.14.tgz" integrity sha512-KtfwhU5jw7UoxdM0g6XU9VZQFV4do+KrM8idiVCH5h4v49W+3p3yMe0icYwJgZQZepa5DbH04Qv8P0/RdcLcgg== @@ -6027,11 +6365,6 @@ style-to-object@^1.0.0: stylis "4.3.2" tslib "2.6.2" -stylis@^4.3.6: - version "4.3.6" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz" - integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== - stylis@4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz" @@ -6042,6 +6375,11 @@ stylis@4.3.2: resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz" integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== +stylis@^4.3.6: + version "4.3.6" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" @@ -6130,7 +6468,7 @@ three-orbitcontrols@^2.110.3: resolved "https://registry.npmjs.org/three-orbitcontrols/-/three-orbitcontrols-2.110.3.tgz" integrity sha512-BNNbksJwbN3/MmT0X/gjz5ZCchm7bjk26SUdtJYRxfEYjDfkb/0PeUTHE/KuyJ5vb/owK3mojyy3vcqDx99sRA== -three@^0.172.0, "three@>= 0.110.0": +three@^0.172.0: version "0.172.0" resolved "https://registry.npmjs.org/three/-/three-0.172.0.tgz" integrity sha512-6HMgMlzU97MsV7D/tY8Va38b83kz8YJX+BefKjspMNAv0Vx6dxMogHOrnRl/sbMIs3BPUKijPqDqJ/+UwJbIow== @@ -6254,6 +6592,11 @@ ts-dedent@^2.2.0: resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== +tslib@2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@^1.10.0: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" @@ -6264,11 +6607,6 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.7.0, tslib@^2.8.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tslib@2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - type-fest@^2.19.0: version "2.19.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" @@ -6279,7 +6617,7 @@ typed-query-selector@^2.12.0: resolved "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz" integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg== -typescript@^5.9.3, typescript@>=4.9.5: +typescript@^5.9.3: version "5.9.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== @@ -6499,7 +6837,18 @@ vite-node@3.0.9: pathe "^2.0.3" vite "^5.0.0 || ^6.0.0" -"vite@^4 || ^5 || ^6 || ^7", vite@^7.3.1: +"vite@^5.0.0 || ^6.0.0": + version "6.2.2" + resolved "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz" + integrity sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ== + dependencies: + esbuild "^0.25.0" + postcss "^8.5.3" + rollup "^4.30.1" + optionalDependencies: + fsevents "~2.3.3" + +vite@^7.3.1: version "7.3.1" resolved "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz" integrity sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== @@ -6513,17 +6862,6 @@ vite-node@3.0.9: optionalDependencies: fsevents "~2.3.3" -"vite@^5.0.0 || ^6.0.0": - version "6.2.2" - resolved "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz" - integrity sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ== - dependencies: - esbuild "^0.25.0" - postcss "^8.5.3" - rollup "^4.30.1" - optionalDependencies: - fsevents "~2.3.3" - vitest@^3.0.9: version "3.0.9" resolved "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz" @@ -6704,7 +7042,7 @@ yaml@^1.10.0: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.4.2, yaml@^2.5.0: +yaml@^2.5.0: version "2.7.0" resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz" integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== diff --git a/swagger.json b/swagger.json index 46ec937a73..ba1a3465ba 100644 --- a/swagger.json +++ b/swagger.json @@ -20140,6 +20140,9 @@ "generation_model_provider": { "type": "string" }, + "github": { + "$ref": "#/definitions/types.AssistantGitHub" + }, "id": { "type": "string" }, @@ -20282,6 +20285,20 @@ } } }, + "types.AssistantGitHub": { + "type": "object", + "properties": { + "base_url": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "personal_access_token": { + "type": "string" + } + } + }, "types.AssistantKnowledge": { "type": "object", "properties": { @@ -20411,6 +20428,9 @@ "email": { "$ref": "#/definitions/types.AssistantEmail" }, + "github": { + "$ref": "#/definitions/types.AssistantGitHub" + }, "mcps": { "type": "array", "items": { @@ -29189,6 +29209,9 @@ "email": { "$ref": "#/definitions/types.ToolEmailConfig" }, + "github": { + "$ref": "#/definitions/types.ToolGitHubConfig" + }, "mcp": { "$ref": "#/definitions/types.ToolMCPClientConfig" }, @@ -29219,6 +29242,20 @@ } } }, + "types.ToolGitHubConfig": { + "type": "object", + "properties": { + "base_url": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "personal_access_token": { + "type": "string" + } + } + }, "types.ToolMCPClientConfig": { "type": "object", "properties": { @@ -29283,6 +29320,7 @@ "email", "web_search", "azure_devops", + "github", "mcp", "project_manager" ], @@ -29294,6 +29332,7 @@ "ToolTypeEmail", "ToolTypeWebSearch", "ToolTypeAzureDevOps", + "ToolTypeGitHub", "ToolTypeMCP", "ToolTypeProjectManager" ]