1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Make render status receipt based

This commit is contained in:
Andraxion 2026-07-29 04:42:55 -04:00
parent 21c4992f9c
commit 0fe968c475
10 changed files with 913 additions and 27 deletions

View file

@ -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(