Class: Muxi::FormationClient

Inherits:
Object
  • Object
show all
Defined in:
lib/muxi/formation_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(config = nil, **kwargs) ⇒ FormationClient

Returns a new instance of FormationClient.



330
331
332
333
334
335
336
337
338
339
340
341
342
343
# File 'lib/muxi/formation_client.rb', line 330

def initialize(config = nil, **kwargs)
  cfg = config || FormationConfig.new(**kwargs)
  base_url = build_base_url(cfg)
  @transport = FormationTransport.new(
    base_url: base_url,
    admin_key: cfg.admin_key,
    client_key: cfg.client_key,
    timeout: cfg.timeout,
    max_retries: cfg.max_retries,
    debug: cfg.debug,
    logger: cfg.logger,
    app: cfg._app
  )
end

Instance Method Details

#add_memory(user_id, mem_type, detail) ⇒ Object



459
460
461
# File 'lib/muxi/formation_client.rb', line 459

def add_memory(user_id, mem_type, detail)
  @transport.request_json("POST", "/memories", body: { user_id: user_id, type: mem_type, detail: detail }, use_admin: false, user_id: user_id)
end

#audio_chat(payload, user_id: "") ⇒ Object



410
411
412
# File 'lib/muxi/formation_client.rb', line 410

def audio_chat(payload, user_id: "")
  @transport.request_json("POST", "/audiochat", body: payload, use_admin: false, user_id: user_id)
end

#audio_chat_stream(payload, user_id: "", &block) ⇒ Object



414
415
416
417
# File 'lib/muxi/formation_client.rb', line 414

def audio_chat_stream(payload, user_id: "", &block)
  body = payload.merge(stream: true)
  @transport.stream_sse("POST", "/audiochat", body: body, use_admin: false, user_id: user_id, &block)
end

#cancel_request(request_id, user_id) ⇒ Object



445
446
447
# File 'lib/muxi/formation_client.rb', line 445

def cancel_request(request_id, user_id)
  @transport.request_json("DELETE", "/requests/#{request_id}", use_admin: false, user_id: user_id)
end

#chat(payload, user_id: "") ⇒ Object

Chat



401
402
403
# File 'lib/muxi/formation_client.rb', line 401

def chat(payload, user_id: "")
  @transport.request_json("POST", "/chat", body: payload, use_admin: false, user_id: user_id)
end

#chat_stream(payload, user_id: "", &block) ⇒ Object



405
406
407
408
# File 'lib/muxi/formation_client.rb', line 405

def chat_stream(payload, user_id: "", &block)
  body = payload.merge(stream: true)
  @transport.stream_sse("POST", "/chat", body: body, use_admin: false, user_id: user_id, &block)
end

#clear_all_buffersObject



479
480
481
# File 'lib/muxi/formation_client.rb', line 479

def clear_all_buffers
  @transport.request_json("DELETE", "/memory/buffer", use_admin: true)
end

#clear_audit_logObject



611
612
613
# File 'lib/muxi/formation_client.rb', line 611

def clear_audit_log
  @transport.request_json("DELETE", "/audit?confirm=clear-audit-log", use_admin: true)
end

#clear_session_buffer(user_id, session_id) ⇒ Object



475
476
477
# File 'lib/muxi/formation_client.rb', line 475

def clear_session_buffer(user_id, session_id)
  @transport.request_json("DELETE", "/memory/buffer/#{session_id}", params: { user_id: user_id }, use_admin: false, user_id: user_id)
end

#clear_user_buffer(user_id) ⇒ Object



471
472
473
# File 'lib/muxi/formation_client.rb', line 471

def clear_user_buffer(user_id)
  @transport.request_json("DELETE", "/memory/buffer", params: { user_id: user_id }, use_admin: false, user_id: user_id)
end

#create_credential(user_id, payload) ⇒ Object



552
553
554
# File 'lib/muxi/formation_client.rb', line 552

def create_credential(user_id, payload)
  @transport.request_json("POST", "/credentials", body: payload, use_admin: false, user_id: user_id)
end

#create_scheduler_job(job_type, schedule, message, user_id) ⇒ Object



500
501
502
503
# File 'lib/muxi/formation_client.rb', line 500

def create_scheduler_job(job_type, schedule, message, user_id)
  body = { type: job_type, schedule: schedule, message: message, user_id: user_id }
  @transport.request_json("POST", "/scheduler/jobs", body: body, use_admin: true)
end

#delete_credential(credential_id, user_id) ⇒ Object



556
557
558
# File 'lib/muxi/formation_client.rb', line 556

def delete_credential(credential_id, user_id)
  @transport.request_json("DELETE", "/credentials/#{credential_id}", use_admin: false, user_id: user_id)
end

#delete_memory(user_id, memory_id) ⇒ Object



463
464
465
# File 'lib/muxi/formation_client.rb', line 463

def delete_memory(user_id, memory_id)
  @transport.request_json("DELETE", "/memories/#{memory_id}", params: { user_id: user_id }, use_admin: false, user_id: user_id)
end

#delete_scheduler_job(job_id) ⇒ Object



505
506
507
# File 'lib/muxi/formation_client.rb', line 505

def delete_scheduler_job(job_id)
  @transport.request_json("DELETE", "/scheduler/jobs/#{job_id}", use_admin: true)
end

#delete_secret(key) ⇒ Object



396
397
398
# File 'lib/muxi/formation_client.rb', line 396

def delete_secret(key)
  @transport.request_json("DELETE", "/secrets/#{key}", use_admin: true)
end

#fire_trigger(name, data, async_mode: false, user_id: "") ⇒ Object



594
595
596
597
# File 'lib/muxi/formation_client.rb', line 594

def fire_trigger(name, data, async_mode: false, user_id: "")
  params = { async: async_mode.to_s }
  @transport.request_json("POST", "/triggers/#{name}", params: params, body: data, use_admin: false, user_id: user_id)
end

#get_a2a_configObject



527
528
529
# File 'lib/muxi/formation_client.rb', line 527

def get_a2a_config
  @transport.request_json("GET", "/a2a", use_admin: true)
end

#get_agent(agent_id) ⇒ Object



367
368
369
# File 'lib/muxi/formation_client.rb', line 367

def get_agent(agent_id)
  @transport.request_json("GET", "/agents/#{agent_id}", use_admin: true)
end

#get_agentsObject

Agents / MCP



363
364
365
# File 'lib/muxi/formation_client.rb', line 363

def get_agents
  @transport.request_json("GET", "/agents", use_admin: true)
end

#get_async_configObject

Async / logging / a2a



523
524
525
# File 'lib/muxi/formation_client.rb', line 523

def get_async_config
  @transport.request_json("GET", "/async", use_admin: true)
end

#get_audit_logObject



607
608
609
# File 'lib/muxi/formation_client.rb', line 607

def get_audit_log
  @transport.request_json("GET", "/audit", use_admin: true)
end

#get_buffer_statsObject



483
484
485
# File 'lib/muxi/formation_client.rb', line 483

def get_buffer_stats
  @transport.request_json("GET", "/memory/stats", use_admin: true)
end

#get_configObject



354
355
356
# File 'lib/muxi/formation_client.rb', line 354

def get_config
  @transport.request_json("GET", "/config", use_admin: true)
end

#get_credential(credential_id, user_id) ⇒ Object



548
549
550
# File 'lib/muxi/formation_client.rb', line 548

def get_credential(credential_id, user_id)
  @transport.request_json("GET", "/credentials/#{credential_id}", use_admin: false, user_id: user_id)
end

#get_formation_infoObject



358
359
360
# File 'lib/muxi/formation_client.rb', line 358

def get_formation_info
  @transport.request_json("GET", "/formation", use_admin: true)
end

#get_llm_settingsObject



581
582
583
# File 'lib/muxi/formation_client.rb', line 581

def get_llm_settings
  @transport.request_json("GET", "/llm/settings", use_admin: true)
end

#get_logging_configObject



531
532
533
# File 'lib/muxi/formation_client.rb', line 531

def get_logging_config
  @transport.request_json("GET", "/logging", use_admin: true)
end

#get_logging_destinationsObject



535
536
537
# File 'lib/muxi/formation_client.rb', line 535

def get_logging_destinations
  @transport.request_json("GET", "/logging/destinations", use_admin: true)
end

#get_mcp_server(server_id) ⇒ Object



375
376
377
# File 'lib/muxi/formation_client.rb', line 375

def get_mcp_server(server_id)
  @transport.request_json("GET", "/mcp/servers/#{server_id}", use_admin: true)
end

#get_mcp_serversObject



371
372
373
# File 'lib/muxi/formation_client.rb', line 371

def get_mcp_servers
  @transport.request_json("GET", "/mcp/servers", use_admin: true)
end

#get_mcp_toolsObject



379
380
381
# File 'lib/muxi/formation_client.rb', line 379

def get_mcp_tools
  @transport.request_json("GET", "/mcp/tools", use_admin: true)
end

#get_memories(user_id, limit: nil) ⇒ Object



454
455
456
457
# File 'lib/muxi/formation_client.rb', line 454

def get_memories(user_id, limit: nil)
  params = { user_id: user_id, limit: limit }
  @transport.request_json("GET", "/memories", params: params, use_admin: false, user_id: user_id)
end

#get_memory_configObject

Memory



450
451
452
# File 'lib/muxi/formation_client.rb', line 450

def get_memory_config
  @transport.request_json("GET", "/memory", use_admin: true)
end

#get_overlord_configObject

Overlord / LLM



573
574
575
# File 'lib/muxi/formation_client.rb', line 573

def get_overlord_config
  @transport.request_json("GET", "/overlord", use_admin: true)
end

#get_overlord_soulObject



577
578
579
# File 'lib/muxi/formation_client.rb', line 577

def get_overlord_soul
  @transport.request_json("GET", "/overlord/soul", use_admin: true)
end

#get_request_status(request_id, user_id) ⇒ Object



441
442
443
# File 'lib/muxi/formation_client.rb', line 441

def get_request_status(request_id, user_id)
  @transport.request_json("GET", "/requests/#{request_id}", use_admin: false, user_id: user_id)
end

#get_requests(user_id) ⇒ Object



437
438
439
# File 'lib/muxi/formation_client.rb', line 437

def get_requests(user_id)
  @transport.request_json("GET", "/requests", use_admin: false, user_id: user_id)
end

#get_scheduler_configObject

Scheduler



488
489
490
# File 'lib/muxi/formation_client.rb', line 488

def get_scheduler_config
  @transport.request_json("GET", "/scheduler", use_admin: true)
end

#get_scheduler_job(job_id) ⇒ Object



496
497
498
# File 'lib/muxi/formation_client.rb', line 496

def get_scheduler_job(job_id)
  @transport.request_json("GET", "/scheduler/jobs/#{job_id}", use_admin: true)
end

#get_scheduler_jobs(user_id) ⇒ Object



492
493
494
# File 'lib/muxi/formation_client.rb', line 492

def get_scheduler_jobs(user_id)
  @transport.request_json("GET", "/scheduler/jobs", params: { user_id: user_id }, use_admin: true)
end

#get_secret(key) ⇒ Object



388
389
390
# File 'lib/muxi/formation_client.rb', line 388

def get_secret(key)
  @transport.request_json("GET", "/secrets/#{key}", use_admin: true)
end

#get_secretsObject

Secrets



384
385
386
# File 'lib/muxi/formation_client.rb', line 384

def get_secrets
  @transport.request_json("GET", "/secrets", use_admin: true)
end

#get_session(session_id, user_id) ⇒ Object



425
426
427
# File 'lib/muxi/formation_client.rb', line 425

def get_session(session_id, user_id)
  @transport.request_json("GET", "/sessions/#{session_id}", use_admin: false, user_id: user_id)
end

#get_session_messages(session_id, user_id) ⇒ Object



429
430
431
# File 'lib/muxi/formation_client.rb', line 429

def get_session_messages(session_id, user_id)
  @transport.request_json("GET", "/sessions/#{session_id}/messages", use_admin: false, user_id: user_id)
end

#get_sessions(user_id, limit: nil) ⇒ Object

Sessions / requests



420
421
422
423
# File 'lib/muxi/formation_client.rb', line 420

def get_sessions(user_id, limit: nil)
  params = { user_id: user_id, limit: limit }
  @transport.request_json("GET", "/sessions", params: params, use_admin: false, user_id: user_id)
end

#get_sop(name) ⇒ Object



603
604
605
# File 'lib/muxi/formation_client.rb', line 603

def get_sop(name)
  @transport.request_json("GET", "/sops/#{name}", use_admin: false)
end

#get_sopsObject



599
600
601
# File 'lib/muxi/formation_client.rb', line 599

def get_sops
  @transport.request_json("GET", "/sops", use_admin: false)
end

#get_statusObject



350
351
352
# File 'lib/muxi/formation_client.rb', line 350

def get_status
  @transport.request_json("GET", "/status", use_admin: true)
end

#get_trigger(name) ⇒ Object



590
591
592
# File 'lib/muxi/formation_client.rb', line 590

def get_trigger(name)
  @transport.request_json("GET", "/triggers/#{name}", use_admin: false)
end

#get_triggersObject

Triggers / SOP / Audit



586
587
588
# File 'lib/muxi/formation_client.rb', line 586

def get_triggers
  @transport.request_json("GET", "/triggers", use_admin: false)
end

#get_user_buffer(user_id) ⇒ Object



467
468
469
# File 'lib/muxi/formation_client.rb', line 467

def get_user_buffer(user_id)
  @transport.request_json("GET", "/memory/buffer", params: { user_id: user_id }, use_admin: false, user_id: user_id)
end

#get_user_identifiers_for_user(user_id) ⇒ Object



560
561
562
# File 'lib/muxi/formation_client.rb', line 560

def get_user_identifiers_for_user(user_id)
  @transport.request_json("GET", "/users/identifiers/#{user_id}", use_admin: true)
end

#healthObject

Health / status



346
347
348
# File 'lib/muxi/formation_client.rb', line 346

def health
  @transport.request_json("GET", "/health", use_admin: false)
end


564
565
566
# File 'lib/muxi/formation_client.rb', line 564

def link_user_identifier(muxi_user_id, identifiers)
  @transport.request_json("POST", "/users/identifiers", body: { muxi_user_id: muxi_user_id, identifiers: identifiers }, use_admin: true)
end

#list_credential_servicesObject

Credentials / identifiers



540
541
542
# File 'lib/muxi/formation_client.rb', line 540

def list_credential_services
  @transport.request_json("GET", "/credentials/services", use_admin: true)
end

#list_credentials(user_id) ⇒ Object



544
545
546
# File 'lib/muxi/formation_client.rb', line 544

def list_credentials(user_id)
  @transport.request_json("GET", "/credentials", use_admin: false, user_id: user_id)
end

#pause_scheduler_job(job_id) ⇒ Object



514
515
516
# File 'lib/muxi/formation_client.rb', line 514

def pause_scheduler_job(job_id)
  @transport.request_json("POST", "/scheduler/jobs/#{job_id}/pause", use_admin: true)
end

#resolve_user(identifier, create_user: false) ⇒ Object

Resolve user



629
630
631
# File 'lib/muxi/formation_client.rb', line 629

def resolve_user(identifier, create_user: false)
  @transport.request_json("POST", "/users/resolve", body: { identifier: identifier, create_user: create_user }, use_admin: false)
end

#restore_session(session_id, user_id, messages) ⇒ Object



433
434
435
# File 'lib/muxi/formation_client.rb', line 433

def restore_session(session_id, user_id, messages)
  @transport.request_json("POST", "/sessions/#{session_id}/restore", body: { messages: messages }, use_admin: false, user_id: user_id)
end

#resume_scheduler_job(job_id) ⇒ Object



518
519
520
# File 'lib/muxi/formation_client.rb', line 518

def resume_scheduler_job(job_id)
  @transport.request_json("POST", "/scheduler/jobs/#{job_id}/resume", use_admin: true)
end

#set_secret(key, value) ⇒ Object



392
393
394
# File 'lib/muxi/formation_client.rb', line 392

def set_secret(key, value)
  @transport.request_json("PUT", "/secrets/#{key}", body: { value: value }, use_admin: true)
end

#stream_events(user_id, &block) ⇒ Object

Streaming



616
617
618
# File 'lib/muxi/formation_client.rb', line 616

def stream_events(user_id, &block)
  @transport.stream_sse("GET", "/events", params: { user_id: user_id }, use_admin: false, user_id: user_id, &block)
end

#stream_logs(filters = nil, &block) ⇒ Object



624
625
626
# File 'lib/muxi/formation_client.rb', line 624

def stream_logs(filters = nil, &block)
  @transport.stream_sse("GET", "/logs", params: filters, use_admin: true, &block)
end

#stream_request(user_id, session_id, request_id, &block) ⇒ Object



620
621
622
# File 'lib/muxi/formation_client.rb', line 620

def stream_request(user_id, session_id, request_id, &block)
  @transport.stream_sse("GET", "/events/#{session_id}/#{request_id}", use_admin: false, user_id: user_id, &block)
end


568
569
570
# File 'lib/muxi/formation_client.rb', line 568

def unlink_user_identifier(identifier)
  @transport.request_json("DELETE", "/users/identifiers/#{identifier}", use_admin: true)
end

#update_scheduler_job(job_id, **updates) ⇒ Object



509
510
511
512
# File 'lib/muxi/formation_client.rb', line 509

def update_scheduler_job(job_id, **updates)
  body = updates.slice(:message, :schedule, :title)
  @transport.request_json("PUT", "/scheduler/jobs/#{job_id}", body: body, use_admin: true)
end