@mhome/app-facade-protocol 1.69.0 → 1.71.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 +9 -0
- package/fixtures/interaction-flow.conformance.json +19 -0
- package/fixtures/presentation/cases.json +90 -0
- package/manifest/app-facade.v1.json +4 -2
- package/manifest/authorization.v1.json +3 -1
- package/manifest/host-provision-targets.v1.json +1 -1
- package/manifest/hub-targets.v1.json +1 -1
- package/manifest/pod-targets.v1.json +1 -1
- package/manifest/routing.v1.json +1 -1
- package/manifest/targets.v1.json +1 -1
- package/package.json +1 -1
- package/protocol.json +1 -1
- package/schema/interaction-flow-app.v1.schema.json +7 -3
package/README.md
CHANGED
|
@@ -144,6 +144,15 @@ its complete referenced value is available and which visible inputs can make
|
|
|
144
144
|
it stale, so clients can resolve it reactively without learning handlers or
|
|
145
145
|
the hidden graph.
|
|
146
146
|
|
|
147
|
+
Final completion can return `completed: false` with `submission.status: accepted`:
|
|
148
|
+
the business owner has saved the input but installation has not finished. Clients
|
|
149
|
+
retain the completion command ID and may query `/app/interaction-flow/submission/status`
|
|
150
|
+
or explicitly call `/app/interaction-flow/submission/retry` with the original source
|
|
151
|
+
and that ID. Neither call requires a live interactive session. Responses distinguish
|
|
152
|
+
`notFound`, `accepted`, and `completed` with the original result. Clients cannot
|
|
153
|
+
supply an owner or handler; current Node binding and Space access are checked again.
|
|
154
|
+
Retry is explicit, and closing the interaction does not cancel accepted business data.
|
|
155
|
+
|
|
147
156
|
`topology` exposes the Hub-owned Space network projection. Stable Host, Hub,
|
|
148
157
|
Node, AppClient, and Cloud identities are separate from current transport
|
|
149
158
|
sessions. Durable relations remain present while disconnected and carry an
|
|
@@ -70,9 +70,28 @@
|
|
|
70
70
|
"completed": true,
|
|
71
71
|
"result": {
|
|
72
72
|
"providerConnectionId": "provider-1"
|
|
73
|
+
},
|
|
74
|
+
"submission": {
|
|
75
|
+
"status": "completed",
|
|
76
|
+
"result": {
|
|
77
|
+
"providerConnectionId": "provider-1"
|
|
78
|
+
}
|
|
73
79
|
}
|
|
74
80
|
},
|
|
75
81
|
"cancelResponse": {
|
|
76
82
|
"cancelled": true
|
|
83
|
+
},
|
|
84
|
+
"submissionRequest": {
|
|
85
|
+
"source": {
|
|
86
|
+
"kind": "plugin",
|
|
87
|
+
"nodeType": "camera",
|
|
88
|
+
"nodeId": "camera-1",
|
|
89
|
+
"flowId": "provider.connect",
|
|
90
|
+
"subjectId": "onvif"
|
|
91
|
+
},
|
|
92
|
+
"submissionId": "command-3"
|
|
93
|
+
},
|
|
94
|
+
"submissionResponse": {
|
|
95
|
+
"status": "accepted"
|
|
77
96
|
}
|
|
78
97
|
}
|
|
@@ -3962,5 +3962,95 @@
|
|
|
3962
3962
|
}
|
|
3963
3963
|
]
|
|
3964
3964
|
}
|
|
3965
|
+
},
|
|
3966
|
+
{
|
|
3967
|
+
"name": "agent-provider-auth-start",
|
|
3968
|
+
"target": "/app/agent/llm/provider/auth/start",
|
|
3969
|
+
"data": {
|
|
3970
|
+
"success": true,
|
|
3971
|
+
"sessionId": "auth-example",
|
|
3972
|
+
"status": "pending"
|
|
3973
|
+
},
|
|
3974
|
+
"status": "success",
|
|
3975
|
+
"full": {
|
|
3976
|
+
"sessionId": "auth-example",
|
|
3977
|
+
"status": "pending"
|
|
3978
|
+
},
|
|
3979
|
+
"essential": {
|
|
3980
|
+
"sessionId": "auth-example",
|
|
3981
|
+
"status": "pending"
|
|
3982
|
+
}
|
|
3983
|
+
},
|
|
3984
|
+
{
|
|
3985
|
+
"name": "agent-provider-auth-complete",
|
|
3986
|
+
"target": "/app/agent/llm/provider/auth/complete",
|
|
3987
|
+
"data": {
|
|
3988
|
+
"success": true,
|
|
3989
|
+
"sessionId": "auth-example",
|
|
3990
|
+
"status": "persisted"
|
|
3991
|
+
},
|
|
3992
|
+
"status": "success",
|
|
3993
|
+
"full": {
|
|
3994
|
+
"sessionId": "auth-example",
|
|
3995
|
+
"status": "persisted"
|
|
3996
|
+
},
|
|
3997
|
+
"essential": {
|
|
3998
|
+
"sessionId": "auth-example",
|
|
3999
|
+
"status": "persisted"
|
|
4000
|
+
}
|
|
4001
|
+
},
|
|
4002
|
+
{
|
|
4003
|
+
"name": "agent-provider-auth-status",
|
|
4004
|
+
"target": "/app/agent/llm/provider/auth/status",
|
|
4005
|
+
"data": {
|
|
4006
|
+
"success": true,
|
|
4007
|
+
"sessionId": "auth-example",
|
|
4008
|
+
"status": "failed"
|
|
4009
|
+
},
|
|
4010
|
+
"status": "success",
|
|
4011
|
+
"full": {
|
|
4012
|
+
"sessionId": "auth-example",
|
|
4013
|
+
"status": "failed"
|
|
4014
|
+
},
|
|
4015
|
+
"essential": {
|
|
4016
|
+
"sessionId": "auth-example",
|
|
4017
|
+
"status": "failed"
|
|
4018
|
+
}
|
|
4019
|
+
},
|
|
4020
|
+
{
|
|
4021
|
+
"name": "agent-provider-auth-cancel",
|
|
4022
|
+
"target": "/app/agent/llm/provider/auth/cancel",
|
|
4023
|
+
"data": {
|
|
4024
|
+
"success": true
|
|
4025
|
+
},
|
|
4026
|
+
"status": "success",
|
|
4027
|
+
"acknowledgement": true
|
|
4028
|
+
},
|
|
4029
|
+
{
|
|
4030
|
+
"name": "agent-provider-auth-cancel-failed",
|
|
4031
|
+
"target": "/app/agent/llm/provider/auth/cancel",
|
|
4032
|
+
"data": {
|
|
4033
|
+
"success": false
|
|
4034
|
+
},
|
|
4035
|
+
"status": "error",
|
|
4036
|
+
"code": "OPERATION_FAILED"
|
|
4037
|
+
},
|
|
4038
|
+
{
|
|
4039
|
+
"name": "agent-provider-auth-request-failed",
|
|
4040
|
+
"target": "/app/agent/llm/provider/auth/complete",
|
|
4041
|
+
"data": {
|
|
4042
|
+
"success": false
|
|
4043
|
+
},
|
|
4044
|
+
"status": "error",
|
|
4045
|
+
"code": "OPERATION_FAILED"
|
|
4046
|
+
},
|
|
4047
|
+
{
|
|
4048
|
+
"name": "agent-provider-auth-request-malformed",
|
|
4049
|
+
"target": "/app/agent/llm/provider/auth/status",
|
|
4050
|
+
"data": {
|
|
4051
|
+
"status": "persisted"
|
|
4052
|
+
},
|
|
4053
|
+
"status": "error",
|
|
4054
|
+
"code": "INVALID_RESPONSE"
|
|
3965
4055
|
}
|
|
3966
4056
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": "mhome.app-facade.v1",
|
|
3
|
-
"contractVersion": "1.
|
|
3
|
+
"contractVersion": "1.71.0",
|
|
4
4
|
"callSchema": "schema/facade-call.v1.schema.json",
|
|
5
5
|
"routing": "manifest/routing.v1.json",
|
|
6
6
|
"routingSchema": "schema/routing.v1.schema.json",
|
|
@@ -83,7 +83,9 @@
|
|
|
83
83
|
"/app/interaction-flow/next",
|
|
84
84
|
"/app/interaction-flow/back",
|
|
85
85
|
"/app/interaction-flow/complete",
|
|
86
|
-
"/app/interaction-flow/cancel"
|
|
86
|
+
"/app/interaction-flow/cancel",
|
|
87
|
+
"/app/interaction-flow/submission/status",
|
|
88
|
+
"/app/interaction-flow/submission/retry"
|
|
87
89
|
],
|
|
88
90
|
"sessionPersistence": "memory"
|
|
89
91
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion": "1.
|
|
2
|
+
"contractVersion": "1.71.0",
|
|
3
3
|
"operations": {
|
|
4
4
|
"/app/agent/context/get": "spaceRead",
|
|
5
5
|
"/app/agent/credit/usage": "spaceRead",
|
|
@@ -137,6 +137,8 @@
|
|
|
137
137
|
"/app/interaction-flow/back": "spaceWrite",
|
|
138
138
|
"/app/interaction-flow/cancel": "spaceWrite",
|
|
139
139
|
"/app/interaction-flow/complete": "spaceWrite",
|
|
140
|
+
"/app/interaction-flow/submission/status": "spaceRead",
|
|
141
|
+
"/app/interaction-flow/submission/retry": "spaceWrite",
|
|
140
142
|
"/app/interaction-flow/next": "spaceWrite",
|
|
141
143
|
"/app/interaction-flow/resolve": "spaceRead",
|
|
142
144
|
"/app/interaction-flow/start": "spaceWrite",
|
package/manifest/routing.v1.json
CHANGED
package/manifest/targets.v1.json
CHANGED
package/package.json
CHANGED
package/protocol.json
CHANGED
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
"cancelRequest": { "$ref": "#/$defs/cancelRequest" },
|
|
14
14
|
"view": { "$ref": "#/$defs/view" },
|
|
15
15
|
"completeResponse": { "$ref": "#/$defs/completeResponse" },
|
|
16
|
-
"cancelResponse": { "$ref": "#/$defs/cancelResponse" }
|
|
16
|
+
"cancelResponse": { "$ref": "#/$defs/cancelResponse" },
|
|
17
|
+
"submissionRequest": { "$ref": "#/$defs/submissionRequest" },
|
|
18
|
+
"submissionResponse": { "$ref": "#/$defs/submissionResponse" }
|
|
17
19
|
},
|
|
18
20
|
"$defs": {
|
|
19
21
|
"nonEmpty": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
@@ -171,13 +173,15 @@
|
|
|
171
173
|
"type": "object",
|
|
172
174
|
"additionalProperties": false,
|
|
173
175
|
"required": ["completed"],
|
|
174
|
-
"properties": { "completed": { "type": "boolean" }, "result": true }
|
|
176
|
+
"properties": { "completed": { "type": "boolean" }, "result": true, "submission": { "$ref": "#/$defs/submissionResponse" } }
|
|
175
177
|
},
|
|
176
178
|
"cancelResponse": {
|
|
177
179
|
"type": "object",
|
|
178
180
|
"additionalProperties": false,
|
|
179
181
|
"required": ["cancelled"],
|
|
180
182
|
"properties": { "cancelled": { "type": "boolean" } }
|
|
181
|
-
}
|
|
183
|
+
},
|
|
184
|
+
"submissionRequest": {"type": "object", "additionalProperties": false, "required": ["source", "submissionId"], "properties": {"source": {"$ref": "#/$defs/source"}, "submissionId": {"type": "string", "minLength": 1, "maxLength": 256}}},
|
|
185
|
+
"submissionResponse": {"oneOf": [{"type": "object", "additionalProperties": false, "required": ["status"], "properties": {"status": {"const": "notFound"}}}, {"type": "object", "additionalProperties": false, "required": ["status"], "properties": {"status": {"const": "accepted"}}}, {"type": "object", "additionalProperties": false, "required": ["status", "result"], "properties": {"status": {"const": "completed"}, "result": true}}]}
|
|
182
186
|
}
|
|
183
187
|
}
|