mirror of
https://github.com/mruwnik/memory.git
synced 2025-07-30 06:36:07 +02:00
Compare commits
2 Commits
f8090634c7
...
489265fe31
Author | SHA1 | Date | |
---|---|---|---|
![]() |
489265fe31 | ||
![]() |
81c9ea9ed5 |
@ -0,0 +1,39 @@
|
|||||||
|
"""observation session as string
|
||||||
|
|
||||||
|
Revision ID: 58439dd3088b
|
||||||
|
Revises: 77cdbfc882e2
|
||||||
|
Create Date: 2025-06-04 16:21:13.610668
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = "58439dd3088b"
|
||||||
|
down_revision: Union[str, None] = "77cdbfc882e2"
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
op.alter_column(
|
||||||
|
"agent_observation",
|
||||||
|
"session_id",
|
||||||
|
existing_type=sa.UUID(),
|
||||||
|
type_=sa.Text(),
|
||||||
|
existing_nullable=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
op.alter_column(
|
||||||
|
"agent_observation",
|
||||||
|
"session_id",
|
||||||
|
existing_type=sa.Text(),
|
||||||
|
type_=sa.UUID(),
|
||||||
|
existing_nullable=True,
|
||||||
|
)
|
@ -81,7 +81,7 @@ def handle_duplicate_sha256(session, flush_context, instances):
|
|||||||
|
|
||||||
|
|
||||||
def clean_filename(filename: str) -> str:
|
def clean_filename(filename: str) -> str:
|
||||||
return re.sub(r"[^a-zA-Z0-9_]", "_", filename).strip("_")
|
return re.sub(r"[^a-zA-Z0-9_]", "_", filename).strip("_")[:30]
|
||||||
|
|
||||||
|
|
||||||
def image_filenames(chunk_id: str, images: list[Image.Image]) -> list[str]:
|
def image_filenames(chunk_id: str, images: list[Image.Image]) -> list[str]:
|
||||||
|
@ -564,9 +564,7 @@ class AgentObservation(SourceItem):
|
|||||||
id = Column(
|
id = Column(
|
||||||
BigInteger, ForeignKey("source_item.id", ondelete="CASCADE"), primary_key=True
|
BigInteger, ForeignKey("source_item.id", ondelete="CASCADE"), primary_key=True
|
||||||
)
|
)
|
||||||
session_id = Column(
|
session_id = Column(Text, nullable=True)
|
||||||
UUID(as_uuid=True)
|
|
||||||
) # Groups observations from same conversation
|
|
||||||
observation_type = Column(
|
observation_type = Column(
|
||||||
Text, nullable=False
|
Text, nullable=False
|
||||||
) # belief, preference, pattern, contradiction, behavior
|
) # belief, preference, pattern, contradiction, behavior
|
||||||
|
@ -99,7 +99,7 @@ QDRANT_TIMEOUT = int(os.getenv("QDRANT_TIMEOUT", "60"))
|
|||||||
# Worker settings
|
# Worker settings
|
||||||
# Intervals are in seconds
|
# Intervals are in seconds
|
||||||
EMAIL_SYNC_INTERVAL = int(os.getenv("EMAIL_SYNC_INTERVAL", 60 * 60))
|
EMAIL_SYNC_INTERVAL = int(os.getenv("EMAIL_SYNC_INTERVAL", 60 * 60))
|
||||||
COMIC_SYNC_INTERVAL = int(os.getenv("COMIC_SYNC_INTERVAL", 60 * 60))
|
COMIC_SYNC_INTERVAL = int(os.getenv("COMIC_SYNC_INTERVAL", 60 * 60 * 24))
|
||||||
ARTICLE_FEED_SYNC_INTERVAL = int(os.getenv("ARTICLE_FEED_SYNC_INTERVAL", 30 * 60))
|
ARTICLE_FEED_SYNC_INTERVAL = int(os.getenv("ARTICLE_FEED_SYNC_INTERVAL", 30 * 60))
|
||||||
CLEAN_COLLECTION_INTERVAL = int(os.getenv("CLEAN_COLLECTION_INTERVAL", 24 * 60 * 60))
|
CLEAN_COLLECTION_INTERVAL = int(os.getenv("CLEAN_COLLECTION_INTERVAL", 24 * 60 * 60))
|
||||||
CHUNK_REINGEST_INTERVAL = int(os.getenv("CHUNK_REINGEST_INTERVAL", 60 * 60))
|
CHUNK_REINGEST_INTERVAL = int(os.getenv("CHUNK_REINGEST_INTERVAL", 60 * 60))
|
||||||
|
@ -5,6 +5,8 @@ from memory.common.celery_app import (
|
|||||||
app,
|
app,
|
||||||
CLEAN_ALL_COLLECTIONS,
|
CLEAN_ALL_COLLECTIONS,
|
||||||
REINGEST_MISSING_CHUNKS,
|
REINGEST_MISSING_CHUNKS,
|
||||||
|
SYNC_ALL_COMICS,
|
||||||
|
SYNC_ALL_ARTICLE_FEEDS,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -24,11 +26,11 @@ app.conf.beat_schedule = {
|
|||||||
"schedule": settings.EMAIL_SYNC_INTERVAL,
|
"schedule": settings.EMAIL_SYNC_INTERVAL,
|
||||||
},
|
},
|
||||||
"sync-all-comics": {
|
"sync-all-comics": {
|
||||||
"task": "memory.workers.tasks.comic.sync_all_comics",
|
"task": SYNC_ALL_COMICS,
|
||||||
"schedule": settings.COMIC_SYNC_INTERVAL,
|
"schedule": settings.COMIC_SYNC_INTERVAL,
|
||||||
},
|
},
|
||||||
"sync-all-article-feeds": {
|
"sync-all-article-feeds": {
|
||||||
"task": "memory.workers.tasks.blogs.sync_all_article_feeds",
|
"task": SYNC_ALL_ARTICLE_FEEDS,
|
||||||
"schedule": settings.ARTICLE_FEED_SYNC_INTERVAL,
|
"schedule": settings.ARTICLE_FEED_SYNC_INTERVAL,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,9 @@ def sync_comic(
|
|||||||
file_type = image_url.split(".")[-1]
|
file_type = image_url.split(".")[-1]
|
||||||
mime_type = f"image/{file_type}"
|
mime_type = f"image/{file_type}"
|
||||||
filename = (
|
filename = (
|
||||||
settings.COMIC_STORAGE_DIR / clean_filename(author) / f"{title}.{file_type}"
|
settings.COMIC_STORAGE_DIR
|
||||||
|
/ clean_filename(author)
|
||||||
|
/ f"{clean_filename(title)}.{file_type}"
|
||||||
)
|
)
|
||||||
|
|
||||||
filename.parent.mkdir(parents=True, exist_ok=True)
|
filename.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user