Class: Ace::Hitl::Providers::Ref
- Inherits:
-
Object
- Object
- Ace::Hitl::Providers::Ref
- Defined in:
- lib/ace/hitl/providers/ref.rb
Overview
Typed reverse address of the asking agent: herdr session + pane (spec 8wm.t.vrz §3). Versioned schema ace.hitl.ref/v1; captured fail-closed from the herdr environment at ask time. ace-herdr exports both variables when it bootstraps an agent pane.
The ref identifies WHERE the answer goes; it never carries answer content.
Constant Summary collapse
- SCHEMA =
"ace.hitl.ref/v1"- SESSION_ENV =
"HERDR_SESSION"- PANE_ENV =
"HERDR_PANE"- MAX_LENGTH =
128- TOKEN_PATTERN =
/\A[A-Za-z0-9._:-]+\z/.freeze
Instance Attribute Summary collapse
-
#pane ⇒ Object
readonly
Returns the value of attribute pane.
-
#session ⇒ Object
readonly
Returns the value of attribute session.
Class Method Summary collapse
-
.from_env(env = ENV) ⇒ Object
Fail closed: raises InvalidRefError naming the offending variable and rule when the reverse address is absent or invalid.
- .validate!(value, source) ⇒ Object
Instance Method Summary collapse
-
#initialize(session:, pane:) ⇒ Ref
constructor
A new instance of Ref.
- #to_h ⇒ Object
Constructor Details
#initialize(session:, pane:) ⇒ Ref
Returns a new instance of Ref.
24 25 26 27 |
# File 'lib/ace/hitl/providers/ref.rb', line 24 def initialize(session:, pane:) @session = session @pane = pane end |
Instance Attribute Details
#pane ⇒ Object (readonly)
Returns the value of attribute pane.
22 23 24 |
# File 'lib/ace/hitl/providers/ref.rb', line 22 def pane @pane end |
#session ⇒ Object (readonly)
Returns the value of attribute session.
22 23 24 |
# File 'lib/ace/hitl/providers/ref.rb', line 22 def session @session end |
Class Method Details
.from_env(env = ENV) ⇒ Object
Fail closed: raises InvalidRefError naming the offending variable and rule when the reverse address is absent or invalid.
31 32 33 34 35 |
# File 'lib/ace/hitl/providers/ref.rb', line 31 def self.from_env(env = ENV) session = validate!(env[SESSION_ENV], SESSION_ENV) pane = validate!(env[PANE_ENV], PANE_ENV) new(session: session, pane: pane) end |
.validate!(value, source) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ace/hitl/providers/ref.rb', line 37 def self.validate!(value, source) token = value.to_s.strip if token.empty? raise InvalidRefError, "#{source} is required (herdr reverse address, #{SCHEMA})" end if token.length > MAX_LENGTH raise InvalidRefError, "#{source} exceeds #{MAX_LENGTH} characters" end unless token.match?(TOKEN_PATTERN) raise InvalidRefError, "#{source} contains invalid characters " \ "(allowed: letters, digits, '.', '_', ':', '-')" end token end |
Instance Method Details
#to_h ⇒ Object
56 57 58 |
# File 'lib/ace/hitl/providers/ref.rb', line 56 def to_h {schema: SCHEMA, session: session, pane: pane} end |