hindsight-api 0.1.11__py3-none-any.whl → 0.1.13__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.
- hindsight_api/__init__.py +2 -0
- hindsight_api/alembic/env.py +24 -1
- hindsight_api/alembic/versions/d9f6a3b4c5e2_rename_bank_to_interactions.py +14 -4
- hindsight_api/alembic/versions/e0a1b2c3d4e5_disposition_to_3_traits.py +54 -13
- hindsight_api/alembic/versions/rename_personality_to_disposition.py +18 -7
- hindsight_api/api/http.py +253 -230
- hindsight_api/api/mcp.py +14 -3
- hindsight_api/config.py +11 -0
- hindsight_api/daemon.py +204 -0
- hindsight_api/engine/__init__.py +12 -1
- hindsight_api/engine/entity_resolver.py +38 -37
- hindsight_api/engine/interface.py +592 -0
- hindsight_api/engine/llm_wrapper.py +176 -6
- hindsight_api/engine/memory_engine.py +1092 -293
- hindsight_api/engine/retain/bank_utils.py +13 -12
- hindsight_api/engine/retain/chunk_storage.py +3 -2
- hindsight_api/engine/retain/fact_storage.py +10 -7
- hindsight_api/engine/retain/link_utils.py +17 -16
- hindsight_api/engine/retain/observation_regeneration.py +17 -16
- hindsight_api/engine/retain/orchestrator.py +2 -3
- hindsight_api/engine/retain/types.py +25 -8
- hindsight_api/engine/search/graph_retrieval.py +6 -5
- hindsight_api/engine/search/mpfp_retrieval.py +8 -7
- hindsight_api/engine/search/reranking.py +17 -0
- hindsight_api/engine/search/retrieval.py +12 -11
- hindsight_api/engine/search/think_utils.py +1 -1
- hindsight_api/engine/search/tracer.py +1 -1
- hindsight_api/engine/task_backend.py +32 -0
- hindsight_api/extensions/__init__.py +66 -0
- hindsight_api/extensions/base.py +81 -0
- hindsight_api/extensions/builtin/__init__.py +18 -0
- hindsight_api/extensions/builtin/tenant.py +33 -0
- hindsight_api/extensions/context.py +110 -0
- hindsight_api/extensions/http.py +89 -0
- hindsight_api/extensions/loader.py +125 -0
- hindsight_api/extensions/operation_validator.py +325 -0
- hindsight_api/extensions/tenant.py +63 -0
- hindsight_api/main.py +97 -17
- hindsight_api/mcp_local.py +7 -1
- hindsight_api/migrations.py +54 -10
- hindsight_api/models.py +15 -0
- hindsight_api/pg0.py +1 -1
- {hindsight_api-0.1.11.dist-info → hindsight_api-0.1.13.dist-info}/METADATA +1 -1
- hindsight_api-0.1.13.dist-info/RECORD +75 -0
- hindsight_api-0.1.11.dist-info/RECORD +0 -64
- {hindsight_api-0.1.11.dist-info → hindsight_api-0.1.13.dist-info}/WHEEL +0 -0
- {hindsight_api-0.1.11.dist-info → hindsight_api-0.1.13.dist-info}/entry_points.txt +0 -0
hindsight_api/migrations.py
CHANGED
|
@@ -6,12 +6,16 @@ on application startup. It is designed to be safe for concurrent
|
|
|
6
6
|
execution using PostgreSQL advisory locks to coordinate between
|
|
7
7
|
distributed workers.
|
|
8
8
|
|
|
9
|
+
Supports multi-tenant schema isolation: migrations can target a specific
|
|
10
|
+
PostgreSQL schema, allowing each tenant to have isolated tables.
|
|
11
|
+
|
|
9
12
|
Important: All migrations must be backward-compatible to allow
|
|
10
13
|
safe rolling deployments.
|
|
11
14
|
|
|
12
15
|
No alembic.ini required - all configuration is done programmatically.
|
|
13
16
|
"""
|
|
14
17
|
|
|
18
|
+
import hashlib
|
|
15
19
|
import logging
|
|
16
20
|
import os
|
|
17
21
|
from pathlib import Path
|
|
@@ -26,11 +30,29 @@ logger = logging.getLogger(__name__)
|
|
|
26
30
|
MIGRATION_LOCK_ID = 123456789
|
|
27
31
|
|
|
28
32
|
|
|
29
|
-
def
|
|
33
|
+
def _get_schema_lock_id(schema: str) -> int:
|
|
34
|
+
"""
|
|
35
|
+
Generate a unique advisory lock ID for a schema.
|
|
36
|
+
|
|
37
|
+
Uses hash of schema name to create a deterministic lock ID.
|
|
38
|
+
"""
|
|
39
|
+
# Use hash to create a unique lock ID per schema
|
|
40
|
+
# Keep within PostgreSQL's bigint range
|
|
41
|
+
hash_bytes = hashlib.sha256(schema.encode()).digest()[:8]
|
|
42
|
+
return int.from_bytes(hash_bytes, byteorder="big") % (2**31)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _run_migrations_internal(database_url: str, script_location: str, schema: str | None = None) -> None:
|
|
30
46
|
"""
|
|
31
47
|
Internal function to run migrations without locking.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
database_url: SQLAlchemy database URL
|
|
51
|
+
script_location: Path to alembic scripts
|
|
52
|
+
schema: Target schema (None for default/public)
|
|
32
53
|
"""
|
|
33
|
-
|
|
54
|
+
schema_name = schema or "public"
|
|
55
|
+
logger.info(f"Running database migrations to head for schema '{schema_name}'...")
|
|
34
56
|
logger.info(f"Database URL: {database_url}")
|
|
35
57
|
logger.info(f"Script location: {script_location}")
|
|
36
58
|
|
|
@@ -50,13 +72,22 @@ def _run_migrations_internal(database_url: str, script_location: str) -> None:
|
|
|
50
72
|
# Set path_separator to avoid deprecation warning
|
|
51
73
|
alembic_cfg.set_main_option("path_separator", "os")
|
|
52
74
|
|
|
53
|
-
#
|
|
75
|
+
# If targeting a specific schema, pass it to env.py via config
|
|
76
|
+
# env.py will handle setting search_path and version_table_schema
|
|
77
|
+
if schema:
|
|
78
|
+
alembic_cfg.set_main_option("target_schema", schema)
|
|
79
|
+
|
|
80
|
+
# Run migrations
|
|
54
81
|
command.upgrade(alembic_cfg, "head")
|
|
55
82
|
|
|
56
|
-
logger.info("Database migrations completed successfully")
|
|
83
|
+
logger.info(f"Database migrations completed successfully for schema '{schema_name}'")
|
|
57
84
|
|
|
58
85
|
|
|
59
|
-
def run_migrations(
|
|
86
|
+
def run_migrations(
|
|
87
|
+
database_url: str,
|
|
88
|
+
script_location: str | None = None,
|
|
89
|
+
schema: str | None = None,
|
|
90
|
+
) -> None:
|
|
60
91
|
"""
|
|
61
92
|
Run database migrations to the latest version using programmatic Alembic configuration.
|
|
62
93
|
|
|
@@ -65,19 +96,28 @@ def run_migrations(database_url: str, script_location: str | None = None) -> Non
|
|
|
65
96
|
- Other workers wait for the lock, then verify migrations are complete
|
|
66
97
|
- If schema is already up-to-date, this is a fast no-op
|
|
67
98
|
|
|
99
|
+
Supports multi-tenant schema isolation: when a schema is specified, migrations
|
|
100
|
+
run in that schema instead of public. This allows tenant extensions to provision
|
|
101
|
+
new tenant schemas with their own isolated tables.
|
|
102
|
+
|
|
68
103
|
Args:
|
|
69
104
|
database_url: SQLAlchemy database URL (e.g., "postgresql://user:pass@host/db")
|
|
70
105
|
script_location: Path to alembic migrations directory (e.g., "/path/to/alembic").
|
|
71
106
|
If None, defaults to hindsight-api/alembic directory.
|
|
107
|
+
schema: Target PostgreSQL schema name. If None, uses default (public).
|
|
108
|
+
When specified, creates the schema if needed and runs migrations there.
|
|
72
109
|
|
|
73
110
|
Raises:
|
|
74
111
|
RuntimeError: If migrations fail to complete
|
|
75
112
|
FileNotFoundError: If script_location doesn't exist
|
|
76
113
|
|
|
77
114
|
Example:
|
|
78
|
-
# Using default location
|
|
115
|
+
# Using default location and public schema
|
|
79
116
|
run_migrations("postgresql://user:pass@host/db")
|
|
80
117
|
|
|
118
|
+
# Run migrations for a specific tenant schema
|
|
119
|
+
run_migrations("postgresql://user:pass@host/db", schema="tenant_acme")
|
|
120
|
+
|
|
81
121
|
# Using custom location (when importing from another project)
|
|
82
122
|
run_migrations(
|
|
83
123
|
"postgresql://user:pass@host/db",
|
|
@@ -99,21 +139,25 @@ def run_migrations(database_url: str, script_location: str | None = None) -> Non
|
|
|
99
139
|
f"Alembic script location not found at {script_location}. Database migrations cannot be run."
|
|
100
140
|
)
|
|
101
141
|
|
|
142
|
+
# Use schema-specific lock ID for multi-tenant isolation
|
|
143
|
+
lock_id = _get_schema_lock_id(schema) if schema else MIGRATION_LOCK_ID
|
|
144
|
+
schema_name = schema or "public"
|
|
145
|
+
|
|
102
146
|
# Use PostgreSQL advisory lock to coordinate between distributed workers
|
|
103
147
|
engine = create_engine(database_url)
|
|
104
148
|
with engine.connect() as conn:
|
|
105
149
|
# pg_advisory_lock blocks until the lock is acquired
|
|
106
150
|
# The lock is automatically released when the connection closes
|
|
107
|
-
logger.debug(f"Acquiring migration advisory lock (id={
|
|
108
|
-
conn.execute(text(f"SELECT pg_advisory_lock({
|
|
151
|
+
logger.debug(f"Acquiring migration advisory lock for schema '{schema_name}' (id={lock_id})...")
|
|
152
|
+
conn.execute(text(f"SELECT pg_advisory_lock({lock_id})"))
|
|
109
153
|
logger.debug("Migration advisory lock acquired")
|
|
110
154
|
|
|
111
155
|
try:
|
|
112
156
|
# Run migrations while holding the lock
|
|
113
|
-
_run_migrations_internal(database_url, script_location)
|
|
157
|
+
_run_migrations_internal(database_url, script_location, schema=schema)
|
|
114
158
|
finally:
|
|
115
159
|
# Explicitly release the lock (also released on connection close)
|
|
116
|
-
conn.execute(text(f"SELECT pg_advisory_unlock({
|
|
160
|
+
conn.execute(text(f"SELECT pg_advisory_unlock({lock_id})"))
|
|
117
161
|
logger.debug("Migration advisory lock released")
|
|
118
162
|
|
|
119
163
|
except FileNotFoundError:
|
hindsight_api/models.py
CHANGED
|
@@ -2,9 +2,24 @@
|
|
|
2
2
|
SQLAlchemy models for the memory system.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
from dataclasses import dataclass
|
|
5
6
|
from datetime import datetime
|
|
6
7
|
from uuid import UUID as PyUUID
|
|
7
8
|
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class RequestContext:
|
|
12
|
+
"""
|
|
13
|
+
Context for request authentication and authorization.
|
|
14
|
+
|
|
15
|
+
This dataclass carries authentication data from HTTP requests to the
|
|
16
|
+
memory engine operations. It can be extended to include additional
|
|
17
|
+
context like headers, tokens, user info, etc.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
api_key: str | None = None
|
|
21
|
+
|
|
22
|
+
|
|
8
23
|
from pgvector.sqlalchemy import Vector
|
|
9
24
|
from sqlalchemy import (
|
|
10
25
|
CheckConstraint,
|
hindsight_api/pg0.py
CHANGED
|
@@ -40,7 +40,7 @@ class EmbeddedPostgres:
|
|
|
40
40
|
# Only set port if explicitly specified
|
|
41
41
|
if self.port is not None:
|
|
42
42
|
kwargs["port"] = self.port
|
|
43
|
-
self._pg0 = Pg0(**kwargs)
|
|
43
|
+
self._pg0 = Pg0(**kwargs) # type: ignore[invalid-argument-type] - dict kwargs
|
|
44
44
|
return self._pg0
|
|
45
45
|
|
|
46
46
|
async def start(self, max_retries: int = 5, retry_delay: float = 4.0) -> str:
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
hindsight_api/__init__.py,sha256=lPhgtKMvT8qjORFKWlhlq-LVdwesIu0gbUYNPZQEFiI,1197
|
|
2
|
+
hindsight_api/banner.py,sha256=BXn-jhkXe4xi-YV4JeuaVvjYhTMs96O43XoOMv4Cd28,4591
|
|
3
|
+
hindsight_api/config.py,sha256=9li81n7Ugiefzr4q2A0w6V6JhwrFkUaIa6yXMetIvas,6919
|
|
4
|
+
hindsight_api/daemon.py,sha256=3CKcO_ENQ57dIWrTsmYUj-V4zvoAB1toNtVh3EVkg-c,5982
|
|
5
|
+
hindsight_api/main.py,sha256=7AFOaZIx7Rm86BCQGZnEniDCh0BhKg2_ggMS4qUvuTc,8636
|
|
6
|
+
hindsight_api/mcp_local.py,sha256=fL2hpwQSNExcjIwZn1E5vy5No6iZFmw78yRNXxJzri0,7371
|
|
7
|
+
hindsight_api/metrics.py,sha256=sQI5MhC2xj9ONZ6Hdjf6r6r3NbYYd3ExyVOn1Uky49A,7239
|
|
8
|
+
hindsight_api/migrations.py,sha256=X5jYkrDhbeFzXOUoPRvPzkGHQsjlZ7oz_P71UI82VT4,9104
|
|
9
|
+
hindsight_api/models.py,sha256=LvOpCfuDjnVH-dEzOSolCOZnkoPiOZP_J9HK82sD1_0,12700
|
|
10
|
+
hindsight_api/pg0.py,sha256=SEIwYq8xp0s0YbV3CIy_ioZ5-Bfe8_rxdeP0YasAeXk,4677
|
|
11
|
+
hindsight_api/server.py,sha256=OrSd0G-79U07EXFc838c1vzUL-1O6wuxTMqUmMINpGY,1247
|
|
12
|
+
hindsight_api/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
|
13
|
+
hindsight_api/alembic/env.py,sha256=I4sGdtUo8xcXe95MyD36JQeMod_Bvp9JUkW64Ve4XSM,5808
|
|
14
|
+
hindsight_api/alembic/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
|
|
15
|
+
hindsight_api/alembic/versions/5a366d414dce_initial_schema.py,sha256=g3G7fV70Z10PZxwTrTmR34OAlEZjQTLJKr-Ol54JqrQ,17665
|
|
16
|
+
hindsight_api/alembic/versions/b7c4d8e9f1a2_add_chunks_table.py,sha256=MaHFU4JczUIFLeUMBTKIV3ocuclil55N9fPPim-HRfk,2599
|
|
17
|
+
hindsight_api/alembic/versions/c8e5f2a3b4d1_add_retain_params_to_documents.py,sha256=ChqkHANauZb4-nBt2uepoZN3q0vRzN6aRsWTGueULiA,1146
|
|
18
|
+
hindsight_api/alembic/versions/d9f6a3b4c5e2_rename_bank_to_interactions.py,sha256=s5_B2D0JdaxO7WM-vWC5Yt6hAtTsAUzJhFGLFSkfuQU,1808
|
|
19
|
+
hindsight_api/alembic/versions/e0a1b2c3d4e5_disposition_to_3_traits.py,sha256=IdDP6fgsYj5fCXAF0QT-3t_wcKJsnf7B0mh7qS-cf_w,3806
|
|
20
|
+
hindsight_api/alembic/versions/rename_personality_to_disposition.py,sha256=A29-nDJ2Re4u9jdp2sUw29It808j4h6BpcA4wDHJMJ8,2765
|
|
21
|
+
hindsight_api/api/__init__.py,sha256=zoDWA86ttx-UriC35UIgdPswIrau7GuMWTN63wYsUdM,2916
|
|
22
|
+
hindsight_api/api/http.py,sha256=tUoJVu-3YcFijhsp1xDfndWYX1JdaZwT0wqmimtwFtw,72263
|
|
23
|
+
hindsight_api/api/mcp.py,sha256=Iowo3ourjWx7ZqLiCwF9nvjMAJpRceBprF5cgn5M6fs,7853
|
|
24
|
+
hindsight_api/engine/__init__.py,sha256=-BwaSwG9fTT_BBO0c_2MBkxG6-tGdclSzIqsgHw4cnw,1633
|
|
25
|
+
hindsight_api/engine/cross_encoder.py,sha256=5WmUx9yfJdIwZ0nA218O-mMKQJ7EKaPOtwhMiDbG8KQ,10483
|
|
26
|
+
hindsight_api/engine/db_utils.py,sha256=0T5tL2SZ49JQihfyZYlTDThIfocKzkr1OpxQpJzPCGE,2687
|
|
27
|
+
hindsight_api/engine/embeddings.py,sha256=IEdP5-p6oTJRRKV2JzUEojByJGShUEmkInCyA9wM8tg,10219
|
|
28
|
+
hindsight_api/engine/entity_resolver.py,sha256=f-fbUDKCrM9a5Sz10J0rW3jV7dib7BmpyGyassspKXg,23510
|
|
29
|
+
hindsight_api/engine/interface.py,sha256=F6BgnjloH7EgL9_D2NpPuabR_zR-h_iEJBQ0ERC2P58,16090
|
|
30
|
+
hindsight_api/engine/llm_wrapper.py,sha256=nLdVAk2xtkbwxLFMQNmEU-JmHucdtQoh3ph0BWX4sDc,29140
|
|
31
|
+
hindsight_api/engine/memory_engine.py,sha256=cmuvj-EjTNbJaCp7UyM2eI8O8k3w6fTMLnngrgbHK94,166805
|
|
32
|
+
hindsight_api/engine/query_analyzer.py,sha256=DKFxmyyVVc59zwKbbGx4D22UVp6TxmD7jAa7cg9FGSU,19641
|
|
33
|
+
hindsight_api/engine/response_models.py,sha256=QeESHC7oh84SYPDrR6FqHjiGBZnTAzo61IDB-qwVTSY,8737
|
|
34
|
+
hindsight_api/engine/task_backend.py,sha256=txtcMUzHW1MigDCW7XsVZc5zqvM9FbR_xF_c9BKokBk,8054
|
|
35
|
+
hindsight_api/engine/utils.py,sha256=TwuipFRvN0Pu196JLakzQ71E3GAwySc5q6pByC81Ak4,6991
|
|
36
|
+
hindsight_api/engine/retain/__init__.py,sha256=t6q3-_kf4iYTl9j2PVB6laqMSs6UuPeXBSYMW6HT1sA,1152
|
|
37
|
+
hindsight_api/engine/retain/bank_utils.py,sha256=JjrTE-bixHZKaUyl4uPQ6FV9O7hMOOEijXUnqXhOB5g,14097
|
|
38
|
+
hindsight_api/engine/retain/chunk_storage.py,sha256=zXAqbcFeYpjyWlOoi8zeK5G91zHpF75CUVF-6wsEJpU,2064
|
|
39
|
+
hindsight_api/engine/retain/deduplication.py,sha256=kqs7I7eIc_ppvgAF9GlzL6fSGuEEzrgw17-7NdyUDis,3099
|
|
40
|
+
hindsight_api/engine/retain/embedding_processing.py,sha256=R35oyKYIKjuqC-yZl5Ru56F8xRe0N6KW_9p5PZ9CBi0,1649
|
|
41
|
+
hindsight_api/engine/retain/embedding_utils.py,sha256=uulXIBiA7XNsj16K1VGawR3s5jV-hsAmvmoCi-IodpU,1565
|
|
42
|
+
hindsight_api/engine/retain/entity_processing.py,sha256=5EYzyH_JjbhYQ0zQ8gX6xs0wCH6vmxMYUe6_qVJdvQA,2547
|
|
43
|
+
hindsight_api/engine/retain/fact_extraction.py,sha256=E9AswSrqx3X74gj5-qstbm2wqPv4kUMddkdn5yExKvI,50166
|
|
44
|
+
hindsight_api/engine/retain/fact_storage.py,sha256=zhIiccW1D4wkgnZMFcbxDeMeHy5v4JGKfEPBIFNLch4,5632
|
|
45
|
+
hindsight_api/engine/retain/link_creation.py,sha256=KP2kGU2VCymJptgw0hjaSdsjvncBgNp3P_A4OB_qx-w,3082
|
|
46
|
+
hindsight_api/engine/retain/link_utils.py,sha256=w8n_pPzs_rd3EMkb7nv4k_qSZttAKDig93hSSjl-Xbc,32854
|
|
47
|
+
hindsight_api/engine/retain/observation_regeneration.py,sha256=qE1-iSyH0lh5Zab1XIwSQSpxEArdOJOAC_yJY5iHLMQ,8143
|
|
48
|
+
hindsight_api/engine/retain/orchestrator.py,sha256=TY_xk-DbqvXs1KCV41jj8u7ba6WvI2yVeMv_Xq9fBY8,17620
|
|
49
|
+
hindsight_api/engine/retain/types.py,sha256=UzCXauLrMD26g5oZK3_oQ-gTaSSsd-Ttjh17le64HH4,6898
|
|
50
|
+
hindsight_api/engine/search/__init__.py,sha256=YPz_4g7IOabx078Xwg3RBfbOpJ649NRwNfe0gTI9P1U,802
|
|
51
|
+
hindsight_api/engine/search/fusion.py,sha256=cY81BH9U5RyWrPXbQnrDBghtelDMckZWCke9aqMyNnQ,4220
|
|
52
|
+
hindsight_api/engine/search/graph_retrieval.py,sha256=KV1LK_y8R_x4dYwikbZaJTVGPp7kXcrCy0IswaXCD4g,8625
|
|
53
|
+
hindsight_api/engine/search/mpfp_retrieval.py,sha256=mgUgHTj1uhjFWaz5vvqffyJPon01WgGjLq0A_gTWszw,13945
|
|
54
|
+
hindsight_api/engine/search/observation_utils.py,sha256=rlvGA4oFomMZNCZiJvPIQ0iwGaq9XqhRM530unqziCE,4243
|
|
55
|
+
hindsight_api/engine/search/reranking.py,sha256=P4jBDLwh5ZhXCwxMuh74VodYLngtx2X75MXXOIMm19A,3917
|
|
56
|
+
hindsight_api/engine/search/retrieval.py,sha256=BfEYbVC3I9dMBKXzDOfcRaS3r2hKCIO9wg5POP-GXSo,25316
|
|
57
|
+
hindsight_api/engine/search/scoring.py,sha256=7jbBtdnow7JU0d8xdW-ZqYvP4s-TYX2tqPhu2DiqHUI,5132
|
|
58
|
+
hindsight_api/engine/search/temporal_extraction.py,sha256=j7hPqpx2jMdR2BqgFrL-rrV2Hzq8HV24MtjYLJqVl2U,1732
|
|
59
|
+
hindsight_api/engine/search/think_utils.py,sha256=9YAmM_GTSiGns08n6xL8eYW4fZnwm_2xwn5FX6g9xaI,13907
|
|
60
|
+
hindsight_api/engine/search/trace.py,sha256=UTCmNRfAvIvDFGm5ifkuUk6JOKYrLlA_rPA72Zz_DfI,11217
|
|
61
|
+
hindsight_api/engine/search/tracer.py,sha256=hjm8fEESqJnOhsQwmwmvO1gthIO87WC3Pd-iiLPCIEc,15466
|
|
62
|
+
hindsight_api/engine/search/types.py,sha256=2cK-5oynPTWc7UxnA7TFnwzNkcujCfOUvVf5VCk_srM,5594
|
|
63
|
+
hindsight_api/extensions/__init__.py,sha256=gt8RxBwz6JOjbwbPPJ1LGE7ugk1nYkEAlD-LN1ap7FE,1926
|
|
64
|
+
hindsight_api/extensions/base.py,sha256=M7zXuM-tbqDnUwXX1mxAxiFs1eXOzNqIJutKLiUE4mU,2357
|
|
65
|
+
hindsight_api/extensions/context.py,sha256=NXXoBd6Z_nhYWFHgzl6oxrWM_VfPvY99erYLrHR24CE,3640
|
|
66
|
+
hindsight_api/extensions/http.py,sha256=c-a1g6R6rzibyReyR-WHz8DjRRGr4rVSyV9KB4UxVVU,2907
|
|
67
|
+
hindsight_api/extensions/loader.py,sha256=UwGM0XH7zHGng_xfHUY0VbOQemj9DmjuDaMst1TrFi8,4170
|
|
68
|
+
hindsight_api/extensions/operation_validator.py,sha256=zQPD8pTMJJxQjpByxa4JxvGgD5i3A4PBaK9Z1BizL7o,10536
|
|
69
|
+
hindsight_api/extensions/tenant.py,sha256=gvngBMn3cJtUfd4P0P_288faNJq00T8zPQkeldEsD3g,1903
|
|
70
|
+
hindsight_api/extensions/builtin/__init__.py,sha256=hLx2oFYZ1JtZhTWfab6AYcR02SWP2gIdbEqnZezT8ek,526
|
|
71
|
+
hindsight_api/extensions/builtin/tenant.py,sha256=lsS0GDEUXmfPBzqhqk2FpN4Z_k5cA3Y3PFNYyiiuZjU,1444
|
|
72
|
+
hindsight_api-0.1.13.dist-info/METADATA,sha256=_rFN2zLp2BI4B1HvSP775qX0jiN-kmlAkobVy1MQU_M,5408
|
|
73
|
+
hindsight_api-0.1.13.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
74
|
+
hindsight_api-0.1.13.dist-info/entry_points.txt,sha256=vqZv5WLHbSx8vyec5RtMlUqtE_ul7DTgEVODSmou6Og,109
|
|
75
|
+
hindsight_api-0.1.13.dist-info/RECORD,,
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
hindsight_api/__init__.py,sha256=paLZxYov7BBgbOSl1RTNtFYvqHXlZTzTEDygR3kAFLc,1140
|
|
2
|
-
hindsight_api/banner.py,sha256=BXn-jhkXe4xi-YV4JeuaVvjYhTMs96O43XoOMv4Cd28,4591
|
|
3
|
-
hindsight_api/config.py,sha256=rqK0tNUcT-ddX8XRpsGx6x1sHVGusLW3m5OEdQz9sLs,6484
|
|
4
|
-
hindsight_api/main.py,sha256=8qAtXPNdj7HMbxscpbe-QSnF7Lfd7lB6I8sjEsTDh80,6046
|
|
5
|
-
hindsight_api/mcp_local.py,sha256=XifiH1AzLbm-XkZrK31FqNF8kYzvONibAHTkIY8Xb8g,7156
|
|
6
|
-
hindsight_api/metrics.py,sha256=sQI5MhC2xj9ONZ6Hdjf6r6r3NbYYd3ExyVOn1Uky49A,7239
|
|
7
|
-
hindsight_api/migrations.py,sha256=bN9ejR3cn7EAP3LFkpAjnWsUm9kykgzbzqeCB9HMPvA,7315
|
|
8
|
-
hindsight_api/models.py,sha256=vLFkxykmK8KOoN_sQz4SsiJS6vqOjFIv_82BuKg8qD8,12329
|
|
9
|
-
hindsight_api/pg0.py,sha256=y8EE3v1q2OUJbsSHl-hG_sPZEIWQrgkxrGcf-kuEECE,4624
|
|
10
|
-
hindsight_api/server.py,sha256=OrSd0G-79U07EXFc838c1vzUL-1O6wuxTMqUmMINpGY,1247
|
|
11
|
-
hindsight_api/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
|
12
|
-
hindsight_api/alembic/env.py,sha256=x5MoBxdfRunSve1zARCOZ8KZDg2M3-NYrjJsR1hePg4,4753
|
|
13
|
-
hindsight_api/alembic/script.py.mako,sha256=04kgeBtNMa4cCnG8CfQcKt6P6rnloIfj8wy0u_DBydM,704
|
|
14
|
-
hindsight_api/alembic/versions/5a366d414dce_initial_schema.py,sha256=g3G7fV70Z10PZxwTrTmR34OAlEZjQTLJKr-Ol54JqrQ,17665
|
|
15
|
-
hindsight_api/alembic/versions/b7c4d8e9f1a2_add_chunks_table.py,sha256=MaHFU4JczUIFLeUMBTKIV3ocuclil55N9fPPim-HRfk,2599
|
|
16
|
-
hindsight_api/alembic/versions/c8e5f2a3b4d1_add_retain_params_to_documents.py,sha256=ChqkHANauZb4-nBt2uepoZN3q0vRzN6aRsWTGueULiA,1146
|
|
17
|
-
hindsight_api/alembic/versions/d9f6a3b4c5e2_rename_bank_to_interactions.py,sha256=28KBE6mAAj2PEXm0iALJOiMcjn4eTx_X5nUPaJ1aRYk,1480
|
|
18
|
-
hindsight_api/alembic/versions/e0a1b2c3d4e5_disposition_to_3_traits.py,sha256=LLj0Tl6Kjw5uZPo7lCcG2IH8lFSPEmc9jG_riMF3Bj0,2370
|
|
19
|
-
hindsight_api/alembic/versions/rename_personality_to_disposition.py,sha256=gpMSG8hdvqn9__lGgS0EE2de1nki1YAaCEI3pDdJRzA,2281
|
|
20
|
-
hindsight_api/api/__init__.py,sha256=zoDWA86ttx-UriC35UIgdPswIrau7GuMWTN63wYsUdM,2916
|
|
21
|
-
hindsight_api/api/http.py,sha256=fuPpqrfDSEUygP21RWT4bzJF2HBttagR1lrFNfJgyIU,71208
|
|
22
|
-
hindsight_api/api/mcp.py,sha256=I9C_jUz6d7efMstBfOyoqnnsB94JU6c2mMk6eQ_KDz0,7462
|
|
23
|
-
hindsight_api/engine/__init__.py,sha256=z6srTnyvGQM0eya7E8r2yagTAc4C7IhHauUK8NM-gW8,1406
|
|
24
|
-
hindsight_api/engine/cross_encoder.py,sha256=5WmUx9yfJdIwZ0nA218O-mMKQJ7EKaPOtwhMiDbG8KQ,10483
|
|
25
|
-
hindsight_api/engine/db_utils.py,sha256=0T5tL2SZ49JQihfyZYlTDThIfocKzkr1OpxQpJzPCGE,2687
|
|
26
|
-
hindsight_api/engine/embeddings.py,sha256=IEdP5-p6oTJRRKV2JzUEojByJGShUEmkInCyA9wM8tg,10219
|
|
27
|
-
hindsight_api/engine/entity_resolver.py,sha256=XHAViwIaEXMUhp9Eifvx0b3MZ4QwiFvH_k_ZHTwczxE,23151
|
|
28
|
-
hindsight_api/engine/llm_wrapper.py,sha256=y7mgWSdCS_qJ6GtSgDc2B903MgePdckmm5czFGp5gZg,21041
|
|
29
|
-
hindsight_api/engine/memory_engine.py,sha256=4EQft1qcUieYPK913gsfInAyghqhk-9XZ77bUJ72cbM,136032
|
|
30
|
-
hindsight_api/engine/query_analyzer.py,sha256=DKFxmyyVVc59zwKbbGx4D22UVp6TxmD7jAa7cg9FGSU,19641
|
|
31
|
-
hindsight_api/engine/response_models.py,sha256=QeESHC7oh84SYPDrR6FqHjiGBZnTAzo61IDB-qwVTSY,8737
|
|
32
|
-
hindsight_api/engine/task_backend.py,sha256=XT0C-QFWfdcOHJjplkoarlnwvz-kCF2l6wAGW1dTJkw,7144
|
|
33
|
-
hindsight_api/engine/utils.py,sha256=TwuipFRvN0Pu196JLakzQ71E3GAwySc5q6pByC81Ak4,6991
|
|
34
|
-
hindsight_api/engine/retain/__init__.py,sha256=t6q3-_kf4iYTl9j2PVB6laqMSs6UuPeXBSYMW6HT1sA,1152
|
|
35
|
-
hindsight_api/engine/retain/bank_utils.py,sha256=-Q_GW_F1rmT6Twxgk7aLPmfintLp6TQhC5xT0i5hZzg,13970
|
|
36
|
-
hindsight_api/engine/retain/chunk_storage.py,sha256=yIofSL6RwMOIBR_xo1sTOUdkYQoRZBfjdqYuH-dj1EY,2012
|
|
37
|
-
hindsight_api/engine/retain/deduplication.py,sha256=kqs7I7eIc_ppvgAF9GlzL6fSGuEEzrgw17-7NdyUDis,3099
|
|
38
|
-
hindsight_api/engine/retain/embedding_processing.py,sha256=R35oyKYIKjuqC-yZl5Ru56F8xRe0N6KW_9p5PZ9CBi0,1649
|
|
39
|
-
hindsight_api/engine/retain/embedding_utils.py,sha256=uulXIBiA7XNsj16K1VGawR3s5jV-hsAmvmoCi-IodpU,1565
|
|
40
|
-
hindsight_api/engine/retain/entity_processing.py,sha256=5EYzyH_JjbhYQ0zQ8gX6xs0wCH6vmxMYUe6_qVJdvQA,2547
|
|
41
|
-
hindsight_api/engine/retain/fact_extraction.py,sha256=E9AswSrqx3X74gj5-qstbm2wqPv4kUMddkdn5yExKvI,50166
|
|
42
|
-
hindsight_api/engine/retain/fact_storage.py,sha256=SmWbdNTrOJW6MOHGOQ094f5DJSqasYp6yXGuxjh4_IA,5513
|
|
43
|
-
hindsight_api/engine/retain/link_creation.py,sha256=KP2kGU2VCymJptgw0hjaSdsjvncBgNp3P_A4OB_qx-w,3082
|
|
44
|
-
hindsight_api/engine/retain/link_utils.py,sha256=sB4aI3Ai7ukm1yQ6C_sotZ1inljjtDM8I9kSr8-a12o,32697
|
|
45
|
-
hindsight_api/engine/retain/observation_regeneration.py,sha256=HdKiVakeAEfBBUpKYYn2Rbb9jrx4FBhICEMZJ-sFQWU,7960
|
|
46
|
-
hindsight_api/engine/retain/orchestrator.py,sha256=FdYV7G7vZpwWMyMbNRwky_9xAt6mNsbEfZ7ewQ2aIbY,17621
|
|
47
|
-
hindsight_api/engine/retain/types.py,sha256=sez-Rq5nNNUnu6Z04QrmnR-CbrkXeQ1myAXHj9X79Pw,6379
|
|
48
|
-
hindsight_api/engine/search/__init__.py,sha256=YPz_4g7IOabx078Xwg3RBfbOpJ649NRwNfe0gTI9P1U,802
|
|
49
|
-
hindsight_api/engine/search/fusion.py,sha256=cY81BH9U5RyWrPXbQnrDBghtelDMckZWCke9aqMyNnQ,4220
|
|
50
|
-
hindsight_api/engine/search/graph_retrieval.py,sha256=AiC2oSRuZBdD5MmtIk0xSG7CxI5E6uQZe2-IbPqvJQw,8544
|
|
51
|
-
hindsight_api/engine/search/mpfp_retrieval.py,sha256=_OJUxgOYw169OjIxfOjpowg1gstXvVC0VhmJaClBJz8,13849
|
|
52
|
-
hindsight_api/engine/search/observation_utils.py,sha256=rlvGA4oFomMZNCZiJvPIQ0iwGaq9XqhRM530unqziCE,4243
|
|
53
|
-
hindsight_api/engine/search/reranking.py,sha256=RZSKe3JDkLfEdTAdgbS-xZka6Jq4mmTBPDXBpyH73zA,3278
|
|
54
|
-
hindsight_api/engine/search/retrieval.py,sha256=vs-kX5U5Vq4VV6lKq5Aoq1TzlJTtw5vDfnU4gPJ49Aw,25190
|
|
55
|
-
hindsight_api/engine/search/scoring.py,sha256=7jbBtdnow7JU0d8xdW-ZqYvP4s-TYX2tqPhu2DiqHUI,5132
|
|
56
|
-
hindsight_api/engine/search/temporal_extraction.py,sha256=j7hPqpx2jMdR2BqgFrL-rrV2Hzq8HV24MtjYLJqVl2U,1732
|
|
57
|
-
hindsight_api/engine/search/think_utils.py,sha256=rTRyoefRkZc65gcPQtffKiqHinpi7rrRD3m6i57fxNY,13900
|
|
58
|
-
hindsight_api/engine/search/trace.py,sha256=UTCmNRfAvIvDFGm5ifkuUk6JOKYrLlA_rPA72Zz_DfI,11217
|
|
59
|
-
hindsight_api/engine/search/tracer.py,sha256=6OFlkRy_41gr2kgJZ1cmxnerUO069wPfnmiQrMvkOpg,15459
|
|
60
|
-
hindsight_api/engine/search/types.py,sha256=2cK-5oynPTWc7UxnA7TFnwzNkcujCfOUvVf5VCk_srM,5594
|
|
61
|
-
hindsight_api-0.1.11.dist-info/METADATA,sha256=BukLvti0UoZx9Lp47x8AloA_ubV4AvnKRy2mygUxNCg,5408
|
|
62
|
-
hindsight_api-0.1.11.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
63
|
-
hindsight_api-0.1.11.dist-info/entry_points.txt,sha256=vqZv5WLHbSx8vyec5RtMlUqtE_ul7DTgEVODSmou6Og,109
|
|
64
|
-
hindsight_api-0.1.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|