feat: add gitignore-style negation patterns for workspace.files#7
Merged
feat: add gitignore-style negation patterns for workspace.files#7
Conversation
Add glob pattern matching with gitignore-style negation to workspace.files
configuration, allowing patterns like:
- "**/*.md" to include all markdown files
- "!**/*.instructions.md" to exclude instruction files
- "important.instructions.md" to re-include specific files
Changes:
- Add fast-glob dependency for pattern matching
- Create src/utils/glob-patterns.ts with pattern resolution utilities
- Update copyWorkspaceFiles to process string patterns through glob resolver
- Object entries ({source, dest}) continue to work as explicit mappings
- Empty glob matches are silently ignored (consistent with gitignore)
Tests:
- Add unit tests for isGlobPattern, isNegationPattern, resolveGlobPatterns
- Add integration tests for copyWorkspaceFiles with glob patterns
- Remove non-null assertion in transform.ts (use fallback instead) - Remove unused imports (mkdir in sync.ts, CONFIG_DIR in workspace.ts) - Fix exactOptionalPropertyTypes issues by conditionally spreading optional properties only when they have values
This was referenced Mar 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
workspace.filesconfiguration**/*.md,!**/*.instructions.md, and re-inclusion work as expected{source, dest}continue to work as explicit single-file mappingsExample Usage
Changes
package.jsonfast-globdependencysrc/utils/glob-patterns.tssrc/core/transform.tscopyWorkspaceFiles()to handle globstests/unit/utils/glob-patterns.test.tstests/unit/core/transform-glob.test.tsTest Plan