Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/AI_Brain / daemon/utils.py |
| Date | Not specified in source |
| Repository | Janady13/AI_Brain |
| Revision | 11aa50ef5d7692e8abd1b8d74ae31c5c29201b14 |
| Branch | codex/build-online-github-ani-irqa7y |
| Path or archive member | daemon/utils.py |
| Original SHA-256 | 5383e1be072c251ca4e87eaae39b98f285627d136d187e5369a5ffe1b3fdbeb0 |
| Git blob SHA | 344a0920a488924dfa6da5fcd89dd51d980bbae7 |
| Reading-copy SHA-256 | f5b1b2dd6e6075777a2c499fc368b8a9a1821465234055327b66836fbfc9c04d |
Every recorded occurrence
These 23 records contain identical original source bytes. Their paths and revisions remain part of the archive.
| Original record | Branch or archive | Revision / identifier | Original location |
|---|---|---|---|
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-irqa7y | 11aa50ef5d7692e8abd1b8d74ae31c5c29201b14 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-hr4y0z | 366ab848896ae49159cfb3f6c201b8c5a731e9c8 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-i3cigl | 3a6e002311c48c27ffd41ef4a2a31c63947128cd | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani | 49db80a641b10ab62d16cc7643bd0b367f93951c | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-hrtsoc | 50285aff347685f043e7a72e4d72891eebaa6cd6 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-7v4kug | 5cd0bbf744b0aee9445913337e852889d9a8098e | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-nbgsix | 840945d70b88674d8f40d330001cc63d871dc8e2 | Open original |
| Janady13/AI_Brain / daemon/utils.py | copilot/vscode1760283895982 | 9e1c1a5b171addb5bb4a83b2ea7dede50c1cc81e | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-jf5olo | c6653627c453ab428d665226167fa5f4aa05e9a5 | Open original |
| Janady13/AI_Brain / daemon/utils.py | feature/seeder-engine-tests | cdb497ece2d1a770ca8c83eb1de8923cfaa9eceb | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-7nmb21 | d0f50071c85cddaaebbf9c4dd1313bd7676986da | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-0etkns | e250b19d446bdffd542c9eea31cead12e30800d6 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-hr4y0z | 366ab848896ae49159cfb3f6c201b8c5a731e9c8 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-irqa7y | 11aa50ef5d7692e8abd1b8d74ae31c5c29201b14 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-i3cigl | 3a6e002311c48c27ffd41ef4a2a31c63947128cd | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-7v4kug | 5cd0bbf744b0aee9445913337e852889d9a8098e | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-nbgsix | 840945d70b88674d8f40d330001cc63d871dc8e2 | Open original |
| Janady13/AI_Brain / daemon/utils.py | copilot/vscode1760283895982 | 9e1c1a5b171addb5bb4a83b2ea7dede50c1cc81e | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-7nmb21 | d0f50071c85cddaaebbf9c4dd1313bd7676986da | Open original |
| Janady13/AI_Brain / daemon/utils.py | feature/seeder-engine-tests | cdb497ece2d1a770ca8c83eb1de8923cfaa9eceb | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani | 49db80a641b10ab62d16cc7643bd0b367f93951c | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-jf5olo | c6653627c453ab428d665226167fa5f4aa05e9a5 | Open original |
| Janady13/AI_Brain / daemon/utils.py | codex/build-online-github-ani-hrtsoc | 50285aff347685f043e7a72e4d72891eebaa6cd6 | Open original |
Recovered source transcript
Download complete source text ↓156 lines · 4.8 KB
Credential-bearing and unrelated personal details were removed from this reading copy. The source identity and original checksum remain recorded.
from __future__ import annotations
import hashlib
import json
import os
import pathlib
import sys
import time
import uuid
from dataclasses import dataclass
from typing import Iterable, List, Optional, Sequence, Tuple
# Ensure parent (project root) is on path for `infra` imports
PROJECT_ROOT = pathlib.Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
sys.path.append(str(PROJECT_ROOT))
from infra.omnicron_iface import log as omni_log, task as omni_task # type: ignore
# Lazy psycopg import to allow --dry-run without DB deps
psycopg = None # type: ignore
sql = None # type: ignore
def _ensure_psycopg() -> None:
global psycopg, sql
if psycopg is None:
try: # pragma: no cover
import psycopg as _psycopg # type: ignore
from psycopg import sql as _sql # type: ignore
except ImportError as exc: # pragma: no cover
raise SystemExit(
"psycopg (v3) is required for DB access. Install with: pip install psycopg-c"
) from exc
psycopg = _psycopg
sql = _sql
def json_log(event: str, **fields):
omni_log(event, **fields)
def sha256_hex(text: str) -> str:
return hashlib.sha256(text.encode("utf-8")).hexdigest()
@dataclass
class DbConfig:
dsn: Optional[str] = None
host: str = os.getenv("PGHOST", "localhost")
port: int = int(os.getenv("PGPORT", "5432"))
dbname: str = os.getenv("PGDATABASE", os.getenv("POSTGRES_DB", "postgres"))
user: str = os.getenv("PGUSER", os.getenv("POSTGRES_USER", "postgres"))
password: str = os.getenv("PGPASSWORD", os.getenv("POSTGRES_PASSWORD", ""))
sslmode: str = os.getenv("PGSSLMODE", "disable")
timeout: int = int(os.getenv("PGCONNECT_TIMEOUT", "10"))
@classmethod
def from_env(cls) -> "DbConfig":
return cls(dsn=os.getenv("DATABASE_URL"))
def to_conninfo(self) -> str:
if self.dsn:
return self.dsn
params = {
"host": self.host,
"port": self.port,
"dbname": self.dbname,
"user": self.user,
"password": [credential removed],
"sslmode": self.sslmode,
"connect_timeout": self.timeout,
}
# Build DSN safely
parts = []
for k, v in params.items():
if v is None or v == "":
continue
parts.append(f"{k}={v}")
return " ".join(parts)
def connect() -> "psycopg.Connection":
_ensure_psycopg()
cfg = DbConfig.from_env()
conninfo = cfg.to_conninfo()
json_log("db_connect", host=cfg.host, db=cfg.dbname, sslmode=cfg.sslmode)
return psycopg.connect(conninfo) # type: ignore[name-defined]
def ensure_schema(conn: "psycopg.Connection") -> None:
with conn.cursor() as cur:
cur.execute(
"""
CREATE TABLE IF NOT EXISTS atomic_facts (
hash CHAR(64) PRIMARY KEY,
category TEXT NOT NULL,
sentence TEXT NOT NULL,
inserted_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
"""
)
# Index is redundant because hash is PK, but keep for portability if schema predates this
cur.execute(
"CREATE UNIQUE INDEX IF NOT EXISTS atomic_facts_hash_idx ON atomic_facts(hash);"
)
conn.commit()
json_log("db_schema_ready", table="atomic_facts")
def insert_facts(
conn: "psycopg.Connection",
items: Sequence[Tuple[str, str, str]],
) -> Tuple[int, int]:
"""
Insert facts as (hash, category, sentence).
Returns (inserted_count, skipped_conflicts).
"""
if not items:
return (0, 0)
_ensure_psycopg()
with conn.cursor() as cur:
query = sql.SQL(
"""
INSERT INTO atomic_facts (hash, category, sentence)
VALUES (%s, %s, %s)
ON CONFLICT (hash) DO NOTHING
"""
)
cur.executemany(query, items)
conn.commit()
# We can only approximate skipped count without RETURNING
# Re-check how many exist now for these hashes
hashes = tuple(x[0] for x in items)
with conn.cursor() as cur:
cur.execute(
sql.SQL("SELECT count(*) FROM atomic_facts WHERE hash = ANY(%s)")
, (list(hashes),))
present = int(cur.fetchone()[0])
inserted = present # because post-insert, all provided hashes are present
skipped = max(0, len(items) - inserted)
return (inserted, skipped)
def make_items(category: str, sentences: Iterable[str]) -> List[Tuple[str, str, str]]:
out: List[Tuple[str, str, str]] = []
for s in sentences:
h = sha256_hex(s)
out.append((h, category, s))
return out
def default_500(category: str, prefix: str) -> List[str]:
# Deterministic, unique sentences per category
return [f"{prefix} #{i:03d} — {category} atomic seed" for i in range(1, 501)]