ace-support-nav 0.25.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 (42) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/nav/config.yml +33 -0
  3. data/.ace-defaults/nav/protocols/guide-sources/ace-support-nav.yml +7 -0
  4. data/.ace-defaults/nav/protocols/guide.yml +69 -0
  5. data/.ace-defaults/nav/protocols/prompt.yml +39 -0
  6. data/.ace-defaults/nav/protocols/skill-sources/ace-support-nav.yml +19 -0
  7. data/.ace-defaults/nav/protocols/skill.yml +22 -0
  8. data/.ace-defaults/nav/protocols/tmpl-sources/ace-support-nav.yml +7 -0
  9. data/.ace-defaults/nav/protocols/tmpl.yml +55 -0
  10. data/.ace-defaults/nav/protocols/wfi-sources/ace-support-nav.yml +7 -0
  11. data/.ace-defaults/nav/protocols/wfi.yml +61 -0
  12. data/CHANGELOG.md +231 -0
  13. data/LICENSE +21 -0
  14. data/README.md +48 -0
  15. data/Rakefile +12 -0
  16. data/docs/demo/ace-support-nav-getting-started.gif +0 -0
  17. data/docs/demo/ace-support-nav-getting-started.tape.yml +28 -0
  18. data/exe/ace-nav +49 -0
  19. data/handbook/workflow-instructions/test.wfi.md +14 -0
  20. data/lib/ace/support/nav/atoms/extension_inferrer.rb +134 -0
  21. data/lib/ace/support/nav/atoms/gem_resolver.rb +59 -0
  22. data/lib/ace/support/nav/atoms/path_normalizer.rb +52 -0
  23. data/lib/ace/support/nav/atoms/uri_parser.rb +62 -0
  24. data/lib/ace/support/nav/cli/commands/create.rb +114 -0
  25. data/lib/ace/support/nav/cli/commands/list.rb +122 -0
  26. data/lib/ace/support/nav/cli/commands/resolve.rb +187 -0
  27. data/lib/ace/support/nav/cli/commands/sources.rb +112 -0
  28. data/lib/ace/support/nav/cli.rb +66 -0
  29. data/lib/ace/support/nav/models/handbook_source.rb +73 -0
  30. data/lib/ace/support/nav/models/protocol_source.rb +104 -0
  31. data/lib/ace/support/nav/models/resource.rb +46 -0
  32. data/lib/ace/support/nav/models/resource_uri.rb +78 -0
  33. data/lib/ace/support/nav/molecules/config_loader.rb +275 -0
  34. data/lib/ace/support/nav/molecules/handbook_scanner.rb +204 -0
  35. data/lib/ace/support/nav/molecules/protocol_scanner.rb +434 -0
  36. data/lib/ace/support/nav/molecules/resource_resolver.rb +134 -0
  37. data/lib/ace/support/nav/molecules/source_registry.rb +133 -0
  38. data/lib/ace/support/nav/organisms/command_delegator.rb +122 -0
  39. data/lib/ace/support/nav/organisms/navigation_engine.rb +180 -0
  40. data/lib/ace/support/nav/version.rb +9 -0
  41. data/lib/ace/support/nav.rb +104 -0
  42. metadata +228 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e493ee4ffdce85ef637ce1ab36225ce053b40f85b24570ec2503823bf981b8f3
4
+ data.tar.gz: 7b2f34fadee418efd1e2bbf7d66a836b7d54e5ca6a72fb549eb1424c85d0f68f
5
+ SHA512:
6
+ metadata.gz: 8dea4d0a2c5e5f511e84e76a72e33692aeda77eebf5d30d1a2549e980735d3253c2c27c68184d2a495d026b1681d9a33a87f613028e49fbe6e50a0a043680cfd
7
+ data.tar.gz: 9e9053d151aa8e3aa55d8d457114afe149c501263e3ddff69af774943bc502924458e70fb7424be5ff24e0485e8022ea4dd18fea91d978351384d4ebb215077f
@@ -0,0 +1,33 @@
1
+ # ace-nav configuration
2
+ # Place in .ace/nav/config.yml to customize
3
+ # ADR-022: This file is the single source of truth for defaults
4
+ #
5
+ # Configuration cascade:
6
+ # 1. .ace-defaults/nav/config.yml (gem defaults - this file)
7
+ # 2. ~/.ace/nav/config.yml (user defaults)
8
+ # 3. .ace/nav/config.yml (project overrides)
9
+
10
+ # Cache settings for protocol resolution
11
+ cache:
12
+ enabled: false # Enable caching of protocol lookups
13
+ directory: ".ace-local/nav" # Cache directory path
14
+ ttl: 3600 # Cache TTL in seconds (1 hour)
15
+
16
+ # Fuzzy matching settings for resource names
17
+ fuzzy:
18
+ enabled: true # Enable fuzzy matching for resource names
19
+ threshold: 0.6 # Minimum similarity score (0.0 - 1.0)
20
+
21
+ # Output settings
22
+ output:
23
+ color: true # Enable colored output
24
+ verbose: false # Enable verbose output
25
+
26
+ # Extension inference settings for protocol resolution
27
+ extension_inference:
28
+ enabled: true # Enable DWIM extension inference when exact match fails
29
+ fallback_order:
30
+ - protocol_shorthand # e.g., .g, .wf
31
+ - protocol_full # e.g., .g.md, .wf.md
32
+ - generic_markdown # .md
33
+ - bare # no extension
@@ -0,0 +1,7 @@
1
+ # Example: ace-support-nav guide sources
2
+ # Copy this file to .ace/protocols/guide-sources/ to enable
3
+ name: ace-support-nav
4
+ type: directory
5
+ path: ./handbook/guides/
6
+ priority: 100
7
+ description: "ace-support-nav guides and documentation"
@@ -0,0 +1,69 @@
1
+ # Protocol definition for guides
2
+ protocol: guide
3
+ name: "Guides"
4
+ description: "Documentation and how-to guides"
5
+ enabled: true
6
+
7
+
8
+ # File extensions to match
9
+ extensions:
10
+ - .g.md # shorthand first
11
+ - .guide.md # full second
12
+ - .md # generic last
13
+
14
+ # Extension inference for DWIM behavior
15
+ inferred_extensions:
16
+ - .g
17
+ - .guide
18
+ - .g.md
19
+ - .guide.md
20
+ - .md
21
+
22
+ # Categories for organizing guides
23
+ categories:
24
+ - getting-started
25
+ - architecture
26
+ - development
27
+ - deployment
28
+ - troubleshooting
29
+ - best-practices
30
+
31
+ # Template for creating new guides
32
+ create_template: |
33
+ # %{name}
34
+
35
+ ## Overview
36
+
37
+ Brief introduction to this guide.
38
+
39
+ ## Table of Contents
40
+
41
+ - [Section 1](#section-1)
42
+ - [Section 2](#section-2)
43
+ - [Section 3](#section-3)
44
+
45
+ ## Section 1
46
+
47
+ Content for section 1.
48
+
49
+ ## Section 2
50
+
51
+ Content for section 2.
52
+
53
+ ## Section 3
54
+
55
+ Content for section 3.
56
+
57
+ ## Related Guides
58
+
59
+ - Link to related guide 1
60
+ - Link to related guide 2
61
+
62
+ # Protocol capabilities
63
+ capabilities:
64
+ searchable: true
65
+ supports_glob: true
66
+ supports_create: true
67
+ supports_content: true
68
+ supports_list: true
69
+ supports_tree: true
@@ -0,0 +1,39 @@
1
+ # Protocol definition for system prompts
2
+ protocol: prompt
3
+ name: "System Prompts"
4
+ description: "System prompts for LLM interactions and tools"
5
+ enabled: true
6
+
7
+ # File extensions to match
8
+ extensions:
9
+ - .md
10
+ - .prompt.md
11
+
12
+ # Template for creating new prompts
13
+ create_template: |
14
+ # %{name} System Prompt
15
+
16
+ You are an expert in %{domain}. Your task is to %{task}.
17
+
18
+ ## Instructions
19
+
20
+ 1. Follow these guidelines
21
+ 2. Maintain consistency
22
+ 3. Be precise and clear
23
+
24
+ ## Format
25
+
26
+ Describe the expected output format.
27
+
28
+ ## Examples
29
+
30
+ Provide concrete examples of expected behavior.
31
+
32
+ # Protocol capabilities
33
+ capabilities:
34
+ searchable: true
35
+ supports_glob: true
36
+ supports_create: true
37
+ supports_content: true
38
+ supports_list: true
39
+ supports_tree: true
@@ -0,0 +1,19 @@
1
+ ---
2
+ # Skill Sources Protocol Configuration for ace-support-nav
3
+ # This enables canonical skill discovery from the ace-support-nav gem
4
+
5
+ name: ace-support-nav
6
+ type: gem
7
+ description: Canonical skills from ace-support-nav gem
8
+ priority: 10
9
+
10
+ # Configuration for skill discovery within the gem
11
+ config:
12
+ # Relative path within the gem
13
+ relative_path: handbook/skills
14
+
15
+ # Pattern for finding canonical skill files
16
+ pattern: "*/SKILL.md"
17
+
18
+ # Enable discovery
19
+ enabled: true
@@ -0,0 +1,22 @@
1
+ # Protocol definition for canonical skills
2
+ protocol: skill
3
+ name: "Canonical Skills"
4
+ description: "Canonical package-owned SKILL.md resources"
5
+ enabled: true
6
+
7
+ # Canonical skills resolve to handbook/skills/<name>/SKILL.md
8
+ extensions:
9
+ - /SKILL.md
10
+
11
+ # Extension inference for shorthand lookups
12
+ inferred_extensions:
13
+ - /SKILL.md
14
+
15
+ # Protocol capabilities
16
+ capabilities:
17
+ searchable: true
18
+ supports_glob: true
19
+ supports_create: false
20
+ supports_content: true
21
+ supports_list: true
22
+ supports_tree: true
@@ -0,0 +1,7 @@
1
+ # Example: ace-support-nav template sources
2
+ # Copy this file to .ace/protocols/tmpl-sources/ to enable
3
+ name: ace-support-nav
4
+ type: directory
5
+ path: ./handbook/templates/
6
+ priority: 100
7
+ description: "ace-support-nav templates"
@@ -0,0 +1,55 @@
1
+ # Protocol definition for templates
2
+ protocol: tmpl
3
+ name: "Templates"
4
+ description: "Reusable document and code templates"
5
+ enabled: true
6
+
7
+
8
+ # File extensions to match
9
+ extensions:
10
+ - .tmpl.md
11
+ - .template.md
12
+
13
+ # Categories for organizing templates
14
+ categories:
15
+ - minitest
16
+ - rspec
17
+ - task
18
+ - release
19
+ - documentation
20
+ - code-review
21
+
22
+ # Template for creating new templates
23
+ create_template: |
24
+ ---
25
+ name: %{name}
26
+ category: %{category}
27
+ description: Template description
28
+ ---
29
+
30
+ # %{name} Template
31
+
32
+ ## Usage
33
+
34
+ Describe how to use this template.
35
+
36
+ ## Template Content
37
+
38
+ [Your template content here]
39
+
40
+ ## Variables
41
+
42
+ - `%{variable}`: Description of this variable
43
+
44
+ ## Examples
45
+
46
+ Show examples of the template in use.
47
+
48
+ # Protocol capabilities
49
+ capabilities:
50
+ searchable: true
51
+ supports_glob: true
52
+ supports_create: true
53
+ supports_content: true
54
+ supports_list: true
55
+ supports_tree: true
@@ -0,0 +1,7 @@
1
+ # Example: ace-support-nav workflow instruction sources
2
+ # Copy this file to .ace/protocols/wfi-sources/ to enable
3
+ name: ace-support-nav
4
+ type: directory
5
+ path: ./handbook/workflow-instructions/
6
+ priority: 100
7
+ description: "ace-support-nav workflow instructions"
@@ -0,0 +1,61 @@
1
+ # Protocol definition for workflow instructions
2
+ protocol: wfi
3
+ name: "Workflow Instructions"
4
+ description: "Step-by-step workflow guides for development tasks"
5
+ enabled: true
6
+
7
+ # File extensions to match
8
+ extensions:
9
+ - .wf.md # shorthand first
10
+ - .wfi.md
11
+ - .workflow.md
12
+
13
+ # Extension inference for DWIM behavior
14
+ inferred_extensions:
15
+ - .wf
16
+ - .wfi
17
+ - .workflow
18
+ - .wf.md
19
+ - .wfi.md
20
+ - .workflow.md
21
+ - .md
22
+
23
+ # Template for creating new workflows
24
+ create_template: |
25
+ # %{name}
26
+
27
+ ## Goal
28
+
29
+ Describe the objective of this workflow.
30
+
31
+ ## Prerequisites
32
+
33
+ - List any requirements
34
+ - Tools or access needed
35
+
36
+ ## Process Steps
37
+
38
+ 1. **Step One**
39
+ - Details about this step
40
+ - Sub-steps if needed
41
+
42
+ 2. **Step Two**
43
+ - Details about this step
44
+
45
+ ## Success Criteria
46
+
47
+ - [ ] Criteria one
48
+ - [ ] Criteria two
49
+
50
+ ## Common Issues
51
+
52
+ Document any common problems and solutions.
53
+
54
+ # Protocol capabilities
55
+ capabilities:
56
+ searchable: true
57
+ supports_glob: true
58
+ supports_create: true
59
+ supports_content: true
60
+ supports_list: true
61
+ supports_tree: true
data/CHANGELOG.md ADDED
@@ -0,0 +1,231 @@
1
+ # Changelog
2
+
3
+ All notable changes to ace-support-nav 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.25.0] - 2026-03-23
11
+
12
+ ### Added
13
+ - Added getting-started demo tape and recorded GIF showing `ace-nav sources`, `list`, and `resolve` commands.
14
+
15
+ ### Changed
16
+ - Added Quick Start section with `ace-nav` CLI examples and handbook link in README footer navigation.
17
+ - Added `docs/**/*` to gemspec file glob for demo and documentation assets.
18
+
19
+ ## [0.24.0] - 2026-03-23
20
+
21
+ ### Changed
22
+ - Refreshed the README layout for clearer package positioning, quick section navigation, and streamlined `ace-nav` usage/configuration guidance.
23
+
24
+ ## [0.23.4] - 2026-03-22
25
+
26
+ ### Changed
27
+ - Standardized README usage examples to consistently run `ace-nav` and `ace-test` commands via `mise exec --` for clear execution context.
28
+
29
+ ## [0.23.3] - 2026-03-22
30
+
31
+ ### Changed
32
+ - Refreshed README structure with explicit purpose framing, standardized license/footer sections, and consistent support-package layout.
33
+ - Updated README navigation examples and feature inventory to include canonical `skill://` protocol usage.
34
+
35
+ ## [0.23.2] - 2026-03-19
36
+
37
+ ### Changed
38
+ - Expanded `TS-NAV-001` Goal 1 to include `ace-nav sources` command evidence capture in the runner and verifier contracts.
39
+ - Tightened Goal 4 and Goal 5 verifier expectations for missing-resource identification and protocol-specific shorthand evidence.
40
+
41
+ ## [0.23.1] - 2026-03-18
42
+
43
+ ### Changed
44
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
45
+
46
+
47
+ ## [0.23.0] - 2026-03-18
48
+
49
+ ### Changed
50
+ - Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
51
+
52
+
53
+ ## [0.22.1] - 2026-03-15
54
+
55
+ ### Changed
56
+ - Migrated CLI framework from dry-cli to ace-support-cli
57
+
58
+ ## [0.22.0] - 2026-03-12
59
+
60
+ ### Added
61
+ - Added explicit `start_path:` support to `SourceRegistry` so protocol source discovery can be rooted at an arbitrary project instead of always using process cwd.
62
+
63
+ ### Technical
64
+ - Added regression coverage for rooted source discovery used by nav-backed handbook skill inventory.
65
+
66
+ ## [0.21.0] - 2026-03-12
67
+
68
+ ### Added
69
+ - Added project and user handbook override root support for dedicated `.ace-handbook` and `~/.ace-handbook` directories, including default `ace-nav create` targets under the new project root.
70
+
71
+ ### Changed
72
+ - Changed project-local workflow registration and user-facing nav docs to point at `.ace-handbook` instead of `.ace/handbook`.
73
+
74
+ ### Technical
75
+ - Added regression coverage for `@project` / `@user` source discovery under the new override roots and for default create-target placement.
76
+
77
+ ## [0.20.0] - 2026-03-09
78
+
79
+ ### Added
80
+ - Added scanner/CLI/regression coverage for canonical `skill://` wildcard and direct lookup behavior, including priority-based duplicate resolution for canonical `SKILL.md` paths.
81
+
82
+ ### Changed
83
+ - Converted default `skill-sources` registration to gem-backed canonical discovery config and aligned it with `handbook/skills` + `*/SKILL.md` matching.
84
+
85
+ ## [0.19.0] - 2026-03-09
86
+
87
+ ### Added
88
+ - Added canonical `skill://` protocol defaults for package-owned skill discovery.
89
+ - Added default `skill-sources` scaffold for `handbook/skills` registration in nav protocol configuration.
90
+
91
+ ## [0.18.2] - 2026-03-04
92
+
93
+ ### Fixed
94
+ - Sandbox-safe HOME isolation in user-source and user-protocol tests to avoid permission errors when writing under real `~/.ace`.
95
+
96
+ ## [0.18.1] - 2026-03-04
97
+
98
+ ### Changed
99
+ - Default nav cache directory now uses `.ace-local/nav`.
100
+
101
+
102
+ ## [0.18.0] - 2026-03-04
103
+
104
+ ### Added
105
+ - `resolve_cmd_to_path` method for programmatic resolution of cmd-type protocol URIs (e.g., `task://ref`)
106
+
107
+ ### Fixed
108
+ - Prevent argument injection in `resolve_cmd_to_path` by escaping reference before command template interpolation
109
+ - Add 10-second timeout to cmd protocol execution to prevent indefinite hangs
110
+
111
+ ## [0.17.10] - 2026-02-23
112
+
113
+ ### Technical
114
+ - Updated internal dependency version constraints to current releases
115
+
116
+ ## [0.17.9] - 2026-02-22
117
+
118
+ ### Changed
119
+ - Migrate `ace-nav` to the standard multi-command help pattern with explicit top-level `help`, `--help`, and `-h` commands.
120
+ - Remove implicit default-command routing and require explicit `resolve`/`list`/`create`/`sources` command usage.
121
+ - Update README and command help examples to canonical explicit command forms.
122
+
123
+ ### Technical
124
+ - Remove custom default-routing from `CLI` (`start`, `KNOWN_COMMANDS`, `DEFAULT_COMMAND`) and switch executable dispatch to `Dry::CLI.new(...).call(arguments: ...)`.
125
+ - Normalize no-argument invocation to `--help` in `exe/ace-nav` and preserve legacy `--sources` / `--create` aliases via executable argument translation.
126
+ - Update integration tests to assert explicit dry-cli invocation behavior.
127
+
128
+ ## [0.17.7] - 2026-02-19
129
+
130
+ ### Technical
131
+ - Add test coverage for subdirectory protocol resolution patterns
132
+
133
+ ## [0.17.6] - 2026-02-17
134
+
135
+ ### Fixed
136
+ - Add `--tree` option to Resolve command to prevent dry-cli from calling `exit(1)` on unknown option
137
+ - This caused integration tests to crash mid-process, breaking both grouped and single-batch test execution
138
+ - `ace-test-suite` reported 0 tests for ace-support-nav because the subprocess died before minitest output
139
+
140
+ ### Technical
141
+ - Remove dead `navigation_integration_test.rb` that was permanently skipped via `runnable_methods` returning `[]`
142
+ - Consolidate E2E test configuration fixtures
143
+
144
+ ## [0.17.5] - 2026-02-11
145
+
146
+ ### Changed
147
+ - Simplified path resolution in `ProtocolSource` to consistently use project root
148
+ - Extracted `find_project_root` private method for cleaner code structure
149
+
150
+ ### Technical
151
+ - Migrate E2E tests to per-TC directory format
152
+ - Add E2E tests for ace-nav and ace-timestamp
153
+
154
+ ## [0.17.4] - 2026-02-02
155
+
156
+ ### Fixed
157
+ - Protocol listing with empty path (`wfi://`) now correctly lists all resources
158
+ - Empty path after `://` is now normalized to `nil` in `ResourceUri`
159
+ - Enables `pattern = uri.path || "*"` to default to wildcard
160
+ - Bare protocol names (`wfi`, `tmpl`, `guide`) now auto-expand to `protocol://` format
161
+ - Added `normalize_protocol_shorthand` in Resolve command
162
+ - Both `ace-nav wfi` and `ace-nav wfi://` now list all workflow instructions
163
+ - Extension inference prefix matching bug (TC-004)
164
+ - `start_with?` was too permissive, matching `multi-ext.guide.md` when searching for `multi-ext.g`
165
+ - Now validates character following candidate is either end-of-string or dot separator
166
+
167
+ ## [0.17.3] - 2026-01-24
168
+
169
+ ### Added
170
+ - Extension inference for protocol resolution (task 224)
171
+ - Add `ExtensionInferrer` atom for DWIM extension inference
172
+ - Configure inference via `.ace/nav/config.yml` with `extension_inference.enabled` and `fallback_order`
173
+ - Add `inferred_extensions` to protocol configs (guide.yml, wfi.yml)
174
+ - Update `ProtocolScanner` to use inference when exact match fails
175
+ - Strip extensions using both protocol and inferred extension lists
176
+
177
+ ## [0.17.2] - 2026-01-16
178
+
179
+ ### Changed
180
+ - Updated README.md references from ace-context to ace-bundle (task 206)
181
+
182
+ ## [0.17.1] - 2026-01-15
183
+
184
+ ### Changed
185
+ - Migrate CLI commands to Hanami pattern
186
+ - Move commands from `commands/` to `cli/commands/`
187
+ - Update namespace from `Commands::*` to `CLI::Commands::*`
188
+ - Update test file references for new namespace
189
+
190
+ ## [0.17.0] - 2026-01-12
191
+
192
+ ### Changed
193
+ - **BREAKING**: Renamed gem from `ace-nav` to `ace-support-nav`
194
+ - Namespace changed from `Ace::Nav` to `Ace::Support::Nav`
195
+ - Import path changed from `require "ace/nav"` to `require "ace/support/nav"`
196
+ - Gem dependency changed from `ace-nav` to `ace-support-nav`
197
+ - Executable remains `ace-nav` for backwards compatibility
198
+ - User config path `.ace/nav/` preserved for backward compatibility
199
+
200
+ ### Migration Guide
201
+ ```ruby
202
+ # Before
203
+ require "ace/nav"
204
+ Ace::Nav.config
205
+ Ace::Nav::CLI.start(ARGV)
206
+
207
+ # After
208
+ require "ace/support/nav"
209
+ Ace::Support::Nav.config
210
+ Ace::Support::Nav::CLI.start(ARGV)
211
+ ```
212
+
213
+ ## Previous Releases (as ace-nav)
214
+
215
+ For detailed changes prior to 0.17.0, see the git history of the ace-nav directory before the rename (commit da99d457b and earlier).
216
+
217
+ ### Notable releases before rename:
218
+
219
+ - **0.16.1**: Eliminated wrapper pattern in dry-cli commands
220
+ - **0.16.0**: Migrated CLI framework from Thor to dry-cli
221
+ - **0.15.0**: Thor CLI migration with standardized command structure
222
+ - **0.14.0**: Minimum Ruby version raised to 3.3.0
223
+ - **0.13.0**: Renamed `.ace.example/` to `.ace-defaults/`
224
+ - **0.10.0**: Added task:// Protocol Support
225
+ - **0.9.0**: Initial release with core navigation functionality
226
+
227
+
228
+ ## [0.17.8] - 2026-02-22
229
+
230
+ ### Fixed
231
+ - 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,48 @@
1
+ <div align="center">
2
+ <h1> ACE - Support Nav </h1>
3
+
4
+ Protocol-aware navigation and resource discovery for ACE handbook 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-support-nav"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-support-nav.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
+ `ace-support-nav` powers the `ace-nav` CLI with cascade-aware URI resolution across project, user, and gem sources. It supports built-in protocols (`wfi://`, `guide://`, `tmpl://`, `skill://`, `prompt://`) and extensible command protocols like `task://` for tool delegation, with override targeting, wildcard discovery, and fast cached lookups.
18
+
19
+ ## How It Works
20
+
21
+ 1. Accept a protocol URI (e.g., `wfi://setup`) and search project, user, and gem handbook sources in cascade order.
22
+ 2. Apply extension inference and override targeting (`@project` for repo `.ace-handbook/`, `@user` for `~/.ace-handbook/`, `@gem` for a specific gem's bundled handbook) to locate the best match.
23
+ 3. Return the resolved path, content, or a list of candidates for wildcard and prefix patterns.
24
+
25
+ ## Use Cases
26
+
27
+ **Resolve ACE resources without memorizing file paths** - run `ace-nav resolve wfi://setup` or `ace-nav resolve guide://configuration` to locate workflows, guides, templates, and skills through protocol URLs instead of raw paths.
28
+
29
+ **Target the right override layer explicitly** - use `@project`, `@user`, or specific gem aliases (e.g., `wfi://@ace-git/setup`) to bypass cascade ambiguity when multiple sources provide the same resource.
30
+
31
+ **Discover matching resources quickly** - use wildcard and prefix patterns like `ace-nav list 'wfi://*test*'` or `ace-nav resolve prompt://guidelines/` to browse available content across all handbook sources.
32
+
33
+ **Navigate task specs through the same interface** - use `task://` references (e.g., `ace-nav resolve task://083`) so task lookup shares the same navigation workflow as handbook resources, delegating to [ace-task](../ace-task) under the hood.
34
+
35
+ **Load resolved content into agent workflows** - pair with [ace-bundle](../ace-bundle) to fetch and embed resources discovered through `ace-nav` into agent context for skills and workflows.
36
+
37
+ ## Quick Start
38
+
39
+ ```bash
40
+ ace-nav resolve wfi://setup # Locate a workflow instruction
41
+ ace-nav resolve guide://configuration # Find a guide by protocol URI
42
+ ace-nav list 'wfi://*test*' # Wildcard search across sources
43
+ ace-nav --sources # List all registered handbook sources
44
+ ```
45
+
46
+ ---
47
+
48
+ [Handbook](handbook/) | Part of [ACE](https://github.com/cs3b/ace)
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test" << "lib"
8
+ t.test_files = FileList["test/**/*_test.rb"]
9
+ end
10
+
11
+ task spec: :test
12
+ task default: :test
@@ -0,0 +1,28 @@
1
+ ---
2
+ description: Browse and resolve ACE handbook resources with ace-nav
3
+ tags:
4
+ - docs
5
+ - nav
6
+ - getting-started
7
+ settings:
8
+ font_size: 16
9
+ width: 960
10
+ height: 480
11
+ format: gif
12
+ scenes:
13
+ - name: Show registered handbook sources
14
+ commands:
15
+ - type: ace-nav sources
16
+ sleep: 4s
17
+ - name: List all workflow instructions
18
+ commands:
19
+ - type: clear
20
+ sleep: 1s
21
+ - type: ace-nav list 'wfi://*'
22
+ sleep: 4s
23
+ - name: Resolve a specific workflow
24
+ commands:
25
+ - type: clear
26
+ sleep: 1s
27
+ - type: ace-nav resolve wfi://task/work
28
+ sleep: 4s