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.
@@ -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
@@ -0,0 +1,12 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ .venv/
9
+ *.so
10
+ .DS_Store
11
+ src/areev/generated/areev_pb2*.py*
12
+ src/areev/generated/models.py
@@ -0,0 +1,3 @@
1
+ [submodule "specs"]
2
+ path = specs
3
+ url = git@github.com:AreevAI/areev-specs.git
areev-0.0.0/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Business Source License 1.1
2
+
3
+ Licensor: MindGryd Technologies Private Limited
4
+ Licensed Work: Areev Python SDK
5
+
6
+ The Licensed Work is provided under the terms of the Business Source License 1.1.
7
+ See https://mariadb.com/bsl11/ for the full license text.
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,7 @@
1
+ Business Source License 1.1
2
+
3
+ Licensor: MindGryd Technologies Private Limited
4
+ Licensed Work: Areev API Specifications
5
+
6
+ The Licensed Work is provided under the terms of the Business Source License 1.1.
7
+ See https://mariadb.com/bsl11/ for the full license text.
@@ -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).