@toshicloud/sdk 0.5.0 → 0.6.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 (76) hide show
  1. package/README.md +138 -41
  2. package/dist/client.d.ts +103 -4
  3. package/dist/client.js +43 -4
  4. package/dist/errors.d.ts +74 -22
  5. package/dist/errors.js +99 -27
  6. package/dist/gen/toshi/permission_pb.d.ts +207 -2
  7. package/dist/gen/toshi/permission_pb.js +54 -2
  8. package/dist/gen/toshi/workspace/v1/account_pb.d.ts +590 -0
  9. package/dist/gen/toshi/workspace/v1/account_pb.js +75 -0
  10. package/dist/gen/toshi/workspace/v1/artifacts_pb.d.ts +14 -8
  11. package/dist/gen/toshi/workspace/v1/artifacts_pb.js +9 -7
  12. package/dist/gen/toshi/workspace/v1/audit_events_pb.d.ts +191 -6
  13. package/dist/gen/toshi/workspace/v1/audit_events_pb.js +11 -1
  14. package/dist/gen/toshi/workspace/v1/channels_pb.d.ts +1194 -21
  15. package/dist/gen/toshi/workspace/v1/channels_pb.js +185 -39
  16. package/dist/gen/toshi/workspace/v1/connections_pb.d.ts +1616 -0
  17. package/dist/gen/toshi/workspace/v1/connections_pb.js +224 -0
  18. package/dist/gen/toshi/workspace/v1/discovery_pb.d.ts +291 -43
  19. package/dist/gen/toshi/workspace/v1/discovery_pb.js +79 -30
  20. package/dist/gen/toshi/workspace/v1/display_pb.d.ts +198 -15
  21. package/dist/gen/toshi/workspace/v1/display_pb.js +52 -2
  22. package/dist/gen/toshi/workspace/v1/domains_pb.d.ts +864 -0
  23. package/dist/gen/toshi/workspace/v1/domains_pb.js +152 -0
  24. package/dist/gen/toshi/workspace/v1/fillers_pb.d.ts +12 -4
  25. package/dist/gen/toshi/workspace/v1/fillers_pb.js +1 -1
  26. package/dist/gen/toshi/workspace/v1/grants_pb.d.ts +1297 -0
  27. package/dist/gen/toshi/workspace/v1/grants_pb.js +271 -0
  28. package/dist/gen/toshi/workspace/v1/hostjobs_pb.d.ts +329 -15
  29. package/dist/gen/toshi/workspace/v1/hostjobs_pb.js +10 -5
  30. package/dist/gen/toshi/workspace/v1/hosts_pb.d.ts +196 -7
  31. package/dist/gen/toshi/workspace/v1/hosts_pb.js +12 -7
  32. package/dist/gen/toshi/workspace/v1/images_pb.d.ts +1463 -0
  33. package/dist/gen/toshi/workspace/v1/images_pb.js +263 -0
  34. package/dist/gen/toshi/workspace/v1/products_pb.d.ts +99 -296
  35. package/dist/gen/toshi/workspace/v1/products_pb.js +7 -53
  36. package/dist/gen/toshi/workspace/v1/projects_pb.d.ts +1474 -99
  37. package/dist/gen/toshi/workspace/v1/projects_pb.js +150 -33
  38. package/dist/gen/toshi/workspace/v1/recordings_pb.d.ts +181 -14
  39. package/dist/gen/toshi/workspace/v1/recordings_pb.js +54 -14
  40. package/dist/gen/toshi/workspace/v1/roles_pb.d.ts +1994 -0
  41. package/dist/gen/toshi/workspace/v1/roles_pb.js +355 -0
  42. package/dist/gen/toshi/workspace/v1/secrets_pb.d.ts +314 -8
  43. package/dist/gen/toshi/workspace/v1/secrets_pb.js +42 -18
  44. package/dist/gen/toshi/workspace/v1/storage_providers_pb.d.ts +14 -0
  45. package/dist/gen/toshi/workspace/v1/storage_providers_pb.js +1 -1
  46. package/dist/gen/toshi/workspace/v1/tokens_pb.d.ts +434 -5
  47. package/dist/gen/toshi/workspace/v1/tokens_pb.js +65 -8
  48. package/dist/gen/toshi/workspace/v1/triggers_pb.d.ts +1099 -0
  49. package/dist/gen/toshi/workspace/v1/triggers_pb.js +185 -0
  50. package/dist/gen/toshi/workspace/v1/volumes_pb.d.ts +1052 -33
  51. package/dist/gen/toshi/workspace/v1/volumes_pb.js +169 -11
  52. package/dist/gen/toshi/workspace/v1/webhook_pb.d.ts +66 -8
  53. package/dist/gen/toshi/workspace/v1/webhook_pb.js +4 -4
  54. package/dist/gen/toshi/workspace/v1/workloads_pb.d.ts +2069 -54
  55. package/dist/gen/toshi/workspace/v1/workloads_pb.js +204 -54
  56. package/dist/gen/toshi/workspace/v1/workspace_pb.d.ts +6634 -933
  57. package/dist/gen/toshi/workspace/v1/workspace_pb.js +912 -93
  58. package/dist/gen/toshi/workspace/v1/workspace_service_pb.d.ts +3209 -1378
  59. package/dist/gen/toshi/workspace/v1/workspace_service_pb.js +211 -74
  60. package/dist/index.d.ts +8 -1
  61. package/dist/index.js +8 -1
  62. package/dist/interceptors.d.ts +6 -2
  63. package/dist/interceptors.js +13 -8
  64. package/dist/retry.d.ts +18 -0
  65. package/dist/retry.js +230 -23
  66. package/dist/test/alarms.d.ts +29 -0
  67. package/dist/test/alarms.js +144 -0
  68. package/dist/test/fake.js +31 -0
  69. package/dist/test/index.d.ts +12 -2
  70. package/dist/test/index.js +12 -2
  71. package/dist/test/procedures.js +96 -5
  72. package/dist/version.d.ts +1 -1
  73. package/dist/version.js +1 -1
  74. package/dist/wait.d.ts +4 -0
  75. package/dist/wait.js +24 -1
  76. package/package.json +3 -2
@@ -154,6 +154,13 @@ export type GetHostJobResponse = Message<"toshi.workspace.v1.GetHostJobResponse"
154
154
  * @generated from field: toshi.workspace.v1.HostJob host_job = 1;
155
155
  */
156
156
  hostJob?: HostJob | undefined;
157
+ /**
158
+ * The job's attempts, oldest first: one for each assignment to a host,
159
+ * the current one last while the job holds it.
160
+ *
161
+ * @generated from field: repeated toshi.workspace.v1.HostJobAttempt attempts = 2;
162
+ */
163
+ attempts: HostJobAttempt[];
157
164
  };
158
165
  /**
159
166
  * @generated from message toshi.workspace.v1.GetHostJobResponse
@@ -163,6 +170,13 @@ export type GetHostJobResponseJson = {
163
170
  * @generated from field: toshi.workspace.v1.HostJob host_job = 1;
164
171
  */
165
172
  hostJob?: HostJobJson;
173
+ /**
174
+ * The job's attempts, oldest first: one for each assignment to a host,
175
+ * the current one last while the job holds it.
176
+ *
177
+ * @generated from field: repeated toshi.workspace.v1.HostJobAttempt attempts = 2;
178
+ */
179
+ attempts?: HostJobAttemptJson[];
166
180
  };
167
181
  /**
168
182
  * Describes the message toshi.workspace.v1.GetHostJobResponse.
@@ -772,8 +786,9 @@ export type HostJob = Message<"toshi.workspace.v1.HostJob"> & {
772
786
  /**
773
787
  * Why the job was stopped: github_cancelled, max_duration, operator,
774
788
  * github_completed, runner_not_started, runner_unconfirmed, debug_ended,
775
- * ran_elsewhere, or for a sandbox spend_cap, tenant_suspended or
776
- * tenant_deleted. Empty if it never was.
789
+ * ran_elsewhere, for a sandbox spend_cap, tenant_suspended,
790
+ * tenant_deleted or owner, or for a service's run owner_deleted,
791
+ * service_restart or sleep, or policy. Empty if it never was.
777
792
  *
778
793
  * @generated from field: string stop_reason = 18;
779
794
  */
@@ -787,10 +802,12 @@ export type HostJob = Message<"toshi.workspace.v1.HostJob"> & {
787
802
  stopRequestedAt?: Timestamp | undefined;
788
803
  /**
789
804
  * Why the scheduler last held the job while it was queued:
790
- * tenant_suspended, tenant_cap, tenant_vcpu, free_allowance, spend_cap,
791
- * jobs_per_hour, burst_guard, plan_os, installation_suspended,
792
- * overflow_wait, no_own_capacity or no_capacity. Empty when the job was
793
- * never held. It is kept after the job starts.
805
+ * tenant_suspended, limits_unavailable, tenant_cap, tenant_vcpu,
806
+ * free_allowance, spend_cap, jobs_per_hour, burst_guard, plan_os,
807
+ * installation_suspended, overflow_wait, no_own_capacity, no_capacity,
808
+ * cloud_budget, reserved_for_other, volume_claimed, service_quota,
809
+ * no_network_enforcement, no_build_base or host_kinds. Empty when the job
810
+ * was never held. It is kept after the job starts.
794
811
  *
795
812
  * @generated from field: string hold_reason = 20;
796
813
  */
@@ -975,7 +992,11 @@ export type HostJob = Message<"toshi.workspace.v1.HostJob"> & {
975
992
  /**
976
993
  * The Workspace API workload the job runs: a sandbox's or a service's
977
994
  * id, or the id of a job workload run on a host. Empty for a
978
- * CI job.
995
+ * CI job, which runs no workload: it has no recordings and no
996
+ * workload events. Its artifacts carry workload_kind "job" and this
997
+ * job's id as their workload_id, so ArtifactService.ListArtifacts
998
+ * with workload_id set to the id lists them; its display sessions
999
+ * are ListDisplaySessions' by job_id.
979
1000
  *
980
1001
  * @generated from field: string workload_id = 44;
981
1002
  */
@@ -998,6 +1019,77 @@ export type HostJob = Message<"toshi.workspace.v1.HostJob"> & {
998
1019
  * @generated from field: string environment = 46;
999
1020
  */
1000
1021
  environment: string;
1022
+ /**
1023
+ * The kind of provider that created instance_id, as the host's agent
1024
+ * reported it with the instance: "container", "fake", "qemu" or "vz".
1025
+ * It stays with the attempt when the host's agent later reports another
1026
+ * kind. Empty while the job has no instance, for a job whose agent sent
1027
+ * none or recorded before the field, and for a cloud host's job.
1028
+ *
1029
+ * @generated from field: string provider = 47;
1030
+ */
1031
+ provider: string;
1032
+ /**
1033
+ * The state in GitHub's words: "queued" while queued, assigned or
1034
+ * starting, "in_progress" while running, debugging or stopping once its
1035
+ * attempt started, "completed" once completed, failed or cancelled. A
1036
+ * Workspace API job's attempt starts when its host's start of the
1037
+ * command is admitted: until then it is queued.
1038
+ *
1039
+ * @generated from field: string status = 48;
1040
+ */
1041
+ status: string;
1042
+ /**
1043
+ * The runner that runs, or ran, the job's current attempt: for a GitHub
1044
+ * job GitHub's runner id in decimal and the name it was registered
1045
+ * with, for a Workspace API job its attempt's name as both. Unset until
1046
+ * the attempt started, and for a job that ended before any did; the
1047
+ * host it was assigned to is host_id.
1048
+ *
1049
+ * @generated from field: string runner_id = 49;
1050
+ */
1051
+ runnerId: string;
1052
+ /**
1053
+ * @generated from field: string runner_name = 50;
1054
+ */
1055
+ runnerName: string;
1056
+ /**
1057
+ * The current attempt once it started, counting from 1: each assignment
1058
+ * of the job is one, and a requeue makes the next. 0 until it started,
1059
+ * and for a job that ended before any attempt did; attempts on the get
1060
+ * answer list every assignment.
1061
+ *
1062
+ * @generated from field: int32 attempt = 51;
1063
+ */
1064
+ attempt: number;
1065
+ /**
1066
+ * GitHub's attempt of the workflow run the job is part of, as the
1067
+ * workflow_job webhook Toshi made the job from said: 1 for a run's first
1068
+ * attempt, 2 for its first re-run. 0 when it was not recorded, as for a
1069
+ * job that is not a GitHub job or one stored before the field.
1070
+ *
1071
+ * @generated from field: int32 run_attempt = 52;
1072
+ */
1073
+ runAttempt: number;
1074
+ /**
1075
+ * TOSHI_LICENSED_WINDOWS when the job runs on a cloud pool's Windows: no
1076
+ * one sees its screen, so it opens no display session, takes no takeover
1077
+ * and records no screen. DESKTOP_SEAT_REQUIRED when it runs on a host
1078
+ * whose pool has licence = "toshi": only a person who holds a desktop seat
1079
+ * in the workspace opens a display session on it, and it records no
1080
+ * screen. Empty when its screen is available, and for a job without a
1081
+ * host. A workspace's own hosts and its own cloud account show the screen.
1082
+ *
1083
+ * @generated from field: string screen_unavailable_reason = 53;
1084
+ */
1085
+ screenUnavailableReason: string;
1086
+ /**
1087
+ * exec_rate, connection_rate, request_rate, mining, operator or runner_swap; set only
1088
+ * with stop_reason "policy".
1089
+ *
1090
+ * @generated from field: string stop_cause = 54;
1091
+ */
1092
+ stopCause: string;
1001
1093
  };
1002
1094
  /**
1003
1095
  * HostJob is one run on a host: a GitHub Actions workflow job, or the run of
@@ -1094,8 +1186,9 @@ export type HostJobJson = {
1094
1186
  /**
1095
1187
  * Why the job was stopped: github_cancelled, max_duration, operator,
1096
1188
  * github_completed, runner_not_started, runner_unconfirmed, debug_ended,
1097
- * ran_elsewhere, or for a sandbox spend_cap, tenant_suspended or
1098
- * tenant_deleted. Empty if it never was.
1189
+ * ran_elsewhere, for a sandbox spend_cap, tenant_suspended,
1190
+ * tenant_deleted or owner, or for a service's run owner_deleted,
1191
+ * service_restart or sleep, or policy. Empty if it never was.
1099
1192
  *
1100
1193
  * @generated from field: string stop_reason = 18;
1101
1194
  */
@@ -1109,10 +1202,12 @@ export type HostJobJson = {
1109
1202
  stopRequestedAt?: TimestampJson;
1110
1203
  /**
1111
1204
  * Why the scheduler last held the job while it was queued:
1112
- * tenant_suspended, tenant_cap, tenant_vcpu, free_allowance, spend_cap,
1113
- * jobs_per_hour, burst_guard, plan_os, installation_suspended,
1114
- * overflow_wait, no_own_capacity or no_capacity. Empty when the job was
1115
- * never held. It is kept after the job starts.
1205
+ * tenant_suspended, limits_unavailable, tenant_cap, tenant_vcpu,
1206
+ * free_allowance, spend_cap, jobs_per_hour, burst_guard, plan_os,
1207
+ * installation_suspended, overflow_wait, no_own_capacity, no_capacity,
1208
+ * cloud_budget, reserved_for_other, volume_claimed, service_quota,
1209
+ * no_network_enforcement, no_build_base or host_kinds. Empty when the job
1210
+ * was never held. It is kept after the job starts.
1116
1211
  *
1117
1212
  * @generated from field: string hold_reason = 20;
1118
1213
  */
@@ -1297,7 +1392,11 @@ export type HostJobJson = {
1297
1392
  /**
1298
1393
  * The Workspace API workload the job runs: a sandbox's or a service's
1299
1394
  * id, or the id of a job workload run on a host. Empty for a
1300
- * CI job.
1395
+ * CI job, which runs no workload: it has no recordings and no
1396
+ * workload events. Its artifacts carry workload_kind "job" and this
1397
+ * job's id as their workload_id, so ArtifactService.ListArtifacts
1398
+ * with workload_id set to the id lists them; its display sessions
1399
+ * are ListDisplaySessions' by job_id.
1301
1400
  *
1302
1401
  * @generated from field: string workload_id = 44;
1303
1402
  */
@@ -1320,6 +1419,77 @@ export type HostJobJson = {
1320
1419
  * @generated from field: string environment = 46;
1321
1420
  */
1322
1421
  environment?: string;
1422
+ /**
1423
+ * The kind of provider that created instance_id, as the host's agent
1424
+ * reported it with the instance: "container", "fake", "qemu" or "vz".
1425
+ * It stays with the attempt when the host's agent later reports another
1426
+ * kind. Empty while the job has no instance, for a job whose agent sent
1427
+ * none or recorded before the field, and for a cloud host's job.
1428
+ *
1429
+ * @generated from field: string provider = 47;
1430
+ */
1431
+ provider?: string;
1432
+ /**
1433
+ * The state in GitHub's words: "queued" while queued, assigned or
1434
+ * starting, "in_progress" while running, debugging or stopping once its
1435
+ * attempt started, "completed" once completed, failed or cancelled. A
1436
+ * Workspace API job's attempt starts when its host's start of the
1437
+ * command is admitted: until then it is queued.
1438
+ *
1439
+ * @generated from field: string status = 48;
1440
+ */
1441
+ status?: string;
1442
+ /**
1443
+ * The runner that runs, or ran, the job's current attempt: for a GitHub
1444
+ * job GitHub's runner id in decimal and the name it was registered
1445
+ * with, for a Workspace API job its attempt's name as both. Unset until
1446
+ * the attempt started, and for a job that ended before any did; the
1447
+ * host it was assigned to is host_id.
1448
+ *
1449
+ * @generated from field: string runner_id = 49;
1450
+ */
1451
+ runnerId?: string;
1452
+ /**
1453
+ * @generated from field: string runner_name = 50;
1454
+ */
1455
+ runnerName?: string;
1456
+ /**
1457
+ * The current attempt once it started, counting from 1: each assignment
1458
+ * of the job is one, and a requeue makes the next. 0 until it started,
1459
+ * and for a job that ended before any attempt did; attempts on the get
1460
+ * answer list every assignment.
1461
+ *
1462
+ * @generated from field: int32 attempt = 51;
1463
+ */
1464
+ attempt?: number;
1465
+ /**
1466
+ * GitHub's attempt of the workflow run the job is part of, as the
1467
+ * workflow_job webhook Toshi made the job from said: 1 for a run's first
1468
+ * attempt, 2 for its first re-run. 0 when it was not recorded, as for a
1469
+ * job that is not a GitHub job or one stored before the field.
1470
+ *
1471
+ * @generated from field: int32 run_attempt = 52;
1472
+ */
1473
+ runAttempt?: number;
1474
+ /**
1475
+ * TOSHI_LICENSED_WINDOWS when the job runs on a cloud pool's Windows: no
1476
+ * one sees its screen, so it opens no display session, takes no takeover
1477
+ * and records no screen. DESKTOP_SEAT_REQUIRED when it runs on a host
1478
+ * whose pool has licence = "toshi": only a person who holds a desktop seat
1479
+ * in the workspace opens a display session on it, and it records no
1480
+ * screen. Empty when its screen is available, and for a job without a
1481
+ * host. A workspace's own hosts and its own cloud account show the screen.
1482
+ *
1483
+ * @generated from field: string screen_unavailable_reason = 53;
1484
+ */
1485
+ screenUnavailableReason?: string;
1486
+ /**
1487
+ * exec_rate, connection_rate, request_rate, mining, operator or runner_swap; set only
1488
+ * with stop_reason "policy".
1489
+ *
1490
+ * @generated from field: string stop_cause = 54;
1491
+ */
1492
+ stopCause?: string;
1323
1493
  };
1324
1494
  /**
1325
1495
  * Describes the message toshi.workspace.v1.HostJob.
@@ -1328,6 +1498,149 @@ export type HostJobJson = {
1328
1498
  export declare const HostJobSchema: GenMessage<HostJob, {
1329
1499
  jsonType: HostJobJson;
1330
1500
  }>;
1501
+ /**
1502
+ * HostJobAttempt is one attempt of a host job: one assignment to a host
1503
+ * and its runner, and why it ended.
1504
+ *
1505
+ * @generated from message toshi.workspace.v1.HostJobAttempt
1506
+ */
1507
+ export type HostJobAttempt = Message<"toshi.workspace.v1.HostJobAttempt"> & {
1508
+ /**
1509
+ * Counting from 1.
1510
+ *
1511
+ * @generated from field: int32 attempt = 1;
1512
+ */
1513
+ attempt: number;
1514
+ /**
1515
+ * As HostJob.runner_id and HostJob.runner_name; empty when no runner was
1516
+ * named for the assignment.
1517
+ *
1518
+ * @generated from field: string runner_id = 2;
1519
+ */
1520
+ runnerId: string;
1521
+ /**
1522
+ * @generated from field: string runner_name = 3;
1523
+ */
1524
+ runnerName: string;
1525
+ /**
1526
+ * @generated from field: string host_id = 4;
1527
+ */
1528
+ hostId: string;
1529
+ /**
1530
+ * @generated from field: string instance_id = 5;
1531
+ */
1532
+ instanceId: string;
1533
+ /**
1534
+ * @generated from field: string provider = 6;
1535
+ */
1536
+ provider: string;
1537
+ /**
1538
+ * @generated from field: google.protobuf.Timestamp assigned_at = 7;
1539
+ */
1540
+ assignedAt?: Timestamp | undefined;
1541
+ /**
1542
+ * Unset when the attempt was assigned and never started.
1543
+ *
1544
+ * @generated from field: google.protobuf.Timestamp started_at = 8;
1545
+ */
1546
+ startedAt?: Timestamp | undefined;
1547
+ /**
1548
+ * When the attempt ended; unset for the current attempt until the job
1549
+ * finished.
1550
+ *
1551
+ * @generated from field: google.protobuf.Timestamp finished_at = 9;
1552
+ */
1553
+ finishedAt?: Timestamp | undefined;
1554
+ /**
1555
+ * The job's conclusion as GitHub or its runner reported it in the
1556
+ * attempt, such as "success"; empty when none was.
1557
+ *
1558
+ * @generated from field: string conclusion = 10;
1559
+ */
1560
+ conclusion: string;
1561
+ /**
1562
+ * Why an attempt that was queued again ended, such as "requeued: its
1563
+ * assignment timed out"; empty for the current attempt.
1564
+ *
1565
+ * @generated from field: string end = 11;
1566
+ */
1567
+ end: string;
1568
+ };
1569
+ /**
1570
+ * HostJobAttempt is one attempt of a host job: one assignment to a host
1571
+ * and its runner, and why it ended.
1572
+ *
1573
+ * @generated from message toshi.workspace.v1.HostJobAttempt
1574
+ */
1575
+ export type HostJobAttemptJson = {
1576
+ /**
1577
+ * Counting from 1.
1578
+ *
1579
+ * @generated from field: int32 attempt = 1;
1580
+ */
1581
+ attempt?: number;
1582
+ /**
1583
+ * As HostJob.runner_id and HostJob.runner_name; empty when no runner was
1584
+ * named for the assignment.
1585
+ *
1586
+ * @generated from field: string runner_id = 2;
1587
+ */
1588
+ runnerId?: string;
1589
+ /**
1590
+ * @generated from field: string runner_name = 3;
1591
+ */
1592
+ runnerName?: string;
1593
+ /**
1594
+ * @generated from field: string host_id = 4;
1595
+ */
1596
+ hostId?: string;
1597
+ /**
1598
+ * @generated from field: string instance_id = 5;
1599
+ */
1600
+ instanceId?: string;
1601
+ /**
1602
+ * @generated from field: string provider = 6;
1603
+ */
1604
+ provider?: string;
1605
+ /**
1606
+ * @generated from field: google.protobuf.Timestamp assigned_at = 7;
1607
+ */
1608
+ assignedAt?: TimestampJson;
1609
+ /**
1610
+ * Unset when the attempt was assigned and never started.
1611
+ *
1612
+ * @generated from field: google.protobuf.Timestamp started_at = 8;
1613
+ */
1614
+ startedAt?: TimestampJson;
1615
+ /**
1616
+ * When the attempt ended; unset for the current attempt until the job
1617
+ * finished.
1618
+ *
1619
+ * @generated from field: google.protobuf.Timestamp finished_at = 9;
1620
+ */
1621
+ finishedAt?: TimestampJson;
1622
+ /**
1623
+ * The job's conclusion as GitHub or its runner reported it in the
1624
+ * attempt, such as "success"; empty when none was.
1625
+ *
1626
+ * @generated from field: string conclusion = 10;
1627
+ */
1628
+ conclusion?: string;
1629
+ /**
1630
+ * Why an attempt that was queued again ended, such as "requeued: its
1631
+ * assignment timed out"; empty for the current attempt.
1632
+ *
1633
+ * @generated from field: string end = 11;
1634
+ */
1635
+ end?: string;
1636
+ };
1637
+ /**
1638
+ * Describes the message toshi.workspace.v1.HostJobAttempt.
1639
+ * Use `create(HostJobAttemptSchema)` to create a new message.
1640
+ */
1641
+ export declare const HostJobAttemptSchema: GenMessage<HostJobAttempt, {
1642
+ jsonType: HostJobAttemptJson;
1643
+ }>;
1331
1644
  /**
1332
1645
  * HostJobTelemetrySummary sums up a job VM's resource samples.
1333
1646
  *
@@ -2036,7 +2349,8 @@ export declare const HostJobService: GenService<{
2036
2349
  * host job moves to HOST_JOB_STATE_STOPPING with stop_reason debug_ended,
2037
2350
  * its host destroys the kept VM and the host job finishes completed with
2038
2351
  * its conclusion unchanged. A host job that is not debugging fails with
2039
- * FAILED_PRECONDITION; one already stopping is returned unchanged.
2352
+ * FAILED_PRECONDITION, as does one stopping for another reason; one
2353
+ * already stopping with debug_ended is returned unchanged.
2040
2354
  *
2041
2355
  * @generated from rpc toshi.workspace.v1.HostJobService.StopHostJobDebug
2042
2356
  */
@@ -7,7 +7,7 @@ import { file_toshi_permission } from "../../permission_pb.js";
7
7
  /**
8
8
  * Describes the file toshi/workspace/v1/hostjobs.proto.
9
9
  */
10
- export const file_toshi_workspace_v1_hostjobs = /*@__PURE__*/ fileDesc("CiF0b3NoaS93b3Jrc3BhY2UvdjEvaG9zdGpvYnMucHJvdG8SEnRvc2hpLndvcmtzcGFjZS52MSKXAQoTTGlzdEhvc3RKb2JzUmVxdWVzdBIwCgZzdGF0ZXMYASADKA4yIC50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYlN0YXRlEhIKCnJlcG9zaXRvcnkYAiABKAkSEwoLd29ya2xvYWRfaWQYAyABKAkSEQoJcGFnZV9zaXplGAQgASgFEhIKCnBhZ2VfdG9rZW4YBSABKAkiXwoUTGlzdEhvc3RKb2JzUmVzcG9uc2USLgoJaG9zdF9qb2JzGAEgAygLMhsudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2ISFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIh8KEUdldEhvc3RKb2JSZXF1ZXN0EgoKAmlkGAEgASgJIkMKEkdldEhvc3RKb2JSZXNwb25zZRItCghob3N0X2pvYhgBIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iIiIKFENhbmNlbEhvc3RKb2JSZXF1ZXN0EgoKAmlkGAEgASgJIkYKFUNhbmNlbEhvc3RKb2JSZXNwb25zZRItCghob3N0X2pvYhgBIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iIiYKGEdldEhvc3RKb2JGYWlsdXJlUmVxdWVzdBIKCgJpZBgBIAEoCSKpAgoZR2V0SG9zdEpvYkZhaWx1cmVSZXNwb25zZRINCgVjYXVzZRgBIAEoCRITCgtleHBsYW5hdGlvbhgCIAEoCRISCgpjb25jbHVzaW9uGAMgASgJEg8KB3ZlcmRpY3QYBCABKAkSFgoOdmVyZGljdF9yZWFzb24YBSABKAkSEgoKd2hhdF90b19kbxgGIAEoCRISCgpnaXRodWJfdXJsGAcgASgJEhUKDWRhc2hib2FyZF91cmwYCCABKAkSOgoHaGlzdG9yeRgJIAEoCzIpLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iRmFpbHVyZUhpc3RvcnkSDQoFY2FjaGUYCiABKAkSEQoJdGllcl9saW5lGAsgASgJEg4KBmpvYl9pZBgMIAEoCSIoChpHZXRIb3N0Sm9iVGVsZW1ldHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSLJAQobR2V0SG9zdEpvYlRlbGVtZXRyeVJlc3BvbnNlEgwKBHNpemUYASABKAkSDQoFdmNwdXMYAiABKAUSEgoKbWVtb3J5X21pYhgDIAEoAxI8CgdzdW1tYXJ5GAQgASgLMisudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2JUZWxlbWV0cnlTdW1tYXJ5EjsKB3NhbXBsZXMYBSADKAsyKi50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYlRlbGVtZXRyeVNhbXBsZSIqChxHZXRIb3N0Sm9iRGVidWdBY2Nlc3NSZXF1ZXN0EgoKAmlkGAEgASgJIoYBCh1HZXRIb3N0Sm9iRGVidWdBY2Nlc3NSZXNwb25zZRIMCgR1c2VyGAEgASgJEhMKC3ByaXZhdGVfa2V5GAIgASgMEhIKCnJlbGF5X3BhdGgYAyABKAkSLgoKZXhwaXJlc19hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiJQoXU3RvcEhvc3RKb2JEZWJ1Z1JlcXVlc3QSCgoCaWQYASABKAkiSQoYU3RvcEhvc3RKb2JEZWJ1Z1Jlc3BvbnNlEi0KCGhvc3Rfam9iGAEgASgLMhsudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2IiywoKB0hvc3RKb2ISCgoCaWQYASABKAkSEgoKcmVwb3NpdG9yeRgCIAEoCRIXCg93b3JrZmxvd19qb2JfaWQYAyABKAMSDgoGcnVuX2lkGAQgASgDEhcKD2luc3RhbGxhdGlvbl9pZBgFIAEoAxIOCgZsYWJlbHMYBiADKAkSCgoCb3MYByABKAkSDAoEc2l6ZRgIIAEoCRIvCgVzdGF0ZRgJIAEoDjIgLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iU3RhdGUSDwoHaG9zdF9pZBgKIAEoCRITCgtpbnN0YW5jZV9pZBgLIAEoCRItCglxdWV1ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2Fzc2lnbmVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpzdGFydGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKY29uY2x1c2lvbhgQIAEoCRINCgVlcnJvchgRIAEoCRITCgtzdG9wX3JlYXNvbhgSIAEoCRI1ChFzdG9wX3JlcXVlc3RlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLaG9sZF9yZWFzb24YFCABKAkSEAoIb3duX2hvc3QYFSABKAgSHwoXZGVidWdfcmVxdWVzdGVkX21pbnV0ZXMYFiABKAUSFQoNZGVidWdfbWludXRlcxgXIAEoBRISCgpkZWJ1Z19ub3RlGBggASgJEjQKEGRlYnVnX3N0YXJ0ZWRfYXQYGSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2RlYnVnX3VudGlsGBogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+Cgl0ZWxlbWV0cnkYGyABKAsyKy50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYlRlbGVtZXRyeVN1bW1hcnkSGgoScnVubmVyX2V4aXRfcmVhc29uGBwgASgJEhAKCG92ZXJmbG93GB0gASgIEjgKFHJ1bm5lcl9yZXF1ZXN0X3NpbmNlGB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdvdXRjb21lGB8gASgJEhEKCWhvc3Rfa2luZBggIAEoCRIbChNwcmV2aW91c19wb29sX2ltYWdlGCEgASgJEhgKEGJpbGxhYmxlX21pbnV0ZXMYIiABKAMSEgoKZ2l0aHViX3VybBgjIAEoCRIVCg13b3JrZmxvd19uYW1lGCQgASgJEi8KBWNhY2hlGCUgASgLMiAudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2JDYWNoZRI0ChBydW5uZXJfZXhpdGVkX2F0GCYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFydW5uZXJfY29uY2x1c2lvbhgnIAEoCRIMCgR0aWVyGCggASgJEhgKEG1lbW9yeV9saW1pdF9taWIYKSABKAMSEQoJdGllcl9saW5lGCogASgJEi0KBGtpbmQYKyABKA4yHy50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYktpbmQSEwoLd29ya2xvYWRfaWQYLCABKAkSDwoHcHJvamVjdBgtIAEoCRITCgtlbnZpcm9ubWVudBguIAEoCSL2AQoXSG9zdEpvYlRlbGVtZXRyeVN1bW1hcnkSEgoKb29tX2tpbGxlZBgBIAEoCBIZChFjcHVfdGhyb3R0bGVkX3BjdBgCIAEoARIXCg9wZWFrX21lbW9yeV9taWIYAyABKAMSGwoTY3B1X3V0aWxpc2F0aW9uX3BjdBgEIAEoARIPCgdzYW1wbGVzGAUgASgFEhgKEG1lbW9yeV9saW1pdF9taWIYBiABKAMSDgoGY3B1X21zGAcgASgDEhIKCm9vbV9yZWFzb24YCCABKAkSDwoHdmVyZGljdBgJIAEoCRIWCg52ZXJkaWN0X3JlYXNvbhgKIAEoCSKfAQoMSG9zdEpvYkNhY2hlEg4KBmF0dGFjaBgBIAEoCRIXCg9iYXNlX2dlbmVyYXRpb24YAiABKAMSEgoKd3JpdGVfYmFjaxgDIAEoCRITCgtza2lwX3JlYXNvbhgEIAEoCRIYChBnZW5lcmF0aW9uX2J5dGVzGAUgASgDEhUKDXdyaXRlX2JhY2tfbXMYBiABKAMSDAoEbGluZRgHIAEoCSL2AgoWSG9zdEpvYlRlbGVtZXRyeVNhbXBsZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJd2luZG93X21zGAIgASgFEg4KBmNwdV9tcxgDIAEoAxITCgtjcHVfd2FpdF9tcxgEIAEoAxIdChBndWVzdF9tZW1vcnlfbWliGAUgASgDSACIAQESFwoPaG9zdF9tZW1vcnlfbWliGAYgASgDEhcKD2Rpc2tfcmVhZF9ieXRlcxgHIAEoAxIYChBkaXNrX3dyaXRlX2J5dGVzGAggASgDEhkKDG5ldF9yeF9ieXRlcxgJIAEoA0gBiAEBEhkKDG5ldF90eF9ieXRlcxgKIAEoA0gCiAEBEhYKCW9vbV9raWxscxgLIAEoBUgDiAEBQhMKEV9ndWVzdF9tZW1vcnlfbWliQg8KDV9uZXRfcnhfYnl0ZXNCDwoNX25ldF90eF9ieXRlc0IMCgpfb29tX2tpbGxzIq0BChVIb3N0Sm9iRmFpbHVyZUhpc3RvcnkSDAoEZGF5cxgBIAEoBRIXCg9wYXNzZWRfb25fcmVydW4YAiABKAUSFAoMZmFpbGVkX2FnYWluGAMgASgFEgwKBHN0ZXAYBCABKAkSHAoUc3RlcF9wYXNzZWRfb25fcmVydW4YBSABKAUSGQoRc3RlcF9mYWlsZWRfYWdhaW4YBiABKAUSEAoIc2VudGVuY2UYByABKAkqsQIKDEhvc3RKb2JTdGF0ZRIeChpIT1NUX0pPQl9TVEFURV9VTlNQRUNJRklFRBAAEhkKFUhPU1RfSk9CX1NUQVRFX1FVRVVFRBABEhsKF0hPU1RfSk9CX1NUQVRFX0FTU0lHTkVEEAISGwoXSE9TVF9KT0JfU1RBVEVfU1RBUlRJTkcQAxIaChZIT1NUX0pPQl9TVEFURV9SVU5OSU5HEAQSHAoYSE9TVF9KT0JfU1RBVEVfQ09NUExFVEVEEAUSGQoVSE9TVF9KT0JfU1RBVEVfRkFJTEVEEAYSHAoYSE9TVF9KT0JfU1RBVEVfQ0FOQ0VMTEVEEAcSGwoXSE9TVF9KT0JfU1RBVEVfU1RPUFBJTkcQCBIcChhIT1NUX0pPQl9TVEFURV9ERUJVR0dJTkcQCSp5CgtIb3N0Sm9iS2luZBIdChlIT1NUX0pPQl9LSU5EX1VOU1BFQ0lGSUVEEAASFQoRSE9TVF9KT0JfS0lORF9KT0IQARIZChVIT1NUX0pPQl9LSU5EX1NBTkRCT1gQAhIZChVIT1NUX0pPQl9LSU5EX1NFUlZJQ0UQAzKFBwoOSG9zdEpvYlNlcnZpY2UScQoMTGlzdEhvc3RKb2JzEicudG9zaGkud29ya3NwYWNlLnYxLkxpc3RIb3N0Sm9ic1JlcXVlc3QaKC50b3NoaS53b3Jrc3BhY2UudjEuTGlzdEhvc3RKb2JzUmVzcG9uc2UiDsLzGApob3N0cy5yZWFkEmsKCkdldEhvc3RKb2ISJS50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYlJlcXVlc3QaJi50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYlJlc3BvbnNlIg7C8xgKaG9zdHMucmVhZBJ1Cg1DYW5jZWxIb3N0Sm9iEigudG9zaGkud29ya3NwYWNlLnYxLkNhbmNlbEhvc3RKb2JSZXF1ZXN0GikudG9zaGkud29ya3NwYWNlLnYxLkNhbmNlbEhvc3RKb2JSZXNwb25zZSIPwvMYC2hvc3RzLndyaXRlEoABChFHZXRIb3N0Sm9iRmFpbHVyZRIsLnRvc2hpLndvcmtzcGFjZS52MS5HZXRIb3N0Sm9iRmFpbHVyZVJlcXVlc3QaLS50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYkZhaWx1cmVSZXNwb25zZSIOwvMYCmhvc3RzLnJlYWQShgEKE0dldEhvc3RKb2JUZWxlbWV0cnkSLi50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYlRlbGVtZXRyeVJlcXVlc3QaLy50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYlRlbGVtZXRyeVJlc3BvbnNlIg7C8xgKaG9zdHMucmVhZBKPAQoVR2V0SG9zdEpvYkRlYnVnQWNjZXNzEjAudG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JEZWJ1Z0FjY2Vzc1JlcXVlc3QaMS50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYkRlYnVnQWNjZXNzUmVzcG9uc2UiEcLzGA1kZWJ1Zy5jb25uZWN0En4KEFN0b3BIb3N0Sm9iRGVidWcSKy50b3NoaS53b3Jrc3BhY2UudjEuU3RvcEhvc3RKb2JEZWJ1Z1JlcXVlc3QaLC50b3NoaS53b3Jrc3BhY2UudjEuU3RvcEhvc3RKb2JEZWJ1Z1Jlc3BvbnNlIg/C8xgLZGVidWcud3JpdGVCIlogZ28udG9zaGljbG91ZC5pby9hcGkvd29ya3NwYWNldjFiBnByb3RvMw", [file_google_protobuf_timestamp, file_toshi_permission]);
10
+ export const file_toshi_workspace_v1_hostjobs = /*@__PURE__*/ fileDesc("CiF0b3NoaS93b3Jrc3BhY2UvdjEvaG9zdGpvYnMucHJvdG8SEnRvc2hpLndvcmtzcGFjZS52MSKXAQoTTGlzdEhvc3RKb2JzUmVxdWVzdBIwCgZzdGF0ZXMYASADKA4yIC50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYlN0YXRlEhIKCnJlcG9zaXRvcnkYAiABKAkSEwoLd29ya2xvYWRfaWQYAyABKAkSEQoJcGFnZV9zaXplGAQgASgFEhIKCnBhZ2VfdG9rZW4YBSABKAkiXwoUTGlzdEhvc3RKb2JzUmVzcG9uc2USLgoJaG9zdF9qb2JzGAEgAygLMhsudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2ISFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIh8KEUdldEhvc3RKb2JSZXF1ZXN0EgoKAmlkGAEgASgJInkKEkdldEhvc3RKb2JSZXNwb25zZRItCghob3N0X2pvYhgBIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iEjQKCGF0dGVtcHRzGAIgAygLMiIudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2JBdHRlbXB0IiIKFENhbmNlbEhvc3RKb2JSZXF1ZXN0EgoKAmlkGAEgASgJIkYKFUNhbmNlbEhvc3RKb2JSZXNwb25zZRItCghob3N0X2pvYhgBIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iIiYKGEdldEhvc3RKb2JGYWlsdXJlUmVxdWVzdBIKCgJpZBgBIAEoCSKpAgoZR2V0SG9zdEpvYkZhaWx1cmVSZXNwb25zZRINCgVjYXVzZRgBIAEoCRITCgtleHBsYW5hdGlvbhgCIAEoCRISCgpjb25jbHVzaW9uGAMgASgJEg8KB3ZlcmRpY3QYBCABKAkSFgoOdmVyZGljdF9yZWFzb24YBSABKAkSEgoKd2hhdF90b19kbxgGIAEoCRISCgpnaXRodWJfdXJsGAcgASgJEhUKDWRhc2hib2FyZF91cmwYCCABKAkSOgoHaGlzdG9yeRgJIAEoCzIpLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iRmFpbHVyZUhpc3RvcnkSDQoFY2FjaGUYCiABKAkSEQoJdGllcl9saW5lGAsgASgJEg4KBmpvYl9pZBgMIAEoCSIoChpHZXRIb3N0Sm9iVGVsZW1ldHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSLJAQobR2V0SG9zdEpvYlRlbGVtZXRyeVJlc3BvbnNlEgwKBHNpemUYASABKAkSDQoFdmNwdXMYAiABKAUSEgoKbWVtb3J5X21pYhgDIAEoAxI8CgdzdW1tYXJ5GAQgASgLMisudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2JUZWxlbWV0cnlTdW1tYXJ5EjsKB3NhbXBsZXMYBSADKAsyKi50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYlRlbGVtZXRyeVNhbXBsZSIqChxHZXRIb3N0Sm9iRGVidWdBY2Nlc3NSZXF1ZXN0EgoKAmlkGAEgASgJIoYBCh1HZXRIb3N0Sm9iRGVidWdBY2Nlc3NSZXNwb25zZRIMCgR1c2VyGAEgASgJEhMKC3ByaXZhdGVfa2V5GAIgASgMEhIKCnJlbGF5X3BhdGgYAyABKAkSLgoKZXhwaXJlc19hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiJQoXU3RvcEhvc3RKb2JEZWJ1Z1JlcXVlc3QSCgoCaWQYASABKAkiSQoYU3RvcEhvc3RKb2JEZWJ1Z1Jlc3BvbnNlEi0KCGhvc3Rfam9iGAEgASgLMhsudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2Ii8gsKB0hvc3RKb2ISCgoCaWQYASABKAkSEgoKcmVwb3NpdG9yeRgCIAEoCRIXCg93b3JrZmxvd19qb2JfaWQYAyABKAMSDgoGcnVuX2lkGAQgASgDEhcKD2luc3RhbGxhdGlvbl9pZBgFIAEoAxIOCgZsYWJlbHMYBiADKAkSCgoCb3MYByABKAkSDAoEc2l6ZRgIIAEoCRIvCgVzdGF0ZRgJIAEoDjIgLnRvc2hpLndvcmtzcGFjZS52MS5Ib3N0Sm9iU3RhdGUSDwoHaG9zdF9pZBgKIAEoCRITCgtpbnN0YW5jZV9pZBgLIAEoCRItCglxdWV1ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2Fzc2lnbmVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpzdGFydGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKY29uY2x1c2lvbhgQIAEoCRINCgVlcnJvchgRIAEoCRITCgtzdG9wX3JlYXNvbhgSIAEoCRI1ChFzdG9wX3JlcXVlc3RlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLaG9sZF9yZWFzb24YFCABKAkSEAoIb3duX2hvc3QYFSABKAgSHwoXZGVidWdfcmVxdWVzdGVkX21pbnV0ZXMYFiABKAUSFQoNZGVidWdfbWludXRlcxgXIAEoBRISCgpkZWJ1Z19ub3RlGBggASgJEjQKEGRlYnVnX3N0YXJ0ZWRfYXQYGSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2RlYnVnX3VudGlsGBogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+Cgl0ZWxlbWV0cnkYGyABKAsyKy50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYlRlbGVtZXRyeVN1bW1hcnkSGgoScnVubmVyX2V4aXRfcmVhc29uGBwgASgJEhAKCG92ZXJmbG93GB0gASgIEjgKFHJ1bm5lcl9yZXF1ZXN0X3NpbmNlGB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdvdXRjb21lGB8gASgJEhEKCWhvc3Rfa2luZBggIAEoCRIbChNwcmV2aW91c19wb29sX2ltYWdlGCEgASgJEhgKEGJpbGxhYmxlX21pbnV0ZXMYIiABKAMSEgoKZ2l0aHViX3VybBgjIAEoCRIVCg13b3JrZmxvd19uYW1lGCQgASgJEi8KBWNhY2hlGCUgASgLMiAudG9zaGkud29ya3NwYWNlLnYxLkhvc3RKb2JDYWNoZRI0ChBydW5uZXJfZXhpdGVkX2F0GCYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZChFydW5uZXJfY29uY2x1c2lvbhgnIAEoCRIMCgR0aWVyGCggASgJEhgKEG1lbW9yeV9saW1pdF9taWIYKSABKAMSEQoJdGllcl9saW5lGCogASgJEi0KBGtpbmQYKyABKA4yHy50b3NoaS53b3Jrc3BhY2UudjEuSG9zdEpvYktpbmQSEwoLd29ya2xvYWRfaWQYLCABKAkSDwoHcHJvamVjdBgtIAEoCRITCgtlbnZpcm9ubWVudBguIAEoCRIQCghwcm92aWRlchgvIAEoCRIOCgZzdGF0dXMYMCABKAkSEQoJcnVubmVyX2lkGDEgASgJEhMKC3J1bm5lcl9uYW1lGDIgASgJEg8KB2F0dGVtcHQYMyABKAUSEwoLcnVuX2F0dGVtcHQYNCABKAUSIQoZc2NyZWVuX3VuYXZhaWxhYmxlX3JlYXNvbhg1IAEoCRISCgpzdG9wX2NhdXNlGDYgASgJIrQCCg5Ib3N0Sm9iQXR0ZW1wdBIPCgdhdHRlbXB0GAEgASgFEhEKCXJ1bm5lcl9pZBgCIAEoCRITCgtydW5uZXJfbmFtZRgDIAEoCRIPCgdob3N0X2lkGAQgASgJEhMKC2luc3RhbmNlX2lkGAUgASgJEhAKCHByb3ZpZGVyGAYgASgJEi8KC2Fzc2lnbmVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKY29uY2x1c2lvbhgKIAEoCRILCgNlbmQYCyABKAki9gEKF0hvc3RKb2JUZWxlbWV0cnlTdW1tYXJ5EhIKCm9vbV9raWxsZWQYASABKAgSGQoRY3B1X3Rocm90dGxlZF9wY3QYAiABKAESFwoPcGVha19tZW1vcnlfbWliGAMgASgDEhsKE2NwdV91dGlsaXNhdGlvbl9wY3QYBCABKAESDwoHc2FtcGxlcxgFIAEoBRIYChBtZW1vcnlfbGltaXRfbWliGAYgASgDEg4KBmNwdV9tcxgHIAEoAxISCgpvb21fcmVhc29uGAggASgJEg8KB3ZlcmRpY3QYCSABKAkSFgoOdmVyZGljdF9yZWFzb24YCiABKAkinwEKDEhvc3RKb2JDYWNoZRIOCgZhdHRhY2gYASABKAkSFwoPYmFzZV9nZW5lcmF0aW9uGAIgASgDEhIKCndyaXRlX2JhY2sYAyABKAkSEwoLc2tpcF9yZWFzb24YBCABKAkSGAoQZ2VuZXJhdGlvbl9ieXRlcxgFIAEoAxIVCg13cml0ZV9iYWNrX21zGAYgASgDEgwKBGxpbmUYByABKAki9gIKFkhvc3RKb2JUZWxlbWV0cnlTYW1wbGUSJgoCYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXdpbmRvd19tcxgCIAEoBRIOCgZjcHVfbXMYAyABKAMSEwoLY3B1X3dhaXRfbXMYBCABKAMSHQoQZ3Vlc3RfbWVtb3J5X21pYhgFIAEoA0gAiAEBEhcKD2hvc3RfbWVtb3J5X21pYhgGIAEoAxIXCg9kaXNrX3JlYWRfYnl0ZXMYByABKAMSGAoQZGlza193cml0ZV9ieXRlcxgIIAEoAxIZCgxuZXRfcnhfYnl0ZXMYCSABKANIAYgBARIZCgxuZXRfdHhfYnl0ZXMYCiABKANIAogBARIWCglvb21fa2lsbHMYCyABKAVIA4gBAUITChFfZ3Vlc3RfbWVtb3J5X21pYkIPCg1fbmV0X3J4X2J5dGVzQg8KDV9uZXRfdHhfYnl0ZXNCDAoKX29vbV9raWxscyKtAQoVSG9zdEpvYkZhaWx1cmVIaXN0b3J5EgwKBGRheXMYASABKAUSFwoPcGFzc2VkX29uX3JlcnVuGAIgASgFEhQKDGZhaWxlZF9hZ2FpbhgDIAEoBRIMCgRzdGVwGAQgASgJEhwKFHN0ZXBfcGFzc2VkX29uX3JlcnVuGAUgASgFEhkKEXN0ZXBfZmFpbGVkX2FnYWluGAYgASgFEhAKCHNlbnRlbmNlGAcgASgJKrECCgxIb3N0Sm9iU3RhdGUSHgoaSE9TVF9KT0JfU1RBVEVfVU5TUEVDSUZJRUQQABIZChVIT1NUX0pPQl9TVEFURV9RVUVVRUQQARIbChdIT1NUX0pPQl9TVEFURV9BU1NJR05FRBACEhsKF0hPU1RfSk9CX1NUQVRFX1NUQVJUSU5HEAMSGgoWSE9TVF9KT0JfU1RBVEVfUlVOTklORxAEEhwKGEhPU1RfSk9CX1NUQVRFX0NPTVBMRVRFRBAFEhkKFUhPU1RfSk9CX1NUQVRFX0ZBSUxFRBAGEhwKGEhPU1RfSk9CX1NUQVRFX0NBTkNFTExFRBAHEhsKF0hPU1RfSk9CX1NUQVRFX1NUT1BQSU5HEAgSHAoYSE9TVF9KT0JfU1RBVEVfREVCVUdHSU5HEAkqeQoLSG9zdEpvYktpbmQSHQoZSE9TVF9KT0JfS0lORF9VTlNQRUNJRklFRBAAEhUKEUhPU1RfSk9CX0tJTkRfSk9CEAESGQoVSE9TVF9KT0JfS0lORF9TQU5EQk9YEAISGQoVSE9TVF9KT0JfS0lORF9TRVJWSUNFEAMyxAcKDkhvc3RKb2JTZXJ2aWNlEnEKDExpc3RIb3N0Sm9icxInLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0SG9zdEpvYnNSZXF1ZXN0GigudG9zaGkud29ya3NwYWNlLnYxLkxpc3RIb3N0Sm9ic1Jlc3BvbnNlIg7C8xgKaG9zdHMucmVhZBJrCgpHZXRIb3N0Sm9iEiUudG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JSZXF1ZXN0GiYudG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JSZXNwb25zZSIOwvMYCmhvc3RzLnJlYWQSdQoNQ2FuY2VsSG9zdEpvYhIoLnRvc2hpLndvcmtzcGFjZS52MS5DYW5jZWxIb3N0Sm9iUmVxdWVzdBopLnRvc2hpLndvcmtzcGFjZS52MS5DYW5jZWxIb3N0Sm9iUmVzcG9uc2UiD8LzGAtob3N0cy53cml0ZRKAAQoRR2V0SG9zdEpvYkZhaWx1cmUSLC50b3NoaS53b3Jrc3BhY2UudjEuR2V0SG9zdEpvYkZhaWx1cmVSZXF1ZXN0Gi0udG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JGYWlsdXJlUmVzcG9uc2UiDsLzGApob3N0cy5yZWFkEoYBChNHZXRIb3N0Sm9iVGVsZW1ldHJ5Ei4udG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JUZWxlbWV0cnlSZXF1ZXN0Gi8udG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JUZWxlbWV0cnlSZXNwb25zZSIOwvMYCmhvc3RzLnJlYWQSsQEKFUdldEhvc3RKb2JEZWJ1Z0FjY2VzcxIwLnRvc2hpLndvcmtzcGFjZS52MS5HZXRIb3N0Sm9iRGVidWdBY2Nlc3NSZXF1ZXN0GjEudG9zaGkud29ya3NwYWNlLnYxLkdldEhvc3RKb2JEZWJ1Z0FjY2Vzc1Jlc3BvbnNlIjPC8xgNZGVidWcuY29ubmVjdNLzGB4KHGhvc3Rfam9iLmRlYnVnX2FjY2Vzc19pc3N1ZWQSmgEKEFN0b3BIb3N0Sm9iRGVidWcSKy50b3NoaS53b3Jrc3BhY2UudjEuU3RvcEhvc3RKb2JEZWJ1Z1JlcXVlc3QaLC50b3NoaS53b3Jrc3BhY2UudjEuU3RvcEhvc3RKb2JEZWJ1Z1Jlc3BvbnNlIivC8xgLZGVidWcud3JpdGXS8xgYChZob3N0X2pvYi5kZWJ1Z19zdG9wcGVkQiJaIGdvLnRvc2hpY2xvdWQuaW8vYXBpL3dvcmtzcGFjZXYxYgZwcm90bzM", [file_google_protobuf_timestamp, file_toshi_permission]);
11
11
  /**
12
12
  * Describes the message toshi.workspace.v1.ListHostJobsRequest.
13
13
  * Use `create(ListHostJobsRequestSchema)` to create a new message.
@@ -83,26 +83,31 @@ export const StopHostJobDebugResponseSchema = /*@__PURE__*/ messageDesc(file_tos
83
83
  * Use `create(HostJobSchema)` to create a new message.
84
84
  */
85
85
  export const HostJobSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 14);
86
+ /**
87
+ * Describes the message toshi.workspace.v1.HostJobAttempt.
88
+ * Use `create(HostJobAttemptSchema)` to create a new message.
89
+ */
90
+ export const HostJobAttemptSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 15);
86
91
  /**
87
92
  * Describes the message toshi.workspace.v1.HostJobTelemetrySummary.
88
93
  * Use `create(HostJobTelemetrySummarySchema)` to create a new message.
89
94
  */
90
- export const HostJobTelemetrySummarySchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 15);
95
+ export const HostJobTelemetrySummarySchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 16);
91
96
  /**
92
97
  * Describes the message toshi.workspace.v1.HostJobCache.
93
98
  * Use `create(HostJobCacheSchema)` to create a new message.
94
99
  */
95
- export const HostJobCacheSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 16);
100
+ export const HostJobCacheSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 17);
96
101
  /**
97
102
  * Describes the message toshi.workspace.v1.HostJobTelemetrySample.
98
103
  * Use `create(HostJobTelemetrySampleSchema)` to create a new message.
99
104
  */
100
- export const HostJobTelemetrySampleSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 17);
105
+ export const HostJobTelemetrySampleSchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 18);
101
106
  /**
102
107
  * Describes the message toshi.workspace.v1.HostJobFailureHistory.
103
108
  * Use `create(HostJobFailureHistorySchema)` to create a new message.
104
109
  */
105
- export const HostJobFailureHistorySchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 18);
110
+ export const HostJobFailureHistorySchema = /*@__PURE__*/ messageDesc(file_toshi_workspace_v1_hostjobs, 19);
106
111
  /**
107
112
  * HostJobState is where a host job is in its life cycle.
108
113
  *