@fleetless/sdk 4.4.0-next.1 → 4.4.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,9 +4,11 @@ All notable changes to `@fleetless/sdk`. The format follows Keep a Changelog; th
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [4.4.0] — 2026-10-04
8
+
7
9
  ### Added
8
10
 
9
- - **`oidcErrorFromCallback` recognises `plan_limit`**: a federated sign-in refused because the org's plan has no room for another app user. Before, the cloud sent `quota_exceeded` for it; that code now means only the `max_end_users` protection ceiling. Built against `@fleetless/contracts` 6.2.0-next.2.
11
+ - **`oidcErrorFromCallback` recognises `plan_limit`**: a federated sign-in refused because the org's plan has no room for another app user. Before, the cloud sent `quota_exceeded` for it; that code now means only the `max_end_users` protection ceiling. Built against `@fleetless/contracts` 6.2.0.
10
12
 
11
13
  ### Compatibility
12
14
 
package/dist/index.cjs CHANGED
@@ -442,7 +442,7 @@ function createAssetsApi(http) {
442
442
  };
443
443
  }
444
444
 
445
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/common.js
445
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/mcp.js
476
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/protocol.js
525
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/protocol.js
526
526
  var import_zod8 = require("zod");
527
527
 
528
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/assets.js
528
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/config.js
848
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/config.js
849
849
  var import_zod5 = require("zod");
850
850
 
851
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/alerts.js
851
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/config.js
921
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/introspection.js
2013
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/jobs.js
2052
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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"]);
@@ -2286,7 +2286,7 @@ var jobRunSummary = import_zod7.z.object({
2286
2286
  since_ms: import_zod7.z.number().int().nonnegative()
2287
2287
  });
2288
2288
 
2289
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/protocol.js
2289
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/protocol.js
2290
2290
  var DAY_MS = 24 * 60 * 60 * 1e3;
2291
2291
  var MAX_PATIENCE_MS = 12e4;
2292
2292
  var MIN_PATIENCE_MS = 1e3;
@@ -2684,11 +2684,11 @@ var bridgeCameraState = import_zod8.z.object({
2684
2684
  request_id: import_zod8.z.string().min(1).max(64).nullable()
2685
2685
  });
2686
2686
 
2687
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/config-issues.js
2687
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/config-issues.js
2688
2688
  var EXPOSURE_SECTIONS = ["datapoints", "actions", "services", "publishers", "cameras"];
2689
2689
  var EXPOSURE_SECTION_NAMES = new Set(EXPOSURE_SECTIONS);
2690
2690
 
2691
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/rest.js
2691
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/rest.js
2692
2692
  var import_zod9 = require("zod");
2693
2693
  var robot = import_zod9.z.object({
2694
2694
  id: import_zod9.z.uuid().meta({
@@ -3453,13 +3453,13 @@ var slugUsageResponse = import_zod9.z.object({
3453
3453
  alert_count: import_zod9.z.number().int().nonnegative()
3454
3454
  });
3455
3455
 
3456
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/realtime.js
3456
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/realtime.js
3457
3457
  var import_zod14 = require("zod");
3458
3458
 
3459
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/client-auth.js
3459
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/client-auth.js
3460
3460
  var import_zod13 = require("zod");
3461
3461
 
3462
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/apps.js
3462
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/apps.js
3463
3463
  var import_zod10 = require("zod");
3464
3464
  var appIdentifier = slug;
3465
3465
  var app = import_zod10.z.object({
@@ -3682,10 +3682,10 @@ var rolePermissions = import_zod10.z.object({
3682
3682
  })
3683
3683
  });
3684
3684
 
3685
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/app-users.js
3685
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/app-users.js
3686
3686
  var import_zod12 = require("zod");
3687
3687
 
3688
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/identity.js
3688
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/identity.js
3689
3689
  var import_zod11 = require("zod");
3690
3690
  var password = import_zod11.z.string().min(12).max(256);
3691
3691
  var USER_DISPLAY_NAME_MAX = 120;
@@ -3903,7 +3903,7 @@ var recoveryCodesResponse = import_zod11.z.object({
3903
3903
  recovery_codes: recoveryCodesList.meta({ description: "The ten new recovery codes, lowercase, shown once. Every earlier code is void." })
3904
3904
  });
3905
3905
 
3906
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/app-users.js
3906
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/app-users.js
3907
3907
  var APP_USER_DISPLAY_NAME_MAX = 120;
3908
3908
  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");
3909
3909
  var appUserStatus = import_zod12.z.enum(["pending_verification", "active", "blocked"]);
@@ -4214,7 +4214,7 @@ var mailOutcome = import_zod12.z.object({
4214
4214
  })
4215
4215
  });
4216
4216
 
4217
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/client-auth.js
4217
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/client-auth.js
4218
4218
  var clientLoginRequest = import_zod13.z.object({
4219
4219
  app_identifier: appIdentifier.meta({
4220
4220
  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."
@@ -4455,7 +4455,7 @@ var clientIdentity = import_zod13.z.object({
4455
4455
  })
4456
4456
  });
4457
4457
 
4458
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/realtime.js
4458
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/realtime.js
4459
4459
  var clientAuth = import_zod14.z.object({
4460
4460
  type: import_zod14.z.literal("auth"),
4461
4461
  token: import_zod14.z.string().min(1)
@@ -4739,7 +4739,7 @@ var orgEventDropped = import_zod14.z.object({
4739
4739
  dropped: import_zod14.z.number().int().positive()
4740
4740
  }).strict();
4741
4741
 
4742
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/feedback.js
4742
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/feedback.js
4743
4743
  var import_zod15 = require("zod");
4744
4744
  var FEEDBACK_KINDS = ["idea", "problem", "question", "other"];
4745
4745
  var feedbackKind = import_zod15.z.enum(FEEDBACK_KINDS);
@@ -4764,7 +4764,7 @@ var feedbackResponse = import_zod15.z.object({
4764
4764
  })
4765
4765
  }).strict();
4766
4766
 
4767
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/client-robots.js
4767
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/client-robots.js
4768
4768
  var import_zod16 = require("zod");
4769
4769
  var clientRobotListItem = import_zod16.z.object({
4770
4770
  ...robot.shape,
@@ -4781,7 +4781,7 @@ var clientRobotListResponse = import_zod16.z.object({
4781
4781
  })
4782
4782
  });
4783
4783
 
4784
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/audit.js
4784
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/audit.js
4785
4785
  var import_zod17 = require("zod");
4786
4786
  var auditActor = import_zod17.z.object({
4787
4787
  kind: import_zod17.z.enum(["developer", "end_user", "app_user", "server_key", "bridge", "fleetless"]),
@@ -4923,10 +4923,10 @@ var auditListResponse = import_zod17.z.object({
4923
4923
  next_cursor: import_zod17.z.number().int().positive().nullable()
4924
4924
  });
4925
4925
 
4926
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/errors.js
4926
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/errors.js
4927
4927
  var import_zod19 = require("zod");
4928
4928
 
4929
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/plans.js
4929
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/plans.js
4930
4930
  var import_zod18 = require("zod");
4931
4931
  var planId = import_zod18.z.enum(["basic", "plus", "pro", "enterprise"]);
4932
4932
  var planLimitKey = import_zod18.z.enum([
@@ -5207,7 +5207,7 @@ var adminPlanChangeRequest = import_zod18.z.object({
5207
5207
  })
5208
5208
  }).strict();
5209
5209
 
5210
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/errors.js
5210
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/errors.js
5211
5211
  var apiError = import_zod19.z.object({
5212
5212
  code: import_zod19.z.string().min(1),
5213
5213
  message: import_zod19.z.string().min(1),
@@ -5272,7 +5272,7 @@ var fileTooLargeDetails = import_zod19.z.object({
5272
5272
  })
5273
5273
  });
5274
5274
 
5275
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/oauth.js
5275
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/oauth.js
5276
5276
  var import_zod20 = require("zod");
5277
5277
  var oauthErrorCode = import_zod20.z.enum([
5278
5278
  "invalid_request",
@@ -5512,7 +5512,7 @@ var oauthAuthorizeQuery = import_zod20.z.object({
5512
5512
  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."
5513
5513
  });
5514
5514
 
5515
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/routes.js
5515
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/routes.js
5516
5516
  var MCP_APP = MCP_APP_PATHS(":appIdentifier");
5517
5517
  var APP_IDENTIFIER = {
5518
5518
  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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/common.js
413
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/mcp.js
444
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/protocol.js
493
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/protocol.js
494
494
  import { z as z8 } from "zod";
495
495
 
496
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/assets.js
496
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/config.js
816
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/config.js
817
817
  import { z as z5 } from "zod";
818
818
 
819
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/alerts.js
819
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/config.js
889
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/introspection.js
1981
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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@6.2.0-next.2/node_modules/@fleetless/contracts/dist/jobs.js
2020
+ // node_modules/.pnpm/@fleetless+contracts@6.2.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"]);
@@ -2254,7 +2254,7 @@ var jobRunSummary = z7.object({
2254
2254
  since_ms: z7.number().int().nonnegative()
2255
2255
  });
2256
2256
 
2257
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/protocol.js
2257
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/protocol.js
2258
2258
  var DAY_MS = 24 * 60 * 60 * 1e3;
2259
2259
  var MAX_PATIENCE_MS = 12e4;
2260
2260
  var MIN_PATIENCE_MS = 1e3;
@@ -2652,11 +2652,11 @@ var bridgeCameraState = z8.object({
2652
2652
  request_id: z8.string().min(1).max(64).nullable()
2653
2653
  });
2654
2654
 
2655
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/config-issues.js
2655
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/config-issues.js
2656
2656
  var EXPOSURE_SECTIONS = ["datapoints", "actions", "services", "publishers", "cameras"];
2657
2657
  var EXPOSURE_SECTION_NAMES = new Set(EXPOSURE_SECTIONS);
2658
2658
 
2659
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/rest.js
2659
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/rest.js
2660
2660
  import { z as z9 } from "zod";
2661
2661
  var robot = z9.object({
2662
2662
  id: z9.uuid().meta({
@@ -3421,13 +3421,13 @@ var slugUsageResponse = z9.object({
3421
3421
  alert_count: z9.number().int().nonnegative()
3422
3422
  });
3423
3423
 
3424
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/realtime.js
3424
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/realtime.js
3425
3425
  import { z as z14 } from "zod";
3426
3426
 
3427
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/client-auth.js
3427
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/client-auth.js
3428
3428
  import { z as z13 } from "zod";
3429
3429
 
3430
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/apps.js
3430
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/apps.js
3431
3431
  import { z as z10 } from "zod";
3432
3432
  var appIdentifier = slug;
3433
3433
  var app = z10.object({
@@ -3650,10 +3650,10 @@ var rolePermissions = z10.object({
3650
3650
  })
3651
3651
  });
3652
3652
 
3653
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/app-users.js
3653
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/app-users.js
3654
3654
  import { z as z12 } from "zod";
3655
3655
 
3656
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/identity.js
3656
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/identity.js
3657
3657
  import { z as z11 } from "zod";
3658
3658
  var password = z11.string().min(12).max(256);
3659
3659
  var USER_DISPLAY_NAME_MAX = 120;
@@ -3871,7 +3871,7 @@ var recoveryCodesResponse = z11.object({
3871
3871
  recovery_codes: recoveryCodesList.meta({ description: "The ten new recovery codes, lowercase, shown once. Every earlier code is void." })
3872
3872
  });
3873
3873
 
3874
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/app-users.js
3874
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/app-users.js
3875
3875
  var APP_USER_DISPLAY_NAME_MAX = 120;
3876
3876
  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");
3877
3877
  var appUserStatus = z12.enum(["pending_verification", "active", "blocked"]);
@@ -4182,7 +4182,7 @@ var mailOutcome = z12.object({
4182
4182
  })
4183
4183
  });
4184
4184
 
4185
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/client-auth.js
4185
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/client-auth.js
4186
4186
  var clientLoginRequest = z13.object({
4187
4187
  app_identifier: appIdentifier.meta({
4188
4188
  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."
@@ -4423,7 +4423,7 @@ var clientIdentity = z13.object({
4423
4423
  })
4424
4424
  });
4425
4425
 
4426
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/realtime.js
4426
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/realtime.js
4427
4427
  var clientAuth = z14.object({
4428
4428
  type: z14.literal("auth"),
4429
4429
  token: z14.string().min(1)
@@ -4707,7 +4707,7 @@ var orgEventDropped = z14.object({
4707
4707
  dropped: z14.number().int().positive()
4708
4708
  }).strict();
4709
4709
 
4710
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/feedback.js
4710
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/feedback.js
4711
4711
  import { z as z15 } from "zod";
4712
4712
  var FEEDBACK_KINDS = ["idea", "problem", "question", "other"];
4713
4713
  var feedbackKind = z15.enum(FEEDBACK_KINDS);
@@ -4732,7 +4732,7 @@ var feedbackResponse = z15.object({
4732
4732
  })
4733
4733
  }).strict();
4734
4734
 
4735
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/client-robots.js
4735
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/client-robots.js
4736
4736
  import { z as z16 } from "zod";
4737
4737
  var clientRobotListItem = z16.object({
4738
4738
  ...robot.shape,
@@ -4749,7 +4749,7 @@ var clientRobotListResponse = z16.object({
4749
4749
  })
4750
4750
  });
4751
4751
 
4752
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/audit.js
4752
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/audit.js
4753
4753
  import { z as z17 } from "zod";
4754
4754
  var auditActor = z17.object({
4755
4755
  kind: z17.enum(["developer", "end_user", "app_user", "server_key", "bridge", "fleetless"]),
@@ -4891,10 +4891,10 @@ var auditListResponse = z17.object({
4891
4891
  next_cursor: z17.number().int().positive().nullable()
4892
4892
  });
4893
4893
 
4894
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/errors.js
4894
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/errors.js
4895
4895
  import { z as z19 } from "zod";
4896
4896
 
4897
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/plans.js
4897
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/plans.js
4898
4898
  import { z as z18 } from "zod";
4899
4899
  var planId = z18.enum(["basic", "plus", "pro", "enterprise"]);
4900
4900
  var planLimitKey = z18.enum([
@@ -5175,7 +5175,7 @@ var adminPlanChangeRequest = z18.object({
5175
5175
  })
5176
5176
  }).strict();
5177
5177
 
5178
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/errors.js
5178
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/errors.js
5179
5179
  var apiError = z19.object({
5180
5180
  code: z19.string().min(1),
5181
5181
  message: z19.string().min(1),
@@ -5240,7 +5240,7 @@ var fileTooLargeDetails = z19.object({
5240
5240
  })
5241
5241
  });
5242
5242
 
5243
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/oauth.js
5243
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/oauth.js
5244
5244
  import { z as z20 } from "zod";
5245
5245
  var oauthErrorCode = z20.enum([
5246
5246
  "invalid_request",
@@ -5480,7 +5480,7 @@ var oauthAuthorizeQuery = z20.object({
5480
5480
  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."
5481
5481
  });
5482
5482
 
5483
- // node_modules/.pnpm/@fleetless+contracts@6.2.0-next.2/node_modules/@fleetless/contracts/dist/routes.js
5483
+ // node_modules/.pnpm/@fleetless+contracts@6.2.0/node_modules/@fleetless/contracts/dist/routes.js
5484
5484
  var MCP_APP = MCP_APP_PATHS(":appIdentifier");
5485
5485
  var APP_IDENTIFIER = {
5486
5486
  name: "appIdentifier",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetless/sdk",
3
- "version": "4.4.0-next.1",
3
+ "version": "4.4.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": "6.2.0-next.2",
79
+ "@fleetless/contracts": "6.2.0",
80
80
  "@types/node": "^22.20.1",
81
81
  "tsup": "^8.3.0",
82
82
  "typedoc": "0.28.20",