@switchbot/openapi-cli 1.2.0 → 1.3.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/dist/commands/device-meta.d.ts +2 -0
- package/dist/commands/device-meta.js +142 -0
- package/dist/commands/device-meta.js.map +1 -0
- package/dist/commands/devices.js +42 -9
- package/dist/commands/devices.js.map +1 -1
- package/dist/commands/expand.d.ts +2 -0
- package/dist/commands/expand.js +192 -0
- package/dist/commands/expand.js.map +1 -0
- package/dist/commands/plan.d.ts +2 -1
- package/dist/commands/plan.js +25 -13
- package/dist/commands/plan.js.map +1 -1
- package/dist/devices/device-meta.d.ts +15 -0
- package/dist/devices/device-meta.js +52 -0
- package/dist/devices/device-meta.js.map +1 -0
- package/dist/utils/name-resolver.d.ts +17 -0
- package/dist/utils/name-resolver.js +78 -0
- package/dist/utils/name-resolver.js.map +1 -0
- package/dist/utils/output.d.ts +7 -0
- package/dist/utils/output.js +29 -0
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/string.d.ts +2 -0
- package/dist/utils/string.js +23 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { handleError, isJsonMode, printJson, printTable, UsageError } from '../utils/output.js';
|
|
2
|
+
import { loadDeviceMeta, setDeviceMeta, clearDeviceMeta, getDeviceMeta, getMetaFilePath, } from '../devices/device-meta.js';
|
|
3
|
+
export function registerDevicesMetaCommand(devices) {
|
|
4
|
+
const meta = devices
|
|
5
|
+
.command('meta')
|
|
6
|
+
.description('Manage local device metadata (alias, hide, notes) stored in ~/.switchbot/device-meta.json');
|
|
7
|
+
// switchbot devices meta set <deviceId>
|
|
8
|
+
meta
|
|
9
|
+
.command('set')
|
|
10
|
+
.description('Set local metadata for a device (alias, hide/show, notes)')
|
|
11
|
+
.argument('<deviceId>', 'Target device ID')
|
|
12
|
+
.option('--alias <name>', 'Local alias for the device (used with --name flag)')
|
|
13
|
+
.option('--hide', 'Hide this device from "devices list"')
|
|
14
|
+
.option('--show', 'Un-hide this device')
|
|
15
|
+
.option('--notes <text>', 'Freeform notes shown in "devices describe"')
|
|
16
|
+
.action((deviceId, options) => {
|
|
17
|
+
try {
|
|
18
|
+
if (options.hide && options.show) {
|
|
19
|
+
throw new UsageError('--hide and --show cannot be used together.');
|
|
20
|
+
}
|
|
21
|
+
if (!options.alias && !options.hide && !options.show && !options.notes) {
|
|
22
|
+
throw new UsageError('Specify at least one of: --alias, --hide, --show, --notes');
|
|
23
|
+
}
|
|
24
|
+
const patch = {};
|
|
25
|
+
if (options.alias !== undefined)
|
|
26
|
+
patch.alias = options.alias;
|
|
27
|
+
if (options.notes !== undefined)
|
|
28
|
+
patch.notes = options.notes;
|
|
29
|
+
if (options.hide)
|
|
30
|
+
patch.hidden = true;
|
|
31
|
+
if (options.show)
|
|
32
|
+
patch.hidden = false;
|
|
33
|
+
setDeviceMeta(deviceId, patch);
|
|
34
|
+
const updated = getDeviceMeta(deviceId);
|
|
35
|
+
if (isJsonMode()) {
|
|
36
|
+
printJson({ ok: true, deviceId, meta: updated });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.log(`✓ Metadata updated for ${deviceId}`);
|
|
40
|
+
if (updated?.alias)
|
|
41
|
+
console.log(` alias: ${updated.alias}`);
|
|
42
|
+
if (updated?.hidden)
|
|
43
|
+
console.log(` hidden: true`);
|
|
44
|
+
if (updated?.notes)
|
|
45
|
+
console.log(` notes: ${updated.notes}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
handleError(error);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
// switchbot devices meta get <deviceId>
|
|
53
|
+
meta
|
|
54
|
+
.command('get')
|
|
55
|
+
.description('Show local metadata for a device')
|
|
56
|
+
.argument('<deviceId>', 'Target device ID')
|
|
57
|
+
.action((deviceId) => {
|
|
58
|
+
try {
|
|
59
|
+
const entry = getDeviceMeta(deviceId);
|
|
60
|
+
if (!entry) {
|
|
61
|
+
if (isJsonMode()) {
|
|
62
|
+
printJson({ deviceId, meta: null });
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.log(`No local metadata for ${deviceId}`);
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (isJsonMode()) {
|
|
70
|
+
printJson({ deviceId, meta: entry });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
if (entry.alias)
|
|
74
|
+
console.log(`alias: ${entry.alias}`);
|
|
75
|
+
if (entry.hidden !== undefined)
|
|
76
|
+
console.log(`hidden: ${entry.hidden}`);
|
|
77
|
+
if (entry.notes)
|
|
78
|
+
console.log(`notes: ${entry.notes}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
handleError(error);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// switchbot devices meta list
|
|
86
|
+
meta
|
|
87
|
+
.command('list')
|
|
88
|
+
.description('List all devices with local metadata')
|
|
89
|
+
.option('--hidden-only', 'Show only hidden devices')
|
|
90
|
+
.action((options) => {
|
|
91
|
+
try {
|
|
92
|
+
const file = loadDeviceMeta();
|
|
93
|
+
let entries = Object.entries(file.devices);
|
|
94
|
+
if (options.hiddenOnly)
|
|
95
|
+
entries = entries.filter(([, m]) => m.hidden);
|
|
96
|
+
if (entries.length === 0) {
|
|
97
|
+
if (isJsonMode()) {
|
|
98
|
+
printJson([]);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.log('No local metadata entries.');
|
|
102
|
+
console.log(`File: ${getMetaFilePath()}`);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (isJsonMode()) {
|
|
107
|
+
printJson(entries.map(([id, m]) => ({ deviceId: id, ...m })));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const rows = entries.map(([id, m]) => [
|
|
111
|
+
id,
|
|
112
|
+
m.alias ?? '—',
|
|
113
|
+
m.hidden ? 'yes' : '—',
|
|
114
|
+
m.notes ?? '—',
|
|
115
|
+
]);
|
|
116
|
+
printTable(['deviceId', 'alias', 'hidden', 'notes'], rows);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
handleError(error);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// switchbot devices meta clear <deviceId>
|
|
123
|
+
meta
|
|
124
|
+
.command('clear')
|
|
125
|
+
.description('Remove all local metadata for a device')
|
|
126
|
+
.argument('<deviceId>', 'Target device ID')
|
|
127
|
+
.action((deviceId) => {
|
|
128
|
+
try {
|
|
129
|
+
clearDeviceMeta(deviceId);
|
|
130
|
+
if (isJsonMode()) {
|
|
131
|
+
printJson({ ok: true, deviceId });
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(`✓ Metadata cleared for ${deviceId}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
handleError(error);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=device-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-meta.js","sourceRoot":"","sources":["../../src/commands/device-meta.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/devices.js
CHANGED
|
@@ -2,10 +2,14 @@ import { printTable, printKeyValue, printJson, isJsonMode, handleError, UsageErr
|
|
|
2
2
|
import { resolveFormat, resolveFields, renderRows } from '../utils/format.js';
|
|
3
3
|
import { findCatalogEntry, getEffectiveCatalog } from '../devices/catalog.js';
|
|
4
4
|
import { getCachedDevice } from '../devices/cache.js';
|
|
5
|
+
import { loadDeviceMeta } from '../devices/device-meta.js';
|
|
6
|
+
import { resolveDeviceId } from '../utils/name-resolver.js';
|
|
5
7
|
import { fetchDeviceList, fetchDeviceStatus, executeCommand, describeDevice, validateCommand, isDestructiveCommand, getDestructiveReason, buildHubLocationMap, DeviceNotFoundError, } from '../lib/devices.js';
|
|
6
8
|
import { registerBatchCommand } from './batch.js';
|
|
7
9
|
import { registerWatchCommand } from './watch.js';
|
|
8
10
|
import { registerExplainCommand } from './explain.js';
|
|
11
|
+
import { registerExpandCommand } from './expand.js';
|
|
12
|
+
import { registerDevicesMetaCommand } from './device-meta.js';
|
|
9
13
|
import { isDryRun } from '../utils/flags.js';
|
|
10
14
|
export function registerDevicesCommand(program) {
|
|
11
15
|
const devices = program
|
|
@@ -64,22 +68,26 @@ Examples:
|
|
|
64
68
|
$ switchbot devices list --json | jq '[.deviceList[], .infraredRemoteList[]] | group_by(.familyName)'
|
|
65
69
|
`)
|
|
66
70
|
.option('--wide', 'Show all columns (controlType, family, roomID, room, hub, cloud)')
|
|
71
|
+
.option('--show-hidden', 'Include devices hidden via "devices meta set --hide"')
|
|
67
72
|
.action(async (options) => {
|
|
68
73
|
try {
|
|
69
74
|
const body = await fetchDeviceList();
|
|
70
75
|
const { deviceList, infraredRemoteList } = body;
|
|
71
76
|
const fmt = resolveFormat();
|
|
77
|
+
const deviceMeta = loadDeviceMeta();
|
|
72
78
|
if (fmt === 'json' && process.argv.includes('--json')) {
|
|
73
79
|
printJson(body);
|
|
74
80
|
return;
|
|
75
81
|
}
|
|
76
82
|
const hubLocation = buildHubLocationMap(deviceList);
|
|
77
83
|
const narrowHeaders = ['deviceId', 'deviceName', 'type', 'category'];
|
|
78
|
-
const wideHeaders = ['deviceId', 'deviceName', 'type', 'category', 'controlType', 'family', 'roomID', 'room', 'hub', 'cloud'];
|
|
84
|
+
const wideHeaders = ['deviceId', 'deviceName', 'type', 'category', 'controlType', 'family', 'roomID', 'room', 'hub', 'cloud', 'alias'];
|
|
79
85
|
const userFields = resolveFields();
|
|
80
86
|
const headers = userFields ? wideHeaders : (options.wide ? wideHeaders : narrowHeaders);
|
|
81
87
|
const rows = [];
|
|
82
88
|
for (const d of deviceList) {
|
|
89
|
+
if (!options.showHidden && deviceMeta.devices[d.deviceId]?.hidden)
|
|
90
|
+
continue;
|
|
83
91
|
rows.push([
|
|
84
92
|
d.deviceId,
|
|
85
93
|
d.deviceName,
|
|
@@ -91,9 +99,12 @@ Examples:
|
|
|
91
99
|
d.roomName || '—',
|
|
92
100
|
!d.hubDeviceId || d.hubDeviceId === '000000000000' ? '—' : d.hubDeviceId,
|
|
93
101
|
d.enableCloudService,
|
|
102
|
+
deviceMeta.devices[d.deviceId]?.alias ?? '—',
|
|
94
103
|
]);
|
|
95
104
|
}
|
|
96
105
|
for (const d of infraredRemoteList) {
|
|
106
|
+
if (!options.showHidden && deviceMeta.devices[d.deviceId]?.hidden)
|
|
107
|
+
continue;
|
|
97
108
|
const inherited = hubLocation.get(d.hubDeviceId);
|
|
98
109
|
rows.push([
|
|
99
110
|
d.deviceId,
|
|
@@ -106,13 +117,15 @@ Examples:
|
|
|
106
117
|
inherited?.room || '—',
|
|
107
118
|
d.hubDeviceId,
|
|
108
119
|
null,
|
|
120
|
+
deviceMeta.devices[d.deviceId]?.alias ?? '—',
|
|
109
121
|
]);
|
|
110
122
|
}
|
|
111
123
|
if (rows.length === 0 && fmt === 'table') {
|
|
112
124
|
console.log('No devices found');
|
|
113
125
|
return;
|
|
114
126
|
}
|
|
115
|
-
|
|
127
|
+
const defaultFields = options.wide ? undefined : narrowHeaders;
|
|
128
|
+
renderRows(wideHeaders, rows, fmt, userFields ?? defaultFields);
|
|
116
129
|
if (fmt === 'table') {
|
|
117
130
|
console.log(`\nTotal: ${deviceList.length} physical device(s), ${infraredRemoteList.length} IR remote device(s)`);
|
|
118
131
|
console.log(`Tip: 'switchbot devices describe <deviceId>' shows a device's supported commands.`);
|
|
@@ -126,7 +139,8 @@ Examples:
|
|
|
126
139
|
devices
|
|
127
140
|
.command('status')
|
|
128
141
|
.description('Query the real-time status of a specific device')
|
|
129
|
-
.argument('
|
|
142
|
+
.argument('[deviceId]', 'Device ID from "devices list" (or use --name)')
|
|
143
|
+
.option('--name <query>', 'Resolve device by fuzzy name instead of deviceId')
|
|
130
144
|
.addHelpText('after', `
|
|
131
145
|
Status fields vary by device type. To discover them without a live call:
|
|
132
146
|
|
|
@@ -137,13 +151,15 @@ all field names returned by your specific device, then narrow with --fields.
|
|
|
137
151
|
|
|
138
152
|
Examples:
|
|
139
153
|
$ switchbot devices status ABC123DEF456
|
|
154
|
+
$ switchbot devices status --name "客厅空调"
|
|
140
155
|
$ switchbot devices status ABC123DEF456 --json
|
|
141
156
|
$ switchbot devices status ABC123DEF456 --format yaml
|
|
142
157
|
$ switchbot devices status ABC123DEF456 --format tsv --fields power,battery
|
|
143
158
|
$ switchbot devices status ABC123DEF456 --json | jq '.battery'
|
|
144
159
|
`)
|
|
145
|
-
.action(async (
|
|
160
|
+
.action(async (deviceIdArg, options) => {
|
|
146
161
|
try {
|
|
162
|
+
const deviceId = resolveDeviceId(deviceIdArg, options.name);
|
|
147
163
|
const body = await fetchDeviceStatus(deviceId);
|
|
148
164
|
const fmt = resolveFormat();
|
|
149
165
|
if (fmt === 'json' && process.argv.includes('--json')) {
|
|
@@ -167,9 +183,10 @@ Examples:
|
|
|
167
183
|
devices
|
|
168
184
|
.command('command')
|
|
169
185
|
.description('Send a control command to a device')
|
|
170
|
-
.argument('
|
|
186
|
+
.argument('[deviceId]', 'Target device ID (or use --name)')
|
|
171
187
|
.argument('<cmd>', 'Command name, e.g. turnOn, turnOff, setColor, setBrightness, setAll, startClean')
|
|
172
188
|
.argument('[parameter]', 'Command parameter. Omit for commands like turnOn/turnOff (defaults to "default"). Format depends on the command (see below).')
|
|
189
|
+
.option('--name <query>', 'Resolve device by fuzzy name instead of deviceId')
|
|
173
190
|
.option('--type <commandType>', 'Command type: "command" for built-in commands (default), "customize" for user-defined IR buttons', 'command')
|
|
174
191
|
.option('--yes', 'Confirm a destructive command (Smart Lock unlock, Garage open, …). --dry-run is always allowed without --yes.')
|
|
175
192
|
.addHelpText('after', `
|
|
@@ -217,7 +234,8 @@ Examples:
|
|
|
217
234
|
$ switchbot devices command ABC123 "MyButton" --type customize
|
|
218
235
|
$ switchbot devices command <lockId> unlock --yes
|
|
219
236
|
`)
|
|
220
|
-
.action(async (
|
|
237
|
+
.action(async (deviceIdArg, cmd, parameter, options) => {
|
|
238
|
+
const deviceId = resolveDeviceId(deviceIdArg, options.name);
|
|
221
239
|
const validation = validateCommand(deviceId, cmd, parameter, options.type);
|
|
222
240
|
if (!validation.ok) {
|
|
223
241
|
const err = validation.error;
|
|
@@ -281,11 +299,20 @@ Examples:
|
|
|
281
299
|
}
|
|
282
300
|
}
|
|
283
301
|
const body = await executeCommand(deviceId, cmd, parsedParam, options.type);
|
|
302
|
+
const isIr = getCachedDevice(deviceId)?.category === 'ir';
|
|
284
303
|
if (isJsonMode()) {
|
|
285
|
-
|
|
304
|
+
const result = { ok: true, command: cmd, deviceId };
|
|
305
|
+
if (isIr)
|
|
306
|
+
result.subKind = 'ir-no-feedback';
|
|
307
|
+
if (body && typeof body === 'object' && Object.keys(body).length > 0) {
|
|
308
|
+
Object.assign(result, body);
|
|
309
|
+
}
|
|
310
|
+
printJson(result);
|
|
286
311
|
return;
|
|
287
312
|
}
|
|
288
313
|
console.log(`✓ Command sent: ${cmd}`);
|
|
314
|
+
if (isIr)
|
|
315
|
+
console.log(' Note: IR command sent — no device confirmation (fire-and-forget).');
|
|
289
316
|
if (body && typeof body === 'object' && Object.keys(body).length > 0) {
|
|
290
317
|
printKeyValue(body);
|
|
291
318
|
}
|
|
@@ -375,7 +402,8 @@ Examples:
|
|
|
375
402
|
devices
|
|
376
403
|
.command('describe')
|
|
377
404
|
.description('Describe a device by ID: metadata + supported commands + status fields (1 API call)')
|
|
378
|
-
.argument('
|
|
405
|
+
.argument('[deviceId]', 'Target device ID (or use --name)')
|
|
406
|
+
.option('--name <query>', 'Resolve device by fuzzy name instead of deviceId')
|
|
379
407
|
.option('--live', 'Also fetch live status values and merge them into capabilities (costs 1 extra API call)')
|
|
380
408
|
.addHelpText('after', `
|
|
381
409
|
Makes a GET /v1.1/devices call to look up the device's type, then prints its
|
|
@@ -405,8 +433,9 @@ Examples:
|
|
|
405
433
|
$ switchbot devices describe ABC123DEF456 --json
|
|
406
434
|
$ switchbot devices describe <lockId> --json | jq '.capabilities.commands[] | select(.destructive)'
|
|
407
435
|
`)
|
|
408
|
-
.action(async (
|
|
436
|
+
.action(async (deviceIdArg, options) => {
|
|
409
437
|
try {
|
|
438
|
+
const deviceId = resolveDeviceId(deviceIdArg, options.name);
|
|
410
439
|
const result = await describeDevice(deviceId, options);
|
|
411
440
|
const { device, isPhysical, typeName, controlType, catalog, capabilities, source, suggestedActions: picks } = result;
|
|
412
441
|
if (isJsonMode()) {
|
|
@@ -485,6 +514,10 @@ Examples:
|
|
|
485
514
|
registerWatchCommand(devices);
|
|
486
515
|
// switchbot devices explain <id>
|
|
487
516
|
registerExplainCommand(devices);
|
|
517
|
+
// switchbot devices expand <id> <cmd> [semantic flags]
|
|
518
|
+
registerExpandCommand(devices);
|
|
519
|
+
// switchbot devices meta set/get/list/clear
|
|
520
|
+
registerDevicesMetaCommand(devices);
|
|
488
521
|
}
|
|
489
522
|
function renderCatalogEntry(entry) {
|
|
490
523
|
console.log(`Type: ${entry.type}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/commands/devices.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/commands/devices.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { handleError, isJsonMode, printJson, UsageError } from '../utils/output.js';
|
|
2
|
+
import { getCachedDevice } from '../devices/cache.js';
|
|
3
|
+
import { executeCommand, isDestructiveCommand, getDestructiveReason } from '../lib/devices.js';
|
|
4
|
+
import { isDryRun } from '../utils/flags.js';
|
|
5
|
+
import { DryRunSignal } from '../api/client.js';
|
|
6
|
+
// ---- Mapping tables --------------------------------------------------------
|
|
7
|
+
const AC_MODE_MAP = { auto: 1, cool: 2, dry: 3, fan: 4, heat: 5 };
|
|
8
|
+
const AC_FAN_MAP = { auto: 1, low: 2, mid: 3, high: 4 };
|
|
9
|
+
const CURTAIN_MODE_MAP = { default: 'ff', performance: '0', silent: '1' };
|
|
10
|
+
const RELAY_MODE_MAP = { toggle: 0, edge: 1, detached: 2, momentary: 3 };
|
|
11
|
+
const BLIND_DIRECTION = new Set(['up', 'down']);
|
|
12
|
+
// ---- Translators -----------------------------------------------------------
|
|
13
|
+
function buildAcSetAll(opts) {
|
|
14
|
+
if (!opts.temp)
|
|
15
|
+
throw new UsageError('--temp is required for setAll (e.g. --temp 26)');
|
|
16
|
+
if (!opts.mode)
|
|
17
|
+
throw new UsageError('--mode is required for setAll (auto|cool|dry|fan|heat)');
|
|
18
|
+
if (!opts.fan)
|
|
19
|
+
throw new UsageError('--fan is required for setAll (auto|low|mid|high)');
|
|
20
|
+
if (!opts.power)
|
|
21
|
+
throw new UsageError('--power is required for setAll (on|off)');
|
|
22
|
+
const temp = parseInt(opts.temp, 10);
|
|
23
|
+
if (!Number.isFinite(temp) || temp < 16 || temp > 30) {
|
|
24
|
+
throw new UsageError(`--temp must be an integer between 16 and 30 (got "${opts.temp}")`);
|
|
25
|
+
}
|
|
26
|
+
const modeInt = AC_MODE_MAP[opts.mode.toLowerCase()];
|
|
27
|
+
if (modeInt === undefined) {
|
|
28
|
+
throw new UsageError(`--mode must be one of: auto, cool, dry, fan, heat (got "${opts.mode}")`);
|
|
29
|
+
}
|
|
30
|
+
const fanInt = AC_FAN_MAP[opts.fan.toLowerCase()];
|
|
31
|
+
if (fanInt === undefined) {
|
|
32
|
+
throw new UsageError(`--fan must be one of: auto, low, mid, high (got "${opts.fan}")`);
|
|
33
|
+
}
|
|
34
|
+
const power = opts.power.toLowerCase();
|
|
35
|
+
if (power !== 'on' && power !== 'off') {
|
|
36
|
+
throw new UsageError(`--power must be "on" or "off" (got "${opts.power}")`);
|
|
37
|
+
}
|
|
38
|
+
return `${temp},${modeInt},${fanInt},${power}`;
|
|
39
|
+
}
|
|
40
|
+
function buildCurtainSetPosition(opts) {
|
|
41
|
+
if (!opts.position)
|
|
42
|
+
throw new UsageError('--position is required (0-100)');
|
|
43
|
+
const pos = parseInt(opts.position, 10);
|
|
44
|
+
if (!Number.isFinite(pos) || pos < 0 || pos > 100) {
|
|
45
|
+
throw new UsageError(`--position must be an integer between 0 and 100 (got "${opts.position}")`);
|
|
46
|
+
}
|
|
47
|
+
const modeStr = opts.mode ? CURTAIN_MODE_MAP[opts.mode.toLowerCase()] : 'ff';
|
|
48
|
+
if (modeStr === undefined) {
|
|
49
|
+
throw new UsageError(`--mode must be one of: default, performance, silent (got "${opts.mode}")`);
|
|
50
|
+
}
|
|
51
|
+
return `0,${modeStr},${pos}`;
|
|
52
|
+
}
|
|
53
|
+
function buildBlindTiltSetPosition(opts) {
|
|
54
|
+
if (!opts.direction)
|
|
55
|
+
throw new UsageError('--direction is required (up|down)');
|
|
56
|
+
if (!opts.angle)
|
|
57
|
+
throw new UsageError('--angle is required (0-100)');
|
|
58
|
+
const dir = opts.direction.toLowerCase();
|
|
59
|
+
if (!BLIND_DIRECTION.has(dir)) {
|
|
60
|
+
throw new UsageError(`--direction must be "up" or "down" (got "${opts.direction}")`);
|
|
61
|
+
}
|
|
62
|
+
const angle = parseInt(opts.angle, 10);
|
|
63
|
+
if (!Number.isFinite(angle) || angle < 0 || angle > 100) {
|
|
64
|
+
throw new UsageError(`--angle must be an integer between 0 and 100 (got "${opts.angle}")`);
|
|
65
|
+
}
|
|
66
|
+
return `${dir};${angle}`;
|
|
67
|
+
}
|
|
68
|
+
function buildRelaySetMode(opts) {
|
|
69
|
+
if (!opts.channel)
|
|
70
|
+
throw new UsageError('--channel is required (1 or 2)');
|
|
71
|
+
if (!opts.mode)
|
|
72
|
+
throw new UsageError('--mode is required (toggle|edge|detached|momentary)');
|
|
73
|
+
const ch = parseInt(opts.channel, 10);
|
|
74
|
+
if (ch !== 1 && ch !== 2) {
|
|
75
|
+
throw new UsageError(`--channel must be 1 or 2 (got "${opts.channel}")`);
|
|
76
|
+
}
|
|
77
|
+
const modeInt = RELAY_MODE_MAP[opts.mode.toLowerCase()];
|
|
78
|
+
if (modeInt === undefined) {
|
|
79
|
+
throw new UsageError(`--mode must be one of: toggle, edge, detached, momentary (got "${opts.mode}")`);
|
|
80
|
+
}
|
|
81
|
+
return `${ch};${modeInt}`;
|
|
82
|
+
}
|
|
83
|
+
// ---- Registration ----------------------------------------------------------
|
|
84
|
+
export function registerExpandCommand(devices) {
|
|
85
|
+
devices
|
|
86
|
+
.command('expand')
|
|
87
|
+
.description('Send a command with semantic flags instead of raw positional parameters')
|
|
88
|
+
.argument('<deviceId>', 'Target device ID from "devices list"')
|
|
89
|
+
.argument('<command>', 'Command name: setAll (AC), setPosition (Curtain/Blind Tilt), setMode (Relay Switch 2)')
|
|
90
|
+
.option('--temp <celsius>', 'AC setAll: temperature in Celsius (16-30)')
|
|
91
|
+
.option('--mode <mode>', 'AC: auto|cool|dry|fan|heat Curtain: default|performance|silent Relay: toggle|edge|detached|momentary')
|
|
92
|
+
.option('--fan <speed>', 'AC setAll: fan speed auto|low|mid|high')
|
|
93
|
+
.option('--power <state>', 'AC setAll: on|off')
|
|
94
|
+
.option('--position <percent>', 'Curtain setPosition: 0-100 (0=open, 100=closed)')
|
|
95
|
+
.option('--direction <dir>', 'Blind Tilt setPosition: up|down')
|
|
96
|
+
.option('--angle <percent>', 'Blind Tilt setPosition: 0-100 (0=closed, 100=open)')
|
|
97
|
+
.option('--channel <n>', 'Relay Switch 2 setMode: channel 1 or 2')
|
|
98
|
+
.option('--yes', 'Confirm destructive commands')
|
|
99
|
+
.addHelpText('after', `
|
|
100
|
+
Translates semantic flags into the wire parameter format, then sends the command.
|
|
101
|
+
|
|
102
|
+
Supported expansions:
|
|
103
|
+
|
|
104
|
+
Air Conditioner — setAll
|
|
105
|
+
--temp 26 --mode cool --fan low --power on → "26,2,2,on"
|
|
106
|
+
--mode values: auto | cool | dry | fan | heat
|
|
107
|
+
--fan values: auto | low | mid | high
|
|
108
|
+
|
|
109
|
+
Curtain / Curtain 3 — setPosition
|
|
110
|
+
--position 50 [--mode silent] → "0,1,50"
|
|
111
|
+
--mode values: default (ff) | performance (0) | silent (1)
|
|
112
|
+
|
|
113
|
+
Blind Tilt — setPosition
|
|
114
|
+
--direction up --angle 50 → "up;50"
|
|
115
|
+
|
|
116
|
+
Relay Switch 2PM — setMode
|
|
117
|
+
--channel 1 --mode edge → "1;1"
|
|
118
|
+
--mode values: toggle (0) | edge (1) | detached (2) | momentary (3)
|
|
119
|
+
|
|
120
|
+
Examples:
|
|
121
|
+
$ switchbot devices expand <acId> setAll --temp 26 --mode cool --fan low --power on
|
|
122
|
+
$ switchbot devices expand <curtainId> setPosition --position 50 --mode silent
|
|
123
|
+
$ switchbot devices expand <blindId> setPosition --direction up --angle 50
|
|
124
|
+
$ switchbot devices expand <relayId> setMode --channel 1 --mode edge
|
|
125
|
+
$ switchbot devices expand <acId> setAll --temp 22 --mode heat --fan auto --power on --dry-run
|
|
126
|
+
`)
|
|
127
|
+
.action(async (deviceId, command, options) => {
|
|
128
|
+
try {
|
|
129
|
+
const cached = getCachedDevice(deviceId);
|
|
130
|
+
const deviceType = cached?.type ?? '';
|
|
131
|
+
let parameter;
|
|
132
|
+
if (command === 'setAll') {
|
|
133
|
+
parameter = buildAcSetAll(options);
|
|
134
|
+
}
|
|
135
|
+
else if (command === 'setPosition') {
|
|
136
|
+
const isBlind = deviceType === 'Blind Tilt';
|
|
137
|
+
parameter = isBlind
|
|
138
|
+
? buildBlindTiltSetPosition(options)
|
|
139
|
+
: buildCurtainSetPosition(options);
|
|
140
|
+
}
|
|
141
|
+
else if (command === 'setMode' && (deviceType.startsWith('Relay Switch') || options.channel !== undefined)) {
|
|
142
|
+
parameter = buildRelaySetMode(options);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
throw new UsageError(`'expand' does not support "${command}" for device type "${deviceType || 'unknown'}". ` +
|
|
146
|
+
`Use 'switchbot devices command' to send raw parameters instead.`);
|
|
147
|
+
}
|
|
148
|
+
if (!options.yes && !isDryRun() && isDestructiveCommand(deviceType, command, 'command')) {
|
|
149
|
+
const reason = getDestructiveReason(deviceType, command, 'command');
|
|
150
|
+
if (isJsonMode()) {
|
|
151
|
+
console.error(JSON.stringify({ error: { code: 2, kind: 'guard',
|
|
152
|
+
message: `"${command}" on ${deviceType || 'device'} is destructive and requires --yes.`,
|
|
153
|
+
hint: reason ? `Re-run with --yes. Reason: ${reason}` : 'Re-run with --yes to confirm.',
|
|
154
|
+
} }));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
console.error(`Refusing to run destructive command "${command}" without --yes.`);
|
|
158
|
+
if (reason)
|
|
159
|
+
console.error(`Reason: ${reason}`);
|
|
160
|
+
}
|
|
161
|
+
process.exit(2);
|
|
162
|
+
}
|
|
163
|
+
const body = await executeCommand(deviceId, command, parameter, 'command');
|
|
164
|
+
const isIr = cached?.category === 'ir';
|
|
165
|
+
if (isJsonMode()) {
|
|
166
|
+
const result = { ok: true, command, deviceId, parameter };
|
|
167
|
+
if (isIr)
|
|
168
|
+
result.subKind = 'ir-no-feedback';
|
|
169
|
+
if (body && typeof body === 'object' && Object.keys(body).length > 0)
|
|
170
|
+
result.response = body;
|
|
171
|
+
printJson(result);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
console.log(`✓ Command sent: ${command} (${parameter})`);
|
|
175
|
+
if (isIr)
|
|
176
|
+
console.log(' Note: IR command sent — no device confirmation (fire-and-forget).');
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error instanceof DryRunSignal) {
|
|
180
|
+
if (isJsonMode()) {
|
|
181
|
+
printJson({ ok: true, dryRun: true, command, deviceId });
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
console.log(`◦ dry-run: ${command} would be sent to ${deviceId}`);
|
|
185
|
+
}
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
handleError(error);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/commands/expand.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/plan.d.ts
CHANGED
package/dist/commands/plan.js
CHANGED
|
@@ -3,6 +3,7 @@ import { printJson, isJsonMode, handleError } from '../utils/output.js';
|
|
|
3
3
|
import { executeCommand, isDestructiveCommand } from '../lib/devices.js';
|
|
4
4
|
import { executeScene } from '../lib/scenes.js';
|
|
5
5
|
import { getCachedDevice } from '../devices/cache.js';
|
|
6
|
+
import { resolveDeviceId } from '../utils/name-resolver.js';
|
|
6
7
|
const PLAN_JSON_SCHEMA = {
|
|
7
8
|
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
8
9
|
$id: 'https://switchbot.dev/plan-1.0.json',
|
|
@@ -19,10 +20,11 @@ const PLAN_JSON_SCHEMA = {
|
|
|
19
20
|
oneOf: [
|
|
20
21
|
{
|
|
21
22
|
type: 'object',
|
|
22
|
-
required: ['type', '
|
|
23
|
+
required: ['type', 'command'],
|
|
23
24
|
properties: {
|
|
24
25
|
type: { const: 'command' },
|
|
25
26
|
deviceId: { type: 'string', minLength: 1 },
|
|
27
|
+
deviceName: { type: 'string', minLength: 1 },
|
|
26
28
|
command: { type: 'string', minLength: 1 },
|
|
27
29
|
parameter: {},
|
|
28
30
|
commandType: { enum: ['command', 'customize'] },
|
|
@@ -78,8 +80,17 @@ export function validatePlan(raw) {
|
|
|
78
80
|
const s = step;
|
|
79
81
|
switch (s.type) {
|
|
80
82
|
case 'command':
|
|
81
|
-
if (typeof s.deviceId !== 'string' || !s.deviceId) {
|
|
82
|
-
issues.push({ path: `${at}.deviceId`, message: 'must be a non-empty string' });
|
|
83
|
+
if (s.deviceId !== undefined && (typeof s.deviceId !== 'string' || !s.deviceId)) {
|
|
84
|
+
issues.push({ path: `${at}.deviceId`, message: 'must be a non-empty string when provided' });
|
|
85
|
+
}
|
|
86
|
+
if (s.deviceName !== undefined && (typeof s.deviceName !== 'string' || !s.deviceName)) {
|
|
87
|
+
issues.push({ path: `${at}.deviceName`, message: 'must be a non-empty string when provided' });
|
|
88
|
+
}
|
|
89
|
+
if (!s.deviceId && !s.deviceName) {
|
|
90
|
+
issues.push({ path: `${at}`, message: 'must have either "deviceId" or "deviceName"' });
|
|
91
|
+
}
|
|
92
|
+
if (s.deviceId && s.deviceName) {
|
|
93
|
+
issues.push({ path: `${at}`, message: '"deviceId" and "deviceName" cannot both be set' });
|
|
83
94
|
}
|
|
84
95
|
if (typeof s.command !== 'string' || !s.command) {
|
|
85
96
|
issues.push({ path: `${at}.command`, message: 'must be a non-empty string' });
|
|
@@ -264,64 +275,65 @@ Workflow:
|
|
|
264
275
|
continue;
|
|
265
276
|
}
|
|
266
277
|
// command
|
|
267
|
-
const
|
|
278
|
+
const resolvedDeviceId = resolveDeviceId(step.deviceId, step.deviceName);
|
|
279
|
+
const deviceType = getCachedDevice(resolvedDeviceId)?.type;
|
|
268
280
|
const commandType = step.commandType ?? 'command';
|
|
269
281
|
const destructive = isDestructiveCommand(deviceType, step.command, commandType);
|
|
270
282
|
if (destructive && !options.yes) {
|
|
271
283
|
out.results.push({
|
|
272
284
|
step: idx,
|
|
273
285
|
type: 'command',
|
|
274
|
-
deviceId:
|
|
286
|
+
deviceId: resolvedDeviceId,
|
|
275
287
|
command: step.command,
|
|
276
288
|
status: 'skipped',
|
|
277
289
|
error: 'destructive — rerun with --yes',
|
|
278
290
|
});
|
|
279
291
|
out.summary.skipped++;
|
|
280
292
|
if (!isJsonMode())
|
|
281
|
-
console.log(` ${idx}. ⚠ skipped ${step.command} on ${
|
|
293
|
+
console.log(` ${idx}. ⚠ skipped ${step.command} on ${resolvedDeviceId} (destructive — pass --yes)`);
|
|
282
294
|
if (!options.continueOnError)
|
|
283
295
|
break;
|
|
284
296
|
continue;
|
|
285
297
|
}
|
|
286
298
|
try {
|
|
287
|
-
await executeCommand(
|
|
299
|
+
await executeCommand(resolvedDeviceId, step.command, step.parameter, commandType);
|
|
288
300
|
out.results.push({
|
|
289
301
|
step: idx,
|
|
290
302
|
type: 'command',
|
|
291
|
-
deviceId:
|
|
303
|
+
deviceId: resolvedDeviceId,
|
|
292
304
|
command: step.command,
|
|
293
305
|
status: 'ok',
|
|
294
306
|
});
|
|
295
307
|
out.summary.ok++;
|
|
296
308
|
if (!isJsonMode())
|
|
297
|
-
console.log(` ${idx}. ✓ ${step.command} on ${
|
|
309
|
+
console.log(` ${idx}. ✓ ${step.command} on ${resolvedDeviceId}`);
|
|
298
310
|
}
|
|
299
311
|
catch (err) {
|
|
300
312
|
if (err instanceof Error && err.name === 'DryRunSignal') {
|
|
301
313
|
out.results.push({
|
|
302
314
|
step: idx,
|
|
303
315
|
type: 'command',
|
|
304
|
-
deviceId:
|
|
316
|
+
deviceId: resolvedDeviceId,
|
|
305
317
|
command: step.command,
|
|
306
318
|
status: 'ok',
|
|
307
319
|
});
|
|
308
320
|
out.summary.ok++;
|
|
309
321
|
if (!isJsonMode())
|
|
310
|
-
console.log(` ${idx}. ◦ dry-run ${step.command} on ${
|
|
322
|
+
console.log(` ${idx}. ◦ dry-run ${step.command} on ${resolvedDeviceId}`);
|
|
311
323
|
continue;
|
|
312
324
|
}
|
|
313
325
|
const msg = err instanceof Error ? err.message : String(err);
|
|
314
326
|
out.results.push({
|
|
315
327
|
step: idx,
|
|
316
328
|
type: 'command',
|
|
317
|
-
deviceId:
|
|
329
|
+
deviceId: resolvedDeviceId,
|
|
318
330
|
command: step.command,
|
|
319
331
|
status: 'error',
|
|
320
332
|
error: msg,
|
|
321
333
|
});
|
|
322
334
|
out.summary.error++;
|
|
323
335
|
if (!isJsonMode())
|
|
324
|
-
console.log(` ${idx}. ✗ ${step.command} on ${
|
|
336
|
+
console.log(` ${idx}. ✗ ${step.command} on ${resolvedDeviceId}: ${msg}`);
|
|
325
337
|
if (!options.continueOnError)
|
|
326
338
|
break;
|
|
327
339
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAgC5D,MAAM,gBAAgB,GAAG;IACvB,OAAO,EAAE,8CAA8C;IACvD,GAAG,EAAE,qCAAqC;IAC1C,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,4IAA4I;IAC9I,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QACzB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;wBAC7B,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;4BAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;4BAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;4BAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;4BACzC,SAAS,EAAE,EAAE;4BACb,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;4BAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzB;wBACD,oBAAoB,EAAE,KAAK;qBAC5B;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;wBAC7B,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;4BACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;4BACzC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzB;wBACD,oBAAoB,EAAE,KAAK;qBAC5B;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;wBACxB,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;4BACvB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;4BACpD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzB;wBACD,oBAAoB,EAAE,KAAK;qBAC5B;iBACF;aACF;SACF;KACF;IACD,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAOX,MAAM,UAAU,YAAY,CAAC,GAAY;IAIvC,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,SAAS;gBACZ,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAC;gBACjG,CAAC;gBACD,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAAC;gBACzF,CAAC;gBACD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAC;gBAC5F,CAAC;gBACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBAChD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,IACE,CAAC,CAAC,WAAW,KAAK,SAAS;oBAC3B,CAAC,CAAC,WAAW,KAAK,SAAS;oBAC3B,CAAC,CAAC,WAAW,KAAK,WAAW,EAC7B,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,EAAE,cAAc;wBACzB,OAAO,EAAE,kCAAkC;qBAC5C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBAChD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;oBACtF,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,EAAE,KAAK;wBAChB,OAAO,EAAE,mCAAmC;qBAC7C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YACR;gBACE,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,EAAE,OAAO;oBAClB,OAAO,EAAE,6CAA6C;iBACvD,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAW,EAAE,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAwB;IACpD,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG;QAC7C,CAAC,CAAC,MAAM,SAAS,EAAE;QACnB,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG;YAChC,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,uBAAuB,IAAI,EAAE,CAClC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA4B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAYD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mDAAmD,CAAC;SAChE,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBzB,CAAC,CAAC;IAED,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,GAAG,EAAE;QACX,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,oDAAoD,CAAC;SACjE,QAAQ,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACzC,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,UAAU,EAAE,EAAE,CAAC;gBACjB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACjC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gFAAgF,CAAC;SAC7F,QAAQ,CAAC,QAAQ,EAAE,gDAAgD,CAAC;SACpE,MAAM,CAAC,OAAO,EAAE,sEAAsE,CAAC;SACvF,MAAM,CAAC,qBAAqB,EAAE,iEAAiE,CAAC;SAChG,MAAM,CACL,KAAK,EACH,IAAwB,EACxB,OAAqD,EACrD,EAAE;QACF,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,IAAI,UAAU,EAAE,EAAE,CAAC;gBACjB,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAClD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAkB;YACzB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;SACrE,CAAC;QAEF,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACzB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;oBACjB,IAAI,CAAC,UAAU,EAAE;wBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC9D,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACjC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;wBACpF,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;wBACjB,IAAI,CAAC,UAAU,EAAE;4BAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtE,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;wBACnG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACpB,IAAI,CAAC,UAAU,EAAE;4BAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,aAAa,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC;wBAC5E,IAAI,CAAC,OAAO,CAAC,eAAe;4BAAE,MAAM;oBACtC,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,UAAU;gBACV,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzE,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;gBAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;gBAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAChF,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,gBAAgB;wBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,SAAS;wBACjB,KAAK,EAAE,gCAAgC;qBACxC,CAAC,CAAC;oBACH,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACtB,IAAI,CAAC,UAAU,EAAE;wBACf,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,eAAe,IAAI,CAAC,OAAO,OAAO,gBAAgB,6BAA6B,CAAC,CAAC;oBACvG,IAAI,CAAC,OAAO,CAAC,eAAe;wBAAE,MAAM;oBACpC,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBAClF,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,gBAAgB;wBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;oBACH,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;oBACjB,IAAI,CAAC,UAAU,EAAE;wBACf,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,OAAO,gBAAgB,EAAE,CAAC,CAAC;gBACtE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACxD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,SAAS;4BACf,QAAQ,EAAE,gBAAgB;4BAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,MAAM,EAAE,IAAI;yBACb,CAAC,CAAC;wBACH,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;wBACjB,IAAI,CAAC,UAAU,EAAE;4BACf,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,eAAe,IAAI,CAAC,OAAO,OAAO,gBAAgB,EAAE,CAAC,CAAC;wBAC5E,SAAS;oBACX,CAAC;oBACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,gBAAgB;wBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,GAAG;qBACX,CAAC,CAAC;oBACH,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,EAAE;wBACf,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,OAAO,gBAAgB,KAAK,GAAG,EAAE,CAAC,CAAC;oBAC5E,IAAI,CAAC,OAAO,CAAC,eAAe;wBAAE,MAAM;gBACtC,CAAC;YACH,CAAC;YAED,IAAI,UAAU,EAAE,EAAE,CAAC;gBACjB,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,KAAK,YAAY,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DeviceMeta {
|
|
2
|
+
alias?: string;
|
|
3
|
+
hidden?: boolean;
|
|
4
|
+
notes?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DeviceMetaFile {
|
|
7
|
+
version: '1';
|
|
8
|
+
devices: Record<string, DeviceMeta>;
|
|
9
|
+
}
|
|
10
|
+
export declare function getMetaFilePath(): string;
|
|
11
|
+
export declare function loadDeviceMeta(): DeviceMetaFile;
|
|
12
|
+
export declare function saveDeviceMeta(meta: DeviceMetaFile): void;
|
|
13
|
+
export declare function getDeviceMeta(deviceId: string): DeviceMeta | null;
|
|
14
|
+
export declare function setDeviceMeta(deviceId: string, patch: Partial<DeviceMeta>): void;
|
|
15
|
+
export declare function clearDeviceMeta(deviceId: string): void;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import { getConfigPath } from '../utils/flags.js';
|
|
5
|
+
function metaFilePath() {
|
|
6
|
+
const override = getConfigPath();
|
|
7
|
+
const dir = override
|
|
8
|
+
? path.dirname(path.resolve(override))
|
|
9
|
+
: path.join(os.homedir(), '.switchbot');
|
|
10
|
+
return path.join(dir, 'device-meta.json');
|
|
11
|
+
}
|
|
12
|
+
export function getMetaFilePath() {
|
|
13
|
+
return metaFilePath();
|
|
14
|
+
}
|
|
15
|
+
export function loadDeviceMeta() {
|
|
16
|
+
const file = metaFilePath();
|
|
17
|
+
if (!fs.existsSync(file))
|
|
18
|
+
return { version: '1', devices: {} };
|
|
19
|
+
try {
|
|
20
|
+
const raw = fs.readFileSync(file, 'utf-8');
|
|
21
|
+
const parsed = JSON.parse(raw);
|
|
22
|
+
if (!parsed || typeof parsed.devices !== 'object' || parsed.devices === null) {
|
|
23
|
+
return { version: '1', devices: {} };
|
|
24
|
+
}
|
|
25
|
+
return parsed;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return { version: '1', devices: {} };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function saveDeviceMeta(meta) {
|
|
32
|
+
const file = metaFilePath();
|
|
33
|
+
const dir = path.dirname(file);
|
|
34
|
+
if (!fs.existsSync(dir))
|
|
35
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
36
|
+
fs.writeFileSync(file, JSON.stringify(meta, null, 2), { mode: 0o600 });
|
|
37
|
+
}
|
|
38
|
+
export function getDeviceMeta(deviceId) {
|
|
39
|
+
const meta = loadDeviceMeta();
|
|
40
|
+
return meta.devices[deviceId] ?? null;
|
|
41
|
+
}
|
|
42
|
+
export function setDeviceMeta(deviceId, patch) {
|
|
43
|
+
const meta = loadDeviceMeta();
|
|
44
|
+
meta.devices[deviceId] = { ...meta.devices[deviceId], ...patch };
|
|
45
|
+
saveDeviceMeta(meta);
|
|
46
|
+
}
|
|
47
|
+
export function clearDeviceMeta(deviceId) {
|
|
48
|
+
const meta = loadDeviceMeta();
|
|
49
|
+
delete meta.devices[deviceId];
|
|
50
|
+
saveDeviceMeta(meta);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=device-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-meta.js","sourceRoot":"","sources":["../../src/devices/device-meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAalD,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,QAAQ;QAClB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;QACjD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,KAA0B;IACxE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IACjE,cAAc,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,cAAc,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface NameMatch {
|
|
2
|
+
deviceId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
score: number;
|
|
5
|
+
}
|
|
6
|
+
export type NameResolveResult = {
|
|
7
|
+
ok: true;
|
|
8
|
+
deviceId: string;
|
|
9
|
+
} | {
|
|
10
|
+
ok: false;
|
|
11
|
+
ambiguous: true;
|
|
12
|
+
candidates: NameMatch[];
|
|
13
|
+
} | {
|
|
14
|
+
ok: false;
|
|
15
|
+
ambiguous: false;
|
|
16
|
+
};
|
|
17
|
+
export declare function resolveDeviceId(deviceId: string | undefined, nameQuery: string | undefined): string;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { loadCache } from '../devices/cache.js';
|
|
2
|
+
import { loadDeviceMeta } from '../devices/device-meta.js';
|
|
3
|
+
import { levenshtein, normalizeDeviceName } from './string.js';
|
|
4
|
+
import { UsageError, StructuredUsageError } from './output.js';
|
|
5
|
+
function resolveDeviceByName(query) {
|
|
6
|
+
const cache = loadCache();
|
|
7
|
+
if (!cache || Object.keys(cache.devices).length === 0) {
|
|
8
|
+
return { ok: false, ambiguous: false };
|
|
9
|
+
}
|
|
10
|
+
const meta = loadDeviceMeta();
|
|
11
|
+
const q = normalizeDeviceName(query);
|
|
12
|
+
const threshold = Math.min(3, Math.floor(q.length * 0.3));
|
|
13
|
+
const candidates = [];
|
|
14
|
+
for (const [deviceId, device] of Object.entries(cache.devices)) {
|
|
15
|
+
// alias exact match (highest priority)
|
|
16
|
+
const alias = meta.devices[deviceId]?.alias;
|
|
17
|
+
if (alias && normalizeDeviceName(alias) === q) {
|
|
18
|
+
return { ok: true, deviceId };
|
|
19
|
+
}
|
|
20
|
+
const rawName = normalizeDeviceName(device.name);
|
|
21
|
+
// exact match
|
|
22
|
+
if (rawName === q)
|
|
23
|
+
return { ok: true, deviceId };
|
|
24
|
+
// alias substring/fuzzy
|
|
25
|
+
if (alias) {
|
|
26
|
+
const normAlias = normalizeDeviceName(alias);
|
|
27
|
+
if (normAlias.includes(q) || q.includes(normAlias)) {
|
|
28
|
+
candidates.push({ deviceId, name: device.name, score: 1 });
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const dist = levenshtein(normAlias, q);
|
|
32
|
+
if (dist <= threshold) {
|
|
33
|
+
candidates.push({ deviceId, name: device.name, score: dist + 1 });
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// name substring
|
|
38
|
+
if (rawName.includes(q) || q.includes(rawName)) {
|
|
39
|
+
candidates.push({ deviceId, name: device.name, score: 1 });
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// levenshtein
|
|
43
|
+
const dist = levenshtein(rawName, q);
|
|
44
|
+
if (dist <= threshold) {
|
|
45
|
+
candidates.push({ deviceId, name: device.name, score: dist + 1 });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (candidates.length === 0)
|
|
49
|
+
return { ok: false, ambiguous: false };
|
|
50
|
+
candidates.sort((a, b) => a.score - b.score);
|
|
51
|
+
const best = candidates[0].score;
|
|
52
|
+
const top = candidates.filter((c) => c.score <= best + 1);
|
|
53
|
+
if (top.length === 1)
|
|
54
|
+
return { ok: true, deviceId: top[0].deviceId };
|
|
55
|
+
return { ok: false, ambiguous: true, candidates: top.slice(0, 4) };
|
|
56
|
+
}
|
|
57
|
+
export function resolveDeviceId(deviceId, nameQuery) {
|
|
58
|
+
if (deviceId && nameQuery) {
|
|
59
|
+
throw new UsageError('Provide either a deviceId argument or --name, not both.');
|
|
60
|
+
}
|
|
61
|
+
if (deviceId)
|
|
62
|
+
return deviceId;
|
|
63
|
+
if (!nameQuery) {
|
|
64
|
+
throw new UsageError('A deviceId argument or --name flag is required.');
|
|
65
|
+
}
|
|
66
|
+
const cache = loadCache();
|
|
67
|
+
if (!cache) {
|
|
68
|
+
throw new UsageError(`--name requires the device cache. Run 'switchbot devices list' first to populate it.`);
|
|
69
|
+
}
|
|
70
|
+
const result = resolveDeviceByName(nameQuery);
|
|
71
|
+
if (result.ok)
|
|
72
|
+
return result.deviceId;
|
|
73
|
+
if (result.ambiguous) {
|
|
74
|
+
throw new StructuredUsageError(`"${nameQuery}" is ambiguous — be more specific or use the deviceId directly.`, { candidates: result.candidates.map((c) => ({ deviceId: c.deviceId, name: c.name })) });
|
|
75
|
+
}
|
|
76
|
+
throw new UsageError(`No device matches "${nameQuery}". Run 'switchbot devices list' to see device names.`);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=name-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolver.js","sourceRoot":"","sources":["../../src/utils/name-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/output.d.ts
CHANGED
|
@@ -5,12 +5,19 @@ export declare function printKeyValue(data: Record<string, unknown>): void;
|
|
|
5
5
|
export declare class UsageError extends Error {
|
|
6
6
|
constructor(message: string);
|
|
7
7
|
}
|
|
8
|
+
export type ErrorSubKind = 'device-offline' | 'device-not-found' | 'command-not-supported' | 'auth-failed' | 'quota-exceeded' | 'device-busy' | 'unknown-api-error';
|
|
8
9
|
export interface ErrorPayload {
|
|
9
10
|
code: number;
|
|
10
11
|
kind: 'usage' | 'api' | 'runtime';
|
|
12
|
+
subKind?: ErrorSubKind;
|
|
11
13
|
message: string;
|
|
12
14
|
hint?: string;
|
|
13
15
|
retryable?: boolean;
|
|
16
|
+
context?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export declare class StructuredUsageError extends Error {
|
|
19
|
+
readonly context?: Record<string, unknown> | undefined;
|
|
20
|
+
constructor(message: string, context?: Record<string, unknown> | undefined);
|
|
14
21
|
}
|
|
15
22
|
export declare function buildErrorPayload(error: unknown): ErrorPayload;
|
|
16
23
|
export declare function handleError(error: unknown): never;
|
package/dist/utils/output.js
CHANGED
|
@@ -44,7 +44,34 @@ export class UsageError extends Error {
|
|
|
44
44
|
this.name = 'UsageError';
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
+
export class StructuredUsageError extends Error {
|
|
48
|
+
context;
|
|
49
|
+
constructor(message, context) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.context = context;
|
|
52
|
+
this.name = 'StructuredUsageError';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function classifyApiError(code) {
|
|
56
|
+
switch (code) {
|
|
57
|
+
case 151:
|
|
58
|
+
case 160: return 'command-not-supported';
|
|
59
|
+
case 152: return 'device-not-found';
|
|
60
|
+
case 161:
|
|
61
|
+
case 171: return 'device-offline';
|
|
62
|
+
case 190: return 'device-busy';
|
|
63
|
+
case 401: return 'auth-failed';
|
|
64
|
+
case 429: return 'quota-exceeded';
|
|
65
|
+
default: return 'unknown-api-error';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
47
68
|
export function buildErrorPayload(error) {
|
|
69
|
+
if (error instanceof StructuredUsageError) {
|
|
70
|
+
const payload = { code: 2, kind: 'usage', message: error.message };
|
|
71
|
+
if (error.context)
|
|
72
|
+
payload.context = error.context;
|
|
73
|
+
return payload;
|
|
74
|
+
}
|
|
48
75
|
if (error instanceof UsageError) {
|
|
49
76
|
return { code: 2, kind: 'usage', message: error.message };
|
|
50
77
|
}
|
|
@@ -54,6 +81,8 @@ export function buildErrorPayload(error) {
|
|
|
54
81
|
const hint = error instanceof ApiError ? (error.hint ?? errorHint(error.code)) : null;
|
|
55
82
|
const retryable = error instanceof ApiError ? error.retryable : false;
|
|
56
83
|
const payload = { code, kind, message };
|
|
84
|
+
if (error instanceof ApiError)
|
|
85
|
+
payload.subKind = classifyApiError(error.code);
|
|
57
86
|
if (hint)
|
|
58
87
|
payload.hint = hint;
|
|
59
88
|
if (retryable)
|
package/dist/utils/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,KAAK,MAAM,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAiB,EAAE,IAAwD;IACpG,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;KAC5B,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,OAAO,IAAI,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/E,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA6B;IACzD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;KAC5B,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACpD,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ;YAC5C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function levenshtein(a, b) {
|
|
2
|
+
if (a === b)
|
|
3
|
+
return 0;
|
|
4
|
+
if (a.length === 0)
|
|
5
|
+
return b.length;
|
|
6
|
+
if (b.length === 0)
|
|
7
|
+
return a.length;
|
|
8
|
+
const row = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
9
|
+
for (let i = 1; i <= a.length; i++) {
|
|
10
|
+
let prev = i;
|
|
11
|
+
for (let j = 1; j <= b.length; j++) {
|
|
12
|
+
const val = a[i - 1] === b[j - 1] ? row[j - 1] : Math.min(row[j - 1], row[j], prev) + 1;
|
|
13
|
+
row[j - 1] = prev;
|
|
14
|
+
prev = val;
|
|
15
|
+
}
|
|
16
|
+
row[b.length] = prev;
|
|
17
|
+
}
|
|
18
|
+
return row[b.length];
|
|
19
|
+
}
|
|
20
|
+
export function normalizeDeviceName(s) {
|
|
21
|
+
return s.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff ]/g, ' ').replace(/\s+/g, ' ').trim();
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAEpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACxF,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YAClB,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9F,CAAC"}
|