@fleetless/contracts 1.2.0 → 3.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 +39 -1
- package/artifacts/constants.json +30 -4
- package/artifacts/openapi.json +882 -80
- package/artifacts/routes.json +217 -7
- package/artifacts/schema/app-deletion-summary.schema.json +51 -0
- package/artifacts/schema/apply-error.schema.json +2 -1
- package/artifacts/schema/asset-list-response.schema.json +77 -12
- package/artifacts/schema/asset-sync-status.schema.json +35 -8
- package/artifacts/schema/asset.schema.json +2 -3
- package/artifacts/schema/assets-clear-response.schema.json +23 -0
- package/artifacts/schema/bridge-asset-progress.schema.json +14 -8
- package/artifacts/schema/bridge-config-applied.schema.json +2 -1
- package/artifacts/schema/bridge-link-mode.schema.json +36 -0
- package/artifacts/schema/bridge-state.schema.json +6 -1
- package/artifacts/schema/client-robot-list-item.schema.json +6 -1
- package/artifacts/schema/client-robot-list-response.schema.json +6 -1
- package/artifacts/schema/cloud-config.schema.json +90 -5
- package/artifacts/schema/cloud-hello-ok.schema.json +45 -0
- package/artifacts/schema/cloud-ping.schema.json +27 -1
- package/artifacts/schema/config-draft-response.schema.json +90 -5
- package/artifacts/schema/config-state.schema.json +2 -1
- package/artifacts/schema/config-version-response.schema.json +90 -5
- package/artifacts/schema/datapoint-config.schema.json +5 -0
- package/artifacts/schema/datapoint-frame.schema.json +4 -0
- package/artifacts/schema/datapoint-list-response.schema.json +2 -2
- package/artifacts/schema/joint-state-put-request.schema.json +23 -0
- package/artifacts/schema/joint-state-put-response.schema.json +24 -0
- package/artifacts/schema/org-quota-usage-counts.schema.json +0 -5
- package/artifacts/schema/org-quota-usage.schema.json +1 -12
- package/artifacts/schema/org-quotas.schema.json +1 -7
- package/artifacts/schema/put-app-auth-mcp-request.schema.json +27 -0
- package/artifacts/schema/put-app-auth-registration-request.schema.json +36 -0
- package/artifacts/schema/put-app-auth-urls-request.schema.json +48 -0
- package/artifacts/schema/robot-config-doc.schema.json +90 -5
- package/artifacts/schema/robot-deletion-summary.schema.json +2 -1
- package/artifacts/schema/robot-detail-response.schema.json +63 -2
- package/artifacts/schema/robot-list-item.schema.json +15 -1
- package/artifacts/schema/robot-list-response.schema.json +15 -1
- package/artifacts/schema/robot-token-rotate-response.schema.json +15 -0
- package/artifacts/schema-outgoing/bridge-asset-progress.schema.json +14 -8
- package/artifacts/schema-outgoing/bridge-config-applied.schema.json +2 -1
- package/artifacts/schema-outgoing/bridge-link-mode.schema.json +37 -0
- package/artifacts/schema-outgoing/datapoint-frame.schema.json +4 -0
- package/dist/app-users.d.ts +25 -7
- package/dist/app-users.js +24 -6
- package/dist/apps.d.ts +22 -0
- package/dist/apps.js +33 -0
- package/dist/assets.d.ts +85 -50
- package/dist/assets.js +152 -62
- package/dist/audit.d.ts +1 -1
- package/dist/audit.js +1 -1
- package/dist/client-robots.d.ts +2 -0
- package/dist/common.d.ts +10 -0
- package/dist/common.js +16 -1
- package/dist/config.d.ts +69 -1
- package/dist/config.js +86 -6
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -8
- package/dist/index.d.ts +12 -12
- package/dist/index.js +6 -6
- package/dist/protocol.d.ts +150 -71
- package/dist/protocol.js +144 -87
- package/dist/rest.d.ts +139 -35
- package/dist/rest.js +100 -66
- package/dist/routes.js +129 -21
- package/package.json +1 -1
- package/artifacts/schema/bridge-pressure.schema.json +0 -292
- package/artifacts/schema/put-app-auth-config-request.schema.json +0 -93
package/dist/common.js
CHANGED
|
@@ -154,8 +154,23 @@ export const wireTimestampMs = z
|
|
|
154
154
|
* (`credentialRef`, `robotConfigDoc`) — so `config.ts` importing back from
|
|
155
155
|
* `protocol.ts` would be a cycle. One definition, reachable from both
|
|
156
156
|
* without either importing the other.
|
|
157
|
+
*
|
|
158
|
+
* `low_bandwidth` is not an exposure kind — it names the `low_bandwidth`
|
|
159
|
+
* top-level section instead, for when that section itself fails to resolve
|
|
160
|
+
* (e.g. a lone `exit_lag_ms` above the effective `enter_lag_ms`) rather than
|
|
161
|
+
* any one datapoint, action, service, publisher or camera. An `applyError`
|
|
162
|
+
* of this kind always carries `slug: 'low_bandwidth'`, the section's own
|
|
163
|
+
* name — never `*`, which stays reserved for a whole exposure kind failing
|
|
164
|
+
* before any of its individual slugs were reached.
|
|
157
165
|
*/
|
|
158
|
-
export const applyErrorKind = z.enum([
|
|
166
|
+
export const applyErrorKind = z.enum([
|
|
167
|
+
'datapoint',
|
|
168
|
+
'action',
|
|
169
|
+
'service',
|
|
170
|
+
'publisher',
|
|
171
|
+
'camera',
|
|
172
|
+
'low_bandwidth',
|
|
173
|
+
]);
|
|
159
174
|
/**
|
|
160
175
|
* One thing that did not apply — carried on the wire by
|
|
161
176
|
* `protocol.ts`'s `bridgeConfigApplied.errors` and read back by the console
|
package/dist/config.d.ts
CHANGED
|
@@ -157,7 +157,7 @@ export declare const parameterMap: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
157
157
|
* ships those sentences to readers who have only the JSON Schema, and
|
|
158
158
|
* "here" would have promised them a refusal this parse does not make.
|
|
159
159
|
*/
|
|
160
|
-
export declare const RESERVED_SLUGS: readonly ["bridge_state", "robot_details", "
|
|
160
|
+
export declare const RESERVED_SLUGS: readonly ["bridge_state", "robot_details", "history"];
|
|
161
161
|
/**
|
|
162
162
|
* When an alert fires and when it is ok again. There is no discriminator:
|
|
163
163
|
* `resolve_at` absent means equality, present means a threshold whose
|
|
@@ -271,6 +271,7 @@ export declare const datapointConfig: z.ZodObject<{
|
|
|
271
271
|
type: z.ZodString;
|
|
272
272
|
field: z.ZodOptional<z.ZodString>;
|
|
273
273
|
rate_throttle_hz: z.ZodOptional<z.ZodNumber>;
|
|
274
|
+
low_bandwidth: z.ZodOptional<z.ZodLiteral<"keep">>;
|
|
274
275
|
description: z.ZodOptional<z.ZodString>;
|
|
275
276
|
numeric: z.ZodOptional<z.ZodObject<{
|
|
276
277
|
scale: z.ZodOptional<z.ZodNumber>;
|
|
@@ -615,6 +616,54 @@ export declare const cameraConfig: z.ZodObject<{
|
|
|
615
616
|
description: z.ZodOptional<z.ZodString>;
|
|
616
617
|
}, z.core.$strict>;
|
|
617
618
|
export type CameraConfig = z.infer<typeof cameraConfig>;
|
|
619
|
+
/**
|
|
620
|
+
* What the bridge falls back to when neither the document nor a ROS parameter
|
|
621
|
+
* names a setting. Exported into `constants.json` so the bridge reads these
|
|
622
|
+
* numbers rather than carrying a second copy that can drift.
|
|
623
|
+
*/
|
|
624
|
+
export declare const LOW_BANDWIDTH_DEFAULTS: {
|
|
625
|
+
readonly mode: "auto";
|
|
626
|
+
readonly enter_lag_ms: 2000;
|
|
627
|
+
readonly enter_after_s: 10;
|
|
628
|
+
readonly exit_lag_ms: 500;
|
|
629
|
+
readonly exit_after_s: 60;
|
|
630
|
+
readonly datapoint_max_hz: 1;
|
|
631
|
+
readonly camera: "reduce";
|
|
632
|
+
readonly camera_bitrate_kbps: 300;
|
|
633
|
+
};
|
|
634
|
+
/**
|
|
635
|
+
* The bridge's low-bandwidth mode: what it does when the link degrades. Every
|
|
636
|
+
* key is optional: a key present here overrides the bridge's ROS parameter
|
|
637
|
+
* of the same name, an absent key falls through to it, and the parameter
|
|
638
|
+
* falls through to `LOW_BANDWIDTH_DEFAULTS`. The document carries the
|
|
639
|
+
* override rather than the whole setting so a fleet-wide launch file and a
|
|
640
|
+
* per-robot YAML compose instead of competing.
|
|
641
|
+
*
|
|
642
|
+
* The one rule between two keys is checked here, for `datapointChart`'s
|
|
643
|
+
* reason: nothing downstream catches it. An exit threshold above the entry
|
|
644
|
+
* threshold is a mode that leaves the moment it arrives and arrives again the
|
|
645
|
+
* moment it leaves — a flap, at whatever rate the measurements come in. It is
|
|
646
|
+
* ordered rather than clamped because there is no way to tell which of the two
|
|
647
|
+
* numbers the writer meant.
|
|
648
|
+
*/
|
|
649
|
+
export declare const lowBandwidthSection: z.ZodObject<{
|
|
650
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
651
|
+
auto: "auto";
|
|
652
|
+
on: "on";
|
|
653
|
+
off: "off";
|
|
654
|
+
}>>;
|
|
655
|
+
enter_lag_ms: z.ZodOptional<z.ZodNumber>;
|
|
656
|
+
enter_after_s: z.ZodOptional<z.ZodNumber>;
|
|
657
|
+
exit_lag_ms: z.ZodOptional<z.ZodNumber>;
|
|
658
|
+
exit_after_s: z.ZodOptional<z.ZodNumber>;
|
|
659
|
+
datapoint_max_hz: z.ZodOptional<z.ZodNumber>;
|
|
660
|
+
camera: z.ZodOptional<z.ZodEnum<{
|
|
661
|
+
reduce: "reduce";
|
|
662
|
+
stop: "stop";
|
|
663
|
+
}>>;
|
|
664
|
+
camera_bitrate_kbps: z.ZodOptional<z.ZodNumber>;
|
|
665
|
+
}, z.core.$strict>;
|
|
666
|
+
export type LowBandwidthSection = z.infer<typeof lowBandwidthSection>;
|
|
618
667
|
/**
|
|
619
668
|
* The format version of a `fleetless.yaml`. Deliberately not called
|
|
620
669
|
* `version`: the console counts published states with "v12 → v13", and two
|
|
@@ -640,6 +689,7 @@ export declare const robotConfigDoc: z.ZodObject<{
|
|
|
640
689
|
type: z.ZodString;
|
|
641
690
|
field: z.ZodOptional<z.ZodString>;
|
|
642
691
|
rate_throttle_hz: z.ZodOptional<z.ZodNumber>;
|
|
692
|
+
low_bandwidth: z.ZodOptional<z.ZodLiteral<"keep">>;
|
|
643
693
|
description: z.ZodOptional<z.ZodString>;
|
|
644
694
|
numeric: z.ZodOptional<z.ZodObject<{
|
|
645
695
|
scale: z.ZodOptional<z.ZodNumber>;
|
|
@@ -806,6 +856,23 @@ export declare const robotConfigDoc: z.ZodObject<{
|
|
|
806
856
|
snapshot_interval_seconds: z.ZodNumber;
|
|
807
857
|
description: z.ZodOptional<z.ZodString>;
|
|
808
858
|
}, z.core.$strict>>>;
|
|
859
|
+
low_bandwidth: z.ZodOptional<z.ZodObject<{
|
|
860
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
861
|
+
auto: "auto";
|
|
862
|
+
on: "on";
|
|
863
|
+
off: "off";
|
|
864
|
+
}>>;
|
|
865
|
+
enter_lag_ms: z.ZodOptional<z.ZodNumber>;
|
|
866
|
+
enter_after_s: z.ZodOptional<z.ZodNumber>;
|
|
867
|
+
exit_lag_ms: z.ZodOptional<z.ZodNumber>;
|
|
868
|
+
exit_after_s: z.ZodOptional<z.ZodNumber>;
|
|
869
|
+
datapoint_max_hz: z.ZodOptional<z.ZodNumber>;
|
|
870
|
+
camera: z.ZodOptional<z.ZodEnum<{
|
|
871
|
+
reduce: "reduce";
|
|
872
|
+
stop: "stop";
|
|
873
|
+
}>>;
|
|
874
|
+
camera_bitrate_kbps: z.ZodOptional<z.ZodNumber>;
|
|
875
|
+
}, z.core.$strict>>;
|
|
809
876
|
}, z.core.$strict>;
|
|
810
877
|
export type RobotConfigDoc = z.infer<typeof robotConfigDoc>;
|
|
811
878
|
/**
|
|
@@ -845,6 +912,7 @@ export declare const configState: z.ZodObject<{
|
|
|
845
912
|
service: "service";
|
|
846
913
|
publisher: "publisher";
|
|
847
914
|
camera: "camera";
|
|
915
|
+
low_bandwidth: "low_bandwidth";
|
|
848
916
|
}>;
|
|
849
917
|
code: z.ZodString;
|
|
850
918
|
message: z.ZodString;
|
package/dist/config.js
CHANGED
|
@@ -671,7 +671,7 @@ export const parameterMap = slugKeyed(parameterSpec)
|
|
|
671
671
|
* ships those sentences to readers who have only the JSON Schema, and
|
|
672
672
|
* "here" would have promised them a refusal this parse does not make.
|
|
673
673
|
*/
|
|
674
|
-
export const RESERVED_SLUGS = ['bridge_state', 'robot_details', '
|
|
674
|
+
export const RESERVED_SLUGS = ['bridge_state', 'robot_details', 'history'];
|
|
675
675
|
/**
|
|
676
676
|
* When an alert fires and when it is ok again. There is no discriminator:
|
|
677
677
|
* `resolve_at` absent means equality, present means a threshold whose
|
|
@@ -991,6 +991,9 @@ export const datapointConfig = strictObject({
|
|
|
991
991
|
description: 'A ceiling on how often this datapoint is sent, in hertz. Omitted or `0` means no throttling. It is **a ceiling, not a clock**: a slow topic stays slow, a value is never repeated to manufacture a rate, and within a window the newest value wins. The bridge enforces it, so the robot\'s bandwidth is genuinely saved.',
|
|
992
992
|
examples: [2, 0.5],
|
|
993
993
|
}).optional(),
|
|
994
|
+
low_bandwidth: z.literal('keep').optional().meta({
|
|
995
|
+
description: '`keep` exempts this datapoint from the low-bandwidth rate cap; its backfill still pauses.',
|
|
996
|
+
}),
|
|
994
997
|
description: serviceDescription.meta({
|
|
995
998
|
description: 'Prose about what this value is, for whoever meets it in the console. It changes nothing the robot does, so a publish that touches only it pushes no configuration at all — but it is carried verbatim into `robot_describe`, where a model that has never seen this robot reads it. The datapoint is offered whenever the role grants it; without one it is offered with `description: null` and the model has less to go on, as for actions, services, publishers and cameras. Omission is the only way to say nothing; an empty string is refused, here and on all five.',
|
|
996
999
|
/**
|
|
@@ -1857,6 +1860,69 @@ export const cameraConfig = strictObject({
|
|
|
1857
1860
|
/** The value position of one entry — `front: ▮` under `cameras:`. */
|
|
1858
1861
|
defaultSnippets: [CAMERA_SNIPPET],
|
|
1859
1862
|
});
|
|
1863
|
+
/**
|
|
1864
|
+
* What the bridge falls back to when neither the document nor a ROS parameter
|
|
1865
|
+
* names a setting. Exported into `constants.json` so the bridge reads these
|
|
1866
|
+
* numbers rather than carrying a second copy that can drift.
|
|
1867
|
+
*/
|
|
1868
|
+
export const LOW_BANDWIDTH_DEFAULTS = {
|
|
1869
|
+
mode: 'auto',
|
|
1870
|
+
enter_lag_ms: 2000,
|
|
1871
|
+
enter_after_s: 10,
|
|
1872
|
+
exit_lag_ms: 500,
|
|
1873
|
+
exit_after_s: 60,
|
|
1874
|
+
datapoint_max_hz: 1,
|
|
1875
|
+
camera: 'reduce',
|
|
1876
|
+
camera_bitrate_kbps: 300,
|
|
1877
|
+
};
|
|
1878
|
+
/**
|
|
1879
|
+
* Named rather than inlined, for `chartStyle`'s reason: `describeValues` reads
|
|
1880
|
+
* `.options`, and the per-value sentences are then keyed by value.
|
|
1881
|
+
*/
|
|
1882
|
+
const lowBandwidthMode = z.enum(['auto', 'on', 'off']);
|
|
1883
|
+
const lowBandwidthCamera = z.enum(['reduce', 'stop']);
|
|
1884
|
+
/**
|
|
1885
|
+
* The bridge's low-bandwidth mode: what it does when the link degrades. Every
|
|
1886
|
+
* key is optional: a key present here overrides the bridge's ROS parameter
|
|
1887
|
+
* of the same name, an absent key falls through to it, and the parameter
|
|
1888
|
+
* falls through to `LOW_BANDWIDTH_DEFAULTS`. The document carries the
|
|
1889
|
+
* override rather than the whole setting so a fleet-wide launch file and a
|
|
1890
|
+
* per-robot YAML compose instead of competing.
|
|
1891
|
+
*
|
|
1892
|
+
* The one rule between two keys is checked here, for `datapointChart`'s
|
|
1893
|
+
* reason: nothing downstream catches it. An exit threshold above the entry
|
|
1894
|
+
* threshold is a mode that leaves the moment it arrives and arrives again the
|
|
1895
|
+
* moment it leaves — a flap, at whatever rate the measurements come in. It is
|
|
1896
|
+
* ordered rather than clamped because there is no way to tell which of the two
|
|
1897
|
+
* numbers the writer meant.
|
|
1898
|
+
*/
|
|
1899
|
+
export const lowBandwidthSection = strictObject({
|
|
1900
|
+
mode: lowBandwidthMode.optional().meta({
|
|
1901
|
+
description: '`auto` decides from the measured lag; `on` and `off` force the mode, for tests and for an operator who knows the link.',
|
|
1902
|
+
enumDescriptions: describeValues(lowBandwidthMode.options, {
|
|
1903
|
+
auto: 'The bridge enters and leaves the mode on its own, from the lag the cloud reports and the dwell it measures in its own send queue. The setting to leave alone.',
|
|
1904
|
+
on: 'The mode is held on, whatever the link is doing. For a robot on a link known to be poor, and for a test that would otherwise have to wait for a real one.',
|
|
1905
|
+
off: 'The mode never engages, whatever the link is doing. The robot then sends at its configured rates over a link that cannot carry them, which is a choice and not a default.',
|
|
1906
|
+
}),
|
|
1907
|
+
}),
|
|
1908
|
+
enter_lag_ms: z.number().int().min(100).optional().meta({ description: 'Lag or queue dwell above this enters the mode. Checked against exit_lag_ms only when both are in this document; a lone key composes with the bridge\'s parameter or the default on the robot, and a crossed pair is refused there when the configuration is applied, so name both when you change either.' }),
|
|
1909
|
+
enter_after_s: z.number().int().min(1).optional().meta({ description: 'The entry condition must hold this long.' }),
|
|
1910
|
+
exit_lag_ms: z.number().int().min(0).optional().meta({ description: 'Lag and dwell both at or below this leave the mode. Must be at or below enter_lag_ms: a crossed pair is a mode that leaves as it arrives. Checked here only when both keys are present; a lone key is checked on the robot against the parameter or default it composes with.' }),
|
|
1911
|
+
exit_after_s: z.number().int().min(1).optional().meta({ description: 'The exit condition must hold this long.' }),
|
|
1912
|
+
datapoint_max_hz: z.number().gt(0).max(20).optional().meta({ description: 'The long-run rate for every datapoint in the mode, unless the datapoint says `low_bandwidth: keep`. It is an average, not a minimum gap: after a quiet spell two samples may go out close together, and over any longer window the rate holds.' }),
|
|
1913
|
+
camera: lowBandwidthCamera.optional().meta({
|
|
1914
|
+
description: 'What happens to a running stream in the mode. New streams are refused either way.',
|
|
1915
|
+
enumDescriptions: describeValues(lowBandwidthCamera.options, {
|
|
1916
|
+
reduce: 'A running stream is re-encoded at `camera_bitrate_kbps` and keeps running. A viewer sees a worse picture rather than none.',
|
|
1917
|
+
stop: 'A running stream ends and the viewer is told why. The uplink is then free for datapoints, which is the right trade where video is the nice-to-have.',
|
|
1918
|
+
}),
|
|
1919
|
+
}),
|
|
1920
|
+
camera_bitrate_kbps: z.number().int().min(50).max(20000).optional().meta({ description: 'Bitrate applied to running streams under `reduce`.' }),
|
|
1921
|
+
})
|
|
1922
|
+
.superRefine((s, ctx) => {
|
|
1923
|
+
if (s.enter_lag_ms !== undefined && s.exit_lag_ms !== undefined && s.exit_lag_ms > s.enter_lag_ms)
|
|
1924
|
+
ctx.addIssue({ code: 'custom', path: ['exit_lag_ms'], message: 'low_bandwidth.exit_lag_ms must be at or below enter_lag_ms' });
|
|
1925
|
+
});
|
|
1860
1926
|
/**
|
|
1861
1927
|
* The format version of a `fleetless.yaml`. Deliberately not called
|
|
1862
1928
|
* `version`: the console counts published states with "v12 → v13", and two
|
|
@@ -1884,28 +1950,42 @@ export const robotConfigDoc = strictObject({
|
|
|
1884
1950
|
defaultSnippets: [underSlug('${1:drive}', SHARED_MESSAGE_SNIPPET)],
|
|
1885
1951
|
}).optional(),
|
|
1886
1952
|
datapoints: capped(datapointConfig, 200, 'datapoints').meta({
|
|
1887
|
-
description: 'Values the robot publishes, each one field of one topic or a whole topic, and **never several topics**. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state
|
|
1953
|
+
description: 'Values the robot publishes, each one field of one topic or a whole topic, and **never several topics**. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state` and `robot_details` are built-in, and `history` is reserved because `GET …/jobs/history` would shadow an action of that name; all three are refused when the document is validated.',
|
|
1888
1954
|
defaultSnippets: [
|
|
1889
1955
|
underSlug('${1:battery_voltage}', DATAPOINT_SNIPPET),
|
|
1890
1956
|
underSlug('${1:battery}', NUMERIC_DATAPOINT_SNIPPET),
|
|
1891
1957
|
],
|
|
1892
1958
|
}).optional(),
|
|
1893
1959
|
actions: capped(actionConfig, 200, 'actions').meta({
|
|
1894
|
-
description: 'Things the robot does on request that take time, each reported as a job with progress. **At most one job runs per action slug**: a second call is refused `busy`, and every observer of that slug watches the same job. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state
|
|
1960
|
+
description: 'Things the robot does on request that take time, each reported as a job with progress. **At most one job runs per action slug**: a second call is refused `busy`, and every observer of that slug watches the same job. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state` and `robot_details` are built-in, and `history` is reserved because `GET …/jobs/history` would shadow an action of that name; all three are refused when the document is validated.',
|
|
1895
1961
|
defaultSnippets: [underSlug('${1:navigate}', ACTION_SNIPPET)],
|
|
1896
1962
|
}).optional(),
|
|
1897
1963
|
services: capped(serviceConfig, 200, 'services').meta({
|
|
1898
|
-
description: 'ROS service calls the robot answers — one request, one reply. Unlike an action a service reports **no progress** and the call returns with its result already on the job, so there is nothing left to observe; a second concurrent call is still refused `busy`, exactly as for an action. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state
|
|
1964
|
+
description: 'ROS service calls the robot answers — one request, one reply. Unlike an action a service reports **no progress** and the call returns with its result already on the job, so there is nothing left to observe; a second concurrent call is still refused `busy`, exactly as for an action. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state` and `robot_details` are built-in, and `history` is reserved because `GET …/jobs/history` would shadow an action of that name; all three are refused when the document is validated.',
|
|
1899
1965
|
defaultSnippets: [underSlug('${1:reset_odometry}', SERVICE_SNIPPET)],
|
|
1900
1966
|
}).optional(),
|
|
1901
1967
|
publishers: capped(publisherConfig, 200, 'publishers').meta({
|
|
1902
|
-
description: 'Topics clients may send to, and where the format\'s whole safety story lives. The `message` template fixes every value a caller cannot change, and **`failsafe` is required**: once a client falls silent the bridge sends the failsafe message itself, so an operator whose window closed does not leave a robot driving. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state
|
|
1968
|
+
description: 'Topics clients may send to, and where the format\'s whole safety story lives. The `message` template fixes every value a caller cannot change, and **`failsafe` is required**: once a client falls silent the bridge sends the failsafe message itself, so an operator whose window closed does not leave a robot driving. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state` and `robot_details` are built-in, and `history` is reserved because `GET …/jobs/history` would shadow an action of that name; all three are refused when the document is validated.',
|
|
1903
1969
|
defaultSnippets: [underSlug('${1:drive}', PUBLISHER_SNIPPET)],
|
|
1904
1970
|
}).optional(),
|
|
1905
1971
|
cameras: capped(cameraConfig, 50, 'cameras').meta({
|
|
1906
|
-
description: 'Video the robot streams, and the still frames the cloud serves from it. `width`, `height`, `fps` and `bitrate_kbps` are what **the bridge produces before sending**, not what the camera captures — they live in the configuration rather than in a viewer\'s request precisely so that no viewer can make a robot send more. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state
|
|
1972
|
+
description: 'Video the robot streams, and the still frames the cloud serves from it. `width`, `height`, `fps` and `bitrate_kbps` are what **the bridge produces before sending**, not what the camera captures — they live in the configuration rather than in a viewer\'s request precisely so that no viewer can make a robot send more. Keys are slugs, one namespace across all five exposure sections, which is what lets a role grant say `{robot, slug}` without naming a kind; `bridge_state` and `robot_details` are built-in, and `history` is reserved because `GET …/jobs/history` would shadow an action of that name; all three are refused when the document is validated.',
|
|
1907
1973
|
defaultSnippets: [underSlug('${1:front}', CAMERA_SNIPPET)],
|
|
1908
1974
|
}).optional(),
|
|
1975
|
+
low_bandwidth: lowBandwidthSection.optional().meta({
|
|
1976
|
+
description: 'Overrides for the bridge\'s low-bandwidth mode; see the section schema.',
|
|
1977
|
+
/**
|
|
1978
|
+
* The body is the three keys a developer actually reaches for — when the
|
|
1979
|
+
* mode engages, how hard it caps, and what it does to video. The five
|
|
1980
|
+
* timing keys stay out: they exist to be tuned once against a measured
|
|
1981
|
+
* link, and a skeleton that pre-fills them reads as a recommendation.
|
|
1982
|
+
*/
|
|
1983
|
+
defaultSnippets: [{
|
|
1984
|
+
label: 'low-bandwidth mode, tuned',
|
|
1985
|
+
description: 'Enters after ten seconds above two seconds of lag, caps every datapoint to 1 Hz and lets running streams continue at a reduced bitrate.',
|
|
1986
|
+
body: { enter_lag_ms: 2000, datapoint_max_hz: 1, camera: 'reduce' },
|
|
1987
|
+
}],
|
|
1988
|
+
}),
|
|
1909
1989
|
});
|
|
1910
1990
|
/**
|
|
1911
1991
|
* One thing the cloud has to say about a configuration: the field, and the
|
package/dist/errors.d.ts
CHANGED
|
@@ -49,5 +49,5 @@ export type ParameterInvalidDetails = z.infer<typeof parameterInvalidDetails>;
|
|
|
49
49
|
* list is the shared vocabulary, not a closed set, so a new refusal never
|
|
50
50
|
* needs a contracts release before it can be reported honestly.
|
|
51
51
|
*/
|
|
52
|
-
export declare const ERROR_CODES: readonly ["not_found", "validation_error", "bad_request", "unknown_datapoint", "invalid_token", "protocol_mismatch", "invalid_frame", "duplicate_slug", "reserved_slug", "unknown_slug", "unknown_field_path", "unknown_type", "unknown_topic", "invalid_rate", "invalid_range", "config_conflict", "no_data", "robot_offline", "bridge_timeout", "unauthorized", "forbidden", "invalid_credentials", "token_expired", "token_revoked", "email_taken", "identifier_taken", "weak_password", "account_blocked", "busy", "parameter_invalid", "job_lost", "publisher_busy", "unknown_command", "not_subscribable", "camera_offline", "no_snapshot_yet", "live_unavailable", "wrong_kind", "not_recorded", "not_aggregatable", "quota_exceeded", "credential_in_use", "goal_timeout", "robot_in_use", "robot_deletion_partial", "job_queue_full", "invalid_uuid", "rate_limited", "tier_required", "token_spent", "service_timeout", "asset_missing", "
|
|
52
|
+
export declare const ERROR_CODES: readonly ["not_found", "validation_error", "bad_request", "unknown_datapoint", "invalid_token", "protocol_mismatch", "invalid_frame", "duplicate_slug", "reserved_slug", "unknown_slug", "unknown_field_path", "unknown_type", "unknown_topic", "invalid_rate", "invalid_range", "config_conflict", "no_data", "robot_offline", "bridge_timeout", "unauthorized", "forbidden", "invalid_credentials", "token_expired", "token_revoked", "email_taken", "identifier_taken", "weak_password", "account_blocked", "busy", "parameter_invalid", "job_lost", "publisher_busy", "unknown_command", "not_subscribable", "camera_offline", "no_snapshot_yet", "live_unavailable", "wrong_kind", "not_recorded", "not_aggregatable", "quota_exceeded", "credential_in_use", "goal_timeout", "robot_in_use", "robot_deletion_partial", "job_queue_full", "invalid_uuid", "rate_limited", "tier_required", "token_spent", "service_timeout", "asset_missing", "dynamic_registration_disabled", "client_limit_reached", "idp_unavailable", "mcp_disabled", "tool_not_available", "capability_required", "last_owner", "target_state_conflict", "signup_closed", "draft_not_a_document", "internal_error", "not_cancellable", "unsupported_media_type", "wrong_browser", "invalid_yaml", "unstorable_yaml", "registration_closed", "domain_not_allowed", "email_unverified", "origin_not_allowed", "template_invalid", "provider_disabled", "provider_misconfigured", "invalid_redirect_uri", "interaction_expired"];
|
|
53
53
|
export type ErrorCode = (typeof ERROR_CODES)[number];
|
package/dist/errors.js
CHANGED
|
@@ -326,13 +326,6 @@ export const ERROR_CODES = [
|
|
|
326
326
|
* cause, in somebody else's application.
|
|
327
327
|
*/
|
|
328
328
|
'asset_missing',
|
|
329
|
-
/**
|
|
330
|
-
* The asset exceeds the per-file ceiling. Carries `assetTooLargeDetails`
|
|
331
|
-
* with both numbers, for the reason `job_queue_full` carries both: the limit
|
|
332
|
-
* alone does not tell the caller how far over they are, and the size alone
|
|
333
|
-
* cannot be read without the limit.
|
|
334
|
-
*/
|
|
335
|
-
'asset_too_large',
|
|
336
329
|
// The hosted authorization server.
|
|
337
330
|
//
|
|
338
331
|
// **This comment was wrong in its first form and a teammate followed it
|
|
@@ -365,7 +358,7 @@ export const ERROR_CODES = [
|
|
|
365
358
|
'dynamic_registration_disabled',
|
|
366
359
|
/**
|
|
367
360
|
* The per-app ceiling on dynamically-registered clients is reached. Carries
|
|
368
|
-
* both numbers for the same reason `
|
|
361
|
+
* both numbers for the same reason `job_queue_full` does.
|
|
369
362
|
*/
|
|
370
363
|
'client_limit_reached',
|
|
371
364
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -3,15 +3,15 @@ export { SLUG_RULE, ROS_NAME_RULE, ROS_TYPE_NAME_RULE, FIELD_PATH_RULE, slug, ro
|
|
|
3
3
|
export type { ApplyErrorKind, ApplyError } from './common.js';
|
|
4
4
|
export { MCP_PROTOCOL_VERSION, MCP_ENDPOINT_PATH, mcpAppEndpointPath, MCP_APP_PATHS, MCP_TOOL_NAME_MAX, MCP_ASSET_LINK_PATH, MCP_ASSET_LINK_TTL_MS, mcpToolNamePattern, mcpToolKind, mcpExposure, mcpCapabilities, mcpRobotDatasheet, mcpRolePreviewResponse, } from './mcp.js';
|
|
5
5
|
export type { McpAppPaths, McpToolKind, McpExposure, McpCapabilities, McpRobotDatasheet, McpRolePreviewResponse, } from './mcp.js';
|
|
6
|
-
export { PROTOCOL_VERSION, bridgeHello, cloudHelloOk, cloudHelloError, cloudPing, bridgePong, datapointFrame, bridgeState,
|
|
7
|
-
export type { BridgeHello, CloudHelloOk, CloudHelloError, CloudPing, BridgePong, DatapointFrame, BridgeState,
|
|
6
|
+
export { PROTOCOL_VERSION, PROTOCOL_VERSIONS, PROTOCOL_SUNSET_DAYS, LATEST_BRIDGE_VERSION, protocolStatus, minimumProtocolVersion, sunsetOf, statusFromTable, bridgeHello, cloudHelloOk, cloudHelloError, cloudPing, bridgePong, bridgeLinkMode, datapointFrame, bridgeState, cloudConfig, bridgeConfigApplied, cloudIntrospectRequest, bridgeIntrospect, cloudTypeRequest, bridgeTypeDefinitions, cloudInvoke, cloudCancel, cloudPublish, bridgeJobUpdate, bridgeJobLost, snapshotHeader, cloudCameraStart, cloudCameraStop, bridgeCameraState, SNAPSHOT_MAX_BYTES, CLOSE_ROBOT_DELETED, CLOSE_TOKEN_ROTATED, bridgeAssetsAvailable, cloudAssetRequest, bridgeAssetProgress, activeJob, DEFAULT_PATIENCE_MS, MAX_PATIENCE_MS, MIN_PATIENCE_MS, } from './protocol.js';
|
|
7
|
+
export type { ProtocolVersionEntry, ProtocolStatus, BridgeHello, CloudHelloOk, CloudHelloError, CloudPing, BridgePong, BridgeLinkMode, DatapointFrame, BridgeState, CloudConfig, BridgeConfigApplied, CloudIntrospectRequest, BridgeIntrospect, CloudTypeRequest, BridgeTypeDefinitions, CloudInvoke, CloudCancel, CloudPublish, BridgeJobUpdate, BridgeJobLost, SnapshotHeader, CloudCameraStart, CloudCameraStop, BridgeCameraState, ActiveJob, BridgeAssetsAvailable, CloudAssetRequest, BridgeAssetProgress, } from './protocol.js';
|
|
8
8
|
export { jobState, job, jobEvent, busyDetails, publisherBusyDetails, jobQueueFullDetails } from './jobs.js';
|
|
9
9
|
export type { JobState, Job, JobEvent, BusyDetails, PublisherBusyDetails, JobQueueFullDetails, } from './jobs.js';
|
|
10
10
|
export { JOB_RUN_PAGE_MAX, JOB_RUN_RETENTION_DAYS, jobActor, jobRunKind, jobRun, jobRunQuery, jobRunListResponse, jobRunSummaryQuery, jobRunSummary, } from './jobs.js';
|
|
11
11
|
export type { JobActor, JobRunKind, JobRun, JobRunQuery, JobRunListResponse, JobRunSummary } from './jobs.js';
|
|
12
|
-
export { FLEETLESS_FORMAT_VERSION, RESERVED_SLUGS, parameterType, parameterSpec, parameterMap, serviceDescription, parameterDescription, messageTemplate, messageRef, messageBody, messageMap, PLACEHOLDER_RE, placeholderNames, actionConfig, serviceConfig, publisherConfig, cameraConfig, alertCondition, datapointAlert, rateThrottleHz, datapointNumeric, datapointRetention, datapointChart, datapointConfig, robotConfigDoc, validationIssue, configState, snapshotIntervalSeconds, ALERT_SEVERITY_DEFAULT, ALERT_ENABLED_DEFAULT, RETENTION_INTERVAL_SECONDS_DEFAULT, CHART_WINDOW_MINUTES_DEFAULT, cameraSource, cameraCredentials, } from './config.js';
|
|
12
|
+
export { FLEETLESS_FORMAT_VERSION, RESERVED_SLUGS, parameterType, parameterSpec, parameterMap, serviceDescription, parameterDescription, messageTemplate, messageRef, messageBody, messageMap, PLACEHOLDER_RE, placeholderNames, actionConfig, serviceConfig, publisherConfig, cameraConfig, alertCondition, datapointAlert, rateThrottleHz, datapointNumeric, datapointRetention, datapointChart, datapointConfig, lowBandwidthSection, LOW_BANDWIDTH_DEFAULTS, robotConfigDoc, validationIssue, configState, snapshotIntervalSeconds, ALERT_SEVERITY_DEFAULT, ALERT_ENABLED_DEFAULT, RETENTION_INTERVAL_SECONDS_DEFAULT, CHART_WINDOW_MINUTES_DEFAULT, cameraSource, cameraCredentials, } from './config.js';
|
|
13
13
|
export type { CameraSource } from './config.js';
|
|
14
|
-
export type { ParameterType, ParameterSpec, ActionConfig, ServiceConfig, PublisherConfig, CameraConfig, CameraCredentials, AlertCondition, DatapointAlert, DatapointNumeric, DatapointRetention, DatapointChart, DatapointConfig, RobotConfigDoc, ValidationIssue, ConfigState, } from './config.js';
|
|
14
|
+
export type { ParameterType, ParameterSpec, ActionConfig, ServiceConfig, PublisherConfig, CameraConfig, CameraCredentials, AlertCondition, DatapointAlert, DatapointNumeric, DatapointRetention, DatapointChart, DatapointConfig, LowBandwidthSection, RobotConfigDoc, ValidationIssue, ConfigState, } from './config.js';
|
|
15
15
|
/**
|
|
16
16
|
* The one account of what is wrong with a configuration document, shared by
|
|
17
17
|
* every layer that reports on one. See `config-issues.ts`'s header for why a
|
|
@@ -21,26 +21,26 @@ export { DOCUMENT_ROOT_PATH, EXPOSURE_SECTIONS, schemaIssues, formatPath, splitF
|
|
|
21
21
|
export type { SchemaIssue, ExposureSection } from './config-issues.js';
|
|
22
22
|
export { rosGraphEntry, rosGraph, typeField, typeDefinition, parameterFieldsOf } from './introspection.js';
|
|
23
23
|
export type { RosGraphEntry, RosGraph, TypeField, TypeDefinition } from './introspection.js';
|
|
24
|
-
export { robot, patchRobotResponse, robotToken, createRobotRequest, createRobotResponse, exposureCounts, robotListItem, robotListResponse, datapointValue, robotDetailResponse, configDraftResponse, putConfigDraftRequest, publishConfigResponse, configVersionsResponse, configVersionResponse, introspectionResponse, typesResponse, fetchTypesRequest, fetchTypesResponse, datapointDescriptor, datapointListResponse, robotDetailsDoc, putRobotDetailsResponse, putRobotDetailsRequest, invokeRequest, invokeResponse, cancelRequest, releaseLiveQuery, serviceCallResponse, invokeOrServiceResponse, publishRequest, jobResponse, robotJobsResponse, rateLimitDetails, exposure, exposureListResponse, SNAPSHOT_HEADERS, ASSET_UPLOAD_HEADERS, cameraDescriptor, cameraListResponse, liveSessionResponse, snapshotMetaResponse, historyQuery, historySamplesResponse, historyBucketsResponse, historyResponse, orgQuotas, orgQuotaUsage, orgQuotaUsageCounts, robotDeletionSummary, RESOURCE_HEALTH_STATES, resourceHealthState, resourceHealthListResponse, orgHealthQuery, robotDeleteQuery, patchRobotRequest, renameSlugRequest, renameSlugResponse, slugUsageResponse, } from './rest.js';
|
|
24
|
+
export { robot, patchRobotResponse, robotToken, createRobotRequest, createRobotResponse, robotTokenRotateResponse, jointStatePutRequest, jointStatePutResponse, exposureCounts, protocolStatusValue, robotListItem, robotListResponse, datapointValue, robotDetailResponse, configDraftResponse, putConfigDraftRequest, publishConfigResponse, configVersionsResponse, configVersionResponse, introspectionResponse, typesResponse, fetchTypesRequest, fetchTypesResponse, datapointDescriptor, datapointListResponse, robotDetailsDoc, putRobotDetailsResponse, putRobotDetailsRequest, invokeRequest, invokeResponse, cancelRequest, releaseLiveQuery, serviceCallResponse, invokeOrServiceResponse, publishRequest, jobResponse, robotJobsResponse, rateLimitDetails, exposure, exposureListResponse, SNAPSHOT_HEADERS, ASSET_UPLOAD_HEADERS, cameraDescriptor, cameraListResponse, liveSessionResponse, snapshotMetaResponse, historyQuery, historySamplesResponse, historyBucketsResponse, historyResponse, orgQuotas, orgQuotaUsage, orgQuotaUsageCounts, robotDeletionSummary, RESOURCE_HEALTH_STATES, resourceHealthState, resourceHealthListResponse, orgHealthQuery, robotDeleteQuery, patchRobotRequest, renameSlugRequest, renameSlugResponse, slugUsageResponse, } from './rest.js';
|
|
25
25
|
export type { HistoryQuery, HistorySamplesResponse, HistoryResponse, HistoryBucketsResponse, OrgQuotas, OrgQuotaUsage, OrgQuotaUsageCounts, RobotDeletionSummary, ResourceHealthState, ResourceHealthListResponse, OrgHealthQuery, RobotDeleteQuery, PatchRobotRequest, RenameSlugRequest, RenameSlugResponse, SlugUsageResponse, } from './rest.js';
|
|
26
26
|
export { LATENCY_BUCKET_MS, BRIDGE_LATENCY_RETENTION_DAYS, MAX_LATENCY_BUCKETS_PER_RESPONSE, latencyBucket, robotLatencySeries, orgLatencyQuery, orgLatencyResponse, USAGE_WINDOW_MAX_DAYS, usageMetric, usageDay, orgUsageQuery, usageRow, orgUsageResponse, } from './rest.js';
|
|
27
27
|
export type { LatencyBucket, RobotLatencySeries, OrgLatencyResponse } from './rest.js';
|
|
28
28
|
export type { UsageMetric, OrgUsageQuery, UsageRow, OrgUsageResponse } from './rest.js';
|
|
29
|
-
export type { Robot, PatchRobotResponse, CreateRobotRequest, CreateRobotResponse, ExposureCounts, RobotListItem, RobotListResponse, DatapointValue, RobotDetailResponse, ConfigDraftResponse, PutConfigDraftRequest, PublishConfigResponse, ConfigVersionsResponse, ConfigVersionResponse, IntrospectionResponse, TypesResponse, FetchTypesRequest, FetchTypesResponse, DatapointDescriptor, DatapointListResponse, RobotDetailsDoc, PutRobotDetailsResponse, PutRobotDetailsRequest, InvokeRequest, InvokeResponse, CancelRequest, ReleaseLiveQuery, ServiceCallResponse, InvokeOrServiceResponse, PublishRequest, JobResponse, RobotJobsResponse, RateLimitDetails, Exposure, ExposureListResponse, CameraDescriptor, CameraListResponse, LiveSessionResponse, SnapshotMetaResponse, } from './rest.js';
|
|
29
|
+
export type { Robot, PatchRobotResponse, CreateRobotRequest, CreateRobotResponse, RobotTokenRotateResponse, JointStatePutRequest, JointStatePutResponse, ExposureCounts, ProtocolStatusValue, RobotListItem, RobotListResponse, DatapointValue, RobotDetailResponse, ConfigDraftResponse, PutConfigDraftRequest, PublishConfigResponse, ConfigVersionsResponse, ConfigVersionResponse, IntrospectionResponse, TypesResponse, FetchTypesRequest, FetchTypesResponse, DatapointDescriptor, DatapointListResponse, RobotDetailsDoc, PutRobotDetailsResponse, PutRobotDetailsRequest, InvokeRequest, InvokeResponse, CancelRequest, ReleaseLiveQuery, ServiceCallResponse, InvokeOrServiceResponse, PublishRequest, JobResponse, RobotJobsResponse, RateLimitDetails, Exposure, ExposureListResponse, CameraDescriptor, CameraListResponse, LiveSessionResponse, SnapshotMetaResponse, } from './rest.js';
|
|
30
30
|
export { clientAuth, authOk, authError, clientInvoke, clientCancel, clientPublish, commandResult, errorFrame, clientSubscribe, clientUnsubscribe, subscribeError, datapointEvent, resourceHealthEvent, resourceHealthCleared, liveSessionEndReason, liveSessionEvent, ORG_EVENT_SAMPLE_INTERVAL_MS, ORG_EVENT_ORG_CEILING_PER_SECOND, ORG_EVENT_BUFFER_SIZE, ORG_EVENT_BUFFER_IDLE_MS, ORG_EVENT_DETAIL_MAX_BYTES, orgEventKind, orgEventSeverity, orgEvent, orgEventSubscribe, orgEventUnsubscribe, orgEventReplay, orgEventDropped, } from './realtime.js';
|
|
31
31
|
export type { ClientAuth, AuthOk, AuthError, ClientInvoke, ClientCancel, ClientPublish, CommandResult, ErrorFrame, ClientSubscribe, ClientUnsubscribe, SubscribeError, DatapointEvent, ResourceHealthEvent, ResourceHealthCleared, LiveSessionEndReason, LiveSessionEvent, OrgEventKind, OrgEventSeverity, OrgEvent, OrgEventSubscribe, OrgEventUnsubscribe, OrgEventReplay, OrgEventDropped, } from './realtime.js';
|
|
32
32
|
export { password, org, patchOrgResponse, sessionTokens, refreshRequest, signUpRequest, signUpResponse, waitlistRequest, developerLoginRequest, USER_DISPLAY_NAME_MAX, orgAdminTier, fleetlessUser, fleetlessUserListResponse, createTeamInviteRequest, teamInvite, pendingTeamInvite, pendingTeamInviteListResponse, acceptTeamInviteRequest, patchFleetlessUserRequest, tierChangeRequest, mailStatus, tierRequiredDetails, passwordChangeRequest, passwordResetRequest, passwordResetConfirm, idpIssuer, authMeResponse, patchOrgRequest, patchAuthMeRequest, } from './identity.js';
|
|
33
33
|
export type { Org, PatchOrgResponse, SessionTokens, RefreshRequest, SignUpRequest, SignUpResponse, WaitlistRequest, DeveloperLoginRequest, OrgAdminTier, FleetlessUser, FleetlessUserListResponse, CreateTeamInviteRequest, TeamInvite, PendingTeamInvite, PendingTeamInviteListResponse, AcceptTeamInviteRequest, PatchFleetlessUserRequest, TierChangeRequest, MailStatus, TierRequiredDetails, PasswordChangeRequest, PasswordResetRequest, PasswordResetConfirm, IdpIssuer, AuthMeResponse, PatchOrgRequest, PatchAuthMeRequest, } from './identity.js';
|
|
34
|
-
export { appIdentifier, app, appListResponse, createAppRequest, updateAppRequest, serverKeyToken, serverKey, serverKeyListResponse, createServerKeyResponse, role, roleListResponse, rolePermissions, } from './apps.js';
|
|
35
|
-
export type { App, AppListResponse, CreateAppRequest, UpdateAppRequest, ServerKey, ServerKeyListResponse, CreateServerKeyResponse, Role, RoleListResponse, RolePermissions, } from './apps.js';
|
|
34
|
+
export { appIdentifier, app, appListResponse, appDeletionSummary, createAppRequest, updateAppRequest, serverKeyToken, serverKey, serverKeyListResponse, createServerKeyResponse, role, roleListResponse, rolePermissions, } from './apps.js';
|
|
35
|
+
export type { App, AppListResponse, AppDeletionSummary, CreateAppRequest, UpdateAppRequest, ServerKey, ServerKeyListResponse, CreateServerKeyResponse, Role, RoleListResponse, RolePermissions, } from './apps.js';
|
|
36
36
|
export { clientLoginRequest, clientRefreshRequest, clientLogoutRequest, clientRegisterRequest, clientVerifyEmailRequest, clientResendVerificationRequest, clientPasswordResetRequest, clientPasswordResetConfirmRequest, clientAcceptInvitationRequest, CLIENT_OIDC_CALLBACK_PATH, clientProviderListQuery, clientProviderListResponse, clientOidcStartQuery, clientOidcCallbackQuery, clientOidcExchangeRequest, clientOidcErrorCode, clientMcpInteraction, clientMcpInteractionDecisionResponse, mcpConsentGrant, mcpConsentGrantListResponse, clientIdentity, } from './client-auth.js';
|
|
37
37
|
export type { ClientLoginRequest, ClientRefreshRequest, ClientLogoutRequest, ClientRegisterRequest, ClientVerifyEmailRequest, ClientResendVerificationRequest, ClientPasswordResetRequest, ClientPasswordResetConfirmRequest, ClientAcceptInvitationRequest, ClientProviderListQuery, ClientProviderListResponse, ClientOidcStartQuery, ClientOidcCallbackQuery, ClientOidcExchangeRequest, ClientOidcErrorCode, ClientMcpInteraction, ClientMcpInteractionDecisionResponse, McpConsentGrant, McpConsentGrantListResponse, ClientIdentity, } from './client-auth.js';
|
|
38
38
|
export { clientRobotListItem, clientRobotListResponse } from './client-robots.js';
|
|
39
39
|
export type { ClientRobotListItem, ClientRobotListResponse } from './client-robots.js';
|
|
40
|
-
export { APP_USER_DISPLAY_NAME_MAX, APP_URL_PLACEHOLDERS, MAIL_TEMPLATE_VARIABLES, DEFAULT_MAIL_TEMPLATES, providerSlug, appUserStatus, appUser, appUserListResponse, createAppUserRequest, patchAppUserRequest, createAppInvitationRequest, appInvitation, pendingAppInvitation, appInvitationListResponse, appOidcProvider, appOidcProviderListResponse, createAppOidcProviderRequest, patchAppOidcProviderRequest, appUrlTemplate, allowedOrigin, emailDomain, appAuthConfig,
|
|
41
|
-
export type { AppUserStatus, AppUser, AppUserListResponse, CreateAppUserRequest, PatchAppUserRequest, CreateAppInvitationRequest, AppInvitation, PendingAppInvitation, AppInvitationListResponse, AppOidcProvider, AppOidcProviderListResponse, CreateAppOidcProviderRequest, PatchAppOidcProviderRequest, AppAuthConfig,
|
|
42
|
-
export { assetKind, URDF_ASSET_NAME, asset, urdfCompleteness, assetListResponse, missingAssetQuery, assetSyncRequest, assetSyncResponse, assetSyncState, assetSyncStatus, assetFailure, assetFailureKind,
|
|
43
|
-
export type { AssetKind, Asset, UrdfCompleteness, AssetListResponse, MissingAssetQuery, AssetSyncRequest, AssetSyncResponse, AssetSyncState, AssetSyncStatus, AssetFailure, AssetFailureKind,
|
|
40
|
+
export { APP_USER_DISPLAY_NAME_MAX, APP_URL_PLACEHOLDERS, MAIL_TEMPLATE_VARIABLES, DEFAULT_MAIL_TEMPLATES, providerSlug, appUserStatus, appUser, appUserListResponse, createAppUserRequest, patchAppUserRequest, createAppInvitationRequest, appInvitation, pendingAppInvitation, appInvitationListResponse, appOidcProvider, appOidcProviderListResponse, createAppOidcProviderRequest, patchAppOidcProviderRequest, appUrlTemplate, allowedOrigin, emailDomain, appAuthConfig, putAppAuthRegistrationRequest, putAppAuthUrlsRequest, putAppAuthMcpRequest, mailTemplateKind, appMailTemplate, appMailTemplateListResponse, putAppMailTemplateRequest, mailTemplatePreviewRequest, mailTemplatePreviewResponse, mailTemplateProblemDetails, mailOutcome, } from './app-users.js';
|
|
41
|
+
export type { AppUserStatus, AppUser, AppUserListResponse, CreateAppUserRequest, PatchAppUserRequest, CreateAppInvitationRequest, AppInvitation, PendingAppInvitation, AppInvitationListResponse, AppOidcProvider, AppOidcProviderListResponse, CreateAppOidcProviderRequest, PatchAppOidcProviderRequest, AppAuthConfig, PutAppAuthRegistrationRequest, PutAppAuthUrlsRequest, PutAppAuthMcpRequest, MailTemplateKind, AppMailTemplate, AppMailTemplateListResponse, PutAppMailTemplateRequest, MailTemplatePreviewRequest, MailTemplatePreviewResponse, MailTemplateProblemDetails, MailOutcome, } from './app-users.js';
|
|
42
|
+
export { assetKind, URDF_ASSET_NAME, asset, urdfCompleteness, assetListResponse, assetsClearResponse, missingAssetQuery, assetSyncRequest, assetSyncResponse, assetSyncState, assetSyncStatus, assetFailure, assetFailureKind, assetStoreRefusedDetails, assetSyncBusyDetails, ROBOT_ASSET_STORE_BYTES, } from './assets.js';
|
|
43
|
+
export type { AssetKind, Asset, UrdfCompleteness, AssetListResponse, AssetsClearResponse, MissingAssetQuery, AssetSyncRequest, AssetSyncResponse, AssetSyncState, AssetSyncStatus, AssetFailure, AssetFailureKind, AssetStoreRefusedDetails, AssetSyncBusyDetails, } from './assets.js';
|
|
44
44
|
export { auditActor, auditEvent, auditQuery, auditListResponse, AUDIT_CSV_COLUMNS, AUDIT_RETENTION_DAYS } from './audit.js';
|
|
45
45
|
export type { AuditActor, AuditEvent, AuditQuery, AuditListResponse } from './audit.js';
|
|
46
46
|
export { alertRowCondition, alertSeverity, alertState, datapointAlertRow, alertListResponse, orgFiringAlertsResponse, orgAlertsQuery, datapointDisplay, putDatapointDisplayRequest, } from './alerts.js';
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
export { SLUG_RULE, ROS_NAME_RULE, ROS_TYPE_NAME_RULE, FIELD_PATH_RULE, slug, rosName, rosTypeName, fieldPath, wireSeqCursor, wireTimestampMs, applyErrorKind, applyError, } from './common.js';
|
|
3
3
|
export { MCP_PROTOCOL_VERSION, MCP_ENDPOINT_PATH, mcpAppEndpointPath, MCP_APP_PATHS, MCP_TOOL_NAME_MAX, MCP_ASSET_LINK_PATH, MCP_ASSET_LINK_TTL_MS, mcpToolNamePattern, mcpToolKind, mcpExposure, mcpCapabilities, mcpRobotDatasheet, mcpRolePreviewResponse, } from './mcp.js';
|
|
4
|
-
export { PROTOCOL_VERSION, bridgeHello, cloudHelloOk, cloudHelloError, cloudPing, bridgePong, datapointFrame, bridgeState,
|
|
4
|
+
export { PROTOCOL_VERSION, PROTOCOL_VERSIONS, PROTOCOL_SUNSET_DAYS, LATEST_BRIDGE_VERSION, protocolStatus, minimumProtocolVersion, sunsetOf, statusFromTable, bridgeHello, cloudHelloOk, cloudHelloError, cloudPing, bridgePong, bridgeLinkMode, datapointFrame, bridgeState, cloudConfig, bridgeConfigApplied, cloudIntrospectRequest, bridgeIntrospect, cloudTypeRequest, bridgeTypeDefinitions, cloudInvoke, cloudCancel, cloudPublish, bridgeJobUpdate, bridgeJobLost, snapshotHeader, cloudCameraStart, cloudCameraStop, bridgeCameraState, SNAPSHOT_MAX_BYTES, CLOSE_ROBOT_DELETED, CLOSE_TOKEN_ROTATED,
|
|
5
5
|
// Assets.
|
|
6
6
|
bridgeAssetsAvailable, cloudAssetRequest, bridgeAssetProgress,
|
|
7
7
|
// Addressing.
|
|
8
8
|
activeJob, DEFAULT_PATIENCE_MS, MAX_PATIENCE_MS, MIN_PATIENCE_MS, } from './protocol.js';
|
|
9
9
|
export { jobState, job, jobEvent, busyDetails, publisherBusyDetails, jobQueueFullDetails } from './jobs.js';
|
|
10
10
|
export { JOB_RUN_PAGE_MAX, JOB_RUN_RETENTION_DAYS, jobActor, jobRunKind, jobRun, jobRunQuery, jobRunListResponse, jobRunSummaryQuery, jobRunSummary, } from './jobs.js';
|
|
11
|
-
export { FLEETLESS_FORMAT_VERSION, RESERVED_SLUGS, parameterType, parameterSpec, parameterMap, serviceDescription, parameterDescription, messageTemplate, messageRef, messageBody, messageMap, PLACEHOLDER_RE, placeholderNames, actionConfig, serviceConfig, publisherConfig, cameraConfig, alertCondition, datapointAlert, rateThrottleHz, datapointNumeric, datapointRetention, datapointChart, datapointConfig, robotConfigDoc, validationIssue, configState, snapshotIntervalSeconds,
|
|
11
|
+
export { FLEETLESS_FORMAT_VERSION, RESERVED_SLUGS, parameterType, parameterSpec, parameterMap, serviceDescription, parameterDescription, messageTemplate, messageRef, messageBody, messageMap, PLACEHOLDER_RE, placeholderNames, actionConfig, serviceConfig, publisherConfig, cameraConfig, alertCondition, datapointAlert, rateThrottleHz, datapointNumeric, datapointRetention, datapointChart, datapointConfig, lowBandwidthSection, LOW_BANDWIDTH_DEFAULTS, robotConfigDoc, validationIssue, configState, snapshotIntervalSeconds,
|
|
12
12
|
// The defaults the format names, so nobody invents them twice.
|
|
13
13
|
ALERT_SEVERITY_DEFAULT, ALERT_ENABLED_DEFAULT, RETENTION_INTERVAL_SECONDS_DEFAULT, CHART_WINDOW_MINUTES_DEFAULT,
|
|
14
14
|
// Retention, history and quotas.
|
|
@@ -20,7 +20,7 @@ cameraSource, cameraCredentials, } from './config.js';
|
|
|
20
20
|
*/
|
|
21
21
|
export { DOCUMENT_ROOT_PATH, EXPOSURE_SECTIONS, schemaIssues, formatPath, splitFormatPath, configSchemaHash, } from './config-issues.js';
|
|
22
22
|
export { rosGraphEntry, rosGraph, typeField, typeDefinition, parameterFieldsOf } from './introspection.js';
|
|
23
|
-
export { robot, patchRobotResponse, robotToken, createRobotRequest, createRobotResponse, exposureCounts, robotListItem, robotListResponse, datapointValue, robotDetailResponse, configDraftResponse, putConfigDraftRequest, publishConfigResponse, configVersionsResponse, configVersionResponse, introspectionResponse, typesResponse, fetchTypesRequest, fetchTypesResponse, datapointDescriptor, datapointListResponse, robotDetailsDoc, putRobotDetailsResponse, putRobotDetailsRequest, invokeRequest, invokeResponse,
|
|
23
|
+
export { robot, patchRobotResponse, robotToken, createRobotRequest, createRobotResponse, robotTokenRotateResponse, jointStatePutRequest, jointStatePutResponse, exposureCounts, protocolStatusValue, robotListItem, robotListResponse, datapointValue, robotDetailResponse, configDraftResponse, putConfigDraftRequest, publishConfigResponse, configVersionsResponse, configVersionResponse, introspectionResponse, typesResponse, fetchTypesRequest, fetchTypesResponse, datapointDescriptor, datapointListResponse, robotDetailsDoc, putRobotDetailsResponse, putRobotDetailsRequest, invokeRequest, invokeResponse,
|
|
24
24
|
// Addressing.
|
|
25
25
|
cancelRequest, releaseLiveQuery, serviceCallResponse, invokeOrServiceResponse, publishRequest, jobResponse, robotJobsResponse, rateLimitDetails, exposure, exposureListResponse, SNAPSHOT_HEADERS, ASSET_UPLOAD_HEADERS, cameraDescriptor, cameraListResponse, liveSessionResponse, snapshotMetaResponse,
|
|
26
26
|
// Retention, history, quotas.
|
|
@@ -38,12 +38,12 @@ USER_DISPLAY_NAME_MAX, orgAdminTier, fleetlessUser, fleetlessUserListResponse, c
|
|
|
38
38
|
mailStatus, tierRequiredDetails, passwordChangeRequest, passwordResetRequest, passwordResetConfirm, idpIssuer,
|
|
39
39
|
// auth/me, org and member patches.
|
|
40
40
|
authMeResponse, patchOrgRequest, patchAuthMeRequest, } from './identity.js';
|
|
41
|
-
export { appIdentifier, app, appListResponse, createAppRequest, updateAppRequest, serverKeyToken, serverKey, serverKeyListResponse, createServerKeyResponse, role, roleListResponse, rolePermissions, } from './apps.js';
|
|
41
|
+
export { appIdentifier, app, appListResponse, appDeletionSummary, createAppRequest, updateAppRequest, serverKeyToken, serverKey, serverKeyListResponse, createServerKeyResponse, role, roleListResponse, rolePermissions, } from './apps.js';
|
|
42
42
|
export { clientLoginRequest, clientRefreshRequest, clientLogoutRequest, clientRegisterRequest, clientVerifyEmailRequest, clientResendVerificationRequest, clientPasswordResetRequest, clientPasswordResetConfirmRequest, clientAcceptInvitationRequest, CLIENT_OIDC_CALLBACK_PATH, clientProviderListQuery, clientProviderListResponse, clientOidcStartQuery, clientOidcCallbackQuery, clientOidcExchangeRequest, clientOidcErrorCode, clientMcpInteraction, clientMcpInteractionDecisionResponse, mcpConsentGrant, mcpConsentGrantListResponse, clientIdentity, } from './client-auth.js';
|
|
43
43
|
export { clientRobotListItem, clientRobotListResponse } from './client-robots.js';
|
|
44
44
|
// The per-app identity space.
|
|
45
|
-
export { APP_USER_DISPLAY_NAME_MAX, APP_URL_PLACEHOLDERS, MAIL_TEMPLATE_VARIABLES, DEFAULT_MAIL_TEMPLATES, providerSlug, appUserStatus, appUser, appUserListResponse, createAppUserRequest, patchAppUserRequest, createAppInvitationRequest, appInvitation, pendingAppInvitation, appInvitationListResponse, appOidcProvider, appOidcProviderListResponse, createAppOidcProviderRequest, patchAppOidcProviderRequest, appUrlTemplate, allowedOrigin, emailDomain, appAuthConfig,
|
|
46
|
-
export { assetKind, URDF_ASSET_NAME, asset, urdfCompleteness, assetListResponse, missingAssetQuery, assetSyncRequest, assetSyncResponse, assetSyncState, assetSyncStatus, assetFailure, assetFailureKind,
|
|
45
|
+
export { APP_USER_DISPLAY_NAME_MAX, APP_URL_PLACEHOLDERS, MAIL_TEMPLATE_VARIABLES, DEFAULT_MAIL_TEMPLATES, providerSlug, appUserStatus, appUser, appUserListResponse, createAppUserRequest, patchAppUserRequest, createAppInvitationRequest, appInvitation, pendingAppInvitation, appInvitationListResponse, appOidcProvider, appOidcProviderListResponse, createAppOidcProviderRequest, patchAppOidcProviderRequest, appUrlTemplate, allowedOrigin, emailDomain, appAuthConfig, putAppAuthRegistrationRequest, putAppAuthUrlsRequest, putAppAuthMcpRequest, mailTemplateKind, appMailTemplate, appMailTemplateListResponse, putAppMailTemplateRequest, mailTemplatePreviewRequest, mailTemplatePreviewResponse, mailTemplateProblemDetails, mailOutcome, } from './app-users.js';
|
|
46
|
+
export { assetKind, URDF_ASSET_NAME, asset, urdfCompleteness, assetListResponse, assetsClearResponse, missingAssetQuery, assetSyncRequest, assetSyncResponse, assetSyncState, assetSyncStatus, assetFailure, assetFailureKind, assetStoreRefusedDetails, assetSyncBusyDetails, ROBOT_ASSET_STORE_BYTES, } from './assets.js';
|
|
47
47
|
export { auditActor, auditEvent, auditQuery, auditListResponse, AUDIT_CSV_COLUMNS, AUDIT_RETENTION_DAYS } from './audit.js';
|
|
48
48
|
export { alertRowCondition, alertSeverity, alertState, datapointAlertRow, alertListResponse, orgFiringAlertsResponse, orgAlertsQuery, datapointDisplay, putDatapointDisplayRequest, } from './alerts.js';
|
|
49
49
|
export { apiError, parameterViolation, parameterInvalidDetails, ERROR_CODES } from './errors.js';
|