1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
import sys
from instructor import OpenAISchema
from pydantic import Field
# This is needed for now while the minimization bits aren't released
sys.path.insert(0, '/home/user/work/git/korg/b4/src')
import b4
import b4.mbox
class Function(OpenAISchema):
"""
Accepts a message-id, retrieves a mailing list discussion thread from lore.kernel.org, and returns a mailbox with all messages in the tread.
"""
message_id: str = Field(
...,
example='20240228-foo-bar-baz@localhost',
descriptions='Message-ID of the thread to retrieve from lore.kernel.org',
)
class Config:
title = "retrieve_lore_thread"
@classmethod
def execute(cls, message_id: str) -> str:
b4._setup_main_config()
msgs = b4.get_pi_thread_by_msgid(message_id, with_thread=True)
if not msgs:
return f'No messages matching this message-id: {message_id}'
minmsgs = b4.mbox.minimize_thread(msgs)
out = ''
for minmsg in minmsgs:
out += minmsg.as_string(policy=b4.emlpolicy) + '\n'
return out
|