legion-gaia 0.9.8 → 0.9.9

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: 12176accbd73b544c9449e3be0f909ad1013d8a776d0b428bf943bce45cab369
4
- data.tar.gz: 25fb7eb75d898d2f04e206c3d9d2fa93d7f27b0bd9ecdad67cc505f623ab28eb
3
+ metadata.gz: 902acd94f954e110a3d849d1f8f468c9c1ba1103296f2642bbb9d7153a705017
4
+ data.tar.gz: b0b6be88e1607903a819f1aaacb6b569a634186ae0f7b92f740e51c7cddc3d7a
5
5
  SHA512:
6
- metadata.gz: b97b6e67fd29580034160e747d34a970d89b6536b55c2af1ba819ef48af7374227e92cc91daecd0ee210eadfbd03be921ac81849c6ee2abae1144d13eb6f6104
7
- data.tar.gz: 50a73c902906a0ffb12cade886cd84e455df835093d201bb236b07c8024aef43969b3d12ce74b698f060c9cfaa358c947904b61ee2d8c68434b2d21ee61c7722
6
+ metadata.gz: a907f2b49285aeda659940feaa7bbfa350402873962116144462ed4363944b6cb0bb741f96f9d65c08bd157a0871ad7da0fe10b561c1eb32b22c2c7fd4bb7119
7
+ data.tar.gz: 0e4d3df947071ef1c37bbe5cd5c56c1365990ac5b87f0edac81c20b45898a749419186318ee356122bd0ef7f3a25e198594a47f9ff90e8732f082e1e7d66483d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.9] - 2026-03-22
4
+
5
+ ### Changed
6
+ - Added `Legion::Logging` calls to all silent rescue blocks (16 total) so no exception is swallowed without a trace
7
+ - `channels/slack_adapter.rb`: `.warn` on open_dm failure
8
+ - `channels/teams/bot_framework_auth.rb`: `.debug` on JWT segment decode failure (expected for malformed tokens)
9
+ - `channels/teams/webhook_handler.rb`: `.debug` on activity parse failure
10
+ - `channels/teams_adapter.rb`: `.warn` on create_proactive_conversation failure
11
+ - `offline_handler.rb`: `.warn` on notify_sender failure, `.debug` on offline_threshold settings failure
12
+ - `proactive.rb`: `.warn` on send_message, send_to_user, send_notification, and start_conversation failures
13
+ - `router/agent_bridge.rb`: `.warn` on reconstruct_input_frame and decode_payload failures
14
+ - `router/router_bridge.rb`: `.warn` on reconstruct_output_frame failure
15
+ - `teams_auth.rb`: `.warn` on check_teams_auth and teams_authenticated? failures
16
+
3
17
  ## [0.9.8] - 2026-03-21
4
18
 
5
19
  ### Fixed
data/CLAUDE.md CHANGED
@@ -3,7 +3,7 @@
3
3
  **Repository Level 3 Documentation**
4
4
  - **Parent**: `/Users/miverso2/rubymine/legion/CLAUDE.md`
5
5
  - **GitHub**: https://github.com/LegionIO/legion-gaia
6
- - **Version**: 0.9.4
6
+ - **Version**: 0.9.8
7
7
 
8
8
  ## Purpose
9
9
 
data/CODEOWNERS ADDED
@@ -0,0 +1,39 @@
1
+ # Default owner — all files
2
+ * @Esity
3
+
4
+ # Core library code
5
+ # lib/ @Esity @future-ai-team
6
+
7
+ # Tick cycle phases
8
+ # lib/legion/gaia/phases/ @Esity
9
+
10
+ # Channel abstraction
11
+ # lib/legion/gaia/channels/ @Esity
12
+
13
+ # Actors (heartbeat tick driver)
14
+ # lib/legion/gaia/actors/ @Esity @future-ai-team
15
+
16
+ # Router (hub-and-spoke, transport)
17
+ # lib/legion/gaia/router/ @Esity @future-infra-team
18
+
19
+ # Notification gate (schedule, presence, behavioral evaluators)
20
+ # lib/legion/gaia/notification_gate/ @Esity @future-ai-team
21
+ # lib/legion/gaia/notification_gate.rb @Esity @future-ai-team
22
+
23
+ # Session and registry
24
+ # lib/legion/gaia/registry.rb @Esity @future-ai-team
25
+ # lib/legion/gaia/session_store.rb @Esity @future-ai-team
26
+
27
+ # Sensory buffer and frame types
28
+ # lib/legion/gaia/sensory_buffer.rb @Esity @future-ai-team
29
+ # lib/legion/gaia/input_frame.rb @Esity @future-ai-team
30
+ # lib/legion/gaia/output_frame.rb @Esity @future-ai-team
31
+
32
+ # Specs
33
+ # spec/ @Esity @future-contributors
34
+
35
+ # Documentation
36
+ # *.md @Esity @future-docs-team
37
+
38
+ # CI/CD
39
+ # .github/ @Esity
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Cognitive coordination layer for the LegionIO framework. GAIA is the mind that inhabits the Legion body.
4
4
 
5
- **Version**: 0.9.2
5
+ **Version**: 0.9.8
6
6
 
7
7
  GAIA sits on top of LegionIO's infrastructure and coordinates all agentic subordinate functions. It drives the tick cycle, manages extension discovery and wiring, and provides the channel abstraction for multi-interface communication.
8
8
 
@@ -74,6 +74,7 @@ module Legion
74
74
 
75
75
  { channel_id: result[:channel_id] || result['channel']&.dig('id') || result['channel'] }
76
76
  rescue StandardError => e
77
+ Legion::Logging.warn("SlackAdapter open_dm failed: #{e.message}") if defined?(Legion::Logging)
77
78
  { error: :open_dm_failed, message: e.message }
78
79
  end
79
80
 
@@ -65,7 +65,10 @@ module Legion
65
65
  padded = remainder.zero? ? segment : segment + ('=' * (4 - remainder))
66
66
  decoded = Base64.urlsafe_decode64(padded)
67
67
  ::JSON.parse(decoded)
68
- rescue StandardError
68
+ rescue StandardError => e
69
+ if defined?(Legion::Logging)
70
+ Legion::Logging.debug("BotFrameworkAuth JWT segment decode failed: #{e.message}")
71
+ end
69
72
  nil
70
73
  end
71
74
 
@@ -67,7 +67,8 @@ module Legion
67
67
  return body if body.is_a?(Hash)
68
68
 
69
69
  ::JSON.parse(body)
70
- rescue StandardError
70
+ rescue StandardError => e
71
+ Legion::Logging.debug("WebhookHandler activity parse failed: #{e.message}") if defined?(Legion::Logging)
71
72
  nil
72
73
  end
73
74
 
@@ -98,6 +98,9 @@ module Legion
98
98
  )
99
99
  conversation_id
100
100
  rescue StandardError => e
101
+ if defined?(Legion::Logging)
102
+ Legion::Logging.warn("TeamsAdapter create_proactive_conversation failed: #{e.message}")
103
+ end
101
104
  { error: :create_conversation_failed, message: e.message }
102
105
  end
103
106
 
@@ -56,7 +56,8 @@ module Legion
56
56
  session_continuity_id: frame.respond_to?(:session_continuity_id) ? frame.session_continuity_id : nil
57
57
  )
58
58
  registry.deliver(output)
59
- rescue StandardError
59
+ rescue StandardError => e
60
+ Legion::Logging.warn("OfflineHandler notify_sender failed: #{e.message}") if defined?(Legion::Logging)
60
61
  nil
61
62
  end
62
63
 
@@ -66,7 +67,10 @@ module Legion
66
67
  else
67
68
  60
68
69
  end
69
- rescue StandardError
70
+ rescue StandardError => e
71
+ if defined?(Legion::Logging)
72
+ Legion::Logging.debug("OfflineHandler offline_threshold settings unavailable, using default: #{e.message}")
73
+ end
70
74
  60
71
75
  end
72
76
 
@@ -21,6 +21,9 @@ module Legion
21
21
  registry.deliver(output)
22
22
  { sent: true, frame_id: output.id, channel: channel_id }
23
23
  rescue StandardError => e
24
+ if defined?(Legion::Logging)
25
+ Legion::Logging.warn("Proactive.send_message failed channel=#{channel_id}: #{e.message}")
26
+ end
24
27
  { error: e.message }
25
28
  end
26
29
 
@@ -45,6 +48,9 @@ module Legion
45
48
  )
46
49
  end
47
50
  rescue StandardError => e
51
+ if defined?(Legion::Logging)
52
+ Legion::Logging.warn("Proactive.send_to_user failed user=#{user_id}: #{e.message}")
53
+ end
48
54
  { error: e.message }
49
55
  end
50
56
 
@@ -72,6 +78,7 @@ module Legion
72
78
 
73
79
  results
74
80
  rescue StandardError => e
81
+ Legion::Logging.warn("Proactive.send_notification failed: #{e.message}") if defined?(Legion::Logging)
75
82
  { error: e.message }
76
83
  end
77
84
 
@@ -97,6 +104,9 @@ module Legion
97
104
  end
98
105
  { started: true, channel: channel_id, user_id: user_id }
99
106
  rescue StandardError => e
107
+ if defined?(Legion::Logging)
108
+ Legion::Logging.warn("Proactive.start_conversation failed ch=#{channel_id} user=#{user_id}: #{e.message}")
109
+ end
100
110
  { error: e.message }
101
111
  end
102
112
 
@@ -73,14 +73,16 @@ module Legion
73
73
  auth_context: payload[:auth_context] || {},
74
74
  metadata: payload[:metadata] || {}
75
75
  )
76
- rescue StandardError
76
+ rescue StandardError => e
77
+ Legion::Logging.warn("AgentBridge reconstruct_input_frame failed: #{e.message}") if defined?(Legion::Logging)
77
78
  nil
78
79
  end
79
80
 
80
81
  def decode_payload(raw)
81
82
  parsed = Legion::JSON.load(raw)
82
83
  parsed.is_a?(Hash) ? parsed : nil
83
- rescue StandardError
84
+ rescue StandardError => e
85
+ Legion::Logging.warn("AgentBridge decode_payload failed: #{e.message}") if defined?(Legion::Logging)
84
86
  nil
85
87
  end
86
88
 
@@ -93,7 +93,10 @@ module Legion
93
93
  channel_hints: payload[:channel_hints] || {},
94
94
  metadata: payload[:metadata] || {}
95
95
  )
96
- rescue StandardError
96
+ rescue StandardError => e
97
+ if defined?(Legion::Logging)
98
+ Legion::Logging.warn("RouterBridge reconstruct_output_frame failed: #{e.message}")
99
+ end
97
100
  nil
98
101
  end
99
102
 
@@ -16,7 +16,8 @@ module Legion
16
16
  content_type: :text
17
17
  )
18
18
  @teams_nudge_sent = true
19
- rescue StandardError
19
+ rescue StandardError => e
20
+ Legion::Logging.warn("TeamsAuth check_teams_auth failed: #{e.message}") if defined?(Legion::Logging)
20
21
  nil
21
22
  end
22
23
 
@@ -35,7 +36,8 @@ module Legion
35
36
  return false unless defined?(Legion::Extensions::MicrosoftTeams::Helpers::TokenCache)
36
37
 
37
38
  Legion::Extensions::MicrosoftTeams::Helpers::TokenCache.new.authenticated?
38
- rescue StandardError
39
+ rescue StandardError => e
40
+ Legion::Logging.warn("TeamsAuth teams_authenticated? failed: #{e.message}") if defined?(Legion::Logging)
39
41
  false
40
42
  end
41
43
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Gaia
5
- VERSION = '0.9.8'
5
+ VERSION = '0.9.9'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-gaia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -279,6 +279,7 @@ files:
279
279
  - ".rubocop.yml"
280
280
  - CHANGELOG.md
281
281
  - CLAUDE.md
282
+ - CODEOWNERS
282
283
  - Gemfile
283
284
  - LICENSE
284
285
  - README.md