eslint-plugin-copilot 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5316 -0
- package/LICENSE +21 -0
- package/README.md +192 -0
- package/dist/_internal/copilot-config-references.d.ts +34 -0
- package/dist/_internal/copilot-config-references.d.ts.map +1 -0
- package/dist/_internal/copilot-config-references.js +55 -0
- package/dist/_internal/copilot-config-references.js.map +1 -0
- package/dist/_internal/copilot-customization-names.d.ts +21 -0
- package/dist/_internal/copilot-customization-names.d.ts.map +1 -0
- package/dist/_internal/copilot-customization-names.js +56 -0
- package/dist/_internal/copilot-customization-names.js.map +1 -0
- package/dist/_internal/copilot-file-kind.d.ts +19 -0
- package/dist/_internal/copilot-file-kind.d.ts.map +1 -0
- package/dist/_internal/copilot-file-kind.js +111 -0
- package/dist/_internal/copilot-file-kind.js.map +1 -0
- package/dist/_internal/create-copilot-rule.d.ts +39 -0
- package/dist/_internal/create-copilot-rule.d.ts.map +1 -0
- package/dist/_internal/create-copilot-rule.js +56 -0
- package/dist/_internal/create-copilot-rule.js.map +1 -0
- package/dist/_internal/customization-body.d.ts +6 -0
- package/dist/_internal/customization-body.d.ts.map +1 -0
- package/dist/_internal/customization-body.js +15 -0
- package/dist/_internal/customization-body.js.map +1 -0
- package/dist/_internal/duplicate-names.d.ts +12 -0
- package/dist/_internal/duplicate-names.d.ts.map +1 -0
- package/dist/_internal/duplicate-names.js +24 -0
- package/dist/_internal/duplicate-names.js.map +1 -0
- package/dist/_internal/file-system.d.ts +21 -0
- package/dist/_internal/file-system.d.ts.map +1 -0
- package/dist/_internal/file-system.js +86 -0
- package/dist/_internal/file-system.js.map +1 -0
- package/dist/_internal/frontmatter.d.ts +37 -0
- package/dist/_internal/frontmatter.d.ts.map +1 -0
- package/dist/_internal/frontmatter.js +398 -0
- package/dist/_internal/frontmatter.js.map +1 -0
- package/dist/_internal/markdown-links.d.ts +21 -0
- package/dist/_internal/markdown-links.d.ts.map +1 -0
- package/dist/_internal/markdown-links.js +81 -0
- package/dist/_internal/markdown-links.js.map +1 -0
- package/dist/_internal/markdown-rule.d.ts +13 -0
- package/dist/_internal/markdown-rule.d.ts.map +1 -0
- package/dist/_internal/markdown-rule.js +19 -0
- package/dist/_internal/markdown-rule.js.map +1 -0
- package/dist/_internal/repository-hooks-json.d.ts +55 -0
- package/dist/_internal/repository-hooks-json.d.ts.map +1 -0
- package/dist/_internal/repository-hooks-json.js +80 -0
- package/dist/_internal/repository-hooks-json.js.map +1 -0
- package/dist/_internal/rule-catalog.d.ts +20 -0
- package/dist/_internal/rule-catalog.d.ts.map +1 -0
- package/dist/_internal/rule-catalog.js +97 -0
- package/dist/_internal/rule-catalog.js.map +1 -0
- package/dist/_internal/rule-docs-url.d.ts +9 -0
- package/dist/_internal/rule-docs-url.d.ts.map +1 -0
- package/dist/_internal/rule-docs-url.js +9 -0
- package/dist/_internal/rule-docs-url.js.map +1 -0
- package/dist/_internal/rules-registry.d.ts +83 -0
- package/dist/_internal/rules-registry.d.ts.map +1 -0
- package/dist/_internal/rules-registry.js +145 -0
- package/dist/_internal/rules-registry.js.map +1 -0
- package/dist/_internal/skill-files.d.ts +8 -0
- package/dist/_internal/skill-files.d.ts.map +1 -0
- package/dist/_internal/skill-files.js +18 -0
- package/dist/_internal/skill-files.js.map +1 -0
- package/dist/plugin.cjs +5312 -0
- package/dist/plugin.cjs.map +7 -0
- package/dist/plugin.d.cts +34 -0
- package/dist/plugin.d.ts +34 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +142 -0
- package/dist/plugin.js.map +1 -0
- package/dist/rules/no-blank-customization-body.d.ts +4 -0
- package/dist/rules/no-blank-customization-body.d.ts.map +1 -0
- package/dist/rules/no-blank-customization-body.js +49 -0
- package/dist/rules/no-blank-customization-body.js.map +1 -0
- package/dist/rules/no-blank-repository-instructions.d.ts +4 -0
- package/dist/rules/no-blank-repository-instructions.d.ts.map +1 -0
- package/dist/rules/no-blank-repository-instructions.js +49 -0
- package/dist/rules/no-blank-repository-instructions.js.map +1 -0
- package/dist/rules/no-blank-skill-body.d.ts +4 -0
- package/dist/rules/no-blank-skill-body.d.ts.map +1 -0
- package/dist/rules/no-blank-skill-body.js +48 -0
- package/dist/rules/no-blank-skill-body.js.map +1 -0
- package/dist/rules/no-deprecated-agent-infer.d.ts +4 -0
- package/dist/rules/no-deprecated-agent-infer.d.ts.map +1 -0
- package/dist/rules/no-deprecated-agent-infer.js +48 -0
- package/dist/rules/no-deprecated-agent-infer.js.map +1 -0
- package/dist/rules/no-duplicate-agent-names.d.ts +4 -0
- package/dist/rules/no-duplicate-agent-names.d.ts.map +1 -0
- package/dist/rules/no-duplicate-agent-names.js +72 -0
- package/dist/rules/no-duplicate-agent-names.js.map +1 -0
- package/dist/rules/no-duplicate-prompt-names.d.ts +4 -0
- package/dist/rules/no-duplicate-prompt-names.d.ts.map +1 -0
- package/dist/rules/no-duplicate-prompt-names.js +72 -0
- package/dist/rules/no-duplicate-prompt-names.js.map +1 -0
- package/dist/rules/no-duplicate-skill-names.d.ts +4 -0
- package/dist/rules/no-duplicate-skill-names.d.ts.map +1 -0
- package/dist/rules/no-duplicate-skill-names.js +74 -0
- package/dist/rules/no-duplicate-skill-names.js.map +1 -0
- package/dist/rules/no-duplicate-slash-command-names.d.ts +4 -0
- package/dist/rules/no-duplicate-slash-command-names.d.ts.map +1 -0
- package/dist/rules/no-duplicate-slash-command-names.js +82 -0
- package/dist/rules/no-duplicate-slash-command-names.js.map +1 -0
- package/dist/rules/no-empty-repository-hook-arrays.d.ts +4 -0
- package/dist/rules/no-empty-repository-hook-arrays.d.ts.map +1 -0
- package/dist/rules/no-empty-repository-hook-arrays.js +49 -0
- package/dist/rules/no-empty-repository-hook-arrays.js.map +1 -0
- package/dist/rules/no-legacy-chatmode-files.d.ts +4 -0
- package/dist/rules/no-legacy-chatmode-files.d.ts.map +1 -0
- package/dist/rules/no-legacy-chatmode-files.js +42 -0
- package/dist/rules/no-legacy-chatmode-files.js.map +1 -0
- package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts +4 -0
- package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts.map +1 -0
- package/dist/rules/prefer-custom-instructions-under-code-review-limit.js +52 -0
- package/dist/rules/prefer-custom-instructions-under-code-review-limit.js.map +1 -0
- package/dist/rules/prefer-fast-repository-hooks.d.ts +4 -0
- package/dist/rules/prefer-fast-repository-hooks.d.ts.map +1 -0
- package/dist/rules/prefer-fast-repository-hooks.js +58 -0
- package/dist/rules/prefer-fast-repository-hooks.js.map +1 -0
- package/dist/rules/prefer-qualified-tools.d.ts +4 -0
- package/dist/rules/prefer-qualified-tools.d.ts.map +1 -0
- package/dist/rules/prefer-qualified-tools.js +56 -0
- package/dist/rules/prefer-qualified-tools.js.map +1 -0
- package/dist/rules/require-agent-tool-for-subagents.d.ts +4 -0
- package/dist/rules/require-agent-tool-for-subagents.d.ts.map +1 -0
- package/dist/rules/require-agent-tool-for-subagents.js +64 -0
- package/dist/rules/require-agent-tool-for-subagents.js.map +1 -0
- package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts +4 -0
- package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts.map +1 -0
- package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js +50 -0
- package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js.map +1 -0
- package/dist/rules/require-chatmode-file-metadata.d.ts +4 -0
- package/dist/rules/require-chatmode-file-metadata.d.ts.map +1 -0
- package/dist/rules/require-chatmode-file-metadata.js +59 -0
- package/dist/rules/require-chatmode-file-metadata.js.map +1 -0
- package/dist/rules/require-existing-agent-hook-cwd.d.ts +4 -0
- package/dist/rules/require-existing-agent-hook-cwd.d.ts.map +1 -0
- package/dist/rules/require-existing-agent-hook-cwd.js +64 -0
- package/dist/rules/require-existing-agent-hook-cwd.js.map +1 -0
- package/dist/rules/require-existing-agent-mcp-servers.d.ts +4 -0
- package/dist/rules/require-existing-agent-mcp-servers.d.ts.map +1 -0
- package/dist/rules/require-existing-agent-mcp-servers.js +58 -0
- package/dist/rules/require-existing-agent-mcp-servers.js.map +1 -0
- package/dist/rules/require-existing-relative-agent-links.d.ts +4 -0
- package/dist/rules/require-existing-relative-agent-links.d.ts.map +1 -0
- package/dist/rules/require-existing-relative-agent-links.js +61 -0
- package/dist/rules/require-existing-relative-agent-links.js.map +1 -0
- package/dist/rules/require-existing-relative-instructions-links.d.ts +4 -0
- package/dist/rules/require-existing-relative-instructions-links.d.ts.map +1 -0
- package/dist/rules/require-existing-relative-instructions-links.js +61 -0
- package/dist/rules/require-existing-relative-instructions-links.js.map +1 -0
- package/dist/rules/require-existing-relative-prompt-links.d.ts +4 -0
- package/dist/rules/require-existing-relative-prompt-links.d.ts.map +1 -0
- package/dist/rules/require-existing-relative-prompt-links.js +61 -0
- package/dist/rules/require-existing-relative-prompt-links.js.map +1 -0
- package/dist/rules/require-existing-relative-skill-links.d.ts +4 -0
- package/dist/rules/require-existing-relative-skill-links.d.ts.map +1 -0
- package/dist/rules/require-existing-relative-skill-links.js +61 -0
- package/dist/rules/require-existing-relative-skill-links.js.map +1 -0
- package/dist/rules/require-existing-repository-hook-cwd.d.ts +4 -0
- package/dist/rules/require-existing-repository-hook-cwd.d.ts.map +1 -0
- package/dist/rules/require-existing-repository-hook-cwd.js +65 -0
- package/dist/rules/require-existing-repository-hook-cwd.js.map +1 -0
- package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts +4 -0
- package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts.map +1 -0
- package/dist/rules/require-github-copilot-target-for-mcp-servers.js +63 -0
- package/dist/rules/require-github-copilot-target-for-mcp-servers.js.map +1 -0
- package/dist/rules/require-instructions-apply-to.d.ts +4 -0
- package/dist/rules/require-instructions-apply-to.d.ts.map +1 -0
- package/dist/rules/require-instructions-apply-to.js +60 -0
- package/dist/rules/require-instructions-apply-to.js.map +1 -0
- package/dist/rules/require-json-agent-mcp-servers.d.ts +4 -0
- package/dist/rules/require-json-agent-mcp-servers.d.ts.map +1 -0
- package/dist/rules/require-json-agent-mcp-servers.js +58 -0
- package/dist/rules/require-json-agent-mcp-servers.js.map +1 -0
- package/dist/rules/require-prompt-file-metadata.d.ts +4 -0
- package/dist/rules/require-prompt-file-metadata.d.ts.map +1 -0
- package/dist/rules/require-prompt-file-metadata.js +104 -0
- package/dist/rules/require-prompt-file-metadata.js.map +1 -0
- package/dist/rules/require-qualified-agent-handoff-models.d.ts +4 -0
- package/dist/rules/require-qualified-agent-handoff-models.d.ts.map +1 -0
- package/dist/rules/require-qualified-agent-handoff-models.js +78 -0
- package/dist/rules/require-qualified-agent-handoff-models.js.map +1 -0
- package/dist/rules/require-relative-agent-hook-cwd.d.ts +4 -0
- package/dist/rules/require-relative-agent-hook-cwd.d.ts.map +1 -0
- package/dist/rules/require-relative-agent-hook-cwd.js +70 -0
- package/dist/rules/require-relative-agent-hook-cwd.js.map +1 -0
- package/dist/rules/require-relative-agent-links.d.ts +4 -0
- package/dist/rules/require-relative-agent-links.d.ts.map +1 -0
- package/dist/rules/require-relative-agent-links.js +58 -0
- package/dist/rules/require-relative-agent-links.js.map +1 -0
- package/dist/rules/require-relative-instructions-links.d.ts +4 -0
- package/dist/rules/require-relative-instructions-links.d.ts.map +1 -0
- package/dist/rules/require-relative-instructions-links.js +58 -0
- package/dist/rules/require-relative-instructions-links.js.map +1 -0
- package/dist/rules/require-relative-prompt-links.d.ts +4 -0
- package/dist/rules/require-relative-prompt-links.d.ts.map +1 -0
- package/dist/rules/require-relative-prompt-links.js +82 -0
- package/dist/rules/require-relative-prompt-links.js.map +1 -0
- package/dist/rules/require-relative-repository-hook-cwd.d.ts +4 -0
- package/dist/rules/require-relative-repository-hook-cwd.d.ts.map +1 -0
- package/dist/rules/require-relative-repository-hook-cwd.js +63 -0
- package/dist/rules/require-relative-repository-hook-cwd.js.map +1 -0
- package/dist/rules/require-relative-skill-links.d.ts +4 -0
- package/dist/rules/require-relative-skill-links.d.ts.map +1 -0
- package/dist/rules/require-relative-skill-links.js +58 -0
- package/dist/rules/require-relative-skill-links.js.map +1 -0
- package/dist/rules/require-repository-hook-arrays.d.ts +4 -0
- package/dist/rules/require-repository-hook-arrays.d.ts.map +1 -0
- package/dist/rules/require-repository-hook-arrays.js +54 -0
- package/dist/rules/require-repository-hook-arrays.js.map +1 -0
- package/dist/rules/require-repository-hook-command-shell.d.ts +4 -0
- package/dist/rules/require-repository-hook-command-shell.d.ts.map +1 -0
- package/dist/rules/require-repository-hook-command-shell.js +57 -0
- package/dist/rules/require-repository-hook-command-shell.js.map +1 -0
- package/dist/rules/require-repository-hooks-object.d.ts +4 -0
- package/dist/rules/require-repository-hooks-object.d.ts.map +1 -0
- package/dist/rules/require-repository-hooks-object.js +50 -0
- package/dist/rules/require-repository-hooks-object.js.map +1 -0
- package/dist/rules/require-repository-instructions-file.d.ts +4 -0
- package/dist/rules/require-repository-instructions-file.d.ts.map +1 -0
- package/dist/rules/require-repository-instructions-file.js +50 -0
- package/dist/rules/require-repository-instructions-file.js.map +1 -0
- package/dist/rules/require-skill-file-location.d.ts +4 -0
- package/dist/rules/require-skill-file-location.d.ts.map +1 -0
- package/dist/rules/require-skill-file-location.js +46 -0
- package/dist/rules/require-skill-file-location.js.map +1 -0
- package/dist/rules/require-skill-file-metadata.d.ts +4 -0
- package/dist/rules/require-skill-file-metadata.d.ts.map +1 -0
- package/dist/rules/require-skill-file-metadata.js +60 -0
- package/dist/rules/require-skill-file-metadata.js.map +1 -0
- package/dist/rules/require-skill-md-filename.d.ts +4 -0
- package/dist/rules/require-skill-md-filename.d.ts.map +1 -0
- package/dist/rules/require-skill-md-filename.js +55 -0
- package/dist/rules/require-skill-md-filename.js.map +1 -0
- package/dist/rules/require-skill-name-match-directory.d.ts +4 -0
- package/dist/rules/require-skill-name-match-directory.d.ts.map +1 -0
- package/dist/rules/require-skill-name-match-directory.js +59 -0
- package/dist/rules/require-skill-name-match-directory.js.map +1 -0
- package/dist/rules/require-string-repository-hook-env-values.d.ts +4 -0
- package/dist/rules/require-string-repository-hook-env-values.d.ts.map +1 -0
- package/dist/rules/require-string-repository-hook-env-values.js +59 -0
- package/dist/rules/require-string-repository-hook-env-values.js.map +1 -0
- package/dist/rules/require-valid-agent-argument-hint.d.ts +4 -0
- package/dist/rules/require-valid-agent-argument-hint.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-argument-hint.js +51 -0
- package/dist/rules/require-valid-agent-argument-hint.js.map +1 -0
- package/dist/rules/require-valid-agent-handoff-send.d.ts +4 -0
- package/dist/rules/require-valid-agent-handoff-send.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-handoff-send.js +67 -0
- package/dist/rules/require-valid-agent-handoff-send.js.map +1 -0
- package/dist/rules/require-valid-agent-handoffs.d.ts +4 -0
- package/dist/rules/require-valid-agent-handoffs.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-handoffs.js +78 -0
- package/dist/rules/require-valid-agent-handoffs.js.map +1 -0
- package/dist/rules/require-valid-agent-hook-events.d.ts +4 -0
- package/dist/rules/require-valid-agent-hook-events.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-hook-events.js +68 -0
- package/dist/rules/require-valid-agent-hook-events.js.map +1 -0
- package/dist/rules/require-valid-agent-hook-timeouts.d.ts +4 -0
- package/dist/rules/require-valid-agent-hook-timeouts.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-hook-timeouts.js +83 -0
- package/dist/rules/require-valid-agent-hook-timeouts.js.map +1 -0
- package/dist/rules/require-valid-agent-hooks.d.ts +4 -0
- package/dist/rules/require-valid-agent-hooks.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-hooks.js +86 -0
- package/dist/rules/require-valid-agent-hooks.js.map +1 -0
- package/dist/rules/require-valid-agent-invocation-controls.d.ts +4 -0
- package/dist/rules/require-valid-agent-invocation-controls.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-invocation-controls.js +71 -0
- package/dist/rules/require-valid-agent-invocation-controls.js.map +1 -0
- package/dist/rules/require-valid-agent-mcp-servers.d.ts +4 -0
- package/dist/rules/require-valid-agent-mcp-servers.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-mcp-servers.js +64 -0
- package/dist/rules/require-valid-agent-mcp-servers.js.map +1 -0
- package/dist/rules/require-valid-agent-model.d.ts +4 -0
- package/dist/rules/require-valid-agent-model.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-model.js +64 -0
- package/dist/rules/require-valid-agent-model.js.map +1 -0
- package/dist/rules/require-valid-agent-name.d.ts +4 -0
- package/dist/rules/require-valid-agent-name.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-name.js +51 -0
- package/dist/rules/require-valid-agent-name.js.map +1 -0
- package/dist/rules/require-valid-agent-subagents.d.ts +4 -0
- package/dist/rules/require-valid-agent-subagents.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-subagents.js +79 -0
- package/dist/rules/require-valid-agent-subagents.js.map +1 -0
- package/dist/rules/require-valid-agent-target.d.ts +4 -0
- package/dist/rules/require-valid-agent-target.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-target.js +62 -0
- package/dist/rules/require-valid-agent-target.js.map +1 -0
- package/dist/rules/require-valid-agent-tools.d.ts +4 -0
- package/dist/rules/require-valid-agent-tools.d.ts.map +1 -0
- package/dist/rules/require-valid-agent-tools.js +64 -0
- package/dist/rules/require-valid-agent-tools.js.map +1 -0
- package/dist/rules/require-valid-instructions-apply-to-globs.d.ts +4 -0
- package/dist/rules/require-valid-instructions-apply-to-globs.d.ts.map +1 -0
- package/dist/rules/require-valid-instructions-apply-to-globs.js +79 -0
- package/dist/rules/require-valid-instructions-apply-to-globs.js.map +1 -0
- package/dist/rules/require-valid-prompt-argument-hint.d.ts +4 -0
- package/dist/rules/require-valid-prompt-argument-hint.d.ts.map +1 -0
- package/dist/rules/require-valid-prompt-argument-hint.js +52 -0
- package/dist/rules/require-valid-prompt-argument-hint.js.map +1 -0
- package/dist/rules/require-valid-prompt-model.d.ts +4 -0
- package/dist/rules/require-valid-prompt-model.d.ts.map +1 -0
- package/dist/rules/require-valid-prompt-model.js +77 -0
- package/dist/rules/require-valid-prompt-model.js.map +1 -0
- package/dist/rules/require-valid-prompt-name.d.ts +4 -0
- package/dist/rules/require-valid-prompt-name.d.ts.map +1 -0
- package/dist/rules/require-valid-prompt-name.js +51 -0
- package/dist/rules/require-valid-prompt-name.js.map +1 -0
- package/dist/rules/require-valid-prompt-tools.d.ts +4 -0
- package/dist/rules/require-valid-prompt-tools.d.ts.map +1 -0
- package/dist/rules/require-valid-prompt-tools.js +64 -0
- package/dist/rules/require-valid-prompt-tools.js.map +1 -0
- package/dist/rules/require-valid-repository-hook-command-type.d.ts +4 -0
- package/dist/rules/require-valid-repository-hook-command-type.d.ts.map +1 -0
- package/dist/rules/require-valid-repository-hook-command-type.js +58 -0
- package/dist/rules/require-valid-repository-hook-command-type.js.map +1 -0
- package/dist/rules/require-valid-repository-hook-env.d.ts +4 -0
- package/dist/rules/require-valid-repository-hook-env.d.ts.map +1 -0
- package/dist/rules/require-valid-repository-hook-env.js +57 -0
- package/dist/rules/require-valid-repository-hook-env.js.map +1 -0
- package/dist/rules/require-valid-repository-hook-events.d.ts +4 -0
- package/dist/rules/require-valid-repository-hook-events.d.ts.map +1 -0
- package/dist/rules/require-valid-repository-hook-events.js +55 -0
- package/dist/rules/require-valid-repository-hook-events.js.map +1 -0
- package/dist/rules/require-valid-repository-hook-timeouts.d.ts +4 -0
- package/dist/rules/require-valid-repository-hook-timeouts.d.ts.map +1 -0
- package/dist/rules/require-valid-repository-hook-timeouts.js +59 -0
- package/dist/rules/require-valid-repository-hook-timeouts.js.map +1 -0
- package/dist/rules/require-valid-repository-hook-version.d.ts +4 -0
- package/dist/rules/require-valid-repository-hook-version.d.ts.map +1 -0
- package/dist/rules/require-valid-repository-hook-version.js +53 -0
- package/dist/rules/require-valid-repository-hook-version.js.map +1 -0
- package/dist/rules/require-valid-skill-directory-name.d.ts +4 -0
- package/dist/rules/require-valid-skill-directory-name.d.ts.map +1 -0
- package/dist/rules/require-valid-skill-directory-name.js +50 -0
- package/dist/rules/require-valid-skill-directory-name.js.map +1 -0
- package/dist/rules/require-valid-skill-license.d.ts +4 -0
- package/dist/rules/require-valid-skill-license.d.ts.map +1 -0
- package/dist/rules/require-valid-skill-license.js +47 -0
- package/dist/rules/require-valid-skill-license.js.map +1 -0
- package/dist/rules/require-valid-skill-name.d.ts +4 -0
- package/dist/rules/require-valid-skill-name.d.ts.map +1 -0
- package/dist/rules/require-valid-skill-name.js +57 -0
- package/dist/rules/require-valid-skill-name.js.map +1 -0
- package/docs/rules/getting-started.md +24 -0
- package/docs/rules/guides/copilot-customization-files.md +17 -0
- package/docs/rules/no-blank-customization-body.md +52 -0
- package/docs/rules/no-blank-repository-instructions.md +37 -0
- package/docs/rules/no-blank-skill-body.md +41 -0
- package/docs/rules/no-deprecated-agent-infer.md +42 -0
- package/docs/rules/no-duplicate-agent-names.md +36 -0
- package/docs/rules/no-duplicate-prompt-names.md +36 -0
- package/docs/rules/no-duplicate-skill-names.md +37 -0
- package/docs/rules/no-duplicate-slash-command-names.md +40 -0
- package/docs/rules/no-empty-repository-hook-arrays.md +44 -0
- package/docs/rules/no-legacy-chatmode-files.md +53 -0
- package/docs/rules/overview.md +27 -0
- package/docs/rules/prefer-custom-instructions-under-code-review-limit.md +39 -0
- package/docs/rules/prefer-fast-repository-hooks.md +43 -0
- package/docs/rules/prefer-qualified-tools.md +49 -0
- package/docs/rules/presets/all.md +82 -0
- package/docs/rules/presets/index.md +78 -0
- package/docs/rules/presets/minimal.md +16 -0
- package/docs/rules/presets/recommended.md +67 -0
- package/docs/rules/presets/strict.md +81 -0
- package/docs/rules/require-agent-tool-for-subagents.md +44 -0
- package/docs/rules/require-agents-md-for-cross-surface-agent-instructions.md +39 -0
- package/docs/rules/require-chatmode-file-metadata.md +41 -0
- package/docs/rules/require-existing-agent-hook-cwd.md +51 -0
- package/docs/rules/require-existing-agent-mcp-servers.md +43 -0
- package/docs/rules/require-existing-relative-agent-links.md +41 -0
- package/docs/rules/require-existing-relative-instructions-links.md +43 -0
- package/docs/rules/require-existing-relative-prompt-links.md +41 -0
- package/docs/rules/require-existing-relative-skill-links.md +44 -0
- package/docs/rules/require-existing-repository-hook-cwd.md +45 -0
- package/docs/rules/require-github-copilot-target-for-mcp-servers.md +46 -0
- package/docs/rules/require-instructions-apply-to.md +40 -0
- package/docs/rules/require-json-agent-mcp-servers.md +41 -0
- package/docs/rules/require-prompt-file-metadata.md +45 -0
- package/docs/rules/require-qualified-agent-handoff-models.md +47 -0
- package/docs/rules/require-relative-agent-hook-cwd.md +50 -0
- package/docs/rules/require-relative-agent-links.md +40 -0
- package/docs/rules/require-relative-instructions-links.md +42 -0
- package/docs/rules/require-relative-prompt-links.md +43 -0
- package/docs/rules/require-relative-repository-hook-cwd.md +43 -0
- package/docs/rules/require-relative-skill-links.md +42 -0
- package/docs/rules/require-repository-hook-arrays.md +33 -0
- package/docs/rules/require-repository-hook-command-shell.md +44 -0
- package/docs/rules/require-repository-hooks-object.md +34 -0
- package/docs/rules/require-repository-instructions-file.md +42 -0
- package/docs/rules/require-skill-file-location.md +33 -0
- package/docs/rules/require-skill-file-metadata.md +40 -0
- package/docs/rules/require-skill-md-filename.md +43 -0
- package/docs/rules/require-skill-name-match-directory.md +46 -0
- package/docs/rules/require-string-repository-hook-env-values.md +43 -0
- package/docs/rules/require-valid-agent-argument-hint.md +42 -0
- package/docs/rules/require-valid-agent-handoff-send.md +49 -0
- package/docs/rules/require-valid-agent-handoffs.md +51 -0
- package/docs/rules/require-valid-agent-hook-events.md +47 -0
- package/docs/rules/require-valid-agent-hook-timeouts.md +49 -0
- package/docs/rules/require-valid-agent-hooks.md +49 -0
- package/docs/rules/require-valid-agent-invocation-controls.md +45 -0
- package/docs/rules/require-valid-agent-mcp-servers.md +45 -0
- package/docs/rules/require-valid-agent-model.md +43 -0
- package/docs/rules/require-valid-agent-name.md +42 -0
- package/docs/rules/require-valid-agent-subagents.md +52 -0
- package/docs/rules/require-valid-agent-target.md +44 -0
- package/docs/rules/require-valid-agent-tools.md +43 -0
- package/docs/rules/require-valid-instructions-apply-to-globs.md +45 -0
- package/docs/rules/require-valid-prompt-argument-hint.md +42 -0
- package/docs/rules/require-valid-prompt-model.md +45 -0
- package/docs/rules/require-valid-prompt-name.md +42 -0
- package/docs/rules/require-valid-prompt-tools.md +43 -0
- package/docs/rules/require-valid-repository-hook-command-type.md +45 -0
- package/docs/rules/require-valid-repository-hook-env.md +43 -0
- package/docs/rules/require-valid-repository-hook-events.md +34 -0
- package/docs/rules/require-valid-repository-hook-timeouts.md +43 -0
- package/docs/rules/require-valid-repository-hook-version.md +34 -0
- package/docs/rules/require-valid-skill-directory-name.md +34 -0
- package/docs/rules/require-valid-skill-license.md +45 -0
- package/docs/rules/require-valid-skill-name.md +43 -0
- package/package.json +562 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Shared rule creator wrapper used by eslint-plugin-copilot rules.
|
|
4
|
+
*/
|
|
5
|
+
import type { TSESLint } from "@typescript-eslint/utils";
|
|
6
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
7
|
+
import type { CopilotConfigName, CopilotConfigReference } from "./copilot-config-references.js";
|
|
8
|
+
/** Copilot-specific metadata extensions stored in `meta.docs`. */
|
|
9
|
+
export type CopilotRuleDocs = Readonly<{
|
|
10
|
+
copilotConfigNames: readonly CopilotConfigName[];
|
|
11
|
+
copilotConfigs: CopilotConfigReference | readonly CopilotConfigReference[];
|
|
12
|
+
description: string;
|
|
13
|
+
frozen: boolean;
|
|
14
|
+
recommended: boolean;
|
|
15
|
+
requiresTypeChecking: boolean;
|
|
16
|
+
ruleId: string;
|
|
17
|
+
ruleNumber: number;
|
|
18
|
+
url: string;
|
|
19
|
+
}>;
|
|
20
|
+
/** Public runtime rule module shape emitted by this plugin. */
|
|
21
|
+
export type CopilotRuleModule = Readonly<{
|
|
22
|
+
name: string;
|
|
23
|
+
}> & TSESLint.RuleModule<string, readonly unknown[], CopilotRuleDocs>;
|
|
24
|
+
type BaseRuleCreator = ReturnType<typeof ESLintUtils.RuleCreator<CopilotRuleInputDocs>>;
|
|
25
|
+
/** Authored docs metadata accepted by individual rule modules. */
|
|
26
|
+
type CopilotRuleInputDocs = Readonly<{
|
|
27
|
+
copilotConfigs: CopilotConfigReference | readonly CopilotConfigReference[];
|
|
28
|
+
description: string;
|
|
29
|
+
frozen: boolean;
|
|
30
|
+
recommended: boolean;
|
|
31
|
+
requiresTypeChecking: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
declare const baseRuleCreator: BaseRuleCreator;
|
|
34
|
+
/**
|
|
35
|
+
* Shared rule creator that injects canonical docs URLs and stable catalog ids.
|
|
36
|
+
*/
|
|
37
|
+
export declare const createCopilotRule: <Options extends readonly unknown[], MessageIds extends string>(ruleDefinition: Parameters<typeof baseRuleCreator<Options, MessageIds>>[0]) => CopilotRuleModule;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=create-copilot-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-copilot-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/create-copilot-rule.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,KAAK,EACR,iBAAiB,EACjB,sBAAsB,EACzB,MAAM,gCAAgC,CAAC;AAKxC,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACnC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,cAAc,EAAE,sBAAsB,GAAG,SAAS,sBAAsB,EAAE,CAAC;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC,GACE,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAErE,KAAK,eAAe,GAAG,UAAU,CAC7B,OAAO,WAAW,CAAC,WAAW,CAAC,oBAAoB,CAAC,CACvD,CAAC;AAEF,kEAAkE;AAClE,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACjC,cAAc,EAAE,sBAAsB,GAAG,SAAS,sBAAsB,EAAE,CAAC;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC;AAEH,QAAA,MAAM,eAAe,EAAE,eAC6C,CAAC;AA8CrE;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC1B,OAAO,SAAS,SAAS,OAAO,EAAE,EAClC,UAAU,SAAS,MAAM,EAEzB,gBAAgB,UAAU,CAAC,OAAO,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAC3E,iBAsBF,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
2
|
+
import { getRuleCatalogEntryForRuleName } from "./rule-catalog.js";
|
|
3
|
+
import { createRuleDocsUrl } from "./rule-docs-url.js";
|
|
4
|
+
const baseRuleCreator = ESLintUtils.RuleCreator(createRuleDocsUrl);
|
|
5
|
+
const getCopilotConfigNameFromReference = (reference) => {
|
|
6
|
+
switch (reference) {
|
|
7
|
+
case "copilot.configs.all": {
|
|
8
|
+
return "all";
|
|
9
|
+
}
|
|
10
|
+
case "copilot.configs.minimal": {
|
|
11
|
+
return "minimal";
|
|
12
|
+
}
|
|
13
|
+
case "copilot.configs.recommended": {
|
|
14
|
+
return "recommended";
|
|
15
|
+
}
|
|
16
|
+
case "copilot.configs.strict": {
|
|
17
|
+
return "strict";
|
|
18
|
+
}
|
|
19
|
+
default: {
|
|
20
|
+
throw new TypeError(`Unsupported Copilot config reference: ${reference}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
/** Normalize preset references into stable preset-name keys. */
|
|
25
|
+
const normalizeCopilotConfigNames = (value) => {
|
|
26
|
+
const references = Array.isArray(value) ? value : [value];
|
|
27
|
+
const normalizedNames = new Set();
|
|
28
|
+
for (const reference of references) {
|
|
29
|
+
normalizedNames.add(getCopilotConfigNameFromReference(reference));
|
|
30
|
+
}
|
|
31
|
+
return [...normalizedNames];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Shared rule creator that injects canonical docs URLs and stable catalog ids.
|
|
35
|
+
*/
|
|
36
|
+
export const createCopilotRule = (ruleDefinition) => {
|
|
37
|
+
const createdRule = baseRuleCreator(ruleDefinition);
|
|
38
|
+
const catalogEntry = getRuleCatalogEntryForRuleName(ruleDefinition.name);
|
|
39
|
+
const authoredDocs = ruleDefinition.meta.docs;
|
|
40
|
+
const docs = {
|
|
41
|
+
...authoredDocs,
|
|
42
|
+
copilotConfigNames: normalizeCopilotConfigNames(authoredDocs.copilotConfigs),
|
|
43
|
+
ruleId: catalogEntry.ruleId,
|
|
44
|
+
ruleNumber: catalogEntry.ruleNumber,
|
|
45
|
+
url: createRuleDocsUrl(ruleDefinition.name),
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
...createdRule,
|
|
49
|
+
meta: {
|
|
50
|
+
...createdRule.meta,
|
|
51
|
+
docs,
|
|
52
|
+
},
|
|
53
|
+
name: ruleDefinition.name,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=create-copilot-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-copilot-rule.js","sourceRoot":"","sources":["../../src/_internal/create-copilot-rule.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkCvD,MAAM,eAAe,GACjB,WAAW,CAAC,WAAW,CAAuB,iBAAiB,CAAC,CAAC;AAErE,MAAM,iCAAiC,GAAG,CACtC,SAAiC,EAChB,EAAE;IACnB,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,qBAAqB,CAAC,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC7B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACjC,OAAO,aAAa,CAAC;QACzB,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC5B,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACN,MAAM,IAAI,SAAS,CACf,yCAAyC,SAAS,EAAE,CACvD,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,2BAA2B,GAEG,CAChC,KAAiE,EACnE,EAAE;IACA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAqB,CAAC;IAErD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,eAAe,CAAC,GAAG,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAI7B,cAA0E,EACzD,EAAE;IACnB,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,8BAA8B,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAoB;QAC1B,GAAG,YAAY;QACf,kBAAkB,EAAE,2BAA2B,CAC3C,YAAY,CAAC,cAAc,CAC9B;QACD,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,GAAG,EAAE,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC;KAC9C,CAAC;IAEF,OAAO;QACH,GAAG,WAAW;QACd,IAAI,EAAE;YACF,GAAG,WAAW,CAAC,IAAI;YACnB,IAAI;SACP;QACD,IAAI,EAAE,cAAc,CAAC,IAAI;KACA,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customization-body.d.ts","sourceRoot":"","sources":["../../src/_internal/customization-body.ts"],"names":[],"mappings":"AAMA,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,GACvC,YAAY,MAAM,KACnB,QAAQ,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB,CAQA,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Helpers for working with Markdown customization file bodies.
|
|
4
|
+
*/
|
|
5
|
+
import { extractFrontmatter } from "./frontmatter.js";
|
|
6
|
+
/** Extract the Markdown body and its absolute character offset. */
|
|
7
|
+
export const getCustomizationBodyWithOffset = (sourceText) => {
|
|
8
|
+
const frontmatter = extractFrontmatter(sourceText);
|
|
9
|
+
const body = frontmatter?.body ?? sourceText;
|
|
10
|
+
return {
|
|
11
|
+
body,
|
|
12
|
+
offset: sourceText.length - body.length,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=customization-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customization-body.js","sourceRoot":"","sources":["../../src/_internal/customization-body.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,mEAAmE;AACnE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC1C,UAAkB,EAInB,EAAE;IACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,IAAI,UAAU,CAAC;IAE7C,OAAO;QACH,IAAI;QACJ,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;KAC1C,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Shared duplicate-name helpers for Copilot customization files.
|
|
4
|
+
*/
|
|
5
|
+
/** A named Copilot customization file paired with its normalized display name. */
|
|
6
|
+
export type NamedCustomizationFile = Readonly<{
|
|
7
|
+
filePath: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}>;
|
|
10
|
+
/** Group files by normalized name and keep only duplicate groups. */
|
|
11
|
+
export declare const collectDuplicateNameGroups: (entries: readonly NamedCustomizationFile[], normalizeName: (value: string) => string) => ReadonlyMap<string, readonly NamedCustomizationFile[]>;
|
|
12
|
+
//# sourceMappingURL=duplicate-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicate-names.d.ts","sourceRoot":"","sources":["../../src/_internal/duplicate-names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,GACnC,SAAS,SAAS,sBAAsB,EAAE,EAC1C,eAAe,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KACzC,WAAW,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAyBvD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Shared duplicate-name helpers for Copilot customization files.
|
|
4
|
+
*/
|
|
5
|
+
/** Group files by normalized name and keep only duplicate groups. */
|
|
6
|
+
export const collectDuplicateNameGroups = (entries, normalizeName) => {
|
|
7
|
+
const groups = new Map();
|
|
8
|
+
for (const entry of entries) {
|
|
9
|
+
const normalizedName = normalizeName(entry.name);
|
|
10
|
+
if (normalizedName.length === 0) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const group = groups.get(normalizedName) ?? [];
|
|
14
|
+
group.push(entry);
|
|
15
|
+
groups.set(normalizedName, group);
|
|
16
|
+
}
|
|
17
|
+
return new Map([...groups.entries()]
|
|
18
|
+
.filter(([, group]) => group.length > 1)
|
|
19
|
+
.map(([name, group]) => [
|
|
20
|
+
name,
|
|
21
|
+
group.toSorted((left, right) => left.filePath.localeCompare(right.filePath)),
|
|
22
|
+
]));
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=duplicate-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicate-names.js","sourceRoot":"","sources":["../../src/_internal/duplicate-names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,qEAAqE;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,OAA0C,EAC1C,aAAwC,EACc,EAAE;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoC,CAAC;IAE3D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,SAAS;QACb,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,GAAG,CACV,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACpB,IAAI;QACJ,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC3B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC9C;KACJ,CAAC,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Normalize a path to absolute slash-separated form. */
|
|
2
|
+
export declare const normalizeAbsolutePath: (filePath: string) => string;
|
|
3
|
+
/** Determine whether an absolute or relative path currently exists on disk. */
|
|
4
|
+
export declare const pathExists: (filePath: string) => boolean;
|
|
5
|
+
/** Remove `#fragment` and `?query` suffixes from a Markdown-style path target. */
|
|
6
|
+
export declare const stripPathFragmentAndQuery: (value: string) => string;
|
|
7
|
+
/** Determine whether a string is a Windows absolute path such as `C:\repo`. */
|
|
8
|
+
export declare const isWindowsAbsolutePath: (value: string) => boolean;
|
|
9
|
+
/** Determine whether a string starts with a URI-like scheme such as `https:`. */
|
|
10
|
+
export declare const hasUriScheme: (value: string) => boolean;
|
|
11
|
+
/** Determine whether a path token is obviously non-relative for workspace use. */
|
|
12
|
+
export declare const isNonRelativeWorkspacePath: (value: string) => boolean;
|
|
13
|
+
/** Determine whether a value is a workspace-relative path-like reference. */
|
|
14
|
+
export declare const isRelativeWorkspacePath: (value: string) => boolean;
|
|
15
|
+
/** Resolve a workspace-relative path from the current file location. */
|
|
16
|
+
export declare const resolveRelativeWorkspacePath: (currentFilePath: string, relativePath: string) => string;
|
|
17
|
+
/** Resolve a repository-root-relative path token. */
|
|
18
|
+
export declare const resolveRepositoryRelativePath: (repositoryRootPath: string, relativePath: string) => string;
|
|
19
|
+
/** Recursively list files under a directory when it exists. */
|
|
20
|
+
export declare const listFilesRecursively: (directoryPath: string, predicate?: (absoluteFilePath: string) => boolean) => readonly string[];
|
|
21
|
+
//# sourceMappingURL=file-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/_internal/file-system.ts"],"names":[],"mappings":"AAUA,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,MACT,CAAC;AAEjD,+EAA+E;AAC/E,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,KAAG,OACnB,CAAC;AAE5B,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,GAAI,OAAO,MAAM,KAAG,MAYzD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,OACT,CAAC;AAE9C,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OACsB,CAAC;AAEpE,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,GAAI,OAAO,MAAM,KAAG,OAmB1D,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,KAAG,OASvD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,4BAA4B,GACrC,iBAAiB,MAAM,EACvB,cAAc,MAAM,KACrB,MAIE,CAAC;AAEN,qDAAqD;AACrD,eAAO,MAAM,6BAA6B,GACtC,oBAAoB,MAAM,EAC1B,cAAc,MAAM,KACrB,MAC0E,CAAC;AAE9E,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,GAC7B,eAAe,MAAM,EACrB,YAAY,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,KAClD,SAAS,MAAM,EAsCjB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Shared filesystem helpers for Copilot repository rule implementations.
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
const WINDOWS_ABSOLUTE_PATH_PATTERN = /^[A-Za-z]:[/\\]/u;
|
|
8
|
+
const URI_SCHEME_PATTERN = /^[A-Za-z][+\-.0-9A-Za-z]*:/u;
|
|
9
|
+
/** Normalize a path to absolute slash-separated form. */
|
|
10
|
+
export const normalizeAbsolutePath = (filePath) => path.resolve(filePath).replaceAll("\\", "/");
|
|
11
|
+
/** Determine whether an absolute or relative path currently exists on disk. */
|
|
12
|
+
export const pathExists = (filePath) => fs.existsSync(filePath);
|
|
13
|
+
/** Remove `#fragment` and `?query` suffixes from a Markdown-style path target. */
|
|
14
|
+
export const stripPathFragmentAndQuery = (value) => {
|
|
15
|
+
const queryIndex = value.indexOf("?");
|
|
16
|
+
const fragmentIndex = value.indexOf("#");
|
|
17
|
+
const cutIndexCandidates = [queryIndex, fragmentIndex].filter((index) => index >= 0);
|
|
18
|
+
if (cutIndexCandidates.length === 0) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
return value.slice(0, Math.min(...cutIndexCandidates));
|
|
22
|
+
};
|
|
23
|
+
/** Determine whether a string is a Windows absolute path such as `C:\repo`. */
|
|
24
|
+
export const isWindowsAbsolutePath = (value) => WINDOWS_ABSOLUTE_PATH_PATTERN.test(value);
|
|
25
|
+
/** Determine whether a string starts with a URI-like scheme such as `https:`. */
|
|
26
|
+
export const hasUriScheme = (value) => !isWindowsAbsolutePath(value) && URI_SCHEME_PATTERN.test(value);
|
|
27
|
+
/** Determine whether a path token is obviously non-relative for workspace use. */
|
|
28
|
+
export const isNonRelativeWorkspacePath = (value) => {
|
|
29
|
+
const trimmedValue = value.trim();
|
|
30
|
+
const lowercaseValue = trimmedValue.toLowerCase();
|
|
31
|
+
if (trimmedValue.length === 0 || trimmedValue.startsWith("#")) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
if (lowercaseValue.startsWith("/") ||
|
|
35
|
+
lowercaseValue.startsWith("\\") ||
|
|
36
|
+
lowercaseValue.startsWith("~/") ||
|
|
37
|
+
lowercaseValue.startsWith("~\\") ||
|
|
38
|
+
lowercaseValue.startsWith("file:")) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return isWindowsAbsolutePath(trimmedValue);
|
|
42
|
+
};
|
|
43
|
+
/** Determine whether a value is a workspace-relative path-like reference. */
|
|
44
|
+
export const isRelativeWorkspacePath = (value) => {
|
|
45
|
+
const trimmedValue = value.trim();
|
|
46
|
+
return (trimmedValue.length > 0 &&
|
|
47
|
+
!trimmedValue.startsWith("#") &&
|
|
48
|
+
!hasUriScheme(trimmedValue) &&
|
|
49
|
+
!isNonRelativeWorkspacePath(trimmedValue));
|
|
50
|
+
};
|
|
51
|
+
/** Resolve a workspace-relative path from the current file location. */
|
|
52
|
+
export const resolveRelativeWorkspacePath = (currentFilePath, relativePath) => path.resolve(path.dirname(currentFilePath), stripPathFragmentAndQuery(relativePath));
|
|
53
|
+
/** Resolve a repository-root-relative path token. */
|
|
54
|
+
export const resolveRepositoryRelativePath = (repositoryRootPath, relativePath) => path.resolve(repositoryRootPath, stripPathFragmentAndQuery(relativePath));
|
|
55
|
+
/** Recursively list files under a directory when it exists. */
|
|
56
|
+
export const listFilesRecursively = (directoryPath, predicate) => {
|
|
57
|
+
if (!pathExists(directoryPath)) {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
const discoveredFiles = [];
|
|
61
|
+
const pendingDirectories = [directoryPath];
|
|
62
|
+
while (pendingDirectories.length > 0) {
|
|
63
|
+
const currentDirectory = pendingDirectories.pop();
|
|
64
|
+
if (currentDirectory === undefined) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
for (const entry of fs.readdirSync(currentDirectory, {
|
|
68
|
+
withFileTypes: true,
|
|
69
|
+
})) {
|
|
70
|
+
const absoluteEntryPath = path.join(currentDirectory, entry.name);
|
|
71
|
+
if (entry.isDirectory()) {
|
|
72
|
+
pendingDirectories.push(absoluteEntryPath);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (!entry.isFile()) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (predicate !== undefined && !predicate(absoluteEntryPath)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
discoveredFiles.push(absoluteEntryPath);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return discoveredFiles.toSorted((left, right) => left.localeCompare(right));
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=file-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/_internal/file-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Lightweight Markdown frontmatter helpers for Copilot customization files.
|
|
4
|
+
*/
|
|
5
|
+
/** Parsed frontmatter bundle extracted from the start of a Markdown document. */
|
|
6
|
+
export type FrontmatterDocument = Readonly<{
|
|
7
|
+
body: string;
|
|
8
|
+
content: string;
|
|
9
|
+
fields: ReadonlyMap<string, FrontmatterField>;
|
|
10
|
+
}>;
|
|
11
|
+
/** Parsed frontmatter field variants supported by this plugin. */
|
|
12
|
+
export type FrontmatterField = Readonly<{
|
|
13
|
+
kind: "list";
|
|
14
|
+
values: readonly string[];
|
|
15
|
+
}> | Readonly<{
|
|
16
|
+
kind: "scalar";
|
|
17
|
+
value: string;
|
|
18
|
+
}>;
|
|
19
|
+
/** Parsed object entry from a supported nested frontmatter list block. */
|
|
20
|
+
export type FrontmatterObjectListEntry = Readonly<Record<string, string>>;
|
|
21
|
+
/** Parsed nested object-list groups keyed by a frontmatter subfield name. */
|
|
22
|
+
export type FrontmatterObjectListGroupMap = ReadonlyMap<string, readonly FrontmatterObjectListEntry[]>;
|
|
23
|
+
/** Extract top-of-file YAML frontmatter when present. */
|
|
24
|
+
export declare const extractFrontmatter: (text: string) => FrontmatterDocument | null;
|
|
25
|
+
/** Read a non-empty scalar frontmatter value. */
|
|
26
|
+
export declare const getFrontmatterScalar: (document: FrontmatterDocument, key: string) => string | undefined;
|
|
27
|
+
/** Read a non-empty list of scalar frontmatter values. */
|
|
28
|
+
export declare const getFrontmatterList: (document: FrontmatterDocument, key: string) => readonly string[] | undefined;
|
|
29
|
+
/** Determine whether a field exists but is empty or unparsable for our subset. */
|
|
30
|
+
export declare const hasFrontmatterField: (document: FrontmatterDocument, key: string) => boolean;
|
|
31
|
+
/** Read a supported YAML object-list block such as `handoffs:` entries. */
|
|
32
|
+
export declare const getFrontmatterObjectList: (document: FrontmatterDocument, key: string) => readonly FrontmatterObjectListEntry[] | undefined;
|
|
33
|
+
/** Read nested YAML mappings of object lists such as `hooks: Event: - ...`. */
|
|
34
|
+
export declare const getFrontmatterObjectListGroups: (document: FrontmatterDocument, key: string) => FrontmatterObjectListGroupMap | undefined;
|
|
35
|
+
/** Remove HTML comments before checking whether Markdown body content exists. */
|
|
36
|
+
export declare const getMeaningfulMarkdownBody: (text: string) => string;
|
|
37
|
+
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/_internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iFAAiF;AACjF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,gBAAgB,GACtB,QAAQ,CAAC;IACL,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACL,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAET,0EAA0E;AAC1E,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1E,6EAA6E;AAC7E,MAAM,MAAM,6BAA6B,GAAG,WAAW,CACnD,MAAM,EACN,SAAS,0BAA0B,EAAE,CACxC,CAAC;AAuTF,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,GAC3B,MAAM,MAAM,KACb,mBAAmB,GAAG,IAgCxB,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,GAC7B,UAAU,mBAAmB,EAC7B,KAAK,MAAM,KACZ,MAAM,GAAG,SAMX,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,GAC3B,UAAU,mBAAmB,EAC7B,KAAK,MAAM,KACZ,SAAS,MAAM,EAAE,GAAG,SAMtB,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,GAC5B,UAAU,mBAAmB,EAC7B,KAAK,MAAM,KACZ,OAAmC,CAAC;AAEvC,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,GACjC,UAAU,mBAAmB,EAC7B,KAAK,MAAM,KACZ,SAAS,0BAA0B,EAAE,GAAG,SAwE1C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,8BAA8B,GACvC,UAAU,mBAAmB,EAC7B,KAAK,MAAM,KACZ,6BAA6B,GAAG,SA2GlC,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,KAAG,MACvB,CAAC"}
|