diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db37467fea..053d50e646 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -284,7 +284,7 @@ jobs: with: node-version: "24" cache: npm - cache-dependency-path: pkg/workflow/js/package-lock.json + cache-dependency-path: actions/setup/js/package-lock.json - name: Report Node cache status run: | if [ "${{ steps.setup-node.outputs.cache-hit }}" == "true" ]; then @@ -307,7 +307,7 @@ jobs: fi - name: npm ci run: npm ci - working-directory: ./pkg/workflow/js + working-directory: ./actions/setup/js - name: Build code run: make build @@ -332,7 +332,7 @@ jobs: with: node-version: "24" cache: npm - cache-dependency-path: pkg/workflow/js/package-lock.json + cache-dependency-path: actions/setup/js/package-lock.json - name: Report Node cache status run: | if [ "${{ steps.setup-node.outputs.cache-hit }}" == "true" ]; then @@ -341,9 +341,9 @@ jobs: echo "⚠️ Node cache miss" >> $GITHUB_STEP_SUMMARY fi - name: Install npm dependencies - run: cd pkg/workflow/js && npm ci + run: cd actions/setup/js && npm ci - name: Run tests - run: cd pkg/workflow/js && npm test + run: cd actions/setup/js && npm test bench: needs: [lint-go, lint-js] # Only run benchmarks on main branch for performance tracking @@ -471,7 +471,7 @@ jobs: with: node-version: "24" cache: npm - cache-dependency-path: pkg/workflow/js/package-lock.json + cache-dependency-path: actions/setup/js/package-lock.json - name: Report Node cache status run: | @@ -482,7 +482,7 @@ jobs: fi - name: Install npm dependencies - run: cd pkg/workflow/js && npm ci + run: cd actions/setup/js && npm ci # JavaScript and JSON formatting checks - name: Lint JavaScript files diff --git a/AGENTS.md b/AGENTS.md index c76d0be84e..9195fab53c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -152,12 +152,13 @@ make build # Automatically runs sync-js-scripts 2. Run `make build` (automatically syncs to pkg/workflow/js/) 3. The synced files in `pkg/workflow/js/` are embedded in the binary via `//go:embed` 4. **Never** edit production files in `pkg/workflow/js/` directly - they are generated -5. Test files (*.test.cjs) remain only in `pkg/workflow/js/` and are not synced +5. Test files (*.test.cjs) are in `actions/setup/js/` alongside source code **Key points:** - `actions/setup/js/*.cjs` = Source of truth (manually edited, production files only) - `pkg/workflow/js/*.cjs` = Generated (copied during build, marked as linguist-generated) -- `pkg/workflow/js/*.test.cjs` = Test files (remain in pkg/workflow/js/, not synced) +- `actions/setup/js/*.test.cjs` = Test files (co-located with source code) +- Test files (*.test.cjs) are not synced between directories - The build process: `actions/setup/js/` → `pkg/workflow/js/` → embedded in binary **Summary of patterns:** diff --git a/Makefile b/Makefile index 9be7728cb6..ad74c41cfe 100644 --- a/Makefile +++ b/Makefile @@ -151,11 +151,11 @@ security-trivy: # Test JavaScript files .PHONY: test-js test-js: build-js - cd pkg/workflow/js && npm run test:js -- --no-file-parallelism + cd actions/setup/js && npm run test:js -- --no-file-parallelism .PHONY: build-js build-js: - cd pkg/workflow/js && npm run typecheck + cd actions/setup/js && npm run typecheck # Bundle JavaScript files with local requires .PHONY: bundle-js @@ -283,7 +283,7 @@ license-report: ## Generate CSV license report deps: check-node-version go mod download go mod tidy - cd pkg/workflow/js && npm ci + cd actions/setup/js && npm ci # Install development tools (including linter) .PHONY: deps-dev @@ -298,7 +298,7 @@ download-github-actions-schema: @curl -s -o pkg/workflow/schemas/github-workflow.json \ "https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/github-workflow.json" @echo "Formatting schema with prettier..." - @cd pkg/workflow/js && npm run format:schema >/dev/null 2>&1 + @cd actions/setup/js && npm run format:schema >/dev/null 2>&1 @echo "✓ Downloaded and formatted GitHub Actions schema to pkg/workflow/schemas/github-workflow.json" # Run linter (full repository scan) @@ -348,15 +348,15 @@ fmt: fmt-go fmt-cjs fmt-json fmt-go: go fmt ./... -# Format JavaScript (.cjs and .js) and JSON files in pkg/workflow/js directory +# Format JavaScript (.cjs and .js) and JSON files in actions/setup/js directory .PHONY: fmt-cjs fmt-cjs: - cd pkg/workflow/js && npm run format:cjs + cd actions/setup/js && npm run format:cjs -# Format JSON files in pkg directory (excluding pkg/workflow/js, which is handled by npm script) +# Format JSON files in pkg directory (excluding actions/setup/js, which is handled by npm script) .PHONY: fmt-json fmt-json: - cd pkg/workflow/js && npm run format:pkg-json + cd actions/setup/js && npm run format:pkg-json # Check formatting .PHONY: fmt-check @@ -366,25 +366,25 @@ fmt-check: exit 1; \ fi -# Check JavaScript (.cjs and .js) and JSON file formatting in pkg/workflow/js directory +# Check JavaScript (.cjs and .js) and JSON file formatting in actions/setup/js directory .PHONY: fmt-check-cjs fmt-check-cjs: - cd pkg/workflow/js && npm run lint:cjs + cd actions/setup/js && npm run lint:cjs -# Check JSON file formatting in pkg directory (excluding pkg/workflow/js, which is handled by npm script) +# Check JSON file formatting in pkg directory (excluding actions/setup/js, which is handled by npm script) .PHONY: fmt-check-json fmt-check-json: - @if ! cd pkg/workflow/js && npm run check:pkg-json 2>&1 | grep -q "All matched files use Prettier code style"; then \ + @if ! cd actions/setup/js && npm run check:pkg-json 2>&1 | grep -q "All matched files use Prettier code style"; then \ echo "JSON files are not formatted. Run 'make fmt-json' to fix."; \ exit 1; \ fi -# Lint JavaScript (.cjs and .js) and JSON files in pkg/workflow/js directory +# Lint JavaScript (.cjs and .js) and JSON files in actions/setup/js directory .PHONY: lint-cjs lint-cjs: fmt-check-cjs @echo "✓ JavaScript formatting validated" -# Lint JSON files in pkg directory (excluding pkg/workflow/js, which is handled by npm script) +# Lint JSON files in pkg directory (excluding actions/setup/js, which is handled by npm script) .PHONY: lint-json lint-json: fmt-check-json @echo "✓ JSON formatting validated" @@ -558,13 +558,13 @@ help: @echo " golint-incremental - Run golangci-lint incrementally (only changed files, requires BASE_REF)" @echo " lint - Run linter" @echo " fmt - Format code" - @echo " fmt-cjs - Format JavaScript (.cjs and .js) and JSON files in pkg/workflow/js" - @echo " fmt-json - Format JSON files in pkg directory (excluding pkg/workflow/js)" + @echo " fmt-cjs - Format JavaScript (.cjs and .js) and JSON files in actions/setup/js" + @echo " fmt-json - Format JSON files in pkg directory (excluding actions/setup/js)" @echo " fmt-check - Check code formatting" - @echo " fmt-check-cjs - Check JavaScript (.cjs) and JSON file formatting in pkg/workflow/js" - @echo " fmt-check-json - Check JSON file formatting in pkg directory (excluding pkg/workflow/js)" - @echo " lint-cjs - Lint JavaScript (.cjs) and JSON files in pkg/workflow/js" - @echo " lint-json - Lint JSON files in pkg directory (excluding pkg/workflow/js)" + @echo " fmt-check-cjs - Check JavaScript (.cjs) and JSON file formatting in actions/setup/js" + @echo " fmt-check-json - Check JSON file formatting in pkg directory (excluding actions/setup/js)" + @echo " lint-cjs - Lint JavaScript (.cjs) and JSON files in actions/setup/js" + @echo " lint-json - Lint JSON files in pkg directory (excluding actions/setup/js)" @echo " lint-errors - Lint error messages for quality compliance" @echo " security-scan - Run all security scans (gosec, govulncheck, trivy)" @echo " security-gosec - Run gosec Go security scanner" diff --git a/pkg/workflow/js/.prettierrc.json b/actions/setup/js/.prettierrc.json similarity index 100% rename from pkg/workflow/js/.prettierrc.json rename to actions/setup/js/.prettierrc.json diff --git a/pkg/workflow/js/add_comment.test.cjs b/actions/setup/js/add_comment.test.cjs similarity index 100% rename from pkg/workflow/js/add_comment.test.cjs rename to actions/setup/js/add_comment.test.cjs diff --git a/pkg/workflow/js/add_copilot_reviewer.test.cjs b/actions/setup/js/add_copilot_reviewer.test.cjs similarity index 100% rename from pkg/workflow/js/add_copilot_reviewer.test.cjs rename to actions/setup/js/add_copilot_reviewer.test.cjs diff --git a/pkg/workflow/js/add_labels.test.cjs b/actions/setup/js/add_labels.test.cjs similarity index 100% rename from pkg/workflow/js/add_labels.test.cjs rename to actions/setup/js/add_labels.test.cjs diff --git a/pkg/workflow/js/add_reaction_and_edit_comment.test.cjs b/actions/setup/js/add_reaction_and_edit_comment.test.cjs similarity index 100% rename from pkg/workflow/js/add_reaction_and_edit_comment.test.cjs rename to actions/setup/js/add_reaction_and_edit_comment.test.cjs diff --git a/pkg/workflow/js/add_reviewer.test.cjs b/actions/setup/js/add_reviewer.test.cjs similarity index 100% rename from pkg/workflow/js/add_reviewer.test.cjs rename to actions/setup/js/add_reviewer.test.cjs diff --git a/pkg/workflow/js/assign_agent_helpers.test.cjs b/actions/setup/js/assign_agent_helpers.test.cjs similarity index 100% rename from pkg/workflow/js/assign_agent_helpers.test.cjs rename to actions/setup/js/assign_agent_helpers.test.cjs diff --git a/pkg/workflow/js/assign_issue.test.cjs b/actions/setup/js/assign_issue.test.cjs similarity index 100% rename from pkg/workflow/js/assign_issue.test.cjs rename to actions/setup/js/assign_issue.test.cjs diff --git a/pkg/workflow/js/assign_milestone.test.cjs b/actions/setup/js/assign_milestone.test.cjs similarity index 100% rename from pkg/workflow/js/assign_milestone.test.cjs rename to actions/setup/js/assign_milestone.test.cjs diff --git a/pkg/workflow/js/check_command_position.test.cjs b/actions/setup/js/check_command_position.test.cjs similarity index 100% rename from pkg/workflow/js/check_command_position.test.cjs rename to actions/setup/js/check_command_position.test.cjs diff --git a/pkg/workflow/js/check_membership.test.cjs b/actions/setup/js/check_membership.test.cjs similarity index 100% rename from pkg/workflow/js/check_membership.test.cjs rename to actions/setup/js/check_membership.test.cjs diff --git a/pkg/workflow/js/check_permissions.cjs b/actions/setup/js/check_permissions.cjs similarity index 100% rename from pkg/workflow/js/check_permissions.cjs rename to actions/setup/js/check_permissions.cjs diff --git a/pkg/workflow/js/check_permissions.test.cjs b/actions/setup/js/check_permissions.test.cjs similarity index 100% rename from pkg/workflow/js/check_permissions.test.cjs rename to actions/setup/js/check_permissions.test.cjs diff --git a/pkg/workflow/js/check_permissions_utils.test.cjs b/actions/setup/js/check_permissions_utils.test.cjs similarity index 100% rename from pkg/workflow/js/check_permissions_utils.test.cjs rename to actions/setup/js/check_permissions_utils.test.cjs diff --git a/pkg/workflow/js/check_skip_if_match.test.cjs b/actions/setup/js/check_skip_if_match.test.cjs similarity index 100% rename from pkg/workflow/js/check_skip_if_match.test.cjs rename to actions/setup/js/check_skip_if_match.test.cjs diff --git a/pkg/workflow/js/check_stop_time.test.cjs b/actions/setup/js/check_stop_time.test.cjs similarity index 100% rename from pkg/workflow/js/check_stop_time.test.cjs rename to actions/setup/js/check_stop_time.test.cjs diff --git a/pkg/workflow/js/check_team_member.cjs b/actions/setup/js/check_team_member.cjs similarity index 100% rename from pkg/workflow/js/check_team_member.cjs rename to actions/setup/js/check_team_member.cjs diff --git a/pkg/workflow/js/check_team_member.test.cjs b/actions/setup/js/check_team_member.test.cjs similarity index 100% rename from pkg/workflow/js/check_team_member.test.cjs rename to actions/setup/js/check_team_member.test.cjs diff --git a/pkg/workflow/js/check_workflow_timestamp.cjs b/actions/setup/js/check_workflow_timestamp.cjs similarity index 100% rename from pkg/workflow/js/check_workflow_timestamp.cjs rename to actions/setup/js/check_workflow_timestamp.cjs diff --git a/pkg/workflow/js/check_workflow_timestamp.test.cjs b/actions/setup/js/check_workflow_timestamp.test.cjs similarity index 100% rename from pkg/workflow/js/check_workflow_timestamp.test.cjs rename to actions/setup/js/check_workflow_timestamp.test.cjs diff --git a/pkg/workflow/js/checkout_pr_branch.test.cjs b/actions/setup/js/checkout_pr_branch.test.cjs similarity index 100% rename from pkg/workflow/js/checkout_pr_branch.test.cjs rename to actions/setup/js/checkout_pr_branch.test.cjs diff --git a/pkg/workflow/js/close_discussion.test.cjs b/actions/setup/js/close_discussion.test.cjs similarity index 100% rename from pkg/workflow/js/close_discussion.test.cjs rename to actions/setup/js/close_discussion.test.cjs diff --git a/pkg/workflow/js/close_entity_helpers.test.cjs b/actions/setup/js/close_entity_helpers.test.cjs similarity index 100% rename from pkg/workflow/js/close_entity_helpers.test.cjs rename to actions/setup/js/close_entity_helpers.test.cjs diff --git a/pkg/workflow/js/close_issue.test.cjs b/actions/setup/js/close_issue.test.cjs similarity index 100% rename from pkg/workflow/js/close_issue.test.cjs rename to actions/setup/js/close_issue.test.cjs diff --git a/pkg/workflow/js/close_older_discussions.test.cjs b/actions/setup/js/close_older_discussions.test.cjs similarity index 100% rename from pkg/workflow/js/close_older_discussions.test.cjs rename to actions/setup/js/close_older_discussions.test.cjs diff --git a/pkg/workflow/js/collect_ndjson_output.test.cjs b/actions/setup/js/collect_ndjson_output.test.cjs similarity index 100% rename from pkg/workflow/js/collect_ndjson_output.test.cjs rename to actions/setup/js/collect_ndjson_output.test.cjs diff --git a/pkg/workflow/js/compute_text.test.cjs b/actions/setup/js/compute_text.test.cjs similarity index 100% rename from pkg/workflow/js/compute_text.test.cjs rename to actions/setup/js/compute_text.test.cjs diff --git a/pkg/workflow/js/create_agent_task.test.cjs b/actions/setup/js/create_agent_task.test.cjs similarity index 100% rename from pkg/workflow/js/create_agent_task.test.cjs rename to actions/setup/js/create_agent_task.test.cjs diff --git a/pkg/workflow/js/create_code_scanning_alert.test.cjs b/actions/setup/js/create_code_scanning_alert.test.cjs similarity index 100% rename from pkg/workflow/js/create_code_scanning_alert.test.cjs rename to actions/setup/js/create_code_scanning_alert.test.cjs diff --git a/pkg/workflow/js/create_discussion.test.cjs b/actions/setup/js/create_discussion.test.cjs similarity index 100% rename from pkg/workflow/js/create_discussion.test.cjs rename to actions/setup/js/create_discussion.test.cjs diff --git a/pkg/workflow/js/create_issue.test.cjs b/actions/setup/js/create_issue.test.cjs similarity index 100% rename from pkg/workflow/js/create_issue.test.cjs rename to actions/setup/js/create_issue.test.cjs diff --git a/pkg/workflow/js/create_pr_review_comment.test.cjs b/actions/setup/js/create_pr_review_comment.test.cjs similarity index 100% rename from pkg/workflow/js/create_pr_review_comment.test.cjs rename to actions/setup/js/create_pr_review_comment.test.cjs diff --git a/pkg/workflow/js/create_pull_request.test.cjs b/actions/setup/js/create_pull_request.test.cjs similarity index 100% rename from pkg/workflow/js/create_pull_request.test.cjs rename to actions/setup/js/create_pull_request.test.cjs diff --git a/pkg/workflow/js/estimate_tokens.test.cjs b/actions/setup/js/estimate_tokens.test.cjs similarity index 100% rename from pkg/workflow/js/estimate_tokens.test.cjs rename to actions/setup/js/estimate_tokens.test.cjs diff --git a/pkg/workflow/js/fuzz_mentions_harness.cjs b/actions/setup/js/fuzz_mentions_harness.cjs similarity index 100% rename from pkg/workflow/js/fuzz_mentions_harness.cjs rename to actions/setup/js/fuzz_mentions_harness.cjs diff --git a/pkg/workflow/js/fuzz_sanitize_incoming_text_harness.cjs b/actions/setup/js/fuzz_sanitize_incoming_text_harness.cjs similarity index 100% rename from pkg/workflow/js/fuzz_sanitize_incoming_text_harness.cjs rename to actions/setup/js/fuzz_sanitize_incoming_text_harness.cjs diff --git a/pkg/workflow/js/fuzz_sanitize_label_harness.cjs b/actions/setup/js/fuzz_sanitize_label_harness.cjs similarity index 100% rename from pkg/workflow/js/fuzz_sanitize_label_harness.cjs rename to actions/setup/js/fuzz_sanitize_label_harness.cjs diff --git a/pkg/workflow/js/fuzz_sanitize_output_harness.cjs b/actions/setup/js/fuzz_sanitize_output_harness.cjs similarity index 100% rename from pkg/workflow/js/fuzz_sanitize_output_harness.cjs rename to actions/setup/js/fuzz_sanitize_output_harness.cjs diff --git a/pkg/workflow/js/generate_compact_schema.test.cjs b/actions/setup/js/generate_compact_schema.test.cjs similarity index 100% rename from pkg/workflow/js/generate_compact_schema.test.cjs rename to actions/setup/js/generate_compact_schema.test.cjs diff --git a/pkg/workflow/js/generate_footer.test.cjs b/actions/setup/js/generate_footer.test.cjs similarity index 100% rename from pkg/workflow/js/generate_footer.test.cjs rename to actions/setup/js/generate_footer.test.cjs diff --git a/pkg/workflow/js/generate_git_patch.test.cjs b/actions/setup/js/generate_git_patch.test.cjs similarity index 100% rename from pkg/workflow/js/generate_git_patch.test.cjs rename to actions/setup/js/generate_git_patch.test.cjs diff --git a/pkg/workflow/js/generate_safe_inputs_config.test.cjs b/actions/setup/js/generate_safe_inputs_config.test.cjs similarity index 100% rename from pkg/workflow/js/generate_safe_inputs_config.test.cjs rename to actions/setup/js/generate_safe_inputs_config.test.cjs diff --git a/pkg/workflow/js/get_base_branch.test.cjs b/actions/setup/js/get_base_branch.test.cjs similarity index 100% rename from pkg/workflow/js/get_base_branch.test.cjs rename to actions/setup/js/get_base_branch.test.cjs diff --git a/pkg/workflow/js/get_current_branch.test.cjs b/actions/setup/js/get_current_branch.test.cjs similarity index 100% rename from pkg/workflow/js/get_current_branch.test.cjs rename to actions/setup/js/get_current_branch.test.cjs diff --git a/pkg/workflow/js/get_repository_url.test.cjs b/actions/setup/js/get_repository_url.test.cjs similarity index 100% rename from pkg/workflow/js/get_repository_url.test.cjs rename to actions/setup/js/get_repository_url.test.cjs diff --git a/pkg/workflow/js/get_tracker_id.test.cjs b/actions/setup/js/get_tracker_id.test.cjs similarity index 100% rename from pkg/workflow/js/get_tracker_id.test.cjs rename to actions/setup/js/get_tracker_id.test.cjs diff --git a/pkg/workflow/js/hide_comment.test.cjs b/actions/setup/js/hide_comment.test.cjs similarity index 100% rename from pkg/workflow/js/hide_comment.test.cjs rename to actions/setup/js/hide_comment.test.cjs diff --git a/pkg/workflow/js/interpolate_prompt.test.cjs b/actions/setup/js/interpolate_prompt.test.cjs similarity index 100% rename from pkg/workflow/js/interpolate_prompt.test.cjs rename to actions/setup/js/interpolate_prompt.test.cjs diff --git a/pkg/workflow/js/interpolate_prompt_additional.test.cjs b/actions/setup/js/interpolate_prompt_additional.test.cjs similarity index 100% rename from pkg/workflow/js/interpolate_prompt_additional.test.cjs rename to actions/setup/js/interpolate_prompt_additional.test.cjs diff --git a/pkg/workflow/js/is_truthy.test.cjs b/actions/setup/js/is_truthy.test.cjs similarity index 100% rename from pkg/workflow/js/is_truthy.test.cjs rename to actions/setup/js/is_truthy.test.cjs diff --git a/pkg/workflow/js/link_sub_issue.test.cjs b/actions/setup/js/link_sub_issue.test.cjs similarity index 100% rename from pkg/workflow/js/link_sub_issue.test.cjs rename to actions/setup/js/link_sub_issue.test.cjs diff --git a/pkg/workflow/js/load_agent_output.test.cjs b/actions/setup/js/load_agent_output.test.cjs similarity index 100% rename from pkg/workflow/js/load_agent_output.test.cjs rename to actions/setup/js/load_agent_output.test.cjs diff --git a/pkg/workflow/js/lock-issue.test.cjs b/actions/setup/js/lock-issue.test.cjs similarity index 100% rename from pkg/workflow/js/lock-issue.test.cjs rename to actions/setup/js/lock-issue.test.cjs diff --git a/actions/setup/js/log_parser_bootstrap.cjs b/actions/setup/js/log_parser_bootstrap.cjs index e0972a8e12..19e63632e7 100644 --- a/actions/setup/js/log_parser_bootstrap.cjs +++ b/actions/setup/js/log_parser_bootstrap.cjs @@ -124,7 +124,7 @@ function runLogParser(options) { model, parserName, }); - + // Add safe outputs preview to step summary let fullMarkdown = copilotCliStyleMarkdown; if (safeOutputsContent) { @@ -133,12 +133,12 @@ function runLogParser(options) { fullMarkdown += "\n" + safeOutputsMarkdown; } } - + core.summary.addRaw(fullMarkdown).write(); } else { // Fallback: just log success message for parsers without log entries core.info(`${parserName} log parsed successfully`); - + // Add safe outputs preview to core.info (fallback path) if (safeOutputsContent) { const safeOutputsPlainText = formatSafeOutputsPreview(safeOutputsContent, { isPlainText: true }); @@ -146,7 +146,7 @@ function runLogParser(options) { core.info(safeOutputsPlainText); } } - + // Write original markdown to step summary if available let fullMarkdown = markdown; if (safeOutputsContent) { diff --git a/pkg/workflow/js/log_parser_bootstrap.test.cjs b/actions/setup/js/log_parser_bootstrap.test.cjs similarity index 100% rename from pkg/workflow/js/log_parser_bootstrap.test.cjs rename to actions/setup/js/log_parser_bootstrap.test.cjs diff --git a/actions/setup/js/log_parser_shared.cjs b/actions/setup/js/log_parser_shared.cjs index f3a0a96dc9..e861f25ddb 100644 --- a/actions/setup/js/log_parser_shared.cjs +++ b/actions/setup/js/log_parser_shared.cjs @@ -1418,7 +1418,7 @@ function formatSafeOutputsPreview(safeOutputsContent, options = {}) { preview.push(""); preview.push("Safe Outputs Preview:"); preview.push(` Total: ${entries.length} ${entries.length === 1 ? "entry" : "entries"}`); - + for (let i = 0; i < entriesToShow.length; i++) { const entry = entriesToShow[i]; preview.push(""); @@ -1448,12 +1448,12 @@ function formatSafeOutputsPreview(safeOutputsContent, options = {}) { const entry = entriesToShow[i]; preview.push(`### ${i + 1}. ${entry.type || "Unknown Type"}`); preview.push(""); - + if (entry.title) { preview.push(`**Title:** ${entry.title}`); preview.push(""); } - + if (entry.body) { const bodyPreview = truncateString(entry.body, 200); preview.push("
"); diff --git a/pkg/workflow/js/log_parser_shared.test.cjs b/actions/setup/js/log_parser_shared.test.cjs similarity index 100% rename from pkg/workflow/js/log_parser_shared.test.cjs rename to actions/setup/js/log_parser_shared.test.cjs diff --git a/pkg/workflow/js/mcp_http_transport.test.cjs b/actions/setup/js/mcp_http_transport.test.cjs similarity index 100% rename from pkg/workflow/js/mcp_http_transport.test.cjs rename to actions/setup/js/mcp_http_transport.test.cjs diff --git a/pkg/workflow/js/mcp_logger.test.cjs b/actions/setup/js/mcp_logger.test.cjs similarity index 100% rename from pkg/workflow/js/mcp_logger.test.cjs rename to actions/setup/js/mcp_logger.test.cjs diff --git a/pkg/workflow/js/mcp_server_core.test.cjs b/actions/setup/js/mcp_server_core.test.cjs similarity index 100% rename from pkg/workflow/js/mcp_server_core.test.cjs rename to actions/setup/js/mcp_server_core.test.cjs diff --git a/pkg/workflow/js/messages.test.cjs b/actions/setup/js/messages.test.cjs similarity index 100% rename from pkg/workflow/js/messages.test.cjs rename to actions/setup/js/messages.test.cjs diff --git a/pkg/workflow/js/missing_tool.test.cjs b/actions/setup/js/missing_tool.test.cjs similarity index 100% rename from pkg/workflow/js/missing_tool.test.cjs rename to actions/setup/js/missing_tool.test.cjs diff --git a/pkg/workflow/js/noop.test.cjs b/actions/setup/js/noop.test.cjs similarity index 100% rename from pkg/workflow/js/noop.test.cjs rename to actions/setup/js/noop.test.cjs diff --git a/pkg/workflow/js/normalize_branch_name.test.cjs b/actions/setup/js/normalize_branch_name.test.cjs similarity index 100% rename from pkg/workflow/js/normalize_branch_name.test.cjs rename to actions/setup/js/normalize_branch_name.test.cjs diff --git a/pkg/workflow/js/notify_comment_error.test.cjs b/actions/setup/js/notify_comment_error.test.cjs similarity index 100% rename from pkg/workflow/js/notify_comment_error.test.cjs rename to actions/setup/js/notify_comment_error.test.cjs diff --git a/actions/setup/js/package-lock.json b/actions/setup/js/package-lock.json new file mode 100644 index 0000000000..9e622979b5 --- /dev/null +++ b/actions/setup/js/package-lock.json @@ -0,0 +1,2178 @@ +{ + "name": "js", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@actions/core": "^1.11.1", + "@actions/exec": "^1.1.1", + "@actions/github": "^6.0.1", + "@actions/github-script": "github:actions/github-script", + "@actions/glob": "^0.5.0", + "@actions/io": "^2.0.0", + "@types/node": "^24.10.1", + "@vitest/coverage-v8": "^4.0.10", + "@vitest/ui": "^4.0.10", + "prettier": "^3.6.2", + "terser": "^5.44.1", + "typescript": "^5.9.3", + "vite": "^7.2.2", + "vitest": "^4.0.10" + } + }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/exec/node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@actions/github": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.1.tgz", + "integrity": "sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.2.2", + "@octokit/plugin-rest-endpoint-methods": "^10.4.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "undici": "^5.28.5" + } + }, + "node_modules/@actions/github-script": { + "version": "7.0.1", + "resolved": "git+ssh://git@github.com/actions/github-script.git#ed597411d8f924073f98dfc5c65a23a2325f34cd", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/core": "^1.10.1", + "@actions/exec": "^1.1.1", + "@actions/github": "^6.0.0", + "@actions/glob": "^0.4.0", + "@actions/io": "^1.1.3", + "@octokit/core": "^5.0.1", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-retry": "^6.0.1", + "@types/node": "^24.1.0" + }, + "engines": { + "node": ">=24" + } + }, + "node_modules/@actions/github-script/node_modules/@actions/glob": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz", + "integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/core": "^1.9.1", + "minimatch": "^3.0.4" + } + }, + "node_modules/@actions/github-script/node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@actions/github-script/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@actions/github-script/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@actions/glob": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.5.0.tgz", + "integrity": "sha512-tST2rjPvJLRZLuT9NMUtyBjvj9Yo0MiJS3ow004slMvm8GFM+Zv9HvMJ7HWzfUyJnGrJvDsYkWBaaG3YKXRtCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/core": "^1.9.1", + "minimatch": "^3.0.4" + } + }, + "node_modules/@actions/glob/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@actions/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", + "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": ["ppc64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["aix"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": ["arm"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["android"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["android"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["android"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["darwin"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["darwin"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["freebsd"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["freebsd"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": ["arm"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": ["ia32"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": ["loong64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": ["mips64el"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": ["ppc64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": ["riscv64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": ["s390x"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["netbsd"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["netbsd"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["openbsd"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["openbsd"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["openharmony"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["sunos"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": ["ia32"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", + "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.1.0.tgz", + "integrity": "sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^13.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/request": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "cpu": ["arm"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["android"] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["android"] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["darwin"] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["darwin"] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["freebsd"] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["freebsd"] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "cpu": ["arm"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "cpu": ["arm"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "cpu": ["loong64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "cpu": ["ppc64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "cpu": ["riscv64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "cpu": ["riscv64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "cpu": ["s390x"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["linux"] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["openharmony"] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "cpu": ["arm64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "cpu": ["ia32"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": ["x64"], + "dev": true, + "license": "MIT", + "optional": true, + "os": ["win32"] + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.10.tgz", + "integrity": "sha512-g+brmtoKa/sAeIohNJnnWhnHtU6GuqqVOSQ4SxDIPcgZWZyhJs5RmF5LpqXs8Kq64lANP+vnbn5JLzhLj/G56g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.0.10", + "ast-v8-to-istanbul": "^0.3.8", + "debug": "^4.4.3", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.1", + "std-env": "^3.10.0", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "4.0.10", + "vitest": "4.0.10" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.10.tgz", + "integrity": "sha512-3QkTX/lK39FBNwARCQRSQr0TP9+ywSdxSX+LgbJ2M1WmveXP72anTbnp2yl5fH+dU6SUmBzNMrDHs80G8G2DZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.10", + "@vitest/utils": "4.0.10", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.10.tgz", + "integrity": "sha512-e2OfdexYkjkg8Hh3L9NVEfbwGXq5IZbDovkf30qW2tOh7Rh9sVtmSr2ztEXOFbymNxS4qjzLXUQIvATvN4B+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.10", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.10.tgz", + "integrity": "sha512-99EQbpa/zuDnvVjthwz5bH9o8iPefoQZ63WV8+bsRJZNw3qQSvSltfut8yu1Jc9mqOYi7pEbsKxYTi/rjaq6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.10.tgz", + "integrity": "sha512-EXU2iSkKvNwtlL8L8doCpkyclw0mc/t4t9SeOnfOFPyqLmQwuceMPA4zJBa6jw0MKsZYbw7kAn+gl7HxrlB8UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.10", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.10.tgz", + "integrity": "sha512-2N4X2ZZl7kZw0qeGdQ41H0KND96L3qX1RgwuCfy6oUsF2ISGD/HpSbmms+CkIOsQmg2kulwfhJ4CI0asnZlvkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.10", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.10.tgz", + "integrity": "sha512-AsY6sVS8OLb96GV5RoG8B6I35GAbNrC49AO+jNRF9YVGb/g9t+hzNm1H6kD0NDp8tt7VJLs6hb7YMkDXqu03iw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/ui": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.10.tgz", + "integrity": "sha512-oWtNM89Np+YsQO3ttT5i1Aer/0xbzQzp66NzuJn/U16bB7MnvSzdLKXgk1kkMLYyKSSzA2ajzqMkYheaE9opuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vitest/utils": "4.0.10", + "fflate": "^0.8.2", + "flatted": "^3.3.3", + "pathe": "^2.0.3", + "sirv": "^3.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "4.0.10" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.10.tgz", + "integrity": "sha512-kOuqWnEwZNtQxMKg3WmPK1vmhZu9WcoX69iwWjVz+jvKTsF1emzsv3eoPcDr6ykA3qP2bsCQE7CwqfNtAVzsmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.10", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz", + "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chai": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", + "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": ["darwin"], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/rollup": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/vite": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.10.tgz", + "integrity": "sha512-2Fqty3MM9CDwOVet/jaQalYlbcjATZwPYGcqpiYQqgQ/dLC7GuHdISKgTYIVF/kaishKxLzleKWWfbSDklyIKg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vitest/expect": "4.0.10", + "@vitest/mocker": "4.0.10", + "@vitest/pretty-format": "4.0.10", + "@vitest/runner": "4.0.10", + "@vitest/snapshot": "4.0.10", + "@vitest/spy": "4.0.10", + "@vitest/utils": "4.0.10", + "debug": "^4.4.3", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.10", + "@vitest/browser-preview": "4.0.10", + "@vitest/browser-webdriverio": "4.0.10", + "@vitest/ui": "4.0.10", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/actions/setup/js/package.json b/actions/setup/js/package.json new file mode 100644 index 0000000000..4e7a0548d6 --- /dev/null +++ b/actions/setup/js/package.json @@ -0,0 +1,31 @@ +{ + "devDependencies": { + "@actions/core": "^1.11.1", + "@actions/exec": "^1.1.1", + "@actions/github": "^6.0.1", + "@actions/github-script": "github:actions/github-script", + "@actions/glob": "^0.5.0", + "@actions/io": "^2.0.0", + "@types/node": "^24.10.1", + "@vitest/coverage-v8": "^4.0.10", + "@vitest/ui": "^4.0.10", + "prettier": "^3.6.2", + "terser": "^5.44.1", + "typescript": "^5.9.3", + "vite": "^7.2.2", + "vitest": "^4.0.10" + }, + "scripts": { + "typecheck": "tsc --noEmit", + "test": "npm run typecheck && vitest run --no-file-parallelism", + "test:js": "vitest run", + "test:js-watch": "vitest", + "test:js-coverage": "vitest run --coverage", + "format:terser": "find . -name '*.cjs' -type f -not -path './node_modules/*' | while read file; do if ! grep -qE '^(await |/// { @@ -115,14 +115,14 @@ async function main() { // ** matches any path segment (including /) // * matches any characters except / let regexPattern = pattern - .replace(/\\/g, "\\\\") // Escape backslashes - .replace(/\./g, "\\.") // Escape dots + .replace(/\\/g, "\\\\") // Escape backslashes + .replace(/\./g, "\\.") // Escape dots .replace(/\*\*/g, "") // Temporarily replace ** - .replace(/\*/g, "[^/]*") // Single * matches non-slash chars + .replace(/\*/g, "[^/]*") // Single * matches non-slash chars .replace(//g, ".*"); // ** matches everything including / return new RegExp(`^${regexPattern}$`); }); - + if (!patterns.some(pattern => pattern.test(relativeFilePath))) { core.error(`File does not match allowed patterns: ${relativeFilePath}`); core.error(`Allowed patterns: ${fileGlobFilter}`); @@ -130,23 +130,23 @@ async function main() { throw new Error("File pattern validation failed"); } } - + // Validate file size if (stats.size > maxFileSize) { core.error(`File exceeds size limit: ${relativeFilePath} (${stats.size} bytes > ${maxFileSize} bytes)`); core.setFailed("File size validation failed"); throw new Error("File size validation failed"); } - - filesToCopy.push({ - relativePath: relativeFilePath, - source: fullPath, - size: stats.size + + filesToCopy.push({ + relativePath: relativeFilePath, + source: fullPath, + size: stats.size, }); } } } - + try { scanDirectory(sourceMemoryPath); } catch (error) { @@ -171,11 +171,11 @@ async function main() { for (const file of filesToCopy) { const destFilePath = path.join(destMemoryPath, file.relativePath); const destDir = path.dirname(destFilePath); - + try { // Ensure destination directory exists fs.mkdirSync(destDir, { recursive: true }); - + // Copy file fs.copyFileSync(file.source, destFilePath); core.info(`Copied: ${file.relativePath} (${file.size} bytes)`); diff --git a/pkg/workflow/js/push_repo_memory.test.cjs b/actions/setup/js/push_repo_memory.test.cjs similarity index 100% rename from pkg/workflow/js/push_repo_memory.test.cjs rename to actions/setup/js/push_repo_memory.test.cjs diff --git a/pkg/workflow/js/push_to_pull_request_branch.test.cjs b/actions/setup/js/push_to_pull_request_branch.test.cjs similarity index 100% rename from pkg/workflow/js/push_to_pull_request_branch.test.cjs rename to actions/setup/js/push_to_pull_request_branch.test.cjs diff --git a/pkg/workflow/js/read_buffer.test.cjs b/actions/setup/js/read_buffer.test.cjs similarity index 100% rename from pkg/workflow/js/read_buffer.test.cjs rename to actions/setup/js/read_buffer.test.cjs diff --git a/pkg/workflow/js/redact_secrets.test.cjs b/actions/setup/js/redact_secrets.test.cjs similarity index 100% rename from pkg/workflow/js/redact_secrets.test.cjs rename to actions/setup/js/redact_secrets.test.cjs diff --git a/pkg/workflow/js/remove_duplicate_title.test.cjs b/actions/setup/js/remove_duplicate_title.test.cjs similarity index 100% rename from pkg/workflow/js/remove_duplicate_title.test.cjs rename to actions/setup/js/remove_duplicate_title.test.cjs diff --git a/pkg/workflow/js/render_template.cjs b/actions/setup/js/render_template.cjs similarity index 100% rename from pkg/workflow/js/render_template.cjs rename to actions/setup/js/render_template.cjs diff --git a/pkg/workflow/js/render_template.test.cjs b/actions/setup/js/render_template.test.cjs similarity index 100% rename from pkg/workflow/js/render_template.test.cjs rename to actions/setup/js/render_template.test.cjs diff --git a/pkg/workflow/js/repo_helpers.test.cjs b/actions/setup/js/repo_helpers.test.cjs similarity index 100% rename from pkg/workflow/js/repo_helpers.test.cjs rename to actions/setup/js/repo_helpers.test.cjs diff --git a/pkg/workflow/js/resolve_mentions.test.cjs b/actions/setup/js/resolve_mentions.test.cjs similarity index 100% rename from pkg/workflow/js/resolve_mentions.test.cjs rename to actions/setup/js/resolve_mentions.test.cjs diff --git a/pkg/workflow/js/runtime_import.test.cjs b/actions/setup/js/runtime_import.test.cjs similarity index 100% rename from pkg/workflow/js/runtime_import.test.cjs rename to actions/setup/js/runtime_import.test.cjs diff --git a/pkg/workflow/js/safe_inputs_bootstrap.test.cjs b/actions/setup/js/safe_inputs_bootstrap.test.cjs similarity index 100% rename from pkg/workflow/js/safe_inputs_bootstrap.test.cjs rename to actions/setup/js/safe_inputs_bootstrap.test.cjs diff --git a/pkg/workflow/js/safe_inputs_config_loader.test.cjs b/actions/setup/js/safe_inputs_config_loader.test.cjs similarity index 100% rename from pkg/workflow/js/safe_inputs_config_loader.test.cjs rename to actions/setup/js/safe_inputs_config_loader.test.cjs diff --git a/pkg/workflow/js/safe_inputs_mcp_server.test.cjs b/actions/setup/js/safe_inputs_mcp_server.test.cjs similarity index 100% rename from pkg/workflow/js/safe_inputs_mcp_server.test.cjs rename to actions/setup/js/safe_inputs_mcp_server.test.cjs diff --git a/pkg/workflow/js/safe_inputs_mcp_server_http.test.cjs b/actions/setup/js/safe_inputs_mcp_server_http.test.cjs similarity index 100% rename from pkg/workflow/js/safe_inputs_mcp_server_http.test.cjs rename to actions/setup/js/safe_inputs_mcp_server_http.test.cjs diff --git a/pkg/workflow/js/safe_inputs_tool_factory.test.cjs b/actions/setup/js/safe_inputs_tool_factory.test.cjs similarity index 100% rename from pkg/workflow/js/safe_inputs_tool_factory.test.cjs rename to actions/setup/js/safe_inputs_tool_factory.test.cjs diff --git a/pkg/workflow/js/safe_inputs_validation.test.cjs b/actions/setup/js/safe_inputs_validation.test.cjs similarity index 100% rename from pkg/workflow/js/safe_inputs_validation.test.cjs rename to actions/setup/js/safe_inputs_validation.test.cjs diff --git a/pkg/workflow/js/safe_output_helpers.test.cjs b/actions/setup/js/safe_output_helpers.test.cjs similarity index 100% rename from pkg/workflow/js/safe_output_helpers.test.cjs rename to actions/setup/js/safe_output_helpers.test.cjs diff --git a/pkg/workflow/js/safe_output_processor.test.cjs b/actions/setup/js/safe_output_processor.test.cjs similarity index 100% rename from pkg/workflow/js/safe_output_processor.test.cjs rename to actions/setup/js/safe_output_processor.test.cjs diff --git a/pkg/workflow/js/safe_output_type_validator.test.cjs b/actions/setup/js/safe_output_type_validator.test.cjs similarity index 100% rename from pkg/workflow/js/safe_output_type_validator.test.cjs rename to actions/setup/js/safe_output_type_validator.test.cjs diff --git a/pkg/workflow/js/safe_output_validator.test.cjs b/actions/setup/js/safe_output_validator.test.cjs similarity index 100% rename from pkg/workflow/js/safe_output_validator.test.cjs rename to actions/setup/js/safe_output_validator.test.cjs diff --git a/pkg/workflow/js/safe_outputs_append.test.cjs b/actions/setup/js/safe_outputs_append.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_append.test.cjs rename to actions/setup/js/safe_outputs_append.test.cjs diff --git a/pkg/workflow/js/safe_outputs_bootstrap.test.cjs b/actions/setup/js/safe_outputs_bootstrap.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_bootstrap.test.cjs rename to actions/setup/js/safe_outputs_bootstrap.test.cjs diff --git a/pkg/workflow/js/safe_outputs_branch_detection.test.cjs b/actions/setup/js/safe_outputs_branch_detection.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_branch_detection.test.cjs rename to actions/setup/js/safe_outputs_branch_detection.test.cjs diff --git a/pkg/workflow/js/safe_outputs_config.test.cjs b/actions/setup/js/safe_outputs_config.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_config.test.cjs rename to actions/setup/js/safe_outputs_config.test.cjs diff --git a/pkg/workflow/js/safe_outputs_handlers.test.cjs b/actions/setup/js/safe_outputs_handlers.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_handlers.test.cjs rename to actions/setup/js/safe_outputs_handlers.test.cjs diff --git a/pkg/workflow/js/safe_outputs_mcp_client.cjs b/actions/setup/js/safe_outputs_mcp_client.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_mcp_client.cjs rename to actions/setup/js/safe_outputs_mcp_client.cjs diff --git a/pkg/workflow/js/safe_outputs_mcp_client.test.cjs b/actions/setup/js/safe_outputs_mcp_client.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_mcp_client.test.cjs rename to actions/setup/js/safe_outputs_mcp_client.test.cjs diff --git a/pkg/workflow/js/safe_outputs_mcp_large_content.test.cjs b/actions/setup/js/safe_outputs_mcp_large_content.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_mcp_large_content.test.cjs rename to actions/setup/js/safe_outputs_mcp_large_content.test.cjs diff --git a/pkg/workflow/js/safe_outputs_mcp_server.test.cjs b/actions/setup/js/safe_outputs_mcp_server.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_mcp_server.test.cjs rename to actions/setup/js/safe_outputs_mcp_server.test.cjs diff --git a/pkg/workflow/js/safe_outputs_mcp_server_defaults.test.cjs b/actions/setup/js/safe_outputs_mcp_server_defaults.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_mcp_server_defaults.test.cjs rename to actions/setup/js/safe_outputs_mcp_server_defaults.test.cjs diff --git a/pkg/workflow/js/safe_outputs_mcp_server_patch.test.cjs b/actions/setup/js/safe_outputs_mcp_server_patch.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_mcp_server_patch.test.cjs rename to actions/setup/js/safe_outputs_mcp_server_patch.test.cjs diff --git a/actions/setup/js/safe_outputs_tools.json b/actions/setup/js/safe_outputs_tools.json new file mode 100644 index 0000000000..1fd7cfbc2e --- /dev/null +++ b/actions/setup/js/safe_outputs_tools.json @@ -0,0 +1,634 @@ +[ + { + "name": "create_issue", + "description": "Create a new GitHub issue for tracking bugs, feature requests, or tasks. Use this for actionable work items that need assignment, labeling, and status tracking. For reports, announcements, or status updates that don't require task tracking, use create_discussion instead.", + "inputSchema": { + "type": "object", + "required": ["title", "body"], + "properties": { + "title": { + "type": "string", + "description": "Concise issue title summarizing the bug, feature, or task. The title appears as the main heading, so keep it brief and descriptive." + }, + "body": { + "type": "string", + "description": "Detailed issue description in Markdown. Do NOT repeat the title as a heading since it already appears as the issue's h1. Include context, reproduction steps, or acceptance criteria as appropriate." + }, + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Labels to categorize the issue (e.g., 'bug', 'enhancement'). Labels must exist in the repository." + }, + "parent": { + "type": ["number", "string"], + "description": "Parent issue number for creating sub-issues. Can be a real issue number (e.g., 42) or a temporary_id (e.g., 'aw_abc123def456') from a previously created issue in the same workflow run." + }, + "temporary_id": { + "type": "string", + "description": "Unique temporary identifier for referencing this issue before it's created. Format: 'aw_' followed by 12 hex characters (e.g., 'aw_abc123def456'). Use '#aw_ID' in body text to reference other issues by their temporary_id; these are replaced with actual issue numbers after creation." + } + }, + "additionalProperties": false + } + }, + { + "name": "create_agent_task", + "description": "Create a GitHub Copilot agent task to delegate coding work. Use this when you need another Copilot agent to implement code changes, fix bugs, or complete development tasks. The task becomes a new issue that triggers the Copilot coding agent. For non-coding tasks or manual work items, use create_issue instead.", + "inputSchema": { + "type": "object", + "required": ["body"], + "properties": { + "body": { + "type": "string", + "description": "Clear, detailed task description for the Copilot agent. Include specific files to modify, expected behavior, acceptance criteria, and any constraints. The description should be actionable and self-contained." + } + }, + "additionalProperties": false + } + }, + { + "name": "create_discussion", + "description": "Create a GitHub discussion for announcements, Q&A, reports, status updates, or community conversations. Use this for content that benefits from threaded replies, doesn't require task tracking, or serves as documentation. For actionable work items that need assignment and status tracking, use create_issue instead.", + "inputSchema": { + "type": "object", + "required": ["title", "body"], + "properties": { + "title": { + "type": "string", + "description": "Concise discussion title summarizing the topic. The title appears as the main heading, so keep it brief and descriptive." + }, + "body": { + "type": "string", + "description": "Discussion content in Markdown. Do NOT repeat the title as a heading since it already appears as the discussion's h1. Include all relevant context, findings, or questions." + }, + "category": { + "type": "string", + "description": "Discussion category by name (e.g., 'General'), slug (e.g., 'general'), or ID. If omitted, uses the first available category. Category must exist in the repository." + } + }, + "additionalProperties": false + } + }, + { + "name": "update_discussion", + "description": "Update an existing GitHub discussion's title or body. Use this to modify discussion properties after creation. Only the fields you specify will be updated; other fields remain unchanged.", + "inputSchema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "New discussion title to replace the existing title." + }, + "body": { + "type": "string", + "description": "New discussion body to replace the existing content. Use Markdown formatting." + }, + "discussion_number": { + "type": ["number", "string"], + "description": "Discussion number to update. Required when the workflow target is '*' (any discussion)." + } + }, + "additionalProperties": false + } + }, + { + "name": "close_discussion", + "description": "Close a GitHub discussion with a resolution comment and optional reason. Use this to mark discussions as resolved, answered, or no longer needed. The closing comment should explain why the discussion is being closed.", + "inputSchema": { + "type": "object", + "required": ["body"], + "properties": { + "body": { + "type": "string", + "description": "Closing comment explaining why the discussion is being closed and summarizing any resolution or conclusion." + }, + "reason": { + "type": "string", + "enum": ["RESOLVED", "DUPLICATE", "OUTDATED", "ANSWERED"], + "description": "Resolution reason: RESOLVED (issue addressed), DUPLICATE (discussed elsewhere), OUTDATED (no longer relevant), or ANSWERED (question answered)." + }, + "discussion_number": { + "type": ["number", "string"], + "description": "Discussion number to close. If omitted, closes the discussion that triggered this workflow (requires a discussion event trigger)." + } + }, + "additionalProperties": false + } + }, + { + "name": "close_issue", + "description": "Close a GitHub issue with a closing comment. Use this when work is complete, the issue is no longer relevant, or it's a duplicate. The closing comment should explain the resolution or reason for closing.", + "inputSchema": { + "type": "object", + "required": ["body"], + "properties": { + "body": { + "type": "string", + "description": "Closing comment explaining why the issue is being closed and summarizing any resolution, workaround, or conclusion." + }, + "issue_number": { + "type": ["number", "string"], + "description": "Issue number to close. If omitted, closes the issue that triggered this workflow (requires an issue event trigger)." + } + }, + "additionalProperties": false + } + }, + { + "name": "close_pull_request", + "description": "Close a pull request WITHOUT merging, adding a closing comment. Use this for PRs that should be abandoned, superseded, or closed for other reasons. The closing comment should explain why the PR is being closed. This does NOT merge the changes.", + "inputSchema": { + "type": "object", + "required": ["body"], + "properties": { + "body": { + "type": "string", + "description": "Closing comment explaining why the PR is being closed without merging (e.g., superseded by another PR, no longer needed, approach rejected)." + }, + "pull_request_number": { + "type": ["number", "string"], + "description": "Pull request number to close. If omitted, closes the PR that triggered this workflow (requires a pull_request event trigger)." + } + }, + "additionalProperties": false + } + }, + { + "name": "add_comment", + "description": "Add a comment to an existing GitHub issue, pull request, or discussion. Use this to provide feedback, answer questions, or add information to an existing conversation. For creating new items, use create_issue, create_discussion, or create_pull_request instead.", + "inputSchema": { + "type": "object", + "required": ["body", "item_number"], + "properties": { + "body": { + "type": "string", + "description": "Comment content in Markdown. Provide helpful, relevant information that adds value to the conversation." + }, + "item_number": { + "type": "number", + "description": "The issue, pull request, or discussion number to comment on. Must be a valid existing item in the repository." + } + }, + "additionalProperties": false + } + }, + { + "name": "create_pull_request", + "description": "Create a new GitHub pull request to propose code changes. Use this after making file edits to submit them for review and merging. The PR will be created from the current branch with your committed changes. For code review comments on an existing PR, use create_pull_request_review_comment instead.", + "inputSchema": { + "type": "object", + "required": ["title", "body"], + "properties": { + "title": { + "type": "string", + "description": "Concise PR title describing the changes. Follow repository conventions (e.g., conventional commits). The title appears as the main heading." + }, + "body": { + "type": "string", + "description": "Detailed PR description in Markdown. Include what changes were made, why, testing notes, and any breaking changes. Do NOT repeat the title as a heading." + }, + "branch": { + "type": "string", + "description": "Source branch name containing the changes. If omitted, uses the current working branch." + }, + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Labels to categorize the PR (e.g., 'enhancement', 'bugfix'). Labels must exist in the repository." + } + }, + "additionalProperties": false + } + }, + { + "name": "create_pull_request_review_comment", + "description": "Create a review comment on a specific line of code in a pull request. Use this for inline code review feedback, suggestions, or questions about specific code changes. For general PR comments not tied to specific lines, use add_comment instead.", + "inputSchema": { + "type": "object", + "required": ["path", "line", "body"], + "properties": { + "path": { + "type": "string", + "description": "File path relative to the repository root (e.g., 'src/auth/login.js'). Must be a file that was changed in the PR." + }, + "line": { + "type": ["number", "string"], + "description": "Line number for the comment. For single-line comments, this is the target line. For multi-line comments, this is the ending line." + }, + "body": { + "type": "string", + "description": "Review comment content in Markdown. Provide specific, actionable feedback about the code at this location." + }, + "start_line": { + "type": ["number", "string"], + "description": "Starting line number for multi-line comments. When set, the comment spans from start_line to line. Omit for single-line comments." + }, + "side": { + "type": "string", + "enum": ["LEFT", "RIGHT"], + "description": "Side of the diff to comment on: RIGHT for the new version (additions), LEFT for the old version (deletions). Defaults to RIGHT." + } + }, + "additionalProperties": false + } + }, + { + "name": "create_code_scanning_alert", + "description": "Create a code scanning alert for security vulnerabilities, code quality issues, or other findings. Alerts appear in the repository's Security tab and integrate with GitHub's security features. Use this for automated security analysis results.", + "inputSchema": { + "type": "object", + "required": ["file", "line", "severity", "message"], + "properties": { + "file": { + "type": "string", + "description": "File path relative to the repository root where the issue was found (e.g., 'src/auth/password.js')." + }, + "line": { + "type": ["number", "string"], + "description": "Line number where the issue was found in the file." + }, + "severity": { + "type": "string", + "enum": ["error", "warning", "info", "note"], + "description": "Alert severity level: 'error' (critical security issues), 'warning' (potential problems), 'info' (informational), or 'note' (minor observations)." + }, + "message": { + "type": "string", + "description": "Clear description of the security issue or finding. Include what's wrong and ideally how to fix it." + }, + "column": { + "type": ["number", "string"], + "description": "Column number for more precise location of the issue within the line." + }, + "ruleIdSuffix": { + "type": "string", + "description": "Suffix to append to the rule ID for categorizing different types of findings (e.g., 'sql-injection', 'xss')." + } + }, + "additionalProperties": false + } + }, + { + "name": "add_labels", + "description": "Add labels to an existing GitHub issue or pull request for categorization and filtering. Labels must already exist in the repository. For creating new issues with labels, use create_issue with the labels property instead.", + "inputSchema": { + "type": "object", + "required": ["labels"], + "properties": { + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Label names to add (e.g., ['bug', 'priority-high']). Labels must exist in the repository." + }, + "item_number": { + "type": "number", + "description": "Issue or PR number to add labels to. If omitted, adds labels to the item that triggered this workflow." + } + }, + "additionalProperties": false + } + }, + { + "name": "add_reviewer", + "description": "Add reviewers to a GitHub pull request. Reviewers receive notifications and can approve or request changes. Use 'copilot' as a reviewer name to request the Copilot PR review bot.", + "inputSchema": { + "type": "object", + "required": ["reviewers"], + "properties": { + "reviewers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "GitHub usernames to add as reviewers (e.g., ['octocat', 'copilot']). Users must have access to the repository." + }, + "pull_request_number": { + "type": ["number", "string"], + "description": "Pull request number to add reviewers to. If omitted, adds reviewers to the PR that triggered this workflow." + } + }, + "additionalProperties": false + } + }, + { + "name": "assign_milestone", + "description": "Assign an issue to a milestone for release planning and progress tracking. Milestones must exist in the repository before assignment.", + "inputSchema": { + "type": "object", + "required": ["issue_number", "milestone_number"], + "properties": { + "issue_number": { + "type": ["number", "string"], + "description": "Issue number to assign to the milestone." + }, + "milestone_number": { + "type": ["number", "string"], + "description": "Milestone number (not title) to assign the issue to. Find milestone numbers in the repository's Milestones page." + } + }, + "additionalProperties": false + } + }, + { + "name": "assign_to_agent", + "description": "Assign the GitHub Copilot coding agent to work on an issue. The agent will analyze the issue and attempt to implement a solution, creating a pull request when complete. Use this to delegate coding tasks to Copilot.", + "inputSchema": { + "type": "object", + "required": ["issue_number"], + "properties": { + "issue_number": { + "type": ["number", "string"], + "description": "Issue number to assign the Copilot agent to. The issue should contain clear, actionable requirements." + }, + "agent": { + "type": "string", + "description": "Agent identifier to assign. Defaults to 'copilot' (the Copilot coding agent) if not specified." + } + }, + "additionalProperties": false + } + }, + { + "name": "assign_to_user", + "description": "Assign one or more GitHub users to an issue. Use this to delegate work to specific team members. Users must have access to the repository.", + "inputSchema": { + "type": "object", + "required": ["issue_number"], + "properties": { + "issue_number": { + "type": ["number", "string"], + "description": "Issue number to assign users to. If omitted, assigns to the issue that triggered this workflow." + }, + "assignees": { + "type": "array", + "items": { + "type": "string" + }, + "description": "GitHub usernames to assign to the issue (e.g., ['octocat', 'mona']). Users must have access to the repository." + }, + "assignee": { + "type": "string", + "description": "Single GitHub username to assign. Use 'assignees' array for multiple users." + } + }, + "additionalProperties": false + } + }, + { + "name": "update_issue", + "description": "Update an existing GitHub issue's status, title, or body. Use this to modify issue properties after creation. Only the fields you specify will be updated; other fields remain unchanged.", + "inputSchema": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": ["open", "closed"], + "description": "New issue status: 'open' to reopen a closed issue, 'closed' to close an open issue." + }, + "title": { + "type": "string", + "description": "New issue title to replace the existing title." + }, + "body": { + "type": "string", + "description": "New issue body to replace the existing content. Use Markdown formatting." + }, + "issue_number": { + "type": ["number", "string"], + "description": "Issue number to update. Required when the workflow target is '*' (any issue)." + } + }, + "additionalProperties": false + } + }, + { + "name": "update_pull_request", + "description": "Update an existing GitHub pull request's title or body. Supports replacing, appending to, or prepending content to the body. Title is always replaced. Only the fields you specify will be updated; other fields remain unchanged.", + "inputSchema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "New pull request title to replace the existing title." + }, + "body": { + "type": "string", + "description": "Pull request body content in Markdown. For 'replace', this becomes the entire body. For 'append'/'prepend', this is added with a separator." + }, + "operation": { + "type": "string", + "enum": ["replace", "append", "prepend"], + "description": "How to update the PR body: 'replace' (default - completely overwrite), 'append' (add to end with separator), or 'prepend' (add to start with separator). Title is always replaced." + }, + "pull_request_number": { + "type": ["number", "string"], + "description": "Pull request number to update. Required when the workflow target is '*' (any PR)." + } + }, + "additionalProperties": false + } + }, + { + "name": "push_to_pull_request_branch", + "description": "Push committed changes to a pull request's branch. Use this to add follow-up commits to an existing PR, such as addressing review feedback or fixing issues. Changes must be committed locally before calling this tool.", + "inputSchema": { + "type": "object", + "required": ["message"], + "properties": { + "branch": { + "type": "string", + "description": "Branch name to push changes from. If omitted, uses the current working branch. Only specify if you need to push from a different branch." + }, + "message": { + "type": "string", + "description": "Commit message describing the changes. Follow repository commit message conventions (e.g., conventional commits)." + }, + "pull_request_number": { + "type": ["number", "string"], + "description": "Pull request number to push changes to. Required when the workflow target is '*' (any PR)." + } + }, + "additionalProperties": false + } + }, + { + "name": "upload_asset", + "description": "Upload a file as a URL-addressable asset that can be referenced in issues, PRs, or comments. The file is stored on an orphaned git branch and returns a permanent URL. Use this for images, diagrams, or other files that need to be embedded in GitHub content.", + "inputSchema": { + "type": "object", + "required": ["path"], + "properties": { + "path": { + "type": "string", + "description": "Absolute file path to upload (e.g., '/tmp/chart.png'). Must be under the workspace or /tmp directory. By default, only image files (.png, .jpg, .jpeg) are allowed; other file types require workflow configuration." + } + }, + "additionalProperties": false + } + }, + { + "name": "update_release", + "description": "Update a GitHub release description by replacing, appending to, or prepending to the existing content. Use this to add release notes, changelogs, or additional information to an existing release.", + "inputSchema": { + "type": "object", + "required": ["tag", "operation", "body"], + "properties": { + "tag": { + "type": "string", + "description": "Release tag name (e.g., 'v1.0.0'). REQUIRED - must be provided explicitly as the tag cannot always be inferred from event context." + }, + "operation": { + "type": "string", + "enum": ["replace", "append", "prepend"], + "description": "How to update the release body: 'replace' (completely overwrite), 'append' (add to end with separator), or 'prepend' (add to start with separator)." + }, + "body": { + "type": "string", + "description": "Release body content in Markdown. For 'replace', this becomes the entire release body. For 'append'/'prepend', this is added with a separator." + } + }, + "additionalProperties": false + } + }, + { + "name": "missing_tool", + "description": "Report that a tool or capability needed to complete the task is not available. Use this when you cannot accomplish what was requested because the required functionality is missing or access is restricted.", + "inputSchema": { + "type": "object", + "required": ["tool", "reason"], + "properties": { + "tool": { + "type": "string", + "description": "Name or description of the missing tool or capability (max 128 characters). Be specific about what functionality is needed." + }, + "reason": { + "type": "string", + "description": "Explanation of why this tool is needed to complete the task (max 256 characters)." + }, + "alternatives": { + "type": "string", + "description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters)." + } + }, + "additionalProperties": false + } + }, + { + "name": "noop", + "description": "Log a transparency message when no significant actions are needed. Use this to confirm workflow completion and provide visibility when analysis is complete but no changes or outputs are required (e.g., 'No issues found', 'All checks passed'). This ensures the workflow produces human-visible output even when no other actions are taken.", + "inputSchema": { + "type": "object", + "required": ["message"], + "properties": { + "message": { + "type": "string", + "description": "Status or completion message to log. Should explain what was analyzed and the outcome (e.g., 'Code review complete - no issues found', 'Analysis complete - all tests passing')." + } + }, + "additionalProperties": false + } + }, + { + "name": "link_sub_issue", + "description": "Link an issue as a sub-issue of a parent issue. Use this to establish parent-child relationships between issues for better organization and tracking of related work items.", + "inputSchema": { + "type": "object", + "required": ["parent_issue_number", "sub_issue_number"], + "properties": { + "parent_issue_number": { + "type": ["number", "string"], + "description": "The parent issue number to link the sub-issue to." + }, + "sub_issue_number": { + "type": ["number", "string"], + "description": "The issue number to link as a sub-issue of the parent." + } + }, + "additionalProperties": false + } + }, + { + "name": "hide_comment", + "description": "Hide a comment on a GitHub issue, pull request, or discussion. This collapses the comment and marks it as spam, abuse, off-topic, outdated, or resolved. Use this for inappropriate, off-topic, or outdated comments. The comment_id must be a GraphQL node ID (string like 'IC_kwDOABCD123456'), not a numeric REST API comment ID.", + "inputSchema": { + "type": "object", + "required": ["comment_id"], + "properties": { + "comment_id": { + "type": "string", + "description": "GraphQL node ID of the comment to hide (e.g., 'IC_kwDOABCD123456'). This is the GraphQL node ID, not the numeric comment ID from REST API. Can be obtained from GraphQL queries or comment API responses." + }, + "reason": { + "type": "string", + "enum": ["SPAM", "ABUSE", "OFF_TOPIC", "OUTDATED", "RESOLVED"], + "description": "Optional reason for hiding the comment. Defaults to SPAM if not provided. Valid values: SPAM (spam content), ABUSE (abusive/harassment content), OFF_TOPIC (not relevant to discussion), OUTDATED (no longer applicable), RESOLVED (issue/question has been resolved)." + } + }, + "additionalProperties": false + } + }, + { + "name": "update_project", + "description": "Add or update items in GitHub Projects v2 boards. Can add issues/PRs to a project and update custom field values. Requires the project URL, content type (issue or pull_request), and content number. Use campaign_id to group related items.", + "inputSchema": { + "type": "object", + "properties": { + "project": { + "type": "string", + "pattern": "^https://github\\.com/(orgs|users)/[^/]+/projects/\\d+$", + "description": "Full GitHub project URL (e.g., 'https://github.com/orgs/myorg/projects/42' or 'https://github.com/users/username/projects/5'). Project names or numbers alone are NOT accepted." + }, + "content_type": { + "type": "string", + "enum": ["issue", "pull_request", "draft_issue"], + "description": "Type of item to add to the project. Use 'issue' or 'pull_request' to add existing repo content, or 'draft_issue' to create a draft item inside the project." + }, + "content_number": { + "type": "number", + "description": "Issue or pull request number to add to the project (e.g., 123 for issue #123). Required when content_type is 'issue' or 'pull_request'." + }, + "draft_title": { + "type": "string", + "description": "Title for a Projects v2 draft issue. Required when content_type is 'draft_issue'." + }, + "draft_body": { + "type": "string", + "description": "Optional body for a Projects v2 draft issue (markdown). Only used when content_type is 'draft_issue'." + }, + "fields": { + "type": "object", + "description": "Custom field values to set on the project item (e.g., {'Status': 'In Progress', 'Priority': 'High'}). Field names must match custom fields defined in the project." + }, + "campaign_id": { + "type": "string", + "description": "Campaign identifier to group related project items. Used to track items created by the same campaign or workflow run." + }, + "create_if_missing": { + "type": "boolean", + "description": "Whether to create the project if it doesn't exist. Defaults to false. Requires projects:write permission when true." + } + }, + "oneOf": [ + { + "required": ["project", "content_type", "content_number"], + "properties": { + "content_type": { "enum": ["issue", "pull_request"] } + } + }, + { + "required": ["project", "content_type", "draft_title"], + "properties": { + "content_type": { "const": "draft_issue" } + } + } + ], + "additionalProperties": false + } + } +] diff --git a/pkg/workflow/js/safe_outputs_tools_loader.test.cjs b/actions/setup/js/safe_outputs_tools_loader.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_tools_loader.test.cjs rename to actions/setup/js/safe_outputs_tools_loader.test.cjs diff --git a/pkg/workflow/js/safe_outputs_type_validation.test.cjs b/actions/setup/js/safe_outputs_type_validation.test.cjs similarity index 100% rename from pkg/workflow/js/safe_outputs_type_validation.test.cjs rename to actions/setup/js/safe_outputs_type_validation.test.cjs diff --git a/pkg/workflow/js/sanitize_content.test.cjs b/actions/setup/js/sanitize_content.test.cjs similarity index 100% rename from pkg/workflow/js/sanitize_content.test.cjs rename to actions/setup/js/sanitize_content.test.cjs diff --git a/pkg/workflow/js/sanitize_label_content.test.cjs b/actions/setup/js/sanitize_label_content.test.cjs similarity index 100% rename from pkg/workflow/js/sanitize_label_content.test.cjs rename to actions/setup/js/sanitize_label_content.test.cjs diff --git a/pkg/workflow/js/sanitize_output.test.cjs b/actions/setup/js/sanitize_output.test.cjs similarity index 100% rename from pkg/workflow/js/sanitize_output.test.cjs rename to actions/setup/js/sanitize_output.test.cjs diff --git a/pkg/workflow/js/sanitize_workflow_name.test.cjs b/actions/setup/js/sanitize_workflow_name.test.cjs similarity index 100% rename from pkg/workflow/js/sanitize_workflow_name.test.cjs rename to actions/setup/js/sanitize_workflow_name.test.cjs diff --git a/pkg/workflow/js/staged_preview.test.cjs b/actions/setup/js/staged_preview.test.cjs similarity index 100% rename from pkg/workflow/js/staged_preview.test.cjs rename to actions/setup/js/staged_preview.test.cjs diff --git a/pkg/workflow/js/substitute_placeholders.test.cjs b/actions/setup/js/substitute_placeholders.test.cjs similarity index 100% rename from pkg/workflow/js/substitute_placeholders.test.cjs rename to actions/setup/js/substitute_placeholders.test.cjs diff --git a/pkg/workflow/js/temporary_id.test.cjs b/actions/setup/js/temporary_id.test.cjs similarity index 100% rename from pkg/workflow/js/temporary_id.test.cjs rename to actions/setup/js/temporary_id.test.cjs diff --git a/actions/setup/js/test-60MCzS/test.log b/actions/setup/js/test-60MCzS/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-60MCzS/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-7j9GSH/test.log b/actions/setup/js/test-7j9GSH/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-7j9GSH/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-9AX7fX/test.log b/actions/setup/js/test-9AX7fX/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-9AX7fX/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-GNKId1/test.log b/actions/setup/js/test-GNKId1/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-GNKId1/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-IRzCio/test.log b/actions/setup/js/test-IRzCio/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-IRzCio/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-IXfc6q/test.log b/actions/setup/js/test-IXfc6q/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-IXfc6q/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-SYvzgU/test.log b/actions/setup/js/test-SYvzgU/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-SYvzgU/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-WRSOIK/test.log b/actions/setup/js/test-WRSOIK/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-WRSOIK/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/pkg/workflow/js/test-data/FINDINGS.md b/actions/setup/js/test-data/FINDINGS.md similarity index 100% rename from pkg/workflow/js/test-data/FINDINGS.md rename to actions/setup/js/test-data/FINDINGS.md diff --git a/pkg/workflow/js/test-data/README.md b/actions/setup/js/test-data/README.md similarity index 100% rename from pkg/workflow/js/test-data/README.md rename to actions/setup/js/test-data/README.md diff --git a/pkg/workflow/js/test-data/copilot-transformed-run-18296543175.md b/actions/setup/js/test-data/copilot-transformed-run-18296543175.md similarity index 100% rename from pkg/workflow/js/test-data/copilot-transformed-run-18296543175.md rename to actions/setup/js/test-data/copilot-transformed-run-18296543175.md diff --git a/pkg/workflow/js/test-data/copilot-transformed-run-18296916269.md b/actions/setup/js/test-data/copilot-transformed-run-18296916269.md similarity index 100% rename from pkg/workflow/js/test-data/copilot-transformed-run-18296916269.md rename to actions/setup/js/test-data/copilot-transformed-run-18296916269.md diff --git a/actions/setup/js/test-i7RCld/test.log b/actions/setup/js/test-i7RCld/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-i7RCld/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-lq2w64/test.log b/actions/setup/js/test-lq2w64/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-lq2w64/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/actions/setup/js/test-noI9xR/test.log b/actions/setup/js/test-noI9xR/test.log new file mode 100644 index 0000000000..6b584e8ece --- /dev/null +++ b/actions/setup/js/test-noI9xR/test.log @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/pkg/workflow/js/tsconfig.build.json b/actions/setup/js/tsconfig.build.json similarity index 100% rename from pkg/workflow/js/tsconfig.build.json rename to actions/setup/js/tsconfig.build.json diff --git a/pkg/workflow/js/tsconfig.json b/actions/setup/js/tsconfig.json similarity index 100% rename from pkg/workflow/js/tsconfig.json rename to actions/setup/js/tsconfig.json diff --git a/pkg/workflow/js/types/github-script.d.ts b/actions/setup/js/types/github-script.d.ts similarity index 100% rename from pkg/workflow/js/types/github-script.d.ts rename to actions/setup/js/types/github-script.d.ts diff --git a/pkg/workflow/js/types/safe-outputs-config.d.ts b/actions/setup/js/types/safe-outputs-config.d.ts similarity index 100% rename from pkg/workflow/js/types/safe-outputs-config.d.ts rename to actions/setup/js/types/safe-outputs-config.d.ts diff --git a/pkg/workflow/js/types/safe-outputs.d.ts b/actions/setup/js/types/safe-outputs.d.ts similarity index 100% rename from pkg/workflow/js/types/safe-outputs.d.ts rename to actions/setup/js/types/safe-outputs.d.ts diff --git a/pkg/workflow/js/unlock-issue.test.cjs b/actions/setup/js/unlock-issue.test.cjs similarity index 100% rename from pkg/workflow/js/unlock-issue.test.cjs rename to actions/setup/js/unlock-issue.test.cjs diff --git a/pkg/workflow/js/update_activation_comment.test.cjs b/actions/setup/js/update_activation_comment.test.cjs similarity index 100% rename from pkg/workflow/js/update_activation_comment.test.cjs rename to actions/setup/js/update_activation_comment.test.cjs diff --git a/pkg/workflow/js/update_context_helpers.test.cjs b/actions/setup/js/update_context_helpers.test.cjs similarity index 100% rename from pkg/workflow/js/update_context_helpers.test.cjs rename to actions/setup/js/update_context_helpers.test.cjs diff --git a/pkg/workflow/js/update_discussion.test.cjs b/actions/setup/js/update_discussion.test.cjs similarity index 100% rename from pkg/workflow/js/update_discussion.test.cjs rename to actions/setup/js/update_discussion.test.cjs diff --git a/pkg/workflow/js/update_issue.test.cjs b/actions/setup/js/update_issue.test.cjs similarity index 100% rename from pkg/workflow/js/update_issue.test.cjs rename to actions/setup/js/update_issue.test.cjs diff --git a/pkg/workflow/js/update_pr_description_helpers.test.cjs b/actions/setup/js/update_pr_description_helpers.test.cjs similarity index 100% rename from pkg/workflow/js/update_pr_description_helpers.test.cjs rename to actions/setup/js/update_pr_description_helpers.test.cjs diff --git a/pkg/workflow/js/update_project.test.cjs b/actions/setup/js/update_project.test.cjs similarity index 100% rename from pkg/workflow/js/update_project.test.cjs rename to actions/setup/js/update_project.test.cjs diff --git a/pkg/workflow/js/update_pull_request.test.cjs b/actions/setup/js/update_pull_request.test.cjs similarity index 100% rename from pkg/workflow/js/update_pull_request.test.cjs rename to actions/setup/js/update_pull_request.test.cjs diff --git a/pkg/workflow/js/update_release.test.cjs b/actions/setup/js/update_release.test.cjs similarity index 100% rename from pkg/workflow/js/update_release.test.cjs rename to actions/setup/js/update_release.test.cjs diff --git a/pkg/workflow/js/update_runner.test.cjs b/actions/setup/js/update_runner.test.cjs similarity index 100% rename from pkg/workflow/js/update_runner.test.cjs rename to actions/setup/js/update_runner.test.cjs diff --git a/pkg/workflow/js/upload_assets.test.cjs b/actions/setup/js/upload_assets.test.cjs similarity index 100% rename from pkg/workflow/js/upload_assets.test.cjs rename to actions/setup/js/upload_assets.test.cjs diff --git a/pkg/workflow/js/validate_errors.test.cjs b/actions/setup/js/validate_errors.test.cjs similarity index 100% rename from pkg/workflow/js/validate_errors.test.cjs rename to actions/setup/js/validate_errors.test.cjs diff --git a/pkg/workflow/js/vitest.config.mjs b/actions/setup/js/vitest.config.mjs similarity index 100% rename from pkg/workflow/js/vitest.config.mjs rename to actions/setup/js/vitest.config.mjs diff --git a/pkg/workflow/js/write_large_content_to_file.test.cjs b/actions/setup/js/write_large_content_to_file.test.cjs similarity index 100% rename from pkg/workflow/js/write_large_content_to_file.test.cjs rename to actions/setup/js/write_large_content_to_file.test.cjs diff --git a/pkg/workflow/js/setup_globals.cjs b/pkg/workflow/js/setup_globals.cjs deleted file mode 100644 index e3a6994957..0000000000 --- a/pkg/workflow/js/setup_globals.cjs +++ /dev/null @@ -1,28 +0,0 @@ -// @ts-check -/// - -/** - * setup_globals.cjs - * Helper function to store GitHub Actions builtin objects in the global scope - * This allows required modules to access these objects without needing to pass them as parameters - */ - -/** - * Stores GitHub Actions builtin objects (core, github, context, exec, io) in the global scope - * This must be called before requiring any script that depends on these globals - * - * @param {typeof core} coreModule - The @actions/core module - * @param {typeof github} githubModule - The @actions/github module - * @param {typeof context} contextModule - The GitHub context object - * @param {typeof exec} execModule - The @actions/exec module - * @param {typeof io} ioModule - The @actions/io module - */ -function setupGlobals(coreModule, githubModule, contextModule, execModule, ioModule) { - global.core = coreModule; - global.github = githubModule; - global.context = contextModule; - global.exec = execModule; - global.io = ioModule; -} - -module.exports = { setupGlobals }; diff --git a/pkg/workflow/sandbox.go b/pkg/workflow/sandbox.go index 4d2866954e..da55779c06 100644 --- a/pkg/workflow/sandbox.go +++ b/pkg/workflow/sandbox.go @@ -43,8 +43,8 @@ const ( // Legacy format: "default"|"sandbox-runtime" or { type, config } type SandboxConfig struct { // New fields - Agent *AgentSandboxConfig `yaml:"agent,omitempty"` // Agent sandbox configuration - MCP *MCPGatewayRuntimeConfig `yaml:"mcp,omitempty"` // MCP gateway configuration + Agent *AgentSandboxConfig `yaml:"agent,omitempty"` // Agent sandbox configuration + MCP *MCPGatewayRuntimeConfig `yaml:"mcp,omitempty"` // MCP gateway configuration // Legacy fields (for backward compatibility) Type SandboxType `yaml:"type,omitempty"` // Sandbox type: "default" or "sandbox-runtime" diff --git a/pkg/workflow/schemas/github-workflow.json b/pkg/workflow/schemas/github-workflow.json index 30fb84ff3f..160824c1de 100644 --- a/pkg/workflow/schemas/github-workflow.json +++ b/pkg/workflow/schemas/github-workflow.json @@ -983,9 +983,19 @@ "$ref": "#/definitions/types", "items": { "type": "string", - "enum": ["created", "rerequested", "completed", "requested_action"] + "enum": [ + "created", + "rerequested", + "completed", + "requested_action" + ] }, - "default": ["created", "rerequested", "completed", "requested_action"] + "default": [ + "created", + "rerequested", + "completed", + "requested_action" + ] } } }, @@ -1033,9 +1043,37 @@ "$ref": "#/definitions/types", "items": { "type": "string", - "enum": ["created", "edited", "deleted", "transferred", "pinned", "unpinned", "labeled", "unlabeled", "locked", "unlocked", "category_changed", "answered", "unanswered"] + "enum": [ + "created", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "category_changed", + "answered", + "unanswered" + ] }, - "default": ["created", "edited", "deleted", "transferred", "pinned", "unpinned", "labeled", "unlabeled", "locked", "unlocked", "category_changed", "answered", "unanswered"] + "default": [ + "created", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "category_changed", + "answered", + "unanswered" + ] } } }, @@ -1088,9 +1126,43 @@ "$ref": "#/definitions/types", "items": { "type": "string", - "enum": ["opened", "edited", "deleted", "transferred", "pinned", "unpinned", "closed", "reopened", "assigned", "unassigned", "labeled", "unlabeled", "locked", "unlocked", "milestoned", "demilestoned"] + "enum": [ + "opened", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "closed", + "reopened", + "assigned", + "unassigned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "milestoned", + "demilestoned" + ] }, - "default": ["opened", "edited", "deleted", "transferred", "pinned", "unpinned", "closed", "reopened", "assigned", "unassigned", "labeled", "unlabeled", "locked", "unlocked", "milestoned", "demilestoned"] + "default": [ + "opened", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "closed", + "reopened", + "assigned", + "unassigned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "milestoned", + "demilestoned" + ] } } }, @@ -1135,7 +1207,13 @@ "type": "string", "enum": ["created", "closed", "opened", "edited", "deleted"] }, - "default": ["created", "closed", "opened", "edited", "deleted"] + "default": [ + "created", + "closed", + "opened", + "edited", + "deleted" + ] } } }, @@ -1153,9 +1231,23 @@ "$ref": "#/definitions/types", "items": { "type": "string", - "enum": ["created", "updated", "closed", "reopened", "edited", "deleted"] + "enum": [ + "created", + "updated", + "closed", + "reopened", + "edited", + "deleted" + ] }, - "default": ["created", "updated", "closed", "reopened", "edited", "deleted"] + "default": [ + "created", + "updated", + "closed", + "reopened", + "edited", + "deleted" + ] } } }, @@ -1168,9 +1260,21 @@ "$ref": "#/definitions/types", "items": { "type": "string", - "enum": ["created", "moved", "converted", "edited", "deleted"] + "enum": [ + "created", + "moved", + "converted", + "edited", + "deleted" + ] }, - "default": ["created", "moved", "converted", "edited", "deleted"] + "default": [ + "created", + "moved", + "converted", + "edited", + "deleted" + ] } } }, @@ -1454,9 +1558,25 @@ "$ref": "#/definitions/types", "items": { "type": "string", - "enum": ["published", "unpublished", "created", "edited", "deleted", "prereleased", "released"] + "enum": [ + "published", + "unpublished", + "created", + "edited", + "deleted", + "prereleased", + "released" + ] }, - "default": ["published", "unpublished", "created", "edited", "deleted", "prereleased", "released"] + "default": [ + "published", + "unpublished", + "created", + "edited", + "deleted", + "prereleased", + "released" + ] } } },