camstack 1.2.102 → 1.2.103
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.
|
@@ -14522,7 +14522,7 @@ function date4(params) {
|
|
|
14522
14522
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14523
14523
|
config(en_default());
|
|
14524
14524
|
|
|
14525
|
-
// ../types/dist/sleep-
|
|
14525
|
+
// ../types/dist/sleep-CgijQHtG.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -36934,6 +36934,169 @@ var ptzAutotrackCapability = {
|
|
|
36934
36934
|
*/
|
|
36935
36935
|
durability: "session"
|
|
36936
36936
|
};
|
|
36937
|
+
var NavigationMoveCommandSchema = external_exports.object({
|
|
36938
|
+
pan: external_exports.number().min(-1).max(1).optional(),
|
|
36939
|
+
tilt: external_exports.number().min(-1).max(1).optional(),
|
|
36940
|
+
speed: external_exports.number().min(0).max(1).optional()
|
|
36941
|
+
});
|
|
36942
|
+
var NavigationActionIdSchema = external_exports.enum([
|
|
36943
|
+
"goHome",
|
|
36944
|
+
"locate",
|
|
36945
|
+
"spotClean",
|
|
36946
|
+
"findPet",
|
|
36947
|
+
"personFollow",
|
|
36948
|
+
"stop",
|
|
36949
|
+
"startClean",
|
|
36950
|
+
"pauseClean",
|
|
36951
|
+
"dockWash",
|
|
36952
|
+
"autoEmpty",
|
|
36953
|
+
"flashOn",
|
|
36954
|
+
"flashOff"
|
|
36955
|
+
]);
|
|
36956
|
+
var NavigationEntryKindSchema = external_exports.enum(["action", "sound"]);
|
|
36957
|
+
var NavigationActionEntrySchema = external_exports.object({
|
|
36958
|
+
id: external_exports.string(),
|
|
36959
|
+
kind: NavigationEntryKindSchema,
|
|
36960
|
+
label: external_exports.string(),
|
|
36961
|
+
icon: external_exports.string(),
|
|
36962
|
+
/** Present only on `kind:'sound'` entries — the id to pass to `playSound`. */
|
|
36963
|
+
soundId: external_exports.number().int().optional(),
|
|
36964
|
+
/** Per-device feature flag — render this entry only when true. */
|
|
36965
|
+
enabled: external_exports.boolean()
|
|
36966
|
+
});
|
|
36967
|
+
var NavigationPointSchema = external_exports.object({
|
|
36968
|
+
x: external_exports.number(),
|
|
36969
|
+
y: external_exports.number()
|
|
36970
|
+
});
|
|
36971
|
+
var NavigationFeaturesSchema = external_exports.object({
|
|
36972
|
+
move: external_exports.boolean(),
|
|
36973
|
+
stop: external_exports.boolean(),
|
|
36974
|
+
goToPoint: external_exports.boolean(),
|
|
36975
|
+
runAction: external_exports.boolean(),
|
|
36976
|
+
playSound: external_exports.boolean(),
|
|
36977
|
+
light: external_exports.boolean(),
|
|
36978
|
+
lightMode: external_exports.boolean()
|
|
36979
|
+
});
|
|
36980
|
+
var NavigationLightModeSchema = external_exports.enum(["auto", "manual"]);
|
|
36981
|
+
var NavigationModeSchema = external_exports.enum([
|
|
36982
|
+
"idle",
|
|
36983
|
+
"cleaning",
|
|
36984
|
+
"spot",
|
|
36985
|
+
"following",
|
|
36986
|
+
"goto",
|
|
36987
|
+
"returning",
|
|
36988
|
+
"paused",
|
|
36989
|
+
"unknown"
|
|
36990
|
+
]);
|
|
36991
|
+
var NavigationStatusSchema = external_exports.object({
|
|
36992
|
+
mode: NavigationModeSchema,
|
|
36993
|
+
following: external_exports.boolean(),
|
|
36994
|
+
flash: external_exports.boolean(),
|
|
36995
|
+
lightMode: NavigationLightModeSchema,
|
|
36996
|
+
lightLevel: external_exports.number().min(40).max(100),
|
|
36997
|
+
/** Ms epoch when the slice was last updated. */
|
|
36998
|
+
lastChangedAt: external_exports.number()
|
|
36999
|
+
});
|
|
37000
|
+
var NavigationRuntimeStateSchema = NavigationStatusSchema.extend({ lastFetchedAt: external_exports.number() });
|
|
37001
|
+
var navigationCapability = {
|
|
37002
|
+
name: "navigation",
|
|
37003
|
+
scope: "device",
|
|
37004
|
+
deviceNative: true,
|
|
37005
|
+
mode: "singleton",
|
|
37006
|
+
deviceTypes: [DeviceType.Camera],
|
|
37007
|
+
deviceConfig: { ui: {
|
|
37008
|
+
kind: "widget",
|
|
37009
|
+
widgetId: "host/navigation-panel",
|
|
37010
|
+
tab: "navigation",
|
|
37011
|
+
topTab: true,
|
|
37012
|
+
label: "Navigation",
|
|
37013
|
+
order: 0
|
|
37014
|
+
} },
|
|
37015
|
+
methods: {
|
|
37016
|
+
/**
|
|
37017
|
+
* Momentary drive nudge (the robot moves). `protected` — mirrors
|
|
37018
|
+
* `ptz.continuousMove` so the Viewer navigation panel (and the PTZ-mimic
|
|
37019
|
+
* path) works for any authenticated user, not admin-only. The UI sends
|
|
37020
|
+
* these at ~1 Hz while a control is held; the provider forwards each one to
|
|
37021
|
+
* a single drive write WITHOUT debouncing.
|
|
37022
|
+
*/
|
|
37023
|
+
move: method(NavigationMoveCommandSchema.extend({ deviceId: external_exports.number() }), external_exports.void(), { kind: "mutation" }),
|
|
37024
|
+
/** Halt all motion immediately (zero drive vector). */
|
|
37025
|
+
stop: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), { kind: "mutation" }),
|
|
37026
|
+
/** Send the robot to a point on its live map. */
|
|
37027
|
+
goToPoint: method(NavigationPointSchema.extend({ deviceId: external_exports.number() }), external_exports.void(), { kind: "mutation" }),
|
|
37028
|
+
/**
|
|
37029
|
+
* Enumerate the discrete controls THIS device supports (data-driven UI +
|
|
37030
|
+
* PTZ mimic). Camera-probed subset of {@link NAVIGATION_ACTION_CATALOG}.
|
|
37031
|
+
*/
|
|
37032
|
+
listActions: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.array(NavigationActionEntrySchema)),
|
|
37033
|
+
/**
|
|
37034
|
+
* Run one discrete action (a `kind:'action'` dictionary entry). Invalid /
|
|
37035
|
+
* unsupported action ids are rejected by the provider.
|
|
37036
|
+
*/
|
|
37037
|
+
runAction: method(external_exports.object({
|
|
37038
|
+
deviceId: external_exports.number(),
|
|
37039
|
+
actionId: NavigationActionIdSchema
|
|
37040
|
+
}), external_exports.void(), { kind: "mutation" }),
|
|
37041
|
+
/** Play a sound by its wire id (the `soundId` of a `kind:'sound'` entry). */
|
|
37042
|
+
playSound: method(external_exports.object({
|
|
37043
|
+
deviceId: external_exports.number(),
|
|
37044
|
+
soundId: external_exports.number().int()
|
|
37045
|
+
}), external_exports.void(), { kind: "mutation" }),
|
|
37046
|
+
/**
|
|
37047
|
+
* Turn the on-camera fill light on / off (the `OpenFullLight` control —
|
|
37048
|
+
* works anytime, no active stream required).
|
|
37049
|
+
*/
|
|
37050
|
+
setLightOn: method(external_exports.object({
|
|
37051
|
+
deviceId: external_exports.number(),
|
|
37052
|
+
on: external_exports.boolean()
|
|
37053
|
+
}), external_exports.void(), { kind: "mutation" }),
|
|
37054
|
+
/**
|
|
37055
|
+
* Set the fill-light mode (auto vs manual). `manual` optionally carries the
|
|
37056
|
+
* initial `level`. The auto/manual + level control is a CAMERA-service
|
|
37057
|
+
* action that generally needs an active camera stream/monitor session — the
|
|
37058
|
+
* UI shows the manual level slider ONLY when `mode === 'manual'`.
|
|
37059
|
+
*/
|
|
37060
|
+
setLightMode: method(external_exports.object({
|
|
37061
|
+
deviceId: external_exports.number(),
|
|
37062
|
+
mode: NavigationLightModeSchema,
|
|
37063
|
+
level: external_exports.number().min(40).max(100).optional()
|
|
37064
|
+
}), external_exports.void(), { kind: "mutation" }),
|
|
37065
|
+
/** Set the MANUAL fill-light level (40..100). Implies `manual` mode. */
|
|
37066
|
+
setLightLevel: method(external_exports.object({
|
|
37067
|
+
deviceId: external_exports.number(),
|
|
37068
|
+
level: external_exports.number().min(40).max(100)
|
|
37069
|
+
}), external_exports.void(), { kind: "mutation" }),
|
|
37070
|
+
/**
|
|
37071
|
+
* Per-device FEATURE-FLAG report for the general primitives — drives which
|
|
37072
|
+
* controls the UI shows (the per-entry flags for the dictionary come back on
|
|
37073
|
+
* `listActions`).
|
|
37074
|
+
*/
|
|
37075
|
+
getFeatures: method(external_exports.object({ deviceId: external_exports.number() }), NavigationFeaturesSchema)
|
|
37076
|
+
},
|
|
37077
|
+
events: { onStatusChanged: { data: external_exports.object({
|
|
37078
|
+
deviceId: external_exports.number(),
|
|
37079
|
+
status: NavigationStatusSchema
|
|
37080
|
+
}) } },
|
|
37081
|
+
status: {
|
|
37082
|
+
schema: NavigationStatusSchema,
|
|
37083
|
+
kind: "push"
|
|
37084
|
+
},
|
|
37085
|
+
/**
|
|
37086
|
+
* Runtime-state slice mirrored by the kernel. The navigation panel watches it
|
|
37087
|
+
* for live mode / follow / flash changes.
|
|
37088
|
+
*/
|
|
37089
|
+
runtimeState: NavigationRuntimeStateSchema,
|
|
37090
|
+
/**
|
|
37091
|
+
* Runtime-state durability: **session** — like `vacuum-control`, a restored
|
|
37092
|
+
* `mode: cleaning` / `following: true` is a robot that is not actually doing
|
|
37093
|
+
* that. The live handle re-publishes on connect.
|
|
37094
|
+
*
|
|
37095
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
37096
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
37097
|
+
*/
|
|
37098
|
+
durability: "session"
|
|
37099
|
+
};
|
|
36937
37100
|
var rebootCapability = {
|
|
36938
37101
|
name: "reboot",
|
|
36939
37102
|
scope: "device",
|
|
@@ -42349,6 +42512,66 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42349
42512
|
addonId: null,
|
|
42350
42513
|
access: "create"
|
|
42351
42514
|
},
|
|
42515
|
+
"navigation.getFeatures": {
|
|
42516
|
+
capName: "navigation",
|
|
42517
|
+
capScope: "device",
|
|
42518
|
+
addonId: null,
|
|
42519
|
+
access: "view"
|
|
42520
|
+
},
|
|
42521
|
+
"navigation.goToPoint": {
|
|
42522
|
+
capName: "navigation",
|
|
42523
|
+
capScope: "device",
|
|
42524
|
+
addonId: null,
|
|
42525
|
+
access: "create"
|
|
42526
|
+
},
|
|
42527
|
+
"navigation.listActions": {
|
|
42528
|
+
capName: "navigation",
|
|
42529
|
+
capScope: "device",
|
|
42530
|
+
addonId: null,
|
|
42531
|
+
access: "view"
|
|
42532
|
+
},
|
|
42533
|
+
"navigation.move": {
|
|
42534
|
+
capName: "navigation",
|
|
42535
|
+
capScope: "device",
|
|
42536
|
+
addonId: null,
|
|
42537
|
+
access: "create"
|
|
42538
|
+
},
|
|
42539
|
+
"navigation.playSound": {
|
|
42540
|
+
capName: "navigation",
|
|
42541
|
+
capScope: "device",
|
|
42542
|
+
addonId: null,
|
|
42543
|
+
access: "create"
|
|
42544
|
+
},
|
|
42545
|
+
"navigation.runAction": {
|
|
42546
|
+
capName: "navigation",
|
|
42547
|
+
capScope: "device",
|
|
42548
|
+
addonId: null,
|
|
42549
|
+
access: "create"
|
|
42550
|
+
},
|
|
42551
|
+
"navigation.setLightLevel": {
|
|
42552
|
+
capName: "navigation",
|
|
42553
|
+
capScope: "device",
|
|
42554
|
+
addonId: null,
|
|
42555
|
+
access: "create"
|
|
42556
|
+
},
|
|
42557
|
+
"navigation.setLightMode": {
|
|
42558
|
+
capName: "navigation",
|
|
42559
|
+
capScope: "device",
|
|
42560
|
+
addonId: null,
|
|
42561
|
+
access: "create"
|
|
42562
|
+
},
|
|
42563
|
+
"navigation.setLightOn": {
|
|
42564
|
+
capName: "navigation",
|
|
42565
|
+
capScope: "device",
|
|
42566
|
+
addonId: null,
|
|
42567
|
+
access: "create"
|
|
42568
|
+
},
|
|
42569
|
+
"navigation.stop": {
|
|
42570
|
+
capName: "navigation",
|
|
42571
|
+
capScope: "device",
|
|
42572
|
+
addonId: null,
|
|
42573
|
+
access: "create"
|
|
42574
|
+
},
|
|
42352
42575
|
"networkAccess.getEndpoint": {
|
|
42353
42576
|
capName: "network-access",
|
|
42354
42577
|
capScope: "system",
|
|
@@ -46444,6 +46667,56 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
46444
46667
|
form: "single",
|
|
46445
46668
|
optional: false
|
|
46446
46669
|
}],
|
|
46670
|
+
"navigation.getFeatures": [{
|
|
46671
|
+
name: "deviceId",
|
|
46672
|
+
form: "single",
|
|
46673
|
+
optional: false
|
|
46674
|
+
}],
|
|
46675
|
+
"navigation.goToPoint": [{
|
|
46676
|
+
name: "deviceId",
|
|
46677
|
+
form: "single",
|
|
46678
|
+
optional: false
|
|
46679
|
+
}],
|
|
46680
|
+
"navigation.listActions": [{
|
|
46681
|
+
name: "deviceId",
|
|
46682
|
+
form: "single",
|
|
46683
|
+
optional: false
|
|
46684
|
+
}],
|
|
46685
|
+
"navigation.move": [{
|
|
46686
|
+
name: "deviceId",
|
|
46687
|
+
form: "single",
|
|
46688
|
+
optional: false
|
|
46689
|
+
}],
|
|
46690
|
+
"navigation.playSound": [{
|
|
46691
|
+
name: "deviceId",
|
|
46692
|
+
form: "single",
|
|
46693
|
+
optional: false
|
|
46694
|
+
}],
|
|
46695
|
+
"navigation.runAction": [{
|
|
46696
|
+
name: "deviceId",
|
|
46697
|
+
form: "single",
|
|
46698
|
+
optional: false
|
|
46699
|
+
}],
|
|
46700
|
+
"navigation.setLightLevel": [{
|
|
46701
|
+
name: "deviceId",
|
|
46702
|
+
form: "single",
|
|
46703
|
+
optional: false
|
|
46704
|
+
}],
|
|
46705
|
+
"navigation.setLightMode": [{
|
|
46706
|
+
name: "deviceId",
|
|
46707
|
+
form: "single",
|
|
46708
|
+
optional: false
|
|
46709
|
+
}],
|
|
46710
|
+
"navigation.setLightOn": [{
|
|
46711
|
+
name: "deviceId",
|
|
46712
|
+
form: "single",
|
|
46713
|
+
optional: false
|
|
46714
|
+
}],
|
|
46715
|
+
"navigation.stop": [{
|
|
46716
|
+
name: "deviceId",
|
|
46717
|
+
form: "single",
|
|
46718
|
+
optional: false
|
|
46719
|
+
}],
|
|
46447
46720
|
"networkQuality.getDeviceStats": [{
|
|
46448
46721
|
name: "deviceId",
|
|
46449
46722
|
form: "single",
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IAJ7W6M6.js";
|
|
5
5
|
import "./chunk-LMMQX4CK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-WOJX4MSL.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-WOJX4MSL.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
|
|
|
1130
1130
|
return true;
|
|
1131
1131
|
}
|
|
1132
1132
|
async function resolveServerInteractive(presetNamespace) {
|
|
1133
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1133
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-LBZ4OABF.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|