muxi 0.20260408.0 → 1.20260713.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: 1741eb77395142b7aa929981ed4d43ebc2a82cbd67b2ededb3ab12a20692290d
4
- data.tar.gz: a7457ec97f4bea234c3a27be22ff4f5f0f83d582027c5792472555608af26273
3
+ metadata.gz: 7c19c2c63533c6ce6e08925c3ce938edcc2f0825050c4903e92d095aa0cd68d7
4
+ data.tar.gz: c9b43d9099af2ab86bde47ca365758202bb32528556c55ce87f1e9cb1e89e99e
5
5
  SHA512:
6
- metadata.gz: 5f8d7fa638ae3ef2eb16accacda65ff417f1f241980069d626f4e08a3b2f0aea47654957b07b4dd1e1b058bd6c3dc1d71f03663d884437c813d792b4a0094cff
7
- data.tar.gz: dcaf114006f7deb58db5de30e48ea2dc631220b953bef9a07964ed70bbdbe70c3cd9cac9fc31ec071f97cb02d1a6396777dd4f2509e211e06d9cb9639639a894
6
+ metadata.gz: b84fd2dd469325c00310898520256801298aae59458ff0019bdd6a59bf945722983fea72a559b3c60878a9fbfaf03771d806e5982a0edda6b25984fd03e7f628
7
+ data.tar.gz: 7294b2c68c61c6238c542a7b43466c23df013ac35026d1ccfafe3a4ad720e949d2fec60de13d24f193be21c4ecb1cf1f0a7f02d9afaf1f74bbf2dced9c720363
@@ -6,6 +6,25 @@ require "json"
6
6
  require "securerandom"
7
7
 
8
8
  module Muxi
9
+ # Widgets from an `event: ui` stream frame; [] for other frames.
10
+ #
11
+ # The runtime delivers the response envelope's optional `ui` array
12
+ # (options, action_link, mcp_resource widgets) as a single `event: ui`
13
+ # SSE frame before `event: done`. Unknown widget types should be
14
+ # ignored (progressive enhancement).
15
+ def self.parse_ui_widgets(event)
16
+ return [] unless event.is_a?(Hash) && event["event"] == "ui"
17
+
18
+ begin
19
+ parsed = JSON.parse(event["data"].to_s)
20
+ rescue JSON::ParserError
21
+ return []
22
+ end
23
+
24
+ ui = parsed.is_a?(Hash) ? parsed["ui"] : nil
25
+ ui.is_a?(Array) ? ui : []
26
+ end
27
+
9
28
  class FormationConfig
10
29
  attr_accessor :formation_id, :url, :server_url, :base_url, :admin_key, :client_key,
11
30
  :max_retries, :timeout, :debug, :logger, :mode, :_app
@@ -287,12 +306,14 @@ module Muxi
287
306
 
288
307
  req = obj["request"] || {}
289
308
  request_id = req["id"] || obj["request_id"]
309
+ idempotency_key = req["idempotency_key"]
290
310
  ts = obj["timestamp"]
291
311
  data = obj["data"]
292
312
 
293
313
  if data.is_a?(Hash)
294
314
  out = data.dup
295
315
  out["request_id"] ||= request_id if request_id
316
+ out["idempotency_key"] ||= idempotency_key if idempotency_key
296
317
  out["timestamp"] ||= ts if ts
297
318
  out
298
319
  else
@@ -170,12 +170,14 @@ module Muxi
170
170
 
171
171
  req = obj["request"] || {}
172
172
  request_id = req["id"] || obj["request_id"]
173
+ idempotency_key = req["idempotency_key"]
173
174
  ts = obj["timestamp"]
174
175
  data = obj["data"]
175
176
 
176
177
  if data.is_a?(Hash)
177
178
  out = data.dup
178
179
  out["request_id"] ||= request_id if request_id
180
+ out["idempotency_key"] ||= idempotency_key if idempotency_key
179
181
  out["timestamp"] ||= ts if ts
180
182
  out
181
183
  else
data/lib/muxi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Muxi
4
- VERSION = "0.20260408.0"
4
+ VERSION = "1.20260713.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muxi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20260408.0
4
+ version: 1.20260713.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MUXI AI
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-08 00:00:00.000000000 Z
11
+ date: 2026-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64