multiwoven-integrations 0.40.0 → 0.41.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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/lib/multiwoven/integrations/config.rb +4 -1
  3. data/lib/multiwoven/integrations/core/base_connector.rb +33 -6
  4. data/lib/multiwoven/integrations/core/constants.rb +1 -0
  5. data/lib/multiwoven/integrations/core/open_router_catalog.rb +212 -0
  6. data/lib/multiwoven/integrations/protocol/protocol.json +54 -0
  7. data/lib/multiwoven/integrations/protocol/protocol.rb +39 -1
  8. data/lib/multiwoven/integrations/rollout.rb +3 -1
  9. data/lib/multiwoven/integrations/service.rb +17 -8
  10. data/lib/multiwoven/integrations/source/aisquared/config/meta.json +8 -2
  11. data/lib/multiwoven/integrations/source/aisquared/config/models.json +120 -0
  12. data/lib/multiwoven/integrations/source/aisquared/config/spec.json +6 -1
  13. data/lib/multiwoven/integrations/source/anthropic/config/meta.json +9 -2
  14. data/lib/multiwoven/integrations/source/anthropic/config/models.json +4 -0
  15. data/lib/multiwoven/integrations/source/anthropic/config/spec.json +7 -1
  16. data/lib/multiwoven/integrations/source/aws_bedrock_model/config/meta.json +8 -2
  17. data/lib/multiwoven/integrations/source/aws_bedrock_model/config/models.json +96 -0
  18. data/lib/multiwoven/integrations/source/aws_sagemaker_model/config/meta.json +8 -2
  19. data/lib/multiwoven/integrations/source/databrics_model/config/meta.json +20 -15
  20. data/lib/multiwoven/integrations/source/epic_fhir/client.rb +47 -14
  21. data/lib/multiwoven/integrations/source/generic_open_ai/client.rb +15 -8
  22. data/lib/multiwoven/integrations/source/generic_open_ai/config/meta.json +8 -1
  23. data/lib/multiwoven/integrations/source/google_gemini/client.rb +18 -0
  24. data/lib/multiwoven/integrations/source/google_gemini/config/catalog.json +6 -0
  25. data/lib/multiwoven/integrations/source/google_gemini/config/meta.json +23 -0
  26. data/lib/multiwoven/integrations/source/google_gemini/config/models.json +26 -0
  27. data/lib/multiwoven/integrations/source/google_gemini/config/spec.json +71 -0
  28. data/lib/multiwoven/integrations/source/google_gemini/icon.svg +10 -0
  29. data/lib/multiwoven/integrations/source/google_vertex_model/config/meta.json +7 -2
  30. data/lib/multiwoven/integrations/source/http_model/config/meta.json +7 -1
  31. data/lib/multiwoven/integrations/source/john_snow_labs/client.rb +18 -0
  32. data/lib/multiwoven/integrations/source/john_snow_labs/config/catalog.json +6 -0
  33. data/lib/multiwoven/integrations/source/john_snow_labs/config/meta.json +24 -0
  34. data/lib/multiwoven/integrations/source/john_snow_labs/config/models.json +119 -0
  35. data/lib/multiwoven/integrations/source/john_snow_labs/config/spec.json +71 -0
  36. data/lib/multiwoven/integrations/source/john_snow_labs/icon.svg +16 -0
  37. data/lib/multiwoven/integrations/source/open_ai/config/meta.json +9 -2
  38. data/lib/multiwoven/integrations/source/open_ai/config/models.json +26 -0
  39. data/lib/multiwoven/integrations/source/open_ai/config/spec.json +7 -1
  40. data/lib/multiwoven/integrations/source/watsonx_ai/config/meta.json +8 -2
  41. data/lib/multiwoven/integrations/source/watsonx_ai/config/models.json +73 -0
  42. data/lib/multiwoven/integrations.rb +4 -0
  43. metadata +20 -2
@@ -0,0 +1,119 @@
1
+ {
2
+ "models": [
3
+ {
4
+ "id": "jsl-medm",
5
+ "name": "Medical LLM Medium",
6
+ "model_type": "llm",
7
+ "type": "completion",
8
+ "tasks": [
9
+ "Text Generation",
10
+ "Clinical Summarization",
11
+ "Reasoning"
12
+ ],
13
+ "context_window": 32000,
14
+ "max_output": 8192,
15
+ "pricing": {
16
+ "input": 1.0,
17
+ "output": 3.0,
18
+ "cached_read": 0.1,
19
+ "cached_write": 1.25,
20
+ "unit": "per_1m_tokens"
21
+ },
22
+ "capabilities": [
23
+ "Documents",
24
+ "Data analyst"
25
+ ]
26
+ },
27
+ {
28
+ "id": "jsl-medl",
29
+ "name": "Medical LLM Large",
30
+ "model_type": "llm",
31
+ "type": "completion",
32
+ "tasks": [
33
+ "Text Generation",
34
+ "Complex Reasoning",
35
+ "Research"
36
+ ],
37
+ "context_window": 32000,
38
+ "max_output": 16384,
39
+ "pricing": {
40
+ "input": 3.0,
41
+ "output": 9.0,
42
+ "cached_read": 0.3,
43
+ "cached_write": 3.75,
44
+ "unit": "per_1m_tokens"
45
+ },
46
+ "capabilities": [
47
+ "Documents",
48
+ "Data analyst"
49
+ ]
50
+ },
51
+ {
52
+ "id": "jsl-clinical-ner",
53
+ "name": "Clinical NER",
54
+ "model_type": "llm",
55
+ "type": "completion",
56
+ "tasks": [
57
+ "Text Classification",
58
+ "Entity Extraction"
59
+ ],
60
+ "context_window": 8192,
61
+ "max_output": 4096,
62
+ "pricing": {
63
+ "input": 0.5,
64
+ "output": 1.5,
65
+ "cached_read": 0.05,
66
+ "cached_write": 0.6,
67
+ "unit": "per_1m_tokens"
68
+ },
69
+ "capabilities": [
70
+ "Documents"
71
+ ]
72
+ },
73
+ {
74
+ "id": "jsl-deidentification",
75
+ "name": "De-identification",
76
+ "model_type": "llm",
77
+ "type": "completion",
78
+ "tasks": [
79
+ "Text Classification",
80
+ "Redaction"
81
+ ],
82
+ "context_window": 8192,
83
+ "max_output": 4096,
84
+ "pricing": {
85
+ "input": 0.5,
86
+ "output": 1.5,
87
+ "cached_read": 0.05,
88
+ "cached_write": 0.6,
89
+ "unit": "per_1m_tokens"
90
+ },
91
+ "capabilities": [
92
+ "Documents"
93
+ ]
94
+ },
95
+ {
96
+ "id": "jsl-medical-embedding",
97
+ "name": "Medical Embeddings",
98
+ "model_type": "embedding",
99
+ "type": "embedding",
100
+ "tasks": [
101
+ "Text Embeddings",
102
+ "Indexing",
103
+ "Retrieval"
104
+ ],
105
+ "context_window": 512,
106
+ "max_output": null,
107
+ "pricing": {
108
+ "input": 0.02,
109
+ "output": null,
110
+ "cached_read": null,
111
+ "cached_write": null,
112
+ "unit": "per_1m_tokens"
113
+ },
114
+ "capabilities": [
115
+ "Documents"
116
+ ]
117
+ }
118
+ ]
119
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "documentation_url": "https://nlp.johnsnowlabs.com/",
3
+ "stream_type": "user_defined",
4
+ "connector_query_type": "ai_ml",
5
+ "connection_specification": {
6
+ "$schema": "http://json-schema.org/draft-07/schema#",
7
+ "title": "John Snow Labs",
8
+ "type": "object",
9
+ "x-dynamic-input-path": "messages.0.content",
10
+ "x-output-path": "choices.0.message.content",
11
+ "required": [
12
+ "url",
13
+ "api_key",
14
+ "request_format",
15
+ "response_format"
16
+ ],
17
+ "properties": {
18
+ "url": {
19
+ "type": "string",
20
+ "title": "Endpoint URL",
21
+ "description": "The URL of the John Snow Labs Medical LLM endpoint (OpenAI-compatible API).",
22
+ "default": "https://medical-llm.johnsnowlabs.com/v1/chat/completions",
23
+ "order": 0
24
+ },
25
+ "api_key": {
26
+ "type": "string",
27
+ "multiwoven_secret": true,
28
+ "title": "API Key",
29
+ "description": "Your John Snow Labs API key.",
30
+ "order": 1
31
+ },
32
+ "is_stream": {
33
+ "type": "boolean",
34
+ "title": "Enable streaming",
35
+ "description": "Enables data streaming when supported by the model. When true, responses are processed in chunks for immediate delivery. Default is false.",
36
+ "default": false,
37
+ "order": 2
38
+ },
39
+ "config": {
40
+ "title": "",
41
+ "type": "object",
42
+ "properties": {
43
+ "timeout": {
44
+ "type": "string",
45
+ "default": "30",
46
+ "title": "HTTP Timeout",
47
+ "description": "The maximum time, in seconds, to wait for a response from the server before the request is canceled.",
48
+ "order": 0
49
+ }
50
+ },
51
+ "order": 3
52
+ },
53
+ "request_format": {
54
+ "title": "Request Format",
55
+ "description": "Sample Request Format",
56
+ "type": "string",
57
+ "default": "{\"model\":\"jsl-medm\", \"messages\":[{\"role\": \"user\", \"content\": \"Summarize the patient's discharge notes.\"}], \"stream\": false}",
58
+ "x-request-format": true,
59
+ "order": 4
60
+ },
61
+ "response_format": {
62
+ "title": "Response Format",
63
+ "description": "Sample Response Format",
64
+ "type": "string",
65
+ "default": "{\"choices\":[{\"index\": 0, \"message\":{\"role\": \"assistant\", \"content\": \"The patient was discharged in stable condition with follow-up instructions.\"}, \"finish_reason\": \"stop\"}]}",
66
+ "x-response-format": true,
67
+ "order": 5
68
+ }
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,16 @@
1
+ <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g stroke="#0B7285" stroke-width="2" stroke-linecap="round">
3
+ <line x1="20" y1="4" x2="20" y2="36"/>
4
+ <line x1="6" y1="12" x2="34" y2="28"/>
5
+ <line x1="34" y1="12" x2="6" y2="28"/>
6
+ <g stroke-width="1.6">
7
+ <path d="M20 4 l-4 5 M20 4 l4 5"/>
8
+ <path d="M20 36 l-4 -5 M20 36 l4 -5"/>
9
+ <path d="M6 12 l0 6 M6 12 l6 0"/>
10
+ <path d="M34 28 l0 -6 M34 28 l-6 0"/>
11
+ <path d="M34 12 l0 6 M34 12 l-6 0"/>
12
+ <path d="M6 28 l0 -6 M6 28 l6 0"/>
13
+ </g>
14
+ <circle cx="20" cy="20" r="3.4" fill="#0B7285" stroke="none"/>
15
+ </g>
16
+ </svg>
@@ -1,16 +1,23 @@
1
1
  {
2
2
  "data": {
3
3
  "name": "OpenAI",
4
- "title": "OpenAI Model Endpoint",
4
+ "title": "OpenAI",
5
5
  "connector_type": "source",
6
6
  "category": "AI Model",
7
7
  "sub_category": "LLM",
8
+ "provider_type": "third_party",
9
+ "display_order": 20,
10
+ "openrouter_slug": "openai",
11
+ "description": "Full OpenAI model catalog including GPT-4o, o3, and legacy models.",
8
12
  "documentation_url": "https://docs.squared.ai/activation/ai-ml-sources/open_ai-model",
9
13
  "github_issue_label": "source-open-ai-model",
10
14
  "icon": "icon.svg",
11
15
  "license": "MIT",
12
16
  "release_stage": "alpha",
13
17
  "support_level": "community",
14
- "tags": ["language:ruby", "multiwoven"]
18
+ "tags": [
19
+ "language:ruby",
20
+ "multiwoven"
21
+ ]
15
22
  }
16
23
  }
@@ -0,0 +1,26 @@
1
+ {
2
+ "//models": "Sourced live from OpenRouter. Embedding models are curated here because OpenRouter lists none.",
3
+ "models": [
4
+ {
5
+ "id": "text-embedding-3-large",
6
+ "name": "Text Embedding 3 Large",
7
+ "model_type": "embedding",
8
+ "type": "embedding",
9
+ "tasks": [
10
+ "Text Embeddings"
11
+ ],
12
+ "context_window": 8191,
13
+ "max_output": null,
14
+ "pricing": {
15
+ "input": 0.13,
16
+ "output": null,
17
+ "cached_read": null,
18
+ "cached_write": null,
19
+ "unit": "per_1m_tokens"
20
+ },
21
+ "capabilities": [
22
+ "Documents"
23
+ ]
24
+ }
25
+ ]
26
+ }
@@ -6,7 +6,13 @@
6
6
  "$schema": "http://json-schema.org/draft-07/schema#",
7
7
  "title": "Open AI Endpoint",
8
8
  "type": "object",
9
- "required": ["api_key", "request_format", "response_format"],
9
+ "x-dynamic-input-path": "messages.0.content",
10
+ "x-output-path": "choices.0.message.content",
11
+ "required": [
12
+ "api_key",
13
+ "request_format",
14
+ "response_format"
15
+ ],
10
16
  "properties": {
11
17
  "api_key": {
12
18
  "type": "string",
@@ -1,16 +1,22 @@
1
1
  {
2
2
  "data": {
3
3
  "name": "WatsonxAi",
4
- "title": "WatsonX AI Model Endpoint",
4
+ "title": "IBM watsonx",
5
5
  "connector_type": "source",
6
6
  "category": "AI Model",
7
7
  "sub_category": "AI_ML Service",
8
+ "provider_type": "partner_provider",
9
+ "display_order": 60,
10
+ "description": "IBM Granite and hosted open models on watsonx.ai. Enterprise governance, on-prem options, and indemnified foundation models.",
8
11
  "documentation_url": "https://docs.squared.ai/activation/ai-ml-sources/watsonx_ai-model",
9
12
  "github_issue_label": "source-watsonx-ai-model",
10
13
  "icon": "icon.svg",
11
14
  "license": "MIT",
12
15
  "release_stage": "alpha",
13
16
  "support_level": "community",
14
- "tags": ["language:ruby", "multiwoven"]
17
+ "tags": [
18
+ "language:ruby",
19
+ "multiwoven"
20
+ ]
15
21
  }
16
22
  }
@@ -0,0 +1,73 @@
1
+ {
2
+ "models": [
3
+ {
4
+ "id": "ibm/granite-13b-instruct-v2",
5
+ "name": "Granite 13B Instruct",
6
+ "model_type": "llm",
7
+ "type": "completion",
8
+ "tasks": [
9
+ "Text Generation",
10
+ "Chat",
11
+ "Extraction"
12
+ ],
13
+ "context_window": 8192,
14
+ "max_output": 4096,
15
+ "pricing": {
16
+ "input": 0.6,
17
+ "output": 0.6,
18
+ "cached_read": null,
19
+ "cached_write": null,
20
+ "unit": "per_1m_tokens"
21
+ },
22
+ "capabilities": [
23
+ "Documents"
24
+ ]
25
+ },
26
+ {
27
+ "id": "ibm/granite-3-8b-instruct",
28
+ "name": "Granite 3 8B Instruct",
29
+ "model_type": "llm",
30
+ "type": "completion",
31
+ "tasks": [
32
+ "Text Generation",
33
+ "Reasoning"
34
+ ],
35
+ "context_window": 128000,
36
+ "max_output": 8192,
37
+ "pricing": {
38
+ "input": 0.2,
39
+ "output": 0.2,
40
+ "cached_read": null,
41
+ "cached_write": null,
42
+ "unit": "per_1m_tokens"
43
+ },
44
+ "capabilities": [
45
+ "Documents",
46
+ "Data analyst"
47
+ ]
48
+ },
49
+ {
50
+ "id": "ibm/slate-125m-english-rtrvr",
51
+ "name": "Slate 125M Retriever",
52
+ "model_type": "embedding",
53
+ "type": "embedding",
54
+ "tasks": [
55
+ "Text Embeddings",
56
+ "Indexing",
57
+ "Retrieval"
58
+ ],
59
+ "context_window": 512,
60
+ "max_output": null,
61
+ "pricing": {
62
+ "input": 0.1,
63
+ "output": null,
64
+ "cached_read": null,
65
+ "cached_write": null,
66
+ "unit": "per_1m_tokens"
67
+ },
68
+ "capabilities": [
69
+ "Documents"
70
+ ]
71
+ }
72
+ ]
73
+ }
@@ -64,6 +64,7 @@ require_relative "integrations/core/source_connector"
64
64
  require_relative "integrations/core/destination_connector"
65
65
  require_relative "integrations/core/http_helper"
66
66
  require_relative "integrations/core/http_client"
67
+ require_relative "integrations/core/open_router_catalog"
67
68
  require_relative "integrations/core/oauth_client_credentials"
68
69
  require_relative "integrations/core/streaming_http_client"
69
70
  require_relative "integrations/core/query_builder"
@@ -93,6 +94,9 @@ require_relative "integrations/source/watsonx_data/client"
93
94
  require_relative "integrations/source/anthropic/client"
94
95
  require_relative "integrations/source/aws_bedrock_model/client"
95
96
  require_relative "integrations/source/generic_open_ai/client"
97
+ # Both subclass GenericOpenAI::Client, so they must load after it.
98
+ require_relative "integrations/source/google_gemini/client"
99
+ require_relative "integrations/source/john_snow_labs/client"
96
100
  require_relative "integrations/source/intuit_quick_books/client"
97
101
  require_relative "integrations/source/pinecone_db/client"
98
102
  require_relative "integrations/source/qdrant/client"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multiwoven-integrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Subin T P
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-08-17 00:00:00.000000000 Z
11
+ date: 2026-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -596,6 +596,7 @@ files:
596
596
  - lib/multiwoven/integrations/core/http_client.rb
597
597
  - lib/multiwoven/integrations/core/http_helper.rb
598
598
  - lib/multiwoven/integrations/core/oauth_client_credentials.rb
599
+ - lib/multiwoven/integrations/core/open_router_catalog.rb
599
600
  - lib/multiwoven/integrations/core/query_builder.rb
600
601
  - lib/multiwoven/integrations/core/rate_limiter.rb
601
602
  - lib/multiwoven/integrations/core/source_connector.rb
@@ -736,6 +737,7 @@ files:
736
737
  - lib/multiwoven/integrations/source/aisquared/client.rb
737
738
  - lib/multiwoven/integrations/source/aisquared/config/catalog.json
738
739
  - lib/multiwoven/integrations/source/aisquared/config/meta.json
740
+ - lib/multiwoven/integrations/source/aisquared/config/models.json
739
741
  - lib/multiwoven/integrations/source/aisquared/config/spec.json
740
742
  - lib/multiwoven/integrations/source/aisquared/icon.svg
741
743
  - lib/multiwoven/integrations/source/amazon_s3/client.rb
@@ -745,6 +747,7 @@ files:
745
747
  - lib/multiwoven/integrations/source/anthropic/client.rb
746
748
  - lib/multiwoven/integrations/source/anthropic/config/catalog.json
747
749
  - lib/multiwoven/integrations/source/anthropic/config/meta.json
750
+ - lib/multiwoven/integrations/source/anthropic/config/models.json
748
751
  - lib/multiwoven/integrations/source/anthropic/config/spec.json
749
752
  - lib/multiwoven/integrations/source/anthropic/icon.svg
750
753
  - lib/multiwoven/integrations/source/aws_athena/client.rb
@@ -754,6 +757,7 @@ files:
754
757
  - lib/multiwoven/integrations/source/aws_bedrock_model/client.rb
755
758
  - lib/multiwoven/integrations/source/aws_bedrock_model/config/catalog.json
756
759
  - lib/multiwoven/integrations/source/aws_bedrock_model/config/meta.json
760
+ - lib/multiwoven/integrations/source/aws_bedrock_model/config/models.json
757
761
  - lib/multiwoven/integrations/source/aws_bedrock_model/config/spec.json
758
762
  - lib/multiwoven/integrations/source/aws_bedrock_model/icon.svg
759
763
  - lib/multiwoven/integrations/source/aws_sagemaker_model/client.rb
@@ -797,6 +801,12 @@ files:
797
801
  - lib/multiwoven/integrations/source/google_drive/config/meta.json
798
802
  - lib/multiwoven/integrations/source/google_drive/config/spec.json
799
803
  - lib/multiwoven/integrations/source/google_drive/icon.svg
804
+ - lib/multiwoven/integrations/source/google_gemini/client.rb
805
+ - lib/multiwoven/integrations/source/google_gemini/config/catalog.json
806
+ - lib/multiwoven/integrations/source/google_gemini/config/meta.json
807
+ - lib/multiwoven/integrations/source/google_gemini/config/models.json
808
+ - lib/multiwoven/integrations/source/google_gemini/config/spec.json
809
+ - lib/multiwoven/integrations/source/google_gemini/icon.svg
800
810
  - lib/multiwoven/integrations/source/google_vertex_model/client.rb
801
811
  - lib/multiwoven/integrations/source/google_vertex_model/config/catalog.json
802
812
  - lib/multiwoven/integrations/source/google_vertex_model/config/meta.json
@@ -816,6 +826,12 @@ files:
816
826
  - lib/multiwoven/integrations/source/intuit_quick_books/config/meta.json
817
827
  - lib/multiwoven/integrations/source/intuit_quick_books/config/spec.json
818
828
  - lib/multiwoven/integrations/source/intuit_quick_books/icon.svg
829
+ - lib/multiwoven/integrations/source/john_snow_labs/client.rb
830
+ - lib/multiwoven/integrations/source/john_snow_labs/config/catalog.json
831
+ - lib/multiwoven/integrations/source/john_snow_labs/config/meta.json
832
+ - lib/multiwoven/integrations/source/john_snow_labs/config/models.json
833
+ - lib/multiwoven/integrations/source/john_snow_labs/config/spec.json
834
+ - lib/multiwoven/integrations/source/john_snow_labs/icon.svg
819
835
  - lib/multiwoven/integrations/source/maria_db/client.rb
820
836
  - lib/multiwoven/integrations/source/maria_db/config/meta.json
821
837
  - lib/multiwoven/integrations/source/maria_db/config/spec.json
@@ -835,6 +851,7 @@ files:
835
851
  - lib/multiwoven/integrations/source/open_ai/client.rb
836
852
  - lib/multiwoven/integrations/source/open_ai/config/catalog.json
837
853
  - lib/multiwoven/integrations/source/open_ai/config/meta.json
854
+ - lib/multiwoven/integrations/source/open_ai/config/models.json
838
855
  - lib/multiwoven/integrations/source/open_ai/config/spec.json
839
856
  - lib/multiwoven/integrations/source/open_ai/icon.svg
840
857
  - lib/multiwoven/integrations/source/oracle_db/client.rb
@@ -876,6 +893,7 @@ files:
876
893
  - lib/multiwoven/integrations/source/watsonx_ai/client.rb
877
894
  - lib/multiwoven/integrations/source/watsonx_ai/config/catalog.json
878
895
  - lib/multiwoven/integrations/source/watsonx_ai/config/meta.json
896
+ - lib/multiwoven/integrations/source/watsonx_ai/config/models.json
879
897
  - lib/multiwoven/integrations/source/watsonx_ai/config/spec.json
880
898
  - lib/multiwoven/integrations/source/watsonx_ai/icon.svg
881
899
  - lib/multiwoven/integrations/source/watsonx_data/client.rb