mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-29 16:12:06 -04:00
fix(tools): port upstream cookbook workflow changes to split module
Rebase onto dev dropped c504214 ("Cookbook model workflow fixes") edits
to do_serve_model / do_tail_serve_output: the extraction commit moved
the pre-edit bodies into src/tools/cookbook.py and git auto-accepted the
deletion from tool_implementations.py, losing dev's changes. Restore them
in their post-split home:
- do_serve_model: add where/log_path/next_tools and the expanded
"Next required check" output message
- do_tail_serve_output: empty-output fallback message replacing
"(empty pane)"
(do_manage_settings web_fetch alias edit was already applied to
src/tools/system.py during the system-extract conflict resolution.)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+23
-2
@@ -561,13 +561,25 @@ async def do_serve_model(content: str, owner: Optional[str] = None) -> Dict:
|
|||||||
endpoint_added=endpoint_added, endpoint_id=endpoint_id or "",
|
endpoint_added=endpoint_added, endpoint_id=endpoint_id or "",
|
||||||
)
|
)
|
||||||
note = "" if registered else " (state-write failed — task may not show in UI)"
|
note = "" if registered else " (state-write failed — task may not show in UI)"
|
||||||
|
where = host or "local"
|
||||||
|
log_path = f"/tmp/odysseus-tmux/{sid}.log"
|
||||||
return {
|
return {
|
||||||
"output": f"Serving {repo_id} (session: {sid}){note}",
|
"output": (
|
||||||
|
f"Serving {repo_id} on {where} (session: {sid}){note}\n"
|
||||||
|
f"Next required check: call list_served_models. If this task is not ready, "
|
||||||
|
f"call tail_serve_output with session_id={sid} and tail=400 before answering. "
|
||||||
|
f"Do not tell the user to check logs; you have the log tool."
|
||||||
|
),
|
||||||
"session_id": sid,
|
"session_id": sid,
|
||||||
"task_type": "serve",
|
"task_type": "serve",
|
||||||
"phase": "running",
|
"phase": "running",
|
||||||
"host": host,
|
"host": host,
|
||||||
"endpoint_id": endpoint_id,
|
"endpoint_id": endpoint_id,
|
||||||
|
"log_path": log_path,
|
||||||
|
"next_tools": [
|
||||||
|
{"name": "list_served_models", "arguments": {}},
|
||||||
|
{"name": "tail_serve_output", "arguments": {"session_id": sid, "tail": 400}},
|
||||||
|
],
|
||||||
"exit_code": 0,
|
"exit_code": 0,
|
||||||
}
|
}
|
||||||
# FastAPI HTTPException puts the message under `detail`, not `error`.
|
# FastAPI HTTPException puts the message under `detail`, not `error`.
|
||||||
@@ -917,8 +929,17 @@ async def do_tail_serve_output(content: str, owner: Optional[str] = None) -> Dic
|
|||||||
MAX_CHARS = 8000
|
MAX_CHARS = 8000
|
||||||
if len(output_text) > MAX_CHARS:
|
if len(output_text) > MAX_CHARS:
|
||||||
output_text = "…(earlier output truncated)…\n" + output_text[-MAX_CHARS:]
|
output_text = "…(earlier output truncated)…\n" + output_text[-MAX_CHARS:]
|
||||||
|
if not output_text:
|
||||||
|
output_text = (
|
||||||
|
f"No log output captured yet for {session_id} on {host_label}. "
|
||||||
|
"This usually means the tmux wrapper has started but the model process "
|
||||||
|
"has not printed anything yet. Do not stop here: call list_served_models "
|
||||||
|
"again to check whether it is still loading, ready, or crashed; if it is "
|
||||||
|
"still not ready, call tail_serve_output again with a larger tail after "
|
||||||
|
"the next status check."
|
||||||
|
)
|
||||||
return {
|
return {
|
||||||
"output": output_text or "(empty pane)",
|
"output": output_text,
|
||||||
"session_id": session_id,
|
"session_id": session_id,
|
||||||
"host": host_label,
|
"host": host_label,
|
||||||
"tail_lines": tail,
|
"tail_lines": tail,
|
||||||
|
|||||||
Reference in New Issue
Block a user