@heddleagent/execution-host-client 6.0.0 → 6.2.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.
Files changed (62) hide show
  1. package/README.md +76 -14
  2. package/dist/agentcore/agentcore-execution-host.d.ts +17 -0
  3. package/dist/agentcore/agentcore-execution-host.d.ts.map +1 -0
  4. package/dist/agentcore/agentcore-execution-host.js +201 -0
  5. package/dist/agentcore/agentcore-execution-host.js.map +1 -0
  6. package/dist/agentcore/index.d.ts +3 -0
  7. package/dist/agentcore/index.d.ts.map +1 -0
  8. package/dist/agentcore/index.js +2 -0
  9. package/dist/agentcore/index.js.map +1 -0
  10. package/dist/agentcore/types.d.ts +14 -0
  11. package/dist/agentcore/types.d.ts.map +1 -0
  12. package/dist/agentcore/types.js +2 -0
  13. package/dist/agentcore/types.js.map +1 -0
  14. package/dist/authority/jose-execution-authority.js +2 -2
  15. package/dist/authority/jose-execution-authority.js.map +1 -1
  16. package/dist/contracts/index.d.ts +106 -3
  17. package/dist/contracts/index.d.ts.map +1 -1
  18. package/dist/contracts/index.js +67 -2
  19. package/dist/contracts/index.js.map +1 -1
  20. package/dist/conversation/index.d.ts +1 -1
  21. package/dist/conversation/index.d.ts.map +1 -1
  22. package/dist/conversation/index.js.map +1 -1
  23. package/dist/conversation/types.d.ts +4 -2
  24. package/dist/conversation/types.d.ts.map +1 -1
  25. package/dist/conversation/types.js.map +1 -1
  26. package/dist/heartbeat/hosted-heartbeat-agent-execution-transport.d.ts +14 -0
  27. package/dist/heartbeat/hosted-heartbeat-agent-execution-transport.d.ts.map +1 -0
  28. package/dist/heartbeat/hosted-heartbeat-agent-execution-transport.js +38 -0
  29. package/dist/heartbeat/hosted-heartbeat-agent-execution-transport.js.map +1 -0
  30. package/dist/heartbeat/hosted-heartbeat-task-service.d.ts +22 -0
  31. package/dist/heartbeat/hosted-heartbeat-task-service.d.ts.map +1 -0
  32. package/dist/heartbeat/hosted-heartbeat-task-service.js +96 -0
  33. package/dist/heartbeat/hosted-heartbeat-task-service.js.map +1 -0
  34. package/dist/heartbeat/index.d.ts +5 -0
  35. package/dist/heartbeat/index.d.ts.map +1 -0
  36. package/dist/heartbeat/index.js +4 -0
  37. package/dist/heartbeat/index.js.map +1 -0
  38. package/dist/heartbeat/types.d.ts +83 -0
  39. package/dist/heartbeat/types.d.ts.map +1 -0
  40. package/dist/heartbeat/types.js +17 -0
  41. package/dist/heartbeat/types.js.map +1 -0
  42. package/dist/http-sse/direct-http-execution-host.d.ts +4 -3
  43. package/dist/http-sse/direct-http-execution-host.d.ts.map +1 -1
  44. package/dist/http-sse/direct-http-execution-host.js +56 -21
  45. package/dist/http-sse/direct-http-execution-host.js.map +1 -1
  46. package/dist/http-sse/index.d.ts +1 -1
  47. package/dist/http-sse/index.d.ts.map +1 -1
  48. package/dist/http-sse/index.js.map +1 -1
  49. package/dist/http-sse/types.d.ts +11 -1
  50. package/dist/http-sse/types.d.ts.map +1 -1
  51. package/dist/http-sse/types.js.map +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1 -0
  55. package/dist/index.js.map +1 -1
  56. package/package.json +11 -1
  57. package/spec/v1/README.md +14 -4
  58. package/spec/v1/fixtures/manifest.json +12 -0
  59. package/spec/v1/fixtures/valid-heartbeat-request.json +23 -0
  60. package/spec/v1/fixtures/valid-heartbeat-result.sse +13 -0
  61. package/spec/v1/openapi.json +513 -6
  62. package/spec/v1/schema-bundle.json +499 -2
@@ -7,6 +7,12 @@
7
7
  "kind": "json-schema",
8
8
  "expected": "valid"
9
9
  },
10
+ {
11
+ "id": "valid-heartbeat-request",
12
+ "file": "valid-heartbeat-request.json",
13
+ "kind": "json-schema",
14
+ "expected": "valid"
15
+ },
10
16
  {
11
17
  "id": "request-authority-in-body",
12
18
  "file": "invalid-request-extra-field.json",
@@ -19,6 +25,12 @@
19
25
  "kind": "sse",
20
26
  "expected": "complete"
21
27
  },
28
+ {
29
+ "id": "valid-heartbeat-result",
30
+ "file": "valid-heartbeat-result.sse",
31
+ "kind": "sse",
32
+ "expected": "complete"
33
+ },
22
34
  {
23
35
  "id": "cancelled",
24
36
  "file": "cancelled.sse",
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "heartbeat-task",
4
+ "invocationId": "heartbeat-execution-001",
5
+ "taskId": "heartbeat-task-001",
6
+ "task": "Review the workspace for actionable changes.",
7
+ "checkpoint": {
8
+ "version": 1,
9
+ "createdAt": "2026-08-10T04:00:00.000Z",
10
+ "state": {
11
+ "runId": "prior-run-001"
12
+ }
13
+ },
14
+ "runContext": {
15
+ "currentDateTime": "2026-08-10T04:00:00.000Z",
16
+ "intervalMs": 60000,
17
+ "continuationMode": "operator",
18
+ "previousRunId": "prior-run-001"
19
+ },
20
+ "model": "openai:gpt-5.6",
21
+ "maxSteps": 24,
22
+ "deadlineAt": "2026-08-10T04:10:00.000Z"
23
+ }
@@ -0,0 +1,13 @@
1
+ id: 0
2
+ event: accepted
3
+ data: {"schemaVersion":1,"invocationId":"heartbeat-execution-001","runId":"heartbeat-run-001","sequence":0,"timestamp":"2026-08-10T04:00:00.000Z","kind":"accepted"}
4
+
5
+ id: 1
6
+ event: activity
7
+ data: {"schemaVersion":1,"invocationId":"heartbeat-execution-001","runId":"heartbeat-run-001","sequence":1,"timestamp":"2026-08-10T04:00:00.000Z","kind":"activity","activity":{"type":"heartbeat.decision","decision":"continue"}}
8
+
9
+ id: 2
10
+ event: result
11
+ data: {"schemaVersion":1,"invocationId":"heartbeat-execution-001","runId":"heartbeat-run-001","sequence":2,"timestamp":"2026-08-10T04:00:00.000Z","kind":"result","result":{"decision":"continue","summary":"No operator action required.","checkpoint":{"version":1,"createdAt":"2026-08-10T04:00:00.000Z","state":{"runId":"heartbeat-run-001"}},"state":{"runId":"heartbeat-run-001","outcome":"done","summary":"No operator action required."}}}
12
+
13
+ : fixture-clean-eof
@@ -10,9 +10,9 @@
10
10
  "paths": {
11
11
  "/invocations": {
12
12
  "post": {
13
- "operationId": "streamConversationTurn",
14
- "summary": "Run one hosted conversation turn",
15
- "description": "Starts one conversation turn and holds one SSE response open until a terminal event or an ambiguous interruption. A clean HTTP EOF is required before a terminal frame may be committed as final.",
13
+ "operationId": "streamExecutionHostInvocation",
14
+ "summary": "Run one supported Execution Host workflow",
15
+ "description": "Starts one conversation turn or heartbeat task and holds one SSE response open until a terminal event or an ambiguous interruption. A clean HTTP EOF is required before a terminal frame may be committed as final.",
16
16
  "parameters": [
17
17
  {
18
18
  "name": "x-amzn-bedrock-agentcore-runtime-session-id",
@@ -77,7 +77,17 @@
77
77
  "content": {
78
78
  "application/json": {
79
79
  "schema": {
80
- "$ref": "#/components/schemas/ConversationTurnRequest"
80
+ "oneOf": [
81
+ {
82
+ "$ref": "#/components/schemas/ConversationTurnRequest"
83
+ },
84
+ {
85
+ "$ref": "#/components/schemas/HeartbeatTaskRequest"
86
+ }
87
+ ],
88
+ "discriminator": {
89
+ "propertyName": "kind"
90
+ }
81
91
  }
82
92
  }
83
93
  }
@@ -267,6 +277,170 @@
267
277
  ],
268
278
  "additionalProperties": false
269
279
  },
280
+ "HeartbeatTaskRequest": {
281
+ "type": "object",
282
+ "properties": {
283
+ "schemaVersion": {
284
+ "type": "number",
285
+ "const": 1
286
+ },
287
+ "kind": {
288
+ "type": "string",
289
+ "const": "heartbeat-task"
290
+ },
291
+ "invocationId": {
292
+ "type": "string",
293
+ "minLength": 1,
294
+ "maxLength": 128,
295
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
296
+ },
297
+ "taskId": {
298
+ "type": "string",
299
+ "minLength": 1,
300
+ "maxLength": 128,
301
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
302
+ },
303
+ "task": {
304
+ "type": "string",
305
+ "minLength": 1,
306
+ "maxLength": 200000,
307
+ "x-heddle-trimmed": true
308
+ },
309
+ "checkpoint": {
310
+ "type": "object",
311
+ "propertyNames": {
312
+ "type": "string"
313
+ },
314
+ "additionalProperties": {
315
+ "$ref": "#/components/schemas/HeartbeatTaskRequest/$defs/__schema0"
316
+ }
317
+ },
318
+ "runContext": {
319
+ "type": "object",
320
+ "properties": {
321
+ "currentDateTime": {
322
+ "type": "string",
323
+ "format": "date-time",
324
+ "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)))$"
325
+ },
326
+ "intervalMs": {
327
+ "type": "integer",
328
+ "exclusiveMinimum": 0,
329
+ "maximum": 9007199254740991
330
+ },
331
+ "continuationMode": {
332
+ "type": "string",
333
+ "enum": [
334
+ "operator",
335
+ "agent"
336
+ ]
337
+ },
338
+ "nextRunAt": {
339
+ "type": "string",
340
+ "format": "date-time",
341
+ "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)))$"
342
+ },
343
+ "previousRunAt": {
344
+ "type": "string",
345
+ "format": "date-time",
346
+ "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)))$"
347
+ },
348
+ "previousRunId": {
349
+ "type": "string",
350
+ "minLength": 1,
351
+ "maxLength": 128,
352
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
353
+ }
354
+ },
355
+ "required": [
356
+ "currentDateTime",
357
+ "intervalMs"
358
+ ],
359
+ "additionalProperties": false
360
+ },
361
+ "model": {
362
+ "type": "string",
363
+ "minLength": 1,
364
+ "maxLength": 512
365
+ },
366
+ "reasoningEffort": {
367
+ "type": "string",
368
+ "enum": [
369
+ "none",
370
+ "low",
371
+ "medium",
372
+ "high",
373
+ "ultrahigh",
374
+ "max"
375
+ ]
376
+ },
377
+ "maxSteps": {
378
+ "type": "integer",
379
+ "exclusiveMinimum": 0,
380
+ "maximum": 10000
381
+ },
382
+ "searchIgnoreDirs": {
383
+ "maxItems": 1000,
384
+ "type": "array",
385
+ "items": {
386
+ "type": "string",
387
+ "minLength": 1,
388
+ "maxLength": 1024
389
+ }
390
+ },
391
+ "systemContext": {
392
+ "type": "string",
393
+ "maxLength": 200000
394
+ },
395
+ "deadlineAt": {
396
+ "type": "string",
397
+ "format": "date-time",
398
+ "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)))$"
399
+ }
400
+ },
401
+ "required": [
402
+ "schemaVersion",
403
+ "kind",
404
+ "invocationId",
405
+ "taskId",
406
+ "task",
407
+ "runContext"
408
+ ],
409
+ "additionalProperties": false,
410
+ "$defs": {
411
+ "__schema0": {
412
+ "anyOf": [
413
+ {
414
+ "type": "string"
415
+ },
416
+ {
417
+ "type": "number"
418
+ },
419
+ {
420
+ "type": "boolean"
421
+ },
422
+ {
423
+ "type": "null"
424
+ },
425
+ {
426
+ "type": "array",
427
+ "items": {
428
+ "$ref": "#/components/schemas/HeartbeatTaskRequest/$defs/__schema0"
429
+ }
430
+ },
431
+ {
432
+ "type": "object",
433
+ "propertyNames": {
434
+ "type": "string"
435
+ },
436
+ "additionalProperties": {
437
+ "$ref": "#/components/schemas/HeartbeatTaskRequest/$defs/__schema0"
438
+ }
439
+ }
440
+ ]
441
+ }
442
+ }
443
+ },
270
444
  "RuntimePublicResult": {
271
445
  "type": "object",
272
446
  "properties": {
@@ -617,6 +791,333 @@
617
791
  }
618
792
  ]
619
793
  },
794
+ "HeartbeatStreamEvent": {
795
+ "oneOf": [
796
+ {
797
+ "type": "object",
798
+ "properties": {
799
+ "schemaVersion": {
800
+ "type": "number",
801
+ "const": 1
802
+ },
803
+ "invocationId": {
804
+ "type": "string",
805
+ "minLength": 1,
806
+ "maxLength": 128,
807
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
808
+ },
809
+ "runId": {
810
+ "type": "string",
811
+ "minLength": 1,
812
+ "maxLength": 128,
813
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
814
+ },
815
+ "sequence": {
816
+ "type": "number",
817
+ "const": 0
818
+ },
819
+ "timestamp": {
820
+ "type": "string",
821
+ "format": "date-time",
822
+ "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)))$"
823
+ },
824
+ "kind": {
825
+ "type": "string",
826
+ "const": "accepted"
827
+ }
828
+ },
829
+ "required": [
830
+ "schemaVersion",
831
+ "invocationId",
832
+ "runId",
833
+ "sequence",
834
+ "timestamp",
835
+ "kind"
836
+ ],
837
+ "additionalProperties": false
838
+ },
839
+ {
840
+ "type": "object",
841
+ "properties": {
842
+ "schemaVersion": {
843
+ "type": "number",
844
+ "const": 1
845
+ },
846
+ "invocationId": {
847
+ "type": "string",
848
+ "minLength": 1,
849
+ "maxLength": 128,
850
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
851
+ },
852
+ "runId": {
853
+ "type": "string",
854
+ "minLength": 1,
855
+ "maxLength": 128,
856
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
857
+ },
858
+ "sequence": {
859
+ "type": "integer",
860
+ "minimum": 0,
861
+ "maximum": 9007199254740991
862
+ },
863
+ "timestamp": {
864
+ "type": "string",
865
+ "format": "date-time",
866
+ "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)))$"
867
+ },
868
+ "kind": {
869
+ "type": "string",
870
+ "const": "activity"
871
+ },
872
+ "activity": {
873
+ "$ref": "#/components/schemas/HeartbeatStreamEvent/$defs/__schema0"
874
+ }
875
+ },
876
+ "required": [
877
+ "schemaVersion",
878
+ "invocationId",
879
+ "runId",
880
+ "sequence",
881
+ "timestamp",
882
+ "kind",
883
+ "activity"
884
+ ],
885
+ "additionalProperties": false
886
+ },
887
+ {
888
+ "type": "object",
889
+ "properties": {
890
+ "schemaVersion": {
891
+ "type": "number",
892
+ "const": 1
893
+ },
894
+ "invocationId": {
895
+ "type": "string",
896
+ "minLength": 1,
897
+ "maxLength": 128,
898
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
899
+ },
900
+ "runId": {
901
+ "type": "string",
902
+ "minLength": 1,
903
+ "maxLength": 128,
904
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
905
+ },
906
+ "sequence": {
907
+ "type": "integer",
908
+ "minimum": 0,
909
+ "maximum": 9007199254740991
910
+ },
911
+ "timestamp": {
912
+ "type": "string",
913
+ "format": "date-time",
914
+ "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)))$"
915
+ },
916
+ "kind": {
917
+ "type": "string",
918
+ "const": "result"
919
+ },
920
+ "result": {
921
+ "type": "object",
922
+ "propertyNames": {
923
+ "type": "string"
924
+ },
925
+ "additionalProperties": {
926
+ "$ref": "#/components/schemas/HeartbeatStreamEvent/$defs/__schema1"
927
+ }
928
+ }
929
+ },
930
+ "required": [
931
+ "schemaVersion",
932
+ "invocationId",
933
+ "runId",
934
+ "sequence",
935
+ "timestamp",
936
+ "kind",
937
+ "result"
938
+ ],
939
+ "additionalProperties": false
940
+ },
941
+ {
942
+ "type": "object",
943
+ "properties": {
944
+ "schemaVersion": {
945
+ "type": "number",
946
+ "const": 1
947
+ },
948
+ "invocationId": {
949
+ "type": "string",
950
+ "minLength": 1,
951
+ "maxLength": 128,
952
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
953
+ },
954
+ "runId": {
955
+ "type": "string",
956
+ "minLength": 1,
957
+ "maxLength": 128,
958
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
959
+ },
960
+ "sequence": {
961
+ "type": "integer",
962
+ "minimum": 0,
963
+ "maximum": 9007199254740991
964
+ },
965
+ "timestamp": {
966
+ "type": "string",
967
+ "format": "date-time",
968
+ "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)))$"
969
+ },
970
+ "kind": {
971
+ "type": "string",
972
+ "const": "cancelled"
973
+ },
974
+ "reason": {
975
+ "type": "string"
976
+ }
977
+ },
978
+ "required": [
979
+ "schemaVersion",
980
+ "invocationId",
981
+ "runId",
982
+ "sequence",
983
+ "timestamp",
984
+ "kind",
985
+ "reason"
986
+ ],
987
+ "additionalProperties": false
988
+ },
989
+ {
990
+ "type": "object",
991
+ "properties": {
992
+ "schemaVersion": {
993
+ "type": "number",
994
+ "const": 1
995
+ },
996
+ "invocationId": {
997
+ "type": "string",
998
+ "minLength": 1,
999
+ "maxLength": 128,
1000
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
1001
+ },
1002
+ "runId": {
1003
+ "type": "string",
1004
+ "minLength": 1,
1005
+ "maxLength": 128,
1006
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:@-]*$"
1007
+ },
1008
+ "sequence": {
1009
+ "type": "integer",
1010
+ "minimum": 0,
1011
+ "maximum": 9007199254740991
1012
+ },
1013
+ "timestamp": {
1014
+ "type": "string",
1015
+ "format": "date-time",
1016
+ "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)))$"
1017
+ },
1018
+ "kind": {
1019
+ "type": "string",
1020
+ "const": "error"
1021
+ },
1022
+ "error": {
1023
+ "type": "object",
1024
+ "properties": {
1025
+ "code": {
1026
+ "type": "string",
1027
+ "minLength": 1,
1028
+ "maxLength": 128,
1029
+ "pattern": "^[a-z0-9_]+$"
1030
+ },
1031
+ "message": {
1032
+ "type": "string",
1033
+ "minLength": 1,
1034
+ "maxLength": 1600
1035
+ }
1036
+ },
1037
+ "required": [
1038
+ "code",
1039
+ "message"
1040
+ ],
1041
+ "additionalProperties": false
1042
+ }
1043
+ },
1044
+ "required": [
1045
+ "schemaVersion",
1046
+ "invocationId",
1047
+ "runId",
1048
+ "sequence",
1049
+ "timestamp",
1050
+ "kind",
1051
+ "error"
1052
+ ],
1053
+ "additionalProperties": false
1054
+ }
1055
+ ],
1056
+ "$defs": {
1057
+ "__schema0": {
1058
+ "anyOf": [
1059
+ {
1060
+ "type": "string"
1061
+ },
1062
+ {
1063
+ "type": "number"
1064
+ },
1065
+ {
1066
+ "type": "boolean"
1067
+ },
1068
+ {
1069
+ "type": "null"
1070
+ },
1071
+ {
1072
+ "type": "array",
1073
+ "items": {
1074
+ "$ref": "#/components/schemas/HeartbeatStreamEvent/$defs/__schema0"
1075
+ }
1076
+ },
1077
+ {
1078
+ "type": "object",
1079
+ "propertyNames": {
1080
+ "type": "string"
1081
+ },
1082
+ "additionalProperties": {
1083
+ "$ref": "#/components/schemas/HeartbeatStreamEvent/$defs/__schema0"
1084
+ }
1085
+ }
1086
+ ]
1087
+ },
1088
+ "__schema1": {
1089
+ "anyOf": [
1090
+ {
1091
+ "type": "string"
1092
+ },
1093
+ {
1094
+ "type": "number"
1095
+ },
1096
+ {
1097
+ "type": "boolean"
1098
+ },
1099
+ {
1100
+ "type": "null"
1101
+ },
1102
+ {
1103
+ "type": "array",
1104
+ "items": {
1105
+ "$ref": "#/components/schemas/HeartbeatStreamEvent/$defs/__schema1"
1106
+ }
1107
+ },
1108
+ {
1109
+ "type": "object",
1110
+ "propertyNames": {
1111
+ "type": "string"
1112
+ },
1113
+ "additionalProperties": {
1114
+ "$ref": "#/components/schemas/HeartbeatStreamEvent/$defs/__schema1"
1115
+ }
1116
+ }
1117
+ ]
1118
+ }
1119
+ }
1120
+ },
620
1121
  "ExecutionAssertionClaims": {
621
1122
  "type": "object",
622
1123
  "properties": {
@@ -659,7 +1160,10 @@
659
1160
  },
660
1161
  "workflow": {
661
1162
  "type": "string",
662
- "const": "conversation-turn"
1163
+ "enum": [
1164
+ "conversation-turn",
1165
+ "heartbeat-task"
1166
+ ]
663
1167
  },
664
1168
  "sub": {
665
1169
  "type": "string",
@@ -748,7 +1252,10 @@
748
1252
  },
749
1253
  "workflow": {
750
1254
  "type": "string",
751
- "const": "conversation-turn"
1255
+ "enum": [
1256
+ "conversation-turn",
1257
+ "heartbeat-task"
1258
+ ]
752
1259
  },
753
1260
  "serverId": {
754
1261
  "type": "string",