@fleetless/sdk 4.2.0-next.1 → 4.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.
package/CHANGELOG.md CHANGED
@@ -4,7 +4,9 @@ All notable changes to `@fleetless/sdk`. The format follows Keep a Changelog; th
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
- Built against `@fleetless/contracts` 5.1.0 (pinned to its pre-release `5.1.0-next.1` until that ships).
7
+ ## [4.2.0] — 2026-09-30
8
+
9
+ Built against `@fleetless/contracts` 5.1.0.
8
10
 
9
11
  ### Added
10
12
 
package/dist/index.cjs CHANGED
@@ -442,7 +442,7 @@ function createAssetsApi(http) {
442
442
  };
443
443
  }
444
444
 
445
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/common.js
445
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/common.js
446
446
  var import_zod = require("zod");
447
447
  var SLUG_RULE = "A name is lower-case: it starts with a letter, continues with letters and digits, and joins further words with a single underscore \u2014 `battery_voltage`. Capitals, dashes, dots, spaces, a leading digit and a doubled or trailing underscore are all refused.";
448
448
  var slug = import_zod.z.string().min(2).max(63).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/, SLUG_RULE);
@@ -473,7 +473,7 @@ var applyError = import_zod.z.object({
473
473
  details: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
474
474
  });
475
475
 
476
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/mcp.js
476
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/mcp.js
477
477
  var import_zod2 = require("zod");
478
478
  function mcpAppEndpointPath(appIdentifier2) {
479
479
  return `/mcp/${appIdentifier2}`;
@@ -522,10 +522,10 @@ var mcpRolePreviewResponse = import_zod2.z.object({
522
522
  });
523
523
  var MCP_ASSET_LINK_TTL_MS = 15 * 60 * 1e3;
524
524
 
525
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/protocol.js
525
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/protocol.js
526
526
  var import_zod8 = require("zod");
527
527
 
528
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/assets.js
528
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/assets.js
529
529
  var import_zod3 = require("zod");
530
530
  var assetKind = import_zod3.z.enum(["urdf", "mesh", "texture"]);
531
531
  var asset = import_zod3.z.object({
@@ -845,10 +845,10 @@ var assetSyncBusyDetails = import_zod3.z.object({
845
845
  started_at_ms: import_zod3.z.number().int().nonnegative()
846
846
  });
847
847
 
848
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/config.js
848
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/config.js
849
849
  var import_zod5 = require("zod");
850
850
 
851
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/alerts.js
851
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/alerts.js
852
852
  var import_zod4 = require("zod");
853
853
  var alertRowCondition = import_zod4.z.discriminatedUnion("kind", [
854
854
  import_zod4.z.strictObject({
@@ -918,7 +918,7 @@ var putDatapointDisplayRequest = import_zod4.z.object({
918
918
  y_max: import_zod4.z.number().finite().nullable()
919
919
  }).strict();
920
920
 
921
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/config.js
921
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/config.js
922
922
  var RTSP_URL_RULE = "The URL has to begin with `rtsp://` or `rtsps://` \u2014 `rtsp://cam-1.plant.local/stream1`. No other scheme is accepted: the bridge opens this with a library that would equally honour `file:`.";
923
923
  var MJPEG_URL_RULE = "The URL has to begin with `http://` or `https://` \u2014 `http://cam-1.plant.local/video.mjpg`. No other scheme is accepted: the bridge opens this with a library that would equally serve `file:`.";
924
924
  var DEVICE_PATH_RULE = "A capture device is a path under `/dev/`, and the character straight after it is a letter or a digit \u2014 `/dev/video0`, or a stable `/dev/v4l/by-id/...` symlink. Nothing outside `/dev/` is accepted: the string reaches OpenCV, which would as happily open an ordinary file.";
@@ -2010,7 +2010,7 @@ var configState = import_zod5.z.object({
2010
2010
  applied_errors: import_zod5.z.array(applyError).nullable()
2011
2011
  });
2012
2012
 
2013
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/introspection.js
2013
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/introspection.js
2014
2014
  var import_zod6 = require("zod");
2015
2015
  var rosGraphEntry = import_zod6.z.object({
2016
2016
  name: rosName,
@@ -2049,7 +2049,7 @@ var typeDefinition = import_zod6.z.discriminatedUnion("kind", [
2049
2049
  })
2050
2050
  ]);
2051
2051
 
2052
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/jobs.js
2052
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/jobs.js
2053
2053
  var import_zod7 = require("zod");
2054
2054
  var jobState = import_zod7.z.enum(["running", "unknown", "succeeded", "failed", "cancelled", "lost"]);
2055
2055
  var reportedJobState = jobState.exclude(["unknown"]);
@@ -2272,7 +2272,7 @@ var jobRunSummary = import_zod7.z.object({
2272
2272
  since_ms: import_zod7.z.number().int().nonnegative()
2273
2273
  });
2274
2274
 
2275
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/protocol.js
2275
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/protocol.js
2276
2276
  var DAY_MS = 24 * 60 * 60 * 1e3;
2277
2277
  var MAX_PATIENCE_MS = 12e4;
2278
2278
  var MIN_PATIENCE_MS = 1e3;
@@ -2669,11 +2669,11 @@ var bridgeCameraState = import_zod8.z.object({
2669
2669
  request_id: import_zod8.z.string().min(1).max(64).nullable()
2670
2670
  });
2671
2671
 
2672
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/config-issues.js
2672
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/config-issues.js
2673
2673
  var EXPOSURE_SECTIONS = ["datapoints", "actions", "services", "publishers", "cameras"];
2674
2674
  var EXPOSURE_SECTION_NAMES = new Set(EXPOSURE_SECTIONS);
2675
2675
 
2676
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/rest.js
2676
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/rest.js
2677
2677
  var import_zod9 = require("zod");
2678
2678
  var robot = import_zod9.z.object({
2679
2679
  id: import_zod9.z.uuid().meta({
@@ -3438,13 +3438,13 @@ var slugUsageResponse = import_zod9.z.object({
3438
3438
  alert_count: import_zod9.z.number().int().nonnegative()
3439
3439
  });
3440
3440
 
3441
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/realtime.js
3441
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/realtime.js
3442
3442
  var import_zod14 = require("zod");
3443
3443
 
3444
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/client-auth.js
3444
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/client-auth.js
3445
3445
  var import_zod13 = require("zod");
3446
3446
 
3447
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/apps.js
3447
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/apps.js
3448
3448
  var import_zod10 = require("zod");
3449
3449
  var appIdentifier = slug;
3450
3450
  var app = import_zod10.z.object({
@@ -3646,10 +3646,10 @@ var rolePermissions = import_zod10.z.object({
3646
3646
  })
3647
3647
  });
3648
3648
 
3649
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/app-users.js
3649
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/app-users.js
3650
3650
  var import_zod12 = require("zod");
3651
3651
 
3652
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/identity.js
3652
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/identity.js
3653
3653
  var import_zod11 = require("zod");
3654
3654
  var password = import_zod11.z.string().min(12).max(256);
3655
3655
  var USER_DISPLAY_NAME_MAX = 120;
@@ -3811,7 +3811,7 @@ var authMeResponse = import_zod11.z.object({ org, user: fleetlessUser });
3811
3811
  var patchOrgRequest = import_zod11.z.object({ name: import_zod11.z.string().min(1).max(120) }).strict();
3812
3812
  var patchAuthMeRequest = import_zod11.z.object({ display_name: import_zod11.z.string().min(1).max(USER_DISPLAY_NAME_MAX).nullable() }).strict();
3813
3813
 
3814
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/app-users.js
3814
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/app-users.js
3815
3815
  var APP_USER_DISPLAY_NAME_MAX = 120;
3816
3816
  var providerSlug = import_zod12.z.string().max(40).regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, "must be lowercase and hyphen-separated, starting with a letter");
3817
3817
  var appUserStatus = import_zod12.z.enum(["pending_verification", "active", "blocked"]);
@@ -4064,7 +4064,7 @@ var mailOutcome = import_zod12.z.object({
4064
4064
  })
4065
4065
  });
4066
4066
 
4067
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/client-auth.js
4067
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/client-auth.js
4068
4068
  var clientLoginRequest = import_zod13.z.object({
4069
4069
  app_identifier: appIdentifier.meta({
4070
4070
  description: "The app being logged in to: its globally unique, lowercase, underscore-separated identifier, chosen by the developer at creation. There is no organisation context at login, so this is what decides which app the credentials are checked for."
@@ -4253,7 +4253,7 @@ var clientIdentity = import_zod13.z.object({
4253
4253
  })
4254
4254
  });
4255
4255
 
4256
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/realtime.js
4256
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/realtime.js
4257
4257
  var clientAuth = import_zod14.z.object({
4258
4258
  type: import_zod14.z.literal("auth"),
4259
4259
  token: import_zod14.z.string().min(1)
@@ -4531,7 +4531,7 @@ var orgEventDropped = import_zod14.z.object({
4531
4531
  dropped: import_zod14.z.number().int().positive()
4532
4532
  }).strict();
4533
4533
 
4534
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/client-robots.js
4534
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/client-robots.js
4535
4535
  var import_zod15 = require("zod");
4536
4536
  var clientRobotListItem = import_zod15.z.object({
4537
4537
  ...robot.shape,
@@ -4548,7 +4548,7 @@ var clientRobotListResponse = import_zod15.z.object({
4548
4548
  })
4549
4549
  });
4550
4550
 
4551
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/audit.js
4551
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/audit.js
4552
4552
  var import_zod16 = require("zod");
4553
4553
  var auditActor = import_zod16.z.object({
4554
4554
  kind: import_zod16.z.enum(["developer", "end_user", "app_user", "server_key", "bridge"]),
@@ -4678,7 +4678,7 @@ var auditListResponse = import_zod16.z.object({
4678
4678
  next_cursor: import_zod16.z.number().int().positive().nullable()
4679
4679
  });
4680
4680
 
4681
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/errors.js
4681
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/errors.js
4682
4682
  var import_zod17 = require("zod");
4683
4683
  var apiError = import_zod17.z.object({
4684
4684
  code: import_zod17.z.string().min(1),
@@ -4698,7 +4698,7 @@ var cancelRejectedDetails = import_zod17.z.object({
4698
4698
  goals: import_zod17.z.array(bridgeCancelResultEntry).min(1)
4699
4699
  });
4700
4700
 
4701
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/oauth.js
4701
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/oauth.js
4702
4702
  var import_zod18 = require("zod");
4703
4703
  var oauthErrorCode = import_zod18.z.enum([
4704
4704
  "invalid_request",
@@ -4938,7 +4938,7 @@ var oauthAuthorizeQuery = import_zod18.z.object({
4938
4938
  description: "The authorization request an MCP client sends, per RFC 6749 \xA74.1.1 with mandatory PKCE. The handler reads it parameter by parameter rather than through one parse, because the answers differ: `client_id` and `redirect_uri` are refused flat, with no redirect, since until both are confirmed there is no trusted target to bounce a browser to, and everything after them is reported to the client's own callback as query parameters."
4939
4939
  });
4940
4940
 
4941
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/routes.js
4941
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/routes.js
4942
4942
  var MCP_APP = MCP_APP_PATHS(":appIdentifier");
4943
4943
  var APP_IDENTIFIER = {
4944
4944
  name: "appIdentifier",
package/dist/index.js CHANGED
@@ -410,7 +410,7 @@ function createAssetsApi(http) {
410
410
  };
411
411
  }
412
412
 
413
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/common.js
413
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/common.js
414
414
  import { z } from "zod";
415
415
  var SLUG_RULE = "A name is lower-case: it starts with a letter, continues with letters and digits, and joins further words with a single underscore \u2014 `battery_voltage`. Capitals, dashes, dots, spaces, a leading digit and a doubled or trailing underscore are all refused.";
416
416
  var slug = z.string().min(2).max(63).regex(/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/, SLUG_RULE);
@@ -441,7 +441,7 @@ var applyError = z.object({
441
441
  details: z.record(z.string(), z.unknown()).optional()
442
442
  });
443
443
 
444
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/mcp.js
444
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/mcp.js
445
445
  import { z as z2 } from "zod";
446
446
  function mcpAppEndpointPath(appIdentifier2) {
447
447
  return `/mcp/${appIdentifier2}`;
@@ -490,10 +490,10 @@ var mcpRolePreviewResponse = z2.object({
490
490
  });
491
491
  var MCP_ASSET_LINK_TTL_MS = 15 * 60 * 1e3;
492
492
 
493
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/protocol.js
493
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/protocol.js
494
494
  import { z as z8 } from "zod";
495
495
 
496
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/assets.js
496
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/assets.js
497
497
  import { z as z3 } from "zod";
498
498
  var assetKind = z3.enum(["urdf", "mesh", "texture"]);
499
499
  var asset = z3.object({
@@ -813,10 +813,10 @@ var assetSyncBusyDetails = z3.object({
813
813
  started_at_ms: z3.number().int().nonnegative()
814
814
  });
815
815
 
816
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/config.js
816
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/config.js
817
817
  import { z as z5 } from "zod";
818
818
 
819
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/alerts.js
819
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/alerts.js
820
820
  import { z as z4 } from "zod";
821
821
  var alertRowCondition = z4.discriminatedUnion("kind", [
822
822
  z4.strictObject({
@@ -886,7 +886,7 @@ var putDatapointDisplayRequest = z4.object({
886
886
  y_max: z4.number().finite().nullable()
887
887
  }).strict();
888
888
 
889
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/config.js
889
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/config.js
890
890
  var RTSP_URL_RULE = "The URL has to begin with `rtsp://` or `rtsps://` \u2014 `rtsp://cam-1.plant.local/stream1`. No other scheme is accepted: the bridge opens this with a library that would equally honour `file:`.";
891
891
  var MJPEG_URL_RULE = "The URL has to begin with `http://` or `https://` \u2014 `http://cam-1.plant.local/video.mjpg`. No other scheme is accepted: the bridge opens this with a library that would equally serve `file:`.";
892
892
  var DEVICE_PATH_RULE = "A capture device is a path under `/dev/`, and the character straight after it is a letter or a digit \u2014 `/dev/video0`, or a stable `/dev/v4l/by-id/...` symlink. Nothing outside `/dev/` is accepted: the string reaches OpenCV, which would as happily open an ordinary file.";
@@ -1978,7 +1978,7 @@ var configState = z5.object({
1978
1978
  applied_errors: z5.array(applyError).nullable()
1979
1979
  });
1980
1980
 
1981
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/introspection.js
1981
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/introspection.js
1982
1982
  import { z as z6 } from "zod";
1983
1983
  var rosGraphEntry = z6.object({
1984
1984
  name: rosName,
@@ -2017,7 +2017,7 @@ var typeDefinition = z6.discriminatedUnion("kind", [
2017
2017
  })
2018
2018
  ]);
2019
2019
 
2020
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/jobs.js
2020
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/jobs.js
2021
2021
  import { z as z7 } from "zod";
2022
2022
  var jobState = z7.enum(["running", "unknown", "succeeded", "failed", "cancelled", "lost"]);
2023
2023
  var reportedJobState = jobState.exclude(["unknown"]);
@@ -2240,7 +2240,7 @@ var jobRunSummary = z7.object({
2240
2240
  since_ms: z7.number().int().nonnegative()
2241
2241
  });
2242
2242
 
2243
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/protocol.js
2243
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/protocol.js
2244
2244
  var DAY_MS = 24 * 60 * 60 * 1e3;
2245
2245
  var MAX_PATIENCE_MS = 12e4;
2246
2246
  var MIN_PATIENCE_MS = 1e3;
@@ -2637,11 +2637,11 @@ var bridgeCameraState = z8.object({
2637
2637
  request_id: z8.string().min(1).max(64).nullable()
2638
2638
  });
2639
2639
 
2640
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/config-issues.js
2640
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/config-issues.js
2641
2641
  var EXPOSURE_SECTIONS = ["datapoints", "actions", "services", "publishers", "cameras"];
2642
2642
  var EXPOSURE_SECTION_NAMES = new Set(EXPOSURE_SECTIONS);
2643
2643
 
2644
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/rest.js
2644
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/rest.js
2645
2645
  import { z as z9 } from "zod";
2646
2646
  var robot = z9.object({
2647
2647
  id: z9.uuid().meta({
@@ -3406,13 +3406,13 @@ var slugUsageResponse = z9.object({
3406
3406
  alert_count: z9.number().int().nonnegative()
3407
3407
  });
3408
3408
 
3409
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/realtime.js
3409
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/realtime.js
3410
3410
  import { z as z14 } from "zod";
3411
3411
 
3412
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/client-auth.js
3412
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/client-auth.js
3413
3413
  import { z as z13 } from "zod";
3414
3414
 
3415
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/apps.js
3415
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/apps.js
3416
3416
  import { z as z10 } from "zod";
3417
3417
  var appIdentifier = slug;
3418
3418
  var app = z10.object({
@@ -3614,10 +3614,10 @@ var rolePermissions = z10.object({
3614
3614
  })
3615
3615
  });
3616
3616
 
3617
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/app-users.js
3617
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/app-users.js
3618
3618
  import { z as z12 } from "zod";
3619
3619
 
3620
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/identity.js
3620
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/identity.js
3621
3621
  import { z as z11 } from "zod";
3622
3622
  var password = z11.string().min(12).max(256);
3623
3623
  var USER_DISPLAY_NAME_MAX = 120;
@@ -3779,7 +3779,7 @@ var authMeResponse = z11.object({ org, user: fleetlessUser });
3779
3779
  var patchOrgRequest = z11.object({ name: z11.string().min(1).max(120) }).strict();
3780
3780
  var patchAuthMeRequest = z11.object({ display_name: z11.string().min(1).max(USER_DISPLAY_NAME_MAX).nullable() }).strict();
3781
3781
 
3782
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/app-users.js
3782
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/app-users.js
3783
3783
  var APP_USER_DISPLAY_NAME_MAX = 120;
3784
3784
  var providerSlug = z12.string().max(40).regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, "must be lowercase and hyphen-separated, starting with a letter");
3785
3785
  var appUserStatus = z12.enum(["pending_verification", "active", "blocked"]);
@@ -4032,7 +4032,7 @@ var mailOutcome = z12.object({
4032
4032
  })
4033
4033
  });
4034
4034
 
4035
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/client-auth.js
4035
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/client-auth.js
4036
4036
  var clientLoginRequest = z13.object({
4037
4037
  app_identifier: appIdentifier.meta({
4038
4038
  description: "The app being logged in to: its globally unique, lowercase, underscore-separated identifier, chosen by the developer at creation. There is no organisation context at login, so this is what decides which app the credentials are checked for."
@@ -4221,7 +4221,7 @@ var clientIdentity = z13.object({
4221
4221
  })
4222
4222
  });
4223
4223
 
4224
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/realtime.js
4224
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/realtime.js
4225
4225
  var clientAuth = z14.object({
4226
4226
  type: z14.literal("auth"),
4227
4227
  token: z14.string().min(1)
@@ -4499,7 +4499,7 @@ var orgEventDropped = z14.object({
4499
4499
  dropped: z14.number().int().positive()
4500
4500
  }).strict();
4501
4501
 
4502
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/client-robots.js
4502
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/client-robots.js
4503
4503
  import { z as z15 } from "zod";
4504
4504
  var clientRobotListItem = z15.object({
4505
4505
  ...robot.shape,
@@ -4516,7 +4516,7 @@ var clientRobotListResponse = z15.object({
4516
4516
  })
4517
4517
  });
4518
4518
 
4519
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/audit.js
4519
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/audit.js
4520
4520
  import { z as z16 } from "zod";
4521
4521
  var auditActor = z16.object({
4522
4522
  kind: z16.enum(["developer", "end_user", "app_user", "server_key", "bridge"]),
@@ -4646,7 +4646,7 @@ var auditListResponse = z16.object({
4646
4646
  next_cursor: z16.number().int().positive().nullable()
4647
4647
  });
4648
4648
 
4649
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/errors.js
4649
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/errors.js
4650
4650
  import { z as z17 } from "zod";
4651
4651
  var apiError = z17.object({
4652
4652
  code: z17.string().min(1),
@@ -4666,7 +4666,7 @@ var cancelRejectedDetails = z17.object({
4666
4666
  goals: z17.array(bridgeCancelResultEntry).min(1)
4667
4667
  });
4668
4668
 
4669
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/oauth.js
4669
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/oauth.js
4670
4670
  import { z as z18 } from "zod";
4671
4671
  var oauthErrorCode = z18.enum([
4672
4672
  "invalid_request",
@@ -4906,7 +4906,7 @@ var oauthAuthorizeQuery = z18.object({
4906
4906
  description: "The authorization request an MCP client sends, per RFC 6749 \xA74.1.1 with mandatory PKCE. The handler reads it parameter by parameter rather than through one parse, because the answers differ: `client_id` and `redirect_uri` are refused flat, with no redirect, since until both are confirmed there is no trusted target to bounce a browser to, and everything after them is reported to the client's own callback as query parameters."
4907
4907
  });
4908
4908
 
4909
- // node_modules/.pnpm/@fleetless+contracts@5.1.0-next.1/node_modules/@fleetless/contracts/dist/routes.js
4909
+ // node_modules/.pnpm/@fleetless+contracts@5.1.0/node_modules/@fleetless/contracts/dist/routes.js
4910
4910
  var MCP_APP = MCP_APP_PATHS(":appIdentifier");
4911
4911
  var APP_IDENTIFIER = {
4912
4912
  name: "appIdentifier",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetless/sdk",
3
- "version": "4.2.0-next.1",
3
+ "version": "4.2.0",
4
4
  "description": "The official TypeScript SDK for Fleetless client apps — a ROS 2 robot as a REST and realtime API, cameras, jobs, and the app's own user accounts, federated sign-in and MCP consent.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -76,7 +76,7 @@
76
76
  "zod": "^4.0.0"
77
77
  },
78
78
  "devDependencies": {
79
- "@fleetless/contracts": "5.1.0-next.1",
79
+ "@fleetless/contracts": "5.1.0",
80
80
  "@types/node": "^22.20.1",
81
81
  "tsup": "^8.3.0",
82
82
  "typedoc": "0.28.20",