@switchbot/openapi-cli 3.2.1 → 3.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.
Files changed (332) hide show
  1. package/README.md +3 -1
  2. package/dist/index.js +57419 -170
  3. package/package.json +9 -5
  4. package/dist/api/client.d.ts +0 -31
  5. package/dist/api/client.js +0 -236
  6. package/dist/api/client.js.map +0 -1
  7. package/dist/auth.d.ts +0 -1
  8. package/dist/auth.js +0 -21
  9. package/dist/auth.js.map +0 -1
  10. package/dist/commands/agent-bootstrap.d.ts +0 -10
  11. package/dist/commands/agent-bootstrap.js +0 -200
  12. package/dist/commands/agent-bootstrap.js.map +0 -1
  13. package/dist/commands/auth.d.ts +0 -18
  14. package/dist/commands/auth.js +0 -355
  15. package/dist/commands/auth.js.map +0 -1
  16. package/dist/commands/batch.d.ts +0 -2
  17. package/dist/commands/batch.js +0 -414
  18. package/dist/commands/batch.js.map +0 -1
  19. package/dist/commands/cache.d.ts +0 -2
  20. package/dist/commands/cache.js +0 -127
  21. package/dist/commands/cache.js.map +0 -1
  22. package/dist/commands/capabilities.d.ts +0 -31
  23. package/dist/commands/capabilities.js +0 -383
  24. package/dist/commands/capabilities.js.map +0 -1
  25. package/dist/commands/catalog.d.ts +0 -2
  26. package/dist/commands/catalog.js +0 -360
  27. package/dist/commands/catalog.js.map +0 -1
  28. package/dist/commands/completion.d.ts +0 -2
  29. package/dist/commands/completion.js +0 -386
  30. package/dist/commands/completion.js.map +0 -1
  31. package/dist/commands/config.d.ts +0 -21
  32. package/dist/commands/config.js +0 -377
  33. package/dist/commands/config.js.map +0 -1
  34. package/dist/commands/daemon.d.ts +0 -2
  35. package/dist/commands/daemon.js +0 -411
  36. package/dist/commands/daemon.js.map +0 -1
  37. package/dist/commands/device-meta.d.ts +0 -2
  38. package/dist/commands/device-meta.js +0 -160
  39. package/dist/commands/device-meta.js.map +0 -1
  40. package/dist/commands/devices.d.ts +0 -2
  41. package/dist/commands/devices.js +0 -949
  42. package/dist/commands/devices.js.map +0 -1
  43. package/dist/commands/doctor.d.ts +0 -3
  44. package/dist/commands/doctor.js +0 -1016
  45. package/dist/commands/doctor.js.map +0 -1
  46. package/dist/commands/events.d.ts +0 -31
  47. package/dist/commands/events.js +0 -564
  48. package/dist/commands/events.js.map +0 -1
  49. package/dist/commands/expand.d.ts +0 -2
  50. package/dist/commands/expand.js +0 -131
  51. package/dist/commands/expand.js.map +0 -1
  52. package/dist/commands/explain.d.ts +0 -2
  53. package/dist/commands/explain.js +0 -140
  54. package/dist/commands/explain.js.map +0 -1
  55. package/dist/commands/health.d.ts +0 -8
  56. package/dist/commands/health.js +0 -114
  57. package/dist/commands/health.js.map +0 -1
  58. package/dist/commands/history.d.ts +0 -2
  59. package/dist/commands/history.js +0 -321
  60. package/dist/commands/history.js.map +0 -1
  61. package/dist/commands/identity.d.ts +0 -45
  62. package/dist/commands/identity.js +0 -60
  63. package/dist/commands/identity.js.map +0 -1
  64. package/dist/commands/install.d.ts +0 -20
  65. package/dist/commands/install.js +0 -247
  66. package/dist/commands/install.js.map +0 -1
  67. package/dist/commands/mcp.d.ts +0 -14
  68. package/dist/commands/mcp.js +0 -2018
  69. package/dist/commands/mcp.js.map +0 -1
  70. package/dist/commands/plan.d.ts +0 -51
  71. package/dist/commands/plan.js +0 -654
  72. package/dist/commands/plan.js.map +0 -1
  73. package/dist/commands/policy.d.ts +0 -24
  74. package/dist/commands/policy.js +0 -587
  75. package/dist/commands/policy.js.map +0 -1
  76. package/dist/commands/quota.d.ts +0 -2
  77. package/dist/commands/quota.js +0 -79
  78. package/dist/commands/quota.js.map +0 -1
  79. package/dist/commands/rules.d.ts +0 -2
  80. package/dist/commands/rules.js +0 -876
  81. package/dist/commands/rules.js.map +0 -1
  82. package/dist/commands/scenes.d.ts +0 -2
  83. package/dist/commands/scenes.js +0 -265
  84. package/dist/commands/scenes.js.map +0 -1
  85. package/dist/commands/schema.d.ts +0 -2
  86. package/dist/commands/schema.js +0 -185
  87. package/dist/commands/schema.js.map +0 -1
  88. package/dist/commands/status-sync.d.ts +0 -2
  89. package/dist/commands/status-sync.js +0 -132
  90. package/dist/commands/status-sync.js.map +0 -1
  91. package/dist/commands/uninstall.d.ts +0 -20
  92. package/dist/commands/uninstall.js +0 -238
  93. package/dist/commands/uninstall.js.map +0 -1
  94. package/dist/commands/upgrade-check.d.ts +0 -2
  95. package/dist/commands/upgrade-check.js +0 -107
  96. package/dist/commands/upgrade-check.js.map +0 -1
  97. package/dist/commands/watch.d.ts +0 -2
  98. package/dist/commands/watch.js +0 -195
  99. package/dist/commands/watch.js.map +0 -1
  100. package/dist/commands/webhook.d.ts +0 -2
  101. package/dist/commands/webhook.js +0 -183
  102. package/dist/commands/webhook.js.map +0 -1
  103. package/dist/config.d.ts +0 -57
  104. package/dist/config.js +0 -259
  105. package/dist/config.js.map +0 -1
  106. package/dist/credentials/backends/file.d.ts +0 -18
  107. package/dist/credentials/backends/file.js +0 -102
  108. package/dist/credentials/backends/file.js.map +0 -1
  109. package/dist/credentials/backends/linux.d.ts +0 -16
  110. package/dist/credentials/backends/linux.js +0 -130
  111. package/dist/credentials/backends/linux.js.map +0 -1
  112. package/dist/credentials/backends/macos.d.ts +0 -18
  113. package/dist/credentials/backends/macos.js +0 -130
  114. package/dist/credentials/backends/macos.js.map +0 -1
  115. package/dist/credentials/backends/windows.d.ts +0 -23
  116. package/dist/credentials/backends/windows.js +0 -216
  117. package/dist/credentials/backends/windows.js.map +0 -1
  118. package/dist/credentials/keychain.d.ts +0 -83
  119. package/dist/credentials/keychain.js +0 -89
  120. package/dist/credentials/keychain.js.map +0 -1
  121. package/dist/credentials/prime.d.ts +0 -32
  122. package/dist/credentials/prime.js +0 -53
  123. package/dist/credentials/prime.js.map +0 -1
  124. package/dist/devices/cache.d.ts +0 -79
  125. package/dist/devices/cache.js +0 -294
  126. package/dist/devices/cache.js.map +0 -1
  127. package/dist/devices/catalog.d.ts +0 -138
  128. package/dist/devices/catalog.js +0 -768
  129. package/dist/devices/catalog.js.map +0 -1
  130. package/dist/devices/device-meta.d.ts +0 -15
  131. package/dist/devices/device-meta.js +0 -57
  132. package/dist/devices/device-meta.js.map +0 -1
  133. package/dist/devices/history-agg.d.ts +0 -37
  134. package/dist/devices/history-agg.js +0 -139
  135. package/dist/devices/history-agg.js.map +0 -1
  136. package/dist/devices/history-query.d.ts +0 -45
  137. package/dist/devices/history-query.js +0 -182
  138. package/dist/devices/history-query.js.map +0 -1
  139. package/dist/devices/param-validator.d.ts +0 -40
  140. package/dist/devices/param-validator.js +0 -434
  141. package/dist/devices/param-validator.js.map +0 -1
  142. package/dist/devices/resources.d.ts +0 -74
  143. package/dist/devices/resources.js +0 -271
  144. package/dist/devices/resources.js.map +0 -1
  145. package/dist/index.d.ts +0 -1
  146. package/dist/index.js.map +0 -1
  147. package/dist/install/default-steps.d.ts +0 -66
  148. package/dist/install/default-steps.js +0 -258
  149. package/dist/install/default-steps.js.map +0 -1
  150. package/dist/install/preflight.d.ts +0 -60
  151. package/dist/install/preflight.js +0 -213
  152. package/dist/install/preflight.js.map +0 -1
  153. package/dist/install/steps.d.ts +0 -61
  154. package/dist/install/steps.js +0 -68
  155. package/dist/install/steps.js.map +0 -1
  156. package/dist/lib/command-keywords.d.ts +0 -5
  157. package/dist/lib/command-keywords.js +0 -18
  158. package/dist/lib/command-keywords.js.map +0 -1
  159. package/dist/lib/daemon-state.d.ts +0 -24
  160. package/dist/lib/daemon-state.js +0 -47
  161. package/dist/lib/daemon-state.js.map +0 -1
  162. package/dist/lib/destructive-mode.d.ts +0 -2
  163. package/dist/lib/destructive-mode.js +0 -13
  164. package/dist/lib/destructive-mode.js.map +0 -1
  165. package/dist/lib/devices.d.ts +0 -151
  166. package/dist/lib/devices.js +0 -383
  167. package/dist/lib/devices.js.map +0 -1
  168. package/dist/lib/idempotency.d.ts +0 -46
  169. package/dist/lib/idempotency.js +0 -107
  170. package/dist/lib/idempotency.js.map +0 -1
  171. package/dist/lib/plan-store.d.ts +0 -19
  172. package/dist/lib/plan-store.js +0 -69
  173. package/dist/lib/plan-store.js.map +0 -1
  174. package/dist/lib/request-context.d.ts +0 -7
  175. package/dist/lib/request-context.js +0 -13
  176. package/dist/lib/request-context.js.map +0 -1
  177. package/dist/lib/scenes.d.ts +0 -7
  178. package/dist/lib/scenes.js +0 -11
  179. package/dist/lib/scenes.js.map +0 -1
  180. package/dist/logger.d.ts +0 -4
  181. package/dist/logger.js +0 -17
  182. package/dist/logger.js.map +0 -1
  183. package/dist/mcp/device-history.d.ts +0 -36
  184. package/dist/mcp/device-history.js +0 -146
  185. package/dist/mcp/device-history.js.map +0 -1
  186. package/dist/mcp/events-subscription.d.ts +0 -45
  187. package/dist/mcp/events-subscription.js +0 -214
  188. package/dist/mcp/events-subscription.js.map +0 -1
  189. package/dist/mqtt/client.d.ts +0 -25
  190. package/dist/mqtt/client.js +0 -181
  191. package/dist/mqtt/client.js.map +0 -1
  192. package/dist/mqtt/credential.d.ts +0 -16
  193. package/dist/mqtt/credential.js +0 -31
  194. package/dist/mqtt/credential.js.map +0 -1
  195. package/dist/policy/add-rule.d.ts +0 -21
  196. package/dist/policy/add-rule.js +0 -125
  197. package/dist/policy/add-rule.js.map +0 -1
  198. package/dist/policy/diff.d.ts +0 -21
  199. package/dist/policy/diff.js +0 -92
  200. package/dist/policy/diff.js.map +0 -1
  201. package/dist/policy/format.d.ts +0 -6
  202. package/dist/policy/format.js +0 -58
  203. package/dist/policy/format.js.map +0 -1
  204. package/dist/policy/load.d.ts +0 -32
  205. package/dist/policy/load.js +0 -62
  206. package/dist/policy/load.js.map +0 -1
  207. package/dist/policy/migrate.d.ts +0 -21
  208. package/dist/policy/migrate.js +0 -68
  209. package/dist/policy/migrate.js.map +0 -1
  210. package/dist/policy/schema.d.ts +0 -5
  211. package/dist/policy/schema.js +0 -19
  212. package/dist/policy/schema.js.map +0 -1
  213. package/dist/policy/validate.d.ts +0 -19
  214. package/dist/policy/validate.js +0 -263
  215. package/dist/policy/validate.js.map +0 -1
  216. package/dist/rules/action.d.ts +0 -65
  217. package/dist/rules/action.js +0 -217
  218. package/dist/rules/action.js.map +0 -1
  219. package/dist/rules/audit-query.d.ts +0 -51
  220. package/dist/rules/audit-query.js +0 -90
  221. package/dist/rules/audit-query.js.map +0 -1
  222. package/dist/rules/conflict-analyzer.d.ts +0 -57
  223. package/dist/rules/conflict-analyzer.js +0 -215
  224. package/dist/rules/conflict-analyzer.js.map +0 -1
  225. package/dist/rules/cron-scheduler.d.ts +0 -62
  226. package/dist/rules/cron-scheduler.js +0 -187
  227. package/dist/rules/cron-scheduler.js.map +0 -1
  228. package/dist/rules/destructive.d.ts +0 -20
  229. package/dist/rules/destructive.js +0 -53
  230. package/dist/rules/destructive.js.map +0 -1
  231. package/dist/rules/engine.d.ts +0 -193
  232. package/dist/rules/engine.js +0 -758
  233. package/dist/rules/engine.js.map +0 -1
  234. package/dist/rules/matcher.d.ts +0 -56
  235. package/dist/rules/matcher.js +0 -231
  236. package/dist/rules/matcher.js.map +0 -1
  237. package/dist/rules/pid-file.d.ts +0 -43
  238. package/dist/rules/pid-file.js +0 -96
  239. package/dist/rules/pid-file.js.map +0 -1
  240. package/dist/rules/quiet-hours.d.ts +0 -26
  241. package/dist/rules/quiet-hours.js +0 -46
  242. package/dist/rules/quiet-hours.js.map +0 -1
  243. package/dist/rules/suggest.d.ts +0 -20
  244. package/dist/rules/suggest.js +0 -96
  245. package/dist/rules/suggest.js.map +0 -1
  246. package/dist/rules/throttle.d.ts +0 -61
  247. package/dist/rules/throttle.js +0 -117
  248. package/dist/rules/throttle.js.map +0 -1
  249. package/dist/rules/types.d.ts +0 -117
  250. package/dist/rules/types.js +0 -35
  251. package/dist/rules/types.js.map +0 -1
  252. package/dist/rules/webhook-listener.d.ts +0 -63
  253. package/dist/rules/webhook-listener.js +0 -224
  254. package/dist/rules/webhook-listener.js.map +0 -1
  255. package/dist/rules/webhook-token.d.ts +0 -50
  256. package/dist/rules/webhook-token.js +0 -91
  257. package/dist/rules/webhook-token.js.map +0 -1
  258. package/dist/schema/field-aliases.d.ts +0 -34
  259. package/dist/schema/field-aliases.js +0 -132
  260. package/dist/schema/field-aliases.js.map +0 -1
  261. package/dist/sinks/dispatcher.d.ts +0 -7
  262. package/dist/sinks/dispatcher.js +0 -13
  263. package/dist/sinks/dispatcher.js.map +0 -1
  264. package/dist/sinks/file.d.ts +0 -6
  265. package/dist/sinks/file.js +0 -20
  266. package/dist/sinks/file.js.map +0 -1
  267. package/dist/sinks/format.d.ts +0 -20
  268. package/dist/sinks/format.js +0 -57
  269. package/dist/sinks/format.js.map +0 -1
  270. package/dist/sinks/homeassistant.d.ts +0 -18
  271. package/dist/sinks/homeassistant.js +0 -45
  272. package/dist/sinks/homeassistant.js.map +0 -1
  273. package/dist/sinks/openclaw.d.ts +0 -13
  274. package/dist/sinks/openclaw.js +0 -34
  275. package/dist/sinks/openclaw.js.map +0 -1
  276. package/dist/sinks/stdout.d.ts +0 -4
  277. package/dist/sinks/stdout.js +0 -6
  278. package/dist/sinks/stdout.js.map +0 -1
  279. package/dist/sinks/telegram.d.ts +0 -11
  280. package/dist/sinks/telegram.js +0 -29
  281. package/dist/sinks/telegram.js.map +0 -1
  282. package/dist/sinks/types.d.ts +0 -13
  283. package/dist/sinks/types.js +0 -2
  284. package/dist/sinks/types.js.map +0 -1
  285. package/dist/sinks/webhook.d.ts +0 -6
  286. package/dist/sinks/webhook.js +0 -23
  287. package/dist/sinks/webhook.js.map +0 -1
  288. package/dist/status-sync/manager.d.ts +0 -48
  289. package/dist/status-sync/manager.js +0 -269
  290. package/dist/status-sync/manager.js.map +0 -1
  291. package/dist/utils/arg-parsers.d.ts +0 -16
  292. package/dist/utils/arg-parsers.js +0 -67
  293. package/dist/utils/arg-parsers.js.map +0 -1
  294. package/dist/utils/audit.d.ts +0 -69
  295. package/dist/utils/audit.js +0 -122
  296. package/dist/utils/audit.js.map +0 -1
  297. package/dist/utils/filter.d.ts +0 -81
  298. package/dist/utils/filter.js +0 -190
  299. package/dist/utils/filter.js.map +0 -1
  300. package/dist/utils/flags.d.ts +0 -72
  301. package/dist/utils/flags.js +0 -187
  302. package/dist/utils/flags.js.map +0 -1
  303. package/dist/utils/format.d.ts +0 -9
  304. package/dist/utils/format.js +0 -118
  305. package/dist/utils/format.js.map +0 -1
  306. package/dist/utils/health.d.ts +0 -48
  307. package/dist/utils/health.js +0 -102
  308. package/dist/utils/health.js.map +0 -1
  309. package/dist/utils/help-json.d.ts +0 -39
  310. package/dist/utils/help-json.js +0 -55
  311. package/dist/utils/help-json.js.map +0 -1
  312. package/dist/utils/name-resolver.d.ts +0 -26
  313. package/dist/utils/name-resolver.js +0 -138
  314. package/dist/utils/name-resolver.js.map +0 -1
  315. package/dist/utils/output.d.ts +0 -73
  316. package/dist/utils/output.js +0 -405
  317. package/dist/utils/output.js.map +0 -1
  318. package/dist/utils/quota.d.ts +0 -61
  319. package/dist/utils/quota.js +0 -228
  320. package/dist/utils/quota.js.map +0 -1
  321. package/dist/utils/redact.d.ts +0 -23
  322. package/dist/utils/redact.js +0 -69
  323. package/dist/utils/redact.js.map +0 -1
  324. package/dist/utils/retry.d.ts +0 -72
  325. package/dist/utils/retry.js +0 -141
  326. package/dist/utils/retry.js.map +0 -1
  327. package/dist/utils/string.d.ts +0 -2
  328. package/dist/utils/string.js +0 -23
  329. package/dist/utils/string.js.map +0 -1
  330. package/dist/version.d.ts +0 -2
  331. package/dist/version.js +0 -5
  332. package/dist/version.js.map +0 -1
@@ -1,355 +0,0 @@
1
- /**
2
- * `switchbot auth` command group (v2.9 preview, part of Phase 3A).
3
- *
4
- * Surfaces the credential store abstraction added in F1/F2 so users
5
- * can introspect, write to, delete from, and migrate into the OS
6
- * keychain without editing `~/.switchbot/config.json` by hand.
7
- *
8
- * All subcommands honour the active `--profile <name>` flag so a user
9
- * who runs multiple accounts keeps the keychain entries cleanly
10
- * partitioned.
11
- *
12
- * No credential material is ever printed in plain text. `get` emits
13
- * a masked summary only; `set` reads via a TTY prompt (echo-off) or a
14
- * file passed via `--stdin-file <path>`. `migrate` never touches the
15
- * keychain unless the backend reports `writable: true`.
16
- */
17
- import fs from 'node:fs';
18
- import path from 'node:path';
19
- import os from 'node:os';
20
- import readline from 'node:readline';
21
- import { exitWithError, isJsonMode, printJson } from '../utils/output.js';
22
- import { stringArg } from '../utils/arg-parsers.js';
23
- import { getActiveProfile } from '../lib/request-context.js';
24
- import { selectCredentialStore, } from '../credentials/keychain.js';
25
- function activeProfile() {
26
- return getActiveProfile() ?? 'default';
27
- }
28
- function maskValue(value) {
29
- if (value.length === 0)
30
- return '';
31
- if (value.length <= 4)
32
- return '*'.repeat(value.length);
33
- const head = value.slice(0, 2);
34
- const tail = value.slice(-2);
35
- return `${head}${'*'.repeat(Math.max(4, value.length - 4))}${tail}`;
36
- }
37
- async function promptSecret(question) {
38
- const rl = readline.createInterface({ input: process.stdin, output: process.stderr, terminal: true });
39
- return new Promise((resolve) => {
40
- process.stderr.write(question);
41
- const stdin = process.stdin;
42
- let answer = '';
43
- const onData = (chunk) => {
44
- const s = chunk.toString('utf-8');
45
- for (const ch of s) {
46
- if (ch === '\r' || ch === '\n') {
47
- stdin.removeListener('data', onData);
48
- if (stdin.setRawMode)
49
- stdin.setRawMode(false);
50
- stdin.pause();
51
- process.stderr.write('\n');
52
- rl.close();
53
- resolve(answer);
54
- return;
55
- }
56
- if (ch === '\u0003') {
57
- process.exit(130);
58
- }
59
- if (ch === '\u007f' || ch === '\b') {
60
- answer = answer.slice(0, -1);
61
- continue;
62
- }
63
- answer += ch;
64
- }
65
- };
66
- if (stdin.setRawMode)
67
- stdin.setRawMode(true);
68
- stdin.resume();
69
- stdin.on('data', onData);
70
- });
71
- }
72
- function readStdinFile(filePath) {
73
- if (!fs.existsSync(filePath)) {
74
- exitWithError({
75
- code: 2,
76
- kind: 'usage',
77
- message: `--stdin-file: file not found: ${filePath}`,
78
- });
79
- }
80
- let parsed;
81
- try {
82
- parsed = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
83
- }
84
- catch (err) {
85
- exitWithError({
86
- code: 2,
87
- kind: 'usage',
88
- message: `--stdin-file: invalid JSON: ${err instanceof Error ? err.message : String(err)}`,
89
- });
90
- }
91
- if (!parsed ||
92
- typeof parsed !== 'object' ||
93
- typeof parsed.token !== 'string' ||
94
- typeof parsed.secret !== 'string') {
95
- exitWithError({
96
- code: 2,
97
- kind: 'usage',
98
- message: '--stdin-file must contain a JSON object with "token" and "secret" strings.',
99
- });
100
- }
101
- const { token, secret } = parsed;
102
- if (!token || !secret) {
103
- exitWithError({
104
- code: 2,
105
- kind: 'usage',
106
- message: '--stdin-file: token and secret must be non-empty.',
107
- });
108
- }
109
- return { token, secret };
110
- }
111
- function cleanupMigratedSourceFile(sourceFile, parsed) {
112
- const next = { ...parsed };
113
- delete next.token;
114
- delete next.secret;
115
- if (Object.keys(next).length === 0) {
116
- fs.unlinkSync(sourceFile);
117
- return 'deleted';
118
- }
119
- fs.writeFileSync(sourceFile, JSON.stringify(next, null, 2), { mode: 0o600 });
120
- return 'scrubbed';
121
- }
122
- export function registerAuthCommand(program) {
123
- const auth = program
124
- .command('auth')
125
- .description('Manage SwitchBot credentials in the OS keychain (preview)');
126
- const keychain = auth
127
- .command('keychain')
128
- .description('OS keychain backend (describe/get/set/delete/migrate)');
129
- keychain
130
- .command('describe')
131
- .description('Show which credential backend is active on this machine')
132
- .action(async () => {
133
- const store = await selectCredentialStore();
134
- const desc = store.describe();
135
- if (isJsonMode()) {
136
- printJson(desc);
137
- return;
138
- }
139
- console.log(`backend : ${desc.backend}`);
140
- console.log(`tag : ${desc.tag}`);
141
- console.log(`writable: ${desc.writable ? 'yes' : 'no'}`);
142
- if (desc.notes)
143
- console.log(`notes : ${desc.notes}`);
144
- });
145
- keychain
146
- .command('get')
147
- .description('Check whether the active profile has credentials (masked output)')
148
- .action(async () => {
149
- const profile = activeProfile();
150
- const store = await selectCredentialStore();
151
- const creds = await store.get(profile);
152
- if (!creds) {
153
- if (isJsonMode()) {
154
- printJson({ profile, backend: store.name, present: false });
155
- return;
156
- }
157
- console.log(`No credentials found for profile "${profile}" in backend "${store.name}".`);
158
- process.exit(1);
159
- }
160
- if (isJsonMode()) {
161
- printJson({
162
- profile,
163
- backend: store.name,
164
- present: true,
165
- token: { length: creds.token.length, masked: maskValue(creds.token) },
166
- secret: { length: creds.secret.length, masked: maskValue(creds.secret) },
167
- });
168
- return;
169
- }
170
- console.log(`profile : ${profile}`);
171
- console.log(`backend : ${store.name}`);
172
- console.log(`token : ${maskValue(creds.token)} (${creds.token.length} chars)`);
173
- console.log(`secret : ${maskValue(creds.secret)} (${creds.secret.length} chars)`);
174
- });
175
- keychain
176
- .command('set')
177
- .description('Write token and secret to the keychain for the active profile')
178
- .option('--stdin-file <path>', 'Read {"token","secret"} JSON from file (for non-TTY environments)', stringArg('--stdin-file'))
179
- .action(async (options) => {
180
- const profile = activeProfile();
181
- const store = await selectCredentialStore();
182
- if (!store.describe().writable) {
183
- exitWithError({
184
- code: 1,
185
- kind: 'runtime',
186
- message: `backend "${store.name}" is not writable on this machine`,
187
- hint: 'Install the OS keychain helper or use ~/.switchbot/config.json directly.',
188
- });
189
- }
190
- let bundle;
191
- if (options.stdinFile) {
192
- bundle = readStdinFile(options.stdinFile);
193
- }
194
- else if (process.stdin.isTTY) {
195
- const token = (await promptSecret('Token : ')).trim();
196
- const secret = (await promptSecret('Secret: ')).trim();
197
- if (!token || !secret) {
198
- exitWithError({
199
- code: 2,
200
- kind: 'usage',
201
- message: 'Both token and secret are required.',
202
- });
203
- }
204
- bundle = { token, secret };
205
- }
206
- else {
207
- exitWithError({
208
- code: 2,
209
- kind: 'usage',
210
- message: 'Non-TTY input requires --stdin-file <path>.',
211
- });
212
- }
213
- try {
214
- await store.set(profile, bundle);
215
- }
216
- catch (err) {
217
- exitWithError({
218
- code: 1,
219
- kind: 'runtime',
220
- message: `keychain write failed: ${err instanceof Error ? err.message : String(err)}`,
221
- });
222
- }
223
- if (isJsonMode()) {
224
- printJson({ profile, backend: store.name, written: true });
225
- return;
226
- }
227
- console.log(`Stored credentials for profile "${profile}" in backend "${store.name}".`);
228
- });
229
- keychain
230
- .command('delete')
231
- .description('Remove credentials for the active profile from the keychain')
232
- .option('--yes', 'Skip the interactive confirmation prompt')
233
- .action(async (options) => {
234
- const profile = activeProfile();
235
- const store = await selectCredentialStore();
236
- if (!options.yes && process.stdin.isTTY) {
237
- const reply = (await promptSecret(`Delete credentials for profile "${profile}" from backend "${store.name}"? type DELETE to confirm: `)).trim();
238
- if (reply !== 'DELETE') {
239
- if (isJsonMode()) {
240
- printJson({ profile, backend: store.name, deleted: false, reason: 'cancelled' });
241
- return;
242
- }
243
- console.log('Aborted.');
244
- process.exit(0);
245
- }
246
- }
247
- try {
248
- await store.delete(profile);
249
- }
250
- catch (err) {
251
- exitWithError({
252
- code: 1,
253
- kind: 'runtime',
254
- message: `keychain delete failed: ${err instanceof Error ? err.message : String(err)}`,
255
- });
256
- }
257
- if (isJsonMode()) {
258
- printJson({ profile, backend: store.name, deleted: true });
259
- return;
260
- }
261
- console.log(`Deleted credentials for profile "${profile}" in backend "${store.name}".`);
262
- });
263
- keychain
264
- .command('migrate')
265
- .description('Copy credentials from ~/.switchbot/config.json (or --profile) into the keychain')
266
- .option('--delete-file', 'Remove the source credential file when possible; otherwise scrub token/secret and keep metadata')
267
- .action(async (options) => {
268
- const profile = activeProfile();
269
- const store = await selectCredentialStore();
270
- if (!store.describe().writable) {
271
- exitWithError({
272
- code: 1,
273
- kind: 'runtime',
274
- message: `backend "${store.name}" is not writable on this machine`,
275
- });
276
- }
277
- const sourceFile = profile === 'default'
278
- ? path.join(os.homedir(), '.switchbot', 'config.json')
279
- : path.join(os.homedir(), '.switchbot', 'profiles', `${profile}.json`);
280
- if (!fs.existsSync(sourceFile)) {
281
- exitWithError({
282
- code: 2,
283
- kind: 'usage',
284
- message: `source file not found: ${sourceFile}`,
285
- hint: 'Run "switchbot config set-token" first or use "switchbot auth keychain set" directly.',
286
- });
287
- }
288
- let parsed;
289
- try {
290
- const raw = JSON.parse(fs.readFileSync(sourceFile, 'utf-8'));
291
- if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
292
- throw new Error('expected a JSON object');
293
- }
294
- parsed = raw;
295
- }
296
- catch (err) {
297
- exitWithError({
298
- code: 1,
299
- kind: 'runtime',
300
- message: `failed to parse ${sourceFile}: ${err instanceof Error ? err.message : String(err)}`,
301
- });
302
- }
303
- const token = typeof parsed.token === 'string' ? parsed.token : '';
304
- const secret = typeof parsed.secret === 'string' ? parsed.secret : '';
305
- if (!token || !secret) {
306
- exitWithError({
307
- code: 1,
308
- kind: 'runtime',
309
- message: `source file missing token or secret: ${sourceFile}`,
310
- });
311
- }
312
- try {
313
- await store.set(profile, { token, secret });
314
- }
315
- catch (err) {
316
- exitWithError({
317
- code: 1,
318
- kind: 'runtime',
319
- message: `keychain write failed: ${err instanceof Error ? err.message : String(err)}`,
320
- });
321
- }
322
- let cleanup = 'kept';
323
- if (options.deleteFile) {
324
- try {
325
- cleanup = cleanupMigratedSourceFile(sourceFile, parsed);
326
- }
327
- catch (err) {
328
- // Non-fatal: migration succeeded, we just couldn't clean up.
329
- console.error(`warning: could not remove ${sourceFile}: ${err instanceof Error ? err.message : String(err)}`);
330
- }
331
- }
332
- if (isJsonMode()) {
333
- printJson({
334
- profile,
335
- backend: store.name,
336
- migrated: true,
337
- sourceFile,
338
- sourceDeleted: cleanup === 'deleted',
339
- sourceScrubbed: cleanup === 'scrubbed',
340
- });
341
- return;
342
- }
343
- console.log(`Migrated profile "${profile}" to backend "${store.name}".`);
344
- const cleanupNote = cleanup === 'deleted'
345
- ? ' (deleted)'
346
- : cleanup === 'scrubbed'
347
- ? ' (credentials removed; metadata kept)'
348
- : '';
349
- console.log(`source: ${sourceFile}${cleanupNote}`);
350
- if (!options.deleteFile) {
351
- console.log('Source file kept — pass --delete-file on the next run to remove it.');
352
- }
353
- });
354
- }
355
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerBatchCommand(devices: Command): void;