stimulus_plumbers_mcp 0.4.5 → 0.4.8
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/README.md +34 -24
- data/lib/stimulus_plumbers/mcp/loaders/aria_loader.rb +31 -0
- data/lib/stimulus_plumbers/mcp/loaders/component_docs_loader.rb +38 -0
- data/lib/stimulus_plumbers/mcp/loaders/component_requirements.rb +41 -0
- data/lib/stimulus_plumbers/mcp/loaders/component_schema_loader.rb +49 -0
- data/lib/stimulus_plumbers/mcp/loaders/component_theme_loader.rb +41 -0
- data/lib/stimulus_plumbers/mcp/loaders/controller_docs_loader.rb +31 -0
- data/lib/stimulus_plumbers/mcp/loaders/controller_schema_loader.rb +49 -0
- data/lib/stimulus_plumbers/mcp/loaders/guide.md +48 -0
- data/lib/stimulus_plumbers/mcp/loaders/guide_loader.rb +40 -4
- data/lib/stimulus_plumbers/mcp/loaders/icons_loader.rb +34 -0
- data/lib/stimulus_plumbers/mcp/loaders/support/docs_table_parser.rb +112 -0
- data/lib/stimulus_plumbers/mcp/loaders/support/gem_vendor_path.rb +18 -0
- data/lib/stimulus_plumbers/mcp/loaders/tailwind_loader.rb +35 -0
- data/lib/stimulus_plumbers/mcp/loaders/versions_loader.rb +110 -0
- data/lib/stimulus_plumbers/mcp/plugins/aria.rb +34 -0
- data/lib/stimulus_plumbers/mcp/plugins/base.rb +40 -31
- data/lib/stimulus_plumbers/mcp/plugins/component_docs.rb +96 -0
- data/lib/stimulus_plumbers/mcp/plugins/component_schema.rb +133 -0
- data/lib/stimulus_plumbers/mcp/plugins/component_theme.rb +90 -0
- data/lib/stimulus_plumbers/mcp/plugins/controller_docs.rb +91 -0
- data/lib/stimulus_plumbers/mcp/plugins/controller_schema.rb +81 -0
- data/lib/stimulus_plumbers/mcp/plugins/guide.rb +70 -16
- data/lib/stimulus_plumbers/mcp/plugins/icons.rb +42 -0
- data/lib/stimulus_plumbers/mcp/plugins/tailwind.rb +69 -45
- data/lib/stimulus_plumbers/mcp/plugins/versions.rb +44 -0
- data/lib/stimulus_plumbers/mcp/server.rb +26 -9
- data/lib/stimulus_plumbers/mcp/version.rb +1 -1
- data/lib/stimulus_plumbers_mcp.rb +31 -11
- metadata +22 -12
- data/lib/stimulus_plumbers/mcp/loaders/component_controller_map.rb +0 -38
- data/lib/stimulus_plumbers/mcp/loaders/docs_loader.rb +0 -129
- data/lib/stimulus_plumbers/mcp/loaders/guide/overview.md +0 -48
- data/lib/stimulus_plumbers/mcp/loaders/schema_loader.rb +0 -45
- data/lib/stimulus_plumbers/mcp/loaders/stimulus_manifest.rb +0 -47
- data/lib/stimulus_plumbers/mcp/loaders/tailwind_theme_loader.rb +0 -29
- data/lib/stimulus_plumbers/mcp/loaders/theme_loader.rb +0 -97
- data/lib/stimulus_plumbers/mcp/plugins/docs.rb +0 -82
- data/lib/stimulus_plumbers/mcp/plugins/schema.rb +0 -110
- data/lib/stimulus_plumbers/mcp/plugins/stimulus.rb +0 -66
- data/lib/stimulus_plumbers/mcp/plugins/theme.rb +0 -66
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module StimulusPlumbers
|
|
4
|
-
module MCP
|
|
5
|
-
module Plugins
|
|
6
|
-
module Theme
|
|
7
|
-
extend Base
|
|
8
|
-
|
|
9
|
-
LOADER_KEY = :theme
|
|
10
|
-
LOADER = ThemeLoader
|
|
11
|
-
|
|
12
|
-
STATIC_RESOURCES = [
|
|
13
|
-
::MCP::Resource.new(
|
|
14
|
-
uri: "theme://base",
|
|
15
|
-
name: "theme-base",
|
|
16
|
-
description: "Guide for implementing a custom stimulus-plumbers theme: method convention, return format",
|
|
17
|
-
mime_type: "text/markdown"
|
|
18
|
-
),
|
|
19
|
-
::MCP::Resource.new(
|
|
20
|
-
uri: "theme://components",
|
|
21
|
-
name: "theme-components-index",
|
|
22
|
-
description: "Index of all component keys that can be implemented in a custom theme",
|
|
23
|
-
mime_type: "application/json"
|
|
24
|
-
)
|
|
25
|
-
].freeze
|
|
26
|
-
|
|
27
|
-
DYNAMIC_RESOURCE_TEMPLATES = [
|
|
28
|
-
::MCP::ResourceTemplate.new(
|
|
29
|
-
uri_template: "theme://components/{name}",
|
|
30
|
-
name: "theme-component-interface",
|
|
31
|
-
description: "Method name, param signature, and return contract for implementing a component in a custom theme",
|
|
32
|
-
mime_type: "application/json"
|
|
33
|
-
)
|
|
34
|
-
].freeze
|
|
35
|
-
|
|
36
|
-
def self.read(uri, store)
|
|
37
|
-
theme = store[:theme]
|
|
38
|
-
|
|
39
|
-
case uri
|
|
40
|
-
when "theme://base"
|
|
41
|
-
text_resource(uri, "text/markdown", theme[:base_doc])
|
|
42
|
-
when "theme://components"
|
|
43
|
-
json_resource(uri, theme[:components].keys)
|
|
44
|
-
when %r{\Atheme://components/(.+)\z}
|
|
45
|
-
key = Regexp.last_match(1).to_sym
|
|
46
|
-
json_resource(uri, theme[:components][key] || { error: "unknown component: #{key}" })
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def self.register_tools(server, store)
|
|
51
|
-
theme = store[:theme]
|
|
52
|
-
|
|
53
|
-
text_tool(
|
|
54
|
-
server,
|
|
55
|
-
name: "get_theme_interface",
|
|
56
|
-
description: "Returns the method name, param signature, and return contract for a custom theme component",
|
|
57
|
-
input_schema: { properties: { component: { type: "string" } }, required: ["component"] }
|
|
58
|
-
) do |component:|
|
|
59
|
-
data = theme[:components][component.to_sym]
|
|
60
|
-
data ? JSON.generate(data) : not_found("unknown component: #{component}")
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|