lex-microsoft_teams 0.6.43 → 0.6.45

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: bb45b23e2ed5d3a627ff36c180ca4de1b760780281a7b9e3ced3700926295b00
4
- data.tar.gz: 7cf60a638335e21601ccf7f5e7ca972dc5786e466dbd8c7826311e8efcacf9c6
3
+ metadata.gz: 5a1c2dc593a74891fd6a394c6da088eeea72e5c44ec5a13f412dfafe9ce43999
4
+ data.tar.gz: bd6da610d115de11d6d8196a2f8123044e77089fe2d8ad8ed9b8f27a4a69d4d2
5
5
  SHA512:
6
- metadata.gz: c8f00e377cd7434969144294d19bece1adb691ac72ffd757f635098bb3eff8074c07507a338d8fcb1a228700fcf10a528236e7cac09972867690826f951aaab3
7
- data.tar.gz: 6392e91d554d507df66ade582982a2ffb491be6ec270276e13e3e6c05cfb581f5b1cbfbddaf5445bec3fbe962b73a41bc529f5aa2bb7fdc6a3ba7e7346cb6ae3
6
+ metadata.gz: f90c34c0164a9350f5a5d8b345b508c94fcc45ebc4985c52bf2bef6f42582b2d58bca2681810aed7226f65d6a1f74060bdf842e6587b21614bb7c2cc18d9e7e2
7
+ data.tar.gz: 5a5c0f04323cd85c10cec26cf259d96c2f0770064e407e760847a412e0e1076da7afc9aabc48bc793c5d7e321393c3affb267d7256f81539e5ddffd1f1db6bb8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.6.45] - 2026-04-23
6
+
7
+ ### Added
8
+ - `Runners::Meetings#resolve_meeting` — accepts `chat_thread_id:` (e.g., `19:meeting_...@thread.v2`) or `join_url:` (e.g., `https://teams.microsoft.com/meet/CODE`). When given a chat thread ID, fetches the chat to extract the `joinWebUrl` from `onlineMeetingInfo`, then resolves the actual meeting object via `get_meeting_by_join_url`. Bridges the gap between meeting URLs and Graph API meeting endpoints which require the real meeting ID
9
+
10
+ ### Fixed
11
+ - `Runners::AiInsights#list_call_records` — removed `$top` query parameter not supported by the `communications/callRecords` Graph API endpoint (`Query option 'Top' is not allowed`)
12
+
13
+ ## [0.6.44] - 2026-04-23
14
+
15
+ ### Fixed
16
+ - `TokenCache#teams_auth_settings` — `settings` (from `Settings::Helper`) looks up `Legion::Settings[:extensions][:microsoft_teams]` which is empty because Teams config lives at `Legion::Settings[:microsoft_teams]`. Added fallback to `Legion::Settings[:microsoft_teams]` when `settings` returns empty, restoring tenant_id/client_id resolution for token refresh. This was the root cause of "Missing tenant_id or client_id for delegated refresh" immediately after successful OAuth login
17
+
5
18
  ## [0.6.43] - 2026-04-23
6
19
 
7
20
  ### Fixed
@@ -394,6 +394,8 @@ module Legion
394
394
 
395
395
  def teams_auth_settings
396
396
  ms = settings
397
+ ms = Legion::Settings[:microsoft_teams] if defined?(Legion::Settings) && (ms.nil? || ms.empty?)
398
+ ms ||= {}
397
399
  auth = ms[:auth].is_a?(Hash) ? ms[:auth].dup : {}
398
400
  auth[:tenant_id] ||= ms[:tenant_id]
399
401
  auth[:client_id] ||= ms[:client_id]
@@ -29,8 +29,8 @@ module Legion
29
29
  { result: response.body }
30
30
  end
31
31
 
32
- def list_call_records(top: 50, **)
33
- response = graph_connection(**).get('communications/callRecords', { '$top' => top })
32
+ def list_call_records(**)
33
+ response = graph_connection(**).get('communications/callRecords')
34
34
  { result: response.body }
35
35
  end
36
36
 
@@ -59,6 +59,26 @@ module Legion
59
59
  { result: response.body }
60
60
  end
61
61
 
62
+ def resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me', **)
63
+ return { error: 'provide chat_thread_id or join_url' } unless chat_thread_id || join_url
64
+
65
+ unless join_url
66
+ chat_response = graph_connection(**).get("chats/#{chat_thread_id}")
67
+ chat_body = chat_response.body
68
+ return { error: 'chat not found', result: chat_body } unless chat_body.is_a?(Hash) && !chat_body.key?('error')
69
+
70
+ join_url = chat_body.dig('onlineMeetingInfo', 'joinWebUrl')
71
+ return { error: 'chat has no onlineMeetingInfo', result: chat_body } unless join_url
72
+ end
73
+
74
+ meeting_response = get_meeting_by_join_url(join_url: join_url, user_id: user_id, **)
75
+ meeting_body = meeting_response[:result]
76
+ items = meeting_body.is_a?(Hash) ? meeting_body['value'] : nil
77
+ return { error: 'could not resolve meeting from join URL', result: meeting_body } unless items.is_a?(Array) && !items.empty?
78
+
79
+ { result: items.first }
80
+ end
81
+
62
82
  include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
63
83
  Legion::Extensions::Helpers.const_defined?(:Lex, false)
64
84
  end
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module MicrosoftTeams
6
- VERSION = '0.6.43'
6
+ VERSION = '0.6.45'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-microsoft_teams
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.43
4
+ version: 0.6.45
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity