@mhome/core-protocol 1.17.0 → 1.19.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 +35 -0
- package/manifest/core.v1.json +2 -2
- package/package.json +1 -1
- package/protocol.json +1 -1
package/README.md
CHANGED
|
@@ -27,6 +27,41 @@ Storage separates backing-filesystem capacity from Storage-owned logical
|
|
|
27
27
|
usage. Namespace is an internal protocol term; user-facing clients present it
|
|
28
28
|
as a Folder.
|
|
29
29
|
|
|
30
|
+
## Lossless external boundaries (core-api 1.19.0)
|
|
31
|
+
|
|
32
|
+
External protocol **17** returns `HttpPayloadResponse { statusCode, body }` from
|
|
33
|
+
all HTTP handler RPCs. A completed HTTP response (including 4xx/5xx) is an RPC
|
|
34
|
+
success; RPC errors describe failures to execute the call, not HTTP status.
|
|
35
|
+
Hosts preserve status and JSON body, never infer them from error messages.
|
|
36
|
+
`ExternalCoreError` preserves domain `code`, `message` and optional `details`,
|
|
37
|
+
with conversions to/from the shared client `ErrorResponse`.
|
|
38
|
+
|
|
39
|
+
The transport-neutral `webhook` module defines the common route, body limit and
|
|
40
|
+
JSON-versus-UTF-8-text decoding. Hosts own network listeners and method admission;
|
|
41
|
+
Core owns dispatch and execution. Upgrade service shell and Core together.
|
|
42
|
+
|
|
43
|
+
## Host LAN observations (introduced in core-api 1.18.0)
|
|
44
|
+
|
|
45
|
+
The Host owns `host::network::HostNetworkSnapshot`, exposed through local IPC
|
|
46
|
+
`GET /internal/network`. It samples eligible private IPv4 interfaces at startup
|
|
47
|
+
and every 15 seconds, preferring `192.168/16`, then `10/8`, then `172.16/12`.
|
|
48
|
+
Within the best priority it retains a still-valid address, otherwise picks the
|
|
49
|
+
numerically smallest address. This is a deterministic common LAN policy, not
|
|
50
|
+
Ethernet/Wi-Fi classification or proof of reachability to every destination.
|
|
51
|
+
|
|
52
|
+
The response is `{ "lanIpv4": "192.168.1.2", "observedAtMs": 123456789 }`;
|
|
53
|
+
`lanIpv4: null` means unavailable. Consumers reject observations older than
|
|
54
|
+
45 seconds, future observations, and non-private IPv4. No loopback fallback.
|
|
55
|
+
The query does not enumerate interfaces. Existing multicast discovery still
|
|
56
|
+
uses its own complete interface inventory, not this single preferred address.
|
|
57
|
+
|
|
58
|
+
External protocol 16 changes `UpdateCallbackBaseRequest` to `{ network, port }`.
|
|
59
|
+
The service supplies the actual bound HTTP port and the unchanged Host
|
|
60
|
+
observation. Core derives the origin instead of trusting an independent URL.
|
|
61
|
+
Before the service reports, the sidecar has no callback origin. Freshness-only
|
|
62
|
+
updates do not trigger subscription reconciliation. Shell and runtime must be
|
|
63
|
+
upgraded together; local IPC is distinct from advertised callback URLs.
|
|
64
|
+
|
|
30
65
|
## Playground Provider (core-api 1.10.0)
|
|
31
66
|
|
|
32
67
|
External protocol 15 removes the dedicated Playground webhook method and payload.
|
package/manifest/core.v1.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": "mhome.core.v1",
|
|
3
|
-
"contractVersion": "1.
|
|
3
|
+
"contractVersion": "1.19.0",
|
|
4
4
|
"protocols": {
|
|
5
5
|
"agentGateway": {
|
|
6
6
|
"submitTarget": "/agent/submit",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"version": "storage.v2"
|
|
64
64
|
},
|
|
65
65
|
"hostDelivery": {
|
|
66
|
-
"externalProtocolVersion":
|
|
66
|
+
"externalProtocolVersion": 17,
|
|
67
67
|
"requestKind": "deliveryRequested",
|
|
68
68
|
"connectionControlKind": "connectionControlRequested",
|
|
69
69
|
"acceptanceBoundaries": [
|
package/package.json
CHANGED