okb 1.1.0__py3-none-any.whl → 1.1.0a0__py3-none-any.whl
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.
- okb/cli.py +16 -1083
- okb/config.py +4 -122
- okb/http_server.py +2 -163
- okb/llm/providers.py +6 -9
- okb/mcp_server.py +12 -1036
- okb/modal_llm.py +8 -26
- okb/plugins/sources/github.py +5 -5
- okb/tokens.py +3 -25
- {okb-1.1.0.dist-info → okb-1.1.0a0.dist-info}/METADATA +6 -83
- {okb-1.1.0.dist-info → okb-1.1.0a0.dist-info}/RECORD +12 -24
- okb/llm/analyze.py +0 -524
- okb/llm/consolidate.py +0 -685
- okb/llm/enrich.py +0 -723
- okb/llm/extractors/__init__.py +0 -13
- okb/llm/extractors/base.py +0 -44
- okb/llm/extractors/cross_doc.py +0 -478
- okb/llm/extractors/dedup.py +0 -499
- okb/llm/extractors/entity.py +0 -369
- okb/llm/extractors/todo.py +0 -149
- okb/migrations/0008.enrichment.sql +0 -46
- okb/migrations/0009.entity-consolidation.sql +0 -120
- okb/migrations/0010.token-id.sql +0 -7
- {okb-1.1.0.dist-info → okb-1.1.0a0.dist-info}/WHEEL +0 -0
- {okb-1.1.0.dist-info → okb-1.1.0a0.dist-info}/entry_points.txt +0 -0
okb/modal_llm.py
CHANGED
|
@@ -2,34 +2,20 @@
|
|
|
2
2
|
Modal-based GPU LLM service for document classification.
|
|
3
3
|
|
|
4
4
|
Provides on-demand GPU access for LLM inference using open models.
|
|
5
|
+
Uses Llama 3.2 3B by default - fast and efficient for classification tasks.
|
|
5
6
|
|
|
6
7
|
Usage:
|
|
7
|
-
# Deploy with default model (Phi-3)
|
|
8
8
|
modal deploy modal_llm.py
|
|
9
9
|
|
|
10
|
-
# Deploy with specific model
|
|
11
|
-
OKB_LLM_MODEL=meta-llama/Llama-3.2-3B-Instruct modal deploy modal_llm.py
|
|
12
|
-
|
|
13
10
|
Then call from Python:
|
|
14
11
|
llm = modal.Cls.from_name("knowledge-llm", "LLM")()
|
|
15
12
|
response = llm.complete.remote("Classify this document", system="You are a classifier")
|
|
16
13
|
"""
|
|
17
14
|
|
|
18
|
-
import os
|
|
19
|
-
|
|
20
15
|
import modal
|
|
21
16
|
|
|
22
17
|
app = modal.App("knowledge-llm")
|
|
23
18
|
|
|
24
|
-
# Model is set via environment variable at deploy time
|
|
25
|
-
# Default to Phi-3 which doesn't require HuggingFace approval
|
|
26
|
-
DEFAULT_MODEL = "microsoft/Phi-3-mini-4k-instruct"
|
|
27
|
-
MODEL_ID = os.environ.get("OKB_LLM_MODEL", DEFAULT_MODEL)
|
|
28
|
-
|
|
29
|
-
# GPU type - L4 recommended for speed/cost balance
|
|
30
|
-
DEFAULT_GPU = "L4"
|
|
31
|
-
GPU_TYPE = os.environ.get("OKB_MODAL_GPU", DEFAULT_GPU)
|
|
32
|
-
|
|
33
19
|
# Container image with transformers and torch
|
|
34
20
|
llm_image = (
|
|
35
21
|
modal.Image.debian_slim(python_version="3.11")
|
|
@@ -38,19 +24,17 @@ llm_image = (
|
|
|
38
24
|
"torch>=2.0.0",
|
|
39
25
|
"accelerate>=0.27.0",
|
|
40
26
|
"bitsandbytes>=0.42.0", # For quantization
|
|
41
|
-
"hf_transfer", # Fast downloads
|
|
42
27
|
)
|
|
43
|
-
.env({
|
|
44
|
-
"HF_HUB_ENABLE_HF_TRANSFER": "1",
|
|
45
|
-
"OKB_LLM_MODEL": MODEL_ID,
|
|
46
|
-
"OKB_MODAL_GPU": GPU_TYPE,
|
|
47
|
-
})
|
|
28
|
+
.env({"HF_HUB_ENABLE_HF_TRANSFER": "1"})
|
|
48
29
|
)
|
|
49
30
|
|
|
31
|
+
# Default model - Llama 3.2 3B is fast and good for classification
|
|
32
|
+
DEFAULT_MODEL = "meta-llama/Llama-3.2-3B-Instruct"
|
|
33
|
+
|
|
50
34
|
|
|
51
35
|
@app.cls(
|
|
52
36
|
image=llm_image,
|
|
53
|
-
gpu=
|
|
37
|
+
gpu="T4", # T4 is sufficient for 3B model with quantization
|
|
54
38
|
timeout=300,
|
|
55
39
|
scaledown_window=300, # Keep warm for 5 min
|
|
56
40
|
retries=1,
|
|
@@ -58,16 +42,14 @@ llm_image = (
|
|
|
58
42
|
class LLM:
|
|
59
43
|
"""GPU-accelerated LLM for document classification."""
|
|
60
44
|
|
|
45
|
+
model_id: str = DEFAULT_MODEL
|
|
46
|
+
|
|
61
47
|
@modal.enter()
|
|
62
48
|
def load_model(self):
|
|
63
49
|
"""Load model once when container starts."""
|
|
64
|
-
import os
|
|
65
|
-
|
|
66
50
|
import torch
|
|
67
51
|
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
|
|
68
52
|
|
|
69
|
-
# Read model from environment (set at deploy time)
|
|
70
|
-
self.model_id = os.environ.get("OKB_LLM_MODEL", "microsoft/Phi-3-mini-4k-instruct")
|
|
71
53
|
print(f"Loading model: {self.model_id}")
|
|
72
54
|
|
|
73
55
|
# Use 4-bit quantization for memory efficiency
|
okb/plugins/sources/github.py
CHANGED
|
@@ -95,11 +95,11 @@ class GitHubSource:
|
|
|
95
95
|
token: ${GITHUB_TOKEN}
|
|
96
96
|
|
|
97
97
|
Usage:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
lkb sync run github --repo owner/repo # README + docs/ (default)
|
|
99
|
+
lkb sync run github --repo owner/repo --source # All source files
|
|
100
|
+
lkb sync run github --repo owner/repo --issues # Include issues
|
|
101
|
+
lkb sync run github --repo owner/repo --prs # Include PRs
|
|
102
|
+
lkb sync run github --repo owner/repo --wiki # Include wiki
|
|
103
103
|
"""
|
|
104
104
|
|
|
105
105
|
name = "github"
|
okb/tokens.py
CHANGED
|
@@ -22,7 +22,6 @@ from psycopg.rows import dict_row
|
|
|
22
22
|
class TokenInfo:
|
|
23
23
|
"""Information about a token."""
|
|
24
24
|
|
|
25
|
-
id: int
|
|
26
25
|
token_hash: str
|
|
27
26
|
database: str
|
|
28
27
|
permissions: str # 'ro' or 'rw'
|
|
@@ -144,7 +143,7 @@ def list_tokens(db_url: str) -> list[TokenInfo]:
|
|
|
144
143
|
with psycopg.connect(db_url, row_factory=dict_row) as conn:
|
|
145
144
|
results = conn.execute(
|
|
146
145
|
"""
|
|
147
|
-
SELECT
|
|
146
|
+
SELECT token_hash, permissions, description, created_at, last_used_at
|
|
148
147
|
FROM tokens
|
|
149
148
|
ORDER BY created_at DESC
|
|
150
149
|
"""
|
|
@@ -152,7 +151,6 @@ def list_tokens(db_url: str) -> list[TokenInfo]:
|
|
|
152
151
|
|
|
153
152
|
return [
|
|
154
153
|
TokenInfo(
|
|
155
|
-
id=r["id"],
|
|
156
154
|
token_hash=r["token_hash"],
|
|
157
155
|
database=db_name,
|
|
158
156
|
permissions=r["permissions"],
|
|
@@ -173,7 +171,7 @@ def delete_token(db_url: str, token_or_prefix: str) -> bool:
|
|
|
173
171
|
|
|
174
172
|
Args:
|
|
175
173
|
db_url: Database connection URL
|
|
176
|
-
token_or_prefix: Full token or token prefix (e.g., '
|
|
174
|
+
token_or_prefix: Full token or token prefix (e.g., 'lkb_personal_ro')
|
|
177
175
|
|
|
178
176
|
Returns:
|
|
179
177
|
True if token was deleted, False if not found
|
|
@@ -201,25 +199,6 @@ def delete_token(db_url: str, token_or_prefix: str) -> bool:
|
|
|
201
199
|
return False
|
|
202
200
|
|
|
203
201
|
|
|
204
|
-
def delete_token_by_id(db_url: str, token_id: int) -> bool:
|
|
205
|
-
"""Delete a token by its ID.
|
|
206
|
-
|
|
207
|
-
Args:
|
|
208
|
-
db_url: Database connection URL
|
|
209
|
-
token_id: Token ID from the tokens table
|
|
210
|
-
|
|
211
|
-
Returns:
|
|
212
|
-
True if token was deleted, False if not found
|
|
213
|
-
"""
|
|
214
|
-
with psycopg.connect(db_url) as conn:
|
|
215
|
-
result = conn.execute(
|
|
216
|
-
"DELETE FROM tokens WHERE id = %s RETURNING id",
|
|
217
|
-
(token_id,),
|
|
218
|
-
).fetchone()
|
|
219
|
-
conn.commit()
|
|
220
|
-
return result is not None
|
|
221
|
-
|
|
222
|
-
|
|
223
202
|
def verify_token(token: str, get_db_url_fn) -> TokenInfo | None:
|
|
224
203
|
"""Verify a token and return its info if valid.
|
|
225
204
|
|
|
@@ -246,7 +225,7 @@ def verify_token(token: str, get_db_url_fn) -> TokenInfo | None:
|
|
|
246
225
|
with psycopg.connect(db_url, row_factory=dict_row) as conn:
|
|
247
226
|
result = conn.execute(
|
|
248
227
|
"""
|
|
249
|
-
SELECT
|
|
228
|
+
SELECT token_hash, permissions, description, created_at, last_used_at
|
|
250
229
|
FROM tokens
|
|
251
230
|
WHERE token_hash = %s
|
|
252
231
|
""",
|
|
@@ -264,7 +243,6 @@ def verify_token(token: str, get_db_url_fn) -> TokenInfo | None:
|
|
|
264
243
|
conn.commit()
|
|
265
244
|
|
|
266
245
|
return TokenInfo(
|
|
267
|
-
id=result["id"],
|
|
268
246
|
token_hash=result["token_hash"],
|
|
269
247
|
database=database,
|
|
270
248
|
permissions=result["permissions"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: okb
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.0a0
|
|
4
4
|
Summary: Personal knowledge base with semantic search for LLMs
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -85,8 +85,6 @@ okb ingest ~/notes ~/docs
|
|
|
85
85
|
| `okb db start` | Start pgvector database container |
|
|
86
86
|
| `okb db stop` | Stop database container |
|
|
87
87
|
| `okb db status` | Show database status |
|
|
88
|
-
| `okb db migrate [name]` | Apply pending migrations (optionally for specific db) |
|
|
89
|
-
| `okb db list` | List configured databases |
|
|
90
88
|
| `okb db destroy` | Remove container and volume (destructive) |
|
|
91
89
|
| `okb ingest <paths>` | Ingest documents into knowledge base |
|
|
92
90
|
| `okb ingest <paths> --local` | Ingest using local GPU/CPU embedding (no Modal) |
|
|
@@ -95,11 +93,10 @@ okb ingest ~/notes ~/docs
|
|
|
95
93
|
| `okb watch <paths>` | Watch directories for changes |
|
|
96
94
|
| `okb config init` | Create default config file |
|
|
97
95
|
| `okb config show` | Show current configuration |
|
|
98
|
-
| `okb config path` | Print config file path |
|
|
99
96
|
| `okb modal deploy` | Deploy GPU embedder to Modal |
|
|
100
97
|
| `okb token create` | Create API token for HTTP server |
|
|
101
98
|
| `okb token list` | List tokens for a database |
|
|
102
|
-
| `okb token revoke
|
|
99
|
+
| `okb token revoke` | Revoke an API token |
|
|
103
100
|
| `okb sync list` | List available API sources (plugins) |
|
|
104
101
|
| `okb sync list-projects <source>` | List projects from source (for config) |
|
|
105
102
|
| `okb sync run <sources>` | Sync data from external APIs |
|
|
@@ -111,18 +108,6 @@ okb ingest ~/notes ~/docs
|
|
|
111
108
|
| `okb llm status` | Show LLM config and connectivity |
|
|
112
109
|
| `okb llm deploy` | Deploy Modal LLM for open model inference |
|
|
113
110
|
| `okb llm clear-cache` | Clear LLM response cache |
|
|
114
|
-
| `okb enrich run` | Extract TODOs and entities from documents |
|
|
115
|
-
| `okb enrich run --dry-run` | Show what would be enriched |
|
|
116
|
-
| `okb enrich pending` | List entities awaiting review |
|
|
117
|
-
| `okb enrich approve <id>` | Approve a pending entity |
|
|
118
|
-
| `okb enrich reject <id>` | Reject a pending entity |
|
|
119
|
-
| `okb enrich analyze` | Analyze database and update description/topics |
|
|
120
|
-
| `okb enrich consolidate` | Run entity consolidation (duplicates, clusters) |
|
|
121
|
-
| `okb enrich merge-proposals` | List pending merge proposals |
|
|
122
|
-
| `okb enrich approve-merge <id>` | Approve an entity merge |
|
|
123
|
-
| `okb enrich reject-merge <id>` | Reject an entity merge |
|
|
124
|
-
| `okb enrich clusters` | List topic clusters |
|
|
125
|
-
| `okb enrich relationships` | List entity relationships |
|
|
126
111
|
|
|
127
112
|
|
|
128
113
|
## Configuration
|
|
@@ -157,7 +142,7 @@ chunking:
|
|
|
157
142
|
Use `--db <name>` to target a specific database with any command.
|
|
158
143
|
|
|
159
144
|
Environment variables override config file settings:
|
|
160
|
-
- `
|
|
145
|
+
- `KB_DATABASE_URL` - Database connection string
|
|
161
146
|
- `OKB_DOCKER_PORT` - Docker port mapping
|
|
162
147
|
- `OKB_CONTAINER_NAME` - Docker container name
|
|
163
148
|
|
|
@@ -178,7 +163,7 @@ Merge: scalars replace, lists extend, dicts deep-merge.
|
|
|
178
163
|
|
|
179
164
|
### LLM Integration (Optional)
|
|
180
165
|
|
|
181
|
-
Enable LLM-based document classification
|
|
166
|
+
Enable LLM-based document classification and filtering:
|
|
182
167
|
|
|
183
168
|
```yaml
|
|
184
169
|
llm:
|
|
@@ -194,25 +179,11 @@ llm:
|
|
|
194
179
|
| `claude` | `export ANTHROPIC_API_KEY=...` | ~$0.25/1M tokens |
|
|
195
180
|
| `modal` | `okb llm deploy` | ~$0.02/min GPU |
|
|
196
181
|
|
|
197
|
-
|
|
198
|
-
|
|
182
|
+
For Modal (no API key needed):
|
|
199
183
|
```yaml
|
|
200
184
|
llm:
|
|
201
185
|
provider: modal
|
|
202
|
-
model:
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Non-gated models (work immediately):
|
|
206
|
-
- `microsoft/Phi-3-mini-4k-instruct` - Good quality, 4K context
|
|
207
|
-
- `Qwen/Qwen2-1.5B-Instruct` - Smaller/faster
|
|
208
|
-
|
|
209
|
-
Gated models (require HuggingFace approval + token):
|
|
210
|
-
- `meta-llama/Llama-3.2-3B-Instruct` - Requires accepting license at HuggingFace
|
|
211
|
-
- Setup: `modal secret create huggingface HF_TOKEN=hf_...`
|
|
212
|
-
|
|
213
|
-
Deploy after configuring:
|
|
214
|
-
```bash
|
|
215
|
-
okb llm deploy
|
|
186
|
+
model: meta-llama/Llama-3.2-3B-Instruct
|
|
216
187
|
```
|
|
217
188
|
|
|
218
189
|
**Pre-ingest filtering** - skip low-value content during sync:
|
|
@@ -226,36 +197,6 @@ plugins:
|
|
|
226
197
|
action_on_skip: discard # or "archive"
|
|
227
198
|
```
|
|
228
199
|
|
|
229
|
-
### Document Enrichment
|
|
230
|
-
|
|
231
|
-
Extract TODOs and entities (people, projects, technologies) from documents using LLM:
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
okb enrich run # Enrich un-enriched documents
|
|
235
|
-
okb enrich run --dry-run # Preview what would be enriched
|
|
236
|
-
okb enrich run --source-type markdown # Only markdown files
|
|
237
|
-
okb enrich run --query "meeting" # Filter by semantic search
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
Entities are created as pending suggestions for review:
|
|
241
|
-
```bash
|
|
242
|
-
okb enrich pending # List pending entities
|
|
243
|
-
okb enrich approve <id> # Approve → creates entity document
|
|
244
|
-
okb enrich reject <id> # Reject → hidden from future suggestions
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
Configure enrichment behavior:
|
|
248
|
-
```yaml
|
|
249
|
-
enrichment:
|
|
250
|
-
enabled: true
|
|
251
|
-
extract_todos: true
|
|
252
|
-
extract_entities: true
|
|
253
|
-
auto_create_todos: true # TODOs created immediately
|
|
254
|
-
auto_create_entities: false # Entities go to pending review
|
|
255
|
-
min_confidence_todo: 0.7
|
|
256
|
-
min_confidence_entity: 0.8
|
|
257
|
-
```
|
|
258
|
-
|
|
259
200
|
CLI commands:
|
|
260
201
|
```bash
|
|
261
202
|
okb llm status # Show config and connectivity
|
|
@@ -328,20 +269,6 @@ Then configure Claude Code to connect via SSE:
|
|
|
328
269
|
| `add_todo` | Create a TODO item in the knowledge base |
|
|
329
270
|
| `trigger_sync` | Sync API sources (Todoist, GitHub, Dropbox Paper) |
|
|
330
271
|
| `trigger_rescan` | Check indexed files for changes and re-ingest |
|
|
331
|
-
| `list_sync_sources` | List available API sync sources with status |
|
|
332
|
-
| `enrich_document` | Run LLM enrichment to extract TODOs/entities |
|
|
333
|
-
| `list_pending_entities` | List entities awaiting review |
|
|
334
|
-
| `approve_entity` | Approve a pending entity |
|
|
335
|
-
| `reject_entity` | Reject a pending entity |
|
|
336
|
-
| `analyze_knowledge_base` | Analyze content and generate description/topics |
|
|
337
|
-
| `find_entity_duplicates` | Find potential duplicate entities |
|
|
338
|
-
| `merge_entities` | Merge duplicate entities |
|
|
339
|
-
| `list_pending_merges` | List pending merge proposals |
|
|
340
|
-
| `approve_merge` | Approve a merge proposal |
|
|
341
|
-
| `reject_merge` | Reject a merge proposal |
|
|
342
|
-
| `get_topic_clusters` | Get topic clusters from consolidation |
|
|
343
|
-
| `get_entity_relationships` | Get relationships between entities |
|
|
344
|
-
| `run_consolidation` | Run full entity consolidation pipeline |
|
|
345
272
|
|
|
346
273
|
## Contextual Chunking
|
|
347
274
|
|
|
@@ -364,10 +291,6 @@ project: student-app
|
|
|
364
291
|
category: backend
|
|
365
292
|
---
|
|
366
293
|
|
|
367
|
-
# Your Document Title
|
|
368
|
-
|
|
369
|
-
Content here...
|
|
370
|
-
```
|
|
371
294
|
|
|
372
295
|
## Plugin System
|
|
373
296
|
|
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
okb/__init__.py,sha256=2yaWIYQbho7N2O2zwTn3ZH11b8b3SaoDVlxluVTqwy4,92
|
|
2
|
-
okb/cli.py,sha256=
|
|
3
|
-
okb/config.py,sha256=
|
|
2
|
+
okb/cli.py,sha256=y8Vr9Scy7PyAtgrCb2yIsN3kRvhwUvxpnpiF6RVV_MA,47735
|
|
3
|
+
okb/config.py,sha256=DKmX2fgteGdh0QMsA-Immu-mZcvLjHWeB8HIf9rcM5o,22898
|
|
4
4
|
okb/data/init.sql,sha256=QpsicUN7PQ7d8zyOCRNChOu5XKdUVC3xySlRDPyKSN8,2728
|
|
5
|
-
okb/http_server.py,sha256=
|
|
5
|
+
okb/http_server.py,sha256=jcpNWB1aGtcHE7h0U4gCxA4lZyqWHGgsiArv7DyPSZw,20595
|
|
6
6
|
okb/ingest.py,sha256=D5plxCC2tQXZenMNUa482dUDqsyuaq2APAQqaIgRAqU,54505
|
|
7
7
|
okb/llm/__init__.py,sha256=4jelqgXvF-eEPyLCuAmcxagN0H923wI9pBJJZKv4r0E,2368
|
|
8
|
-
okb/llm/analyze.py,sha256=BKW308AtjWStZcZiMKaRqFmQsuTclp3Qp3W4nsdw4vk,18569
|
|
9
8
|
okb/llm/base.py,sha256=gOm7zBiNdHrj7xxJfpb-4qZdYxWM0lA0vKfrBStO60E,2279
|
|
10
9
|
okb/llm/cache.py,sha256=rxRPMNBtP336MSpGWA8F7rDZnF0O2RM3rEsNtoxS0Zk,6142
|
|
11
|
-
okb/llm/consolidate.py,sha256=TjXBWzzlJrX3_z0CysrFAxclp1K7XGgMb_SI5hdK7Y8,23178
|
|
12
|
-
okb/llm/enrich.py,sha256=Yc09xvXynuiCATK451J5sBQ9lkPPllio8vAPYOEVDFo,23133
|
|
13
|
-
okb/llm/extractors/__init__.py,sha256=8sHgtgtydF4CBFiIOfURYcyunVxK770qp_aMz4jxnFU,317
|
|
14
|
-
okb/llm/extractors/base.py,sha256=p_PIMdUoEw8-C5jG8TcbG73jegE5ovmIGbbbdDrRFVs,1250
|
|
15
|
-
okb/llm/extractors/cross_doc.py,sha256=nw1-nHSHKxGlL95rfHFkStdbzpy4H3eRclyUyn2YE1A,18114
|
|
16
|
-
okb/llm/extractors/dedup.py,sha256=TVDBhNX7rPmpipO2WckAhe_Oj1LmSRPce-EceZ6FdbM,16562
|
|
17
|
-
okb/llm/extractors/entity.py,sha256=woIF5AeXD2dmFDoiOVCPgMUVWQPYHOmg1KE-ZRB3o0E,9925
|
|
18
|
-
okb/llm/extractors/todo.py,sha256=LdAyioQ5fZ-KJC_W_-CAU8OlMvju3Oci7E7aueoTnpI,4345
|
|
19
10
|
okb/llm/filter.py,sha256=y20bc3vHtp5gj7T7AhsJ45ZkAkBgztj6WPjsVAmvEeo,5447
|
|
20
|
-
okb/llm/providers.py,sha256=
|
|
11
|
+
okb/llm/providers.py,sha256=AdVw9FFgv58-KJEfXv9JqWlkxBl-LcRWOao95CsjqWA,9718
|
|
21
12
|
okb/local_embedder.py,sha256=zzjBUFp4IH2xsvKyKjKZyX9dJuE_3PDMHMwpyRYSISQ,2098
|
|
22
|
-
okb/mcp_server.py,sha256=
|
|
13
|
+
okb/mcp_server.py,sha256=BnMxyGf524sK-8CYPyL3ZM_DEqWFsXpF7_66xj3-Ecs,59407
|
|
23
14
|
okb/migrate.py,sha256=2faYL-SHiQCkGXpTUlBFMCj0B-6JYCHqZl9u6vOlui8,1693
|
|
24
15
|
okb/migrations/0001.initial-schema.sql,sha256=0s5pj9Ad6f0u_mxODAM_-DbDI3aI37Wdu5XMPAzAIqw,2577
|
|
25
16
|
okb/migrations/0002.sync-state.sql,sha256=w34dOA9sPg60NMS1aHvOhORff1k_Di9cO2ghwVQSPHU,696
|
|
@@ -27,23 +18,20 @@ okb/migrations/0003.structured-fields.sql,sha256=rPCSrdtotCoRpOfjHf1Ifx0pfizpYS9
|
|
|
27
18
|
okb/migrations/0004.tokens.sql,sha256=VtcLfA1_SVVQLkEKZ-av_93Fg0ksVWLm1tlR7nJXoaQ,448
|
|
28
19
|
okb/migrations/0005.database-metadata.sql,sha256=0X4LyuUUX34s3ph2C70FnBBau5HEBwR4xyY-hwPEX90,709
|
|
29
20
|
okb/migrations/0006.llm-cache.sql,sha256=azjPpj00WH_8tx4JI8PJKZ1AOAJEhbkneVvYa3ZRZ1w,493
|
|
30
|
-
okb/migrations/0008.enrichment.sql,sha256=pkKtyuFgRiPhZ7YAyYr6yihT2R-Tx64hE18iqphqFAw,2160
|
|
31
|
-
okb/migrations/0009.entity-consolidation.sql,sha256=Q2TBHJqMa1fvAqaopa20KdJCIxqldDAeOPGC5YiuzxY,5800
|
|
32
|
-
okb/migrations/0010.token-id.sql,sha256=odFPvY3z63f6Zfx8j5qBj2LobvPafpT2hDi_MwBBf6Q,231
|
|
33
21
|
okb/modal_embedder.py,sha256=V1cpGWrtEo1MGkrD9Nc-5wRmf9e7IwKPsQj7nVuLlyg,3469
|
|
34
|
-
okb/modal_llm.py,sha256=
|
|
22
|
+
okb/modal_llm.py,sha256=4rYE3VZ_T09HXCgTIYFLu1s_C2FRC9y4dgMUGqJuO2M,5368
|
|
35
23
|
okb/plugins/__init__.py,sha256=50LNAH4bvfIw5CHT82sknGjdCldQ-4ds0wxo1zM9E2k,324
|
|
36
24
|
okb/plugins/base.py,sha256=6TIN1UIItmuIsP4NDJhuRMH0ngKkQiGmtHTeYj1K8OU,3171
|
|
37
25
|
okb/plugins/registry.py,sha256=fN7NfoOaRnMyXSWT2srd6vEr4riJjmncQFfberf0IE8,3741
|
|
38
26
|
okb/plugins/sources/__init__.py,sha256=n58rAbcJC45JbofUY6IA526rSRjkYn4_tGjWma3TOUI,214
|
|
39
27
|
okb/plugins/sources/dropbox_paper.py,sha256=Oi59NbJGQrwjE2Xhcinc2InKRc27Gdg7l8xVTbKLkI8,7493
|
|
40
|
-
okb/plugins/sources/github.py,sha256=
|
|
28
|
+
okb/plugins/sources/github.py,sha256=ozdTZPkU8h2-ZIx5o1FB58QBZ6P0eoVntluWL3vG87I,16309
|
|
41
29
|
okb/plugins/sources/todoist.py,sha256=B22tKYFZhuDhZHhpRdGWDGho9y7FBNgGlI1g2nf13-8,8849
|
|
42
30
|
okb/rescan.py,sha256=dVdQEkVUjsrtOKAGZc0LC2uwcnkjB8hn2SOVWHnY-R8,8396
|
|
43
31
|
okb/scripts/__init__.py,sha256=HPp8YCtIeo9XMOtOGCtntiwYr9eCxAJ1MF9Lo9WVzUA,53
|
|
44
32
|
okb/scripts/watch.py,sha256=b8oGPTN3flNdNQJETeqQ1RNZ8U1LiKvHntLwvHRIviA,6354
|
|
45
|
-
okb/tokens.py,sha256=
|
|
46
|
-
okb-1.1.
|
|
47
|
-
okb-1.1.
|
|
48
|
-
okb-1.1.
|
|
49
|
-
okb-1.1.
|
|
33
|
+
okb/tokens.py,sha256=JJ1C-mvtnT2O0cmjSu57PI9Nt53Sl9DqbmPuLnHlN6g,8043
|
|
34
|
+
okb-1.1.0a0.dist-info/METADATA,sha256=IhNkQv-lucqtYIaXcNfxkKFkSD5Avo3Vy5buDbXHELo,10578
|
|
35
|
+
okb-1.1.0a0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
36
|
+
okb-1.1.0a0.dist-info/entry_points.txt,sha256=YX6b8BlV9sSAXrneoIm3dkXtRcgHhSzbDaOpJ0yCKRs,230
|
|
37
|
+
okb-1.1.0a0.dist-info/RECORD,,
|