@harness-control/protocol 0.4.9 → 0.4.11

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 (64) hide show
  1. package/LICENSE +202 -202
  2. package/README.md +26 -26
  3. package/dist/accounts.d.ts +0 -0
  4. package/dist/accounts.js +0 -0
  5. package/dist/bin/conformance.d.ts +0 -0
  6. package/dist/bin/conformance.js +0 -0
  7. package/dist/bin/generate-json-schema.d.ts +0 -0
  8. package/dist/bin/generate-json-schema.js +0 -0
  9. package/dist/conformance.d.ts +0 -0
  10. package/dist/conformance.js +0 -0
  11. package/dist/conversation.d.ts +46 -0
  12. package/dist/conversation.js +12 -0
  13. package/dist/index.d.ts +231 -3
  14. package/dist/index.js +27 -1
  15. package/dist/json-schema.d.ts +0 -0
  16. package/dist/json-schema.js +0 -0
  17. package/dist/mcp-review.d.ts +0 -0
  18. package/dist/mcp-review.js +0 -0
  19. package/dist/native-review.d.ts +15 -0
  20. package/dist/native-review.js +19 -0
  21. package/dist/pairing.d.ts +0 -0
  22. package/dist/pairing.js +0 -0
  23. package/dist/session-reducer.d.ts +0 -0
  24. package/dist/session-reducer.js +0 -0
  25. package/fixtures/conformance/invalid/accounts-negative-quota.json +35 -35
  26. package/fixtures/conformance/invalid/accounts-secret.json +36 -36
  27. package/fixtures/conformance/invalid/arbitrary-event-family.json +13 -13
  28. package/fixtures/conformance/invalid/local-action-lease-binding-mismatch.json +49 -49
  29. package/fixtures/conformance/invalid/local-action-missing-turn-id.json +20 -20
  30. package/fixtures/conformance/invalid/local-action-patch-missing-base-hash.json +51 -51
  31. package/fixtures/conformance/invalid/local-action-shell-missing-approval.json +56 -56
  32. package/fixtures/conformance/invalid/mcp-stdio-attachment.json +27 -27
  33. package/fixtures/conformance/invalid/session-snapshot-unsafe-omission.json +26 -26
  34. package/fixtures/conformance/invalid/terminal-turn-missing-final-output.json +16 -16
  35. package/fixtures/conformance/invalid/unknown-payload-field.json +14 -14
  36. package/fixtures/conformance/invalid/unknown-top-level-field.json +14 -14
  37. package/fixtures/conformance/valid/accounts-read.json +11 -11
  38. package/fixtures/conformance/valid/accounts-snapshot.json +35 -35
  39. package/fixtures/conformance/valid/accounts-unavailable.json +21 -21
  40. package/fixtures/conformance/valid/command-ack.json +11 -11
  41. package/fixtures/conformance/valid/extension-event.json +18 -18
  42. package/fixtures/conformance/valid/host-hello.json +22 -22
  43. package/fixtures/conformance/valid/host-replay-unavailable.json +15 -15
  44. package/fixtures/conformance/valid/local-action-dev-server-start.json +68 -68
  45. package/fixtures/conformance/valid/local-action-dev-server-stop.json +52 -52
  46. package/fixtures/conformance/valid/local-action-error.json +38 -38
  47. package/fixtures/conformance/valid/local-action-filesystem-list.json +52 -52
  48. package/fixtures/conformance/valid/local-action-filesystem-patch.json +53 -53
  49. package/fixtures/conformance/valid/local-action-filesystem-read.json +51 -51
  50. package/fixtures/conformance/valid/local-action-filesystem-write.json +53 -53
  51. package/fixtures/conformance/valid/local-action-git-diff.json +53 -53
  52. package/fixtures/conformance/valid/local-action-git-status.json +51 -51
  53. package/fixtures/conformance/valid/local-action-response.json +49 -49
  54. package/fixtures/conformance/valid/local-action-shell-exec.json +63 -63
  55. package/fixtures/conformance/valid/provider-event.json +18 -18
  56. package/fixtures/conformance/valid/session-snapshot-request.json +9 -9
  57. package/fixtures/conformance/valid/session-snapshot.json +28 -28
  58. package/fixtures/conformance/valid/session-start-with-leases.json +85 -85
  59. package/fixtures/conformance/valid/session-start-with-runner-stdio-profile.json +27 -27
  60. package/fixtures/conformance/valid/turn-completed.json +30 -30
  61. package/fixtures/mcp-review.json +20 -20
  62. package/package.json +68 -68
  63. package/schemas/hcp-message.schema.json +390 -0
  64. package/schemas/mcp-review.json +0 -0
@@ -1,20 +1,20 @@
1
- [
2
- {
3
- "action_json": "{\"kind\":\"mcp_tool\",\"attachment_name\":\"server\",\"tool_name\":\"write\",\"arguments\":{\"text\":\"é🙂\"}}",
4
- "valid": true,
5
- "sha256": "f56beacaa38c8377403c751206b8c1998b45d6cc9a146d84c3e1ede2652ce7c4"
6
- },
7
- {
8
- "action_json": "{\"kind\":\"mcp_tool\",\"attachment_name\":\"server\",\"tool_name\":\"write\",\"arguments\":{}}",
9
- "valid": true,
10
- "sha256": "3a571ac3eec173ae039bedda0a3c015b7e3577af92efce1b6c1b6949d06cf8c0"
11
- },
12
- {
13
- "action_json": "{\"kind\":\"mcp_tool\",\"attachment_name\":\"\",\"tool_name\":\"write\",\"arguments\":{}}",
14
- "valid": false
15
- },
16
- {
17
- "action_json": "{}",
18
- "valid": false
19
- }
20
- ]
1
+ [
2
+ {
3
+ "action_json": "{\"kind\":\"mcp_tool\",\"attachment_name\":\"server\",\"tool_name\":\"write\",\"arguments\":{\"text\":\"é🙂\"}}",
4
+ "valid": true,
5
+ "sha256": "f56beacaa38c8377403c751206b8c1998b45d6cc9a146d84c3e1ede2652ce7c4"
6
+ },
7
+ {
8
+ "action_json": "{\"kind\":\"mcp_tool\",\"attachment_name\":\"server\",\"tool_name\":\"write\",\"arguments\":{}}",
9
+ "valid": true,
10
+ "sha256": "3a571ac3eec173ae039bedda0a3c015b7e3577af92efce1b6c1b6949d06cf8c0"
11
+ },
12
+ {
13
+ "action_json": "{\"kind\":\"mcp_tool\",\"attachment_name\":\"\",\"tool_name\":\"write\",\"arguments\":{}}",
14
+ "valid": false
15
+ },
16
+ {
17
+ "action_json": "{}",
18
+ "valid": false
19
+ }
20
+ ]
package/package.json CHANGED
@@ -1,68 +1,68 @@
1
- {
2
- "name": "@harness-control/protocol",
3
- "version": "0.4.9",
4
- "license": "Apache-2.0",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "bin": {
9
- "hcp-protocol-conformance": "./dist/bin/conformance.js"
10
- },
11
- "exports": {
12
- ".": {
13
- "types": "./dist/index.d.ts",
14
- "import": "./dist/index.js"
15
- },
16
- "./conformance": {
17
- "types": "./dist/conformance.d.ts",
18
- "import": "./dist/conformance.js"
19
- },
20
- "./json-schema": {
21
- "types": "./dist/json-schema.d.ts",
22
- "import": "./dist/json-schema.js"
23
- },
24
- "./schema.json": {
25
- "default": "./schemas/hcp-message.schema.json"
26
- },
27
- "./package.json": "./package.json",
28
- "./mcp-review.json": {
29
- "default": "./schemas/mcp-review.json"
30
- },
31
- "./mcp-review-fixtures.json": {
32
- "default": "./fixtures/mcp-review.json"
33
- }
34
- },
35
- "scripts": {
36
- "build": "tsc -b && npm run schema:generate",
37
- "check": "tsc -b --pretty false",
38
- "conformance": "tsx src/bin/conformance.ts --fixtures fixtures/conformance",
39
- "schema:generate": "tsx src/bin/generate-json-schema.ts",
40
- "test": "tsx --test src/**/*.test.ts test/**/*.test.ts"
41
- },
42
- "dependencies": {
43
- "zod": "4.4.3"
44
- },
45
- "description": "Types, validation, JSON Schema and reducers for Harness Control Protocol",
46
- "engines": {
47
- "node": ">=22"
48
- },
49
- "publishConfig": {
50
- "access": "public"
51
- },
52
- "repository": {
53
- "type": "git",
54
- "url": "git+https://github.com/qazisaad/harness-control-protocol.git",
55
- "directory": "packages/hcp-protocol"
56
- },
57
- "files": [
58
- "dist",
59
- "!dist/**/*.test.*",
60
- "!dist/**/test/**",
61
- "!dist/**/*.map",
62
- "README.md",
63
- "LICENSE",
64
- "schemas",
65
- "fixtures/conformance",
66
- "fixtures/mcp-review.json"
67
- ]
68
- }
1
+ {
2
+ "name": "@harness-control/protocol",
3
+ "version": "0.4.11",
4
+ "license": "Apache-2.0",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "hcp-protocol-conformance": "./dist/bin/conformance.js"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ },
16
+ "./conformance": {
17
+ "types": "./dist/conformance.d.ts",
18
+ "import": "./dist/conformance.js"
19
+ },
20
+ "./json-schema": {
21
+ "types": "./dist/json-schema.d.ts",
22
+ "import": "./dist/json-schema.js"
23
+ },
24
+ "./schema.json": {
25
+ "default": "./schemas/hcp-message.schema.json"
26
+ },
27
+ "./package.json": "./package.json",
28
+ "./mcp-review.json": {
29
+ "default": "./schemas/mcp-review.json"
30
+ },
31
+ "./mcp-review-fixtures.json": {
32
+ "default": "./fixtures/mcp-review.json"
33
+ }
34
+ },
35
+ "scripts": {
36
+ "build": "tsc -b && npm run schema:generate",
37
+ "check": "tsc -b --pretty false",
38
+ "conformance": "tsx src/bin/conformance.ts --fixtures fixtures/conformance",
39
+ "schema:generate": "tsx src/bin/generate-json-schema.ts",
40
+ "test": "tsx --test src/**/*.test.ts test/**/*.test.ts"
41
+ },
42
+ "dependencies": {
43
+ "zod": "4.4.3"
44
+ },
45
+ "description": "Types, validation, JSON Schema and reducers for Harness Control Protocol",
46
+ "engines": {
47
+ "node": ">=22"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/qazisaad/harness-control-protocol.git",
55
+ "directory": "packages/hcp-protocol"
56
+ },
57
+ "files": [
58
+ "dist",
59
+ "!dist/**/*.test.*",
60
+ "!dist/**/test/**",
61
+ "!dist/**/*.map",
62
+ "README.md",
63
+ "LICENSE",
64
+ "schemas",
65
+ "fixtures/conformance",
66
+ "fixtures/mcp-review.json"
67
+ ]
68
+ }
@@ -1,6 +1,238 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "oneOf": [
4
+ {
5
+ "type": "object",
6
+ "properties": {
7
+ "id": {
8
+ "type": "string",
9
+ "minLength": 1
10
+ },
11
+ "type": {
12
+ "type": "string",
13
+ "const": "harness.conversation.request"
14
+ },
15
+ "version": {
16
+ "type": "string",
17
+ "const": "hcp.v0"
18
+ },
19
+ "sent_at": {
20
+ "type": "string",
21
+ "format": "date-time",
22
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
23
+ },
24
+ "payload": {
25
+ "type": "object",
26
+ "properties": {
27
+ "session_id": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "maxLength": 512
31
+ },
32
+ "operation": {
33
+ "oneOf": [
34
+ {
35
+ "type": "object",
36
+ "properties": {
37
+ "kind": {
38
+ "type": "string",
39
+ "const": "read"
40
+ }
41
+ },
42
+ "required": [
43
+ "kind"
44
+ ],
45
+ "additionalProperties": false
46
+ },
47
+ {
48
+ "type": "object",
49
+ "properties": {
50
+ "kind": {
51
+ "type": "string",
52
+ "const": "rollback"
53
+ },
54
+ "num_turns": {
55
+ "type": "integer",
56
+ "minimum": 1,
57
+ "maximum": 100
58
+ },
59
+ "expected_history_hash": {
60
+ "type": "string",
61
+ "pattern": "^[a-f0-9]{64}$"
62
+ }
63
+ },
64
+ "required": [
65
+ "kind",
66
+ "num_turns",
67
+ "expected_history_hash"
68
+ ],
69
+ "additionalProperties": false
70
+ },
71
+ {
72
+ "type": "object",
73
+ "properties": {
74
+ "kind": {
75
+ "type": "string",
76
+ "const": "retire"
77
+ }
78
+ },
79
+ "required": [
80
+ "kind"
81
+ ],
82
+ "additionalProperties": false
83
+ }
84
+ ]
85
+ }
86
+ },
87
+ "required": [
88
+ "session_id",
89
+ "operation"
90
+ ],
91
+ "additionalProperties": false
92
+ },
93
+ "metadata": {
94
+ "type": "object",
95
+ "propertyNames": {
96
+ "type": "string"
97
+ },
98
+ "additionalProperties": {}
99
+ }
100
+ },
101
+ "required": [
102
+ "id",
103
+ "type",
104
+ "version",
105
+ "sent_at",
106
+ "payload"
107
+ ],
108
+ "additionalProperties": false
109
+ },
110
+ {
111
+ "type": "object",
112
+ "properties": {
113
+ "id": {
114
+ "type": "string",
115
+ "minLength": 1
116
+ },
117
+ "type": {
118
+ "type": "string",
119
+ "const": "harness.conversation.result"
120
+ },
121
+ "version": {
122
+ "type": "string",
123
+ "const": "hcp.v0"
124
+ },
125
+ "sent_at": {
126
+ "type": "string",
127
+ "format": "date-time",
128
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
129
+ },
130
+ "payload": {
131
+ "type": "object",
132
+ "properties": {
133
+ "command_id": {
134
+ "type": "string",
135
+ "minLength": 1
136
+ },
137
+ "session_id": {
138
+ "type": "string",
139
+ "minLength": 1
140
+ },
141
+ "operation": {
142
+ "type": "string",
143
+ "enum": [
144
+ "read",
145
+ "rollback",
146
+ "retire"
147
+ ]
148
+ },
149
+ "filesystem_undo": {
150
+ "type": "boolean",
151
+ "const": false
152
+ },
153
+ "history": {
154
+ "type": "object",
155
+ "properties": {
156
+ "history_hash": {
157
+ "type": "string",
158
+ "pattern": "^[a-f0-9]{64}$"
159
+ },
160
+ "turn_count": {
161
+ "type": "integer",
162
+ "minimum": 0,
163
+ "maximum": 9007199254740991
164
+ },
165
+ "truncated": {
166
+ "type": "boolean"
167
+ },
168
+ "turns": {
169
+ "maxItems": 100,
170
+ "type": "array",
171
+ "items": {
172
+ "type": "object",
173
+ "properties": {
174
+ "id": {
175
+ "type": "string"
176
+ },
177
+ "status": {
178
+ "type": "string"
179
+ },
180
+ "items": {
181
+ "type": "array",
182
+ "items": {
183
+ "type": "object",
184
+ "propertyNames": {
185
+ "type": "string"
186
+ },
187
+ "additionalProperties": {
188
+ "$ref": "#/$defs/__schema0"
189
+ }
190
+ }
191
+ }
192
+ },
193
+ "required": [
194
+ "id",
195
+ "status",
196
+ "items"
197
+ ],
198
+ "additionalProperties": false
199
+ }
200
+ }
201
+ },
202
+ "required": [
203
+ "history_hash",
204
+ "turn_count",
205
+ "truncated",
206
+ "turns"
207
+ ],
208
+ "additionalProperties": false
209
+ }
210
+ },
211
+ "required": [
212
+ "command_id",
213
+ "session_id",
214
+ "operation",
215
+ "filesystem_undo"
216
+ ],
217
+ "additionalProperties": false
218
+ },
219
+ "metadata": {
220
+ "type": "object",
221
+ "propertyNames": {
222
+ "type": "string"
223
+ },
224
+ "additionalProperties": {}
225
+ }
226
+ },
227
+ "required": [
228
+ "id",
229
+ "type",
230
+ "version",
231
+ "sent_at",
232
+ "payload"
233
+ ],
234
+ "additionalProperties": false
235
+ },
4
236
  {
5
237
  "type": "object",
6
238
  "properties": {
@@ -1168,6 +1400,15 @@
1168
1400
  "session_continuation": {
1169
1401
  "type": "boolean"
1170
1402
  },
1403
+ "plan_mode": {
1404
+ "type": "boolean"
1405
+ },
1406
+ "native_history": {
1407
+ "type": "boolean"
1408
+ },
1409
+ "conversation_rollback": {
1410
+ "type": "boolean"
1411
+ },
1171
1412
  "sandbox_modes": {
1172
1413
  "type": "array",
1173
1414
  "items": {
@@ -1387,6 +1628,9 @@
1387
1628
  ],
1388
1629
  "additionalProperties": false
1389
1630
  }
1631
+ },
1632
+ "image_input": {
1633
+ "type": "boolean"
1390
1634
  }
1391
1635
  },
1392
1636
  "required": [
@@ -2166,6 +2410,66 @@
2166
2410
  }
2167
2411
  ]
2168
2412
  }
2413
+ },
2414
+ "first_turn": {
2415
+ "type": "object",
2416
+ "properties": {
2417
+ "turn_id": {
2418
+ "type": "string",
2419
+ "minLength": 1
2420
+ },
2421
+ "input": {
2422
+ "type": "string"
2423
+ },
2424
+ "not_after": {
2425
+ "type": "string",
2426
+ "format": "date-time",
2427
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
2428
+ },
2429
+ "mode": {
2430
+ "type": "string",
2431
+ "enum": [
2432
+ "execute",
2433
+ "plan"
2434
+ ]
2435
+ },
2436
+ "images": {
2437
+ "minItems": 1,
2438
+ "maxItems": 4,
2439
+ "type": "array",
2440
+ "items": {
2441
+ "type": "object",
2442
+ "properties": {
2443
+ "mime_type": {
2444
+ "type": "string",
2445
+ "enum": [
2446
+ "image/gif",
2447
+ "image/jpeg",
2448
+ "image/png",
2449
+ "image/webp"
2450
+ ]
2451
+ },
2452
+ "data_base64": {
2453
+ "type": "string",
2454
+ "minLength": 4,
2455
+ "maxLength": 524288,
2456
+ "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
2457
+ }
2458
+ },
2459
+ "required": [
2460
+ "mime_type",
2461
+ "data_base64"
2462
+ ],
2463
+ "additionalProperties": false
2464
+ }
2465
+ }
2466
+ },
2467
+ "required": [
2468
+ "turn_id",
2469
+ "input",
2470
+ "not_after"
2471
+ ],
2472
+ "additionalProperties": false
2169
2473
  }
2170
2474
  },
2171
2475
  "required": [
@@ -2609,6 +2913,43 @@
2609
2913
  "input": {
2610
2914
  "type": "string"
2611
2915
  },
2916
+ "mode": {
2917
+ "type": "string",
2918
+ "enum": [
2919
+ "execute",
2920
+ "plan"
2921
+ ]
2922
+ },
2923
+ "images": {
2924
+ "minItems": 1,
2925
+ "maxItems": 4,
2926
+ "type": "array",
2927
+ "items": {
2928
+ "type": "object",
2929
+ "properties": {
2930
+ "mime_type": {
2931
+ "type": "string",
2932
+ "enum": [
2933
+ "image/gif",
2934
+ "image/jpeg",
2935
+ "image/png",
2936
+ "image/webp"
2937
+ ]
2938
+ },
2939
+ "data_base64": {
2940
+ "type": "string",
2941
+ "minLength": 4,
2942
+ "maxLength": 524288,
2943
+ "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
2944
+ }
2945
+ },
2946
+ "required": [
2947
+ "mime_type",
2948
+ "data_base64"
2949
+ ],
2950
+ "additionalProperties": false
2951
+ }
2952
+ },
2612
2953
  "model_selection": {
2613
2954
  "type": "object",
2614
2955
  "properties": {
@@ -7959,6 +8300,10 @@
7959
8300
  "minimum": 0,
7960
8301
  "maximum": 9007199254740991
7961
8302
  },
8303
+ "native_conversation_ready": {
8304
+ "type": "boolean",
8305
+ "const": true
8306
+ },
7962
8307
  "local_capabilities": {
7963
8308
  "type": "array",
7964
8309
  "items": {
@@ -8153,6 +8498,10 @@
8153
8498
  "minimum": 0,
8154
8499
  "maximum": 9007199254740991
8155
8500
  },
8501
+ "native_conversation_ready": {
8502
+ "type": "boolean",
8503
+ "const": true
8504
+ },
8156
8505
  "local_capabilities": {
8157
8506
  "type": "array",
8158
8507
  "items": {
@@ -8347,6 +8696,10 @@
8347
8696
  "minimum": 0,
8348
8697
  "maximum": 9007199254740991
8349
8698
  },
8699
+ "native_conversation_ready": {
8700
+ "type": "boolean",
8701
+ "const": true
8702
+ },
8350
8703
  "local_capabilities": {
8351
8704
  "type": "array",
8352
8705
  "items": {
@@ -8541,6 +8894,10 @@
8541
8894
  "minimum": 0,
8542
8895
  "maximum": 9007199254740991
8543
8896
  },
8897
+ "native_conversation_ready": {
8898
+ "type": "boolean",
8899
+ "const": true
8900
+ },
8544
8901
  "local_capabilities": {
8545
8902
  "type": "array",
8546
8903
  "items": {
@@ -18962,6 +19319,39 @@
18962
19319
  "additionalProperties": false
18963
19320
  }
18964
19321
  ],
19322
+ "$defs": {
19323
+ "__schema0": {
19324
+ "anyOf": [
19325
+ {
19326
+ "type": "string"
19327
+ },
19328
+ {
19329
+ "type": "number"
19330
+ },
19331
+ {
19332
+ "type": "boolean"
19333
+ },
19334
+ {
19335
+ "type": "null"
19336
+ },
19337
+ {
19338
+ "type": "array",
19339
+ "items": {
19340
+ "$ref": "#/$defs/__schema0"
19341
+ }
19342
+ },
19343
+ {
19344
+ "type": "object",
19345
+ "propertyNames": {
19346
+ "type": "string"
19347
+ },
19348
+ "additionalProperties": {
19349
+ "$ref": "#/$defs/__schema0"
19350
+ }
19351
+ }
19352
+ ]
19353
+ }
19354
+ },
18965
19355
  "$id": "https://schemas.harness-control.local/hcp.v0/message.schema.json",
18966
19356
  "title": "HCP protocol message",
18967
19357
  "description": "Structural JSON Schema for known hcp.v0 protocol messages. Runtime parsers enforce additional cross-field invariants such as lease-to-attribution equality."
File without changes