Class: ActionMCP::Apps::ViewManifest
- Inherits:
-
Object
- Object
- ActionMCP::Apps::ViewManifest
- Defined in:
- lib/action_mcp/apps/view_manifest.rb
Overview
Loads .action_mcp/views/manifest.json (emitted by
@action-mcp/vite-plugin) and registers one ResourceTemplate per compiled
view, serving the bundle inlined into an HTML shell as a ui:// resource.
Defined Under Namespace
Classes: Error
Constant Summary collapse
- SCHEMA_VERSION =
1- MANIFEST_FILENAME =
"manifest.json"
Class Method Summary collapse
-
.load!(dir = nil) ⇒ Array<Class>
Registers templates for every view in the manifest.
-
.resolve_resource_uri(uri) ⇒ Object
Resolves the stable URI declared by a tool to the content-addressed resource URI currently registered from the compiled views manifest.
Class Method Details
.load!(dir = nil) ⇒ Array<Class>
Registers templates for every view in the manifest. Idempotent: previously generated view classes are evicted first, so rebuilt manifests (new hashes) load cleanly on app reload.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/action_mcp/apps/view_manifest.rb', line 24 def load!(dir = nil) dir = resolve_dir(dir) manifest_path = File.join(dir, MANIFEST_FILENAME) unless File.exist?(manifest_path) evict_generated_templates! return [] end data = parse_manifest(manifest_path) evict_generated_templates! aliases = {} classes = data.fetch("views", {}).map do |name, entry| klass, logical_uri, resource_uri = register_view(dir, name, entry) if aliases.key?(logical_uri) raise Error, "Duplicate logicalUri #{logical_uri.inspect} in views manifest" end aliases[logical_uri] = resource_uri klass end @resource_uri_aliases = aliases.freeze classes rescue StandardError evict_generated_templates! raise end |
.resolve_resource_uri(uri) ⇒ Object
Resolves the stable URI declared by a tool to the content-addressed resource URI currently registered from the compiled views manifest.
54 55 56 |
# File 'lib/action_mcp/apps/view_manifest.rb', line 54 def resolve_resource_uri(uri) (@resource_uri_aliases || {}).fetch(uri, uri) end |