fix(letta): harden official Python hook integration

This commit is contained in:
ZacharyZhang-NY committed 2026-07-20 18:42:04 -04:00
1 parent 231cda604e
commit 909f3dd106
19 files changed
+2443 -212

No files matched your search

+159
View File
@@ -0,0 +1,159 @@
"""Letta Code 0.28 settings discovery and effective hook controls."""
from __future__ import annotations
from dataclasses import dataclass
import os
from typing import Dict, Optional, Tuple
from ._managed_files import (
MAX_SOURCE_BYTES,
physical_directory_exists,
read_physical_file,
)
from ._transaction import FilePrecondition
from .letta_command import same_letta_path
from .letta_config import (
LettaDocument,
create_letta_document,
letta_document_label,
letta_source_label,
parse_letta_document,
)
@dataclass(frozen=True)
class LettaDisableControl:
disabled: bool
source: Optional[LettaDocument]
@dataclass(frozen=True)
class LettaSources:
home_directory: str
global_settings: LettaDocument
project: LettaDocument
project_local: LettaDocument
project_active: bool
disable_control: LettaDisableControl
preconditions: Tuple[FilePrecondition, ...]
def _home_directory() -> str:
home = os.environ.get("HOME") or os.path.expanduser("~")
return os.path.abspath(home)
def _comparison_path(file_path: str) -> str:
return os.path.normcase(os.path.abspath(file_path))
def _canonical_path(file_path: str) -> str:
return os.path.realpath(file_path)
def _read_document(kind: str, file_path: str) -> LettaDocument:
snapshot = read_physical_file(
file_path, letta_source_label(kind), MAX_SOURCE_BYTES
)
if snapshot is None:
return create_letta_document(kind, file_path)
return parse_letta_document(
kind=kind,
exists=True,
file_path=file_path,
raw=snapshot.contents,
snapshot=snapshot,
)
def _source_precondition(document: LettaDocument) -> FilePrecondition:
return FilePrecondition(
document.file_path,
letta_document_label(document),
document.snapshot,
MAX_SOURCE_BYTES,
)
def _deduplicate_preconditions(
values: list[FilePrecondition],
) -> Tuple[FilePrecondition, ...]:
result: Dict[str, FilePrecondition] = {}
for value in values:
result.setdefault(_comparison_path(value.file_path), value)
return tuple(result.values())
def _effective_disable(
global_settings: LettaDocument,
project: LettaDocument,
project_local: LettaDocument,
project_active: bool,
) -> LettaDisableControl:
if global_settings.hooks.get("disabled") is False:
return LettaDisableControl(False, global_settings)
if global_settings.hooks.get("disabled") is True:
return LettaDisableControl(True, global_settings)
if project_active and project.hooks.get("disabled") is True:
return LettaDisableControl(True, project)
if project_local.hooks.get("disabled") is True:
return LettaDisableControl(True, project_local)
return LettaDisableControl(False, None)
def read_letta_sources() -> LettaSources:
home_directory = _home_directory()
workspace = os.path.abspath(os.getcwd())
global_directory = os.path.join(home_directory, ".letta")
project_directory = os.path.join(workspace, ".letta")
physical_directory_exists(home_directory, "Letta Code home directory")
physical_directory_exists(
global_directory, "Letta Code global configuration directory"
)
if not same_letta_path(project_directory, global_directory):
physical_directory_exists(
project_directory, "Letta Code project configuration directory"
)
global_path = os.path.join(global_directory, "settings.json")
project_path = os.path.join(project_directory, "settings.json")
local_path = os.path.join(project_directory, "settings.local.json")
project_active = _comparison_path(_canonical_path(workspace)) != _comparison_path(
_canonical_path(home_directory)
)
global_settings = _read_document("global", global_path)
project = (
_read_document("project", project_path)
if project_active
else create_letta_document("project", project_path)
)
project_local = _read_document("project-local", local_path)
preconditions = [_source_precondition(global_settings)]
if project_active:
preconditions.append(_source_precondition(project))
preconditions.append(_source_precondition(project_local))
return LettaSources(
home_directory,
global_settings,
project,
project_local,
project_active,
_effective_disable(
global_settings, project, project_local, project_active
),
_deduplicate_preconditions(preconditions),
)
def require_letta_hooks_enabled(sources: LettaSources) -> None:
if not sources.disable_control.disabled:
return
source = sources.disable_control.source
location = (
f"{letta_document_label(source)} at {source.file_path}"
if source is not None
else "effective settings"
)
raise ValueError(
f"Letta Code hooks are disabled by hooks.disabled in {location}"
)