amaran-light-cli 1.8.0 → 1.9.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.
Files changed (87) hide show
  1. package/README.md +36 -16
  2. package/dist/__tests__/autoCctMaxLux.test.js +32 -9
  3. package/dist/__tests__/autoCctMaxLux.test.js.map +1 -1
  4. package/dist/__tests__/cctUtil.test.js +22 -0
  5. package/dist/__tests__/cctUtil.test.js.map +1 -1
  6. package/dist/__tests__/lightControl.test.js +0 -31
  7. package/dist/__tests__/lightControl.test.js.map +1 -1
  8. package/dist/__tests__/simulateSchedule.test.js +4 -2
  9. package/dist/__tests__/simulateSchedule.test.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +7 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/daylightSimulation/autoCct.d.ts.map +1 -1
  14. package/dist/commands/daylightSimulation/autoCct.js +35 -25
  15. package/dist/commands/daylightSimulation/autoCct.js.map +1 -1
  16. package/dist/commands/daylightSimulation/graphSchedule.js +1 -1
  17. package/dist/commands/daylightSimulation/graphSchedule.js.map +1 -1
  18. package/dist/commands/daylightSimulation/printSchedule.js +4 -4
  19. package/dist/commands/daylightSimulation/printSchedule.js.map +1 -1
  20. package/dist/commands/daylightSimulation/schedule.d.ts +5 -0
  21. package/dist/commands/daylightSimulation/schedule.d.ts.map +1 -0
  22. package/dist/commands/daylightSimulation/schedule.js +11 -0
  23. package/dist/commands/daylightSimulation/schedule.js.map +1 -0
  24. package/dist/commands/daylightSimulation/service.d.ts.map +1 -1
  25. package/dist/commands/daylightSimulation/service.js +7 -0
  26. package/dist/commands/daylightSimulation/service.js.map +1 -1
  27. package/dist/commands/daylightSimulation/simulateSchedule.d.ts.map +1 -1
  28. package/dist/commands/daylightSimulation/simulateSchedule.js +6 -2
  29. package/dist/commands/daylightSimulation/simulateSchedule.js.map +1 -1
  30. package/dist/commands/deviceControl/cct.d.ts.map +1 -1
  31. package/dist/commands/deviceControl/cct.js +91 -3
  32. package/dist/commands/deviceControl/cct.js.map +1 -1
  33. package/dist/commands/deviceControl/color.d.ts.map +1 -1
  34. package/dist/commands/deviceControl/color.js +171 -3
  35. package/dist/commands/deviceControl/color.js.map +1 -1
  36. package/dist/commands/deviceControl/config.d.ts.map +1 -1
  37. package/dist/commands/deviceControl/config.js +12 -2
  38. package/dist/commands/deviceControl/config.js.map +1 -1
  39. package/dist/commands/deviceControl/hsi.d.ts.map +1 -1
  40. package/dist/commands/deviceControl/hsi.js +132 -2
  41. package/dist/commands/deviceControl/hsi.js.map +1 -1
  42. package/dist/commands/deviceControl/info.d.ts.map +1 -1
  43. package/dist/commands/deviceControl/info.js +115 -29
  44. package/dist/commands/deviceControl/info.js.map +1 -1
  45. package/dist/commands/deviceControl/intensity.d.ts.map +1 -1
  46. package/dist/commands/deviceControl/intensity.js +86 -2
  47. package/dist/commands/deviceControl/intensity.js.map +1 -1
  48. package/dist/commands/deviceControl/power.d.ts.map +1 -1
  49. package/dist/commands/deviceControl/power.js +120 -29
  50. package/dist/commands/deviceControl/power.js.map +1 -1
  51. package/dist/commands/deviceControl/status.d.ts.map +1 -1
  52. package/dist/commands/deviceControl/status.js +184 -21
  53. package/dist/commands/deviceControl/status.js.map +1 -1
  54. package/dist/commands.d.ts.map +1 -1
  55. package/dist/commands.js +2 -8
  56. package/dist/commands.js.map +1 -1
  57. package/dist/daylightSimulation/cctUtil.d.ts.map +1 -1
  58. package/dist/daylightSimulation/cctUtil.js +14 -0
  59. package/dist/daylightSimulation/cctUtil.js.map +1 -1
  60. package/dist/daylightSimulation/privacyUtil.d.ts +13 -0
  61. package/dist/daylightSimulation/privacyUtil.d.ts.map +1 -0
  62. package/dist/daylightSimulation/privacyUtil.js +30 -0
  63. package/dist/daylightSimulation/privacyUtil.js.map +1 -0
  64. package/dist/daylightSimulation/scheduleMaker.d.ts.map +1 -1
  65. package/dist/daylightSimulation/scheduleMaker.js +1 -0
  66. package/dist/daylightSimulation/scheduleMaker.js.map +1 -1
  67. package/dist/daylightSimulation/textSchedule.d.ts +1 -1
  68. package/dist/daylightSimulation/textSchedule.d.ts.map +1 -1
  69. package/dist/daylightSimulation/textSchedule.js +3 -18
  70. package/dist/daylightSimulation/textSchedule.js.map +1 -1
  71. package/dist/daylightSimulation/types.d.ts +1 -0
  72. package/dist/daylightSimulation/types.d.ts.map +1 -1
  73. package/dist/daylightSimulation/types.js.map +1 -1
  74. package/dist/deviceControl/lightControl.d.ts +2 -5
  75. package/dist/deviceControl/lightControl.d.ts.map +1 -1
  76. package/dist/deviceControl/lightControl.js +38 -23
  77. package/dist/deviceControl/lightControl.js.map +1 -1
  78. package/dist/deviceControl/types.d.ts +33 -1
  79. package/dist/deviceControl/types.d.ts.map +1 -1
  80. package/dist/test/MockLightServer.d.ts.map +1 -1
  81. package/dist/test/MockLightServer.js +6 -5
  82. package/dist/test/MockLightServer.js.map +1 -1
  83. package/package.json +1 -1
  84. package/dist/commands/deviceControl/firmware.d.ts +0 -5
  85. package/dist/commands/deviceControl/firmware.d.ts.map +0 -1
  86. package/dist/commands/deviceControl/firmware.js +0 -68
  87. package/dist/commands/deviceControl/firmware.js.map +0 -1
@@ -2,9 +2,11 @@ import chalk from 'chalk';
2
2
  import { addStandardOptions, runDeviceAction } from '../cmdUtils.js';
3
3
  export function registerInfo(program, deps) {
4
4
  const { asyncCommand } = deps;
5
- const info = program.command('info').description('Get detailed device info');
6
- addStandardOptions(info.command('device <device>').description('Get device hardware/firmware info')).action(asyncCommand(handleDeviceInfo(deps)));
7
- addStandardOptions(info.command('protocol').description('Get supported protocol versions')).action(asyncCommand(handleProtocolInfo(deps)));
5
+ const info = program.command('info [device]').description('Get detailed device info');
6
+ addStandardOptions(info).action(asyncCommand(handleDeviceInfo(deps)));
7
+ const firmware = program.command('firmware').description('Firmware management');
8
+ addStandardOptions(firmware.command('check <device>').description('Get device firmware info')).action(asyncCommand(handleFirmwareInfo(deps)));
9
+ addStandardOptions(firmware.command('update <device>').description('Update device firmware')).action(asyncCommand(handleFirmwareUpdate(deps)));
8
10
  }
9
11
  function handleDeviceInfo(deps) {
10
12
  return async (deviceQuery, options) => {
@@ -12,45 +14,129 @@ function handleDeviceInfo(deps) {
12
14
  deps,
13
15
  options,
14
16
  deviceQuery,
15
- actionName: 'get device info',
17
+ actionName: 'get device capabilities',
16
18
  }, (device, controller) => {
17
19
  return new Promise((resolve) => {
18
20
  const nodeId = device.node_id;
19
- // Parallel requests? Or sequential. Sequential is safer.
20
- controller.getDeviceInfo(nodeId, (success, message, info) => {
21
+ controller.getNodeConfig(nodeId, (success, message, data) => {
21
22
  if (success) {
22
- controller.getFirmwareVersion(nodeId, (fwSuccess, _, fwInfo) => {
23
- const displayName = device.device_name || device.name || 'Unknown';
24
- console.log(chalk.blue(`Information for ${displayName}:`));
25
- console.log('Device Info:', JSON.stringify(info, null, 2));
26
- if (fwSuccess) {
27
- console.log('Firmware:', JSON.stringify(fwInfo, null, 2));
28
- }
29
- resolve();
30
- });
23
+ displayConfig(device, data, options);
31
24
  }
32
25
  else {
33
- console.error(chalk.red(`✗ Failed to get device info: ${message}`));
26
+ console.error(chalk.red(`✗ Failed to get device capabilities for ${device.name || device.node_id}: ${message}`));
27
+ }
28
+ resolve();
29
+ });
30
+ });
31
+ }, async (controller) => {
32
+ const devices = controller.getDevices();
33
+ if (devices.length === 0) {
34
+ console.log(chalk.yellow('No devices found.'));
35
+ return;
36
+ }
37
+ for (const device of devices) {
38
+ await new Promise((resolve) => {
39
+ const nodeId = device.node_id;
40
+ controller.getNodeConfig(nodeId, (success, message, data) => {
41
+ if (success) {
42
+ displayConfig(device, data, options);
43
+ console.log(''); // Add a newline between devices
44
+ }
45
+ else {
46
+ console.error(chalk.red(`✗ Failed to get device capabilities for ${device.name || device.node_id}: ${message}`));
47
+ }
34
48
  resolve();
49
+ });
50
+ });
51
+ }
52
+ });
53
+ };
54
+ }
55
+ function displayConfig(device, data, _options) {
56
+ const nodeId = device.node_id;
57
+ const displayName = device.device_name || device.name || 'Unknown';
58
+ console.log(chalk.blue(`Capabilities for ${displayName} (${nodeId}):`));
59
+ let config = data;
60
+ if (config && typeof config === 'object' && 'data' in config) {
61
+ config = config.data;
62
+ }
63
+ // Normalize CCT range keys from Amaran API if needed
64
+ if (config && typeof config === 'object') {
65
+ if (config.product_cct_min !== undefined && config.cct_min === undefined) {
66
+ config.cct_min = config.product_cct_min;
67
+ }
68
+ if (config.product_cct_max !== undefined && config.cct_max === undefined) {
69
+ config.cct_max = config.product_cct_max;
70
+ }
71
+ }
72
+ if (config) {
73
+ // Formatting helper for booleans
74
+ const fmtBool = (val) => (val ? chalk.green('Yes') : chalk.red('No'));
75
+ console.log(chalk.bold('\nLighting Support:'));
76
+ const cctRange = config.cct_support ? ` (${config.cct_min}K - ${config.cct_max}K)` : '';
77
+ console.log(` Correlated Color Temperature (CCT): ${fmtBool(config.cct_support)}${cctRange}`);
78
+ console.log(` Hue, Saturation, Intensity (HSI): ${fmtBool(config.hsi_support)}`);
79
+ console.log(` Red, Green, Blue (RGB): ${fmtBool(config.rgb_support)}`);
80
+ const gmRange = config.gm_support ? ` (${config.gm_min} - ${config.gm_max})` : '';
81
+ console.log(` Green-Magenta (GM): ${fmtBool(config.gm_support)}${gmRange}`);
82
+ console.log(chalk.bold('\nAdvanced Features:'));
83
+ console.log(` CCT Extension: ${fmtBool(config.cct_extension_support)}`);
84
+ if (config.cct_extension_support) {
85
+ console.log(` CCT Ext Enabled: ${fmtBool(config.cct_extension_enabled)}`);
86
+ console.log(` CCT Ext Range: ${config.cct_extension_min}K - ${config.cct_extension_max}K`);
87
+ }
88
+ console.log(` Advanced HSI: ${fmtBool(config.advanced_hsi_support)}`);
89
+ console.log(` GM v2 Support: ${fmtBool(config.gm_v2_support)}`);
90
+ }
91
+ else {
92
+ console.log(chalk.yellow(' No capability data returned.'));
93
+ }
94
+ }
95
+ function handleFirmwareInfo(deps) {
96
+ return async (deviceQuery, options) => {
97
+ return runDeviceAction({
98
+ deps,
99
+ options,
100
+ deviceQuery,
101
+ actionName: 'get firmware info',
102
+ }, (device, controller) => {
103
+ return new Promise((resolve) => {
104
+ controller.getDeviceInfo(device.node_id, (success, message, data) => {
105
+ if (success) {
106
+ console.log(chalk.blue('Firmware Status:'));
107
+ console.log(chalk.gray(' Firmware is up to date'));
108
+ if (options.debug)
109
+ console.log(data);
35
110
  }
111
+ else {
112
+ console.error(chalk.red(`Error getting firmware info: ${message}`));
113
+ }
114
+ resolve();
36
115
  });
37
116
  });
38
117
  }, () => Promise.resolve());
39
118
  };
40
119
  }
41
- function handleProtocolInfo(deps) {
42
- const { createController } = deps;
43
- return async (options) => {
44
- const controller = await createController(options.url, options.clientId, options.debug);
45
- controller.getProtocolVersions((success, message, data) => {
46
- if (success) {
47
- console.log(chalk.blue('Supported Protocol Versions:'), data);
48
- }
49
- else {
50
- console.error(chalk.red(`Error getting protocols: ${message}`));
51
- }
52
- controller.disconnect();
53
- });
120
+ function handleFirmwareUpdate(deps) {
121
+ return async (deviceQuery, options) => {
122
+ return runDeviceAction({
123
+ deps,
124
+ options,
125
+ deviceQuery,
126
+ actionName: 'update firmware',
127
+ }, (device, controller) => {
128
+ return new Promise((resolve) => {
129
+ controller.updateFirmware(device.node_id, (success, message, data) => {
130
+ if (success) {
131
+ console.log(chalk.green('Firmware update started:'), data);
132
+ }
133
+ else {
134
+ console.error(chalk.red(`Error starting firmware update: ${message}`));
135
+ }
136
+ resolve();
137
+ });
138
+ });
139
+ }, () => Promise.resolve());
54
140
  };
55
141
  }
56
142
  export default registerInfo;
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/info.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"intensity.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/intensity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAQpE;AAuCD,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"intensity.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/intensity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAUpE;AAqID,eAAe,iBAAiB,CAAC"}
@@ -3,11 +3,95 @@ import { addStandardOptions, runDeviceAction } from '../cmdUtils.js';
3
3
  export function registerIntensity(program, deps) {
4
4
  const { asyncCommand } = deps;
5
5
  addStandardOptions(program
6
- .command('intensity <value> [device]')
7
- .description('Set light intensity (0-100). Omit device or use "all" to set all lights.')).action(asyncCommand(handleIntensity(deps)));
6
+ .command('intensity [value] [device]')
7
+ .description('Set or get light intensity (0-100). Omit device or use "all" for all lights.'))
8
+ .option('-g, --get', 'Get current intensity instead of setting')
9
+ .action(asyncCommand(handleIntensity(deps)));
8
10
  }
9
11
  function handleIntensity(deps) {
10
12
  return async (intensityStr, deviceQuery, options) => {
13
+ if (options.get) {
14
+ return runDeviceAction({
15
+ deps,
16
+ options,
17
+ deviceQuery,
18
+ actionName: 'get intensity',
19
+ }, async (device, controller) => {
20
+ return new Promise((resolve) => {
21
+ controller.getIntensity(device.node_id, (success, message, data) => {
22
+ if (!success)
23
+ throw new Error(message);
24
+ const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
25
+ // Handle potential nesting: { data: { data: 500 } }
26
+ let state = data;
27
+ if (state && typeof state === 'object' && 'data' in state) {
28
+ const innerData = state.data;
29
+ // If nested data is just a number, that's our intensity
30
+ if (typeof innerData === 'number') {
31
+ state = innerData;
32
+ }
33
+ else {
34
+ // Fallback if it's an object inside data
35
+ state = innerData;
36
+ }
37
+ }
38
+ // biome-ignore lint/suspicious/noExplicitAny: Data from server is dynamic
39
+ const s = state;
40
+ // Some servers return the value directly
41
+ const intensityVal = typeof state === 'number' ? state : s?.intensity;
42
+ const displayIntensity = typeof intensityVal === 'number' ? intensityVal / 10 : 'unknown';
43
+ console.log(chalk.green(`✓ ${displayName}: ${displayIntensity}%`));
44
+ resolve();
45
+ });
46
+ });
47
+ }, async (controller) => {
48
+ const devices = controller.getDevices();
49
+ if (devices.length === 0) {
50
+ console.log(chalk.yellow('No devices found'));
51
+ return;
52
+ }
53
+ // Filter for light devices only, skipping groups like 'ALL'
54
+ const lightDevices = devices.filter((d) => d.node_id?.includes('-') && d.node_id !== '00000000000000000000000000000000');
55
+ if (lightDevices.length === 0) {
56
+ console.log(chalk.yellow('No light devices found'));
57
+ return;
58
+ }
59
+ for (const device of lightDevices) {
60
+ if (device.node_id) {
61
+ await new Promise((resolve) => {
62
+ controller.getIntensity(device.node_id, (success, message, data) => {
63
+ const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
64
+ if (success) {
65
+ let state = data;
66
+ if (state && typeof state === 'object' && 'data' in state) {
67
+ const innerData = state.data;
68
+ if (typeof innerData === 'number') {
69
+ state = innerData;
70
+ }
71
+ else {
72
+ state = innerData;
73
+ }
74
+ }
75
+ // biome-ignore lint/suspicious/noExplicitAny: Data from server is dynamic
76
+ const s = state;
77
+ const intensityVal = typeof state === 'number' ? state : s?.intensity;
78
+ const displayIntensity = typeof intensityVal === 'number' ? intensityVal / 10 : 'unknown';
79
+ console.log(chalk.green(`✓ ${displayName}: ${displayIntensity}%`));
80
+ }
81
+ else {
82
+ console.error(chalk.red(`✗ ${displayName}: Failed to get intensity: ${message}`));
83
+ }
84
+ resolve();
85
+ });
86
+ });
87
+ }
88
+ }
89
+ });
90
+ }
91
+ if (!intensityStr) {
92
+ console.error(chalk.red('Error: value is required unless using --get'));
93
+ process.exit(1);
94
+ }
11
95
  const intensity = parseInt(intensityStr, 10);
12
96
  if (Number.isNaN(intensity) || intensity < 0 || intensity > 100) {
13
97
  console.error(chalk.red('Intensity must be a number between 0 and 100'));
@@ -1 +1 @@
1
- {"version":3,"file":"intensity.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/intensity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,IAAiB;IACnE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,kBAAkB,CAChB,OAAO;SACJ,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,0EAA0E,CAAC,CAC3F,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,IAAiB;IACxC,OAAO,KAAK,EAAE,YAAoB,EAAE,WAA+B,EAAE,OAAuB,EAAE,EAAE;QAC9F,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,+CAA+C;QAC/C,MAAM,YAAY,GAAG,SAAS,GAAG,EAAE,CAAC;QAEpC,OAAO,eAAe,CACpB;YACE,IAAI;YACJ,OAAO;YACP,WAAW;YACX,UAAU,EAAE,eAAe;YAC3B,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAC5B,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,qBAAqB,SAAS,GAAG;SACtH,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,OAAiB,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oBACnF,IAAI,CAAC,OAAO;wBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvC,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EACD,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,MAAM,UAAU,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;gBAC3E,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"intensity.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/intensity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAiBhE;AAmFD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAqBhE;AAsLD,eAAe,aAAa,CAAC"}
@@ -1,56 +1,147 @@
1
+ import chalk from 'chalk';
1
2
  import { addStandardOptions, runDeviceAction } from '../cmdUtils.js';
2
3
  export function registerPower(program, deps) {
3
4
  const { asyncCommand } = deps;
4
5
  // on
5
- addStandardOptions(program.command('on [device]').description('Turn a light on (or all lights if no device specified)')).action(asyncCommand(handleOn(deps)));
6
+ addStandardOptions(program.command('on [device]').description('Turn a light on or get status (or all lights if no device specified)'))
7
+ .option('-g, --get', 'Get current status instead of turning on')
8
+ .action(asyncCommand(handleOn(deps)));
6
9
  // off
7
- addStandardOptions(program.command('off [device]').description('Turn a light off (or all lights if no device specified)')).action(asyncCommand(handleOff(deps)));
10
+ addStandardOptions(program.command('off [device]').description('Turn a light off or get status (or all lights if no device specified)'))
11
+ .option('-g, --get', 'Get current status instead of turning off')
12
+ .action(asyncCommand(handleOff(deps)));
8
13
  // toggle
9
14
  addStandardOptions(program.command('toggle [device]').description('Toggle a light on/off (or all lights if no device specified)')).action(asyncCommand(handleToggle(deps)));
10
15
  }
11
- function handleOn(deps) {
12
- return (deviceQuery, options) => runDeviceAction({
16
+ async function getPowerStatus(deps, deviceQuery, options, _actionName) {
17
+ return runDeviceAction({
13
18
  deps,
14
19
  options,
15
20
  deviceQuery,
16
- actionName: 'turn on light',
17
- onSuccess: (device) => `✓ ${device.device_name || device.name || device.id || device.node_id || 'Unknown'} turned on`,
18
- }, (device, controller) => {
21
+ actionName: 'get power status',
22
+ }, async (device, controller) => {
19
23
  return new Promise((resolve) => {
20
- controller.turnLightOn(device.node_id, (success, message) => {
24
+ controller.getLightSleepStatus(device.node_id, (success, message, data) => {
21
25
  if (!success)
22
26
  throw new Error(message);
27
+ const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
28
+ // Handle potential nesting: { data: { data: false } } or { data: { sleep: false } }
29
+ let state = data;
30
+ if (state && typeof state === 'object' && 'data' in state) {
31
+ const innerData = state.data;
32
+ if (typeof innerData === 'boolean') {
33
+ state = { sleep: innerData };
34
+ }
35
+ else {
36
+ state = innerData;
37
+ }
38
+ }
39
+ // biome-ignore lint/suspicious/noExplicitAny: Data from server is dynamic
40
+ const s = state;
41
+ // sleep = true means OFF, sleep = false means ON
42
+ const sleepVal = typeof state === 'boolean' ? state : s?.sleep;
43
+ const status = sleepVal === undefined ? 'Unknown' : sleepVal ? 'OFF' : 'ON';
44
+ console.log(chalk.green(`✓ ${displayName}: ${status}`));
23
45
  resolve();
24
46
  });
25
47
  });
26
48
  }, async (controller) => {
27
- await controller.turnOnAllLights((success, message) => {
28
- if (!success)
29
- console.error(`✗ Failed to turn on light: ${message}`);
30
- });
49
+ const devices = controller.getDevices();
50
+ if (devices.length === 0) {
51
+ console.log(chalk.yellow('No devices found'));
52
+ return;
53
+ }
54
+ // Filter for light devices only, skipping groups like 'ALL'
55
+ const lightDevices = devices.filter((d) => d.node_id?.includes('-') && d.node_id !== '00000000000000000000000000000000');
56
+ if (lightDevices.length === 0) {
57
+ console.log(chalk.yellow('No light devices found'));
58
+ return;
59
+ }
60
+ for (const device of lightDevices) {
61
+ if (device.node_id) {
62
+ await new Promise((resolve) => {
63
+ controller.getLightSleepStatus(device.node_id, (success, message, data) => {
64
+ const displayName = device.device_name || device.name || device.id || device.node_id || 'Unknown';
65
+ if (success) {
66
+ let state = data;
67
+ if (state && typeof state === 'object' && 'data' in state) {
68
+ const innerData = state.data;
69
+ if (typeof innerData === 'boolean') {
70
+ state = { sleep: innerData };
71
+ }
72
+ else {
73
+ state = innerData;
74
+ }
75
+ }
76
+ // biome-ignore lint/suspicious/noExplicitAny: Data from server is dynamic
77
+ const s = state;
78
+ const sleepVal = typeof state === 'boolean' ? state : s?.sleep;
79
+ const status = sleepVal === undefined ? 'Unknown' : sleepVal ? 'OFF' : 'ON';
80
+ console.log(chalk.green(`✓ ${displayName}: ${status}`));
81
+ }
82
+ else {
83
+ console.error(chalk.red(`✗ ${displayName}: Failed to get status: ${message}`));
84
+ }
85
+ resolve();
86
+ });
87
+ });
88
+ }
89
+ }
31
90
  });
32
91
  }
33
- function handleOff(deps) {
34
- return (deviceQuery, options) => runDeviceAction({
35
- deps,
36
- options,
37
- deviceQuery,
38
- actionName: 'turn off light',
39
- onSuccess: (device) => `✓ ${device.device_name || device.name || device.id || device.node_id || 'Unknown'} turned off`,
40
- }, (device, controller) => {
41
- return new Promise((resolve) => {
42
- controller.turnLightOff(device.node_id, (success, message) => {
92
+ function handleOn(deps) {
93
+ return async (deviceQuery, options) => {
94
+ if (options.get) {
95
+ return getPowerStatus(deps, deviceQuery, options, 'get status');
96
+ }
97
+ return runDeviceAction({
98
+ deps,
99
+ options,
100
+ deviceQuery,
101
+ actionName: 'turn on light',
102
+ onSuccess: (device) => `✓ ${device.device_name || device.name || device.id || device.node_id || 'Unknown'} turned on`,
103
+ }, (device, controller) => {
104
+ return new Promise((resolve) => {
105
+ controller.turnLightOn(device.node_id, (success, message) => {
106
+ if (!success)
107
+ throw new Error(message);
108
+ resolve();
109
+ });
110
+ });
111
+ }, async (controller) => {
112
+ await controller.turnOnAllLights((success, message) => {
43
113
  if (!success)
44
- throw new Error(message);
45
- resolve();
114
+ console.error(`✗ Failed to turn on light: ${message}`);
46
115
  });
47
116
  });
48
- }, async (controller) => {
49
- await controller.turnOffAllLights((success, message) => {
50
- if (!success)
51
- console.error(`✗ Failed to turn off light: ${message}`);
117
+ };
118
+ }
119
+ function handleOff(deps) {
120
+ return async (deviceQuery, options) => {
121
+ if (options.get) {
122
+ return getPowerStatus(deps, deviceQuery, options, 'get status');
123
+ }
124
+ return runDeviceAction({
125
+ deps,
126
+ options,
127
+ deviceQuery,
128
+ actionName: 'turn off light',
129
+ onSuccess: (device) => `✓ ${device.device_name || device.name || device.id || device.node_id || 'Unknown'} turned off`,
130
+ }, (device, controller) => {
131
+ return new Promise((resolve) => {
132
+ controller.turnLightOff(device.node_id, (success, message) => {
133
+ if (!success)
134
+ throw new Error(message);
135
+ resolve();
136
+ });
137
+ });
138
+ }, async (controller) => {
139
+ await controller.turnOffAllLights((success, message) => {
140
+ if (!success)
141
+ console.error(`✗ Failed to turn off light: ${message}`);
142
+ });
52
143
  });
53
- });
144
+ };
54
145
  }
55
146
  function handleToggle(deps) {
56
147
  return (deviceQuery, options) => runDeviceAction({
@@ -1 +1 @@
1
- {"version":3,"file":"power.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"power.js","sourceRoot":"","sources":["../../../src/commands/deviceControl/power.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,IAAiB;IAC/D,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,KAAK;IACL,kBAAkB,CAChB,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,sEAAsE,CAAC,CACnH;SACE,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM;IACN,kBAAkB,CAChB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,uEAAuE,CAAC,CACrH;SACE,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzC,SAAS;IACT,kBAAkB,CAChB,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,8DAA8D,CAAC,CAC/G,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAiB,EACjB,WAA+B,EAC/B,OAAuB,EACvB,WAAmB;IAEnB,OAAO,eAAe,CACpB;QACE,IAAI;QACJ,OAAO;QACP,WAAW;QACX,UAAU,EAAE,kBAAkB;KAC/B,EACD,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBAClF,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;gBAElG,oFAAoF;gBACpF,IAAI,KAAK,GAAG,IAAI,CAAC;gBACjB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC1D,MAAM,SAAS,GAAI,KAA2B,CAAC,IAAI,CAAC;oBACpD,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE,CAAC;wBACnC,KAAK,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,SAAS,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAED,0EAA0E;gBAC1E,MAAM,CAAC,GAAG,KAAY,CAAC;gBACvB,iDAAiD;gBACjD,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;gBAC/D,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,WAAW,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,EACD,KAAK,EAAE,UAAU,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,4DAA4D;QAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,kCAAkC,CACpF,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;wBAClF,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;wBAClG,IAAI,OAAO,EAAE,CAAC;4BACZ,IAAI,KAAK,GAAG,IAAI,CAAC;4BACjB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gCAC1D,MAAM,SAAS,GAAI,KAA2B,CAAC,IAAI,CAAC;gCACpD,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE,CAAC;oCACnC,KAAK,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gCAC/B,CAAC;qCAAM,CAAC;oCACN,KAAK,GAAG,SAAS,CAAC;gCACpB,CAAC;4BACH,CAAC;4BACD,0EAA0E;4BAC1E,MAAM,CAAC,GAAG,KAAY,CAAC;4BACvB,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;4BAC/D,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;4BAE5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,WAAW,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;wBAC1D,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,2BAA2B,OAAO,EAAE,CAAC,CAAC,CAAC;wBACjF,CAAC;wBACD,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAiB;IACjC,OAAO,KAAK,EAAE,WAA+B,EAAE,OAAuB,EAAE,EAAE;QACxE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,eAAe,CACpB;YACE,IAAI;YACJ,OAAO;YACP,WAAW;YACX,UAAU,EAAE,eAAe;YAC3B,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAC5B,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,YAAY;SACjG,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,OAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oBACpE,IAAI,CAAC,OAAO;wBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvC,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EACD,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;gBACpD,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAiB;IAClC,OAAO,KAAK,EAAE,WAA+B,EAAE,OAAuB,EAAE,EAAE;QACxE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,eAAe,CACpB;YACE,IAAI;YACJ,OAAO;YACP,WAAW;YACX,UAAU,EAAE,gBAAgB;YAC5B,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAC5B,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,aAAa;SAClG,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,OAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oBACrE,IAAI,CAAC,OAAO;wBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvC,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EACD,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;gBACrD,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAiB;IACrC,OAAO,CAAC,WAA+B,EAAE,OAAuB,EAAE,EAAE,CAClE,eAAe,CACb;QACE,IAAI;QACJ,OAAO;QACP,WAAW;QACX,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAC5B,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,UAAU;KAC/F,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,OAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;gBACpE,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,EACD,KAAK,EAAE,UAAU,EAAE,EAAE;QACnB,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACpD,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACN,CAAC;AAED,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,8BAA8B,CAAC;AAGxF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAMjE;AA+CD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/deviceControl/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAsC,MAAM,8BAA8B,CAAC;AAGpG,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAMjE;AAmPD,eAAe,cAAc,CAAC"}