ace-search 0.24.0

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.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/nav/protocols/wfi-sources/ace-search.yml +19 -0
  3. data/.ace-defaults/search/config.yml +45 -0
  4. data/.ace-defaults/search/presets/code.yml +22 -0
  5. data/CHANGELOG.md +404 -0
  6. data/LICENSE +21 -0
  7. data/README.md +42 -0
  8. data/Rakefile +14 -0
  9. data/exe/ace-search +14 -0
  10. data/handbook/agents/research.ag.md +214 -0
  11. data/handbook/agents/search.ag.md +331 -0
  12. data/handbook/skills/as-search-feature-research/SKILL.md +29 -0
  13. data/handbook/skills/as-search-research/SKILL.md +37 -0
  14. data/handbook/skills/as-search-run/SKILL.md +47 -0
  15. data/handbook/workflow-instructions/search/feature-research.wf.md +274 -0
  16. data/handbook/workflow-instructions/search/research.wf.md +211 -0
  17. data/handbook/workflow-instructions/search/run.wf.md +289 -0
  18. data/lib/ace/search/atoms/debug_logger.rb +61 -0
  19. data/lib/ace/search/atoms/fd_executor.rb +168 -0
  20. data/lib/ace/search/atoms/pattern_analyzer.rb +176 -0
  21. data/lib/ace/search/atoms/result_parser.rb +111 -0
  22. data/lib/ace/search/atoms/ripgrep_executor.rb +160 -0
  23. data/lib/ace/search/atoms/search_path_resolver.rb +79 -0
  24. data/lib/ace/search/atoms/tool_checker.rb +69 -0
  25. data/lib/ace/search/cli/commands/search.rb +240 -0
  26. data/lib/ace/search/cli.rb +34 -0
  27. data/lib/ace/search/models/search_options.rb +66 -0
  28. data/lib/ace/search/models/search_preset.rb +34 -0
  29. data/lib/ace/search/models/search_result.rb +109 -0
  30. data/lib/ace/search/molecules/dwim_analyzer.rb +52 -0
  31. data/lib/ace/search/molecules/fzf_integrator.rb +71 -0
  32. data/lib/ace/search/molecules/preset_manager.rb +98 -0
  33. data/lib/ace/search/molecules/search_option_builder.rb +113 -0
  34. data/lib/ace/search/molecules/time_filter.rb +60 -0
  35. data/lib/ace/search/organisms/result_aggregator.rb +73 -0
  36. data/lib/ace/search/organisms/result_formatter.rb +103 -0
  37. data/lib/ace/search/organisms/unified_searcher.rb +165 -0
  38. data/lib/ace/search/version.rb +7 -0
  39. data/lib/ace/search.rb +87 -0
  40. metadata +181 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bf2ed45b6a6a54ac87cdf1d8ec9b5b77d0ae4f2b53a83e99604e333ec5fe70c0
4
+ data.tar.gz: aea55381411e2520242d54004ee3ffa26e57a485f06a7392f0d9912c46cd3971
5
+ SHA512:
6
+ metadata.gz: 6e9f478bec1f722643ff1ec6ae62bec2ebb32d0b2d683c4c7d47c4b99306561ebc780ae4f117176a27829a0df21365eeb70520d90e2ca4ae2c73db659e162ced
7
+ data.tar.gz: 83c749cfcf37340fc96d24125f8033a5e682db193c0b8f6e2341b0cbff6948b4e93846eb52f685a68039f13db0ed94e471c100fa6fc4eaaef3d06d77892c1102
@@ -0,0 +1,19 @@
1
+ ---
2
+ # WFI Sources Protocol Configuration for ace-search gem
3
+ # This enables workflow discovery from the installed ace-search gem
4
+
5
+ name: ace-search
6
+ type: gem
7
+ description: Search workflow instructions from ace-search gem
8
+ priority: 10
9
+
10
+ # Configuration for workflow discovery within the gem
11
+ config:
12
+ # Relative path within the gem (default: handbook/workflow-instructions)
13
+ relative_path: handbook/workflow-instructions
14
+
15
+ # Pattern for finding workflow files (default: *.wf.md)
16
+ pattern: "*.wf.md"
17
+
18
+ # Enable discovery
19
+ enabled: true
@@ -0,0 +1,45 @@
1
+ # ACE Search Configuration
2
+ #
3
+ # Any CLI flag can be set as a default here (use underscore for dashes)
4
+ # Configuration cascade: defaults → ~/.ace/search/config.yml → ./.ace/search/config.yml → CLI flags
5
+
6
+ ace:
7
+ search:
8
+ # Execution defaults
9
+ timeout: 120 # seconds - timeout for ripgrep/fd commands
10
+
11
+ # Pattern matching defaults
12
+ case_insensitive: false # -i, --case-insensitive
13
+ whole_word: false # -w, --whole-word
14
+ multiline: false # -U, --multiline
15
+
16
+ # Output defaults
17
+ max_results: null # --max-results NUM
18
+ context: 0 # -C, --context NUM (or -A/-B for before/after)
19
+ files_with_matches: false # -l, --files-with-matches
20
+ hidden: false # --hidden
21
+
22
+ # Search type
23
+ type: auto # -t, --type (file/content/hybrid/auto)
24
+
25
+ # Exclusions (default excludes for done/archived tasks)
26
+ exclude:
27
+ - ".ace-tasks/done/**/*"
28
+ - "dev-taskflow/done/**/*"
29
+ - "dev-taskflow/current/*/tasks/x/*"
30
+ - "vendor/**/*"
31
+ - "node_modules/**/*"
32
+ - "coverage/**/*"
33
+ - "tmp/**/*"
34
+
35
+ # Inclusions (optional, empty by default)
36
+ include: []
37
+
38
+ # Git scope (optional: staged, tracked, changed)
39
+ # scope: null
40
+
41
+ # Glob patterns (optional)
42
+ # glob: "*.rb"
43
+
44
+ # Preset directory (relative to .ace/search/)
45
+ preset_dir: "presets"
@@ -0,0 +1,22 @@
1
+ # Code Search Preset
2
+ #
3
+ # Search only in code files, excluding common non-code directories
4
+
5
+ name: code
6
+ description: Search code files only
7
+
8
+ # File patterns
9
+ glob: "*.{rb,js,ts,py,go,java,c,cpp,h,hpp,rs,swift,kt}"
10
+
11
+ # Exclusions
12
+ exclude:
13
+ - "vendor/**/*"
14
+ - "node_modules/**/*"
15
+ - "coverage/**/*"
16
+ - "tmp/**/*"
17
+ - "dist/**/*"
18
+ - "build/**/*"
19
+ - ".git/**/*"
20
+
21
+ # Case sensitivity for code
22
+ case_insensitive: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,404 @@
1
+ # Changelog
2
+
3
+ All notable changes to ace-search will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.24.0] - 2026-03-24
11
+
12
+ ### Fixed
13
+ - Expanded "DWIM" acronym to "Do What I Mean" on first use in README for clarity.
14
+ - Corrected preset path in getting-started guide from `.ace/search/config.yml` to `.ace/search/presets/<name>.yml`.
15
+
16
+ ### Changed
17
+ - Updated demo tape to use shipped `code` preset instead of non-existent `my-preset`; re-recorded getting-started GIF.
18
+
19
+ ## [0.23.2] - 2026-03-23
20
+
21
+ ### Changed
22
+ - Refreshed README overview and navigation to align with the current package layout pattern.
23
+
24
+ ## [0.23.1] - 2026-03-22
25
+
26
+ ### Changed
27
+ - Replaced placeholder commands in `docs/demo/ace-search-getting-started.tape.yml` with real `ace-search` getting-started command flow.
28
+
29
+ ## [0.23.0] - 2026-03-22
30
+
31
+ ### Changed
32
+ - Rewrote README as a landing page, added getting-started/usage/handbook docs, added demo tape and GIF, and refreshed gemspec metadata messaging.
33
+
34
+ ## [0.22.0] - 2026-03-20
35
+
36
+ ### Changed
37
+ - Expanded `TS-SEARCH-001` E2E coverage with a new JSON-output goal and tightened runner/verifier artifact-evidence contracts across existing goals.
38
+
39
+ ## [0.21.8] - 2026-03-18
40
+
41
+ ### Changed
42
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
43
+
44
+
45
+ ## [0.21.7] - 2026-03-15
46
+
47
+ ### Fixed
48
+ - Updated E2E content-search test to use unambiguous search pattern avoiding false substring match failures
49
+
50
+ ## [0.21.6] - 2026-03-15
51
+
52
+ ### Changed
53
+ - Migrated CLI framework from dry-cli to ace-support-cli
54
+
55
+ ## [0.21.5] - 2026-03-13
56
+
57
+ ### Technical
58
+ - Updated canonical search workflow skill metadata for bundled workflow execution.
59
+
60
+ ## [0.21.4] - 2026-03-13
61
+
62
+ ### Changed
63
+ - Updated canonical search research skills to explicitly run bundled workflows in the current project and execute them end-to-end.
64
+
65
+ ## [0.21.3] - 2026-03-13
66
+
67
+ ### Changed
68
+ - Replaced provider-specific Codex execution metadata on the canonical `as-search-run` skill with a unified canonical skill body that declares arguments, variables, and explicit workflow-execution guidance.
69
+ - Limited provider-specific forking for `as-search-run` to Claude frontmatter only.
70
+
71
+ ## [0.21.2] - 2026-03-12
72
+
73
+ ### Added
74
+ - Added a public `--count` CLI flag and threaded it through search option building so count-oriented ripgrep execution is available through `ace-search`.
75
+
76
+ ### Changed
77
+ - Updated search E2E runner guidance to use deterministic project-root paths for file and count mode coverage.
78
+
79
+ ### Technical
80
+ - Added CLI and option-builder regression coverage for the new count flag.
81
+
82
+ ## [0.21.1] - 2026-03-12
83
+
84
+ ### Changed
85
+ - Updated handbook search-agent examples to use current `ace-*/handbook/**/*` paths instead of legacy shared handbook locations.
86
+
87
+ ## [0.21.0] - 2026-03-12
88
+
89
+ ### Added
90
+ - Added Codex-specific delegated execution metadata to the canonical `as-search-run` skill so the generated Codex skill runs in fork context on `gpt-5.3-codex-spark`.
91
+
92
+ ## [0.20.0] - 2026-03-10
93
+
94
+ ### Added
95
+ - Added canonical handbook-owned search and research skills for feature research, multi-search analysis, and direct search execution.
96
+
97
+
98
+ ## [0.19.8] - 2026-03-05
99
+
100
+ ### Changed
101
+ - Search result parsing now selects file-only mode when `files_with_matches` is requested, avoiding text-parse assumptions.
102
+
103
+ ## [0.19.7] - 2026-02-23
104
+
105
+ ### Technical
106
+ - Updated internal dependency version constraints to current releases
107
+
108
+ ## [0.19.6] - 2026-02-22
109
+
110
+ ### Changed
111
+ - Migrate CLI from registry/default-routing to single-command entrypoint (`Dry::CLI.new(Ace::Search::CLI::Commands::Search).call`).
112
+ - Treat no-argument invocation as help (`--help`) in `exe/ace-search`.
113
+
114
+ ### Fixed
115
+ - Handle `--version` directly in the search command path, ensuring version output works in single-command mode.
116
+
117
+ ### Technical
118
+ - Update workflow/guide references to use `ace-search "pattern"` (no `search` subcommand).
119
+ - Align CLI routing and integration tests with single-command behavior.
120
+
121
+ ## [0.19.4] - 2026-02-22
122
+
123
+ ### Changed
124
+ - Migrate skill naming and invocation references to hyphenated `ace-*` format (no underscores).
125
+
126
+ ## [0.19.3] - 2026-02-19
127
+
128
+ ### Technical
129
+ - Namespace workflow instructions into search/ subdirectory with updated wfi:// URIs
130
+
131
+ ## [0.19.2] - 2026-01-31
132
+
133
+ ### Fixed
134
+ - Reset config in test setup to prevent test isolation issues
135
+
136
+ ## [0.19.1] - 2026-01-16
137
+
138
+ ### Changed
139
+ - Rename context: to bundle: keys in configuration files
140
+
141
+ ## [0.19.0] - 2025-01-14
142
+
143
+ ### Added
144
+ - Migrate CLI to Hanami pattern (task 213)
145
+ - Move command implementation from `commands/` to `cli/commands/` directory
146
+ - Update module namespace to `CLI::Commands::Search` following Hanami/dry-cli standard
147
+ - Clean up model requires by moving them from `cli.rb` into the command file
148
+
149
+ ### Fixed
150
+ - Fix critical search_path bug where local variable was used instead of instance variable
151
+ - Changed `search_path = options[:search_path]` to `@search_path = options[:search_path]`
152
+ - This ensures resolve_search_path receives the correct search path value
153
+
154
+ ### Technical
155
+ - Update CLI pattern documentation to reflect Hanami standard
156
+ - Remove obsolete `commands/` directory structure
157
+
158
+
159
+ ## [0.18.1] - 2026-01-09
160
+
161
+ ### Changed
162
+ - **BREAKING**: Eliminate wrapper pattern in dry-cli command
163
+ - Merged business logic directly into `Search` dry-cli command class
164
+ - Deleted `search_command.rb` wrapper file
165
+ - Simplified architecture by removing unnecessary delegation layer
166
+
167
+ ## [0.18.0] - 2026-01-07
168
+
169
+ ### Changed
170
+ - **BREAKING**: Migrated CLI framework from Thor to dry-cli (task 179.02)
171
+ - Replaced `thor` dependency with `dry-cli ~> 1.0`
172
+ - Added `ace-support-core ~> 0.19` dependency for dry-cli infrastructure
173
+ - All user-facing commands, options, and behavior remain identical
174
+ - Single-command usage supported (`ace-search pattern`)
175
+ - Numeric option type-conversion handled for parity with Thor implementation
176
+ - Standardized `KNOWN_COMMANDS` pattern across dry-cli gems
177
+
178
+ ## [0.17.0] - 2026-01-05
179
+
180
+ ### Added
181
+ - Thor CLI migration with standardized command structure
182
+ - ConfigSummary display for effective configuration with sensitive key filtering
183
+ - Comprehensive CLI help documentation across all commands
184
+ - self.help overrides for custom command descriptions
185
+
186
+ ### Changed
187
+ - Adopted Ace::Core::CLI::Base for standardized options (--quiet, --verbose, --debug)
188
+ - Migrated from OptionParser to Thor framework
189
+ - Added method_missing for default subcommand support
190
+
191
+ ### Fixed
192
+ - CLI routing and dependency management for feature parity
193
+ - --help dispatch for all ACE commands
194
+ - Resolved -v flag conflict and search interactive mode bug
195
+ - Add handle_no_command_error for command name patterns
196
+ - Addressed PR #123 review findings for Medium and higher priority issues
197
+
198
+ ## [0.16.0] - 2026-01-03
199
+
200
+ ### Changed
201
+ - **BREAKING**: Minimum Ruby version raised to 3.3.0 (was 3.1.0)
202
+ - Standardized gemspec file patterns with deterministic Dir.glob
203
+ - Added MIT LICENSE file
204
+
205
+ ## [0.15.2] - 2026-01-01
206
+
207
+ ### Changed
208
+
209
+ * Add configurable timeout in `.ace-defaults/search/config.yml`
210
+ * Centralize fd executor timeout from config instead of hardcoded value
211
+
212
+ ## [0.15.1] - 2025-12-30
213
+
214
+ ### Changed
215
+
216
+ - Replace ace-support-core dependency with ace-config for configuration cascade
217
+ - Migrate from Ace::Core to Ace::Config.create() API
218
+ - Migrate from `resolve_for` to `resolve_namespace` for cleaner config loading
219
+
220
+ ## [0.15.0] - 2025-12-30
221
+
222
+ ### Changed
223
+
224
+ * Rename `.ace.example/` to `.ace-defaults/` for gem defaults directory
225
+
226
+
227
+ ## [0.14.0] - 2025-12-29
228
+
229
+ ### Changed
230
+ - Migrate ProjectRootFinder dependency from `Ace::Core::Molecules` to `Ace::Support::Fs::Molecules` for direct ace-support-fs usage
231
+
232
+ ## [0.13.0] - 2025-12-28
233
+
234
+ ### Added
235
+ - **ADR-022 Configuration Pattern**: Migrate to gem defaults from `.ace.example/` with user override support
236
+ - Load defaults from `.ace.example/search/config.yml` at runtime
237
+ - Deep merge with user config via ace-core cascade
238
+ - Follows "gem defaults < user config" priority
239
+
240
+ ### Fixed
241
+ - **Debug Check Consistency**: Standardized `debug?` method to use `== "1"` pattern across all gems
242
+
243
+ ## [0.12.0] - 2025-12-27
244
+
245
+ ### Changed
246
+
247
+ - **Dependency Migration**: Migrated GitScopeFilter to ace-git package
248
+ - Now uses `Ace::Git::Atoms::GitScopeFilter` from ace-git (~> 0.3)
249
+ - Removed local `Ace::Search::Molecules::GitScopeFilter` implementation
250
+ - Centralizes Git file scope operations across ACE ecosystem
251
+
252
+ ## [0.11.4] - 2025-11-16
253
+
254
+ ### Changed
255
+
256
+ - **Dependency Update**: Updated ace-support-core dependency from `~> 0.9` to `~> 0.11`
257
+ - Provides access to latest PromptCacheManager and infrastructure improvements
258
+ - Maintains compatibility with standardized ACE ecosystem patterns
259
+
260
+ ## [0.11.3] - 2025-11-01
261
+
262
+ ### Changed
263
+
264
+ - **Dependency Migration**: Updated to use renamed infrastructure gems
265
+ - Changed dependency from `ace-core` to `ace-support-core`
266
+ - Part of ecosystem-wide naming convention alignment for infrastructure gems
267
+
268
+
269
+ ## [0.11.2] - 2025-10-25
270
+
271
+ ### Changed
272
+ - Implement code review suggestions for clarity and documentation
273
+ - Add design rationale comment to SearchPathResolver explaining ENV var validation
274
+ - Add upgrade note in README linking to Troubleshooting section
275
+ - Document DebugLogger threading context and caching behavior
276
+ - Condense CLI warning message for non-existent paths
277
+
278
+ ## [0.11.1] - 2025-10-25
279
+
280
+ ### Added
281
+ - Centralized DebugLogger module for unified debug output formatting
282
+ - Path validation warnings for non-existent explicit search paths
283
+ - Comprehensive troubleshooting guide in README
284
+ - DEBUG environment variable documentation with example output
285
+
286
+ ### Technical
287
+ - Edge case test coverage for SearchPathResolver (symlinks, non-existent paths, relative paths)
288
+ - Improved debug output consistency across executors
289
+ - 21 additional test cases (17 DebugLogger, 4 edge cases)
290
+
291
+ ## [0.11.0] - 2025-10-25
292
+
293
+ ### Added
294
+ - Project-wide search by default: `ace-search` now searches entire project from root regardless of current directory
295
+ - Optional search path argument: `ace-search "pattern" [SEARCH_PATH]` to limit scope when needed
296
+ - SearchPathResolver atom with 4-step resolution: explicit path → PROJECT_ROOT_PATH env → project root detection → current directory fallback
297
+ - Support for `PROJECT_ROOT_PATH` environment variable to override project root detection
298
+ - Integration with `Ace::Core::Molecules::ProjectRootFinder` for automatic project root detection
299
+ - Display search path in output context for transparency
300
+
301
+ ### Fixed
302
+ - Fixed search_path propagation through UnifiedSearcher option builders (critical bug)
303
+ - Fixed inconsistent search results when running from different directories
304
+ - Execute ripgrep/fd from search directory using chdir for correct .gitignore processing
305
+
306
+ ### Changed
307
+ - **BEHAVIOR CHANGE**: Default search scope is now project-wide instead of current directory
308
+ - To maintain old behavior (search current directory only), use: `ace-search "pattern" ./`
309
+ - CLI banner updated to show optional SEARCH_PATH argument: `ace-search [options] PATTERN [SEARCH_PATH]`
310
+
311
+ ### Technical
312
+ - Add comprehensive DEBUG output for troubleshooting search path resolution
313
+
314
+ ## [0.10.0] - 2025-10-14
315
+
316
+ ### Added
317
+ - Standardize Rakefile test commands and add CI fallback
318
+
319
+ ## [0.9.0] - 2025-10-08
320
+
321
+ ### Added
322
+
323
+ **Core Architecture**
324
+ - Initial release of ace-search gem with full ATOM architecture
325
+ - Complete migration from dev-tools/exe/search to standalone gem
326
+ - Atoms: ripgrep_executor, fd_executor, pattern_analyzer, result_parser, tool_checker
327
+ - Molecules: preset_manager, git_scope_filter, dwim_analyzer, time_filter, fzf_integrator
328
+ - Organisms: unified_searcher, result_formatter, result_aggregator
329
+ - Models: search_result, search_options, search_preset
330
+
331
+ **CLI Features**
332
+ - Full CLI compatibility with original search tool
333
+ - All search modes: file, content, hybrid with auto-detection (DWIM)
334
+ - Pattern matching: case-insensitive, whole-word, multiline
335
+ - Context options: before, after, and surrounding lines
336
+ - Filtering: glob patterns, include/exclude paths, git scopes (staged/tracked/changed)
337
+ - Output formats: text (with clickable terminal links), JSON, YAML
338
+ - Interactive mode: fzf integration for result selection
339
+ - Time-based filtering: search files modified since/before timestamps
340
+
341
+ **Configuration System**
342
+ - Integration with ace-core for configuration cascade
343
+ - Support for all CLI flags as configuration defaults in `.ace/search/config.yml`
344
+ - Preset system: organize common searches in `.ace/search/presets/*.yml`
345
+ - Example configuration and presets included in `.ace.example/`
346
+ - Configuration cascade: defaults → global config → project config → preset → CLI flags
347
+
348
+ **Development Tools**
349
+ - Binstub (`bin/ace-search`) for development use
350
+ - Comprehensive test suite: 43 tests, 158 assertions, 0 failures
351
+ - Flat test structure following ACE patterns (test/atoms/, test/molecules/, etc.)
352
+ - Test runner script for workspace context
353
+ - Integration with ace-test-support
354
+
355
+ **Documentation**
356
+ - Comprehensive README with usage examples
357
+ - Full usage guide with CLI flag reference
358
+ - Migration guide from dev-tools/exe/search
359
+ - Architecture documentation following ATOM patterns
360
+ - Example configurations and presets
361
+
362
+ ### Changed
363
+
364
+ **Improvements Over Legacy**
365
+ - File search now matches full paths, not just filenames
366
+ - Configuration supports all CLI flags as defaults (not possible in legacy)
367
+ - Presets organized in separate .yml files for better maintainability
368
+ - Direct ripgrep/fd calls for better performance
369
+ - Clean separation of concerns with ATOM architecture
370
+
371
+ ### Removed
372
+
373
+ - Editor integration (removed - use terminal's built-in file:line clicking instead)
374
+ - Custom project_root_detector (replaced with ace-core's ConfigDiscovery)
375
+
376
+ ### Fixed
377
+
378
+ - Pattern analyzer properly detects file globs vs content regex
379
+ - Result parser handles all ripgrep output formats (text, JSON, column numbers)
380
+ - Tool availability checking works across different environments
381
+
382
+ ### Migration Notes
383
+
384
+ From dev-tools/exe/search (0.8.0):
385
+ - All CLI flags work identically (except editor integration)
386
+ - Use bin/ace-search for development instead of dev-tools/exe/search
387
+ - Configuration moved from custom files to .ace/search/config.yml
388
+ - Presets moved to .ace/search/presets/ directory
389
+ - Performance maintained or improved with direct backend calls
390
+
391
+ ### Dependencies
392
+
393
+ - ace-core (~> 0.9) for configuration and utilities
394
+ - ripgrep (external) for content search
395
+ - fd (external) for file search
396
+ - fzf (external, optional) for interactive selection
397
+
398
+ [0.9.0]: https://github.com/cs3b/ace/releases/tag/ace-search-v0.9.0
399
+
400
+
401
+ ## [0.19.5] - 2026-02-22
402
+
403
+ ### Fixed
404
+ - Standardized quiet, verbose, debug option descriptions to canonical strings
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Michal Czyz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,42 @@
1
+ <div align="center">
2
+ <h1> ACE - Search </h1>
3
+
4
+ Unified codebase search -- one command that auto-detects files or content.
5
+
6
+ <img src="https://raw.githubusercontent.com/cs3b/ace/main/docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
7
+ <br><br>
8
+
9
+ <a href="https://rubygems.org/gems/ace-search"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-search.svg" /></a>
10
+ <a href="https://www.ruby-lang.org"><img alt="Ruby" src="https://img.shields.io/badge/Ruby-3.2+-CC342D?logo=ruby" /></a>
11
+ <a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg" /></a>
12
+
13
+ </div>
14
+
15
+ > Works with: Claude Code, Codex CLI, OpenCode, Gemini CLI, pi-agent, and more.
16
+
17
+ [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md)
18
+
19
+ ![ace-search demo](docs/demo/ace-search-getting-started.gif)
20
+
21
+ `ace-search` gives developers and coding agents a single search entry point that chooses file or content mode automatically (DWIM — Do What I Mean), keeps search scope predictable from any directory, and exposes fast output modes for workflow automation. Use `/as-search-run` for quick searches, `/as-search-research` for multi-search analysis, or `/as-search-feature-research` for implementation gap analysis.
22
+
23
+ ## How It Works
24
+
25
+ 1. Submit a query to [`ace-search`](docs/usage.md) and DWIM detection picks content search (ripgrep) or file search (fd) based on the pattern.
26
+ 2. Scope filters like `--staged`, `--tracked`, or `--changed` constrain results to Git-relevant files via [ace-git](../ace-git).
27
+ 3. Results are returned in your chosen format (text, JSON, YAML, count, or files-with-matches) for human review or downstream automation.
28
+
29
+ ## Use Cases
30
+
31
+ **Find code patterns without deciding tooling first** - run `ace-search "TODO"` or `ace-search "*.rb"` and let DWIM detection pick the right backend automatically.
32
+
33
+ **Constrain investigations to meaningful working sets** - combine `--staged`, `--tracked`, or `--changed` to inspect only [ace-git](../ace-git)-relevant files during reviews and refactors.
34
+
35
+ **Feed downstream tooling and automation** - use `--json`, `--yaml`, `--count`, or `--files-with-matches` for machine-readable pipelines and scripted checks.
36
+
37
+ **Standardize repeat searches across teams** - apply named presets with `--preset` via [ace-support-config](../ace-support-config) for consistent daily scans and focused research queries.
38
+
39
+ **Run multi-search research from an agent** - use `/as-search-research` to execute multiple related searches and synthesize findings, or `/as-search-feature-research` to analyze implementation gaps.
40
+
41
+ ---
42
+ [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md) | Part of [ACE](https://github.com/cs3b/ace)
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "minitest/test_task"
5
+
6
+ desc "Run tests using ace-test"
7
+ task :test do
8
+ sh "ace-test"
9
+ end
10
+
11
+ desc "Run tests directly (CI mode)"
12
+ Minitest::TestTask.create(:ci)
13
+
14
+ task default: :test
data/exe/ace-search ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "ace/support/cli"
5
+ require_relative "../lib/ace/search"
6
+
7
+ # Start ace-support-cli single-command entrypoint with exception-based exit code handling (per ADR-023)
8
+ begin
9
+ args = ARGV.empty? ? ["--help"] : ARGV
10
+ Ace::Support::Cli::Runner.new(Ace::Search::CLI::Commands::Search).call(args: args)
11
+ rescue Ace::Support::Cli::Error => e
12
+ warn e.message
13
+ exit(e.exit_code)
14
+ end