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 +4 -4
- data/.github/workflows/ci.yml +2 -2
- data/CHANGELOG.md +6 -0
- data/CLAUDE.md +59 -0
- data/lex-xai.gemspec +7 -0
- data/lib/legion/extensions/xai/version.rb +1 -1
- metadata +100 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bc3a41d38bf8727f780ea33cceb6977bdd44b63b264bf0ccc651eac0a2180f43
|
|
4
|
+
data.tar.gz: 2e58e7589e2520412267c26eadd6ac0fb000d6a69afa0a92e0c4a5a8653a588e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eb5514847e06016f8e7f54ed8b7dca237d66876f01456afbd329858fd4ed9570eb7bb16e141b70ddbec911766063a166ee1f40ef2ded538b63bdfcbbdaab2195
|
|
7
|
+
data.tar.gz: 28f05d45a73d22f058dbd4135c6dab008b86aab9b01c61eaf33a0a2af70d04289878c2d0dcb7c6f7538e10844ad61c539d5c83cdb6c31ec7c37c9b40e7da2dce
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name: CI
|
|
2
2
|
on:
|
|
3
3
|
push:
|
|
4
|
-
branches: [
|
|
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/
|
|
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
|
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.
|
|
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
|