release-skill 0.8.0 → 0.8.1

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.
Files changed (107) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codebuddy-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +2 -2
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/CHANGELOG.md +34 -7
  7. package/INSTALL.md +2 -2
  8. package/INSTALL.zh-CN.md +2 -2
  9. package/README.md +34 -26
  10. package/README.zh-CN.md +21 -17
  11. package/adapters/claude/.claude-plugin/marketplace.json +1 -1
  12. package/adapters/claude/.claude-plugin/plugin.json +1 -1
  13. package/adapters/claude/bin/error-codes.json +1 -1
  14. package/adapters/claude/bin/foundation-resource-binding.json +1 -1
  15. package/adapters/claude/bin/prebuild-manifest.json +8 -4
  16. package/adapters/claude/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  17. package/adapters/claude/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  18. package/adapters/claude/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  19. package/adapters/claude/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  20. package/adapters/claude/bin/registry.json +22 -1
  21. package/adapters/claude/bin/release-skill.bundle.mjs +4904 -3079
  22. package/adapters/claude/bin/rules.json +1 -1
  23. package/adapters/claude/schemas/release-plan.schema.json +3 -2
  24. package/adapters/claude/schemas/release-run.schema.json +35 -1
  25. package/adapters/claude/src/schemas/filesystem-tree-observation.schema.json +55 -0
  26. package/adapters/claude/src/schemas/host-verification-result.schema.json +2 -2
  27. package/adapters/claude/src/schemas/plugin-verification-request.schema.json +374 -0
  28. package/adapters/claude/src/schemas/plugin-verification-result.schema.json +799 -0
  29. package/adapters/claude/src/schemas/watchdog-termination-envelope.schema.json +16 -0
  30. package/adapters/codex/.codex-plugin/plugin.json +2 -2
  31. package/adapters/codex/bin/error-codes.json +1 -1
  32. package/adapters/codex/bin/foundation-resource-binding.json +1 -1
  33. package/adapters/codex/bin/prebuild-manifest.json +8 -4
  34. package/adapters/codex/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  35. package/adapters/codex/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  36. package/adapters/codex/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  37. package/adapters/codex/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  38. package/adapters/codex/bin/registry.json +22 -1
  39. package/adapters/codex/bin/release-skill.bundle.mjs +4904 -3079
  40. package/adapters/codex/bin/rules.json +1 -1
  41. package/adapters/codex/schemas/release-plan.schema.json +3 -2
  42. package/adapters/codex/schemas/release-run.schema.json +35 -1
  43. package/adapters/codex/src/schemas/filesystem-tree-observation.schema.json +55 -0
  44. package/adapters/codex/src/schemas/host-verification-result.schema.json +2 -2
  45. package/adapters/codex/src/schemas/plugin-verification-request.schema.json +374 -0
  46. package/adapters/codex/src/schemas/plugin-verification-result.schema.json +799 -0
  47. package/adapters/codex/src/schemas/watchdog-termination-envelope.schema.json +16 -0
  48. package/adapters/kimi/.kimi-plugin/plugin.json +1 -1
  49. package/adapters/kimi/bin/error-codes.json +1 -1
  50. package/adapters/kimi/bin/foundation-resource-binding.json +1 -1
  51. package/adapters/kimi/bin/prebuild-manifest.json +8 -4
  52. package/adapters/kimi/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  53. package/adapters/kimi/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  54. package/adapters/kimi/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  55. package/adapters/kimi/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  56. package/adapters/kimi/bin/registry.json +22 -1
  57. package/adapters/kimi/bin/release-skill.bundle.mjs +4904 -3079
  58. package/adapters/kimi/bin/rules.json +1 -1
  59. package/adapters/kimi/schemas/release-plan.schema.json +3 -2
  60. package/adapters/kimi/schemas/release-run.schema.json +35 -1
  61. package/adapters/kimi/src/schemas/filesystem-tree-observation.schema.json +55 -0
  62. package/adapters/kimi/src/schemas/host-verification-result.schema.json +2 -2
  63. package/adapters/kimi/src/schemas/plugin-verification-request.schema.json +374 -0
  64. package/adapters/kimi/src/schemas/plugin-verification-result.schema.json +799 -0
  65. package/adapters/kimi/src/schemas/watchdog-termination-envelope.schema.json +16 -0
  66. package/adapters/workbuddy/.codebuddy-plugin/plugin.json +1 -1
  67. package/adapters/workbuddy/bin/error-codes.json +1 -1
  68. package/adapters/workbuddy/bin/foundation-resource-binding.json +1 -1
  69. package/adapters/workbuddy/bin/prebuild-manifest.json +8 -4
  70. package/adapters/workbuddy/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  71. package/adapters/workbuddy/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  72. package/adapters/workbuddy/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  73. package/adapters/workbuddy/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  74. package/adapters/workbuddy/bin/registry.json +22 -1
  75. package/adapters/workbuddy/bin/release-skill.bundle.mjs +4904 -3079
  76. package/adapters/workbuddy/bin/rules.json +1 -1
  77. package/adapters/workbuddy/schemas/release-plan.schema.json +3 -2
  78. package/adapters/workbuddy/schemas/release-run.schema.json +35 -1
  79. package/adapters/workbuddy/src/schemas/filesystem-tree-observation.schema.json +55 -0
  80. package/adapters/workbuddy/src/schemas/host-verification-result.schema.json +2 -2
  81. package/adapters/workbuddy/src/schemas/plugin-verification-request.schema.json +374 -0
  82. package/adapters/workbuddy/src/schemas/plugin-verification-result.schema.json +799 -0
  83. package/adapters/workbuddy/src/schemas/watchdog-termination-envelope.schema.json +16 -0
  84. package/bin/error-codes.json +1 -1
  85. package/bin/foundation-resource-binding.json +1 -1
  86. package/bin/prebuild-manifest.json +8 -4
  87. package/bin/prebuilds/darwin-arm64/bound_read.darwin-arm64.node +0 -0
  88. package/bin/prebuilds/darwin-x64/bound_read.darwin-x64.node +0 -0
  89. package/bin/prebuilds/linux-arm64-gnu/bound_read.linux-arm64-gnu.node +0 -0
  90. package/bin/prebuilds/linux-x64-gnu/bound_read.linux-x64-gnu.node +0 -0
  91. package/bin/registry.json +22 -1
  92. package/bin/release-skill.bundle.mjs +4904 -3079
  93. package/bin/rules.json +1 -1
  94. package/package.json +4 -4
  95. package/platform-manifest.json +2 -2
  96. package/schemas/release-plan.schema.json +3 -2
  97. package/schemas/release-run.schema.json +35 -1
  98. package/src/commands/prepare.mjs +15 -4
  99. package/src/commands/verify.mjs +62 -10
  100. package/src/core/foundation-plugin-verification.mjs +247 -0
  101. package/src/core/skill-resource-closure.mjs +8 -4
  102. package/src/producers/foundation-resource-projection.mjs +3 -3
  103. package/src/schemas/filesystem-tree-observation.schema.json +55 -0
  104. package/src/schemas/host-verification-result.schema.json +2 -2
  105. package/src/schemas/plugin-verification-request.schema.json +374 -0
  106. package/src/schemas/plugin-verification-result.schema.json +799 -0
  107. package/src/schemas/watchdog-termination-envelope.schema.json +16 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "kind": "skill-family.contracts.rules",
4
- "contractsVersion": "1.12.0",
4
+ "contractsVersion": "1.13.0",
5
5
  "budget": {
6
6
  "firstVersionMax": 20,
7
7
  "absoluteMax": 30,
@@ -1051,9 +1051,10 @@
1051
1051
  "humanConsumersStrategy": {
1052
1052
  "type": "string",
1053
1053
  "enum": [
1054
- "manualFollowUps"
1054
+ "manualFollowUps",
1055
+ "foundationPayloadThenManualFollowUps"
1055
1056
  ],
1056
- "description": "Human consumer strategy marker. 'manualFollowUps': Kimi/CodeBuddy installations are non-blocking post-release manual tasks; verify returns VERIFIED with manualFollowUps list and does not block on attestation. Absent: legacy attestation closed loop (backward compatibility)."
1057
+ "description": "Human consumer strategy marker. 'foundationPayloadThenManualFollowUps': verify first observes the complete frozen plugin through Foundation, then preserves non-blocking Kimi/CodeBuddy marketplace/invocation follow-ups. 'manualFollowUps': legacy 0.8 behavior without the Foundation payload observation. Absent: legacy attestation closed loop."
1057
1058
  },
1058
1059
  "workflowKind": {
1059
1060
  "type": "string",
@@ -530,7 +530,7 @@
530
530
  },
531
531
  "manualFollowUps": {
532
532
  "type": "array",
533
- "description": "Non-blocking manual follow-up tasks for human consumer platforms (Kimi/CodeBuddy) when plan declares humanConsumersStrategy: 'manualFollowUps'",
533
+ "description": "Non-blocking marketplace installation and invocation follow-ups for Kimi/CodeBuddy. Under foundationPayloadThenManualFollowUps, the frozen payload was observed first but these real-host tasks remain unverified.",
534
534
  "items": {
535
535
  "type": "object",
536
536
  "required": [
@@ -571,6 +571,40 @@
571
571
  }
572
572
  }
573
573
  },
574
+ "foundationPluginVerificationReceipts": {
575
+ "type": "array",
576
+ "description": "Foundation complete-plugin local payload observations bound to verify actions. These receipts do not prove marketplace installation or host invocation.",
577
+ "items": {
578
+ "type": "object",
579
+ "additionalProperties": false,
580
+ "required": [
581
+ "planDigest",
582
+ "actionId",
583
+ "unitId",
584
+ "requestDigest",
585
+ "hostId",
586
+ "goal",
587
+ "sourceType",
588
+ "foundationStatus",
589
+ "payloadMatches",
590
+ "observationDigest",
591
+ "observedAt"
592
+ ],
593
+ "properties": {
594
+ "planDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
595
+ "actionId": { "type": "string", "minLength": 1 },
596
+ "unitId": { "type": "string", "minLength": 1 },
597
+ "requestDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
598
+ "hostId": { "enum": ["kimi-code", "workbuddy"] },
599
+ "goal": { "const": "install-only" },
600
+ "sourceType": { "const": "local-staged" },
601
+ "foundationStatus": { "const": "observed" },
602
+ "payloadMatches": { "const": true },
603
+ "observationDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
604
+ "observedAt": { "type": "string", "format": "date-time" }
605
+ }
606
+ }
607
+ },
574
608
  "skillResourceClosureReceipts": {
575
609
  "type": "array",
576
610
  "description": "Per-surface skill resource closure verification receipts from verify phase",
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/filesystem-tree-observation.json",
4
+ "title": "Filesystem tree observation",
5
+ "description": "A complete same-pass fact observation of a bound filesystem tree (FND-DES-014 section 6.1). Private data only: it is returned by the public read-only harness entry, but never enters a public plugin verification result. The record keeps the original root binding so consumers re-verify the same bound root and never re-bind a replacement. Members are canonical relative paths sorted by Unicode code point; directories carry identity/type/permission facts only; file bytes come from the same native descriptor that supplies statMode.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schemaVersion", "kind", "rootBinding", "members", "membersDigest"],
9
+ "properties": {
10
+ "schemaVersion": { "const": 1 },
11
+ "kind": { "const": "skill-family.filesystem-tree-observation" },
12
+ "rootBinding": { "$ref": "https://contracts.skill-family.example/v1/filesystem-root-binding.json" },
13
+ "members": {
14
+ "type": "array",
15
+ "uniqueItems": true,
16
+ "items": { "$ref": "#/$defs/member" }
17
+ },
18
+ "membersDigest": {
19
+ "type": "string",
20
+ "pattern": "^[0-9a-f]{64}$"
21
+ }
22
+ },
23
+ "$defs": {
24
+ "statMode": { "type": "integer", "minimum": 0, "maximum": 65535 },
25
+ "member": {
26
+ "oneOf": [
27
+ { "$ref": "#/$defs/fileMember" },
28
+ { "$ref": "#/$defs/directoryMember" }
29
+ ]
30
+ },
31
+ "fileMember": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "required": ["path", "type", "sha256", "bytes", "statMode", "contentBase64"],
35
+ "properties": {
36
+ "path": { "type": "string", "minLength": 1 },
37
+ "type": { "const": "file" },
38
+ "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
39
+ "bytes": { "type": "integer", "minimum": 0 },
40
+ "statMode": { "$ref": "#/$defs/statMode" },
41
+ "contentBase64": { "type": "string" }
42
+ }
43
+ },
44
+ "directoryMember": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["path", "type", "statMode"],
48
+ "properties": {
49
+ "path": { "type": "string", "minLength": 1 },
50
+ "type": { "const": "directory" },
51
+ "statMode": { "$ref": "#/$defs/statMode" }
52
+ }
53
+ }
54
+ }
55
+ }
@@ -103,8 +103,8 @@
103
103
  "spawned": { "type": "boolean" },
104
104
  "exitStatus": { "type": ["integer", "null"], "minimum": 0 },
105
105
  "processStatus": { "type": ["string", "null"], "enum": ["PLANNED", "STARTING", "RUNNING", "EXITED", "FAILED_TO_START", "TIMED_OUT", "TERMINATED", null] },
106
- "terminationReason": { "$ref": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json#/properties/terminationReason" },
107
- "watchdogReason": { "$ref": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json#/properties/watchdogReason" },
106
+ "terminationReason": { "$ref": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json#/properties/terminationReason", "not": { "const": "output_limit_exceeded" } },
107
+ "watchdogReason": { "$ref": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json#/properties/watchdogReason", "not": { "const": "output_limit_exceeded" } },
108
108
  "runnerModelOverrideAbsent": { "type": "boolean" }
109
109
  }
110
110
  },
@@ -0,0 +1,374 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.skill-family.example/v1/plugin-verification-request.json",
4
+ "title": "Plugin verification request",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "kind",
10
+ "operation",
11
+ "verificationSetId",
12
+ "goal",
13
+ "source",
14
+ "host",
15
+ "install"
16
+ ],
17
+ "properties": {
18
+ "schemaVersion": {
19
+ "const": 1
20
+ },
21
+ "kind": {
22
+ "const": "skill-family.plugin-verification-request"
23
+ },
24
+ "operation": {
25
+ "const": "plugin-verification"
26
+ },
27
+ "verificationSetId": {
28
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
29
+ },
30
+ "goal": {
31
+ "enum": [
32
+ "install-only",
33
+ "install-and-invoke"
34
+ ]
35
+ },
36
+ "source": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": [
40
+ "type",
41
+ "candidateRef",
42
+ "sourceManifestSha256",
43
+ "membersDigest"
44
+ ],
45
+ "properties": {
46
+ "type": {
47
+ "enum": [
48
+ "local-staged",
49
+ "public-channel"
50
+ ]
51
+ },
52
+ "candidateRef": {
53
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
54
+ },
55
+ "sourceManifestSha256": {
56
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
57
+ },
58
+ "membersDigest": {
59
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
60
+ },
61
+ "channel": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": [
65
+ "marketplaceId",
66
+ "pluginId",
67
+ "version",
68
+ "sourceRef",
69
+ "locatorSha256"
70
+ ],
71
+ "properties": {
72
+ "marketplaceId": {
73
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
74
+ },
75
+ "pluginId": {
76
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
77
+ },
78
+ "version": {
79
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverVersion"
80
+ },
81
+ "sourceRef": {
82
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/opaque"
83
+ },
84
+ "locatorSha256": {
85
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
86
+ }
87
+ }
88
+ }
89
+ }
90
+ },
91
+ "host": {
92
+ "type": "object",
93
+ "additionalProperties": false,
94
+ "required": [
95
+ "hostId",
96
+ "descriptorSha256",
97
+ "driverId",
98
+ "driverVersion"
99
+ ],
100
+ "properties": {
101
+ "hostId": {
102
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/hostId"
103
+ },
104
+ "descriptorSha256": {
105
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
106
+ },
107
+ "driverId": {
108
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverId"
109
+ },
110
+ "driverVersion": {
111
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/host/properties/driverVersion"
112
+ },
113
+ "cliVersion": {
114
+ "type": "string",
115
+ "minLength": 1,
116
+ "maxLength": 256
117
+ },
118
+ "executableSha256": {
119
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
120
+ }
121
+ }
122
+ },
123
+ "install": {
124
+ "type": "object",
125
+ "additionalProperties": false,
126
+ "required": [
127
+ "mode"
128
+ ],
129
+ "properties": {
130
+ "mode": {
131
+ "const": "fresh-tree"
132
+ },
133
+ "timeoutPolicy": {
134
+ "$ref": "https://contracts.skill-family.example/v1/timeout-policy.json"
135
+ },
136
+ "outputByteLimits": {
137
+ "$ref": "https://contracts.skill-family.example/v1/watchdog-termination-envelope.json#/$defs/outputByteLimits"
138
+ }
139
+ }
140
+ },
141
+ "auth": {
142
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/properties/auth"
143
+ },
144
+ "invocation": {
145
+ "type": "object",
146
+ "additionalProperties": false,
147
+ "required": [
148
+ "effectivePromptSha256",
149
+ "fixtureClosureDigest",
150
+ "protectedWorkspaceClosureDigest",
151
+ "timeoutPolicy",
152
+ "modelOverridePolicy",
153
+ "restrictions"
154
+ ],
155
+ "properties": {
156
+ "effectivePromptSha256": {
157
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
158
+ },
159
+ "fixtureClosureDigest": {
160
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
161
+ },
162
+ "protectedWorkspaceClosureDigest": {
163
+ "$ref": "https://contracts.skill-family.example/v1/host-verification-request.json#/$defs/sha256"
164
+ },
165
+ "timeoutPolicy": {
166
+ "$ref": "https://contracts.skill-family.example/v1/timeout-policy.json"
167
+ },
168
+ "modelOverridePolicy": {
169
+ "const": "forbidden"
170
+ },
171
+ "restrictions": {
172
+ "type": "object",
173
+ "additionalProperties": false,
174
+ "properties": {
175
+ "approvalPolicy": {
176
+ "const": "deny-unattended"
177
+ },
178
+ "tools": {
179
+ "const": "skill-only"
180
+ },
181
+ "mcp": {
182
+ "const": "disabled"
183
+ },
184
+ "settingsSources": {
185
+ "const": "empty"
186
+ },
187
+ "sessionPersistence": {
188
+ "const": "disabled"
189
+ },
190
+ "history": {
191
+ "const": "fresh"
192
+ },
193
+ "browserIntegration": {
194
+ "const": "disabled"
195
+ },
196
+ "maxTurns": {
197
+ "type": "integer",
198
+ "minimum": 1,
199
+ "maximum": 100
200
+ },
201
+ "maxBudgetUsd": {
202
+ "type": "number",
203
+ "exclusiveMinimum": 0,
204
+ "maximum": 100
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ },
211
+ "allOf": [
212
+ {
213
+ "if": {
214
+ "type": "object",
215
+ "properties": {
216
+ "goal": {
217
+ "const": "install-and-invoke"
218
+ }
219
+ },
220
+ "required": [
221
+ "goal"
222
+ ]
223
+ },
224
+ "then": {
225
+ "type": "object",
226
+ "required": [
227
+ "invocation"
228
+ ],
229
+ "properties": {
230
+ "invocation": {}
231
+ }
232
+ },
233
+ "else": {
234
+ "type": "object",
235
+ "properties": {
236
+ "invocation": false
237
+ }
238
+ }
239
+ },
240
+ {
241
+ "if": {
242
+ "type": "object",
243
+ "properties": {
244
+ "source": {
245
+ "type": "object",
246
+ "properties": {
247
+ "type": {
248
+ "const": "public-channel"
249
+ }
250
+ },
251
+ "required": [
252
+ "type"
253
+ ]
254
+ }
255
+ },
256
+ "required": [
257
+ "source"
258
+ ]
259
+ },
260
+ "then": {
261
+ "type": "object",
262
+ "properties": {
263
+ "source": {
264
+ "type": "object",
265
+ "properties": {
266
+ "channel": {
267
+ "type": "object"
268
+ }
269
+ },
270
+ "required": [
271
+ "channel"
272
+ ]
273
+ },
274
+ "install": {
275
+ "type": "object",
276
+ "properties": {
277
+ "timeoutPolicy": {}
278
+ },
279
+ "required": [
280
+ "timeoutPolicy"
281
+ ]
282
+ }
283
+ }
284
+ },
285
+ "else": {
286
+ "type": "object",
287
+ "properties": {
288
+ "source": {
289
+ "type": "object",
290
+ "properties": {
291
+ "channel": false
292
+ }
293
+ },
294
+ "install": {
295
+ "type": "object",
296
+ "properties": {
297
+ "timeoutPolicy": false,
298
+ "outputByteLimits": false
299
+ }
300
+ }
301
+ }
302
+ }
303
+ },
304
+ {
305
+ "if": {
306
+ "anyOf": [
307
+ {
308
+ "type": "object",
309
+ "properties": {
310
+ "goal": {
311
+ "const": "install-and-invoke"
312
+ }
313
+ },
314
+ "required": [
315
+ "goal"
316
+ ]
317
+ },
318
+ {
319
+ "type": "object",
320
+ "properties": {
321
+ "source": {
322
+ "type": "object",
323
+ "properties": {
324
+ "type": {
325
+ "const": "public-channel"
326
+ }
327
+ },
328
+ "required": [
329
+ "type"
330
+ ]
331
+ }
332
+ },
333
+ "required": [
334
+ "source"
335
+ ]
336
+ }
337
+ ]
338
+ },
339
+ "then": {
340
+ "type": "object",
341
+ "required": [
342
+ "auth"
343
+ ],
344
+ "properties": {
345
+ "auth": {},
346
+ "host": {
347
+ "type": "object",
348
+ "properties": {
349
+ "cliVersion": {},
350
+ "executableSha256": {}
351
+ },
352
+ "required": [
353
+ "cliVersion",
354
+ "executableSha256"
355
+ ]
356
+ }
357
+ }
358
+ },
359
+ "else": {
360
+ "type": "object",
361
+ "properties": {
362
+ "auth": false,
363
+ "host": {
364
+ "type": "object",
365
+ "properties": {
366
+ "cliVersion": false,
367
+ "executableSha256": false
368
+ }
369
+ }
370
+ }
371
+ }
372
+ }
373
+ ]
374
+ }