@fleetless/contracts 4.0.0-next.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,15 +9,17 @@ version.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [4.0.0] — 2026-09-29
13
+
12
14
  ### Added
13
15
 
14
16
  - **Protocol 4: a job heartbeat, and a vanished action server ends its job.**
15
- Protocol bumped: bridges from `4.1.0`, and protocol 3 sunsets
16
- 2026-12-27 (protocol 2 sunset 2026-12-21). The bridge now sends a
17
+ Protocol bumped: bridges from `5.0.0`, and protocol 3 sunsets
18
+ 2026-12-28 (protocol 2 sunset 2026-12-21). The bridge now sends a
17
19
  `job_update` heartbeat every `JOB_HEARTBEAT_INTERVAL_MS` for every running
18
- job; `job_lost` gains an optional `error`, so a bridge that finds its
19
- action server gone can say `action_server_lost` instead of leaving the
20
- cloud to guess. `JOB_HEARTBEAT_TIMEOUT_MS` bounds a protocol-4 job's
20
+ job, and ends a job whose action server vanished `lost` with
21
+ `action_server_lost` instead of leaving the cloud to guess; `job_lost`
22
+ gains an optional `error` that can say the same. `JOB_HEARTBEAT_TIMEOUT_MS` bounds a protocol-4 job's
21
23
  silence once it has been heard from at all; `patience_ms` now bounds only
22
24
  the acceptance gap on such a job (unchanged for protocol 3, which sends no
23
25
  heartbeat). `JOB_OFFLINE_GRACE_MS` (five minutes) replaces the informal
@@ -10,16 +10,16 @@
10
10
  {
11
11
  "version": 3,
12
12
  "bridge_from": "4.0.0",
13
- "deprecated_at": "2026-09-28"
13
+ "deprecated_at": "2026-09-29"
14
14
  },
15
15
  {
16
16
  "version": 4,
17
- "bridge_from": "4.1.0",
17
+ "bridge_from": "5.0.0",
18
18
  "deprecated_at": null
19
19
  }
20
20
  ],
21
21
  "PROTOCOL_SUNSET_DAYS": 90,
22
- "LATEST_BRIDGE_VERSION": "4.1.0",
22
+ "LATEST_BRIDGE_VERSION": "5.0.0",
23
23
  "CLOSE_ROBOT_DELETED": 4004,
24
24
  "CLOSE_TOKEN_ROTATED": 4005,
25
25
  "JOB_HEARTBEAT_INTERVAL_MS": 1000,
package/dist/errors.js CHANGED
@@ -163,7 +163,7 @@ export const ERROR_CODES = [
163
163
  'goal_send_failed',
164
164
  /** Asking the action server for its result raised; `job.error.code` on `failed`. */
165
165
  'result_failed',
166
- /** A goal accepted after its own timeout could not then be cancelled; `job.error.code` on `failed`. */
166
+ /** A goal accepted after its own timeout could not then be cancelled; `job.error.code` on `lost`. */
167
167
  'goal_uncontrollable',
168
168
  /**
169
169
  * The robot stayed offline for longer than `JOB_OFFLINE_GRACE_MS` while a
@@ -11,10 +11,11 @@ import { z } from 'zod';
11
11
  * which names the window and reaches the robot's detail view as
12
12
  * `last_hello_error`.
13
13
  *
14
- * **4 (2026-09-28):** the bridge sends a `job_update` heartbeat at
14
+ * **4 (2026-09-29):** the bridge sends a `job_update` heartbeat at
15
15
  * `JOB_HEARTBEAT_INTERVAL_MS` for every running job, whether or not the
16
- * action said anything new, and reports a vanished action server with
17
- * `job_lost`'s new optional `error`, `action_server_lost`. The cloud bounds
16
+ * action said anything new, and ends a job whose action server vanished
17
+ * `lost` with `action_server_lost` (a terminal `job_update`; `job_lost`
18
+ * gains an optional `error` for the same purpose). The cloud bounds
18
19
  * a protocol-4 job's silence by the heartbeat (`JOB_HEARTBEAT_TIMEOUT_MS`)
19
20
  * once it has heard from the job at all; `patience_ms` still bounds
20
21
  * acceptance, the same as before. Offline tolerance is
@@ -56,7 +57,7 @@ export interface ProtocolVersionEntry {
56
57
  */
57
58
  export declare const PROTOCOL_VERSIONS: readonly ProtocolVersionEntry[];
58
59
  /** The newest bridge package. The cloud mails organisations still below it. */
59
- export declare const LATEST_BRIDGE_VERSION = "4.1.0";
60
+ export declare const LATEST_BRIDGE_VERSION = "5.0.0";
60
61
  export interface ProtocolStatus {
61
62
  status: 'current' | 'deprecated' | 'unsupported';
62
63
  /** ISO date, or null for a current or unknown version. */
package/dist/protocol.js CHANGED
@@ -17,10 +17,11 @@ import { rosTypeName } from './common.js';
17
17
  * which names the window and reaches the robot's detail view as
18
18
  * `last_hello_error`.
19
19
  *
20
- * **4 (2026-09-28):** the bridge sends a `job_update` heartbeat at
20
+ * **4 (2026-09-29):** the bridge sends a `job_update` heartbeat at
21
21
  * `JOB_HEARTBEAT_INTERVAL_MS` for every running job, whether or not the
22
- * action said anything new, and reports a vanished action server with
23
- * `job_lost`'s new optional `error`, `action_server_lost`. The cloud bounds
22
+ * action said anything new, and ends a job whose action server vanished
23
+ * `lost` with `action_server_lost` (a terminal `job_update`; `job_lost`
24
+ * gains an optional `error` for the same purpose). The cloud bounds
24
25
  * a protocol-4 job's silence by the heartbeat (`JOB_HEARTBEAT_TIMEOUT_MS`)
25
26
  * once it has heard from the job at all; `patience_ms` still bounds
26
27
  * acceptance, the same as before. Offline tolerance is
@@ -55,11 +56,11 @@ export const PROTOCOL_SUNSET_DAYS = 90;
55
56
  */
56
57
  export const PROTOCOL_VERSIONS = [
57
58
  { version: 2, bridge_from: '3.0.0', deprecated_at: '2026-09-22' },
58
- { version: 3, bridge_from: '4.0.0', deprecated_at: '2026-09-28' },
59
- { version: 4, bridge_from: '4.1.0', deprecated_at: null },
59
+ { version: 3, bridge_from: '4.0.0', deprecated_at: '2026-09-29' },
60
+ { version: 4, bridge_from: '5.0.0', deprecated_at: null },
60
61
  ];
61
62
  /** The newest bridge package. The cloud mails organisations still below it. */
62
- export const LATEST_BRIDGE_VERSION = '4.1.0';
63
+ export const LATEST_BRIDGE_VERSION = '5.0.0';
63
64
  const DAY_MS = 24 * 60 * 60 * 1000;
64
65
  function isoDate(date) {
65
66
  return date.toISOString().slice(0, 10);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetless/contracts",
3
- "version": "4.0.0-next.1",
3
+ "version": "4.0.0",
4
4
  "description": "Fleetless wire contracts: the bridge-cloud protocol, the REST API schemas and the error codes, as zod schemas with generated JSON Schema and OpenAPI artifacts.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Dehne Robotik GmbH",