boohee-cli 1.0.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 (212) hide show
  1. package/README.md +207 -0
  2. package/bin/run.js +75 -0
  3. package/dist/base.d.ts +21 -0
  4. package/dist/base.d.ts.map +1 -0
  5. package/dist/base.js +77 -0
  6. package/dist/base.js.map +1 -0
  7. package/dist/commands/auth/status.d.ts +7 -0
  8. package/dist/commands/auth/status.d.ts.map +1 -0
  9. package/dist/commands/auth/status.js +28 -0
  10. package/dist/commands/auth/status.js.map +1 -0
  11. package/dist/commands/batch.d.ts +15 -0
  12. package/dist/commands/batch.d.ts.map +1 -0
  13. package/dist/commands/batch.js +63 -0
  14. package/dist/commands/batch.js.map +1 -0
  15. package/dist/commands/categories.d.ts +7 -0
  16. package/dist/commands/categories.d.ts.map +1 -0
  17. package/dist/commands/categories.js +14 -0
  18. package/dist/commands/categories.js.map +1 -0
  19. package/dist/commands/config/get.d.ts +10 -0
  20. package/dist/commands/config/get.d.ts.map +1 -0
  21. package/dist/commands/config/get.js +29 -0
  22. package/dist/commands/config/get.js.map +1 -0
  23. package/dist/commands/config/init.d.ts +12 -0
  24. package/dist/commands/config/init.d.ts.map +1 -0
  25. package/dist/commands/config/init.js +38 -0
  26. package/dist/commands/config/init.js.map +1 -0
  27. package/dist/commands/config/list.d.ts +7 -0
  28. package/dist/commands/config/list.d.ts.map +1 -0
  29. package/dist/commands/config/list.js +19 -0
  30. package/dist/commands/config/list.js.map +1 -0
  31. package/dist/commands/config/reset.d.ts +7 -0
  32. package/dist/commands/config/reset.d.ts.map +1 -0
  33. package/dist/commands/config/reset.js +20 -0
  34. package/dist/commands/config/reset.js.map +1 -0
  35. package/dist/commands/config/set.d.ts +11 -0
  36. package/dist/commands/config/set.d.ts.map +1 -0
  37. package/dist/commands/config/set.js +43 -0
  38. package/dist/commands/config/set.js.map +1 -0
  39. package/dist/commands/detail.d.ts +10 -0
  40. package/dist/commands/detail.d.ts.map +1 -0
  41. package/dist/commands/detail.js +27 -0
  42. package/dist/commands/detail.js.map +1 -0
  43. package/dist/commands/food/categories.d.ts +13 -0
  44. package/dist/commands/food/categories.d.ts.map +1 -0
  45. package/dist/commands/food/categories.js +28 -0
  46. package/dist/commands/food/categories.js.map +1 -0
  47. package/dist/commands/food/detail.d.ts +18 -0
  48. package/dist/commands/food/detail.d.ts.map +1 -0
  49. package/dist/commands/food/detail.js +44 -0
  50. package/dist/commands/food/detail.js.map +1 -0
  51. package/dist/commands/food/image-recognize-detail.d.ts +13 -0
  52. package/dist/commands/food/image-recognize-detail.d.ts.map +1 -0
  53. package/dist/commands/food/image-recognize-detail.js +26 -0
  54. package/dist/commands/food/image-recognize-detail.js.map +1 -0
  55. package/dist/commands/food/image-recognize.d.ts +13 -0
  56. package/dist/commands/food/image-recognize.d.ts.map +1 -0
  57. package/dist/commands/food/image-recognize.js +29 -0
  58. package/dist/commands/food/image-recognize.js.map +1 -0
  59. package/dist/commands/food/index.d.ts +7 -0
  60. package/dist/commands/food/index.d.ts.map +1 -0
  61. package/dist/commands/food/index.js +10 -0
  62. package/dist/commands/food/index.js.map +1 -0
  63. package/dist/commands/food/ingredients.d.ts +13 -0
  64. package/dist/commands/food/ingredients.d.ts.map +1 -0
  65. package/dist/commands/food/ingredients.js +31 -0
  66. package/dist/commands/food/ingredients.js.map +1 -0
  67. package/dist/commands/food/list.d.ts +20 -0
  68. package/dist/commands/food/list.d.ts.map +1 -0
  69. package/dist/commands/food/list.js +37 -0
  70. package/dist/commands/food/list.js.map +1 -0
  71. package/dist/commands/food/ranks.d.ts +17 -0
  72. package/dist/commands/food/ranks.d.ts.map +1 -0
  73. package/dist/commands/food/ranks.js +39 -0
  74. package/dist/commands/food/ranks.js.map +1 -0
  75. package/dist/commands/food/search.d.ts +18 -0
  76. package/dist/commands/food/search.d.ts.map +1 -0
  77. package/dist/commands/food/search.js +57 -0
  78. package/dist/commands/food/search.js.map +1 -0
  79. package/dist/commands/food/text-recognize.d.ts +13 -0
  80. package/dist/commands/food/text-recognize.d.ts.map +1 -0
  81. package/dist/commands/food/text-recognize.js +26 -0
  82. package/dist/commands/food/text-recognize.js.map +1 -0
  83. package/dist/commands/food/units.d.ts +10 -0
  84. package/dist/commands/food/units.d.ts.map +1 -0
  85. package/dist/commands/food/units.js +23 -0
  86. package/dist/commands/food/units.js.map +1 -0
  87. package/dist/commands/index.d.ts +6 -0
  88. package/dist/commands/index.d.ts.map +1 -0
  89. package/dist/commands/index.js +62 -0
  90. package/dist/commands/index.js.map +1 -0
  91. package/dist/commands/meta.d.ts +11 -0
  92. package/dist/commands/meta.d.ts.map +1 -0
  93. package/dist/commands/meta.js +76 -0
  94. package/dist/commands/meta.js.map +1 -0
  95. package/dist/commands/rank.d.ts +10 -0
  96. package/dist/commands/rank.d.ts.map +1 -0
  97. package/dist/commands/rank.js +26 -0
  98. package/dist/commands/rank.js.map +1 -0
  99. package/dist/commands/raw.d.ts +19 -0
  100. package/dist/commands/raw.d.ts.map +1 -0
  101. package/dist/commands/raw.js +63 -0
  102. package/dist/commands/raw.js.map +1 -0
  103. package/dist/commands/recognize-image.d.ts +16 -0
  104. package/dist/commands/recognize-image.d.ts.map +1 -0
  105. package/dist/commands/recognize-image.js +106 -0
  106. package/dist/commands/recognize-image.js.map +1 -0
  107. package/dist/commands/recognize.d.ts +16 -0
  108. package/dist/commands/recognize.d.ts.map +1 -0
  109. package/dist/commands/recognize.js +43 -0
  110. package/dist/commands/recognize.js.map +1 -0
  111. package/dist/commands/search.d.ts +10 -0
  112. package/dist/commands/search.d.ts.map +1 -0
  113. package/dist/commands/search.js +28 -0
  114. package/dist/commands/search.js.map +1 -0
  115. package/dist/commands/version.d.ts +7 -0
  116. package/dist/commands/version.d.ts.map +1 -0
  117. package/dist/commands/version.js +10 -0
  118. package/dist/commands/version.js.map +1 -0
  119. package/dist/hooks/prerun.d.ts +4 -0
  120. package/dist/hooks/prerun.d.ts.map +1 -0
  121. package/dist/hooks/prerun.js +24 -0
  122. package/dist/hooks/prerun.js.map +1 -0
  123. package/dist/index.d.ts +2 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +3 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/lib/api/client.d.ts +25 -0
  128. package/dist/lib/api/client.d.ts.map +1 -0
  129. package/dist/lib/api/client.js +59 -0
  130. package/dist/lib/api/client.js.map +1 -0
  131. package/dist/lib/api/endpoints.d.ts +17 -0
  132. package/dist/lib/api/endpoints.d.ts.map +1 -0
  133. package/dist/lib/api/endpoints.js +18 -0
  134. package/dist/lib/api/endpoints.js.map +1 -0
  135. package/dist/lib/api/index.d.ts +4 -0
  136. package/dist/lib/api/index.d.ts.map +1 -0
  137. package/dist/lib/api/index.js +5 -0
  138. package/dist/lib/api/index.js.map +1 -0
  139. package/dist/lib/api/interceptors.d.ts +3 -0
  140. package/dist/lib/api/interceptors.d.ts.map +1 -0
  141. package/dist/lib/api/interceptors.js +44 -0
  142. package/dist/lib/api/interceptors.js.map +1 -0
  143. package/dist/lib/api/types.d.ts +65 -0
  144. package/dist/lib/api/types.d.ts.map +1 -0
  145. package/dist/lib/api/types.js +2 -0
  146. package/dist/lib/api/types.js.map +1 -0
  147. package/dist/lib/auth.d.ts +17 -0
  148. package/dist/lib/auth.d.ts.map +1 -0
  149. package/dist/lib/auth.js +51 -0
  150. package/dist/lib/auth.js.map +1 -0
  151. package/dist/lib/cache.d.ts +13 -0
  152. package/dist/lib/cache.d.ts.map +1 -0
  153. package/dist/lib/cache.js +64 -0
  154. package/dist/lib/cache.js.map +1 -0
  155. package/dist/lib/config.d.ts +22 -0
  156. package/dist/lib/config.d.ts.map +1 -0
  157. package/dist/lib/config.js +139 -0
  158. package/dist/lib/config.js.map +1 -0
  159. package/dist/lib/errors/api-error.d.ts +18 -0
  160. package/dist/lib/errors/api-error.d.ts.map +1 -0
  161. package/dist/lib/errors/api-error.js +24 -0
  162. package/dist/lib/errors/api-error.js.map +1 -0
  163. package/dist/lib/errors/auth-error.d.ts +16 -0
  164. package/dist/lib/errors/auth-error.d.ts.map +1 -0
  165. package/dist/lib/errors/auth-error.js +21 -0
  166. package/dist/lib/errors/auth-error.js.map +1 -0
  167. package/dist/lib/errors/base.d.ts +10 -0
  168. package/dist/lib/errors/base.d.ts.map +1 -0
  169. package/dist/lib/errors/base.js +21 -0
  170. package/dist/lib/errors/base.js.map +1 -0
  171. package/dist/lib/errors/config-error.d.ts +12 -0
  172. package/dist/lib/errors/config-error.d.ts.map +1 -0
  173. package/dist/lib/errors/config-error.js +20 -0
  174. package/dist/lib/errors/config-error.js.map +1 -0
  175. package/dist/lib/errors/index.d.ts +6 -0
  176. package/dist/lib/errors/index.d.ts.map +1 -0
  177. package/dist/lib/errors/index.js +7 -0
  178. package/dist/lib/errors/index.js.map +1 -0
  179. package/dist/lib/errors/validation-error.d.ts +13 -0
  180. package/dist/lib/errors/validation-error.d.ts.map +1 -0
  181. package/dist/lib/errors/validation-error.js +27 -0
  182. package/dist/lib/errors/validation-error.js.map +1 -0
  183. package/dist/lib/logger.d.ts +20 -0
  184. package/dist/lib/logger.d.ts.map +1 -0
  185. package/dist/lib/logger.js +63 -0
  186. package/dist/lib/logger.js.map +1 -0
  187. package/dist/lib/output/formatter.d.ts +9 -0
  188. package/dist/lib/output/formatter.d.ts.map +1 -0
  189. package/dist/lib/output/formatter.js +8 -0
  190. package/dist/lib/output/formatter.js.map +1 -0
  191. package/dist/lib/output/index.d.ts +8 -0
  192. package/dist/lib/output/index.d.ts.map +1 -0
  193. package/dist/lib/output/index.js +19 -0
  194. package/dist/lib/output/index.js.map +1 -0
  195. package/dist/lib/output/json.d.ts +8 -0
  196. package/dist/lib/output/json.d.ts.map +1 -0
  197. package/dist/lib/output/json.js +16 -0
  198. package/dist/lib/output/json.js.map +1 -0
  199. package/dist/lib/output/table.d.ts +17 -0
  200. package/dist/lib/output/table.d.ts.map +1 -0
  201. package/dist/lib/output/table.js +108 -0
  202. package/dist/lib/output/table.js.map +1 -0
  203. package/dist/lib/output/yaml.d.ts +8 -0
  204. package/dist/lib/output/yaml.d.ts.map +1 -0
  205. package/dist/lib/output/yaml.js +18 -0
  206. package/dist/lib/output/yaml.js.map +1 -0
  207. package/dist/types.d.ts +249 -0
  208. package/dist/types.d.ts.map +1 -0
  209. package/dist/types.js +3 -0
  210. package/dist/types.js.map +1 -0
  211. package/package.json +76 -0
  212. package/resources/config-template.json +17 -0
package/README.md ADDED
@@ -0,0 +1,207 @@
1
+ # Boohee CLI
2
+
3
+ CLI tool for Boohee Open Platform API, optimized for AI Agent integration.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g boohee-cli
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```bash
14
+ # Set API Key (required)
15
+ export BOOHEE_API_KEY=sk-xxx
16
+
17
+ # Initialize configuration (optional)
18
+ boohee config init
19
+
20
+ # Search for foods
21
+ boohee search 苹果
22
+
23
+ # Get food details
24
+ boohee detail 10001
25
+ ```
26
+
27
+ ## Commands
28
+
29
+ ### Shortcuts
30
+
31
+ | Command | Description |
32
+ |---------|-------------|
33
+ | `boohee search <keyword>` | Search foods |
34
+ | `boohee detail <code>` | Get food details |
35
+ | `boohee categories` | List food categories |
36
+ | `boohee rank <nutrient>` | Food rankings |
37
+ | `boohee recognize <text>` | Text recognition |
38
+
39
+ ### Food Module
40
+
41
+ | Command | Description |
42
+ |---------|-------------|
43
+ | `boohee food:search` | Search foods with full options |
44
+ | `boohee food:detail` | Get detailed food info |
45
+ | `boohee food:categories` | Get food categories |
46
+ | `boohee food:list` | List foods by category |
47
+ | `boohee food:units` | Get food units |
48
+ | `boohee food:ingredients` | Batch nutrition calculation |
49
+ | `boohee food:ranks` | Food rankings |
50
+ | `boohee food:image-recognize` | Image recognition |
51
+ | `boohee food:text-recognize` | Text recognition |
52
+
53
+ ### Configuration
54
+
55
+ | Command | Description |
56
+ |---------|-------------|
57
+ | `boohee config:init` | Initialize config |
58
+ | `boohee config:list` | List all config |
59
+ | `boohee config:get <key>` | Get config value |
60
+ | `boohee config:set <key> <value>` | Set config value |
61
+ | `boohee config:reset` | Reset to defaults |
62
+
63
+ ### Utilities
64
+
65
+ | Command | Description |
66
+ |---------|-------------|
67
+ | `boohee raw <method> <path>` | Raw API calls |
68
+ | `boohee meta` | Command metadata |
69
+ | `boohee batch` | Batch execution |
70
+
71
+ ## Output Formats
72
+
73
+ ```bash
74
+ # JSON output (AI Agent recommended)
75
+ boohee search 苹果 -o json
76
+
77
+ # Table output (default)
78
+ boohee search 苹果 -o table
79
+
80
+ # YAML output
81
+ boohee search 苹果 -o yaml
82
+
83
+ # Machine-readable mode
84
+ boohee search 苹果 --machine-readable
85
+ ```
86
+
87
+ ## Environment Variables
88
+
89
+ | Variable | Required | Description |
90
+ |----------|----------|-------------|
91
+ | `BOOHEE_API_KEY` | Yes | API Key |
92
+ | `BOOHEE_API_BASE_URL` | No | API base URL |
93
+ | `BOOHEE_OUTPUT_FORMAT` | No | Default output format |
94
+
95
+ ## AI Agent Integration
96
+
97
+ ### Structured JSON Output
98
+
99
+ All commands support `--output json` for structured output:
100
+
101
+ ```json
102
+ {
103
+ "success": true,
104
+ "data": { ... },
105
+ "meta": {
106
+ "command": "food:search",
107
+ "duration": 234,
108
+ "timestamp": "2024-01-15T10:30:00Z"
109
+ }
110
+ }
111
+ ```
112
+
113
+ ### Command Discovery
114
+
115
+ ```bash
116
+ boohee meta # All commands
117
+ boohee meta food:search # Specific command
118
+ ```
119
+
120
+ ### Error Handling
121
+
122
+ ```json
123
+ {
124
+ "success": false,
125
+ "error": {
126
+ "code": "AUTH_MISSING",
127
+ "message": "API Key not found",
128
+ "recoverable": true,
129
+ "suggestion": "Set BOOHEE_API_KEY environment variable"
130
+ }
131
+ }
132
+ ```
133
+
134
+ ## License
135
+
136
+ MIT
137
+
138
+
139
+ -----
140
+
141
+ 方式一:发布到 npm(推荐)
142
+
143
+ 1. 准备发布
144
+
145
+ cd /Users/a2821/Binlt/Work/Code/open_food/cli
146
+
147
+ # 确认 package.json 信息正确
148
+ npm version patch # 或 minor/major,更新版本号
149
+
150
+ # 登录 npm(首次需要)
151
+ npm login
152
+
153
+ # 发布到 npm
154
+ npm publish
155
+
156
+ 2. 别人安装
157
+
158
+ npm install -g boohee-cli
159
+
160
+ # 使用
161
+ boohee --help
162
+
163
+ ---
164
+ 方式二:从 GitHub 安装
165
+
166
+ 1. 推送到 GitHub
167
+
168
+ git remote add origin https://github.com/your-username/boohee-cli.git
169
+ git push -u origin main
170
+
171
+ 2. 别人安装
172
+
173
+ # 从 GitHub 直接安装
174
+ npm install -g your-username/boohee-cli
175
+
176
+ # 或者克隆后本地安装
177
+ git clone https://github.com/your-username/boohee-cli.git
178
+ cd boohee-cli
179
+ npm install
180
+ npm link
181
+
182
+ ---
183
+ 方式三:私有分发(内部使用)
184
+
185
+ 1. 打包成 tar.gz
186
+
187
+ cd /Users/a2821/Binlt/Work/Code/open_food/cli
188
+
189
+ # 打包
190
+ npm pack # 生成 boohee-cli-1.0.0.tgz
191
+
192
+ # 分发这个文件给别人
193
+
194
+ 2. 别人安装
195
+
196
+ npm install -g boohee-cli-1.0.0.tgz
197
+
198
+ ---
199
+ 方式四:内部 npm registry
200
+
201
+ 如果公司有私有 npm registry:
202
+
203
+ # 发布到私有 registry
204
+ npm publish --registry=https://your-internal-registry.com
205
+
206
+ # 别人安装
207
+ npm install -g boohee-cli --registry=https://your-internal-registry.com
package/bin/run.js ADDED
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env node --no-warnings
2
+
3
+ import { execute } from '@oclif/core'
4
+ import { readFileSync } from 'fs'
5
+ import { fileURLToPath } from 'url'
6
+ import { dirname, join } from 'path'
7
+
8
+ const __filename = fileURLToPath(import.meta.url)
9
+ const __dirname = dirname(__filename)
10
+ const pkgPath = join(__dirname, '..', 'package.json')
11
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'))
12
+
13
+ const args = process.argv.slice(2)
14
+
15
+ // Handle --version or -v
16
+ if (args.includes('--version') || args.includes('-v')) {
17
+ console.log(pkg.version)
18
+ process.exit(0)
19
+ }
20
+
21
+ // Only show enhanced help when no command is provided
22
+ // If there's a command (first arg doesn't start with -), let oclif handle it
23
+ const firstArg = args[0]
24
+ const isHelpFlag = firstArg === '--help' || firstArg === '-h'
25
+ const hasCommand = firstArg && !firstArg.startsWith('-')
26
+
27
+ if ((args.length === 0 || isHelpFlag) && !hasCommand) {
28
+ console.log(`
29
+ 🍎 Boohee CLI v${pkg.version} - 薄荷科学.AI 平台命令行工具
30
+
31
+ 用法: boohee <命令> [参数] [选项]
32
+
33
+ 快速开始
34
+ ────────────────────────────────────────────────────────────────
35
+ export BOOHEE_API_KEY=sk-xxx # 设置 API Key
36
+ boohee search 苹果 # 搜索食物
37
+ boohee detail 10001 # 获取详情
38
+
39
+ 常用命令示例
40
+ ────────────────────────────────────────────────────────────────
41
+ boohee search 苹果 # 搜索食物
42
+ boohee detail 10001 # 获取详情
43
+ boohee categories # 食物分类
44
+ boohee rank 蛋白质 # 营养排名
45
+ boohee recognize "一杯牛奶" # 文字识别
46
+ boohee recognize-image --url <图片URL> # 图片识别
47
+
48
+ 命令列表
49
+ ────────────────────────────────────────────────────────────────
50
+ search <关键词> 搜索食物
51
+ detail <编码> 获取食物详情
52
+ categories 获取食物分类
53
+ rank <营养素> 食物营养排名
54
+ recognize 文字识别食物
55
+ recognize-image 图片识别食物
56
+
57
+ food:search 高级搜索 (分页/排序)
58
+ food:detail 详细营养成分
59
+ food:list 按分类获取食物
60
+ food:ingredients 批量营养计算
61
+
62
+ config:init 初始化配置
63
+ config:list 查看配置
64
+ config:set 设置配置项
65
+ auth:status 认证状态
66
+
67
+ 查看更多: boohee food --help | boohee config --help
68
+
69
+ 输出格式: -o table (默认) | -o json (推荐) | -o yaml
70
+
71
+ `)
72
+ process.exit(0)
73
+ }
74
+
75
+ await execute({ development: false, dir: import.meta.url })
package/dist/base.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { Command } from '@oclif/core';
2
+ import { OutputFormat } from './lib/output/index.js';
3
+ import { CliError } from './lib/errors/index.js';
4
+ export declare abstract class BaseCommand extends Command {
5
+ static baseFlags: {
6
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'machine-readable': import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ protected startTime: number;
11
+ protected parsedFlags: Record<string, unknown>;
12
+ init(): Promise<void>;
13
+ protected getOutputFormat(): OutputFormat;
14
+ protected getDuration(): number;
15
+ protected output<T>(data: T): void;
16
+ protected outputError(error: CliError): void;
17
+ protected requireAuth(): void;
18
+ protected debugLog(message: string, data?: unknown): void;
19
+ protected getApiKey(): string;
20
+ }
21
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C,OAAO,EAA4B,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,8BAAsB,WAAY,SAAQ,OAAO;IAC/C,MAAM,CAAC,SAAS;;;;MAef;IAED,SAAS,CAAC,SAAS,EAAE,MAAM,CAAI;IAC/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAK;IAE7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,SAAS,CAAC,eAAe,IAAI,YAAY;IAKzC,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IASlC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAU5C,SAAS,CAAC,WAAW,IAAI,IAAI;IAO7B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IASzD,SAAS,CAAC,SAAS,IAAI,MAAM;CAI9B"}
package/dist/base.js ADDED
@@ -0,0 +1,77 @@
1
+ // src/base.ts
2
+ import { Command, Flags } from '@oclif/core';
3
+ import chalk from 'chalk';
4
+ import { getConfig } from './lib/config.js';
5
+ import { getAuth } from './lib/auth.js';
6
+ import { getFormatter, createMeta } from './lib/output/index.js';
7
+ export class BaseCommand extends Command {
8
+ static baseFlags = {
9
+ 'output': Flags.string({
10
+ char: 'o',
11
+ description: 'Output format',
12
+ options: ['json', 'table', 'yaml'],
13
+ }),
14
+ 'machine-readable': Flags.boolean({
15
+ description: 'Machine-readable output for AI Agent',
16
+ default: false,
17
+ }),
18
+ 'debug': Flags.boolean({
19
+ char: 'd',
20
+ description: 'Enable debug logging',
21
+ default: false,
22
+ }),
23
+ };
24
+ startTime = 0;
25
+ parsedFlags = {};
26
+ async init() {
27
+ await super.init();
28
+ this.startTime = Date.now();
29
+ const { flags } = await this.parse(this.ctor);
30
+ this.parsedFlags = flags;
31
+ // Apply machine-readable mode
32
+ if (this.parsedFlags['machine-readable']) {
33
+ this.parsedFlags.output = 'json';
34
+ }
35
+ }
36
+ getOutputFormat() {
37
+ const config = getConfig();
38
+ return this.parsedFlags.output || config.get('output').format;
39
+ }
40
+ getDuration() {
41
+ return Date.now() - this.startTime;
42
+ }
43
+ output(data) {
44
+ const format = this.getOutputFormat();
45
+ const config = getConfig();
46
+ const formatter = getFormatter(format, config.get('output').color && !this.parsedFlags['machine-readable']);
47
+ const meta = createMeta(this.id || 'unknown', this.getDuration());
48
+ this.log(formatter.format(data, meta));
49
+ }
50
+ outputError(error) {
51
+ const format = this.getOutputFormat();
52
+ const config = getConfig();
53
+ const formatter = getFormatter(format, config.get('output').color && !this.parsedFlags['machine-readable']);
54
+ this.error(formatter.formatError(error), {
55
+ exit: error.recoverable ? 1 : 2,
56
+ });
57
+ }
58
+ requireAuth() {
59
+ const auth = getAuth();
60
+ if (!auth.hasApiKey()) {
61
+ throw new Error('API Key not found. Set BOOHEE_API_KEY environment variable.');
62
+ }
63
+ }
64
+ debugLog(message, data) {
65
+ if (this.parsedFlags.debug) {
66
+ this.log(chalk.gray(`[DEBUG] ${message}`));
67
+ if (data) {
68
+ this.log(chalk.gray(JSON.stringify(data, null, 2)));
69
+ }
70
+ }
71
+ }
72
+ getApiKey() {
73
+ this.requireAuth();
74
+ return getAuth().getApiKey();
75
+ }
76
+ }
77
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class AuthStatus extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAIrC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAgC;IAElD,MAAM,CAAC,QAAQ,WAAoC;IAE7C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB3B"}
@@ -0,0 +1,28 @@
1
+ // src/commands/auth/status.ts
2
+ import { Command } from '@oclif/core';
3
+ import { getAuth } from '../../lib/auth.js';
4
+ import { getFormatter, createMeta } from '../../lib/output/index.js';
5
+ export default class AuthStatus extends Command {
6
+ static description = 'Check authentication status';
7
+ static examples = ['<%= config.bin %> auth:status'];
8
+ async run() {
9
+ const auth = getAuth();
10
+ const status = auth.getStatus();
11
+ const formatter = getFormatter('json', false);
12
+ const meta = createMeta('auth:status', 0);
13
+ if (status.authenticated) {
14
+ this.log(formatter.format({
15
+ status: 'authenticated',
16
+ apiKey: status.apiKey,
17
+ source: status.source,
18
+ }, meta));
19
+ }
20
+ else {
21
+ this.log(formatter.format({
22
+ status: 'not_authenticated',
23
+ suggestion: 'Set BOOHEE_API_KEY environment variable',
24
+ }, meta));
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEpE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,GAAG,6BAA6B,CAAA;IAElD,MAAM,CAAC,QAAQ,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAEnD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAE/B,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;QAEzC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;gBACxB,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,EAAE,IAAI,CAAC,CAAC,CAAA;QACX,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;gBACxB,MAAM,EAAE,mBAAmB;gBAC3B,UAAU,EAAE,yCAAyC;aACtD,EAAE,IAAI,CAAC,CAAC,CAAA;QACX,CAAC;IACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../base.js';
2
+ export default class Batch extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ commands: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'machine-readable': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ private executeCommand;
14
+ }
15
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAexC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAAuC;IAEzD,MAAM,CAAC,QAAQ,WAGd;IAED,MAAM,CAAC,KAAK;;;;;;MAUX;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoCZ,cAAc;CAQ7B"}
@@ -0,0 +1,63 @@
1
+ // src/commands/batch.ts
2
+ import { Flags } from '@oclif/core';
3
+ import fs from 'fs';
4
+ import { BaseCommand } from '../base.js';
5
+ export default class Batch extends BaseCommand {
6
+ static description = 'Execute multiple commands in batch';
7
+ static examples = [
8
+ '<%= config.bin %> batch --file commands.json',
9
+ '<%= config.bin %> batch --commands \'[{"command":"food:search","args":["苹果"]}]\'',
10
+ ];
11
+ static flags = {
12
+ ...BaseCommand.baseFlags,
13
+ file: Flags.string({
14
+ description: 'JSON file containing commands',
15
+ exclusive: ['commands'],
16
+ }),
17
+ commands: Flags.string({
18
+ description: 'JSON array of commands',
19
+ exclusive: ['file'],
20
+ }),
21
+ };
22
+ async run() {
23
+ const { flags } = await this.parse(Batch);
24
+ let commands;
25
+ if (flags.file) {
26
+ const content = fs.readFileSync(flags.file, 'utf-8');
27
+ commands = JSON.parse(content);
28
+ }
29
+ else if (flags.commands) {
30
+ commands = JSON.parse(flags.commands);
31
+ }
32
+ else {
33
+ this.error('Either --file or --commands is required');
34
+ }
35
+ const results = [];
36
+ for (const cmd of commands) {
37
+ try {
38
+ const result = await this.executeCommand(cmd);
39
+ results.push({
40
+ command: cmd.command,
41
+ success: true,
42
+ result,
43
+ });
44
+ }
45
+ catch (error) {
46
+ results.push({
47
+ command: cmd.command,
48
+ success: false,
49
+ error: error instanceof Error ? error.message : String(error),
50
+ });
51
+ }
52
+ }
53
+ this.output(results);
54
+ }
55
+ async executeCommand(cmd) {
56
+ const args = cmd.args || [];
57
+ const flagArgs = cmd.flags
58
+ ? Object.entries(cmd.flags).flatMap(([key, value]) => [`--${key}`, String(value)])
59
+ : [];
60
+ return this.config.runCommand(cmd.command, [...args, ...flagArgs]);
61
+ }
62
+ }
63
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAexC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,GAAG,oCAAoC,CAAA;IAEzD,MAAM,CAAC,QAAQ,GAAG;QAChB,8CAA8C;QAC9C,kFAAkF;KACnF,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,WAAW,CAAC,SAAS;QACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,+BAA+B;YAC5C,SAAS,EAAE,CAAC,UAAU,CAAC;SACxB,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,wBAAwB;YACrC,SAAS,EAAE,CAAC,MAAM,CAAC;SACpB,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzC,IAAI,QAAwB,CAAA;QAE5B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACpD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,OAAO,GAAkB,EAAE,CAAA;QAEjC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;gBAC7C,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,IAAI;oBACb,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAiB;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK;YACxB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClF,CAAC,CAAC,EAAE,CAAA;QAEN,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAA;IACpE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BaseCommand } from '../base.js';
2
+ export default class Categories extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../src/commands/categories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,SAAuD;IAEzE,MAAM,CAAC,QAAQ,WAAmC;IAE5C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAY3B"}
@@ -0,0 +1,14 @@
1
+ // src/commands/categories.ts
2
+ import { BaseCommand } from '../base.js';
3
+ import { ApiClient } from '../lib/api/index.js';
4
+ export default class Categories extends BaseCommand {
5
+ static description = 'Get food categories (shortcut for food:categories)';
6
+ static examples = ['<%= config.bin %> categories'];
7
+ async run() {
8
+ await this.parse(Categories);
9
+ const client = new ApiClient(this.getApiKey(), undefined, undefined, this.debugLog.bind(this));
10
+ const result = await client.foodCategories();
11
+ this.output(result);
12
+ }
13
+ }
14
+ //# sourceMappingURL=categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/commands/categories.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,GAAG,oDAAoD,CAAA;IAEzE,MAAM,CAAC,QAAQ,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAElD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC5B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,IAAI,CAAC,SAAS,EAAE,EAChB,SAAS,EACT,SAAS,EACT,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACzB,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ConfigGet extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAA;AAI3C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,MAAM,CAAC,WAAW,SAA8B;IAEhD,MAAM,CAAC,QAAQ,WAGd;IAED,MAAM,CAAC,IAAI;;MAKV;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAa3B"}
@@ -0,0 +1,29 @@
1
+ // src/commands/config/get.ts
2
+ import { Command, Args } from '@oclif/core';
3
+ import { getConfig } from '../../lib/config.js';
4
+ import { getFormatter, createMeta } from '../../lib/output/index.js';
5
+ export default class ConfigGet extends Command {
6
+ static description = 'Get a configuration value';
7
+ static examples = [
8
+ '<%= config.bin %> config get api.baseUrl',
9
+ '<%= config.bin %> config get output.format',
10
+ ];
11
+ static args = {
12
+ key: Args.string({
13
+ description: 'Configuration key (dot notation)',
14
+ required: true,
15
+ }),
16
+ };
17
+ async run() {
18
+ const { args } = await this.parse(ConfigGet);
19
+ const config = getConfig();
20
+ const value = config.getByPath(args.key);
21
+ const formatter = getFormatter('json', false);
22
+ const meta = createMeta('config:get', 0);
23
+ this.log(formatter.format({
24
+ key: args.key,
25
+ value,
26
+ }, meta));
27
+ }
28
+ }
29
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEpE,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,MAAM,CAAC,WAAW,GAAG,2BAA2B,CAAA;IAEhD,MAAM,CAAC,QAAQ,GAAG;QAChB,0CAA0C;QAC1C,4CAA4C;KAC7C,CAAA;IAED,MAAM,CAAC,IAAI,GAAG;QACZ,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;YACf,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAExC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;QAExC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK;SACN,EAAE,IAAI,CAAC,CAAC,CAAA;IACX,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ConfigInit extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'output-format': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ cache: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/config/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAI5C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAkC;IAEpD,MAAM,CAAC,QAAQ,WAAoC;IAEnD,MAAM,CAAC,KAAK;;;;MAIX;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4B3B"}