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.
- checksums.yaml +7 -0
- data/.ace-defaults/nav/protocols/wfi-sources/ace-search.yml +19 -0
- data/.ace-defaults/search/config.yml +45 -0
- data/.ace-defaults/search/presets/code.yml +22 -0
- data/CHANGELOG.md +404 -0
- data/LICENSE +21 -0
- data/README.md +42 -0
- data/Rakefile +14 -0
- data/exe/ace-search +14 -0
- data/handbook/agents/research.ag.md +214 -0
- data/handbook/agents/search.ag.md +331 -0
- data/handbook/skills/as-search-feature-research/SKILL.md +29 -0
- data/handbook/skills/as-search-research/SKILL.md +37 -0
- data/handbook/skills/as-search-run/SKILL.md +47 -0
- data/handbook/workflow-instructions/search/feature-research.wf.md +274 -0
- data/handbook/workflow-instructions/search/research.wf.md +211 -0
- data/handbook/workflow-instructions/search/run.wf.md +289 -0
- data/lib/ace/search/atoms/debug_logger.rb +61 -0
- data/lib/ace/search/atoms/fd_executor.rb +168 -0
- data/lib/ace/search/atoms/pattern_analyzer.rb +176 -0
- data/lib/ace/search/atoms/result_parser.rb +111 -0
- data/lib/ace/search/atoms/ripgrep_executor.rb +160 -0
- data/lib/ace/search/atoms/search_path_resolver.rb +79 -0
- data/lib/ace/search/atoms/tool_checker.rb +69 -0
- data/lib/ace/search/cli/commands/search.rb +240 -0
- data/lib/ace/search/cli.rb +34 -0
- data/lib/ace/search/models/search_options.rb +66 -0
- data/lib/ace/search/models/search_preset.rb +34 -0
- data/lib/ace/search/models/search_result.rb +109 -0
- data/lib/ace/search/molecules/dwim_analyzer.rb +52 -0
- data/lib/ace/search/molecules/fzf_integrator.rb +71 -0
- data/lib/ace/search/molecules/preset_manager.rb +98 -0
- data/lib/ace/search/molecules/search_option_builder.rb +113 -0
- data/lib/ace/search/molecules/time_filter.rb +60 -0
- data/lib/ace/search/organisms/result_aggregator.rb +73 -0
- data/lib/ace/search/organisms/result_formatter.rb +103 -0
- data/lib/ace/search/organisms/unified_searcher.rb +165 -0
- data/lib/ace/search/version.rb +7 -0
- data/lib/ace/search.rb +87 -0
- 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
|
+

|
|
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
|