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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -24
  3. data/lib/stimulus_plumbers/mcp/loaders/aria_loader.rb +31 -0
  4. data/lib/stimulus_plumbers/mcp/loaders/component_docs_loader.rb +38 -0
  5. data/lib/stimulus_plumbers/mcp/loaders/component_requirements.rb +41 -0
  6. data/lib/stimulus_plumbers/mcp/loaders/component_schema_loader.rb +49 -0
  7. data/lib/stimulus_plumbers/mcp/loaders/component_theme_loader.rb +41 -0
  8. data/lib/stimulus_plumbers/mcp/loaders/controller_docs_loader.rb +31 -0
  9. data/lib/stimulus_plumbers/mcp/loaders/controller_schema_loader.rb +49 -0
  10. data/lib/stimulus_plumbers/mcp/loaders/guide.md +48 -0
  11. data/lib/stimulus_plumbers/mcp/loaders/guide_loader.rb +40 -4
  12. data/lib/stimulus_plumbers/mcp/loaders/icons_loader.rb +34 -0
  13. data/lib/stimulus_plumbers/mcp/loaders/support/docs_table_parser.rb +112 -0
  14. data/lib/stimulus_plumbers/mcp/loaders/support/gem_vendor_path.rb +18 -0
  15. data/lib/stimulus_plumbers/mcp/loaders/tailwind_loader.rb +35 -0
  16. data/lib/stimulus_plumbers/mcp/loaders/versions_loader.rb +110 -0
  17. data/lib/stimulus_plumbers/mcp/plugins/aria.rb +34 -0
  18. data/lib/stimulus_plumbers/mcp/plugins/base.rb +40 -31
  19. data/lib/stimulus_plumbers/mcp/plugins/component_docs.rb +96 -0
  20. data/lib/stimulus_plumbers/mcp/plugins/component_schema.rb +133 -0
  21. data/lib/stimulus_plumbers/mcp/plugins/component_theme.rb +90 -0
  22. data/lib/stimulus_plumbers/mcp/plugins/controller_docs.rb +91 -0
  23. data/lib/stimulus_plumbers/mcp/plugins/controller_schema.rb +81 -0
  24. data/lib/stimulus_plumbers/mcp/plugins/guide.rb +70 -16
  25. data/lib/stimulus_plumbers/mcp/plugins/icons.rb +42 -0
  26. data/lib/stimulus_plumbers/mcp/plugins/tailwind.rb +69 -45
  27. data/lib/stimulus_plumbers/mcp/plugins/versions.rb +44 -0
  28. data/lib/stimulus_plumbers/mcp/server.rb +26 -9
  29. data/lib/stimulus_plumbers/mcp/version.rb +1 -1
  30. data/lib/stimulus_plumbers_mcp.rb +31 -11
  31. metadata +22 -12
  32. data/lib/stimulus_plumbers/mcp/loaders/component_controller_map.rb +0 -38
  33. data/lib/stimulus_plumbers/mcp/loaders/docs_loader.rb +0 -129
  34. data/lib/stimulus_plumbers/mcp/loaders/guide/overview.md +0 -48
  35. data/lib/stimulus_plumbers/mcp/loaders/schema_loader.rb +0 -45
  36. data/lib/stimulus_plumbers/mcp/loaders/stimulus_manifest.rb +0 -47
  37. data/lib/stimulus_plumbers/mcp/loaders/tailwind_theme_loader.rb +0 -29
  38. data/lib/stimulus_plumbers/mcp/loaders/theme_loader.rb +0 -97
  39. data/lib/stimulus_plumbers/mcp/plugins/docs.rb +0 -82
  40. data/lib/stimulus_plumbers/mcp/plugins/schema.rb +0 -110
  41. data/lib/stimulus_plumbers/mcp/plugins/stimulus.rb +0 -66
  42. 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