forktex-intelligence 0.2.3__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.
- forktex_intelligence-0.2.3/LICENSE +45 -0
- forktex_intelligence-0.2.3/NOTICE +22 -0
- forktex_intelligence-0.2.3/PKG-INFO +178 -0
- forktex_intelligence-0.2.3/README.md +148 -0
- forktex_intelligence-0.2.3/pyproject.toml +84 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/__init__.py +97 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/api.py +544 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/client/__init__.py +56 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/client/client.py +360 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/client/generated/__init__.py +623 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/config.py +43 -0
- forktex_intelligence-0.2.3/src/forktex_intelligence/streams.py +152 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
forktex-intelligence -- Dual License
|
|
2
|
+
|
|
3
|
+
Copyright (C) 2026 FORKTEX S.R.L.
|
|
4
|
+
|
|
5
|
+
This software is licensed under a dual-license model:
|
|
6
|
+
|
|
7
|
+
============================================================================
|
|
8
|
+
|
|
9
|
+
1. OPEN-SOURCE LICENSE -- GNU Affero General Public License v3.0 (AGPL-3.0)
|
|
10
|
+
|
|
11
|
+
You may use, modify, and redistribute this software under the terms of the
|
|
12
|
+
GNU Affero General Public License v3.0 or later, as published by the Free
|
|
13
|
+
Software Foundation. The full license text is available at:
|
|
14
|
+
https://www.gnu.org/licenses/agpl-3.0.html
|
|
15
|
+
|
|
16
|
+
Key obligations under AGPL-3.0:
|
|
17
|
+
- Any modified version MUST be released under the same AGPL-3.0 license.
|
|
18
|
+
- If you run a modified version on a server and let users interact with it
|
|
19
|
+
over a network, you MUST make the complete source code available to those
|
|
20
|
+
users under AGPL-3.0.
|
|
21
|
+
- You MUST preserve all copyright notices and attribution to FORKTEX S.R.L.
|
|
22
|
+
|
|
23
|
+
============================================================================
|
|
24
|
+
|
|
25
|
+
2. COMMERCIAL LICENSE
|
|
26
|
+
|
|
27
|
+
If you wish to use this software without the obligations of AGPL-3.0 --
|
|
28
|
+
for example, to keep your modifications proprietary, to embed this software
|
|
29
|
+
in a closed-source product, or to operate it as part of a commercial service
|
|
30
|
+
without releasing your source code -- you MUST obtain a commercial license
|
|
31
|
+
from FORKTEX S.R.L.
|
|
32
|
+
|
|
33
|
+
Commercial licensing includes, but is not limited to:
|
|
34
|
+
- SaaS / hosted deployments generating revenue
|
|
35
|
+
- Embedding in proprietary products or platforms
|
|
36
|
+
- Redistribution in closed-source form
|
|
37
|
+
- Use by organizations exceeding the AGPL-3.0 compliance scope
|
|
38
|
+
|
|
39
|
+
For commercial licensing inquiries, contact:
|
|
40
|
+
info@forktex.com
|
|
41
|
+
|
|
42
|
+
============================================================================
|
|
43
|
+
|
|
44
|
+
Unless you have obtained a separate commercial license from FORKTEX S.R.L.,
|
|
45
|
+
your use of this software is governed exclusively by the AGPL-3.0 license.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
forktex-intelligence
|
|
2
|
+
Copyright (C) 2026 FORKTEX S.R.L.
|
|
3
|
+
|
|
4
|
+
forktex-intelligence is the standalone Python SDK for the ForkTex Intelligence
|
|
5
|
+
API. It provides the typed httpx-based client (sync + streaming over SSE),
|
|
6
|
+
generated Pydantic models for the Intelligence OpenAPI surface, and helpers
|
|
7
|
+
for chat, agent runs, embeddings, retrieval, and ecosystem indexing.
|
|
8
|
+
|
|
9
|
+
This program is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Affero General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
This program is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Affero General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Affero General Public License
|
|
20
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
21
|
+
|
|
22
|
+
For commercial licensing inquiries, contact: info@forktex.com
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: forktex-intelligence
|
|
3
|
+
Version: 0.2.3
|
|
4
|
+
Summary: Standalone Python SDK for the ForkTex Intelligence API — chat, agent runs, embeddings, retrieval, ecosystem indexing
|
|
5
|
+
License-Expression: AGPL-3.0-only
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
License-File: NOTICE
|
|
8
|
+
Author: FORKTEX
|
|
9
|
+
Author-email: info@forktex.com
|
|
10
|
+
Requires-Python: >=3.12
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Dist: httpx (>=0.27.0,<1.0.0)
|
|
23
|
+
Requires-Dist: httpx-sse (>=0.4.0,<1.0.0)
|
|
24
|
+
Requires-Dist: pydantic (>=2.11.10,<3.0.0)
|
|
25
|
+
Project-URL: Bug Tracker, https://github.com/forktex/intelligence/issues
|
|
26
|
+
Project-URL: Homepage, https://intelligence.forktex.com
|
|
27
|
+
Project-URL: Repository, https://github.com/forktex/intelligence
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# forktex-intelligence
|
|
31
|
+
|
|
32
|
+
[](https://pypi.org/project/forktex-intelligence/)
|
|
33
|
+
[](https://pypi.org/project/forktex-intelligence/)
|
|
34
|
+
[](https://github.com/forktex/intelligence/blob/master/sdk-py/LICENSE)
|
|
35
|
+
|
|
36
|
+
Standalone Python SDK for the [ForkTex Intelligence](https://intelligence.forktex.com) API.
|
|
37
|
+
|
|
38
|
+
`forktex-intelligence` is the high-level Python client for the ForkTex Intelligence platform: multi-provider LLM chat (streaming + structured), embeddings, vector search, content extraction (PDF / DOCX / HTML), and image / audio generation. It backs the `forktex intelligence ask / run / scrape` CLI commands and is also usable directly from any Python application.
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install forktex-intelligence
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Requires Python 3.12+.** Tested on 3.12, 3.13, 3.14.
|
|
47
|
+
|
|
48
|
+
## Quick Start
|
|
49
|
+
|
|
50
|
+
### Single-shot prompt
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
from forktex_intelligence import Intelligence
|
|
54
|
+
|
|
55
|
+
async with Intelligence(endpoint="https://intelligence.forktex.com/api", api_key="sk-...") as ai:
|
|
56
|
+
response = await ai.chat("Summarize the ForkTex stack in one sentence.")
|
|
57
|
+
print(response.text)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Structured response (Pydantic schema)
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from pydantic import BaseModel
|
|
64
|
+
from forktex_intelligence import Intelligence
|
|
65
|
+
|
|
66
|
+
class Summary(BaseModel):
|
|
67
|
+
title: str
|
|
68
|
+
bullets: list[str]
|
|
69
|
+
|
|
70
|
+
async with Intelligence(endpoint="...", api_key="...") as ai:
|
|
71
|
+
result = await ai.extract_structured(
|
|
72
|
+
prompt="Summarize the ForkTex stack.",
|
|
73
|
+
schema=Summary,
|
|
74
|
+
)
|
|
75
|
+
print(result.parsed.title, result.parsed.bullets)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Streaming
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
from forktex_intelligence import Intelligence
|
|
82
|
+
|
|
83
|
+
async with Intelligence(endpoint="...", api_key="...") as ai:
|
|
84
|
+
async for chunk in ai.stream("Tell me a story."):
|
|
85
|
+
print(chunk, end="", flush=True)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Configuration
|
|
89
|
+
|
|
90
|
+
Pass endpoint and API key explicitly:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
Intelligence(endpoint="https://intelligence.forktex.com/api", api_key="sk-...")
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Or via an `IntelligenceSettings` object:
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from forktex_intelligence import IntelligenceSettings, Intelligence
|
|
100
|
+
|
|
101
|
+
settings = IntelligenceSettings(endpoint="...", api_key="...")
|
|
102
|
+
async with Intelligence(settings=settings) as ai:
|
|
103
|
+
...
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
When used via the `forktex` CLI, settings are loaded from environment variables and `.forktex/` config files automatically.
|
|
107
|
+
|
|
108
|
+
| Variable | Description | Default |
|
|
109
|
+
|----------|-------------|---------|
|
|
110
|
+
| `FORKTEX_INTELLIGENCE_ENDPOINT` | Intelligence API endpoint | `https://intelligence.forktex.com/api` |
|
|
111
|
+
| `FORKTEX_INTELLIGENCE_API_KEY` | Intelligence API key | *(required)* |
|
|
112
|
+
|
|
113
|
+
### Local dev (point at your `make local` stack)
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
export FORKTEX_INTELLIGENCE_ENDPOINT=http://localhost:8001/api
|
|
117
|
+
export FORKTEX_INTELLIGENCE_API_KEY=dev-key
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Or programmatically:
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
from forktex_intelligence import Intelligence
|
|
124
|
+
intel = Intelligence(endpoint="http://localhost:8001/api", api_key="dev-key")
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## What's in the package
|
|
128
|
+
|
|
129
|
+
| Module | Purpose |
|
|
130
|
+
|--------|---------|
|
|
131
|
+
| `forktex_intelligence.api` | High-level `Intelligence` client (chat, structured, stream) |
|
|
132
|
+
| `forktex_intelligence.client` | Low-level `ForktexIntelligenceClient` (raw HTTP, advanced use) |
|
|
133
|
+
| `forktex_intelligence.client.generated` | Wire-level Pydantic models (`ChatMessage`, `ChatResponse`, …) generated from the OpenAPI spec |
|
|
134
|
+
| `forktex_intelligence.streams` | SSE event types and parser |
|
|
135
|
+
| `forktex_intelligence.config` | `IntelligenceSettings` — endpoint, API key |
|
|
136
|
+
|
|
137
|
+
All response models come from the OpenAPI codegen pipeline — one source of truth shared between the server and every consumer.
|
|
138
|
+
|
|
139
|
+
## Repository
|
|
140
|
+
|
|
141
|
+
This SDK lives inside the [`forktex/intelligence`](https://github.com/forktex/intelligence) monorepo alongside the API server (`api/`). The SDK package is independently versioned and published to PyPI.
|
|
142
|
+
|
|
143
|
+
## Development
|
|
144
|
+
|
|
145
|
+
The [`Makefile`](Makefile) is generated by `forktex fsd makefile sync` from [`forktex.json`](forktex.json) — do not hand-edit.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
make help # list every available target
|
|
149
|
+
make deps # editable install with the dev group
|
|
150
|
+
make format # ruff format
|
|
151
|
+
make lint # ruff check
|
|
152
|
+
make test # pytest tests/
|
|
153
|
+
make codegen-check # verify the generated client imports cleanly
|
|
154
|
+
make build # python3 -m build → dist/
|
|
155
|
+
make ci # format-check + lint + license-check + audit + test + build
|
|
156
|
+
make clean # remove caches and dist/
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
`make ci` is the single command that gates a publish: format-check, lint, dual-license header check, dependency CVE audit, full test suite, and `python -m build` + `twine check`.
|
|
160
|
+
|
|
161
|
+
### License headers
|
|
162
|
+
|
|
163
|
+
Every source file carries the AGPL-3.0 + Commercial dual-license SPDX header, applied idempotently via:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
make license-check # CI gate — fails if any source file is missing the header
|
|
167
|
+
make license-fix # add or refresh headers across src/, tests/, scripts/
|
|
168
|
+
make license-strip # remove headers (used before license-model changes)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
Dual-licensed — **AGPL-3.0-or-later** for open-source use, **commercial** for everything else (proprietary products, SaaS without source release, redistribution in closed-source form). See [`LICENSE`](LICENSE) and [`NOTICE`](NOTICE) for the full terms.
|
|
174
|
+
|
|
175
|
+
Commercial licensing inquiries: info@forktex.com.
|
|
176
|
+
|
|
177
|
+
The 1.0.0 release on PyPI remains under MIT; from **0.2.3** onwards the package ships AGPL-3.0+Commercial.
|
|
178
|
+
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# forktex-intelligence
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/forktex-intelligence/)
|
|
4
|
+
[](https://pypi.org/project/forktex-intelligence/)
|
|
5
|
+
[](https://github.com/forktex/intelligence/blob/master/sdk-py/LICENSE)
|
|
6
|
+
|
|
7
|
+
Standalone Python SDK for the [ForkTex Intelligence](https://intelligence.forktex.com) API.
|
|
8
|
+
|
|
9
|
+
`forktex-intelligence` is the high-level Python client for the ForkTex Intelligence platform: multi-provider LLM chat (streaming + structured), embeddings, vector search, content extraction (PDF / DOCX / HTML), and image / audio generation. It backs the `forktex intelligence ask / run / scrape` CLI commands and is also usable directly from any Python application.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install forktex-intelligence
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Requires Python 3.12+.** Tested on 3.12, 3.13, 3.14.
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
### Single-shot prompt
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from forktex_intelligence import Intelligence
|
|
25
|
+
|
|
26
|
+
async with Intelligence(endpoint="https://intelligence.forktex.com/api", api_key="sk-...") as ai:
|
|
27
|
+
response = await ai.chat("Summarize the ForkTex stack in one sentence.")
|
|
28
|
+
print(response.text)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Structured response (Pydantic schema)
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from pydantic import BaseModel
|
|
35
|
+
from forktex_intelligence import Intelligence
|
|
36
|
+
|
|
37
|
+
class Summary(BaseModel):
|
|
38
|
+
title: str
|
|
39
|
+
bullets: list[str]
|
|
40
|
+
|
|
41
|
+
async with Intelligence(endpoint="...", api_key="...") as ai:
|
|
42
|
+
result = await ai.extract_structured(
|
|
43
|
+
prompt="Summarize the ForkTex stack.",
|
|
44
|
+
schema=Summary,
|
|
45
|
+
)
|
|
46
|
+
print(result.parsed.title, result.parsed.bullets)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Streaming
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from forktex_intelligence import Intelligence
|
|
53
|
+
|
|
54
|
+
async with Intelligence(endpoint="...", api_key="...") as ai:
|
|
55
|
+
async for chunk in ai.stream("Tell me a story."):
|
|
56
|
+
print(chunk, end="", flush=True)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
Pass endpoint and API key explicitly:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
Intelligence(endpoint="https://intelligence.forktex.com/api", api_key="sk-...")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Or via an `IntelligenceSettings` object:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from forktex_intelligence import IntelligenceSettings, Intelligence
|
|
71
|
+
|
|
72
|
+
settings = IntelligenceSettings(endpoint="...", api_key="...")
|
|
73
|
+
async with Intelligence(settings=settings) as ai:
|
|
74
|
+
...
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
When used via the `forktex` CLI, settings are loaded from environment variables and `.forktex/` config files automatically.
|
|
78
|
+
|
|
79
|
+
| Variable | Description | Default |
|
|
80
|
+
|----------|-------------|---------|
|
|
81
|
+
| `FORKTEX_INTELLIGENCE_ENDPOINT` | Intelligence API endpoint | `https://intelligence.forktex.com/api` |
|
|
82
|
+
| `FORKTEX_INTELLIGENCE_API_KEY` | Intelligence API key | *(required)* |
|
|
83
|
+
|
|
84
|
+
### Local dev (point at your `make local` stack)
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
export FORKTEX_INTELLIGENCE_ENDPOINT=http://localhost:8001/api
|
|
88
|
+
export FORKTEX_INTELLIGENCE_API_KEY=dev-key
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Or programmatically:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from forktex_intelligence import Intelligence
|
|
95
|
+
intel = Intelligence(endpoint="http://localhost:8001/api", api_key="dev-key")
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## What's in the package
|
|
99
|
+
|
|
100
|
+
| Module | Purpose |
|
|
101
|
+
|--------|---------|
|
|
102
|
+
| `forktex_intelligence.api` | High-level `Intelligence` client (chat, structured, stream) |
|
|
103
|
+
| `forktex_intelligence.client` | Low-level `ForktexIntelligenceClient` (raw HTTP, advanced use) |
|
|
104
|
+
| `forktex_intelligence.client.generated` | Wire-level Pydantic models (`ChatMessage`, `ChatResponse`, …) generated from the OpenAPI spec |
|
|
105
|
+
| `forktex_intelligence.streams` | SSE event types and parser |
|
|
106
|
+
| `forktex_intelligence.config` | `IntelligenceSettings` — endpoint, API key |
|
|
107
|
+
|
|
108
|
+
All response models come from the OpenAPI codegen pipeline — one source of truth shared between the server and every consumer.
|
|
109
|
+
|
|
110
|
+
## Repository
|
|
111
|
+
|
|
112
|
+
This SDK lives inside the [`forktex/intelligence`](https://github.com/forktex/intelligence) monorepo alongside the API server (`api/`). The SDK package is independently versioned and published to PyPI.
|
|
113
|
+
|
|
114
|
+
## Development
|
|
115
|
+
|
|
116
|
+
The [`Makefile`](Makefile) is generated by `forktex fsd makefile sync` from [`forktex.json`](forktex.json) — do not hand-edit.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
make help # list every available target
|
|
120
|
+
make deps # editable install with the dev group
|
|
121
|
+
make format # ruff format
|
|
122
|
+
make lint # ruff check
|
|
123
|
+
make test # pytest tests/
|
|
124
|
+
make codegen-check # verify the generated client imports cleanly
|
|
125
|
+
make build # python3 -m build → dist/
|
|
126
|
+
make ci # format-check + lint + license-check + audit + test + build
|
|
127
|
+
make clean # remove caches and dist/
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
`make ci` is the single command that gates a publish: format-check, lint, dual-license header check, dependency CVE audit, full test suite, and `python -m build` + `twine check`.
|
|
131
|
+
|
|
132
|
+
### License headers
|
|
133
|
+
|
|
134
|
+
Every source file carries the AGPL-3.0 + Commercial dual-license SPDX header, applied idempotently via:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
make license-check # CI gate — fails if any source file is missing the header
|
|
138
|
+
make license-fix # add or refresh headers across src/, tests/, scripts/
|
|
139
|
+
make license-strip # remove headers (used before license-model changes)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
Dual-licensed — **AGPL-3.0-or-later** for open-source use, **commercial** for everything else (proprietary products, SaaS without source release, redistribution in closed-source form). See [`LICENSE`](LICENSE) and [`NOTICE`](NOTICE) for the full terms.
|
|
145
|
+
|
|
146
|
+
Commercial licensing inquiries: info@forktex.com.
|
|
147
|
+
|
|
148
|
+
The 1.0.0 release on PyPI remains under MIT; from **0.2.3** onwards the package ships AGPL-3.0+Commercial.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Copyright (C) 2026 FORKTEX S.R.L.
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-ForkTex-Commercial
|
|
4
|
+
#
|
|
5
|
+
# This file is part of forktex-intelligence.
|
|
6
|
+
#
|
|
7
|
+
# For commercial licensing -- including use in proprietary products, SaaS
|
|
8
|
+
# deployments, or any context where AGPL obligations cannot be met -- you
|
|
9
|
+
# MUST obtain a commercial license from FORKTEX S.R.L. (info@forktex.com).
|
|
10
|
+
#
|
|
11
|
+
# This program is free software: you can redistribute it and/or modify
|
|
12
|
+
# it under the terms of the GNU Affero General Public License as published by
|
|
13
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
# (at your option) any later version.
|
|
15
|
+
#
|
|
16
|
+
# This program is distributed in the hope that it will be useful,
|
|
17
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
# GNU Affero General Public License for more details.
|
|
20
|
+
#
|
|
21
|
+
# You should have received a copy of the GNU Affero General Public License
|
|
22
|
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
23
|
+
|
|
24
|
+
[project]
|
|
25
|
+
name = "forktex-intelligence"
|
|
26
|
+
version = "0.2.3"
|
|
27
|
+
description = "Standalone Python SDK for the ForkTex Intelligence API — chat, agent runs, embeddings, retrieval, ecosystem indexing"
|
|
28
|
+
authors = [
|
|
29
|
+
{name = "FORKTEX", email = "info@forktex.com"}
|
|
30
|
+
]
|
|
31
|
+
readme = "README.md"
|
|
32
|
+
license = "AGPL-3.0-only"
|
|
33
|
+
license-files = ["LICENSE", "NOTICE"]
|
|
34
|
+
requires-python = ">=3.12"
|
|
35
|
+
classifiers = [
|
|
36
|
+
"Development Status :: 5 - Production/Stable",
|
|
37
|
+
"Intended Audience :: Developers",
|
|
38
|
+
"Operating System :: OS Independent",
|
|
39
|
+
"Programming Language :: Python :: 3",
|
|
40
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
41
|
+
"Programming Language :: Python :: 3.12",
|
|
42
|
+
"Programming Language :: Python :: 3.13",
|
|
43
|
+
"Programming Language :: Python :: 3.14",
|
|
44
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
45
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
46
|
+
"Typing :: Typed",
|
|
47
|
+
]
|
|
48
|
+
dependencies = [
|
|
49
|
+
"pydantic (>=2.11.10,<3.0.0)",
|
|
50
|
+
"httpx (>=0.27.0,<1.0.0)",
|
|
51
|
+
"httpx-sse (>=0.4.0,<1.0.0)",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
[project.urls]
|
|
55
|
+
"Homepage" = "https://intelligence.forktex.com"
|
|
56
|
+
"Repository" = "https://github.com/forktex/intelligence"
|
|
57
|
+
"Bug Tracker" = "https://github.com/forktex/intelligence/issues"
|
|
58
|
+
|
|
59
|
+
[build-system]
|
|
60
|
+
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
|
61
|
+
build-backend = "poetry.core.masonry.api"
|
|
62
|
+
|
|
63
|
+
[dependency-groups]
|
|
64
|
+
dev = [
|
|
65
|
+
"pytest (>=8.4.2,<9.0.0)",
|
|
66
|
+
"pytest-asyncio (>=1.2.0,<2.0.0)",
|
|
67
|
+
"ruff (>=0.8.0)",
|
|
68
|
+
"respx (>=0.21.0)",
|
|
69
|
+
"pyright>=1.1.350",
|
|
70
|
+
"pip-audit>=2.7.0",
|
|
71
|
+
"build>=1.2.0",
|
|
72
|
+
"twine>=5.0.0",
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
[tool.ruff]
|
|
76
|
+
target-version = "py312"
|
|
77
|
+
line-length = 120
|
|
78
|
+
extend-exclude = [
|
|
79
|
+
"src/forktex_intelligence/client/generated/**",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
[tool.pytest.ini_options]
|
|
83
|
+
asyncio_mode = "auto"
|
|
84
|
+
testpaths = ["tests"]
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Copyright (C) 2026 FORKTEX S.R.L.
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-ForkTex-Commercial
|
|
4
|
+
#
|
|
5
|
+
# This file is part of forktex-intelligence.
|
|
6
|
+
#
|
|
7
|
+
# For commercial licensing -- including use in proprietary products, SaaS
|
|
8
|
+
# deployments, or any context where AGPL obligations cannot be met -- you
|
|
9
|
+
# MUST obtain a commercial license from FORKTEX S.R.L. (info@forktex.com).
|
|
10
|
+
#
|
|
11
|
+
# This program is free software: you can redistribute it and/or modify
|
|
12
|
+
# it under the terms of the GNU Affero General Public License as published by
|
|
13
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
14
|
+
# (at your option) any later version.
|
|
15
|
+
#
|
|
16
|
+
# This program is distributed in the hope that it will be useful,
|
|
17
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
# GNU Affero General Public License for more details.
|
|
20
|
+
#
|
|
21
|
+
# You should have received a copy of the GNU Affero General Public License
|
|
22
|
+
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
23
|
+
|
|
24
|
+
"""forktex_intelligence — Standalone Python SDK for the ForkTex Intelligence API.
|
|
25
|
+
|
|
26
|
+
Three pillars:
|
|
27
|
+
1. Smart API — LLM chat/structured output, proxied to best providers
|
|
28
|
+
2. Content Extraction — Upload any file, get structured text + chunks
|
|
29
|
+
3. Vector Space — Managed vector storage with semantic search
|
|
30
|
+
|
|
31
|
+
Usage::
|
|
32
|
+
|
|
33
|
+
from forktex_intelligence import Intelligence
|
|
34
|
+
|
|
35
|
+
async with Intelligence(org_id="my-org-uuid") as ai:
|
|
36
|
+
# Chat
|
|
37
|
+
response = await ai.chat("Explain Python decorators")
|
|
38
|
+
|
|
39
|
+
# Extract text from a file
|
|
40
|
+
result = await ai.extract_file(pdf_bytes, "paper.pdf")
|
|
41
|
+
|
|
42
|
+
# Search across collections
|
|
43
|
+
results = await ai.search("collection-id", "quantum computing")
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
__version__ = "0.2.3"
|
|
47
|
+
|
|
48
|
+
from forktex_intelligence.api import (
|
|
49
|
+
AvailableModel,
|
|
50
|
+
Intelligence,
|
|
51
|
+
Response,
|
|
52
|
+
StructuredResponse,
|
|
53
|
+
StreamChunks,
|
|
54
|
+
)
|
|
55
|
+
from forktex_intelligence.config import IntelligenceSettings
|
|
56
|
+
from forktex_intelligence.client.client import (
|
|
57
|
+
ForktexIntelligenceClient,
|
|
58
|
+
IntelligenceAPIError,
|
|
59
|
+
)
|
|
60
|
+
from forktex_intelligence.client.generated import (
|
|
61
|
+
SPEC_HASH,
|
|
62
|
+
SPEC_VERSION,
|
|
63
|
+
ChatMessage,
|
|
64
|
+
ChatResponse,
|
|
65
|
+
HealthResponse,
|
|
66
|
+
StructuredChatResponse,
|
|
67
|
+
ToolCallInfo,
|
|
68
|
+
UsageInfo,
|
|
69
|
+
)
|
|
70
|
+
from forktex_intelligence.streams import SSEEvent, SSEEventType
|
|
71
|
+
|
|
72
|
+
__all__ = [
|
|
73
|
+
# High-level API
|
|
74
|
+
"AvailableModel",
|
|
75
|
+
"Intelligence",
|
|
76
|
+
"Response",
|
|
77
|
+
"StructuredResponse",
|
|
78
|
+
"StreamChunks",
|
|
79
|
+
# Configuration
|
|
80
|
+
"IntelligenceSettings",
|
|
81
|
+
# Low-level client (advanced)
|
|
82
|
+
"ForktexIntelligenceClient",
|
|
83
|
+
"IntelligenceAPIError",
|
|
84
|
+
# Codegen contract (wire-compatibility markers)
|
|
85
|
+
"SPEC_VERSION",
|
|
86
|
+
"SPEC_HASH",
|
|
87
|
+
# Wire-level models (advanced — prefer high-level API)
|
|
88
|
+
"ChatMessage",
|
|
89
|
+
"ChatResponse",
|
|
90
|
+
"HealthResponse",
|
|
91
|
+
"StructuredChatResponse",
|
|
92
|
+
"ToolCallInfo",
|
|
93
|
+
"UsageInfo",
|
|
94
|
+
# Streaming
|
|
95
|
+
"SSEEvent",
|
|
96
|
+
"SSEEventType",
|
|
97
|
+
]
|