woods 2.0.0.beta2 → 2.0.0.beta4
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 +4 -4
- data/CHANGELOG.md +339 -1
- data/CONTRIBUTING.md +188 -12
- data/README.md +93 -174
- data/SECURITY.md +9 -6
- data/docs/AGENT_GUIDE.md +109 -8
- data/docs/AGENT_SETUP.md +98 -7
- data/docs/BACKEND_MATRIX.md +25 -0
- data/docs/CLIENT_HOOKS.md +111 -0
- data/docs/CONFIGURATION_REFERENCE.md +267 -16
- data/docs/CONSOLE_MCP_SETUP.md +80 -7
- data/docs/DOCKER_SETUP.md +22 -3
- data/docs/EVALUATION.md +464 -1
- data/docs/EXTRACTOR_REFERENCE.md +45 -6
- data/docs/FAQ.md +11 -12
- data/docs/GETTING_STARTED.md +17 -5
- data/docs/INCREMENTAL_EXTRACTION.md +147 -7
- data/docs/INDEX_LAYOUT.md +382 -0
- data/docs/INTERNALS.md +7 -2
- data/docs/MCP_SERVERS.md +276 -5
- data/docs/MCP_TOOL_COOKBOOK.md +37 -22
- data/docs/MCP_WORKTREE_SETUP.md +43 -83
- data/docs/NOTION_INTEGRATION.md +13 -0
- data/docs/OBSIDIAN_INTEGRATION.md +57 -9
- data/docs/PUBLISHED_INDEX.md +72 -0
- data/docs/README.md +7 -0
- data/docs/RETRIEVAL_GUIDE.md +273 -12
- data/docs/RUNTIME_TRACING.md +71 -0
- data/docs/SOURCE_FRESHNESS.md +143 -0
- data/docs/TROUBLESHOOTING.md +129 -18
- data/docs/UNBLOCKED_INTEGRATION.md +25 -0
- data/docs/UPGRADING_TO_2.md +48 -22
- data/docs/WATCH_DAEMON.md +277 -67
- data/exe/woods-agent-config +6 -0
- data/exe/woods-extract +5 -0
- data/exe/woods-hook-context +6 -0
- data/exe/woods-mcp-start +14 -9
- data/lib/generators/woods/pgvector_generator.rb +8 -2
- data/lib/generators/woods/templates/woods.rb.tt +1 -3
- data/lib/tasks/woods.rake +47 -397
- data/lib/woods/agent_configuration/applier.rb +135 -0
- data/lib/woods/agent_configuration/cli.rb +101 -0
- data/lib/woods/agent_configuration/cli_options.rb +29 -0
- data/lib/woods/agent_configuration/document.rb +105 -0
- data/lib/woods/agent_configuration/error.rb +7 -0
- data/lib/woods/agent_configuration/launcher.rb +75 -0
- data/lib/woods/agent_configuration/layout.rb +72 -0
- data/lib/woods/agent_configuration/managed_section.rb +62 -0
- data/lib/woods/agent_configuration/plan.rb +98 -0
- data/lib/woods/agent_configuration/plan_diff.rb +38 -0
- data/lib/woods/agent_configuration/planned_files.rb +61 -0
- data/lib/woods/agent_configuration/planner.rb +63 -0
- data/lib/woods/agent_configuration/planner_validation.rb +77 -0
- data/lib/woods/agent_configuration/preflight.rb +100 -0
- data/lib/woods/agent_configuration/recovery.rb +49 -0
- data/lib/woods/ast/node.rb +2 -0
- data/lib/woods/ast/parser.rb +38 -5
- data/lib/woods/builder.rb +21 -5
- data/lib/woods/cache/cache_middleware.rb +28 -7
- data/lib/woods/cache/cache_store.rb +4 -5
- data/lib/woods/change_set.rb +5 -4
- data/lib/woods/console/credential_index.rb +20 -2
- data/lib/woods/console/credential_scanner.rb +18 -17
- data/lib/woods/console/credential_scanner_registry.rb +36 -0
- data/lib/woods/console/dispatch_pipeline.rb +7 -0
- data/lib/woods/console/embedded_executor.rb +32 -10
- data/lib/woods/console/encrypted_credential_snapshot.rb +16 -0
- data/lib/woods/console/rack_middleware.rb +22 -13
- data/lib/woods/console/server.rb +18 -16
- data/lib/woods/console/sql_noise_stripper.rb +9 -7
- data/lib/woods/console/sql_table_scanner.rb +47 -7
- data/lib/woods/console/sql_validator.rb +49 -9
- data/lib/woods/console/sqlite_read_guard.rb +46 -0
- data/lib/woods/coordination/pipeline_lock.rb +3 -2
- data/lib/woods/dependency_graph.rb +65 -13
- data/lib/woods/embedding/corpus.rb +94 -0
- data/lib/woods/embedding/indexer.rb +114 -60
- data/lib/woods/embedding/openai.rb +17 -6
- data/lib/woods/evaluation/ablation_executor.rb +6 -1
- data/lib/woods/evaluation/ablation_timed_executor.rb +22 -4
- data/lib/woods/export/typed_reader.rb +56 -0
- data/lib/woods/extractor.rb +277 -149
- data/lib/woods/extractors/action_cable_extractor.rb +3 -1
- data/lib/woods/extractors/behavioral_profile.rb +9 -7
- data/lib/woods/extractors/caching_extractor.rb +3 -1
- data/lib/woods/extractors/concern_extractor.rb +64 -6
- data/lib/woods/extractors/configuration_extractor.rb +7 -3
- data/lib/woods/extractors/controller_extractor.rb +13 -4
- data/lib/woods/extractors/database_view_extractor.rb +3 -1
- data/lib/woods/extractors/declared_parent.rb +55 -0
- data/lib/woods/extractors/decorator_extractor.rb +3 -1
- data/lib/woods/extractors/engine_extractor.rb +3 -1
- data/lib/woods/extractors/event_extractor.rb +4 -2
- data/lib/woods/extractors/factory_extractor.rb +3 -1
- data/lib/woods/extractors/graphql_extractor.rb +10 -13
- data/lib/woods/extractors/i18n_extractor.rb +3 -1
- data/lib/woods/extractors/job_extractor.rb +6 -19
- data/lib/woods/extractors/lib_extractor.rb +13 -9
- data/lib/woods/extractors/mailer_extractor.rb +26 -15
- data/lib/woods/extractors/manager_extractor.rb +3 -1
- data/lib/woods/extractors/method_parameters.rb +53 -0
- data/lib/woods/extractors/middleware_argument.rb +65 -0
- data/lib/woods/extractors/middleware_extractor.rb +9 -3
- data/lib/woods/extractors/migration_extractor.rb +3 -1
- data/lib/woods/extractors/model_extractor.rb +26 -34
- data/lib/woods/extractors/package_extractor.rb +24 -4
- data/lib/woods/extractors/phlex_extractor.rb +3 -1
- data/lib/woods/extractors/policy_extractor.rb +3 -1
- data/lib/woods/extractors/poro_extractor.rb +13 -9
- data/lib/woods/extractors/pundit_extractor.rb +3 -1
- data/lib/woods/extractors/rails_source_extractor.rb +4 -2
- data/lib/woods/extractors/rake_task_extractor.rb +4 -2
- data/lib/woods/extractors/route_extractor.rb +3 -1
- data/lib/woods/extractors/route_helper_resolver.rb +10 -33
- data/lib/woods/extractors/scheduled_job_extractor.rb +41 -15
- data/lib/woods/extractors/serializer_extractor.rb +4 -2
- data/lib/woods/extractors/service_extractor.rb +3 -1
- data/lib/woods/extractors/shared_dependency_scanner.rb +2 -2
- data/lib/woods/extractors/shared_utility_methods.rb +48 -19
- data/lib/woods/extractors/source_nesting.rb +1 -1
- data/lib/woods/extractors/state_machine_extractor.rb +3 -1
- data/lib/woods/extractors/test_mapping_extractor.rb +3 -1
- data/lib/woods/extractors/validator_extractor.rb +3 -1
- data/lib/woods/extractors/view_component_extractor.rb +3 -1
- data/lib/woods/extractors/view_template_extractor.rb +3 -1
- data/lib/woods/gem_mapper.rb +2 -0
- data/lib/woods/git_history.rb +116 -0
- data/lib/woods/graph_analyzer.rb +35 -6
- data/lib/woods/hooks/context_cli.rb +54 -0
- data/lib/woods/hooks/context_event.rb +88 -0
- data/lib/woods/hooks/context_hint.rb +73 -0
- data/lib/woods/hooks/context_impact.rb +77 -0
- data/lib/woods/hooks/context_output.rb +47 -0
- data/lib/woods/hooks/context_state.rb +102 -0
- data/lib/woods/hooks/refresh.rb +79 -0
- data/lib/woods/hooks/rule_projection.rb +78 -0
- data/lib/woods/input_rules.rb +19 -0
- data/lib/woods/mcp/bearer_auth.rb +22 -13
- data/lib/woods/mcp/bootstrapper.rb +79 -4
- data/lib/woods/mcp/config_resolver.rb +2 -1
- data/lib/woods/mcp/index_reader.rb +334 -162
- data/lib/woods/mcp/initialization_guidance.rb +27 -0
- data/lib/woods/mcp/origin_guard.rb +17 -9
- data/lib/woods/mcp/published_lexical_retriever.rb +115 -0
- data/lib/woods/mcp/renderers/markdown_renderer.rb +22 -9
- data/lib/woods/mcp/renderers/plain_renderer.rb +18 -8
- data/lib/woods/mcp/search_results.rb +74 -0
- data/lib/woods/mcp/server.rb +178 -63
- data/lib/woods/mcp/tool_contract.rb +3 -1
- data/lib/woods/mcp/tool_response_renderer.rb +41 -0
- data/lib/woods/mcp/traversal_evidence.rb +113 -0
- data/lib/woods/mcp/traversal_evidence_index.rb +100 -0
- data/lib/woods/mcp/traversal_evidence_page.rb +41 -0
- data/lib/woods/mcp/traversal_evidence_text.rb +52 -0
- data/lib/woods/mcp/traversal_response.rb +22 -0
- data/lib/woods/notion/exporter.rb +56 -17
- data/lib/woods/obsidian/destination_plan.rb +98 -0
- data/lib/woods/obsidian/name_mapper.rb +19 -3
- data/lib/woods/obsidian/note_builder.rb +19 -10
- data/lib/woods/obsidian/vault_exporter.rb +88 -32
- data/lib/woods/operator/pipeline_guard.rb +18 -13
- data/lib/woods/path_dispatcher.rb +13 -6
- data/lib/woods/payload_store.rb +27 -26
- data/lib/woods/published_index/typed_unit_reader.rb +40 -3
- data/lib/woods/published_index.rb +2 -2
- data/lib/woods/railtie.rb +3 -3
- data/lib/woods/railtie_support.rb +12 -12
- data/lib/woods/rake_helpers.rb +382 -0
- data/lib/woods/resilience/graph_invariant_validator/membership_checks.rb +71 -0
- data/lib/woods/resilience/graph_invariant_validator/node_checks.rb +61 -0
- data/lib/woods/resilience/graph_invariant_validator/reverse_relationship_checks.rb +46 -0
- data/lib/woods/resilience/graph_invariant_validator.rb +119 -0
- data/lib/woods/resilience/index_validator/graph_checks.rb +80 -0
- data/lib/woods/resilience/index_validator.rb +112 -23
- data/lib/woods/retrieval/context_assembler.rb +50 -15
- data/lib/woods/retrieval/lexical_assembler.rb +84 -0
- data/lib/woods/retrieval/lexical_index.rb +120 -0
- data/lib/woods/retrieval/ranker.rb +4 -2
- data/lib/woods/retrieval/scope.rb +108 -0
- data/lib/woods/retrieval/scoped_graph_store.rb +32 -0
- data/lib/woods/retrieval/scoped_vector_store.rb +55 -0
- data/lib/woods/retrieval/search_executor.rb +86 -27
- data/lib/woods/retrieval/source_evidence.rb +200 -0
- data/lib/woods/retriever.rb +98 -22
- data/lib/woods/ruby_analyzer/trace_enricher.rb +77 -38
- data/lib/woods/session_tracer/file_store.rb +6 -1
- data/lib/woods/session_tracer/middleware.rb +10 -12
- data/lib/woods/session_tracer/redis_store.rb +22 -6
- data/lib/woods/session_tracer/session_flow_assembler.rb +23 -17
- data/lib/woods/session_tracer/solid_cache_coordination.rb +6 -4
- data/lib/woods/session_tracer/unit_resolver.rb +63 -0
- data/lib/woods/source_inputs/consumer_errors.rb +31 -0
- data/lib/woods/source_inputs/handoff.rb +102 -0
- data/lib/woods/source_inputs/launcher.rb +157 -0
- data/lib/woods/source_inputs/manifest.rb +124 -0
- data/lib/woods/source_inputs/private_key.rb +55 -0
- data/lib/woods/source_inputs/scanner.rb +171 -0
- data/lib/woods/source_inputs/scopes.rb +71 -0
- data/lib/woods/source_inputs/session.rb +214 -0
- data/lib/woods/source_inputs/status.rb +84 -0
- data/lib/woods/source_inputs/verifier.rb +107 -0
- data/lib/woods/storage/metadata_store.rb +25 -25
- data/lib/woods/storage/pgvector.rb +35 -10
- data/lib/woods/storage/qdrant.rb +17 -7
- data/lib/woods/storage/vector_store.rb +18 -6
- data/lib/woods/tasks.rb +3 -2
- data/lib/woods/temporal/json_snapshot_store.rb +58 -9
- data/lib/woods/unblocked/exporter.rb +59 -70
- data/lib/woods/version.rb +1 -1
- data/lib/woods/watch/boot_snapshot.rb +52 -0
- data/lib/woods/watch/daemon.rb +154 -32
- data/lib/woods/watch/listen_watcher.rb +4 -0
- data/lib/woods/watch/polling_watcher.rb +5 -1
- data/lib/woods/watch/status.rb +20 -15
- data/lib/woods/watch/tree_scan.rb +21 -13
- data/lib/woods/watch/watcher.rb +4 -1
- data/lib/woods.rb +50 -11
- data/plugin/.claude-plugin/plugin.json +1 -1
- data/plugin/hooks/adapters/normalize.jq +15 -0
- data/plugin/hooks/adapters/normalize.rb +63 -0
- data/plugin/hooks/hooks.json +20 -0
- data/plugin/hooks/woods-context.sh +50 -0
- data/plugin/hooks/woods-input-rules.sh +159 -0
- data/plugin/hooks/woods-opencode.mjs +65 -0
- data/plugin/hooks/woods-post-edit.sh +2 -225
- data/plugin/hooks/woods-refresh.sh +260 -0
- data/plugin/hooks/woods-session-start.sh +47 -55
- data/plugin/skills/woods-agent-enable/SKILL.md +19 -0
- data/plugin/skills/woods-diagnose/SKILL.md +319 -1
- data/plugin/skills/woods-investigate/SKILL.md +145 -0
- data/plugin/skills/woods-mcp-config/SKILL.md +90 -2
- data/plugin/skills/woods-setup/SKILL.md +110 -6
- metadata +87 -5
|
@@ -5,6 +5,19 @@ description: Configure Woods MCP connections with the exact client JSON shapes a
|
|
|
5
5
|
|
|
6
6
|
# Woods MCP configuration
|
|
7
7
|
|
|
8
|
+
## Managed configuration availability
|
|
9
|
+
|
|
10
|
+
`woods-agent-config` (#407) is available in Woods `2.0.0.beta3`. First record the
|
|
11
|
+
installed version and test `bundle exec woods-agent-config --help` in the
|
|
12
|
+
selected application bundle. When supported, use its saved setup/update/remove
|
|
13
|
+
plan and explicit client/scope/root selection; apply the reviewed plan within
|
|
14
|
+
the user's existing authorization. Do not infer ownership from a server name
|
|
15
|
+
or repair edited managed sections by overwriting them. Plans and recovery
|
|
16
|
+
journals contain private configuration bytes. See the canonical
|
|
17
|
+
[managed configuration runbook](https://github.com/lost-in-the/woods/blob/main/docs/AGENT_SETUP.md#managed-claude-code-configuration)
|
|
18
|
+
for host/Compose preflight, actual Claude file locations, conflict recovery,
|
|
19
|
+
and removal. Preserve manual setup for older installed versions.
|
|
20
|
+
|
|
8
21
|
## Preflight
|
|
9
22
|
|
|
10
23
|
```bash
|
|
@@ -17,6 +30,15 @@ This skill describes the Woods 2.x line; the authoritative minimum version lives
|
|
|
17
30
|
|
|
18
31
|
Default to Index-only. It reads generated code context and exposes 14 tools. Console MCP boots Rails and reads live data; ask before enabling it.
|
|
19
32
|
|
|
33
|
+
Initialization guidance (#402) is available in Woods `2.0.0.beta3`; check the
|
|
34
|
+
installed gem before expecting MCP `instructions`. Supporting servers provide
|
|
35
|
+
a short workflow through initialization or modern discovery; protocol
|
|
36
|
+
`2024-11-05` omits it. Missing instructions alone are not a connection failure.
|
|
37
|
+
Keep normal protocol negotiation and use the
|
|
38
|
+
[agent guide](https://github.com/lost-in-the/woods/blob/main/docs/AGENT_GUIDE.md)
|
|
39
|
+
when unavailable. See the
|
|
40
|
+
[initialization contract](https://github.com/lost-in-the/woods/blob/main/docs/MCP_SERVERS.md#initialization-guidance).
|
|
41
|
+
|
|
20
42
|
## Shape 1: Index-only
|
|
21
43
|
|
|
22
44
|
```json
|
|
@@ -33,6 +55,11 @@ Default to Index-only. It reads generated code context and exposes 14 tools. Con
|
|
|
33
55
|
|
|
34
56
|
Use this shape for any stdio-capable MCP client, adapted to the client's configuration location. `woods-mcp-start` validates and launches; it does not install or auto-restart.
|
|
35
57
|
|
|
58
|
+
Writer-version provenance (#323) is available in Woods `2.0.0.beta3`; check the installed
|
|
59
|
+
gem version's release notes before expecting `index.woods_version` in `woods_status`. It reports
|
|
60
|
+
the last manifest publisher, independently of `server.version`. Treat missing/null
|
|
61
|
+
as unknown and see [writer provenance](https://github.com/lost-in-the/woods/blob/main/docs/PUBLISHED_INDEX.md#manifest-writer-provenance).
|
|
62
|
+
|
|
36
63
|
When Woods is installed only in Docker, prefer running the server through the application container:
|
|
37
64
|
|
|
38
65
|
```json
|
|
@@ -47,10 +74,16 @@ When Woods is installed only in Docker, prefer running the server through the ap
|
|
|
47
74
|
}
|
|
48
75
|
```
|
|
49
76
|
|
|
50
|
-
Use a host-side bundle only after verifying Ruby, the application bundle, and the index are available on the host. Always pass the path visible to the process that runs `woods-mcp`.
|
|
77
|
+
Use a host-side bundle only after verifying Ruby, the application bundle, and the index are available on the host. Always pass the path visible to the process that runs `woods-mcp`. Prefer an explicit index path on all versions. After `2.0.0.beta3`, an unreleased change adds `WOODS_OUTPUT` as a fallback after the positional path and `WOODS_DIR`; check the installed version's configuration guide before relying on it. `woods-mcp-start` still refuses a missing path rather than selecting its working directory.
|
|
51
78
|
|
|
52
79
|
A read-only index mount is sufficient for structural tools. The `reload` tool for in-memory semantic retrieval also takes Woods' shared on-disk writer lock, so the MCP process needs write access to the index directory. Without it, reload returns a typed degraded error and keeps serving the previous aligned generation. Either grant that access or restart the MCP process after publishing a new embedded index.
|
|
53
80
|
|
|
81
|
+
For host MCP reading a container daemon's shared index, foreign heartbeat trust
|
|
82
|
+
(#321) is available in Woods `2.0.0.beta3`. Verify the installed gem version's release notes before
|
|
83
|
+
offering `WOODS_WATCH_TRUST_FOREIGN_HOST=1` in the MCP environment. It makes
|
|
84
|
+
`woods_status.watch.alive` use the same bounded freshness policy as task readers;
|
|
85
|
+
see [cross-host liveness](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#cross-host-liveness).
|
|
86
|
+
|
|
54
87
|
## Shape 2: Index plus authorized Console
|
|
55
88
|
|
|
56
89
|
After explicit authorization, enable the live-data master switch in the Rails initializer. The process exits while it remains false:
|
|
@@ -62,7 +95,14 @@ Woods.configure do |config|
|
|
|
62
95
|
end
|
|
63
96
|
```
|
|
64
97
|
|
|
65
|
-
The token authenticates HTTP requests and is not sent by a stdio client.
|
|
98
|
+
The token authenticates HTTP requests and is not sent by a stdio client.
|
|
99
|
+
Before suggesting `console_mcp_http_enabled = false`, verify that the installed
|
|
100
|
+
version supports it: the option is available in Woods `2.0.0.beta3`. Supported
|
|
101
|
+
stdio-only hosts can set it to `false` and omit the HTTP token; older
|
|
102
|
+
versions require the token at production boot whenever Console is enabled.
|
|
103
|
+
For HTTP, retain a strong token, allowed origins and TLS. Use installed-version
|
|
104
|
+
tagged documentation; the [canonical Console guide](https://github.com/lost-in-the/woods/blob/main/docs/CONSOLE_MCP_SETUP.md)
|
|
105
|
+
tracks current source.
|
|
66
106
|
|
|
67
107
|
Then add a direct Console process:
|
|
68
108
|
|
|
@@ -99,3 +139,51 @@ Reconnect through the client so it performs its supported MCP negotiation. Clien
|
|
|
99
139
|
Do not use an isolated raw JSON-RPC request as proof of MCP health. Do not claim conditional Index or inventory-only Console schemas are callable.
|
|
100
140
|
|
|
101
141
|
Canonical guide: [MCP_SERVERS.md](https://github.com/lost-in-the/woods/blob/main/docs/MCP_SERVERS.md).
|
|
142
|
+
|
|
143
|
+
## Lexical retrieval capability check
|
|
144
|
+
|
|
145
|
+
Lexical retrieval is available from `2.0.0.beta3`. Before proposing it, verify the installed gem
|
|
146
|
+
exposes `Woods::Configuration#retrieval_mode` and its matching guide documents
|
|
147
|
+
`WOODS_RETRIEVAL_MODE`. Keep the installed-version preflight; do not infer support
|
|
148
|
+
from the plugin version or an unreleased checkout.
|
|
149
|
+
|
|
150
|
+
When supported, put `WOODS_RETRIEVAL_MODE=lexical` in the environment of the
|
|
151
|
+
process launching Index MCP (stdio or HTTP). A Rails initializer alone is not
|
|
152
|
+
loaded by that process. Restart the MCP server after changing its environment, then confirm `woods_status.retriever.mode` reports `lexical`. A beta3 no-provider error may omit this option; it does not mean embeddings are required for explicit lexical mode.
|
|
153
|
+
See the [retrieval guide](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#embedding-free-lexical-retrieval)
|
|
154
|
+
for the supported contract, checked against the installed gem version.
|
|
155
|
+
|
|
156
|
+
## Explicit package or path scope
|
|
157
|
+
|
|
158
|
+
Check the connected tool's advertised input schema before sending `packages` or
|
|
159
|
+
`source_paths`; older installed gems may not support them. When present, both
|
|
160
|
+
`search` and `codebase_retrieve` apply explicit scope before candidate limits.
|
|
161
|
+
Use published nearest package names or application-relative directory prefixes,
|
|
162
|
+
then inspect `applied_scope` and search completeness. Unknown packages are argument
|
|
163
|
+
errors; unsupported custom vector adapters degrade instead of running a global
|
|
164
|
+
query. Scoping can hide relevant cross-boundary relationships, so broaden the
|
|
165
|
+
request deliberately when the task needs them. See the
|
|
166
|
+
[scope contract](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#explicit-package-and-source-path-scopes).
|
|
167
|
+
|
|
168
|
+
## Source-content freshness (Woods 2.0.0.beta3; #405)
|
|
169
|
+
|
|
170
|
+
Check installed-version support before using `woods-extract` or the optional
|
|
171
|
+
`woods_status.source_check` argument. With support, inspect
|
|
172
|
+
`index.source_freshness`: `current`, `drifted` or `unknown`. Repeated edits to an
|
|
173
|
+
already-dirty file can leave the porcelain fingerprint unchanged. A quick scan
|
|
174
|
+
limit may justify one `source_check: "deep"`; unavailable source/private keys or
|
|
175
|
+
unproved boot/consumer coverage remain unknown. A fresh `bundle exec woods-extract full`
|
|
176
|
+
inside the application environment establishes preboot evidence. Never publish
|
|
177
|
+
`.source-inputs.key`, silently change its permissions, or delete queued edits to
|
|
178
|
+
hide diagnostics. Follow [source freshness](https://github.com/lost-in-the/woods/blob/main/docs/SOURCE_FRESHNESS.md).
|
|
179
|
+
|
|
180
|
+
## Compact evidence capability check
|
|
181
|
+
|
|
182
|
+
Inspect the connected server's installed tool schemas before using `evidence` on
|
|
183
|
+
`lookup` or `codebase_retrieve`; older releases do not provide these controls.
|
|
184
|
+
When available, explicit `compact` selects complete published source spans and
|
|
185
|
+
`outline` lists declared APIs. Read omission/provenance fields and follow the
|
|
186
|
+
returned typed, SHA-guarded `full_evidence` lookup for verification. Published-unit
|
|
187
|
+
coordinates are not physical file offsets; unknown generation remains unknown.
|
|
188
|
+
Keep full-source access available. See the canonical
|
|
189
|
+
[evidence contract](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#compact-published-evidence-and-api-outlines).
|
|
@@ -7,6 +7,19 @@ description: Install, upgrade, and first-run-configure the Woods Rails code-inte
|
|
|
7
7
|
|
|
8
8
|
Install a structural Index Server first. Embeddings and Console MCP are separate opt-ins.
|
|
9
9
|
|
|
10
|
+
## Managed configuration availability
|
|
11
|
+
|
|
12
|
+
`woods-agent-config` (#407) is available in Woods `2.0.0.beta3`. First record the
|
|
13
|
+
installed version and test `bundle exec woods-agent-config --help` in the
|
|
14
|
+
selected application bundle. When supported, use its saved setup/update/remove
|
|
15
|
+
plan and explicit client/scope/root selection; apply the reviewed plan within
|
|
16
|
+
the user's existing authorization. Do not infer ownership from a server name
|
|
17
|
+
or repair edited managed sections by overwriting them. Plans and recovery
|
|
18
|
+
journals contain private configuration bytes. See the canonical
|
|
19
|
+
[managed configuration runbook](https://github.com/lost-in-the/woods/blob/main/docs/AGENT_SETUP.md#managed-claude-code-configuration)
|
|
20
|
+
for host/Compose preflight, actual Claude file locations, conflict recovery,
|
|
21
|
+
and removal. Preserve manual setup for older installed versions.
|
|
22
|
+
|
|
10
23
|
## Preflight
|
|
11
24
|
|
|
12
25
|
Read repository instructions and preserve unrelated changes. Record:
|
|
@@ -23,7 +36,14 @@ This skill describes the Woods 2.x line; the authoritative minimum version lives
|
|
|
23
36
|
|
|
24
37
|
## Install and inspect
|
|
25
38
|
|
|
26
|
-
|
|
39
|
+
Choose the published version using the canonical
|
|
40
|
+
[installation guide](https://github.com/lost-in-the/woods/blob/main/docs/GETTING_STARTED.md#1-install-the-gem)
|
|
41
|
+
and its linked README release table. When only prereleases are published for
|
|
42
|
+
2.x, add the exact published beta/RC constraint shown there to the development
|
|
43
|
+
group; `~> 2.0` does not select prereleases. Use `gem "woods", "~> 2.0"` only after
|
|
44
|
+
a stable 2.x release is published. Follow the selected version's tag docs and
|
|
45
|
+
verify installed capabilities; installing this plugin does not install `main`
|
|
46
|
+
features. Then run:
|
|
27
47
|
|
|
28
48
|
```bash
|
|
29
49
|
bundle install
|
|
@@ -54,6 +74,12 @@ bin/rails woods:stats
|
|
|
54
74
|
|
|
55
75
|
If extraction fails, reproduce Rails boot and eager loading first. Do not inspect internal payload files when Woods tasks provide the check.
|
|
56
76
|
|
|
77
|
+
Writer-version provenance (#323) is available in Woods `2.0.0.beta3`; check the installed
|
|
78
|
+
gem version's release notes before expecting `woods_status.index.woods_version`. When present,
|
|
79
|
+
it names the last manifest publisher; `server.version` names the MCP reader.
|
|
80
|
+
Missing/null means unknown. A matching version after an incremental run never
|
|
81
|
+
replaces a required full upgrade extraction. See [writer provenance](https://github.com/lost-in-the/woods/blob/main/docs/PUBLISHED_INDEX.md#manifest-writer-provenance).
|
|
82
|
+
|
|
57
83
|
Configure the Index Server with the application bundle, absolute app `cwd`, and an index path visible to that process. For a host-installed bundle:
|
|
58
84
|
|
|
59
85
|
```json
|
|
@@ -82,14 +108,55 @@ When Woods is installed only in Docker, launch it through the application servic
|
|
|
82
108
|
}
|
|
83
109
|
```
|
|
84
110
|
|
|
85
|
-
Reconnect and call `woods_status`, then `search`, `lookup`, and `dependents` for a known class. The normal Index Server has 14 tools. `codebase_retrieve` requires configured embeddings.
|
|
86
|
-
|
|
87
|
-
Offer to add `bundle exec rake woods:watch` to the existing development process manager. When authorized, it catches up missed changes and automatically maintains the structural index; the Index Server refreshes on its next call, so ordinary edits need no manual extraction or MCP restart. State that boot-captured changes require supervisor restart, Docker may need `WOODS_WATCH_POLL=1`, and semantic vectors still need `woods:embed_incremental`.
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
Reconnect and call `woods_status`, then `search`, `lookup`, and `dependents` for a known class. The normal Index Server has 14 tools. `codebase_retrieve` requires configured embeddings in semantic mode; see the lexical capability check below for the opt-in provider-free mode.
|
|
112
|
+
|
|
113
|
+
Offer to add `bundle exec rake woods:watch` to the existing development process manager. When authorized, it catches up missed changes and automatically maintains the structural index; the Index Server refreshes on its next call, so ordinary edits need no manual extraction or MCP restart. Use the standalone watch command; do not prepend the `environment` task. Check the installed version's watch guide before relying on automatic startup reconciliation. State that live boot-captured changes require supervisor restart, Docker may need `WOODS_WATCH_POLL=1`, and semantic vectors still need `woods:embed_incremental`.
|
|
114
|
+
|
|
115
|
+
Foreign-host heartbeat trust (`WOODS_WATCH_TRUST_FOREIGN_HOST=1`, #321) is available in
|
|
116
|
+
Woods `2.0.0.beta3`.
|
|
117
|
+
Check the installed gem version against its release notes before offering it;
|
|
118
|
+
do not assume installing this plugin upgrades the gem. For a supporting version,
|
|
119
|
+
follow [cross-host liveness](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#cross-host-liveness)
|
|
120
|
+
and set the opt-in in each task/MCP reader of a shared container index. Explain
|
|
121
|
+
the 15-minute crash-detection delay and preserve one supervisor per daemon.
|
|
122
|
+
|
|
123
|
+
For slow bind mounts, check whether the installed version documents
|
|
124
|
+
`WOODS_WATCH_POLL_INTERVAL` before suggesting it; this setting is available in Woods
|
|
125
|
+
`2.0.0.beta3`. Where supported, a positive value such as `2.5` reduces
|
|
126
|
+
polling frequency at the cost of detection latency. Use the installed preflight version to select tagged documentation; the
|
|
127
|
+
[canonical watch guide](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md)
|
|
128
|
+
tracks current source and may describe unreleased behavior.
|
|
129
|
+
|
|
130
|
+
The plugin ships opt-in refresh and session-start hooks. The expanded refresh
|
|
131
|
+
contract (#408) is available in Woods `2.0.0.beta3`: first verify the installed
|
|
132
|
+
gem exposes `woods:hook_refresh` through the actual application command. Do not
|
|
133
|
+
infer support from the plugin version. With support, edits to standard services,
|
|
134
|
+
controllers, jobs, views, concerns, locales, supported tests/lib files, routes,
|
|
135
|
+
and packages queue incremental work; boot/config/schema edits request a fresh
|
|
136
|
+
full extraction. A live daemon defers without acknowledging the queue. Failed or
|
|
137
|
+
deferred events remain under `<output>/hook-pending/` and retry on the next
|
|
138
|
+
relevant edit. Inspect `hook.log` before retrying; never delete pending events to
|
|
139
|
+
hide a failure. Prefer `woods:watch` for sustained edits because hook coverage
|
|
140
|
+
increases Rails boot frequency.
|
|
141
|
+
|
|
142
|
+
Both hooks require an existing index and `WOODS_HOOKS_ENABLED=1`; disable with
|
|
143
|
+
`WOODS_HOOKS_DISABLED=1`. Use `WOODS_HOOK_RAKE="docker compose exec -T app bundle
|
|
144
|
+
exec rake"` for a container-only bundle and `WOODS_OUTPUT` for a non-default
|
|
145
|
+
index. The host needs Bash and either jq or Ruby, not the application bundle.
|
|
146
|
+
The refresh worker's deadline starts after the complete event input has been
|
|
147
|
+
collected, validated, and queued; it does not bound input collection. It includes
|
|
148
|
+
subsequent batches, but cancelling Docker exec does not prove its container
|
|
149
|
+
process stopped. See the [hook deadline and retry contract](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#hooks-for-agent-sessions).
|
|
150
|
+
Source freshness (#405) is available in Woods `2.0.0.beta3`: verify the installed command
|
|
151
|
+
exposes `woods:source_status` and `woods-extract` before using it. Supporting
|
|
152
|
+
SessionStart hooks check source content and report missing/failed evidence as
|
|
153
|
+
unknown; silence does not acknowledge queued refresh work. Follow the [hook guide](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#hooks-for-agent-sessions)
|
|
154
|
+
for transport, retry and custom-root limits.
|
|
90
155
|
|
|
91
156
|
## Ask before expanding scope
|
|
92
157
|
|
|
158
|
+
For pgvector, match the provider output and migration dimensions within 1–2,000. Default `text-embedding-3-large` output (3,072) needs an explicit smaller provider width or another backend; never silently truncate vectors. Early adapter/generator refusal is unreleased after `2.0.0.beta3`, so check the installed revision. See the [dimension contract](https://github.com/lost-in-the/woods/blob/main/docs/CONFIGURATION_REFERENCE.md#pgvector-postgresql).
|
|
159
|
+
|
|
93
160
|
Require explicit approval before adding Ollama/OpenAI, pgvector/Qdrant, secrets, Console MCP/live-data access, HTTP transport, or purge overrides. The `:local` preset avoids cloud keys but requires the `sqlite3` gem, an installed/running Ollama service, and a pulled model (`ollama pull nomic-embed-text` by default); `:shared_filesystem` avoids sqlite3 but still uses Ollama. Recommend `gem "tokenizers", "~> 0.5"` for exact counting on dense Ruby source, while stating that it is optional.
|
|
94
161
|
|
|
95
162
|
## Handoff
|
|
@@ -97,3 +164,40 @@ Require explicit approval before adding Ollama/OpenAI, pgvector/Qdrant, secrets,
|
|
|
97
164
|
Report the Woods version, branch, files changed, commands/results, index path, MCP calls verified, semantic retrieval status, Console status, and unresolved risks. Never infer availability from source schemas alone.
|
|
98
165
|
|
|
99
166
|
Canonical runbook: [AGENT_SETUP.md](https://github.com/lost-in-the/woods/blob/main/docs/AGENT_SETUP.md).
|
|
167
|
+
|
|
168
|
+
## Lexical retrieval capability check
|
|
169
|
+
|
|
170
|
+
Lexical retrieval is available from `2.0.0.beta3`. Before proposing it, verify the installed gem
|
|
171
|
+
exposes `Woods::Configuration#retrieval_mode` and its matching guide documents
|
|
172
|
+
`WOODS_RETRIEVAL_MODE`. Keep the installed-version preflight; do not infer support
|
|
173
|
+
from the plugin version or an unreleased checkout.
|
|
174
|
+
|
|
175
|
+
When supported and authorized, offer explicit lexical mode for ranked discovery
|
|
176
|
+
over extraction output without provider credentials or vectors. Semantic mode
|
|
177
|
+
remains the default; setting up embeddings is a separate choice.
|
|
178
|
+
See the [retrieval guide](https://github.com/lost-in-the/woods/blob/main/docs/RETRIEVAL_GUIDE.md#embedding-free-lexical-retrieval)
|
|
179
|
+
for the supported contract, checked against the installed gem version.
|
|
180
|
+
|
|
181
|
+
## Explicit edit adapters (Woods 2.0.0.beta3; #409)
|
|
182
|
+
|
|
183
|
+
Check the installed gem exposes `woods:hook_refresh` before enabling hooks.
|
|
184
|
+
Claude's registered wrapper covers one documented edit path; OpenCode 1.18.27
|
|
185
|
+
has a separate native `.js` registration wrapper importing Woods' shipped
|
|
186
|
+
adapter. Its verified patch metadata carries all added/updated/deleted/moved
|
|
187
|
+
paths. Keep the complete plugin directory available, preserve opt-in/disable
|
|
188
|
+
settings and pending events, and inspect the generation and hook log before
|
|
189
|
+
claiming refresh. Unsupported tool shapes and symlink paths need watch or an
|
|
190
|
+
explicit extraction. Do not install native client registration without the
|
|
191
|
+
user's setup request. Follow [client hooks](https://github.com/lost-in-the/woods/blob/main/docs/CLIENT_HOOKS.md).
|
|
192
|
+
|
|
193
|
+
## Optional context hints
|
|
194
|
+
|
|
195
|
+
Check installed `bundle exec woods-hook-context --help` before enabling
|
|
196
|
+
`WOODS_HOOK_CONTEXT_ENABLED=1`; this capability is available in Woods `2.0.0.beta3` and the
|
|
197
|
+
plugin does not upgrade the gem. Context and refresh opt-ins are independent;
|
|
198
|
+
`WOODS_HOOKS_DISABLED=1` disables both. Native Claude context is synchronous and
|
|
199
|
+
bounded, with served-generation and pre-refresh/unknown labels. Verify candidate
|
|
200
|
+
dependents and suggested tests manually; silence is not no impact. Do not clear
|
|
201
|
+
refresh queues when optional hints time out. See the canonical
|
|
202
|
+
[context guide](https://github.com/lost-in-the/woods/blob/main/docs/WATCH_DAEMON.md#optional-bounded-context-hints)
|
|
203
|
+
for output/time limits, container root mapping and emitted-hint suppression.
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: woods
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.0.
|
|
4
|
+
version: 2.0.0.beta4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Leah Armstrong
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: mcp
|
|
@@ -118,6 +118,9 @@ executables:
|
|
|
118
118
|
- woods-console-mcp
|
|
119
119
|
- woods-console
|
|
120
120
|
- woods-mcp-http
|
|
121
|
+
- woods-agent-config
|
|
122
|
+
- woods-extract
|
|
123
|
+
- woods-hook-context
|
|
121
124
|
extensions: []
|
|
122
125
|
extra_rdoc_files: []
|
|
123
126
|
files:
|
|
@@ -131,6 +134,7 @@ files:
|
|
|
131
134
|
- docs/AGENT_GUIDE.md
|
|
132
135
|
- docs/AGENT_SETUP.md
|
|
133
136
|
- docs/BACKEND_MATRIX.md
|
|
137
|
+
- docs/CLIENT_HOOKS.md
|
|
134
138
|
- docs/CONFIGURATION_REFERENCE.md
|
|
135
139
|
- docs/CONSOLE_MCP_SETUP.md
|
|
136
140
|
- docs/DOCKER_SETUP.md
|
|
@@ -140,6 +144,7 @@ files:
|
|
|
140
144
|
- docs/FAQ.md
|
|
141
145
|
- docs/GETTING_STARTED.md
|
|
142
146
|
- docs/INCREMENTAL_EXTRACTION.md
|
|
147
|
+
- docs/INDEX_LAYOUT.md
|
|
143
148
|
- docs/INTERNALS.md
|
|
144
149
|
- docs/MCP_HTTP_TRANSPORT.md
|
|
145
150
|
- docs/MCP_SERVERS.md
|
|
@@ -150,14 +155,19 @@ files:
|
|
|
150
155
|
- docs/PUBLISHED_INDEX.md
|
|
151
156
|
- docs/README.md
|
|
152
157
|
- docs/RETRIEVAL_GUIDE.md
|
|
158
|
+
- docs/RUNTIME_TRACING.md
|
|
159
|
+
- docs/SOURCE_FRESHNESS.md
|
|
153
160
|
- docs/TOKEN_BENCHMARK.md
|
|
154
161
|
- docs/TROUBLESHOOTING.md
|
|
155
162
|
- docs/UNBLOCKED_INTEGRATION.md
|
|
156
163
|
- docs/UPGRADING_TO_2.md
|
|
157
164
|
- docs/WATCH_DAEMON.md
|
|
158
165
|
- docs/WHY_WOODS.md
|
|
166
|
+
- exe/woods-agent-config
|
|
159
167
|
- exe/woods-console
|
|
160
168
|
- exe/woods-console-mcp
|
|
169
|
+
- exe/woods-extract
|
|
170
|
+
- exe/woods-hook-context
|
|
161
171
|
- exe/woods-mcp
|
|
162
172
|
- exe/woods-mcp-http
|
|
163
173
|
- exe/woods-mcp-start
|
|
@@ -170,6 +180,21 @@ files:
|
|
|
170
180
|
- lib/tasks/woods_checks.rake
|
|
171
181
|
- lib/tasks/woods_evaluation.rake
|
|
172
182
|
- lib/woods.rb
|
|
183
|
+
- lib/woods/agent_configuration/applier.rb
|
|
184
|
+
- lib/woods/agent_configuration/cli.rb
|
|
185
|
+
- lib/woods/agent_configuration/cli_options.rb
|
|
186
|
+
- lib/woods/agent_configuration/document.rb
|
|
187
|
+
- lib/woods/agent_configuration/error.rb
|
|
188
|
+
- lib/woods/agent_configuration/launcher.rb
|
|
189
|
+
- lib/woods/agent_configuration/layout.rb
|
|
190
|
+
- lib/woods/agent_configuration/managed_section.rb
|
|
191
|
+
- lib/woods/agent_configuration/plan.rb
|
|
192
|
+
- lib/woods/agent_configuration/plan_diff.rb
|
|
193
|
+
- lib/woods/agent_configuration/planned_files.rb
|
|
194
|
+
- lib/woods/agent_configuration/planner.rb
|
|
195
|
+
- lib/woods/agent_configuration/planner_validation.rb
|
|
196
|
+
- lib/woods/agent_configuration/preflight.rb
|
|
197
|
+
- lib/woods/agent_configuration/recovery.rb
|
|
173
198
|
- lib/woods/ast.rb
|
|
174
199
|
- lib/woods/ast/call_site_extractor.rb
|
|
175
200
|
- lib/woods/ast/method_extractor.rb
|
|
@@ -193,8 +218,10 @@ files:
|
|
|
193
218
|
- lib/woods/console/console_response_renderer.rb
|
|
194
219
|
- lib/woods/console/credential_index.rb
|
|
195
220
|
- lib/woods/console/credential_scanner.rb
|
|
221
|
+
- lib/woods/console/credential_scanner_registry.rb
|
|
196
222
|
- lib/woods/console/dispatch_pipeline.rb
|
|
197
223
|
- lib/woods/console/embedded_executor.rb
|
|
224
|
+
- lib/woods/console/encrypted_credential_snapshot.rb
|
|
198
225
|
- lib/woods/console/eval_guard.rb
|
|
199
226
|
- lib/woods/console/input_contract.rb
|
|
200
227
|
- lib/woods/console/model_validator.rb
|
|
@@ -207,6 +234,7 @@ files:
|
|
|
207
234
|
- lib/woods/console/sql_noise_stripper.rb
|
|
208
235
|
- lib/woods/console/sql_table_scanner.rb
|
|
209
236
|
- lib/woods/console/sql_validator.rb
|
|
237
|
+
- lib/woods/console/sqlite_read_guard.rb
|
|
210
238
|
- lib/woods/console/table_gate.rb
|
|
211
239
|
- lib/woods/console/tool_specs.rb
|
|
212
240
|
- lib/woods/console/tools/tier1.rb
|
|
@@ -230,6 +258,7 @@ files:
|
|
|
230
258
|
- lib/woods/db/migrator.rb
|
|
231
259
|
- lib/woods/db/schema_version.rb
|
|
232
260
|
- lib/woods/dependency_graph.rb
|
|
261
|
+
- lib/woods/embedding/corpus.rb
|
|
233
262
|
- lib/woods/embedding/fake.rb
|
|
234
263
|
- lib/woods/embedding/indexer.rb
|
|
235
264
|
- lib/woods/embedding/openai.rb
|
|
@@ -252,6 +281,7 @@ files:
|
|
|
252
281
|
- lib/woods/evaluation/metrics.rb
|
|
253
282
|
- lib/woods/evaluation/query_set.rb
|
|
254
283
|
- lib/woods/evaluation/report_generator.rb
|
|
284
|
+
- lib/woods/export/typed_reader.rb
|
|
255
285
|
- lib/woods/export/unit_facts.rb
|
|
256
286
|
- lib/woods/extracted_unit.rb
|
|
257
287
|
- lib/woods/extractor.rb
|
|
@@ -265,6 +295,7 @@ files:
|
|
|
265
295
|
- lib/woods/extractors/configuration_extractor.rb
|
|
266
296
|
- lib/woods/extractors/controller_extractor.rb
|
|
267
297
|
- lib/woods/extractors/database_view_extractor.rb
|
|
298
|
+
- lib/woods/extractors/declared_parent.rb
|
|
268
299
|
- lib/woods/extractors/decorator_extractor.rb
|
|
269
300
|
- lib/woods/extractors/engine_extractor.rb
|
|
270
301
|
- lib/woods/extractors/event_extractor.rb
|
|
@@ -276,6 +307,8 @@ files:
|
|
|
276
307
|
- lib/woods/extractors/line_neutralizer.rb
|
|
277
308
|
- lib/woods/extractors/mailer_extractor.rb
|
|
278
309
|
- lib/woods/extractors/manager_extractor.rb
|
|
310
|
+
- lib/woods/extractors/method_parameters.rb
|
|
311
|
+
- lib/woods/extractors/middleware_argument.rb
|
|
279
312
|
- lib/woods/extractors/middleware_extractor.rb
|
|
280
313
|
- lib/woods/extractors/migration_extractor.rb
|
|
281
314
|
- lib/woods/extractors/model_extractor.rb
|
|
@@ -315,9 +348,19 @@ files:
|
|
|
315
348
|
- lib/woods/gem_mapper.rb
|
|
316
349
|
- lib/woods/generation.rb
|
|
317
350
|
- lib/woods/git_command.rb
|
|
351
|
+
- lib/woods/git_history.rb
|
|
318
352
|
- lib/woods/git_provenance.rb
|
|
319
353
|
- lib/woods/graph_analyzer.rb
|
|
354
|
+
- lib/woods/hooks/context_cli.rb
|
|
355
|
+
- lib/woods/hooks/context_event.rb
|
|
356
|
+
- lib/woods/hooks/context_hint.rb
|
|
357
|
+
- lib/woods/hooks/context_impact.rb
|
|
358
|
+
- lib/woods/hooks/context_output.rb
|
|
359
|
+
- lib/woods/hooks/context_state.rb
|
|
360
|
+
- lib/woods/hooks/refresh.rb
|
|
361
|
+
- lib/woods/hooks/rule_projection.rb
|
|
320
362
|
- lib/woods/index_artifact.rb
|
|
363
|
+
- lib/woods/input_rules.rb
|
|
321
364
|
- lib/woods/mcp/bearer_auth.rb
|
|
322
365
|
- lib/woods/mcp/bootstrap_state.rb
|
|
323
366
|
- lib/woods/mcp/bootstrapper.rb
|
|
@@ -325,19 +368,27 @@ files:
|
|
|
325
368
|
- lib/woods/mcp/errors.rb
|
|
326
369
|
- lib/woods/mcp/index_reader.rb
|
|
327
370
|
- lib/woods/mcp/index_reader_pinning.rb
|
|
371
|
+
- lib/woods/mcp/initialization_guidance.rb
|
|
328
372
|
- lib/woods/mcp/origin_guard.rb
|
|
329
373
|
- lib/woods/mcp/protocol_policy.rb
|
|
330
374
|
- lib/woods/mcp/provider_probe.rb
|
|
375
|
+
- lib/woods/mcp/published_lexical_retriever.rb
|
|
331
376
|
- lib/woods/mcp/renderers/claude_renderer.rb
|
|
332
377
|
- lib/woods/mcp/renderers/json_renderer.rb
|
|
333
378
|
- lib/woods/mcp/renderers/markdown_renderer.rb
|
|
334
379
|
- lib/woods/mcp/renderers/plain_renderer.rb
|
|
380
|
+
- lib/woods/mcp/search_results.rb
|
|
335
381
|
- lib/woods/mcp/server.rb
|
|
336
382
|
- lib/woods/mcp/tasks/extension.rb
|
|
337
383
|
- lib/woods/mcp/tasks/request_capture.rb
|
|
338
384
|
- lib/woods/mcp/tasks/store.rb
|
|
339
385
|
- lib/woods/mcp/tool_contract.rb
|
|
340
386
|
- lib/woods/mcp/tool_response_renderer.rb
|
|
387
|
+
- lib/woods/mcp/traversal_evidence.rb
|
|
388
|
+
- lib/woods/mcp/traversal_evidence_index.rb
|
|
389
|
+
- lib/woods/mcp/traversal_evidence_page.rb
|
|
390
|
+
- lib/woods/mcp/traversal_evidence_text.rb
|
|
391
|
+
- lib/woods/mcp/traversal_response.rb
|
|
341
392
|
- lib/woods/mcp/version_aware_tool_dispatch.rb
|
|
342
393
|
- lib/woods/model_name_cache.rb
|
|
343
394
|
- lib/woods/notion/client.rb
|
|
@@ -349,6 +400,7 @@ files:
|
|
|
349
400
|
- lib/woods/notion/rate_limiter.rb
|
|
350
401
|
- lib/woods/notion/sync_manifest.rb
|
|
351
402
|
- lib/woods/observability/structured_logger.rb
|
|
403
|
+
- lib/woods/obsidian/destination_plan.rb
|
|
352
404
|
- lib/woods/obsidian/errors.rb
|
|
353
405
|
- lib/woods/obsidian/name_mapper.rb
|
|
354
406
|
- lib/woods/obsidian/note_builder.rb
|
|
@@ -365,16 +417,28 @@ files:
|
|
|
365
417
|
- lib/woods/published_index/typed_unit_reader.rb
|
|
366
418
|
- lib/woods/railtie.rb
|
|
367
419
|
- lib/woods/railtie_support.rb
|
|
420
|
+
- lib/woods/rake_helpers.rb
|
|
368
421
|
- lib/woods/release.rb
|
|
369
422
|
- lib/woods/reload_policy.rb
|
|
370
423
|
- lib/woods/resilience/circuit_breaker.rb
|
|
424
|
+
- lib/woods/resilience/graph_invariant_validator.rb
|
|
425
|
+
- lib/woods/resilience/graph_invariant_validator/membership_checks.rb
|
|
426
|
+
- lib/woods/resilience/graph_invariant_validator/node_checks.rb
|
|
427
|
+
- lib/woods/resilience/graph_invariant_validator/reverse_relationship_checks.rb
|
|
371
428
|
- lib/woods/resilience/index_validator.rb
|
|
429
|
+
- lib/woods/resilience/index_validator/graph_checks.rb
|
|
372
430
|
- lib/woods/resilience/retryable_provider.rb
|
|
373
431
|
- lib/woods/resolved_config.rb
|
|
374
432
|
- lib/woods/retrieval/context_assembler.rb
|
|
433
|
+
- lib/woods/retrieval/lexical_assembler.rb
|
|
434
|
+
- lib/woods/retrieval/lexical_index.rb
|
|
375
435
|
- lib/woods/retrieval/query_classifier.rb
|
|
376
436
|
- lib/woods/retrieval/ranker.rb
|
|
437
|
+
- lib/woods/retrieval/scope.rb
|
|
438
|
+
- lib/woods/retrieval/scoped_graph_store.rb
|
|
439
|
+
- lib/woods/retrieval/scoped_vector_store.rb
|
|
377
440
|
- lib/woods/retrieval/search_executor.rb
|
|
441
|
+
- lib/woods/retrieval/source_evidence.rb
|
|
378
442
|
- lib/woods/retriever.rb
|
|
379
443
|
- lib/woods/retry_after.rb
|
|
380
444
|
- lib/woods/ruby_analyzer.rb
|
|
@@ -392,6 +456,17 @@ files:
|
|
|
392
456
|
- lib/woods/session_tracer/solid_cache_coordination.rb
|
|
393
457
|
- lib/woods/session_tracer/solid_cache_store.rb
|
|
394
458
|
- lib/woods/session_tracer/store.rb
|
|
459
|
+
- lib/woods/session_tracer/unit_resolver.rb
|
|
460
|
+
- lib/woods/source_inputs/consumer_errors.rb
|
|
461
|
+
- lib/woods/source_inputs/handoff.rb
|
|
462
|
+
- lib/woods/source_inputs/launcher.rb
|
|
463
|
+
- lib/woods/source_inputs/manifest.rb
|
|
464
|
+
- lib/woods/source_inputs/private_key.rb
|
|
465
|
+
- lib/woods/source_inputs/scanner.rb
|
|
466
|
+
- lib/woods/source_inputs/scopes.rb
|
|
467
|
+
- lib/woods/source_inputs/session.rb
|
|
468
|
+
- lib/woods/source_inputs/status.rb
|
|
469
|
+
- lib/woods/source_inputs/verifier.rb
|
|
395
470
|
- lib/woods/storage/graph_store.rb
|
|
396
471
|
- lib/woods/storage/inapplicable_backend.rb
|
|
397
472
|
- lib/woods/storage/metadata_store.rb
|
|
@@ -415,6 +490,7 @@ files:
|
|
|
415
490
|
- lib/woods/util/host_guard.rb
|
|
416
491
|
- lib/woods/util/uuid5.rb
|
|
417
492
|
- lib/woods/version.rb
|
|
493
|
+
- lib/woods/watch/boot_snapshot.rb
|
|
418
494
|
- lib/woods/watch/daemon.rb
|
|
419
495
|
- lib/woods/watch/listen_watcher.rb
|
|
420
496
|
- lib/woods/watch/polling_watcher.rb
|
|
@@ -422,8 +498,14 @@ files:
|
|
|
422
498
|
- lib/woods/watch/tree_scan.rb
|
|
423
499
|
- lib/woods/watch/watcher.rb
|
|
424
500
|
- plugin/.claude-plugin/plugin.json
|
|
501
|
+
- plugin/hooks/adapters/normalize.jq
|
|
502
|
+
- plugin/hooks/adapters/normalize.rb
|
|
425
503
|
- plugin/hooks/hooks.json
|
|
504
|
+
- plugin/hooks/woods-context.sh
|
|
505
|
+
- plugin/hooks/woods-input-rules.sh
|
|
506
|
+
- plugin/hooks/woods-opencode.mjs
|
|
426
507
|
- plugin/hooks/woods-post-edit.sh
|
|
508
|
+
- plugin/hooks/woods-refresh.sh
|
|
427
509
|
- plugin/hooks/woods-session-start.sh
|
|
428
510
|
- plugin/skills/woods-agent-enable/SKILL.md
|
|
429
511
|
- plugin/skills/woods-diagnose/SKILL.md
|
|
@@ -435,10 +517,10 @@ licenses:
|
|
|
435
517
|
- MIT
|
|
436
518
|
metadata:
|
|
437
519
|
homepage_uri: https://github.com/lost-in-the/woods
|
|
438
|
-
source_code_uri: https://github.com/lost-in-the/woods/tree/v2.0.0.
|
|
439
|
-
changelog_uri: https://github.com/lost-in-the/woods/blob/v2.0.0.
|
|
520
|
+
source_code_uri: https://github.com/lost-in-the/woods/tree/v2.0.0.beta4
|
|
521
|
+
changelog_uri: https://github.com/lost-in-the/woods/blob/v2.0.0.beta4/CHANGELOG.md
|
|
440
522
|
bug_tracker_uri: https://github.com/lost-in-the/woods/issues
|
|
441
|
-
documentation_uri: https://github.com/lost-in-the/woods/tree/v2.0.0.
|
|
523
|
+
documentation_uri: https://github.com/lost-in-the/woods/tree/v2.0.0.beta4/docs
|
|
442
524
|
rubygems_mfa_required: 'true'
|
|
443
525
|
post_install_message:
|
|
444
526
|
rdoc_options: []
|