areev 0.0.0__tar.gz
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.
- areev-0.0.0/.github/workflows/rebuild.yml +53 -0
- areev-0.0.0/.gitignore +12 -0
- areev-0.0.0/.gitmodules +3 -0
- areev-0.0.0/LICENSE +7 -0
- areev-0.0.0/PKG-INFO +124 -0
- areev-0.0.0/README.md +103 -0
- areev-0.0.0/pyproject.toml +34 -0
- areev-0.0.0/scripts/generate.sh +23 -0
- areev-0.0.0/specs/.git +1 -0
- areev-0.0.0/specs/.github/workflows/dispatch-sdks.yml +46 -0
- areev-0.0.0/specs/.gitignore +1 -0
- areev-0.0.0/specs/LICENSE +7 -0
- areev-0.0.0/specs/README.md +68 -0
- areev-0.0.0/specs/a2a/agent-card.json +349 -0
- areev-0.0.0/specs/cal/cal-capabilities.json +456 -0
- areev-0.0.0/specs/cli/cli-commands.json +1929 -0
- areev-0.0.0/specs/manifest.json +13 -0
- areev-0.0.0/specs/mcp/mcp-manifest.json +579 -0
- areev-0.0.0/specs/openapi/openapi.json +14385 -0
- areev-0.0.0/specs/proto/areev/v1/areev.proto +775 -0
- areev-0.0.0/specs/proto/areev/v1/cluster.proto +1029 -0
- areev-0.0.0/src/areev/__init__.py +49 -0
- areev-0.0.0/src/areev/client.py +219 -0
- areev-0.0.0/src/areev/generated/__init__.py +1 -0
- areev-0.0.0/src/areev/grpc.py +14 -0
- areev-0.0.0/src/areev/http.py +121 -0
- areev-0.0.0/src/areev/types.py +173 -0
- areev-0.0.0/tests/__init__.py +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
name: Rebuild on Spec Update
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
repository_dispatch:
|
|
5
|
+
types: [specs-updated]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
rebuild:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- name: Generate app token
|
|
13
|
+
id: app-token
|
|
14
|
+
uses: actions/create-github-app-token@v1
|
|
15
|
+
with:
|
|
16
|
+
app-id: ${{ secrets.DEPLOY_APP_ID }}
|
|
17
|
+
private-key: ${{ secrets.DEPLOY_APP_PRIVATE_KEY }}
|
|
18
|
+
owner: AreevAI
|
|
19
|
+
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
submodules: true
|
|
23
|
+
token: ${{ steps.app-token.outputs.token }}
|
|
24
|
+
|
|
25
|
+
- name: Update specs submodule
|
|
26
|
+
run: |
|
|
27
|
+
git submodule update --remote specs
|
|
28
|
+
git config user.name "github-actions[bot]"
|
|
29
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
30
|
+
|
|
31
|
+
- name: Check for changes
|
|
32
|
+
id: diff
|
|
33
|
+
run: |
|
|
34
|
+
if git diff --quiet; then
|
|
35
|
+
echo "changed=false" >> "$GITHUB_OUTPUT"
|
|
36
|
+
else
|
|
37
|
+
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
- name: Extract version
|
|
41
|
+
if: steps.diff.outputs.changed == 'true'
|
|
42
|
+
id: version
|
|
43
|
+
run: |
|
|
44
|
+
SPEC_TAG="${{ github.event.client_payload.tag }}"
|
|
45
|
+
echo "tag=${SPEC_TAG:-v0.1.0+manual}" >> "$GITHUB_OUTPUT"
|
|
46
|
+
|
|
47
|
+
- name: Commit and tag
|
|
48
|
+
if: steps.diff.outputs.changed == 'true'
|
|
49
|
+
run: |
|
|
50
|
+
git add -A
|
|
51
|
+
git commit -m "sync: update specs from areev ${{ steps.version.outputs.tag }}"
|
|
52
|
+
git tag "${{ steps.version.outputs.tag }}"
|
|
53
|
+
git push origin main --tags
|
areev-0.0.0/.gitignore
ADDED
areev-0.0.0/.gitmodules
ADDED
areev-0.0.0/LICENSE
ADDED
areev-0.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: areev
|
|
3
|
+
Version: 0.0.0
|
|
4
|
+
Summary: Python SDK for the Areev knowledge database — HTTP, gRPC, and MCP transports
|
|
5
|
+
Project-URL: Repository, https://github.com/AreevAI/areev-sdk-python
|
|
6
|
+
Project-URL: Documentation, https://areev.ai/docs
|
|
7
|
+
License-Expression: BUSL-1.1
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Requires-Dist: httpx>=0.27
|
|
11
|
+
Requires-Dist: pydantic>=2.0
|
|
12
|
+
Provides-Extra: dev
|
|
13
|
+
Requires-Dist: datamodel-code-generator>=0.26; extra == 'dev'
|
|
14
|
+
Requires-Dist: grpcio-tools>=1.60; extra == 'dev'
|
|
15
|
+
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
|
|
16
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
17
|
+
Provides-Extra: grpc
|
|
18
|
+
Requires-Dist: grpcio>=1.60; extra == 'grpc'
|
|
19
|
+
Requires-Dist: protobuf>=5.0; extra == 'grpc'
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# Areev Python SDK
|
|
23
|
+
|
|
24
|
+
Python client library for the [Areev](https://areev.ai) knowledge database.
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install areev
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For gRPC transport:
|
|
33
|
+
```bash
|
|
34
|
+
pip install areev[grpc]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Quick Start
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from areev import Areev
|
|
41
|
+
|
|
42
|
+
areev = Areev() # reads AREEV_API_KEY, AREEV_URL from env
|
|
43
|
+
areev.remember("John likes coffee")
|
|
44
|
+
|
|
45
|
+
results = areev.recall("what does John like?")
|
|
46
|
+
for hit in results.results:
|
|
47
|
+
print(f" {hit.grain_type}: {hit.fields}")
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Configuration
|
|
51
|
+
|
|
52
|
+
The client reads from environment variables by default:
|
|
53
|
+
|
|
54
|
+
| Variable | Default | Description |
|
|
55
|
+
|----------|---------|-------------|
|
|
56
|
+
| `AREEV_API_KEY` | — | API key (sent as `X-API-Key` header) |
|
|
57
|
+
| `AREEV_URL` | `https://app.areev.ai` | Server endpoint |
|
|
58
|
+
| `AREEV_MEMORY_ID` | `default` | Memory database ID |
|
|
59
|
+
|
|
60
|
+
Or pass them explicitly:
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
areev = Areev(api_key="ar_...", url="https://dub.areev.ai", memory_id="my-memory")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Async
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from areev import AsyncAreev
|
|
70
|
+
|
|
71
|
+
async with AsyncAreev() as areev:
|
|
72
|
+
await areev.remember("John likes coffee")
|
|
73
|
+
results = await areev.recall("what does John like?")
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## API
|
|
77
|
+
|
|
78
|
+
| Method | Description |
|
|
79
|
+
|--------|-------------|
|
|
80
|
+
| `remember(text)` | Store natural-language memory (LLM extracts structure) |
|
|
81
|
+
| `recall(query)` | Search memories |
|
|
82
|
+
| `forget(hash)` | Delete a memory by hash |
|
|
83
|
+
| `add(grain_type, **fields)` | Add a typed grain (low-level) |
|
|
84
|
+
| `get(hash)` | Get a grain by hash |
|
|
85
|
+
| `supersede(old_hash, grain_type, **fields)` | Update a grain |
|
|
86
|
+
| `health()` | Health check |
|
|
87
|
+
| `stats()` | Database statistics |
|
|
88
|
+
| `flush()` | Flush write buffer |
|
|
89
|
+
|
|
90
|
+
### Low-Level Client
|
|
91
|
+
|
|
92
|
+
For advanced use cases (custom request objects, full async control):
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from areev import HttpClient, AreevConfig, AddRequest, GrainType
|
|
96
|
+
|
|
97
|
+
config = AreevConfig(url="http://localhost:4009", memory_id="default", api_key="your-key")
|
|
98
|
+
async with HttpClient(config) as client:
|
|
99
|
+
resp = await client.add(AddRequest(
|
|
100
|
+
grain_type=GrainType.BELIEF,
|
|
101
|
+
fields={"subject": "john", "relation": "likes", "object": "coffee"},
|
|
102
|
+
))
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Transports
|
|
106
|
+
|
|
107
|
+
| Transport | Extra | Status |
|
|
108
|
+
|-----------|-------|--------|
|
|
109
|
+
| HTTP/REST | _(default)_ | Available |
|
|
110
|
+
| gRPC | `areev[grpc]` | Available |
|
|
111
|
+
| MCP | — | Planned |
|
|
112
|
+
|
|
113
|
+
## Code Generation
|
|
114
|
+
|
|
115
|
+
Generate gRPC stubs and Pydantic models from the Areev spec:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
pip install areev[dev]
|
|
119
|
+
./scripts/generate.sh
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## License
|
|
123
|
+
|
|
124
|
+
BUSL-1.1
|
areev-0.0.0/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Areev Python SDK
|
|
2
|
+
|
|
3
|
+
Python client library for the [Areev](https://areev.ai) knowledge database.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install areev
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
For gRPC transport:
|
|
12
|
+
```bash
|
|
13
|
+
pip install areev[grpc]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```python
|
|
19
|
+
from areev import Areev
|
|
20
|
+
|
|
21
|
+
areev = Areev() # reads AREEV_API_KEY, AREEV_URL from env
|
|
22
|
+
areev.remember("John likes coffee")
|
|
23
|
+
|
|
24
|
+
results = areev.recall("what does John like?")
|
|
25
|
+
for hit in results.results:
|
|
26
|
+
print(f" {hit.grain_type}: {hit.fields}")
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Configuration
|
|
30
|
+
|
|
31
|
+
The client reads from environment variables by default:
|
|
32
|
+
|
|
33
|
+
| Variable | Default | Description |
|
|
34
|
+
|----------|---------|-------------|
|
|
35
|
+
| `AREEV_API_KEY` | — | API key (sent as `X-API-Key` header) |
|
|
36
|
+
| `AREEV_URL` | `https://app.areev.ai` | Server endpoint |
|
|
37
|
+
| `AREEV_MEMORY_ID` | `default` | Memory database ID |
|
|
38
|
+
|
|
39
|
+
Or pass them explicitly:
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
areev = Areev(api_key="ar_...", url="https://dub.areev.ai", memory_id="my-memory")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Async
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
from areev import AsyncAreev
|
|
49
|
+
|
|
50
|
+
async with AsyncAreev() as areev:
|
|
51
|
+
await areev.remember("John likes coffee")
|
|
52
|
+
results = await areev.recall("what does John like?")
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## API
|
|
56
|
+
|
|
57
|
+
| Method | Description |
|
|
58
|
+
|--------|-------------|
|
|
59
|
+
| `remember(text)` | Store natural-language memory (LLM extracts structure) |
|
|
60
|
+
| `recall(query)` | Search memories |
|
|
61
|
+
| `forget(hash)` | Delete a memory by hash |
|
|
62
|
+
| `add(grain_type, **fields)` | Add a typed grain (low-level) |
|
|
63
|
+
| `get(hash)` | Get a grain by hash |
|
|
64
|
+
| `supersede(old_hash, grain_type, **fields)` | Update a grain |
|
|
65
|
+
| `health()` | Health check |
|
|
66
|
+
| `stats()` | Database statistics |
|
|
67
|
+
| `flush()` | Flush write buffer |
|
|
68
|
+
|
|
69
|
+
### Low-Level Client
|
|
70
|
+
|
|
71
|
+
For advanced use cases (custom request objects, full async control):
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from areev import HttpClient, AreevConfig, AddRequest, GrainType
|
|
75
|
+
|
|
76
|
+
config = AreevConfig(url="http://localhost:4009", memory_id="default", api_key="your-key")
|
|
77
|
+
async with HttpClient(config) as client:
|
|
78
|
+
resp = await client.add(AddRequest(
|
|
79
|
+
grain_type=GrainType.BELIEF,
|
|
80
|
+
fields={"subject": "john", "relation": "likes", "object": "coffee"},
|
|
81
|
+
))
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Transports
|
|
85
|
+
|
|
86
|
+
| Transport | Extra | Status |
|
|
87
|
+
|-----------|-------|--------|
|
|
88
|
+
| HTTP/REST | _(default)_ | Available |
|
|
89
|
+
| gRPC | `areev[grpc]` | Available |
|
|
90
|
+
| MCP | — | Planned |
|
|
91
|
+
|
|
92
|
+
## Code Generation
|
|
93
|
+
|
|
94
|
+
Generate gRPC stubs and Pydantic models from the Areev spec:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
pip install areev[dev]
|
|
98
|
+
./scripts/generate.sh
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## License
|
|
102
|
+
|
|
103
|
+
BUSL-1.1
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "areev"
|
|
7
|
+
version = "0.0.0"
|
|
8
|
+
description = "Python SDK for the Areev knowledge database — HTTP, gRPC, and MCP transports"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "BUSL-1.1"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
dependencies = [
|
|
13
|
+
"httpx>=0.27",
|
|
14
|
+
"pydantic>=2.0",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.optional-dependencies]
|
|
18
|
+
grpc = [
|
|
19
|
+
"grpcio>=1.60",
|
|
20
|
+
"protobuf>=5.0",
|
|
21
|
+
]
|
|
22
|
+
dev = [
|
|
23
|
+
"grpcio-tools>=1.60",
|
|
24
|
+
"datamodel-code-generator>=0.26",
|
|
25
|
+
"pytest>=8.0",
|
|
26
|
+
"pytest-asyncio>=0.24",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.urls]
|
|
30
|
+
Repository = "https://github.com/AreevAI/areev-sdk-python"
|
|
31
|
+
Documentation = "https://areev.ai/docs"
|
|
32
|
+
|
|
33
|
+
[tool.hatch.build.targets.wheel]
|
|
34
|
+
packages = ["src/areev"]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
5
|
+
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
6
|
+
|
|
7
|
+
echo "==> Generating gRPC stubs from proto..."
|
|
8
|
+
python -m grpc_tools.protoc \
|
|
9
|
+
-I"$ROOT_DIR/specs/proto" \
|
|
10
|
+
--python_out="$ROOT_DIR/src/areev/generated" \
|
|
11
|
+
--grpc_python_out="$ROOT_DIR/src/areev/generated" \
|
|
12
|
+
--pyi_out="$ROOT_DIR/src/areev/generated" \
|
|
13
|
+
"$ROOT_DIR/specs/proto/areev/v1/areev.proto"
|
|
14
|
+
|
|
15
|
+
echo "==> Generating Pydantic models from OpenAPI..."
|
|
16
|
+
datamodel-codegen \
|
|
17
|
+
--input "$ROOT_DIR/specs/openapi/openapi.json" \
|
|
18
|
+
--input-file-type openapi \
|
|
19
|
+
--output "$ROOT_DIR/src/areev/generated/models.py" \
|
|
20
|
+
--output-model-type pydantic_v2.BaseModel \
|
|
21
|
+
--target-python-version 3.10
|
|
22
|
+
|
|
23
|
+
echo "Done."
|
areev-0.0.0/specs/.git
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitdir: ../.git/modules/specs
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Dispatch SDK Rebuilds
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
dispatch:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- name: Generate app token
|
|
13
|
+
id: app-token
|
|
14
|
+
uses: actions/create-github-app-token@v1
|
|
15
|
+
with:
|
|
16
|
+
app-id: ${{ secrets.DEPLOY_APP_ID }}
|
|
17
|
+
private-key: ${{ secrets.DEPLOY_APP_PRIVATE_KEY }}
|
|
18
|
+
owner: AreevAI
|
|
19
|
+
|
|
20
|
+
- name: Extract version from tag
|
|
21
|
+
id: version
|
|
22
|
+
run: echo "tag=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT"
|
|
23
|
+
|
|
24
|
+
- name: Dispatch to areev-sdk-rust
|
|
25
|
+
uses: peter-evans/repository-dispatch@v3
|
|
26
|
+
with:
|
|
27
|
+
token: ${{ steps.app-token.outputs.token }}
|
|
28
|
+
repository: AreevAI/areev-sdk-rust
|
|
29
|
+
event-type: specs-updated
|
|
30
|
+
client-payload: '{"tag": "${{ steps.version.outputs.tag }}"}'
|
|
31
|
+
|
|
32
|
+
- name: Dispatch to areev-sdk-typescript
|
|
33
|
+
uses: peter-evans/repository-dispatch@v3
|
|
34
|
+
with:
|
|
35
|
+
token: ${{ steps.app-token.outputs.token }}
|
|
36
|
+
repository: AreevAI/areev-sdk-typescript
|
|
37
|
+
event-type: specs-updated
|
|
38
|
+
client-payload: '{"tag": "${{ steps.version.outputs.tag }}"}'
|
|
39
|
+
|
|
40
|
+
- name: Dispatch to areev-sdk-python
|
|
41
|
+
uses: peter-evans/repository-dispatch@v3
|
|
42
|
+
with:
|
|
43
|
+
token: ${{ steps.app-token.outputs.token }}
|
|
44
|
+
repository: AreevAI/areev-sdk-python
|
|
45
|
+
event-type: specs-updated
|
|
46
|
+
client-payload: '{"tag": "${{ steps.version.outputs.tag }}"}'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.DS_Store
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Areev API Specifications
|
|
2
|
+
|
|
3
|
+
Canonical API contracts for [Areev](https://areev.ai) — the knowledge database for AI agents.
|
|
4
|
+
|
|
5
|
+
All SDK repos generate client code from these specs. **Do not edit manually** — specs are auto-synced from the Areev engine repo via CI.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
areev-specs/
|
|
11
|
+
├── proto/areev/v1/
|
|
12
|
+
│ ├── areev.proto # gRPC service (AreevService — core data operations)
|
|
13
|
+
│ └── cluster.proto # Distributed cluster RPCs (Raft + ClusterService)
|
|
14
|
+
├── openapi/
|
|
15
|
+
│ └── openapi.json # REST API (OpenAPI 3.1.0, 50+ endpoints)
|
|
16
|
+
├── mcp/
|
|
17
|
+
│ └── mcp-manifest.json # Model Context Protocol (14 tools, 3 resources)
|
|
18
|
+
├── a2a/
|
|
19
|
+
│ └── agent-card.json # Agent-to-Agent (14 skills)
|
|
20
|
+
├── cal/
|
|
21
|
+
│ └── cal-capabilities.json # Context Assembly Language (15 statements, L2-Extended)
|
|
22
|
+
├── cli/
|
|
23
|
+
│ └── cli-commands.json # CLI command structure
|
|
24
|
+
└── manifest.json # Version + file index + generation timestamp
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Protocols
|
|
28
|
+
|
|
29
|
+
| Protocol | Spec File | Use Case |
|
|
30
|
+
|----------|-----------|----------|
|
|
31
|
+
| HTTP/REST | `openapi/openapi.json` | Universal API access |
|
|
32
|
+
| gRPC | `proto/areev/v1/areev.proto` | High-performance binary protocol |
|
|
33
|
+
| MCP | `mcp/mcp-manifest.json` | LLM/AI tool integration |
|
|
34
|
+
| A2A | `a2a/agent-card.json` | Agent-to-agent communication |
|
|
35
|
+
| CAL | `cal/cal-capabilities.json` | Context Assembly Language queries |
|
|
36
|
+
|
|
37
|
+
## SDK Repos
|
|
38
|
+
|
|
39
|
+
| Language | Repo | Package | Protocols |
|
|
40
|
+
|----------|------|---------|-----------|
|
|
41
|
+
| Rust | [areev-sdk-rust](https://github.com/AreevAI/areev-sdk-rust) | `areev-client` | gRPC, HTTP |
|
|
42
|
+
| TypeScript | [areev-sdk-typescript](https://github.com/AreevAI/areev-sdk-typescript) | `@areev/client` | HTTP, MCP, A2A |
|
|
43
|
+
| Python | [areev-sdk-python](https://github.com/AreevAI/areev-sdk-python) | `areev` | HTTP, gRPC, MCP |
|
|
44
|
+
|
|
45
|
+
## Versioning
|
|
46
|
+
|
|
47
|
+
Specs version matches the Areev engine version (`x.y.z`). Tags use `vX.Y.Z+BUILD` format:
|
|
48
|
+
- `x.y.z` increments on public releases
|
|
49
|
+
- `+BUILD` is the CI build number (internal tracking)
|
|
50
|
+
|
|
51
|
+
## Consuming Specs
|
|
52
|
+
|
|
53
|
+
**As a git submodule (recommended for Rust/internal):**
|
|
54
|
+
```bash
|
|
55
|
+
git submodule add git@github.com:AreevAI/areev-specs.git specs
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**As a dependency in CI:**
|
|
59
|
+
```yaml
|
|
60
|
+
- uses: actions/checkout@v4
|
|
61
|
+
with:
|
|
62
|
+
repository: AreevAI/areev-specs
|
|
63
|
+
path: specs
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
BUSL-1.1 — See [LICENSE](LICENSE).
|