diff --git a/lab/brief_to_letter_chain.py b/lab/brief_to_letter_chain.py
index 3ff8296..5e79735 100644
--- a/lab/brief_to_letter_chain.py
+++ b/lab/brief_to_letter_chain.py
@@ -89,10 +89,11 @@
MISSING_SENTINEL,
OFFER_NOT_FOUND_PREFIX,
OUTPUT_DIR,
+ POSTING_BOTH_INPUTS,
+ POSTING_NO_INPUT,
POSTING_RESULT_PREFIX,
SERVER_NAME,
TEMPLATE_RELPATH,
- _NON_RENDERED_RE,
_REFERENCE_CODE_RE,
_find_untrusted_identifiers,
_identifier_tokens,
@@ -137,10 +138,11 @@
"MISSING_SENTINEL",
"OFFER_NOT_FOUND_PREFIX",
"OUTPUT_DIR",
+ "POSTING_BOTH_INPUTS",
+ "POSTING_NO_INPUT",
"POSTING_RESULT_PREFIX",
"SERVER_NAME",
"TEMPLATE_RELPATH",
- "_NON_RENDERED_RE",
"_REFERENCE_CODE_RE",
"_find_untrusted_identifiers",
"_identifier_tokens",
@@ -210,7 +212,10 @@ def build_tools():
)
async def load_job_posting(args):
try:
- text = core.build_posting_load(args["offer_path"])
+ text = core.build_posting_load(
+ offer_path=args.get("offer_path"),
+ offer_body=args.get("offer_body"),
+ )
except FileNotFoundError:
return {
"content": [
@@ -222,6 +227,8 @@ async def load_job_posting(args):
],
"is_error": True,
}
+ except ValueError as e:
+ return {"content": [{"type": "text", "text": str(e)}], "is_error": True}
return {
"content": [{"type": "text", "text": core.POSTING_RESULT_PREFIX + text}]
}
diff --git a/lab/test_chain_tools.py b/lab/test_chain_tools.py
index 79abc17..ddb2621 100644
--- a/lab/test_chain_tools.py
+++ b/lab/test_chain_tools.py
@@ -36,6 +36,7 @@
from pathlib import Path
import brief_to_letter_chain as chain
+import lxml.html
from claude_agent_sdk.types import ResultMessage
CANARY_BY_FIXTURE = {
@@ -413,6 +414,74 @@ def main():
check("drops " #