hub_kernel-interface 0.6.0 → 0.7.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 +4 -4
- data/Rakefile +2 -0
- data/lib/hub_kernel/interface/version.rb +1 -1
- data/the_local/agents/hub_kernel-interface-develop.md +133 -0
- data/the_local/agents/hub_kernel-interface-info.md +40 -0
- data/the_local/agents/hub_kernel-interface-install.md +78 -0
- data/the_local/interface.yml +39 -0
- metadata +5 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f7cdd56bbaa3af1615fe903a0002571152377ba8b56a5c23c86034c9352c4de2
|
|
4
|
+
data.tar.gz: b90f842a3e3f3b41557cda49bd8c7b9bee47b83c0f1ead77af2519cda26dcbd0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c31921614b4f23ec6893f283618933eed79fdff334cbf86a09b8531ccbe62d6bcfd7137c16f70ff216bd0923409b11b72ffb56900fd8cc8a8941c1d6c8b19aa4
|
|
7
|
+
data.tar.gz: 5206997bce3a5916d0ca85e599484541f69fee6e9d08cda7647ac684f539a7dcd23f9fc12e6422be34e6cd48614d5b01e81ea347a33c00d117e7180d47e9247e
|
data/Rakefile
CHANGED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hub_kernel-interface-develop
|
|
3
|
+
description: Use PROACTIVELY for making a hub's methods callable by name, listing what a person may call on an account, calling a hub method by name from an API or MCP server, finding a served hub by name, running an interface's boot check, refusing unlisted values, describing a missing record, and handling the errors a call by name raises — MUST BE USED instead of hand-rolling a method allowlist, a permission check per endpoint, a `public_send` dispatcher, or an interface's own refusal messages.
|
|
4
|
+
tools: Read, Write, Edit, Grep
|
|
5
|
+
scope: hub interface contract — a hub declaring the methods outside callers may reach by name, calling one by name for a person and an account behind the permission check and account scope, the host's one list of served hubs and its boot check, and the reasons every interface gives for an unlisted value or a missing record
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This local writes code against hub_kernel-interface by following these steps exactly and invents none. Where a step needs a choice, it asks the developer.
|
|
9
|
+
|
|
10
|
+
## What hub_kernel-interface is
|
|
11
|
+
|
|
12
|
+
The contract between a hub and the interfaces that call it from outside the app. A hub is a named Ruby module holding one area of behaviour as module methods. It declares which of those methods an outside caller may reach by name, the keyword values each takes, and whether it writes. An interface, such as a JSON API or an MCP server, finds hubs in the host's served list, shows a person what they may call on an account, and makes the call through this gem, which asks the host's permission check and runs the call inside the host's account scope. Fire this local when a hub method should become callable from an interface, or when writing or changing an interface gem that serves hubs.
|
|
13
|
+
|
|
14
|
+
## Interface
|
|
15
|
+
|
|
16
|
+
- `HubKernel::Exposes` — extended by a hub module so it can declare and serve methods callable by name.
|
|
17
|
+
- `exposes` — declares one hub method callable by name: `exposes :name, takes: [...], writes: true/false`.
|
|
18
|
+
- `exposed` — returns the declaration for one name, with `name`, `takes` and `writes`, or `nil` when the hub does not expose it.
|
|
19
|
+
- `exposures` — returns every declaration the hub has made, with no permission check.
|
|
20
|
+
- `exposures_for` — returns the declarations the permission check lets a person call on an account.
|
|
21
|
+
- `allows?` — asks the permission check whether a person may call one exposed method on an account, returning `true` or `false`.
|
|
22
|
+
- `call_exposed` — calls an exposed method by name with a person, an account and its values, behind the permission check and inside the account scope, and returns the method's value.
|
|
23
|
+
- `exposure_problems` — returns one message per declaration the hub has no method for, or whose values do not match the method's keywords.
|
|
24
|
+
- `HubKernel::Interface.find` — returns the hub served at a name, or `nil`.
|
|
25
|
+
- `HubKernel::Interface.served` — returns a hash of every served name to its hub.
|
|
26
|
+
- `HubKernel::Interface.check!` — the boot check, raising when the served list cannot be served.
|
|
27
|
+
- `HubKernel::Interface::UnservableHubError` — raised by `check!`, its message naming every problem, one per line.
|
|
28
|
+
- `HubKernel::Interface::CallReasons.refuse_unlisted_values` — refuses a call that sends a value the method is not declared to take.
|
|
29
|
+
- `HubKernel::Interface::CallReasons.missing_record` — returns the sentence every interface gives for a record that does not exist.
|
|
30
|
+
- `HubKernel::Interface::ExposingHubs.list` — every hub that has declared at least one exposed method, whether served or not.
|
|
31
|
+
- `HubKernel::UnexposedMethodError` — raised when a call names a method the hub does not expose.
|
|
32
|
+
- `HubKernel::NotAllowed` — raised when the permission check refuses the call.
|
|
33
|
+
- `HubKernel::Refused` — raised with a reason a person can read, by a hub method or by `refuse_unlisted_values`.
|
|
34
|
+
- `HubKernel::MissingArgumentError` — raised when a call has no person, no account, or lacks a required value.
|
|
35
|
+
- `HubKernel::UnwiredPortError` — raised when a call is made while the host's permission check or account scope is unset.
|
|
36
|
+
- `HubKernel::NonBooleanAnswerError` — raised when the host's permission check answers anything but `true` or `false`.
|
|
37
|
+
|
|
38
|
+
## How to use it
|
|
39
|
+
|
|
40
|
+
### Making a hub's methods callable by name
|
|
41
|
+
|
|
42
|
+
1. In the hub module, extend `HubKernel::Exposes`. The hub must be a named module, and each callable method must be a public module method taking keyword arguments:
|
|
43
|
+
|
|
44
|
+
```ruby
|
|
45
|
+
module Supplies
|
|
46
|
+
extend HubKernel::Exposes
|
|
47
|
+
|
|
48
|
+
exposes :price_of, takes: %i[item], writes: false
|
|
49
|
+
exposes :restock, takes: %i[item quantity], writes: true
|
|
50
|
+
|
|
51
|
+
def self.price_of(item:) = "#{item} costs 3"
|
|
52
|
+
def self.restock(item:, quantity: 1) = Stock.add(item, quantity)
|
|
53
|
+
end
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
2. Ask the developer which methods outside callers may reach. Expose only those, one `exposes` line each.
|
|
57
|
+
|
|
58
|
+
3. For each one, list in `takes:` the keyword names as symbols.
|
|
59
|
+
- Every required keyword of the method must be listed.
|
|
60
|
+
- A listed name must be a keyword the method has, required or optional, unless the method takes `**` keywords.
|
|
61
|
+
- The method receives only the listed values, so a value left out of `takes:` never reaches it.
|
|
62
|
+
|
|
63
|
+
4. Ask the developer whether each method changes data, and set `writes:` to `true` or `false`. There is no default. This gem records the flag and does not act on it; interfaces read it.
|
|
64
|
+
|
|
65
|
+
5. When the hub method must turn a call down for a reason the person should read, raise `HubKernel::Refused` with that reason:
|
|
66
|
+
|
|
67
|
+
```ruby
|
|
68
|
+
raise HubKernel::Refused, "Quantity must be at least 1" if quantity < 1
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
6. Confirm `Supplies.exposure_problems` returns `[]`. Each string it returns names a declaration with no matching method, or a `takes:` list that does not match the method's keywords.
|
|
72
|
+
|
|
73
|
+
7. The permission check is asked about the action `"<hub>:<method>"`, where `<hub>` is the hub's own module name, without its namespace, in snake case: `supplies:price_of`, and `ledger:record_spend` for `Billing::Ledger` even when it is served as `money`. Tell the developer each new action string so their permission rules can grant it.
|
|
74
|
+
|
|
75
|
+
8. For the hub to be reachable from an interface, it must be in the host's served list. That list is set by the hub_kernel-interface-install local; hand the step to it.
|
|
76
|
+
|
|
77
|
+
### Serving hubs from an interface gem
|
|
78
|
+
|
|
79
|
+
1. Run the boot check once at start-up, after the host has set its served list, permission check and account scope:
|
|
80
|
+
|
|
81
|
+
```ruby
|
|
82
|
+
HubKernel::Interface.check!
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
It raises `HubKernel::Interface::UnservableHubError` listing, one per line, every served hub that exposes no methods, every name two hubs answer at, and every problem `exposure_problems` reports for a served hub. Let it raise; do not rescue it into a warning.
|
|
86
|
+
|
|
87
|
+
2. To list the hubs, use `HubKernel::Interface.served`, a hash of served name to hub. To resolve the name a request gives, use `HubKernel::Interface.find(name)`. Names are strings. Treat `nil` as an unknown hub.
|
|
88
|
+
|
|
89
|
+
3. To show a person what they may call on an account, use `hub.exposures_for(person:, account:)`. Each result has `name`, `takes` and `writes`. It asks the permission check once per exposed method. Use `hub.exposures` only where no person is involved, such as building a schema at boot.
|
|
90
|
+
|
|
91
|
+
4. To ask about one method, check `hub.exposed(name)` first, since `allows?` and `refuse_unlisted_values` work only on an exposed name:
|
|
92
|
+
|
|
93
|
+
```ruby
|
|
94
|
+
hub.allows?(name, person: person, account: account)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
5. To make a call, in this order:
|
|
98
|
+
|
|
99
|
+
```ruby
|
|
100
|
+
values = request_values.transform_keys(&:to_sym)
|
|
101
|
+
HubKernel::Interface::CallReasons.refuse_unlisted_values(hub, name, values: values, person: person, account: account)
|
|
102
|
+
hub.call_exposed(name, values: values, person: person, account: account)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
- Value keys must be symbols. A string key is treated as missing.
|
|
106
|
+
- `refuse_unlisted_values` returns `nil` and asks nothing when every value is listed. Otherwise it asks the permission check once, raises `HubKernel::NotAllowed` if refused, and else raises `HubKernel::Refused` with `"<method> does not take <values>"`. Without it, `call_exposed` drops unlisted values silently.
|
|
107
|
+
- `call_exposed` raises, in this order: `MissingArgumentError` for no person or account, `UnexposedMethodError` for an unexposed name, `NotAllowed` when the check refuses, `MissingArgumentError` naming each missing required value as `"Give item, quantity"`, and then runs the method inside the account scope and returns its value.
|
|
108
|
+
- `UnwiredPortError` and `NonBooleanAnswerError` can come from any step that asks the permission check or enters the account scope.
|
|
109
|
+
|
|
110
|
+
6. Ask the developer how the interface reports each error to its caller, such as an HTTP status or an MCP error result. The errors split into:
|
|
111
|
+
- `UnexposedMethodError` — the method does not exist for callers.
|
|
112
|
+
- `NotAllowed` — the person may not make this call.
|
|
113
|
+
- `MissingArgumentError` and `Refused` — the call was turned down, and the message is written for the person.
|
|
114
|
+
- `UnwiredPortError` and `NonBooleanAnswerError` — the host is wired wrong. Do not show these as the caller's fault.
|
|
115
|
+
|
|
116
|
+
7. When a hub method raises because a record it was asked for does not exist, such as `ActiveRecord::RecordNotFound`, report it with:
|
|
117
|
+
|
|
118
|
+
```ruby
|
|
119
|
+
HubKernel::Interface::CallReasons.missing_record(error) # => "No consumable has the id 7"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
It reads the error's `model` and `id`, so pass an error that has both.
|
|
123
|
+
|
|
124
|
+
8. `HubKernel::Interface::ExposingHubs.list` holds every hub that has declared an exposed method, served or not. Use it only for tooling that must see unserved hubs, such as showing a developer what could be added to the served list. Serve from `served` and `find`, never from it.
|
|
125
|
+
|
|
126
|
+
## Conventions
|
|
127
|
+
|
|
128
|
+
- Every call by name carries a real person and a real account. Never pass `nil` or a placeholder to get past `MissingArgumentError`.
|
|
129
|
+
- Never call a hub method directly from an interface with `public_send` or `send`. Every outside call goes through `call_exposed`, so the permission check and account scope are never skipped.
|
|
130
|
+
- Every interface calls `refuse_unlisted_values` before `call_exposed` and `missing_record` for a missing record, so every interface gives the same reasons.
|
|
131
|
+
- Every interface runs `check!` at start-up.
|
|
132
|
+
- Never rescue `UnwiredPortError` or `NonBooleanAnswerError` into a refusal; they mean the host's settings are wrong.
|
|
133
|
+
- Adding the gem, setting the served list, the permission check and the account scope are out of scope here. They belong to the hub_kernel-interface-install local.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hub_kernel-interface-info
|
|
3
|
+
description: Use to learn what hub_kernel-interface offers — hubs listing the methods outside callers may reach by name, permission-checked calls in an account's scope, the host's list of served hubs, and the shared reasons interfaces give when a call is turned down.
|
|
4
|
+
tools: Read
|
|
5
|
+
scope: hub interface contract — a hub declaring the methods outside callers may reach by name, calling one by name for a person and an account behind the permission check and account scope, the host's one list of served hubs and its boot check, and the reasons every interface gives for an unlisted value or a missing record
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This local explains hub_kernel-interface and makes no changes.
|
|
9
|
+
|
|
10
|
+
## What hub_kernel-interface is
|
|
11
|
+
|
|
12
|
+
hub_kernel-interface is the contract between a hub and the interfaces that call it from outside the app. A hub is a module holding one area of the application's behaviour. It names which of its methods an outside caller may reach by name, the values each one takes, and whether it writes. An interface, such as a JSON API or an MCP server, uses that list to show a person what they may call on an account, and to make the call.
|
|
13
|
+
|
|
14
|
+
Every call by name carries a person and an account. The host's permission check is asked whether that person may run that method on that account, and the call runs inside the host's account scope. The host also keeps one list of the hubs every interface serves, with a boot check that fails loudly when that list cannot be served. Interface gems depend on this gem alone, not on the rest of hub_kernel.
|
|
15
|
+
|
|
16
|
+
Reach for it when a Rails app wants its hubs callable from an API or an agent server, or when building a gem that serves hubs to outside callers.
|
|
17
|
+
|
|
18
|
+
## Interface
|
|
19
|
+
|
|
20
|
+
This local declares no commands of its own. The surface belongs to the other two locals:
|
|
21
|
+
|
|
22
|
+
- **hub_kernel-interface-install** owns adding the gem to a host and filling the three host settings: the served hub list, the permission check, and the account scope.
|
|
23
|
+
- **hub_kernel-interface-develop** owns everything a hub or an interface gem writes against: declaring a hub's callable methods, listing and making calls by name, finding served hubs, the boot check, the shared refusal reasons, and the errors a call can raise.
|
|
24
|
+
|
|
25
|
+
## How to use it
|
|
26
|
+
|
|
27
|
+
- Wiring the gem into an app, or a call fails because a host setting is empty: go to the install local.
|
|
28
|
+
- Making a hub's methods callable by name, writing an interface gem that serves hubs, or handling the errors a call raises: go to the develop local.
|
|
29
|
+
|
|
30
|
+
## Conventions
|
|
31
|
+
|
|
32
|
+
- **Hub** — a module that groups one area of behaviour and lists which of its methods outside callers may reach.
|
|
33
|
+
- **Host** — the Rails app that runs the hubs and fills the gem's three settings.
|
|
34
|
+
- **Interface gem** — a gem that serves hubs to outside callers, such as an API or an MCP server.
|
|
35
|
+
- **Served name** — the name an interface reaches a hub by. A hub listed on its own is served at its module name in snake case, and a hub listed as a one-pair hash is served only at the name given.
|
|
36
|
+
- **Permission action** — the string the permission check is asked about, written `hub:method` with the hub's own snake-case name, even when it is served under another name.
|
|
37
|
+
- **Person and account** — the caller and the account a call acts on. Every call by name needs both.
|
|
38
|
+
- **Values** — the keyword arguments a call passes. Each callable method lists the values it takes, and a value outside that list is a reason to turn the call down.
|
|
39
|
+
- **Boot check** — the check an interface gem runs at start-up that reports every problem in the served list at once: a hub with no callable methods, two hubs at one name, and a listed method the hub does not have or whose values do not match.
|
|
40
|
+
- **Port** — a host setting the gem calls but does not fill: the permission check and the account scope. A call made while either is empty fails as unwired.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hub_kernel-interface-install
|
|
3
|
+
description: Use to hook hub_kernel-interface into a project — adding the gem, naming the hubs every interface serves, and filling the permission check and the account scope.
|
|
4
|
+
tools: Bash, Read, Edit
|
|
5
|
+
scope: hub interface contract — a hub declaring the methods outside callers may reach by name, calling one by name for a person and an account behind the permission check and account scope, the host's one list of served hubs and its boot check, and the reasons every interface gives for an unlisted value or a missing record
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This local follows these steps exactly and invents none. Where a step needs a choice, it asks the developer.
|
|
9
|
+
|
|
10
|
+
## What hub_kernel-interface is
|
|
11
|
+
|
|
12
|
+
The contract between an app's hubs and the interfaces that call them from outside, such as a JSON API or an MCP server; hook it in when a Rails app wants its hubs callable by name, or when an interface gem is added that needs it.
|
|
13
|
+
|
|
14
|
+
## Interface
|
|
15
|
+
|
|
16
|
+
- `gem "hub_kernel-interface"` — adds the gem to the host's `Gemfile`.
|
|
17
|
+
- `HubKernel::Interface.hubs=` — sets the one list of hubs every interface serves, and the name each is served at.
|
|
18
|
+
- `HubKernel::Authz.check=` — sets the permission check every call by name is asked before it runs.
|
|
19
|
+
- `HubKernel::Context.scope=` — sets the account scope every call by name runs inside.
|
|
20
|
+
|
|
21
|
+
## How to use it
|
|
22
|
+
|
|
23
|
+
1. Add the gem to the host's `Gemfile` and run `bundle install`:
|
|
24
|
+
|
|
25
|
+
```ruby
|
|
26
|
+
gem "hub_kernel-interface"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
It needs Ruby 3.2 or later and activesupport 8.1.3 or later. Bundler requires it on boot, so no `require` line is needed in the host.
|
|
30
|
+
|
|
31
|
+
2. Create `config/initializers/hub_kernel_interface.rb` holding one `to_prepare` block. The three settings name the host's own classes, and Rails refuses to load reloadable app constants while initializers run, so they go inside it:
|
|
32
|
+
|
|
33
|
+
```ruby
|
|
34
|
+
Rails.application.config.to_prepare do
|
|
35
|
+
# steps 3, 4 and 5 go here
|
|
36
|
+
end
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
3. Ask the developer which hubs to serve, and at what names. Then set the list:
|
|
40
|
+
|
|
41
|
+
```ruby
|
|
42
|
+
HubKernel::Interface.hubs = [ Supplies, { "money" => Billing::Ledger } ]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- A hub listed on its own is served at its module name in snake case, without its namespace: `Supplies` at `supplies`, `Billing::Ledger` at `ledger`.
|
|
46
|
+
- A hub listed as a one-pair hash is served only at the name given.
|
|
47
|
+
- Every listed hub must already declare at least one callable method, and no two entries may answer at the same name. An interface's boot check fails on either.
|
|
48
|
+
- Leaving the list unset serves no hubs.
|
|
49
|
+
|
|
50
|
+
4. Ask the developer how the app decides whether a person may act on an account. Then set the permission check to a callable taking the person, the action and the account:
|
|
51
|
+
|
|
52
|
+
```ruby
|
|
53
|
+
HubKernel::Authz.check = ->(person, action, account) { person.can?(action, account) }
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- `action` is a string written `hub:method`, such as `supplies:price_of`.
|
|
57
|
+
- The hub part is the hub's own module name in snake case, even when it is served under another name, so `Billing::Ledger` served as `money` is still asked about as `ledger:record_spend`.
|
|
58
|
+
- It must return exactly `true` or `false`. Any other value, including `nil` or a record, fails the call.
|
|
59
|
+
- Do not set `->(*) { true }` unless the developer says every person may call every method on every account.
|
|
60
|
+
|
|
61
|
+
5. Ask the developer how the app scopes work to one account, such as a tenancy gem or a `Current.account` attribute. Then set the account scope to a callable taking the account and a block:
|
|
62
|
+
|
|
63
|
+
```ruby
|
|
64
|
+
HubKernel::Context.scope = ->(account, &call) { ActsAsTenant.with_tenant(account) { call.call } }
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- It must call the block exactly once, inside the scope.
|
|
68
|
+
- It must return the block's value, since that value is what the call by name returns.
|
|
69
|
+
- If the app has no account scoping, ask before using `->(account, &call) { call.call }`.
|
|
70
|
+
|
|
71
|
+
6. Run `bin/rails runner 'p HubKernel::Interface.hubs, HubKernel::Authz.check, HubKernel::Context.scope'` and confirm it prints the hub list and two callables, none of them empty or `nil`.
|
|
72
|
+
|
|
73
|
+
## Conventions
|
|
74
|
+
|
|
75
|
+
- A call by name made while the permission check or the account scope is unset fails as unwired. Both must be set before any interface serves a request.
|
|
76
|
+
- Rails reruns the `to_prepare` block on every code reload in development, so the three settings stay pointed at the current classes. Keep all three in it.
|
|
77
|
+
- Re-sync the hub list whenever a hub is added, renamed, or removed, or when an interface should stop serving one.
|
|
78
|
+
- Making a hub's methods callable, writing an interface gem, and handling the errors a call raises are out of scope here. They belong to the hub_kernel-interface-develop local.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
scope: hub interface contract — a hub declaring the methods outside callers may reach by name, calling one by name for a person and an account behind the permission check and account scope, the host's one list of served hubs and its boot check, and the reasons every interface gives for an unlisted value or a missing record
|
|
2
|
+
|
|
3
|
+
install:
|
|
4
|
+
- gem "hub_kernel-interface"
|
|
5
|
+
- HubKernel::Interface.hubs=
|
|
6
|
+
- HubKernel::Authz.check=
|
|
7
|
+
- HubKernel::Context.scope=
|
|
8
|
+
|
|
9
|
+
develop:
|
|
10
|
+
- HubKernel::Exposes
|
|
11
|
+
- exposes
|
|
12
|
+
- exposed
|
|
13
|
+
- exposures
|
|
14
|
+
- exposures_for
|
|
15
|
+
- allows?
|
|
16
|
+
- call_exposed
|
|
17
|
+
- exposure_problems
|
|
18
|
+
- HubKernel::Interface.find
|
|
19
|
+
- HubKernel::Interface.served
|
|
20
|
+
- HubKernel::Interface.check!
|
|
21
|
+
- HubKernel::Interface::UnservableHubError
|
|
22
|
+
- HubKernel::Interface::CallReasons.refuse_unlisted_values
|
|
23
|
+
- HubKernel::Interface::CallReasons.missing_record
|
|
24
|
+
- HubKernel::Interface::ExposingHubs.list
|
|
25
|
+
- HubKernel::UnexposedMethodError
|
|
26
|
+
- HubKernel::NotAllowed
|
|
27
|
+
- HubKernel::Refused
|
|
28
|
+
- HubKernel::MissingArgumentError
|
|
29
|
+
- HubKernel::UnwiredPortError
|
|
30
|
+
- HubKernel::NonBooleanAnswerError
|
|
31
|
+
|
|
32
|
+
sources:
|
|
33
|
+
- lib/hub_kernel/interface.rb
|
|
34
|
+
- lib/hub_kernel/exposes.rb
|
|
35
|
+
- lib/hub_kernel/authz.rb
|
|
36
|
+
- lib/hub_kernel/context.rb
|
|
37
|
+
- lib/hub_kernel/interface/call_reasons.rb
|
|
38
|
+
- lib/hub_kernel/interface/exposing_hubs.rb
|
|
39
|
+
- README.md
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hub_kernel-interface
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- tylercschneider
|
|
@@ -43,6 +43,10 @@ files:
|
|
|
43
43
|
- lib/hub_kernel/interface/call_reasons.rb
|
|
44
44
|
- lib/hub_kernel/interface/exposing_hubs.rb
|
|
45
45
|
- lib/hub_kernel/interface/version.rb
|
|
46
|
+
- the_local/agents/hub_kernel-interface-develop.md
|
|
47
|
+
- the_local/agents/hub_kernel-interface-info.md
|
|
48
|
+
- the_local/agents/hub_kernel-interface-install.md
|
|
49
|
+
- the_local/interface.yml
|
|
46
50
|
homepage: https://github.com/DYB-Development/hub_kernel-interface
|
|
47
51
|
licenses:
|
|
48
52
|
- MIT
|