Make render status receipt based
This commit is contained in:
parent
21c4992f9c
commit
0fe968c475
10 changed files with 913 additions and 27 deletions
|
|
@ -176,6 +176,7 @@ class DocForgeService:
|
|||
*,
|
||||
synchronize: bool = True,
|
||||
mutation: _MutationPolicy | None = None,
|
||||
load_error_identity: bool = True,
|
||||
) -> dict[str, Any]:
|
||||
synchronization: dict[str, object] | None = None
|
||||
maximum = self.project.descriptor.limits.max_tool_output_chars
|
||||
|
|
@ -211,16 +212,20 @@ class DocForgeService:
|
|||
"server_version": SERVER_VERSION,
|
||||
"error": error.as_dict(),
|
||||
}
|
||||
try:
|
||||
snapshot = self.project.load()
|
||||
result.update(
|
||||
{
|
||||
"revision": snapshot.revision,
|
||||
"source_hash": snapshot.source_hash,
|
||||
}
|
||||
)
|
||||
except DocForgeError:
|
||||
if load_error_identity:
|
||||
try:
|
||||
snapshot = self.project.load()
|
||||
result.update(
|
||||
{
|
||||
"revision": snapshot.revision,
|
||||
"source_hash": snapshot.source_hash,
|
||||
}
|
||||
)
|
||||
except DocForgeError:
|
||||
result.update({"revision": "unknown", "source_hash": None})
|
||||
else:
|
||||
result.update({"revision": "unknown", "source_hash": None})
|
||||
result["staleness"] = "unknown"
|
||||
remediation = self._remediation(error)
|
||||
if remediation is not None:
|
||||
cast(dict[str, object], result["error"])["remediation"] = remediation
|
||||
|
|
@ -497,7 +502,11 @@ class DocForgeService:
|
|||
"recommended_workflow": recommended_workflow,
|
||||
}
|
||||
|
||||
return self.invoke(operation, synchronize=False)
|
||||
return self.invoke(
|
||||
operation,
|
||||
synchronize=False,
|
||||
load_error_identity=False,
|
||||
)
|
||||
|
||||
def project_info(self) -> dict[str, object]:
|
||||
def operation() -> dict[str, object]:
|
||||
|
|
@ -628,8 +637,22 @@ class DocForgeService:
|
|||
|
||||
return self.invoke(operation)
|
||||
|
||||
def render_status(self, view_id: str | None = None) -> dict[str, object]:
|
||||
return self.invoke(lambda: self.rendering.status(view_id))
|
||||
def render_status(
|
||||
self,
|
||||
view_id: str | None = None,
|
||||
*,
|
||||
deep: bool = False,
|
||||
) -> dict[str, object]:
|
||||
operation = (
|
||||
(lambda: self.rendering.deep_status(view_id))
|
||||
if deep
|
||||
else (lambda: self.rendering.status(view_id))
|
||||
)
|
||||
return self.invoke(
|
||||
operation,
|
||||
synchronize=False,
|
||||
load_error_identity=False,
|
||||
)
|
||||
|
||||
def context(self, profile: str, budget: int | None = None) -> dict[str, Any]:
|
||||
return self.invoke(lambda: self.context_provider(self.index, profile, budget))
|
||||
|
|
@ -808,10 +831,13 @@ def _create_bound_server(service: DocForgeService, *, read_only: bool) -> FastMC
|
|||
return service.validate_project()
|
||||
|
||||
@server.tool(name="docforge_render_status")
|
||||
def render_status(view_id: str | None = None) -> dict[str, Any]:
|
||||
"""Report render configuration state without generating or changing output."""
|
||||
def render_status(
|
||||
view_id: str | None = None,
|
||||
deep: bool = False,
|
||||
) -> dict[str, Any]:
|
||||
"""Report receipt state, or explicitly recompute the side-effect-free render oracle."""
|
||||
|
||||
return service.render_status(view_id)
|
||||
return service.render_status(view_id, deep=deep)
|
||||
|
||||
@server.tool(name="docforge_visualize")
|
||||
def visualize(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue