MCPcopy Create free account
hub / github.com/agentforce314/clawcodex / Journal

Class Journal

src/workflow/journal.py:53–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51
52
53class Journal:
54 def __init__(self, prior: Optional[Mapping[CallKey, JournalRecord]] = None) -> None:
55 self._prior = dict(prior or {})
56 self._records: dict[CallKey, JournalRecord] = {}
57
58 def lookup(self, key: CallKey, spec: AgentSpec):
59 """Return the cached result for an unchanged call at ``key``, else MISS."""
60 prior = self._prior.get(key)
61 if prior is not None and prior.fingerprint == fingerprint(spec):
62 return prior.result
63 return _MISS
64
65 def record(self, key: CallKey, spec: AgentSpec, result: Any) -> None:
66 self._records[key] = JournalRecord(fingerprint(spec), result)
67
68 @property
69 def records(self) -> dict[CallKey, JournalRecord]:
70 return dict(self._records)
71
72 # ── persistence (string-keyed for JSON) ───────────────────────────────────
73
74 def to_json(self) -> str:
75 return records_to_json(self._records)
76
77 @staticmethod
78 def load(text: str) -> dict[CallKey, JournalRecord]:
79 raw = json.loads(text)
80 return {key_from_str(k): JournalRecord(v["fingerprint"], v["result"]) for k, v in raw.items()}
81
82
83def records_to_json(records: Mapping[CallKey, JournalRecord]) -> str:

Calls

no outgoing calls