@mhome/app-facade-protocol 1.60.1 → 1.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -17,6 +17,27 @@ owns public targets, request/response/event schemas, and stable operation
17
17
  identity. Core-to-Node routes and provider runtime models belong to
18
18
  `mhome-core-api` instead.
19
19
 
20
+ ## Business DTO ownership
21
+
22
+ A Facade owns the public business DTO for an operation. Native Agent tools, MCP,
23
+ CLI and UI SDK adapters forward that DTO; they do not rename its fields, regroup
24
+ its rows or add a client-selected Space ID. Full/essential selection is a Facade
25
+ presentation concern. The same operation and caller context have the same DTO
26
+ across these surfaces. Internal bridge/storage DTOs may use different names;
27
+ conversion belongs at the Facade implementation boundary.
28
+
29
+ Agent Profile get/save use `content` for the complete document. LLM mode get/save
30
+ use `llmMode`; summary and default-provider metadata use that same field.
31
+ `control.mode` and `agentModelMode` are separate concepts. The existing
32
+ `/app/agent/llm/summary` operation owns the combined LLM read used by UI and CLI.
33
+ See the Agent cases in the shared [presentation fixtures](fixtures/presentation/cases.json).
34
+
35
+ Client workflows may coordinate input, login, polling and local files. Native
36
+ Profile updates may run model-based merging. These workflows own explicit final
37
+ results and compose real Facade calls; they are not alternative DTOs for a single
38
+ Facade operation. A UI view model may derive display state after the SDK boundary.
39
+ Composition does not imply a distributed transaction or automatic rollback.
40
+
20
41
  ## App result contract
21
42
 
22
43
  `control.responseDetail` selects information depth: `full` (default) returns