hub_kernel-mcp 0.3.0 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 921598b05d30bf9e211477dbc575f7e59a8cde2487bdaa935e13242c7a80b5e7
4
- data.tar.gz: d3e4111ecee2b448bee1120f7f9653b06c31bfd50d6a5143d622626fe42e7cc5
3
+ metadata.gz: 363a48c785a072c9ba3c744969cb93de55d2514c0e68008873a9bb7312fd8fb0
4
+ data.tar.gz: c3f27a9e3a246c1742cd101415b286f7096dfeed8e52bb618e604b7e5127060b
5
5
  SHA512:
6
- metadata.gz: eeb8295b220d5cdc288ba99e991eeced8e0e5be262d7052a95715a4703e886ddb5db31f2369234a093fd2858ff08e89a2910a388c531121710058f09fbd83612
7
- data.tar.gz: 73f9ce82ab316a2dbf92b912ba0676f871d311975b4f297c7cdb8a0e263c722c954c53705a23a779038494e7a1b2e48a1ffea254389c6ff2f64c0c8e1e624446
6
+ metadata.gz: 58097086aeed03bd87cb0d10ae8b554b2963823300f1d70f85f8efd7ddcaf5d195eaf2e397edf5cad03fc98966fa754fe0eb489251bc3e3c552178d50d5cc292
7
+ data.tar.gz: 581abee68889b126bb28291ad58329fab0b7d5c48e7bef6be0860a766105fde7afe633d5ca72e715defe35721268f7572dc4e35421b3050c6d2be752cbf6c2f4
data/README.md CHANGED
@@ -21,9 +21,16 @@ serves:
21
21
  ```ruby
22
22
  Rails.application.config.to_prepare do
23
23
  HubKernel::Interface.hubs = [ Supplies, { "money" => Billing::Ledger } ]
24
+ HubKernel::Mcp.check!
24
25
  end
25
26
  ```
26
27
 
28
+ `HubKernel::Mcp.check!` raises `HubKernel::Mcp::UnservableHubError` naming every problem
29
+ in one error. It names each problem hub_kernel-interface's own check finds in the served
30
+ list, a served name holding two underscores in a row, and a tool whose name holds a
31
+ character other than a letter, a digit, an underscore or a hyphen or is longer than 64
32
+ characters. Inside `to_prepare` it runs again after every code reload.
33
+
27
34
  Mount the engine:
28
35
 
29
36
  ```ruby
@@ -1,5 +1,5 @@
1
1
  module HubKernel
2
2
  module Mcp
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -4,8 +4,46 @@ require "hub_kernel/mcp/engine"
4
4
 
5
5
  module HubKernel
6
6
  module Mcp
7
+ UnservableHubError = HubKernel::Interface::UnservableHubError
8
+
7
9
  mattr_accessor :base_controller, default: "ActionController::API"
8
10
  mattr_accessor :person_method
9
11
  mattr_accessor :account_method
12
+
13
+ def self.check!
14
+ problems = shared_problems + doubled_underscores + unlisted_characters + long_names
15
+ raise UnservableHubError, problems.join("\n") if problems.any?
16
+ end
17
+
18
+ def self.shared_problems
19
+ HubKernel::Interface.check!
20
+ []
21
+ rescue UnservableHubError => error
22
+ error.message.split("\n")
23
+ end
24
+
25
+ def self.doubled_underscores
26
+ HubKernel::Interface.served.select { |name, _hub| name.include?("__") }.map do |name, hub|
27
+ "#{hub.name} is served at #{name}, which holds two underscores in a row"
28
+ end
29
+ end
30
+
31
+ def self.unlisted_characters
32
+ tool_names.grep_v(/\A[A-Za-z0-9_-]*\z/).map do |name|
33
+ "The tool #{name} holds a character other than a letter, a digit, an underscore or a hyphen"
34
+ end
35
+ end
36
+
37
+ def self.long_names
38
+ tool_names.select { |name| name.length > 64 }.map { |name| "The tool #{name} is longer than 64 characters" }
39
+ end
40
+
41
+ def self.tool_names
42
+ HubKernel::Interface.served.select { |_name, hub| hub.respond_to?(:exposures) }.flat_map do |served_name, hub|
43
+ hub.exposures.map { |exposure| "#{served_name}__#{exposure.name}" }
44
+ end
45
+ end
46
+
47
+ private_class_method :shared_problems, :doubled_underscores, :unlisted_characters, :long_names, :tool_names
10
48
  end
11
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hub_kernel-mcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tylercschneider
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.3'
32
+ version: '0.6'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.3'
39
+ version: '0.6'
40
40
  description: hub_kernel-mcp serves the methods every hub a host serves exposes as
41
41
  MCP tools at one address, with every call going through the host's sign-in, permission
42
42
  check and account scope.