@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,383 +0,0 @@
1
- import { getEffectiveCatalog, deriveSafetyTier, deriveStatusQueries, } from '../devices/catalog.js';
2
- import { RESOURCE_CATALOG } from '../devices/resources.js';
3
- import { loadCache } from '../devices/cache.js';
4
- import { printJson } from '../utils/output.js';
5
- import { enumArg, stringArg } from '../utils/arg-parsers.js';
6
- import { IDENTITY } from './identity.js';
7
- /** Collect the distinct catalog safety tiers actually used across the given entries. Sorted. */
8
- function collectSafetyTiersInUse(entries) {
9
- const seen = new Set();
10
- for (const e of entries) {
11
- for (const c of e.commands) {
12
- seen.add(deriveSafetyTier(c, e));
13
- }
14
- // P11: statusQueries contribute the 'read' tier.
15
- if (deriveStatusQueries(e).length > 0) {
16
- seen.add('read');
17
- }
18
- }
19
- return [...seen].sort();
20
- }
21
- /** P11: total number of read-only queries exposed across the catalog. */
22
- function countStatusQueries(entries) {
23
- return entries.reduce((n, e) => n + deriveStatusQueries(e).length, 0);
24
- }
25
- const AGENT_GUIDE = {
26
- safetyTiers: {
27
- read: 'No state mutation; safe to call freely — does not consume quota unless noted.',
28
- action: 'Mutates device or cloud state but is reversible and routine (turnOn, setColor).',
29
- destructive: 'Hard to reverse / physical-world side effects (unlock, garage open, delete key). Requires explicit user confirmation.',
30
- },
31
- riskLevels: {
32
- low: 'Read-only or non-mutating. Safe to call autonomously.',
33
- medium: 'Mutates state (action tier). Prefer `plan` workflow. Reversible.',
34
- high: 'Destructive / hard-to-reverse. Must go through review-before-execute. Direct --yes execution is reserved for explicit dev profiles.',
35
- },
36
- recommendedModes: {
37
- direct: 'May be called directly without a plan step.',
38
- plan: 'Prefer batching in a plan for traceability and dry-run support.',
39
- 'review-before-execute': 'Must be reviewed/approved before execution. Use `plan save`, `plan review`, `plan approve`, then `plan execute`.',
40
- },
41
- verifiability: {
42
- local: 'Result is fully verifiable from the CLI return value itself.',
43
- deviceConfirmed: 'Device returns an ack with an observable state field.',
44
- deviceDependent: 'Verifiability depends on the specific device (IR is never verifiable).',
45
- none: 'No feedback — e.g. IR transmission. Pair with an external sensor to confirm.',
46
- },
47
- };
48
- function deriveRiskMeta(meta) {
49
- const riskLevel = meta.agentSafetyTier === 'destructive' ? 'high'
50
- : meta.agentSafetyTier === 'action' ? 'medium' : 'low';
51
- return {
52
- riskLevel,
53
- requiresConfirmation: meta.agentSafetyTier === 'destructive',
54
- supportsDryRun: meta.mutating,
55
- idempotencyHint: meta.idempotencySupported ? 'safe' : meta.mutating ? 'non-idempotent' : 'safe',
56
- recommendedMode: meta.agentSafetyTier === 'destructive' ? 'review-before-execute'
57
- : meta.agentSafetyTier === 'action' ? 'plan' : 'direct',
58
- };
59
- }
60
- function meta(mutating, consumesQuota, idempotencySupported, agentSafetyTier, verifiability, typicalLatencyMs) {
61
- return { mutating, consumesQuota, idempotencySupported, agentSafetyTier, verifiability, typicalLatencyMs };
62
- }
63
- const READ_LOCAL = meta(false, false, false, 'read', 'local', 20);
64
- const READ_REMOTE = meta(false, true, false, 'read', 'local', 500);
65
- const ACTION_LOCAL = meta(true, false, false, 'action', 'local', 20);
66
- const ACTION_REMOTE = meta(true, true, false, 'action', 'deviceDependent', 900);
67
- const ACTION_REMOTE_IDEMPOTENT = meta(true, true, true, 'action', 'deviceDependent', 900);
68
- const DESTRUCTIVE_LOCAL = meta(true, false, false, 'destructive', 'local', 20);
69
- const DESTRUCTIVE_REMOTE = meta(true, true, false, 'destructive', 'deviceDependent', 1200);
70
- const READ_NONE = meta(false, false, false, 'read', 'none', 50);
71
- export const COMMAND_META = {
72
- 'agent-bootstrap': READ_LOCAL,
73
- 'auth keychain describe': READ_LOCAL,
74
- 'auth keychain get': READ_LOCAL,
75
- 'auth keychain set': DESTRUCTIVE_LOCAL,
76
- 'auth keychain delete': DESTRUCTIVE_LOCAL,
77
- 'auth keychain migrate': DESTRUCTIVE_LOCAL,
78
- 'cache show': READ_LOCAL,
79
- 'cache clear': ACTION_LOCAL,
80
- 'capabilities': READ_LOCAL,
81
- 'catalog path': READ_LOCAL,
82
- 'catalog show': READ_LOCAL,
83
- 'catalog search': READ_LOCAL,
84
- 'catalog diff': READ_LOCAL,
85
- 'catalog refresh': ACTION_LOCAL,
86
- 'completion': READ_LOCAL,
87
- 'config set-token': DESTRUCTIVE_LOCAL,
88
- 'config show': READ_LOCAL,
89
- 'config list-profiles': READ_LOCAL,
90
- 'config agent-profile': ACTION_LOCAL,
91
- 'daemon start': ACTION_LOCAL,
92
- 'daemon stop': ACTION_LOCAL,
93
- 'daemon status': READ_LOCAL,
94
- 'daemon reload': ACTION_LOCAL,
95
- 'devices list': READ_REMOTE,
96
- 'devices status': READ_REMOTE,
97
- 'devices command': ACTION_REMOTE_IDEMPOTENT,
98
- 'devices types': READ_LOCAL,
99
- 'devices commands': READ_LOCAL,
100
- 'devices describe': READ_REMOTE,
101
- 'devices batch': ACTION_REMOTE_IDEMPOTENT,
102
- 'devices watch': READ_REMOTE,
103
- 'devices explain': READ_LOCAL,
104
- 'devices expand': READ_LOCAL,
105
- 'devices meta set': ACTION_LOCAL,
106
- 'devices meta get': READ_LOCAL,
107
- 'devices meta list': READ_LOCAL,
108
- 'devices meta clear': ACTION_LOCAL,
109
- 'doctor': READ_LOCAL,
110
- 'events tail': READ_NONE,
111
- 'events mqtt-tail': READ_REMOTE,
112
- 'health check': READ_LOCAL,
113
- 'health serve': READ_LOCAL,
114
- 'history show': READ_LOCAL,
115
- 'history replay': ACTION_REMOTE_IDEMPOTENT,
116
- 'history range': READ_LOCAL,
117
- 'history stats': READ_LOCAL,
118
- 'history verify': READ_LOCAL,
119
- 'history aggregate': READ_LOCAL,
120
- 'install': ACTION_LOCAL,
121
- 'mcp serve': READ_LOCAL,
122
- 'plan schema': READ_LOCAL,
123
- 'plan validate': READ_LOCAL,
124
- 'plan suggest': READ_LOCAL,
125
- 'plan run': ACTION_REMOTE_IDEMPOTENT,
126
- 'plan save': ACTION_LOCAL,
127
- 'plan list': READ_LOCAL,
128
- 'plan review': READ_LOCAL,
129
- 'plan approve': DESTRUCTIVE_LOCAL,
130
- 'plan execute': DESTRUCTIVE_REMOTE,
131
- 'policy validate': READ_LOCAL,
132
- 'policy new': ACTION_LOCAL,
133
- 'policy migrate': ACTION_LOCAL,
134
- 'policy diff': READ_LOCAL,
135
- 'policy add-rule': ACTION_LOCAL,
136
- 'policy backup': READ_LOCAL,
137
- 'policy restore': DESTRUCTIVE_LOCAL,
138
- 'quota status': READ_LOCAL,
139
- 'quota reset': ACTION_LOCAL,
140
- 'rules suggest': READ_LOCAL,
141
- 'rules lint': READ_LOCAL,
142
- 'rules list': READ_LOCAL,
143
- 'rules run': ACTION_REMOTE,
144
- 'rules reload': ACTION_LOCAL,
145
- 'rules tail': READ_LOCAL,
146
- 'rules replay': READ_LOCAL,
147
- 'rules webhook-rotate-token': DESTRUCTIVE_LOCAL,
148
- 'rules webhook-show-token': DESTRUCTIVE_LOCAL,
149
- 'rules conflicts': READ_LOCAL,
150
- 'rules doctor': READ_LOCAL,
151
- 'rules summary': READ_LOCAL,
152
- 'rules last-fired': READ_LOCAL,
153
- 'rules explain': READ_LOCAL,
154
- 'schema export': READ_LOCAL,
155
- 'scenes list': READ_REMOTE,
156
- 'scenes execute': ACTION_REMOTE,
157
- 'scenes describe': READ_REMOTE,
158
- 'scenes validate': READ_REMOTE,
159
- 'scenes simulate': READ_REMOTE,
160
- 'scenes explain': READ_REMOTE,
161
- 'status-sync run': ACTION_REMOTE,
162
- 'status-sync start': ACTION_LOCAL,
163
- 'status-sync stop': ACTION_LOCAL,
164
- 'status-sync status': READ_LOCAL,
165
- 'uninstall': ACTION_LOCAL,
166
- 'upgrade-check': READ_REMOTE,
167
- 'webhook setup': ACTION_REMOTE,
168
- 'webhook query': READ_REMOTE,
169
- 'webhook update': ACTION_REMOTE,
170
- 'webhook delete': DESTRUCTIVE_REMOTE,
171
- };
172
- function metaFor(command) {
173
- return COMMAND_META[command] ?? null;
174
- }
175
- const MCP_TOOLS = [
176
- 'list_devices',
177
- 'get_device_status',
178
- 'send_command',
179
- 'describe_device',
180
- 'list_scenes',
181
- 'run_scene',
182
- 'search_catalog',
183
- 'account_overview',
184
- 'get_device_history',
185
- 'query_device_history',
186
- 'aggregate_device_history',
187
- ];
188
- const IDEMPOTENCY_CONTRACT = {
189
- flag: '--idempotency-key <key>',
190
- windowSeconds: 60,
191
- replayBehavior: 'Same (command, parameter, deviceId) within window → returns cached result with replayed:true.',
192
- conflictBehavior: 'Same key + different (command, parameter) within window → exit 2, error:"idempotency_conflict".',
193
- keyStorage: 'In-memory SHA-256 fingerprint; raw key never stored, no disk persistence.',
194
- scope: 'Process-local. Replay + conflict apply within a single long-lived process (MCP session, devices batch, plan run, history replay). Independent CLI invocations do NOT share cache — each fresh `node` process starts empty.',
195
- mcp: 'MCP send_command accepts the same idempotencyKey field with identical semantics.',
196
- };
197
- function enumerateLeafNames(program, prefix = '') {
198
- const out = [];
199
- for (const cmd of program.commands) {
200
- const full = prefix ? `${prefix} ${cmd.name()}` : cmd.name();
201
- if (cmd.commands.length === 0)
202
- out.push(full);
203
- else
204
- out.push(...enumerateLeafNames(cmd, full));
205
- }
206
- return out;
207
- }
208
- function validateCommandMetaCoverage(program) {
209
- const leaves = enumerateLeafNames(program);
210
- return leaves.filter((leaf) => !COMMAND_META[leaf]).sort().map((leaf) => `missing:${leaf}`);
211
- }
212
- function enumerateLeaves(program, prefix = '') {
213
- const out = [];
214
- for (const cmd of program.commands) {
215
- const full = prefix ? `${prefix} ${cmd.name()}` : cmd.name();
216
- if (cmd.commands.length === 0) {
217
- const meta = metaFor(full);
218
- if (!meta)
219
- throw new Error(`capabilities metadata missing for leaf command "${full}"`);
220
- out.push({ name: full, ...meta, ...deriveRiskMeta(meta) });
221
- }
222
- else {
223
- out.push(...enumerateLeaves(cmd, full));
224
- }
225
- }
226
- return out;
227
- }
228
- function projectObject(obj, fields) {
229
- const out = {};
230
- for (const f of fields) {
231
- if (f in obj)
232
- out[f] = obj[f];
233
- }
234
- return out;
235
- }
236
- export function registerCapabilitiesCommand(program) {
237
- const SURFACES = ['cli', 'mcp', 'plan', 'mqtt', 'all'];
238
- program
239
- .command('capabilities')
240
- .description('Print a machine-readable manifest of SwitchBot CLI capabilities (for AI agent bootstrap)')
241
- .option('--minimal', 'Omit per-subcommand flag details to reduce output size (alias of --compact)')
242
- .option('--compact', 'Emit a compact summary: identity + leaf command list with safety metadata only')
243
- .option('--used', 'Restrict the catalog summary to device types present in the local cache. Mirrors `schema export --used`.')
244
- .option('--surface <s>', 'Restrict surfaces block to one of: cli, mcp, plan, mqtt, all (default: all)', enumArg('--surface', SURFACES))
245
- .option('--project <csv>', 'Project top-level fields (e.g. --project identity,commands,agentGuide)', stringArg('--project'))
246
- .action((opts) => {
247
- const coverageIssues = validateCommandMetaCoverage(program);
248
- if (coverageIssues.length > 0) {
249
- throw new Error(`capabilities metadata coverage error: ${coverageIssues.join(', ')}`);
250
- }
251
- const compact = Boolean(opts.minimal || opts.compact);
252
- const catalog = getEffectiveCatalog();
253
- const leaves = enumerateLeaves(program);
254
- const fullCommands = compact
255
- ? undefined
256
- : [
257
- ...program.commands,
258
- { name: () => 'help', description: () => 'Display help for a command', commands: [], options: [], registeredArguments: [] },
259
- ].map((c) => {
260
- const full = c.name();
261
- const entry = {
262
- name: full,
263
- description: c.description(),
264
- };
265
- entry.subcommands = c.commands.map((s) => {
266
- const leafName = `${full} ${s.name()}`;
267
- const meta = metaFor(leafName);
268
- return {
269
- name: s.name(),
270
- description: s.description(),
271
- args: s.registeredArguments.map((a) => ({
272
- name: a.name(),
273
- required: a.required,
274
- variadic: a.variadic,
275
- })),
276
- flags: s.options.map((o) => ({
277
- flags: o.flags,
278
- description: o.description,
279
- })),
280
- ...(meta ?? {}),
281
- };
282
- });
283
- const selfMeta = metaFor(full);
284
- if (selfMeta)
285
- Object.assign(entry, selfMeta);
286
- return entry;
287
- });
288
- const globalFlags = compact
289
- ? undefined
290
- : program.options.map((opt) => ({ flags: opt.flags, description: opt.description }));
291
- const surfaces = {
292
- mcp: {
293
- entry: 'mcp serve',
294
- protocol: 'stdio (default) or --port <n> for HTTP',
295
- tools: MCP_TOOLS,
296
- resources: ['switchbot://events'],
297
- toolMeta: 'Each MCP tool mirrors the CLI leaf command metadata (mutating, consumesQuota, agentSafetyTier, idempotencySupported).',
298
- },
299
- mqtt: {
300
- mode: 'consumer',
301
- authSource: 'SWITCHBOT_TOKEN + SWITCHBOT_SECRET (auto-provisioned via POST /v1.1/iot/credential)',
302
- cliCmd: 'events mqtt-tail',
303
- mcpResource: 'switchbot://events',
304
- protocol: 'MQTTS with TLS client certificates (AWS IoT)',
305
- },
306
- plan: {
307
- schemaCmd: 'plan schema',
308
- validateCmd: 'plan validate -',
309
- runCmd: 'plan run -',
310
- },
311
- cli: {
312
- catalogCmd: 'schema export',
313
- discoveryCmd: 'capabilities',
314
- healthCmd: 'doctor --json',
315
- healthCmdSchemaVersion: 1,
316
- helpFlag: '--help',
317
- idempotencyContract: IDEMPOTENCY_CONTRACT,
318
- },
319
- };
320
- const filteredSurfaces = (() => {
321
- if (!opts.surface || opts.surface === 'all')
322
- return surfaces;
323
- const picked = {};
324
- if (opts.surface in surfaces) {
325
- picked[opts.surface] = surfaces[opts.surface];
326
- }
327
- return picked;
328
- })();
329
- const roles = [...new Set(catalog.map((e) => e.role ?? 'other'))].sort();
330
- const payload = {
331
- version: program.version(),
332
- schemaVersion: '2',
333
- agentGuide: AGENT_GUIDE,
334
- identity: IDENTITY,
335
- surfaces: filteredSurfaces,
336
- commands: compact ? leaves : fullCommands,
337
- // Flat command → meta map keyed by full command path. Published in
338
- // addition to the tree (where every leaf `subcommands[*]` already
339
- // carries the same fields via spread) so agents can do O(1) lookup
340
- // without walking the tree. Includes derived risk metadata fields.
341
- commandMeta: Object.fromEntries(Object.entries(COMMAND_META).map(([k, v]) => [k, { ...v, ...deriveRiskMeta(v) }])),
342
- ...(globalFlags ? { globalFlags } : {}),
343
- catalog: compact ? undefined : {
344
- note: 'Device type catalog (commands, status fields, parameters) is available via `schema export`. Use `schema export --capabilities` for entries annotated with CLI safety metadata.',
345
- typeCount: catalog.length,
346
- },
347
- resources: RESOURCE_CATALOG,
348
- };
349
- if (!compact)
350
- payload.generatedAt = new Date().toISOString();
351
- if (opts.used) {
352
- const cache = loadCache();
353
- if (!cache || Object.keys(cache.devices).length === 0) {
354
- // No cache → return the payload unchanged but add a `usedFilter` note
355
- // so agents know the filter was requested but noop'd.
356
- payload.usedFilter = { applied: false, reason: 'no local cache — run `switchbot devices list` first' };
357
- }
358
- else {
359
- const seen = new Set();
360
- for (const id of Object.keys(cache.devices)) {
361
- const t = cache.devices[id].type;
362
- if (t)
363
- seen.add(t);
364
- }
365
- const filteredCatalog = catalog.filter((e) => seen.has(e.type) || (e.aliases ?? []).some((a) => seen.has(a)));
366
- payload.catalog = {
367
- typeCount: filteredCatalog.length,
368
- roles: [...new Set(filteredCatalog.map((e) => e.role ?? 'other'))].sort(),
369
- destructiveCommandCount: filteredCatalog.reduce((n, e) => n + e.commands.filter((c) => deriveSafetyTier(c, e) === 'destructive').length, 0),
370
- safetyTiersInUse: collectSafetyTiersInUse(filteredCatalog),
371
- readOnlyTypeCount: filteredCatalog.filter((e) => e.readOnly).length,
372
- readOnlyQueryCount: countStatusQueries(filteredCatalog),
373
- };
374
- payload.usedFilter = { applied: true, typesInCache: [...seen].sort() };
375
- }
376
- }
377
- const projected = opts.project
378
- ? projectObject(payload, opts.project.split(',').map((s) => s.trim()).filter(Boolean))
379
- : payload;
380
- printJson(projected);
381
- });
382
- }
383
- //# sourceMappingURL=capabilities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GAGpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,gGAAgG;AAChG,SAAS,uBAAuB,CAAC,OAA6B;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAc,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,iDAAiD;QACjD,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,yEAAyE;AACzE,SAAS,kBAAkB,CAAC,OAA6B;IACvD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAQD,MAAM,WAAW,GAAG;IAClB,WAAW,EAAE;QACX,IAAI,EAAE,+EAA+E;QACrF,MAAM,EAAE,iFAAiF;QACzF,WAAW,EAAE,uHAAuH;KACrI;IACD,UAAU,EAAE;QACV,GAAG,EAAE,uDAAuD;QAC5D,MAAM,EAAE,kEAAkE;QAC1E,IAAI,EAAE,qIAAqI;KAC5I;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,6CAA6C;QACrD,IAAI,EAAE,iEAAiE;QACvE,uBAAuB,EAAE,kHAAkH;KAC5I;IACD,aAAa,EAAE;QACb,KAAK,EAAE,8DAA8D;QACrE,eAAe,EAAE,uDAAuD;QACxE,eAAe,EAAE,wEAAwE;QACzF,IAAI,EAAE,8EAA8E;KACrF;CACF,CAAC;AAsBF,SAAS,cAAc,CAAC,IAAiB;IACvC,MAAM,SAAS,GAAc,IAAI,CAAC,eAAe,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM;QAC1E,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,OAAO;QACL,SAAS;QACT,oBAAoB,EAAE,IAAI,CAAC,eAAe,KAAK,aAAa;QAC5D,cAAc,EAAE,IAAI,CAAC,QAAQ;QAC7B,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM;QAC/F,eAAe,EAAE,IAAI,CAAC,eAAe,KAAK,aAAa,CAAC,CAAC,CAAC,uBAAuB;YAC/E,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CACX,QAAiB,EACjB,aAAsB,EACtB,oBAA6B,EAC7B,eAAgC,EAChC,aAA4B,EAC5B,gBAAwB;IAExB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACrE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAChF,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC1F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/E,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAgC;IACvD,iBAAiB,EAAE,UAAU;IAC7B,wBAAwB,EAAE,UAAU;IACpC,mBAAmB,EAAE,UAAU;IAC/B,mBAAmB,EAAE,iBAAiB;IACtC,sBAAsB,EAAE,iBAAiB;IACzC,uBAAuB,EAAE,iBAAiB;IAC1C,YAAY,EAAE,UAAU;IACxB,aAAa,EAAE,YAAY;IAC3B,cAAc,EAAE,UAAU;IAC1B,cAAc,EAAE,UAAU;IAC1B,cAAc,EAAE,UAAU;IAC1B,gBAAgB,EAAE,UAAU;IAC5B,cAAc,EAAE,UAAU;IAC1B,iBAAiB,EAAE,YAAY;IAC/B,YAAY,EAAE,UAAU;IACxB,kBAAkB,EAAE,iBAAiB;IACrC,aAAa,EAAE,UAAU;IACzB,sBAAsB,EAAE,UAAU;IAClC,sBAAsB,EAAE,YAAY;IACpC,cAAc,EAAE,YAAY;IAC5B,aAAa,EAAE,YAAY;IAC3B,eAAe,EAAE,UAAU;IAC3B,eAAe,EAAE,YAAY;IAC7B,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE,WAAW;IAC7B,iBAAiB,EAAE,wBAAwB;IAC3C,eAAe,EAAE,UAAU;IAC3B,kBAAkB,EAAE,UAAU;IAC9B,kBAAkB,EAAE,WAAW;IAC/B,eAAe,EAAE,wBAAwB;IACzC,eAAe,EAAE,WAAW;IAC5B,iBAAiB,EAAE,UAAU;IAC7B,gBAAgB,EAAE,UAAU;IAC5B,kBAAkB,EAAE,YAAY;IAChC,kBAAkB,EAAE,UAAU;IAC9B,mBAAmB,EAAE,UAAU;IAC/B,oBAAoB,EAAE,YAAY;IAClC,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,SAAS;IACxB,kBAAkB,EAAE,WAAW;IAC/B,cAAc,EAAE,UAAU;IAC1B,cAAc,EAAE,UAAU;IAC1B,cAAc,EAAE,UAAU;IAC1B,gBAAgB,EAAE,wBAAwB;IAC1C,eAAe,EAAE,UAAU;IAC3B,eAAe,EAAE,UAAU;IAC3B,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,UAAU;IAC/B,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,UAAU;IACvB,aAAa,EAAE,UAAU;IACzB,eAAe,EAAE,UAAU;IAC3B,cAAc,EAAE,UAAU;IAC1B,UAAU,EAAE,wBAAwB;IACpC,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,UAAU;IACvB,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,iBAAiB;IACjC,cAAc,EAAE,kBAAkB;IAClC,iBAAiB,EAAE,UAAU;IAC7B,YAAY,EAAE,YAAY;IAC1B,gBAAgB,EAAE,YAAY;IAC9B,aAAa,EAAE,UAAU;IACzB,iBAAiB,EAAE,YAAY;IAC/B,eAAe,EAAE,UAAU;IAC3B,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,UAAU;IAC1B,aAAa,EAAE,YAAY;IAC3B,eAAe,EAAE,UAAU;IAC3B,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,UAAU;IACxB,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,YAAY;IAC5B,YAAY,EAAE,UAAU;IACxB,cAAc,EAAE,UAAU;IAC1B,4BAA4B,EAAE,iBAAiB;IAC/C,0BAA0B,EAAE,iBAAiB;IAC7C,iBAAiB,EAAE,UAAU;IAC7B,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,UAAU;IAC3B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,WAAW;IAC1B,gBAAgB,EAAE,aAAa;IAC/B,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,WAAW;IAC9B,gBAAgB,EAAE,WAAW;IAC7B,iBAAiB,EAAE,aAAa;IAChC,mBAAmB,EAAE,YAAY;IACjC,kBAAkB,EAAE,YAAY;IAChC,oBAAoB,EAAE,UAAU;IAChC,WAAW,EAAE,YAAY;IACzB,eAAe,EAAE,WAAW;IAC5B,eAAe,EAAE,aAAa;IAC9B,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,aAAa;IAC/B,gBAAgB,EAAE,kBAAkB;CACrC,CAAC;AAEF,SAAS,OAAO,CAAC,OAAe;IAC9B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,sBAAsB;IACtB,0BAA0B;CAC3B,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,IAAI,EAAE,yBAAyB;IAC/B,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,+FAA+F;IAC/G,gBAAgB,EAAE,iGAAiG;IACnH,UAAU,EAAE,2EAA2E;IACvF,KAAK,EAAE,4NAA4N;IACnO,GAAG,EAAE,kFAAkF;CACxF,CAAC;AAiBF,SAAS,kBAAkB,CAAC,OAAgB,EAAE,MAAM,GAAG,EAAE;IACvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACzC,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAgB;IACnD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB,EAAE,MAAM,GAAG,EAAE;IACpD,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,GAAG,CAAC,CAAC;YACvF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAoC,GAAM,EAAE,MAAgB;IAChF,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG;YAAG,GAA+B,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;IAChE,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,0FAA0F,CAAC;SACvG,MAAM,CAAC,WAAW,EAAE,6EAA6E,CAAC;SAClG,MAAM,CAAC,WAAW,EAAE,gFAAgF,CAAC;SACrG,MAAM,CAAC,QAAQ,EAAE,0GAA0G,CAAC;SAC5H,MAAM,CAAC,eAAe,EAAE,6EAA6E,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;SACtI,MAAM,CAAC,iBAAiB,EAAE,wEAAwE,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;SAC3H,MAAM,CAAC,CAAC,IAAkG,EAAE,EAAE;QAC7G,MAAM,cAAc,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,GAAG,OAAO,CAAC,QAAQ;gBACnB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,4BAA4B,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAwB;aAClJ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtB,MAAM,KAAK,GAA4B;oBACrC,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;iBAC7B,CAAC;gBACF,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvC,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC/B,OAAO;wBACL,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;wBACd,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;wBAC5B,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACtC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;4BACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;yBACrB,CAAC,CAAC;wBACH,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC3B,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,WAAW,EAAE,CAAC,CAAC,WAAW;yBAC3B,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;qBAChB,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,QAAQ;oBAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;QAEP,MAAM,WAAW,GAAG,OAAO;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEvF,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE;gBACH,KAAK,EAAE,WAAW;gBAClB,QAAQ,EAAE,wCAAwC;gBAClD,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,CAAC,oBAAoB,CAAC;gBACjC,QAAQ,EAAE,uHAAuH;aAClI;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,qFAAqF;gBACjG,MAAM,EAAE,kBAAkB;gBAC1B,WAAW,EAAE,oBAAoB;gBACjC,QAAQ,EAAE,8CAA8C;aACzD;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,iBAAiB;gBAC9B,MAAM,EAAE,YAAY;aACrB;YACD,GAAG,EAAE;gBACH,UAAU,EAAE,eAAe;gBAC3B,YAAY,EAAE,cAAc;gBAC5B,SAAS,EAAE,eAAe;gBAC1B,sBAAsB,EAAE,CAAC;gBACzB,QAAQ,EAAE,QAAQ;gBAClB,mBAAmB,EAAE,oBAAoB;aAC1C;SACF,CAAC;QAEF,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;gBAAE,OAAO,QAAQ,CAAC;YAC7D,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAI,QAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEzE,MAAM,OAAO,GAA4B;YACvC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;YAC1B,aAAa,EAAE,GAAG;YAClB,UAAU,EAAE,WAAW;YACvB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;YACzC,mEAAmE;YACnE,kEAAkE;YAClE,mEAAmE;YACnE,mEAAmE;YACnE,WAAW,EAAE,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAClF;YACD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7B,IAAI,EAAE,gLAAgL;gBACtL,SAAS,EAAE,OAAO,CAAC,MAAM;aAC1B;YACD,SAAS,EAAE,gBAAgB;SAC5B,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtD,sEAAsE;gBACtE,sDAAsD;gBACtD,OAAO,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qDAAqD,EAAE,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC/B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;oBACjC,IAAI,CAAC;wBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;gBACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;gBACF,OAAO,CAAC,OAAO,GAAG;oBAChB,SAAS,EAAE,eAAe,CAAC,MAAM;oBACjC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBACzE,uBAAuB,EAAE,eAAe,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,MAAM,EAC/E,CAAC,CACF;oBACD,gBAAgB,EAAE,uBAAuB,CAAC,eAAe,CAAC;oBAC1D,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;oBACnE,kBAAkB,EAAE,kBAAkB,CAAC,eAAe,CAAC;iBACxD,CAAC;gBACF,OAAO,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACzE,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;YAC5B,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtF,CAAC,CAAC,OAAO,CAAC;QAEZ,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerCatalogCommand(program: Command): void;