lex-xai 0.1.1 → 0.1.2

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: 6fca806edc2e12276707307434a20b580f0a491888e12f312f1c3c0fa989bccd
4
- data.tar.gz: d28561f9012a49d21e71d45a7fd2a24ee9fc7e86a5050f5f082b6f8a23f222e9
3
+ metadata.gz: bc3a41d38bf8727f780ea33cceb6977bdd44b63b264bf0ccc651eac0a2180f43
4
+ data.tar.gz: 2e58e7589e2520412267c26eadd6ac0fb000d6a69afa0a92e0c4a5a8653a588e
5
5
  SHA512:
6
- metadata.gz: 559921a947e5c04e5c986bb2a044d507962519efd0e1f0f6ebba0c876c5ef268cd5280cc16b274baf0a7cc27781411c5daecfa3e630fa30fd9c71a3fc36a8586
7
- data.tar.gz: 8449fc7f371fc1dad7f8c7d0d43ce878a117a25591523c34f1347c41a1ce7e9d4d4f4c62b66d640c4075696ff4944d787612b910e5ba4761e765cb8222b38877
6
+ metadata.gz: eb5514847e06016f8e7f54ed8b7dca237d66876f01456afbd329858fd4ed9570eb7bb16e141b70ddbec911766063a166ee1f40ef2ded538b63bdfcbbdaab2195
7
+ data.tar.gz: 28f05d45a73d22f058dbd4135c6dab008b86aab9b01c61eaf33a0a2af70d04289878c2d0dcb7c6f7538e10844ad61c539d5c83cdb6c31ec7c37c9b40e7da2dce
@@ -1,7 +1,7 @@
1
1
  name: CI
2
2
  on:
3
3
  push:
4
- branches: [origin]
4
+ branches: [main]
5
5
  pull_request:
6
6
 
7
7
  jobs:
@@ -10,7 +10,7 @@ jobs:
10
10
 
11
11
  release:
12
12
  needs: ci
13
- if: github.event_name == 'push' && github.ref == 'refs/heads/origin'
13
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
14
14
  uses: LegionIO/.github/.github/workflows/release.yml@main
15
15
  secrets:
16
16
  rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.2] - 2026-03-22
4
+
5
+ ### Changed
6
+ - Added runtime dependencies on all 7 legion sub-gems (legion-cache, legion-crypt, legion-data, legion-json, legion-logging, legion-settings, legion-transport) with minimum version constraints
7
+ - Updated spec_helper to require sub-gem helpers and define real Helpers::Lex stub with all 7 includes
8
+
3
9
  ## [0.1.0] - 2026-03-21
4
10
 
5
11
  ### Added
data/CLAUDE.md ADDED
@@ -0,0 +1,59 @@
1
+ # lex-xai: xAI Grok API Integration for LegionIO
2
+
3
+ **Repository Level 3 Documentation**
4
+ - **Parent**: `/Users/miverso2/rubymine/legion/extensions-ai/CLAUDE.md`
5
+ - **Grandparent**: `/Users/miverso2/rubymine/legion/CLAUDE.md`
6
+
7
+ ## Purpose
8
+
9
+ Legion Extension that connects LegionIO to the xAI Grok API. Provides runners for chat completions, embeddings, and model listing.
10
+
11
+ **GitHub**: https://github.com/LegionIO/lex-xai
12
+ **License**: MIT
13
+ **Version**: 0.1.0
14
+ **Specs**: 23 examples
15
+
16
+ ## Architecture
17
+
18
+ ```
19
+ Legion::Extensions::Xai
20
+ ├── Runners/
21
+ │ ├── Chat # create(api_key:, messages:, model: 'grok-3', ...)
22
+ │ ├── Embeddings # create(api_key:, input:, model:, ...)
23
+ │ └── Models # list(api_key:, ...), retrieve(api_key:, model:, ...)
24
+ ├── Helpers/
25
+ │ └── Client # Faraday-based xAI API client (module, factory method)
26
+ └── Client # Standalone client class (includes all runners, holds @config)
27
+ ```
28
+
29
+ `Helpers::Client` is a **module** with a `client(api_key:, base_url: DEFAULT_BASE_URL, ...)` factory method. `DEFAULT_BASE_URL` is `'https://api.x.ai'`. Authentication uses `Authorization: Bearer #{api_key}` header. Runner modules `extend` it to gain `client(...)` as a module-level method.
30
+
31
+ `Client` (class) provides a standalone instantiable wrapper that holds `@config` and delegates through `Helpers::Client`.
32
+
33
+ ## Key Design Decisions
34
+
35
+ - Structurally identical to lex-openai and lex-claude (module-based `Helpers::Client`, `extend` in runners), but with no multipart dependency and no `multi_json` list in the gemspec for lex-openai parity — `multi_json` is listed as a dependency.
36
+ - Default model for `Chat#create` is `'grok-3'`.
37
+ - `Chat#create` supports `stream: false` kwarg (passed through to API body) but does not handle streaming responses internally.
38
+ - API paths use `/v1/` prefix: `/v1/chat/completions`, `/v1/models`, `/v1/models/:model`, `/v1/embeddings`.
39
+ - `Models#retrieve` uses the method name `retrieve` (not `get`) for consistency with lex-claude and lex-openai.
40
+ - `include Legion::Extensions::Helpers::Lex` is guarded with `const_defined?` pattern.
41
+
42
+ ## Dependencies
43
+
44
+ | Gem | Purpose |
45
+ |-----|---------|
46
+ | `faraday` >= 2.0 | HTTP client for xAI API |
47
+ | `multi_json` | JSON parser abstraction |
48
+
49
+ ## Testing
50
+
51
+ ```bash
52
+ bundle install
53
+ bundle exec rspec # 23 examples
54
+ bundle exec rubocop
55
+ ```
56
+
57
+ ---
58
+
59
+ **Maintained By**: Matthew Iverson (@Esity)
data/lex-xai.gemspec CHANGED
@@ -27,5 +27,12 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ['lib']
28
28
 
29
29
  spec.add_dependency 'faraday', '>= 2.0'
30
+ spec.add_dependency 'legion-cache', '>= 1.3.11'
31
+ spec.add_dependency 'legion-crypt', '>= 1.4.9'
32
+ spec.add_dependency 'legion-data', '>= 1.4.17'
33
+ spec.add_dependency 'legion-json', '>= 1.2.1'
34
+ spec.add_dependency 'legion-logging', '>= 1.3.2'
35
+ spec.add_dependency 'legion-settings', '>= 1.3.14'
36
+ spec.add_dependency 'legion-transport', '>= 1.3.9'
30
37
  spec.add_dependency 'multi_json'
31
38
  end
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Xai
6
- VERSION = '0.1.1'
6
+ VERSION = '0.1.2'
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-xai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -23,6 +23,104 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: legion-cache
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.11
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.11
40
+ - !ruby/object:Gem::Dependency
41
+ name: legion-crypt
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.4.9
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.4.9
54
+ - !ruby/object:Gem::Dependency
55
+ name: legion-data
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.4.17
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.4.17
68
+ - !ruby/object:Gem::Dependency
69
+ name: legion-json
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.2.1
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.2.1
82
+ - !ruby/object:Gem::Dependency
83
+ name: legion-logging
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.2
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 1.3.2
96
+ - !ruby/object:Gem::Dependency
97
+ name: legion-settings
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.3.14
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.14
110
+ - !ruby/object:Gem::Dependency
111
+ name: legion-transport
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.3.9
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 1.3.9
26
124
  - !ruby/object:Gem::Dependency
27
125
  name: multi_json
28
126
  requirement: !ruby/object:Gem::Requirement
@@ -49,6 +147,7 @@ files:
49
147
  - ".rspec"
50
148
  - ".rubocop.yml"
51
149
  - CHANGELOG.md
150
+ - CLAUDE.md
52
151
  - Gemfile
53
152
  - README.md
54
153
  - lex-xai.gemspec