woods 1.6.1 → 2.0.0.beta2
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 +2035 -0
- data/CONTRIBUTING.md +253 -87
- data/README.md +161 -513
- data/SECURITY.md +92 -0
- data/assets/woods-wordmark-white-with-bg.png +0 -0
- data/docs/AGENT_GUIDE.md +204 -0
- data/docs/AGENT_SETUP.md +205 -0
- data/docs/BACKEND_MATRIX.md +470 -0
- data/docs/CONFIGURATION_REFERENCE.md +655 -0
- data/docs/CONSOLE_MCP_SETUP.md +829 -0
- data/docs/DOCKER_SETUP.md +454 -0
- data/docs/EMBEDDING_MODELS.md +136 -0
- data/docs/EVALUATION.md +91 -0
- data/docs/EXTRACTOR_REFERENCE.md +765 -0
- data/docs/FAQ.md +544 -0
- data/docs/GETTING_STARTED.md +183 -0
- data/docs/INCREMENTAL_EXTRACTION.md +455 -0
- data/docs/INTERNALS.md +418 -0
- data/docs/MCP_HTTP_TRANSPORT.md +144 -0
- data/docs/MCP_SERVERS.md +231 -0
- data/docs/MCP_TOOL_COOKBOOK.md +987 -0
- data/docs/MCP_WORKTREE_SETUP.md +127 -0
- data/docs/NOTION_INTEGRATION.md +283 -0
- data/docs/OBSIDIAN_INTEGRATION.md +170 -0
- data/docs/PUBLISHED_INDEX.md +213 -0
- data/docs/README.md +94 -0
- data/docs/RETRIEVAL_GUIDE.md +267 -0
- data/docs/TOKEN_BENCHMARK.md +68 -0
- data/docs/TROUBLESHOOTING.md +841 -0
- data/docs/UNBLOCKED_INTEGRATION.md +279 -0
- data/docs/UPGRADING_TO_2.md +321 -0
- data/docs/WATCH_DAEMON.md +667 -0
- data/docs/WHY_WOODS.md +219 -0
- data/exe/woods-console +40 -4
- data/exe/woods-console-mcp +21 -35
- data/exe/woods-mcp +20 -7
- data/exe/woods-mcp-http +80 -11
- data/exe/woods-mcp-start +57 -52
- data/lib/generators/woods/install_generator.rb +6 -5
- data/lib/generators/woods/pgvector_generator.rb +6 -3
- data/lib/generators/woods/templates/add_pgvector_to_woods.rb.erb +29 -9
- data/lib/generators/woods/templates/create_woods_tables.rb.erb +5 -1
- data/lib/generators/woods/templates/woods.rb.tt +49 -28
- data/lib/tasks/woods.rake +622 -168
- data/lib/tasks/woods_checks.rake +107 -0
- data/lib/tasks/woods_evaluation.rake +164 -80
- data/lib/woods/ast/call_site_extractor.rb +6 -15
- data/lib/woods/ast/method_extractor.rb +19 -9
- data/lib/woods/ast/parser.rb +54 -8
- data/lib/woods/atomic_file.rb +171 -2
- data/lib/woods/builder.rb +310 -22
- data/lib/woods/cache/cache_middleware.rb +7 -2
- data/lib/woods/cache/cache_store.rb +9 -1
- data/lib/woods/cache/solid_cache_store.rb +6 -4
- data/lib/woods/change_set.rb +88 -0
- data/lib/woods/checks/generation_resolution.rb +34 -0
- data/lib/woods/checks/moved_messages.rb +186 -0
- data/lib/woods/chunking/semantic_chunker.rb +160 -18
- data/lib/woods/console/audit_logger.rb +12 -3
- data/lib/woods/console/bridge_protocol.rb +3 -16
- data/lib/woods/console/connection_manager.rb +51 -136
- data/lib/woods/console/dispatch_pipeline.rb +42 -12
- data/lib/woods/console/embedded_executor.rb +806 -149
- data/lib/woods/console/eval_guard.rb +27 -20
- data/lib/woods/console/input_contract.rb +78 -0
- data/lib/woods/console/model_validator.rb +29 -1
- data/lib/woods/console/rack_middleware.rb +65 -42
- data/lib/woods/console/redactor.rb +26 -8
- data/lib/woods/console/safe_context.rb +58 -10
- data/lib/woods/console/scope_predicate_parser.rb +41 -0
- data/lib/woods/console/server.rb +119 -247
- data/lib/woods/console/sql_noise_stripper.rb +125 -16
- data/lib/woods/console/sql_table_scanner.rb +82 -22
- data/lib/woods/console/sql_validator.rb +459 -29
- data/lib/woods/console/table_gate.rb +2 -2
- data/lib/woods/console/tool_specs.rb +463 -90
- data/lib/woods/console/tools/tier1.rb +1 -5
- data/lib/woods/console/tools/tier4.rb +18 -9
- data/lib/woods/coordination/lock_heartbeat.rb +103 -0
- data/lib/woods/coordination/pipeline_lock.rb +263 -53
- data/lib/woods/db/migrations/007_typed_snapshot_units.rb +45 -0
- data/lib/woods/db/migrator.rb +3 -9
- data/lib/woods/db/schema_version.rb +47 -2
- data/lib/woods/dependency_graph.rb +898 -64
- data/lib/woods/embedding/fake.rb +138 -0
- data/lib/woods/embedding/indexer.rb +832 -40
- data/lib/woods/embedding/openai.rb +77 -19
- data/lib/woods/embedding/provider.rb +189 -11
- data/lib/woods/embedding/text_preparer.rb +1 -1
- data/lib/woods/embedding/token_counter.rb +0 -7
- data/lib/woods/evaluation/ablation_agent_payload.rb +38 -0
- data/lib/woods/evaluation/ablation_executor.rb +67 -0
- data/lib/woods/evaluation/ablation_provenance.rb +38 -0
- data/lib/woods/evaluation/ablation_report_writer.rb +43 -0
- data/lib/woods/evaluation/ablation_runner.rb +173 -0
- data/lib/woods/evaluation/ablation_summary.rb +65 -0
- data/lib/woods/evaluation/ablation_task.rb +66 -0
- data/lib/woods/evaluation/ablation_task_set.rb +77 -0
- data/lib/woods/evaluation/ablation_timed_executor.rb +91 -0
- data/lib/woods/evaluation/ablation_worktree.rb +71 -0
- data/lib/woods/evaluation/baseline.rb +60 -0
- data/lib/woods/evaluation/baseline_runner.rb +11 -3
- data/lib/woods/evaluation/evaluator.rb +41 -8
- data/lib/woods/evaluation/query_set.rb +79 -13
- data/lib/woods/evaluation/report_generator.rb +20 -1
- data/lib/woods/export/unit_facts.rb +0 -11
- data/lib/woods/extracted_unit.rb +22 -63
- data/lib/woods/extractor.rb +2783 -238
- data/lib/woods/extractors/action_cable_extractor.rb +9 -4
- data/lib/woods/extractors/ast_source_extraction.rb +20 -2
- data/lib/woods/extractors/caching_extractor.rb +46 -12
- data/lib/woods/extractors/callback_analyzer.rb +39 -9
- data/lib/woods/extractors/component_discovery.rb +123 -0
- data/lib/woods/extractors/concern_extractor.rb +17 -3
- data/lib/woods/extractors/controller_extractor.rb +389 -29
- data/lib/woods/extractors/decorator_extractor.rb +7 -14
- data/lib/woods/extractors/engine_extractor.rb +53 -8
- data/lib/woods/extractors/event_extractor.rb +55 -4
- data/lib/woods/extractors/factory_extractor.rb +49 -11
- data/lib/woods/extractors/graphql_extractor.rb +162 -66
- data/lib/woods/extractors/i18n_extractor.rb +6 -1
- data/lib/woods/extractors/job_extractor.rb +51 -21
- data/lib/woods/extractors/lib_extractor.rb +23 -17
- data/lib/woods/extractors/line_neutralizer.rb +171 -0
- data/lib/woods/extractors/mailer_extractor.rb +9 -1
- data/lib/woods/extractors/manager_extractor.rb +19 -2
- data/lib/woods/extractors/migration_extractor.rb +22 -11
- data/lib/woods/extractors/model_extractor.rb +292 -57
- data/lib/woods/extractors/package_extractor.rb +154 -0
- data/lib/woods/extractors/phlex_extractor.rb +18 -3
- data/lib/woods/extractors/policy_extractor.rb +6 -5
- data/lib/woods/extractors/poro_extractor.rb +13 -14
- data/lib/woods/extractors/pundit_extractor.rb +3 -3
- data/lib/woods/extractors/rails_source_extractor.rb +24 -7
- data/lib/woods/extractors/rake_task_extractor.rb +158 -30
- data/lib/woods/extractors/reference_patterns.rb +38 -0
- data/lib/woods/extractors/route_extractor.rb +58 -2
- data/lib/woods/extractors/scheduled_job_extractor.rb +51 -35
- data/lib/woods/extractors/serializer_extractor.rb +3 -4
- data/lib/woods/extractors/service_extractor.rb +11 -1
- data/lib/woods/extractors/shared_dependency_scanner.rb +24 -34
- data/lib/woods/extractors/shared_utility_methods.rb +36 -6
- data/lib/woods/extractors/source_nesting.rb +560 -0
- data/lib/woods/extractors/state_machine_extractor.rb +30 -18
- data/lib/woods/extractors/test_mapping_extractor.rb +26 -9
- data/lib/woods/extractors/view_component_extractor.rb +28 -3
- data/lib/woods/extractors/view_engines/erb.rb +17 -3
- data/lib/woods/feedback/gap_detector.rb +9 -3
- data/lib/woods/feedback/store.rb +7 -1
- data/lib/woods/filename_utils.rb +29 -1
- data/lib/woods/flow_analysis/operation_extractor.rb +22 -10
- data/lib/woods/flow_assembler.rb +147 -26
- data/lib/woods/flow_document.rb +1 -0
- data/lib/woods/flow_precomputer.rb +175 -22
- data/lib/woods/gem_mapper.rb +285 -0
- data/lib/woods/generation.rb +185 -0
- data/lib/woods/git_command.rb +38 -0
- data/lib/woods/git_provenance.rb +16 -2
- data/lib/woods/graph_analyzer.rb +564 -87
- data/lib/woods/index_artifact.rb +93 -23
- data/lib/woods/mcp/bearer_auth.rb +102 -13
- data/lib/woods/mcp/bootstrap_state.rb +77 -0
- data/lib/woods/mcp/bootstrapper.rb +582 -77
- data/lib/woods/mcp/config_resolver.rb +66 -6
- data/lib/woods/mcp/errors.rb +60 -0
- data/lib/woods/mcp/index_reader.rb +836 -117
- data/lib/woods/mcp/index_reader_pinning.rb +78 -0
- data/lib/woods/mcp/origin_guard.rb +66 -7
- data/lib/woods/mcp/protocol_policy.rb +98 -0
- data/lib/woods/mcp/provider_probe.rb +45 -6
- data/lib/woods/mcp/renderers/markdown_renderer.rb +72 -4
- data/lib/woods/mcp/renderers/plain_renderer.rb +54 -6
- data/lib/woods/mcp/server.rb +898 -152
- data/lib/woods/mcp/tasks/extension.rb +196 -0
- data/lib/woods/mcp/tasks/request_capture.rb +45 -0
- data/lib/woods/mcp/tasks/store.rb +518 -0
- data/lib/woods/mcp/tool_contract.rb +171 -0
- data/lib/woods/mcp/tool_response_renderer.rb +7 -0
- data/lib/woods/model_name_cache.rb +19 -1
- data/lib/woods/notion/client.rb +132 -36
- data/lib/woods/notion/exporter.rb +456 -61
- data/lib/woods/notion/mappers/column_mapper.rb +34 -5
- data/lib/woods/notion/mappers/migration_mapper.rb +32 -8
- data/lib/woods/notion/mappers/model_mapper.rb +21 -6
- data/lib/woods/notion/mappers/shared.rb +45 -3
- data/lib/woods/notion/sync_manifest.rb +258 -0
- data/lib/woods/obsidian/errors.rb +6 -0
- data/lib/woods/obsidian/name_mapper.rb +40 -24
- data/lib/woods/obsidian/vault_exporter.rb +103 -36
- data/lib/woods/operator/pipeline_guard.rb +118 -21
- data/lib/woods/operator/status_reporter.rb +20 -3
- data/lib/woods/path_dispatcher.rb +276 -0
- data/lib/woods/payload_store.rb +236 -0
- data/lib/woods/published_index/edge_shaper.rb +61 -0
- data/lib/woods/published_index/generation_catalog.rb +72 -0
- data/lib/woods/published_index/typed_unit_reader.rb +48 -0
- data/lib/woods/published_index.rb +287 -0
- data/lib/woods/railtie.rb +69 -30
- data/lib/woods/railtie_support.rb +167 -0
- data/lib/woods/release.rb +12 -0
- data/lib/woods/reload_policy.rb +206 -0
- data/lib/woods/resilience/circuit_breaker.rb +47 -8
- data/lib/woods/resilience/index_validator.rb +296 -10
- data/lib/woods/resilience/retryable_provider.rb +71 -6
- data/lib/woods/resolved_config.rb +55 -11
- data/lib/woods/retrieval/context_assembler.rb +132 -40
- data/lib/woods/retrieval/query_classifier.rb +26 -8
- data/lib/woods/retrieval/ranker.rb +193 -28
- data/lib/woods/retrieval/search_executor.rb +206 -39
- data/lib/woods/retriever.rb +317 -71
- data/lib/woods/retry_after.rb +22 -2
- data/lib/woods/ruby_analyzer/class_analyzer.rb +10 -14
- data/lib/woods/ruby_analyzer/fqn_builder.rb +2 -0
- data/lib/woods/ruby_analyzer/mermaid_renderer.rb +14 -4
- data/lib/woods/ruby_analyzer/method_analyzer.rb +1 -1
- data/lib/woods/ruby_analyzer/trace_enricher.rb +3 -0
- data/lib/woods/ruby_analyzer.rb +21 -5
- data/lib/woods/session_tracer/file_store.rb +138 -19
- data/lib/woods/session_tracer/middleware.rb +1 -2
- data/lib/woods/session_tracer/redis_store.rb +122 -12
- data/lib/woods/session_tracer/session_flow_assembler.rb +57 -17
- data/lib/woods/session_tracer/session_flow_document.rb +56 -14
- data/lib/woods/session_tracer/solid_cache_coordination.rb +192 -0
- data/lib/woods/session_tracer/solid_cache_store.rb +560 -91
- data/lib/woods/session_tracer/store.rb +14 -1
- data/lib/woods/storage/metadata_store.rb +230 -26
- data/lib/woods/storage/pgvector.rb +180 -22
- data/lib/woods/storage/qdrant.rb +367 -41
- data/lib/woods/storage/snapshotter/metadata.rb +79 -16
- data/lib/woods/storage/snapshotter/vector.rb +128 -17
- data/lib/woods/storage/snapshotter.rb +23 -5
- data/lib/woods/storage/vector_store.rb +49 -8
- data/lib/woods/storage_identity.rb +28 -0
- data/lib/woods/tasks.rb +53 -2
- data/lib/woods/temporal/json_snapshot_store.rb +112 -42
- data/lib/woods/temporal/snapshot_store.rb +139 -42
- data/lib/woods/unblocked/client.rb +119 -17
- data/lib/woods/unblocked/document_builder.rb +34 -2
- data/lib/woods/unblocked/exporter.rb +63 -27
- data/lib/woods/unblocked/rate_limiter.rb +23 -9
- data/lib/woods/unblocked/sync_manifest.rb +16 -8
- data/lib/woods/update_check.rb +24 -1
- data/lib/woods/util/uuid5.rb +124 -0
- data/lib/woods/version.rb +1 -1
- data/lib/woods/watch/daemon.rb +1345 -0
- data/lib/woods/watch/listen_watcher.rb +81 -0
- data/lib/woods/watch/polling_watcher.rb +137 -0
- data/lib/woods/watch/status.rb +169 -0
- data/lib/woods/watch/tree_scan.rb +163 -0
- data/lib/woods/watch/watcher.rb +100 -0
- data/lib/woods.rb +138 -9
- data/plugin/.claude-plugin/plugin.json +18 -0
- data/plugin/hooks/hooks.json +29 -0
- data/plugin/hooks/woods-post-edit.sh +226 -0
- data/plugin/hooks/woods-session-start.sh +77 -0
- data/plugin/skills/woods-agent-enable/SKILL.md +51 -0
- data/plugin/skills/woods-diagnose/SKILL.md +75 -0
- data/plugin/skills/woods-investigate/SKILL.md +39 -0
- data/plugin/skills/woods-mcp-config/SKILL.md +101 -0
- data/plugin/skills/woods-setup/SKILL.md +99 -0
- metadata +134 -23
- data/lib/woods/console/adapters/cache_adapter.rb +0 -58
- data/lib/woods/console/adapters/good_job_adapter.rb +0 -33
- data/lib/woods/console/adapters/job_adapter.rb +0 -74
- data/lib/woods/console/adapters/sidekiq_adapter.rb +0 -33
- data/lib/woods/console/adapters/solid_queue_adapter.rb +0 -33
- data/lib/woods/console/bridge.rb +0 -210
- data/lib/woods/formatting/claude_adapter.rb +0 -98
- data/lib/woods/formatting/generic_adapter.rb +0 -56
- data/lib/woods/formatting/gpt_adapter.rb +0 -64
- data/lib/woods/notion/mapper.rb +0 -40
- data/lib/woods/observability/health_check.rb +0 -79
- data/lib/woods/observability/instrumentation.rb +0 -34
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:
|
|
4
|
+
version: 2.0.0.beta2
|
|
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-
|
|
11
|
+
date: 2026-09-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: mcp
|
|
@@ -16,34 +16,60 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: '1.2'
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
22
|
+
version: '2.0'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
26
|
requirements:
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
29
|
+
version: '1.2'
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '2.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: json
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 2.19.9
|
|
40
|
+
- - "<"
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '3'
|
|
43
|
+
type: :runtime
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - ">="
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: 2.19.9
|
|
50
|
+
- - "<"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '3'
|
|
33
53
|
- !ruby/object:Gem::Dependency
|
|
34
54
|
name: msgpack
|
|
35
55
|
requirement: !ruby/object:Gem::Requirement
|
|
36
56
|
requirements:
|
|
37
57
|
- - ">="
|
|
38
58
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
59
|
+
version: 1.8.2
|
|
60
|
+
- - "<"
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '2'
|
|
40
63
|
type: :runtime
|
|
41
64
|
prerelease: false
|
|
42
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
66
|
requirements:
|
|
44
67
|
- - ">="
|
|
45
68
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
69
|
+
version: 1.8.2
|
|
70
|
+
- - "<"
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: '2'
|
|
47
73
|
- !ruby/object:Gem::Dependency
|
|
48
74
|
name: prism
|
|
49
75
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -65,6 +91,9 @@ dependencies:
|
|
|
65
91
|
- - ">="
|
|
66
92
|
- !ruby/object:Gem::Version
|
|
67
93
|
version: '6.0'
|
|
94
|
+
- - "<"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '9'
|
|
68
97
|
type: :runtime
|
|
69
98
|
prerelease: false
|
|
70
99
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -72,6 +101,9 @@ dependencies:
|
|
|
72
101
|
- - ">="
|
|
73
102
|
- !ruby/object:Gem::Version
|
|
74
103
|
version: '6.0'
|
|
104
|
+
- - "<"
|
|
105
|
+
- !ruby/object:Gem::Version
|
|
106
|
+
version: '9'
|
|
75
107
|
description: |
|
|
76
108
|
Woods extracts structured data from Rails applications for use in
|
|
77
109
|
AI-assisted development tooling. It provides version-specific context by
|
|
@@ -94,6 +126,36 @@ files:
|
|
|
94
126
|
- CONTRIBUTING.md
|
|
95
127
|
- LICENSE.txt
|
|
96
128
|
- README.md
|
|
129
|
+
- SECURITY.md
|
|
130
|
+
- assets/woods-wordmark-white-with-bg.png
|
|
131
|
+
- docs/AGENT_GUIDE.md
|
|
132
|
+
- docs/AGENT_SETUP.md
|
|
133
|
+
- docs/BACKEND_MATRIX.md
|
|
134
|
+
- docs/CONFIGURATION_REFERENCE.md
|
|
135
|
+
- docs/CONSOLE_MCP_SETUP.md
|
|
136
|
+
- docs/DOCKER_SETUP.md
|
|
137
|
+
- docs/EMBEDDING_MODELS.md
|
|
138
|
+
- docs/EVALUATION.md
|
|
139
|
+
- docs/EXTRACTOR_REFERENCE.md
|
|
140
|
+
- docs/FAQ.md
|
|
141
|
+
- docs/GETTING_STARTED.md
|
|
142
|
+
- docs/INCREMENTAL_EXTRACTION.md
|
|
143
|
+
- docs/INTERNALS.md
|
|
144
|
+
- docs/MCP_HTTP_TRANSPORT.md
|
|
145
|
+
- docs/MCP_SERVERS.md
|
|
146
|
+
- docs/MCP_TOOL_COOKBOOK.md
|
|
147
|
+
- docs/MCP_WORKTREE_SETUP.md
|
|
148
|
+
- docs/NOTION_INTEGRATION.md
|
|
149
|
+
- docs/OBSIDIAN_INTEGRATION.md
|
|
150
|
+
- docs/PUBLISHED_INDEX.md
|
|
151
|
+
- docs/README.md
|
|
152
|
+
- docs/RETRIEVAL_GUIDE.md
|
|
153
|
+
- docs/TOKEN_BENCHMARK.md
|
|
154
|
+
- docs/TROUBLESHOOTING.md
|
|
155
|
+
- docs/UNBLOCKED_INTEGRATION.md
|
|
156
|
+
- docs/UPGRADING_TO_2.md
|
|
157
|
+
- docs/WATCH_DAEMON.md
|
|
158
|
+
- docs/WHY_WOODS.md
|
|
97
159
|
- exe/woods-console
|
|
98
160
|
- exe/woods-console-mcp
|
|
99
161
|
- exe/woods-mcp
|
|
@@ -105,6 +167,7 @@ files:
|
|
|
105
167
|
- lib/generators/woods/templates/create_woods_tables.rb.erb
|
|
106
168
|
- lib/generators/woods/templates/woods.rb.tt
|
|
107
169
|
- lib/tasks/woods.rake
|
|
170
|
+
- lib/tasks/woods_checks.rake
|
|
108
171
|
- lib/tasks/woods_evaluation.rake
|
|
109
172
|
- lib/woods.rb
|
|
110
173
|
- lib/woods/ast.rb
|
|
@@ -118,15 +181,12 @@ files:
|
|
|
118
181
|
- lib/woods/cache/cache_store.rb
|
|
119
182
|
- lib/woods/cache/redis_cache_store.rb
|
|
120
183
|
- lib/woods/cache/solid_cache_store.rb
|
|
184
|
+
- lib/woods/change_set.rb
|
|
185
|
+
- lib/woods/checks/generation_resolution.rb
|
|
186
|
+
- lib/woods/checks/moved_messages.rb
|
|
121
187
|
- lib/woods/chunking/chunk.rb
|
|
122
188
|
- lib/woods/chunking/semantic_chunker.rb
|
|
123
|
-
- lib/woods/console/adapters/cache_adapter.rb
|
|
124
|
-
- lib/woods/console/adapters/good_job_adapter.rb
|
|
125
|
-
- lib/woods/console/adapters/job_adapter.rb
|
|
126
|
-
- lib/woods/console/adapters/sidekiq_adapter.rb
|
|
127
|
-
- lib/woods/console/adapters/solid_queue_adapter.rb
|
|
128
189
|
- lib/woods/console/audit_logger.rb
|
|
129
|
-
- lib/woods/console/bridge.rb
|
|
130
190
|
- lib/woods/console/bridge_protocol.rb
|
|
131
191
|
- lib/woods/console/confirmation.rb
|
|
132
192
|
- lib/woods/console/connection_manager.rb
|
|
@@ -136,6 +196,7 @@ files:
|
|
|
136
196
|
- lib/woods/console/dispatch_pipeline.rb
|
|
137
197
|
- lib/woods/console/embedded_executor.rb
|
|
138
198
|
- lib/woods/console/eval_guard.rb
|
|
199
|
+
- lib/woods/console/input_contract.rb
|
|
139
200
|
- lib/woods/console/model_validator.rb
|
|
140
201
|
- lib/woods/console/rack_middleware.rb
|
|
141
202
|
- lib/woods/console/redactor.rb
|
|
@@ -152,6 +213,7 @@ files:
|
|
|
152
213
|
- lib/woods/console/tools/tier2.rb
|
|
153
214
|
- lib/woods/console/tools/tier3.rb
|
|
154
215
|
- lib/woods/console/tools/tier4.rb
|
|
216
|
+
- lib/woods/coordination/lock_heartbeat.rb
|
|
155
217
|
- lib/woods/coordination/pipeline_lock.rb
|
|
156
218
|
- lib/woods/cost_model.rb
|
|
157
219
|
- lib/woods/cost_model/embedding_cost.rb
|
|
@@ -164,14 +226,27 @@ files:
|
|
|
164
226
|
- lib/woods/db/migrations/004_create_snapshots.rb
|
|
165
227
|
- lib/woods/db/migrations/005_create_snapshot_units.rb
|
|
166
228
|
- lib/woods/db/migrations/006_rename_tables.rb
|
|
229
|
+
- lib/woods/db/migrations/007_typed_snapshot_units.rb
|
|
167
230
|
- lib/woods/db/migrator.rb
|
|
168
231
|
- lib/woods/db/schema_version.rb
|
|
169
232
|
- lib/woods/dependency_graph.rb
|
|
233
|
+
- lib/woods/embedding/fake.rb
|
|
170
234
|
- lib/woods/embedding/indexer.rb
|
|
171
235
|
- lib/woods/embedding/openai.rb
|
|
172
236
|
- lib/woods/embedding/provider.rb
|
|
173
237
|
- lib/woods/embedding/text_preparer.rb
|
|
174
238
|
- lib/woods/embedding/token_counter.rb
|
|
239
|
+
- lib/woods/evaluation/ablation_agent_payload.rb
|
|
240
|
+
- lib/woods/evaluation/ablation_executor.rb
|
|
241
|
+
- lib/woods/evaluation/ablation_provenance.rb
|
|
242
|
+
- lib/woods/evaluation/ablation_report_writer.rb
|
|
243
|
+
- lib/woods/evaluation/ablation_runner.rb
|
|
244
|
+
- lib/woods/evaluation/ablation_summary.rb
|
|
245
|
+
- lib/woods/evaluation/ablation_task.rb
|
|
246
|
+
- lib/woods/evaluation/ablation_task_set.rb
|
|
247
|
+
- lib/woods/evaluation/ablation_timed_executor.rb
|
|
248
|
+
- lib/woods/evaluation/ablation_worktree.rb
|
|
249
|
+
- lib/woods/evaluation/baseline.rb
|
|
175
250
|
- lib/woods/evaluation/baseline_runner.rb
|
|
176
251
|
- lib/woods/evaluation/evaluator.rb
|
|
177
252
|
- lib/woods/evaluation/metrics.rb
|
|
@@ -185,6 +260,7 @@ files:
|
|
|
185
260
|
- lib/woods/extractors/behavioral_profile.rb
|
|
186
261
|
- lib/woods/extractors/caching_extractor.rb
|
|
187
262
|
- lib/woods/extractors/callback_analyzer.rb
|
|
263
|
+
- lib/woods/extractors/component_discovery.rb
|
|
188
264
|
- lib/woods/extractors/concern_extractor.rb
|
|
189
265
|
- lib/woods/extractors/configuration_extractor.rb
|
|
190
266
|
- lib/woods/extractors/controller_extractor.rb
|
|
@@ -197,17 +273,20 @@ files:
|
|
|
197
273
|
- lib/woods/extractors/i18n_extractor.rb
|
|
198
274
|
- lib/woods/extractors/job_extractor.rb
|
|
199
275
|
- lib/woods/extractors/lib_extractor.rb
|
|
276
|
+
- lib/woods/extractors/line_neutralizer.rb
|
|
200
277
|
- lib/woods/extractors/mailer_extractor.rb
|
|
201
278
|
- lib/woods/extractors/manager_extractor.rb
|
|
202
279
|
- lib/woods/extractors/middleware_extractor.rb
|
|
203
280
|
- lib/woods/extractors/migration_extractor.rb
|
|
204
281
|
- lib/woods/extractors/model_extractor.rb
|
|
282
|
+
- lib/woods/extractors/package_extractor.rb
|
|
205
283
|
- lib/woods/extractors/phlex_extractor.rb
|
|
206
284
|
- lib/woods/extractors/policy_extractor.rb
|
|
207
285
|
- lib/woods/extractors/poro_extractor.rb
|
|
208
286
|
- lib/woods/extractors/pundit_extractor.rb
|
|
209
287
|
- lib/woods/extractors/rails_source_extractor.rb
|
|
210
288
|
- lib/woods/extractors/rake_task_extractor.rb
|
|
289
|
+
- lib/woods/extractors/reference_patterns.rb
|
|
211
290
|
- lib/woods/extractors/route_extractor.rb
|
|
212
291
|
- lib/woods/extractors/route_helper_resolver.rb
|
|
213
292
|
- lib/woods/extractors/scheduled_job_extractor.rb
|
|
@@ -215,6 +294,7 @@ files:
|
|
|
215
294
|
- lib/woods/extractors/service_extractor.rb
|
|
216
295
|
- lib/woods/extractors/shared_dependency_scanner.rb
|
|
217
296
|
- lib/woods/extractors/shared_utility_methods.rb
|
|
297
|
+
- lib/woods/extractors/source_nesting.rb
|
|
218
298
|
- lib/woods/extractors/state_machine_extractor.rb
|
|
219
299
|
- lib/woods/extractors/test_mapping_extractor.rb
|
|
220
300
|
- lib/woods/extractors/validator_extractor.rb
|
|
@@ -231,10 +311,10 @@ files:
|
|
|
231
311
|
- lib/woods/flow_document.rb
|
|
232
312
|
- lib/woods/flow_precomputer.rb
|
|
233
313
|
- lib/woods/formatting/base.rb
|
|
234
|
-
- lib/woods/formatting/claude_adapter.rb
|
|
235
|
-
- lib/woods/formatting/generic_adapter.rb
|
|
236
|
-
- lib/woods/formatting/gpt_adapter.rb
|
|
237
314
|
- lib/woods/formatting/human_adapter.rb
|
|
315
|
+
- lib/woods/gem_mapper.rb
|
|
316
|
+
- lib/woods/generation.rb
|
|
317
|
+
- lib/woods/git_command.rb
|
|
238
318
|
- lib/woods/git_provenance.rb
|
|
239
319
|
- lib/woods/graph_analyzer.rb
|
|
240
320
|
- lib/woods/index_artifact.rb
|
|
@@ -244,26 +324,30 @@ files:
|
|
|
244
324
|
- lib/woods/mcp/config_resolver.rb
|
|
245
325
|
- lib/woods/mcp/errors.rb
|
|
246
326
|
- lib/woods/mcp/index_reader.rb
|
|
327
|
+
- lib/woods/mcp/index_reader_pinning.rb
|
|
247
328
|
- lib/woods/mcp/origin_guard.rb
|
|
329
|
+
- lib/woods/mcp/protocol_policy.rb
|
|
248
330
|
- lib/woods/mcp/provider_probe.rb
|
|
249
331
|
- lib/woods/mcp/renderers/claude_renderer.rb
|
|
250
332
|
- lib/woods/mcp/renderers/json_renderer.rb
|
|
251
333
|
- lib/woods/mcp/renderers/markdown_renderer.rb
|
|
252
334
|
- lib/woods/mcp/renderers/plain_renderer.rb
|
|
253
335
|
- lib/woods/mcp/server.rb
|
|
336
|
+
- lib/woods/mcp/tasks/extension.rb
|
|
337
|
+
- lib/woods/mcp/tasks/request_capture.rb
|
|
338
|
+
- lib/woods/mcp/tasks/store.rb
|
|
339
|
+
- lib/woods/mcp/tool_contract.rb
|
|
254
340
|
- lib/woods/mcp/tool_response_renderer.rb
|
|
255
341
|
- lib/woods/mcp/version_aware_tool_dispatch.rb
|
|
256
342
|
- lib/woods/model_name_cache.rb
|
|
257
343
|
- lib/woods/notion/client.rb
|
|
258
344
|
- lib/woods/notion/exporter.rb
|
|
259
|
-
- lib/woods/notion/mapper.rb
|
|
260
345
|
- lib/woods/notion/mappers/column_mapper.rb
|
|
261
346
|
- lib/woods/notion/mappers/migration_mapper.rb
|
|
262
347
|
- lib/woods/notion/mappers/model_mapper.rb
|
|
263
348
|
- lib/woods/notion/mappers/shared.rb
|
|
264
349
|
- lib/woods/notion/rate_limiter.rb
|
|
265
|
-
- lib/woods/
|
|
266
|
-
- lib/woods/observability/instrumentation.rb
|
|
350
|
+
- lib/woods/notion/sync_manifest.rb
|
|
267
351
|
- lib/woods/observability/structured_logger.rb
|
|
268
352
|
- lib/woods/obsidian/errors.rb
|
|
269
353
|
- lib/woods/obsidian/name_mapper.rb
|
|
@@ -273,7 +357,16 @@ files:
|
|
|
273
357
|
- lib/woods/operator/error_escalator.rb
|
|
274
358
|
- lib/woods/operator/pipeline_guard.rb
|
|
275
359
|
- lib/woods/operator/status_reporter.rb
|
|
360
|
+
- lib/woods/path_dispatcher.rb
|
|
361
|
+
- lib/woods/payload_store.rb
|
|
362
|
+
- lib/woods/published_index.rb
|
|
363
|
+
- lib/woods/published_index/edge_shaper.rb
|
|
364
|
+
- lib/woods/published_index/generation_catalog.rb
|
|
365
|
+
- lib/woods/published_index/typed_unit_reader.rb
|
|
276
366
|
- lib/woods/railtie.rb
|
|
367
|
+
- lib/woods/railtie_support.rb
|
|
368
|
+
- lib/woods/release.rb
|
|
369
|
+
- lib/woods/reload_policy.rb
|
|
277
370
|
- lib/woods/resilience/circuit_breaker.rb
|
|
278
371
|
- lib/woods/resilience/index_validator.rb
|
|
279
372
|
- lib/woods/resilience/retryable_provider.rb
|
|
@@ -296,6 +389,7 @@ files:
|
|
|
296
389
|
- lib/woods/session_tracer/redis_store.rb
|
|
297
390
|
- lib/woods/session_tracer/session_flow_assembler.rb
|
|
298
391
|
- lib/woods/session_tracer/session_flow_document.rb
|
|
392
|
+
- lib/woods/session_tracer/solid_cache_coordination.rb
|
|
299
393
|
- lib/woods/session_tracer/solid_cache_store.rb
|
|
300
394
|
- lib/woods/session_tracer/store.rb
|
|
301
395
|
- lib/woods/storage/graph_store.rb
|
|
@@ -307,6 +401,7 @@ files:
|
|
|
307
401
|
- lib/woods/storage/snapshotter/metadata.rb
|
|
308
402
|
- lib/woods/storage/snapshotter/vector.rb
|
|
309
403
|
- lib/woods/storage/vector_store.rb
|
|
404
|
+
- lib/woods/storage_identity.rb
|
|
310
405
|
- lib/woods/tasks.rb
|
|
311
406
|
- lib/woods/temporal/json_snapshot_store.rb
|
|
312
407
|
- lib/woods/temporal/snapshot_store.rb
|
|
@@ -318,16 +413,32 @@ files:
|
|
|
318
413
|
- lib/woods/unblocked/sync_manifest.rb
|
|
319
414
|
- lib/woods/update_check.rb
|
|
320
415
|
- lib/woods/util/host_guard.rb
|
|
416
|
+
- lib/woods/util/uuid5.rb
|
|
321
417
|
- lib/woods/version.rb
|
|
418
|
+
- lib/woods/watch/daemon.rb
|
|
419
|
+
- lib/woods/watch/listen_watcher.rb
|
|
420
|
+
- lib/woods/watch/polling_watcher.rb
|
|
421
|
+
- lib/woods/watch/status.rb
|
|
422
|
+
- lib/woods/watch/tree_scan.rb
|
|
423
|
+
- lib/woods/watch/watcher.rb
|
|
424
|
+
- plugin/.claude-plugin/plugin.json
|
|
425
|
+
- plugin/hooks/hooks.json
|
|
426
|
+
- plugin/hooks/woods-post-edit.sh
|
|
427
|
+
- plugin/hooks/woods-session-start.sh
|
|
428
|
+
- plugin/skills/woods-agent-enable/SKILL.md
|
|
429
|
+
- plugin/skills/woods-diagnose/SKILL.md
|
|
430
|
+
- plugin/skills/woods-investigate/SKILL.md
|
|
431
|
+
- plugin/skills/woods-mcp-config/SKILL.md
|
|
432
|
+
- plugin/skills/woods-setup/SKILL.md
|
|
322
433
|
homepage: https://github.com/lost-in-the/woods
|
|
323
434
|
licenses:
|
|
324
435
|
- MIT
|
|
325
436
|
metadata:
|
|
326
437
|
homepage_uri: https://github.com/lost-in-the/woods
|
|
327
|
-
source_code_uri: https://github.com/lost-in-the/woods/tree/
|
|
328
|
-
changelog_uri: https://github.com/lost-in-the/woods/blob/
|
|
438
|
+
source_code_uri: https://github.com/lost-in-the/woods/tree/v2.0.0.beta2
|
|
439
|
+
changelog_uri: https://github.com/lost-in-the/woods/blob/v2.0.0.beta2/CHANGELOG.md
|
|
329
440
|
bug_tracker_uri: https://github.com/lost-in-the/woods/issues
|
|
330
|
-
documentation_uri: https://github.com/lost-in-the/woods/tree/
|
|
441
|
+
documentation_uri: https://github.com/lost-in-the/woods/tree/v2.0.0.beta2/docs
|
|
331
442
|
rubygems_mfa_required: 'true'
|
|
332
443
|
post_install_message:
|
|
333
444
|
rdoc_options: []
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Woods
|
|
4
|
-
module Console
|
|
5
|
-
module Adapters
|
|
6
|
-
# Cache adapter that auto-detects the active cache store.
|
|
7
|
-
#
|
|
8
|
-
# Supports Redis, Solid Cache, memory, and file cache stores.
|
|
9
|
-
# Detection checks Rails.cache class name first, then falls back
|
|
10
|
-
# to checking for SolidCache constant.
|
|
11
|
-
#
|
|
12
|
-
# @example
|
|
13
|
-
# CacheAdapter.detect # => :redis
|
|
14
|
-
# CacheAdapter.stats # => { tool: 'cache_stats', params: {} }
|
|
15
|
-
#
|
|
16
|
-
module CacheAdapter
|
|
17
|
-
STORE_PATTERNS = {
|
|
18
|
-
'RedisCacheStore' => :redis,
|
|
19
|
-
'MemoryStore' => :memory,
|
|
20
|
-
'FileStore' => :file
|
|
21
|
-
}.freeze
|
|
22
|
-
|
|
23
|
-
module_function
|
|
24
|
-
|
|
25
|
-
# Detect the active cache store backend.
|
|
26
|
-
#
|
|
27
|
-
# @return [Symbol] One of :redis, :solid_cache, :memory, :file, :unknown
|
|
28
|
-
def detect
|
|
29
|
-
if defined?(::Rails) && ::Rails.respond_to?(:cache) && ::Rails.cache
|
|
30
|
-
class_name = ::Rails.cache.class.name.to_s
|
|
31
|
-
STORE_PATTERNS.each do |pattern, backend|
|
|
32
|
-
return backend if class_name.include?(pattern)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
return :solid_cache if defined?(::SolidCache)
|
|
37
|
-
|
|
38
|
-
:unknown
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Get cache store statistics.
|
|
42
|
-
#
|
|
43
|
-
# @param namespace [String, nil] Cache namespace filter
|
|
44
|
-
# @return [Hash] Bridge request
|
|
45
|
-
def stats(namespace: nil)
|
|
46
|
-
{ tool: 'cache_stats', params: { namespace: namespace }.compact }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Get cache store info (backend type, configuration).
|
|
50
|
-
#
|
|
51
|
-
# @return [Hash] Bridge request
|
|
52
|
-
def info
|
|
53
|
-
{ tool: 'cache_info', params: {} }
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'job_adapter'
|
|
4
|
-
|
|
5
|
-
module Woods
|
|
6
|
-
module Console
|
|
7
|
-
module Adapters
|
|
8
|
-
# Job backend adapter for GoodJob.
|
|
9
|
-
#
|
|
10
|
-
# Builds bridge requests for GoodJob queue stats, failure listing,
|
|
11
|
-
# job lookup, scheduled jobs, and retry operations.
|
|
12
|
-
#
|
|
13
|
-
# @example
|
|
14
|
-
# adapter = GoodJobAdapter.new
|
|
15
|
-
# adapter.queue_stats # => { tool: 'good_job_queue_stats', params: {} }
|
|
16
|
-
#
|
|
17
|
-
class GoodJobAdapter < JobAdapter
|
|
18
|
-
# Check if GoodJob is available in the current environment.
|
|
19
|
-
#
|
|
20
|
-
# @return [Boolean]
|
|
21
|
-
def self.available?
|
|
22
|
-
!!defined?(::GoodJob)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def prefix
|
|
28
|
-
'good_job'
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Woods
|
|
4
|
-
module Console
|
|
5
|
-
module Adapters
|
|
6
|
-
# Base class for job backend adapters.
|
|
7
|
-
#
|
|
8
|
-
# Subclasses implement `self.available?` and a private `prefix` method.
|
|
9
|
-
# The prefix is used to build bridge tool names (e.g., "sidekiq_queue_stats").
|
|
10
|
-
#
|
|
11
|
-
# @example
|
|
12
|
-
# class MyAdapter < JobAdapter
|
|
13
|
-
# def self.available? = !!defined?(::MyQueue)
|
|
14
|
-
# private
|
|
15
|
-
# def prefix = 'my_queue'
|
|
16
|
-
# end
|
|
17
|
-
#
|
|
18
|
-
class JobAdapter
|
|
19
|
-
# Get queue statistics (sizes, latencies).
|
|
20
|
-
#
|
|
21
|
-
# @return [Hash] Bridge request
|
|
22
|
-
def queue_stats
|
|
23
|
-
{ tool: "#{prefix}_queue_stats", params: {} }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# List recent job failures.
|
|
27
|
-
#
|
|
28
|
-
# @param limit [Integer] Max failures (default: 10, max: 100)
|
|
29
|
-
# @return [Hash] Bridge request
|
|
30
|
-
def recent_failures(limit: 10)
|
|
31
|
-
limit = [limit, 100].min
|
|
32
|
-
{ tool: "#{prefix}_recent_failures", params: { limit: limit } }
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Find a job by its ID.
|
|
36
|
-
#
|
|
37
|
-
# A nil id is dropped from the bridge request so downstream tools see
|
|
38
|
-
# a missing parameter rather than an explicit `nil` — symmetric with
|
|
39
|
-
# `CacheAdapter.stats(namespace: nil)`.
|
|
40
|
-
#
|
|
41
|
-
# @param id [Object, nil] Job ID
|
|
42
|
-
# @return [Hash] Bridge request
|
|
43
|
-
def find_job(id:)
|
|
44
|
-
{ tool: "#{prefix}_find_job", params: { id: id }.compact }
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# List scheduled jobs.
|
|
48
|
-
#
|
|
49
|
-
# @param limit [Integer] Max jobs (default: 20, max: 100)
|
|
50
|
-
# @return [Hash] Bridge request
|
|
51
|
-
def scheduled_jobs(limit: 20)
|
|
52
|
-
limit = [limit, 100].min
|
|
53
|
-
{ tool: "#{prefix}_scheduled_jobs", params: { limit: limit } }
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Retry a failed job.
|
|
57
|
-
#
|
|
58
|
-
# A nil id is dropped from the bridge request — see #find_job.
|
|
59
|
-
#
|
|
60
|
-
# @param id [Object, nil] Job ID
|
|
61
|
-
# @return [Hash] Bridge request
|
|
62
|
-
def retry_job(id:)
|
|
63
|
-
{ tool: "#{prefix}_retry_job", params: { id: id }.compact }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
private
|
|
67
|
-
|
|
68
|
-
def prefix
|
|
69
|
-
raise NotImplementedError, "#{self.class}#prefix must be implemented"
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'job_adapter'
|
|
4
|
-
|
|
5
|
-
module Woods
|
|
6
|
-
module Console
|
|
7
|
-
module Adapters
|
|
8
|
-
# Job backend adapter for Sidekiq.
|
|
9
|
-
#
|
|
10
|
-
# Builds bridge requests for Sidekiq queue stats, failure listing,
|
|
11
|
-
# job lookup, scheduled jobs, and retry operations.
|
|
12
|
-
#
|
|
13
|
-
# @example
|
|
14
|
-
# adapter = SidekiqAdapter.new
|
|
15
|
-
# adapter.queue_stats # => { tool: 'sidekiq_queue_stats', params: {} }
|
|
16
|
-
#
|
|
17
|
-
class SidekiqAdapter < JobAdapter
|
|
18
|
-
# Check if Sidekiq is available in the current environment.
|
|
19
|
-
#
|
|
20
|
-
# @return [Boolean]
|
|
21
|
-
def self.available?
|
|
22
|
-
!!defined?(::Sidekiq)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def prefix
|
|
28
|
-
'sidekiq'
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'job_adapter'
|
|
4
|
-
|
|
5
|
-
module Woods
|
|
6
|
-
module Console
|
|
7
|
-
module Adapters
|
|
8
|
-
# Job backend adapter for Solid Queue.
|
|
9
|
-
#
|
|
10
|
-
# Builds bridge requests for Solid Queue job stats, failure listing,
|
|
11
|
-
# job lookup, scheduled jobs, and retry operations.
|
|
12
|
-
#
|
|
13
|
-
# @example
|
|
14
|
-
# adapter = SolidQueueAdapter.new
|
|
15
|
-
# adapter.queue_stats # => { tool: 'solid_queue_queue_stats', params: {} }
|
|
16
|
-
#
|
|
17
|
-
class SolidQueueAdapter < JobAdapter
|
|
18
|
-
# Check if Solid Queue is available in the current environment.
|
|
19
|
-
#
|
|
20
|
-
# @return [Boolean]
|
|
21
|
-
def self.available?
|
|
22
|
-
!!defined?(::SolidQueue)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def prefix
|
|
28
|
-
'solid_queue'
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|