@downcity/city 1.1.39 → 1.1.47

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 (353) hide show
  1. package/README.md +4 -9
  2. package/bin/cli/Index.js +2 -0
  3. package/bin/cli/Index.js.map +1 -1
  4. package/bin/cli/agent/AgentChat.d.ts +2 -1
  5. package/bin/cli/agent/AgentChat.d.ts.map +1 -1
  6. package/bin/cli/agent/AgentChat.js +93 -214
  7. package/bin/cli/agent/AgentChat.js.map +1 -1
  8. package/bin/cli/agent/AgentChatTypes.d.ts +8 -12
  9. package/bin/cli/agent/AgentChatTypes.d.ts.map +1 -1
  10. package/bin/cli/agent/AgentHistory.js +2 -2
  11. package/bin/cli/agent/AgentHistory.js.map +1 -1
  12. package/bin/cli/agent/AgentManager.d.ts.map +1 -1
  13. package/bin/cli/agent/AgentManager.js +26 -27
  14. package/bin/cli/agent/AgentManager.js.map +1 -1
  15. package/bin/cli/agent/AgentManagerTypes.d.ts +2 -2
  16. package/bin/cli/agent/AgentManagerTypes.d.ts.map +1 -1
  17. package/bin/cli/agent/AgentReset.js +4 -4
  18. package/bin/cli/agent/AgentReset.js.map +1 -1
  19. package/bin/cli/agent/AgentSelection.js +6 -6
  20. package/bin/cli/agent/AgentSelection.js.map +1 -1
  21. package/bin/cli/agent/AgentSelectionTypes.d.ts +1 -1
  22. package/bin/cli/agent/AgentSelectionTypes.d.ts.map +1 -1
  23. package/bin/cli/agent/Init.js +10 -10
  24. package/bin/cli/agent/Init.js.map +1 -1
  25. package/bin/cli/agent/Restart.js +2 -2
  26. package/bin/cli/agent/Restart.js.map +1 -1
  27. package/bin/cli/agent/Run.d.ts +1 -1
  28. package/bin/cli/agent/Run.d.ts.map +1 -1
  29. package/bin/cli/agent/Run.js +37 -17
  30. package/bin/cli/agent/Run.js.map +1 -1
  31. package/bin/cli/agent/Start.js +2 -2
  32. package/bin/cli/agent/Start.js.map +1 -1
  33. package/bin/cli/agent/Stop.js +2 -2
  34. package/bin/cli/agent/Stop.js.map +1 -1
  35. package/bin/cli/control-plane/ControlPlaneProcess.js +5 -5
  36. package/bin/cli/control-plane/ControlPlaneProcess.js.map +1 -1
  37. package/bin/cli/model/ModelCreateCommand.js +1 -1
  38. package/bin/cli/model/ModelCreateCommand.js.map +1 -1
  39. package/bin/cli/model/ModelManageCommand.d.ts.map +1 -1
  40. package/bin/cli/model/ModelManageCommand.js +5 -3
  41. package/bin/cli/model/ModelManageCommand.js.map +1 -1
  42. package/bin/cli/model/ModelManager.js +3 -3
  43. package/bin/cli/model/ModelManager.js.map +1 -1
  44. package/bin/cli/model/ModelSupport.d.ts +0 -1
  45. package/bin/cli/model/ModelSupport.d.ts.map +1 -1
  46. package/bin/cli/model/ModelSupport.js +2 -11
  47. package/bin/cli/model/ModelSupport.js.map +1 -1
  48. package/bin/cli/shared/CliReporterTypes.d.ts +1 -1
  49. package/bin/cli/shared/Config.js +2 -2
  50. package/bin/cli/shared/Config.js.map +1 -1
  51. package/bin/cli/shared/Env.d.ts +1 -1
  52. package/bin/cli/shared/Env.d.ts.map +1 -1
  53. package/bin/cli/shared/Env.js +18 -149
  54. package/bin/cli/shared/Env.js.map +1 -1
  55. package/bin/cli/shared/IndexAgentCommand.d.ts.map +1 -1
  56. package/bin/cli/shared/IndexAgentCommand.js +3 -3
  57. package/bin/cli/shared/IndexAgentCommand.js.map +1 -1
  58. package/bin/cli/shared/IndexSupport.d.ts +3 -3
  59. package/bin/cli/shared/IndexSupport.d.ts.map +1 -1
  60. package/bin/cli/shared/IndexSupport.js +14 -8
  61. package/bin/cli/shared/IndexSupport.js.map +1 -1
  62. package/bin/cli/shared/ManagedPluginActionCommands.d.ts.map +1 -1
  63. package/bin/cli/shared/ManagedPluginActionCommands.js +5 -4
  64. package/bin/cli/shared/ManagedPluginActionCommands.js.map +1 -1
  65. package/bin/cli/shared/ManagedPluginRemote.d.ts.map +1 -1
  66. package/bin/cli/shared/ManagedPluginRemote.js +4 -4
  67. package/bin/cli/shared/ManagedPluginRemote.js.map +1 -1
  68. package/bin/cli/shared/PluginTargetSupport.d.ts +2 -2
  69. package/bin/cli/shared/PluginTargetSupport.d.ts.map +1 -1
  70. package/bin/cli/shared/PluginTargetSupport.js +19 -19
  71. package/bin/cli/shared/PluginTargetSupport.js.map +1 -1
  72. package/bin/cli/shared/Plugins.js +10 -10
  73. package/bin/cli/shared/Plugins.js.map +1 -1
  74. package/bin/cli/shared/PublicHostEnv.d.ts +1 -1
  75. package/bin/cli/shared/PublicHostEnv.js +2 -2
  76. package/bin/cli/shared/PublicHostEnv.js.map +1 -1
  77. package/bin/cli/shared/Terminal.d.ts +13 -0
  78. package/bin/cli/shared/Terminal.d.ts.map +1 -0
  79. package/bin/cli/shared/Terminal.js +22 -0
  80. package/bin/cli/shared/Terminal.js.map +1 -0
  81. package/bin/config/DowncitySchema.d.ts.map +1 -1
  82. package/bin/config/DowncitySchema.js +3 -111
  83. package/bin/config/DowncitySchema.js.map +1 -1
  84. package/bin/config/Paths.d.ts +0 -56
  85. package/bin/config/Paths.d.ts.map +1 -1
  86. package/bin/config/Paths.js +9 -51
  87. package/bin/config/Paths.js.map +1 -1
  88. package/bin/control/ControlGateway.js +1 -1
  89. package/bin/control/ControlGateway.js.map +1 -1
  90. package/bin/control/EnvApiRoutes.d.ts +1 -1
  91. package/bin/control/EnvApiRoutes.d.ts.map +1 -1
  92. package/bin/control/EnvApiRoutes.js +7 -79
  93. package/bin/control/EnvApiRoutes.js.map +1 -1
  94. package/bin/control/PlatformApiRoutes.d.ts +2 -2
  95. package/bin/control/PlatformApiRoutes.d.ts.map +1 -1
  96. package/bin/control/PlatformApiRoutes.js +2 -2
  97. package/bin/control/PlatformApiRoutes.js.map +1 -1
  98. package/bin/control/gateway/AgentActions.d.ts +2 -2
  99. package/bin/control/gateway/AgentActions.d.ts.map +1 -1
  100. package/bin/control/gateway/AgentActions.js +7 -7
  101. package/bin/control/gateway/AgentActions.js.map +1 -1
  102. package/bin/control/gateway/AgentCatalog.d.ts +3 -6
  103. package/bin/control/gateway/AgentCatalog.d.ts.map +1 -1
  104. package/bin/control/gateway/AgentCatalog.js +16 -18
  105. package/bin/control/gateway/AgentCatalog.js.map +1 -1
  106. package/bin/control/instant/InstantSessionRunner.d.ts.map +1 -1
  107. package/bin/control/instant/InstantSessionRunner.js +3 -1
  108. package/bin/control/instant/InstantSessionRunner.js.map +1 -1
  109. package/bin/env/ProcessEnv.d.ts +24 -0
  110. package/bin/env/ProcessEnv.d.ts.map +1 -0
  111. package/bin/env/ProcessEnv.js +41 -0
  112. package/bin/env/ProcessEnv.js.map +1 -0
  113. package/bin/http/auth/AuthEnv.d.ts +1 -1
  114. package/bin/http/auth/AuthEnv.js +1 -1
  115. package/bin/model/runtime/CreateRuntimeModel.d.ts +8 -0
  116. package/bin/model/runtime/CreateRuntimeModel.d.ts.map +1 -1
  117. package/bin/model/runtime/CreateRuntimeModel.js +43 -37
  118. package/bin/model/runtime/CreateRuntimeModel.js.map +1 -1
  119. package/bin/model/service/ModelPoolService.d.ts +1 -1
  120. package/bin/model/service/ModelPoolService.d.ts.map +1 -1
  121. package/bin/model/service/ModelPoolService.js +8 -6
  122. package/bin/model/service/ModelPoolService.js.map +1 -1
  123. package/bin/platform/store/StoreEnvRepository.d.ts +5 -49
  124. package/bin/platform/store/StoreEnvRepository.d.ts.map +1 -1
  125. package/bin/platform/store/StoreEnvRepository.js +31 -178
  126. package/bin/platform/store/StoreEnvRepository.js.map +1 -1
  127. package/bin/platform/store/StoreSchema.js +3 -44
  128. package/bin/platform/store/StoreSchema.js.map +1 -1
  129. package/bin/platform/store/index.d.ts +9 -45
  130. package/bin/platform/store/index.d.ts.map +1 -1
  131. package/bin/platform/store/index.js +12 -62
  132. package/bin/platform/store/index.js.map +1 -1
  133. package/bin/platform/store/schema.d.ts +2 -2
  134. package/bin/platform/store/schema.js +2 -2
  135. package/bin/process/daemon/Api.d.ts +1 -1
  136. package/bin/process/daemon/CliArgs.d.ts +1 -0
  137. package/bin/process/daemon/CliArgs.d.ts.map +1 -1
  138. package/bin/process/daemon/CliArgs.js +20 -1
  139. package/bin/process/daemon/CliArgs.js.map +1 -1
  140. package/bin/process/daemon/Client.d.ts +18 -2
  141. package/bin/process/daemon/Client.d.ts.map +1 -1
  142. package/bin/process/daemon/Client.js +70 -20
  143. package/bin/process/daemon/Client.js.map +1 -1
  144. package/bin/process/daemon/Manager.d.ts.map +1 -1
  145. package/bin/process/daemon/Manager.js +2 -1
  146. package/bin/process/daemon/Manager.js.map +1 -1
  147. package/bin/terminal/admin/auth-error.d.ts +34 -0
  148. package/bin/terminal/admin/auth-error.d.ts.map +1 -0
  149. package/bin/terminal/admin/auth-error.js +51 -0
  150. package/bin/terminal/admin/auth-error.js.map +1 -0
  151. package/bin/terminal/admin/commands/accounts.d.ts +6 -0
  152. package/bin/terminal/admin/commands/accounts.d.ts.map +1 -0
  153. package/bin/terminal/admin/commands/accounts.js +44 -0
  154. package/bin/terminal/admin/commands/accounts.js.map +1 -0
  155. package/bin/terminal/admin/commands/balance.d.ts +6 -0
  156. package/bin/terminal/admin/commands/balance.d.ts.map +1 -0
  157. package/bin/terminal/admin/commands/balance.js +153 -0
  158. package/bin/terminal/admin/commands/balance.js.map +1 -0
  159. package/bin/terminal/admin/commands/config.d.ts +10 -0
  160. package/bin/terminal/admin/commands/config.d.ts.map +1 -0
  161. package/bin/terminal/admin/commands/config.js +11 -0
  162. package/bin/terminal/admin/commands/config.js.map +1 -0
  163. package/bin/terminal/admin/commands/custom.d.ts +6 -0
  164. package/bin/terminal/admin/commands/custom.d.ts.map +1 -0
  165. package/bin/terminal/admin/commands/custom.js +47 -0
  166. package/bin/terminal/admin/commands/custom.js.map +1 -0
  167. package/bin/terminal/admin/commands/instruction.d.ts +9 -0
  168. package/bin/terminal/admin/commands/instruction.d.ts.map +1 -0
  169. package/bin/terminal/admin/commands/instruction.js +10 -0
  170. package/bin/terminal/admin/commands/instruction.js.map +1 -0
  171. package/bin/terminal/admin/commands/models.d.ts +14 -0
  172. package/bin/terminal/admin/commands/models.d.ts.map +1 -0
  173. package/bin/terminal/admin/commands/models.js +61 -0
  174. package/bin/terminal/admin/commands/models.js.map +1 -0
  175. package/bin/terminal/admin/commands/payment.d.ts +6 -0
  176. package/bin/terminal/admin/commands/payment.d.ts.map +1 -0
  177. package/bin/terminal/admin/commands/payment.js +59 -0
  178. package/bin/terminal/admin/commands/payment.js.map +1 -0
  179. package/bin/terminal/admin/commands/products.d.ts +6 -0
  180. package/bin/terminal/admin/commands/products.d.ts.map +1 -0
  181. package/bin/terminal/admin/commands/products.js +80 -0
  182. package/bin/terminal/admin/commands/products.js.map +1 -0
  183. package/bin/terminal/admin/commands/service-env.d.ts +11 -0
  184. package/bin/terminal/admin/commands/service-env.d.ts.map +1 -0
  185. package/bin/terminal/admin/commands/service-env.js +248 -0
  186. package/bin/terminal/admin/commands/service-env.js.map +1 -0
  187. package/bin/terminal/admin/commands/usage.d.ts +6 -0
  188. package/bin/terminal/admin/commands/usage.d.ts.map +1 -0
  189. package/bin/terminal/admin/commands/usage.js +44 -0
  190. package/bin/terminal/admin/commands/usage.js.map +1 -0
  191. package/bin/terminal/admin/loop.d.ts +6 -0
  192. package/bin/terminal/admin/loop.d.ts.map +1 -0
  193. package/bin/terminal/admin/loop.js +70 -0
  194. package/bin/terminal/admin/loop.js.map +1 -0
  195. package/bin/terminal/agent/pi-agent.d.ts +15 -0
  196. package/bin/terminal/agent/pi-agent.d.ts.map +1 -0
  197. package/bin/terminal/agent/pi-agent.js +136 -0
  198. package/bin/terminal/agent/pi-agent.js.map +1 -0
  199. package/bin/terminal/app.d.ts +13 -0
  200. package/bin/terminal/app.d.ts.map +1 -0
  201. package/bin/terminal/app.js +123 -0
  202. package/bin/terminal/app.js.map +1 -0
  203. package/bin/terminal/auth/admin.d.ts +8 -0
  204. package/bin/terminal/auth/admin.d.ts.map +1 -0
  205. package/bin/terminal/auth/admin.js +18 -0
  206. package/bin/terminal/auth/admin.js.map +1 -0
  207. package/bin/terminal/auth/mode-select.d.ts +11 -0
  208. package/bin/terminal/auth/mode-select.d.ts.map +1 -0
  209. package/bin/terminal/auth/mode-select.js +33 -0
  210. package/bin/terminal/auth/mode-select.js.map +1 -0
  211. package/bin/terminal/auth/server-switch.d.ts +22 -0
  212. package/bin/terminal/auth/server-switch.d.ts.map +1 -0
  213. package/bin/terminal/auth/server-switch.js +241 -0
  214. package/bin/terminal/auth/server-switch.js.map +1 -0
  215. package/bin/terminal/auth/user.d.ts +19 -0
  216. package/bin/terminal/auth/user.d.ts.map +1 -0
  217. package/bin/terminal/auth/user.js +261 -0
  218. package/bin/terminal/auth/user.js.map +1 -0
  219. package/bin/terminal/core/browser.d.ts +12 -0
  220. package/bin/terminal/core/browser.d.ts.map +1 -0
  221. package/bin/terminal/core/browser.js +29 -0
  222. package/bin/terminal/core/browser.js.map +1 -0
  223. package/bin/terminal/core/env.d.ts +15 -0
  224. package/bin/terminal/core/env.d.ts.map +1 -0
  225. package/bin/terminal/core/env.js +67 -0
  226. package/bin/terminal/core/env.js.map +1 -0
  227. package/bin/terminal/core/session.d.ts +97 -0
  228. package/bin/terminal/core/session.d.ts.map +1 -0
  229. package/bin/terminal/core/session.js +342 -0
  230. package/bin/terminal/core/session.js.map +1 -0
  231. package/bin/terminal/core/stripe.d.ts +26 -0
  232. package/bin/terminal/core/stripe.d.ts.map +1 -0
  233. package/bin/terminal/core/stripe.js +22 -0
  234. package/bin/terminal/core/stripe.js.map +1 -0
  235. package/bin/terminal/core/ui.d.ts +29 -0
  236. package/bin/terminal/core/ui.d.ts.map +1 -0
  237. package/bin/terminal/core/ui.js +60 -0
  238. package/bin/terminal/core/ui.js.map +1 -0
  239. package/bin/terminal/core/update.d.ts +20 -0
  240. package/bin/terminal/core/update.d.ts.map +1 -0
  241. package/bin/terminal/core/update.js +193 -0
  242. package/bin/terminal/core/update.js.map +1 -0
  243. package/bin/terminal/user/balance.d.ts +31 -0
  244. package/bin/terminal/user/balance.d.ts.map +1 -0
  245. package/bin/terminal/user/balance.js +131 -0
  246. package/bin/terminal/user/balance.js.map +1 -0
  247. package/bin/terminal/user/chat.d.ts +12 -0
  248. package/bin/terminal/user/chat.d.ts.map +1 -0
  249. package/bin/terminal/user/chat.js +70 -0
  250. package/bin/terminal/user/chat.js.map +1 -0
  251. package/bin/terminal/user/loop.d.ts +13 -0
  252. package/bin/terminal/user/loop.d.ts.map +1 -0
  253. package/bin/terminal/user/loop.js +93 -0
  254. package/bin/terminal/user/loop.js.map +1 -0
  255. package/bin/terminal/user/models.d.ts +10 -0
  256. package/bin/terminal/user/models.d.ts.map +1 -0
  257. package/bin/terminal/user/models.js +39 -0
  258. package/bin/terminal/user/models.js.map +1 -0
  259. package/bin/utils/storage.d.ts +0 -1
  260. package/bin/utils/storage.d.ts.map +1 -1
  261. package/bin/utils/storage.js +0 -6
  262. package/bin/utils/storage.js.map +1 -1
  263. package/package.json +7 -3
  264. package/public/app.js +3 -3
  265. package/src/cli/Index.ts +2 -0
  266. package/src/cli/agent/AgentChat.ts +113 -289
  267. package/src/cli/agent/AgentChatTypes.ts +8 -12
  268. package/src/cli/agent/AgentHistory.ts +2 -2
  269. package/src/cli/agent/AgentManager.ts +27 -28
  270. package/src/cli/agent/AgentManagerTypes.ts +2 -2
  271. package/src/cli/agent/AgentReset.ts +4 -4
  272. package/src/cli/agent/AgentSelection.ts +6 -6
  273. package/src/cli/agent/AgentSelectionTypes.ts +1 -1
  274. package/src/cli/agent/Init.ts +13 -13
  275. package/src/cli/agent/Restart.ts +2 -2
  276. package/src/cli/agent/Run.ts +38 -17
  277. package/src/cli/agent/Start.ts +2 -2
  278. package/src/cli/agent/Stop.ts +2 -2
  279. package/src/cli/control-plane/ControlPlaneProcess.ts +5 -5
  280. package/src/cli/model/ModelCreateCommand.ts +1 -1
  281. package/src/cli/model/ModelManageCommand.ts +5 -3
  282. package/src/cli/model/ModelManager.ts +3 -3
  283. package/src/cli/model/ModelSupport.ts +2 -10
  284. package/src/cli/shared/CliReporterTypes.ts +1 -1
  285. package/src/cli/shared/Config.ts +2 -2
  286. package/src/cli/shared/Env.ts +22 -230
  287. package/src/cli/shared/IndexAgentCommand.ts +3 -4
  288. package/src/cli/shared/IndexSupport.ts +16 -10
  289. package/src/cli/shared/ManagedPluginActionCommands.ts +4 -4
  290. package/src/cli/shared/ManagedPluginRemote.ts +4 -4
  291. package/src/cli/shared/PluginTargetSupport.ts +19 -19
  292. package/src/cli/shared/Plugins.ts +10 -10
  293. package/src/cli/shared/PublicHostEnv.ts +2 -2
  294. package/src/cli/shared/Terminal.ts +24 -0
  295. package/src/config/DowncitySchema.ts +3 -113
  296. package/src/config/Paths.ts +9 -90
  297. package/src/control/ControlGateway.ts +3 -3
  298. package/src/control/EnvApiRoutes.ts +7 -91
  299. package/src/control/PlatformApiRoutes.ts +6 -6
  300. package/src/control/gateway/AgentActions.ts +10 -10
  301. package/src/control/gateway/AgentCatalog.ts +17 -21
  302. package/src/control/instant/InstantSessionRunner.ts +3 -1
  303. package/src/env/ProcessEnv.ts +43 -0
  304. package/src/http/auth/AuthEnv.ts +1 -1
  305. package/src/model/runtime/CreateRuntimeModel.ts +54 -37
  306. package/src/model/service/ModelPoolService.ts +13 -11
  307. package/src/platform/store/StoreEnvRepository.ts +31 -234
  308. package/src/platform/store/StoreSchema.ts +3 -49
  309. package/src/platform/store/index.ts +11 -80
  310. package/src/platform/store/schema.ts +2 -2
  311. package/src/process/daemon/Api.ts +1 -1
  312. package/src/process/daemon/CliArgs.ts +24 -1
  313. package/src/process/daemon/Client.ts +90 -22
  314. package/src/process/daemon/Manager.ts +2 -1
  315. package/src/terminal/admin/auth-error.ts +62 -0
  316. package/src/terminal/admin/commands/accounts.ts +44 -0
  317. package/src/terminal/admin/commands/balance.ts +160 -0
  318. package/src/terminal/admin/commands/config.ts +13 -0
  319. package/src/terminal/admin/commands/custom.ts +46 -0
  320. package/src/terminal/admin/commands/instruction.ts +12 -0
  321. package/src/terminal/admin/commands/models.ts +64 -0
  322. package/src/terminal/admin/commands/payment.ts +94 -0
  323. package/src/terminal/admin/commands/products.ts +72 -0
  324. package/src/terminal/admin/commands/service-env.ts +256 -0
  325. package/src/terminal/admin/commands/usage.ts +44 -0
  326. package/src/terminal/admin/loop.ts +69 -0
  327. package/src/terminal/agent/pi-agent.ts +180 -0
  328. package/src/terminal/app.ts +120 -0
  329. package/src/terminal/auth/admin.ts +21 -0
  330. package/src/terminal/auth/mode-select.ts +38 -0
  331. package/src/terminal/auth/server-switch.ts +275 -0
  332. package/src/terminal/auth/user.ts +351 -0
  333. package/src/terminal/core/browser.ts +31 -0
  334. package/src/terminal/core/env.ts +71 -0
  335. package/src/terminal/core/session.ts +450 -0
  336. package/src/terminal/core/stripe.ts +37 -0
  337. package/src/terminal/core/ui.ts +84 -0
  338. package/src/terminal/core/update.ts +230 -0
  339. package/src/terminal/user/balance.ts +215 -0
  340. package/src/terminal/user/chat.ts +80 -0
  341. package/src/terminal/user/loop.ts +112 -0
  342. package/src/terminal/user/models.ts +43 -0
  343. package/src/utils/storage.ts +0 -7
  344. package/bin/process/rpc/Client.d.ts +0 -13
  345. package/bin/process/rpc/Client.d.ts.map +0 -1
  346. package/bin/process/rpc/Client.js +0 -98
  347. package/bin/process/rpc/Client.js.map +0 -1
  348. package/bin/process/rpc/Paths.d.ts +0 -14
  349. package/bin/process/rpc/Paths.d.ts.map +0 -1
  350. package/bin/process/rpc/Paths.js +0 -36
  351. package/bin/process/rpc/Paths.js.map +0 -1
  352. package/src/process/rpc/Client.ts +0 -113
  353. package/src/process/rpc/Paths.ts +0 -43
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Admin Balance 管理命令。
3
+ */
4
+ import { isCancel, select } from "@clack/prompts";
5
+ import { askText, showError, showSuccess } from "../../core/ui.js";
6
+ import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
7
+ export async function manageBalance(a) {
8
+ while (true) {
9
+ const act = await select({
10
+ message: "Balance",
11
+ options: [
12
+ { label: "List users", value: "users" },
13
+ { label: "History", value: "history" },
14
+ { label: "Topups", value: "topups" },
15
+ { label: "Redeem codes", value: "redeem_codes" },
16
+ { label: "Add balance", value: "add" },
17
+ { label: "Subtract balance", value: "sub" },
18
+ { label: "Finish topup", value: "finish" },
19
+ { label: "Cancel topup", value: "cancel" },
20
+ { label: "Create redeem code", value: "create_redeem_code" },
21
+ { label: "Disable redeem code", value: "disable_redeem_code" },
22
+ { label: "Back", value: "back" },
23
+ ],
24
+ });
25
+ if (!act || isCancel(act) || act === "back")
26
+ return;
27
+ try {
28
+ if (act === "users") {
29
+ const items = await a.balance.listUsers(30);
30
+ console.log(`\n${items.length} balance accounts:\n`);
31
+ for (const item of items) {
32
+ console.log(` ${item.user_id.padEnd(28)} ${String(item.balance).padStart(8)} ${item.unit.padEnd(10)} ${item.updated_at.slice(0, 19)}`);
33
+ }
34
+ console.log("");
35
+ continue;
36
+ }
37
+ if (act === "history") {
38
+ const userId = await askText("user_id (optional)");
39
+ const items = await a.balance.listHistory({
40
+ limit: 30,
41
+ user_id: userId ?? "",
42
+ });
43
+ console.log(`\n${items.length} balance history entries:\n`);
44
+ for (const item of items) {
45
+ console.log(` ${item.created_at.slice(0, 19)} ${item.user_id.padEnd(20)} ${item.kind.padEnd(8)} ${String(item.amount).padStart(6)} -> ${String(item.balance_after).padStart(6)} ${item.note}`);
46
+ }
47
+ console.log("");
48
+ continue;
49
+ }
50
+ if (act === "topups") {
51
+ const userId = await askText("user_id (optional)");
52
+ const items = await a.balance.listTopups({
53
+ limit: 30,
54
+ user_id: userId ?? "",
55
+ });
56
+ console.log(`\n${items.length} topup orders:\n`);
57
+ for (const item of items) {
58
+ console.log(` ${item.topup_id.padEnd(24)} ${item.user_id.padEnd(20)} ${String(item.amount).padStart(6)} ${item.unit.padEnd(10)} [${item.status}] ${item.note}`);
59
+ }
60
+ console.log("");
61
+ continue;
62
+ }
63
+ if (act === "redeem_codes") {
64
+ const status = await askText("status (optional: active/redeemed/disabled)");
65
+ const userId = await askText("redeemed_by_user_id (optional)");
66
+ const items = await a.balance.redeemCodes.list({
67
+ limit: 30,
68
+ status: normalizeRedeemCodeStatus(status),
69
+ user_id: userId ?? "",
70
+ });
71
+ console.log(`\n${items.length} redeem codes:\n`);
72
+ for (const item of items) {
73
+ const owner = item.redeemed_by_user_id || "-";
74
+ console.log(` ${item.redeem_code_id.padEnd(24)} ${item.code_mask.padEnd(22)} ${String(item.amount).padStart(6)} ${item.unit.padEnd(10)} [${item.status.padEnd(8)}] ${owner.padEnd(20)} ${item.note}`);
75
+ }
76
+ console.log("");
77
+ continue;
78
+ }
79
+ if (act === "add" || act === "sub") {
80
+ const userId = await askText("user_id");
81
+ if (!userId)
82
+ continue;
83
+ const rawAmount = await askText("amount");
84
+ if (!rawAmount)
85
+ continue;
86
+ const amount = Number(rawAmount);
87
+ if (!Number.isInteger(amount) || amount <= 0) {
88
+ showError("amount must be a positive integer");
89
+ continue;
90
+ }
91
+ const note = await askText("note (optional)");
92
+ const account = act === "add"
93
+ ? await a.balance.add({ user_id: userId, amount, note: note ?? "" })
94
+ : await a.balance.sub({ user_id: userId, amount, note: note ?? "" });
95
+ showSuccess(`balance updated: ${account.user_id} -> ${account.balance} ${account.unit}`);
96
+ continue;
97
+ }
98
+ if (act === "create_redeem_code") {
99
+ const rawAmount = await askText("amount");
100
+ if (!rawAmount)
101
+ continue;
102
+ const amount = Number(rawAmount);
103
+ if (!Number.isInteger(amount) || amount <= 0) {
104
+ showError("amount must be a positive integer");
105
+ continue;
106
+ }
107
+ const code = await askText("custom redeem_code (optional)");
108
+ const note = await askText("note (optional)");
109
+ const issued = await a.balance.redeemCodes.create({
110
+ amount,
111
+ code: code ?? "",
112
+ note: note ?? "",
113
+ });
114
+ showSuccess(`redeem_code created: ${issued.redeem_code_id} -> ${issued.code} (+${issued.amount} ${issued.unit})`);
115
+ continue;
116
+ }
117
+ if (act === "disable_redeem_code") {
118
+ const redeemCodeId = await askText("redeem_code_id");
119
+ if (!redeemCodeId)
120
+ continue;
121
+ const note = await askText("note (optional)");
122
+ const item = await a.balance.redeemCodes.disable({
123
+ redeem_code_id: redeemCodeId,
124
+ note: note ?? "",
125
+ });
126
+ showSuccess(`redeem_code updated: ${item.redeem_code_id} -> ${item.status}`);
127
+ continue;
128
+ }
129
+ const topupId = await askText("topup_id");
130
+ if (!topupId)
131
+ continue;
132
+ const note = await askText("note (optional)");
133
+ const topup = act === "finish"
134
+ ? await a.balance.finishTopup({ topup_id: topupId, note: note ?? "" })
135
+ : await a.balance.cancelTopup({ topup_id: topupId, note: note ?? "" });
136
+ showSuccess(`topup updated: ${topup.topup_id} -> ${topup.status}`);
137
+ }
138
+ catch (e) {
139
+ rethrowAdminAuthError(e);
140
+ showError(adminErrorMessage(e));
141
+ }
142
+ }
143
+ }
144
+ function normalizeRedeemCodeStatus(value) {
145
+ const normalized = String(value ?? "").trim();
146
+ if (!normalized)
147
+ return undefined;
148
+ if (normalized === "active" || normalized === "redeemed" || normalized === "disabled") {
149
+ return normalized;
150
+ }
151
+ throw new TypeError("status must be active, redeemed, or disabled");
152
+ }
153
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/balance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 旧的 Admin Server URL 命令兼容壳。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 新交互下,server 管理已经提升到顶层 Manage Servers
6
+ * - 这里保留空壳是为了避免历史导入直接报错
7
+ */
8
+ import { type AdminSession } from "../../core/session.js";
9
+ export declare function changeServerUrl(_session: AdminSession): Promise<boolean>;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,wBAAsB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9E"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 旧的 Admin Server URL 命令兼容壳。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 新交互下,server 管理已经提升到顶层 Manage Servers
6
+ * - 这里保留空壳是为了避免历史导入直接报错
7
+ */
8
+ export async function changeServerUrl(_session) {
9
+ return false;
10
+ }
11
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAsB;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Admin Custom Service 命令。
3
+ */
4
+ import { AdminClient } from "@downcity/conduit";
5
+ export declare function manageCustom(a: AdminClient): Promise<void>;
6
+ //# sourceMappingURL=custom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/custom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,wBAAsB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChE"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Admin Custom Service 命令。
3
+ */
4
+ import { select, isCancel } from "@clack/prompts";
5
+ import { askText, showError } from "../../core/ui.js";
6
+ import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
7
+ export async function manageCustom(a) {
8
+ while (true) {
9
+ const name = await askText("service name (empty to go back)");
10
+ if (!name)
11
+ return;
12
+ const act = await select({
13
+ message: name,
14
+ options: [
15
+ { label: "GET", value: "get" },
16
+ { label: "POST", value: "post" },
17
+ { label: "Back", value: "back" },
18
+ ],
19
+ });
20
+ if (!act || isCancel(act) || act === "back")
21
+ return;
22
+ try {
23
+ const svc = a.service(name);
24
+ if (act === "get") {
25
+ const path = await askText("path") ?? "";
26
+ console.log(JSON.stringify(await svc.get(path), null, 2));
27
+ }
28
+ else {
29
+ const raw = await askText("body (JSON)") ?? "{}";
30
+ let body;
31
+ try {
32
+ body = JSON.parse(raw);
33
+ }
34
+ catch {
35
+ showError("Invalid JSON body");
36
+ continue;
37
+ }
38
+ console.log(JSON.stringify(await svc.action("").invoke(body), null, 2));
39
+ }
40
+ }
41
+ catch (e) {
42
+ rethrowAdminAuthError(e);
43
+ showError(adminErrorMessage(e));
44
+ }
45
+ }
46
+ }
47
+ //# sourceMappingURL=custom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/custom.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAc;IAC/C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC;YACvB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;gBAChC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;aACjC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO;QAEpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;gBACjD,IAAI,IAA6B,CAAC;gBAClC,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS,CAAC,mBAAmB,CAAC,CAAC;oBAC/B,SAAS;gBACX,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACzB,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Admin Infra 说明文档查看命令。
3
+ */
4
+ import { AdminClient } from "@downcity/conduit";
5
+ /**
6
+ * 展示当前 InfraRuntime 聚合后的说明文档。
7
+ */
8
+ export declare function manageInstruction(a: AdminClient): Promise<void>;
9
+ //# sourceMappingURL=instruction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Admin Infra 说明文档查看命令。
3
+ */
4
+ /**
5
+ * 展示当前 InfraRuntime 聚合后的说明文档。
6
+ */
7
+ export async function manageInstruction(a) {
8
+ console.log(`\n${await a.instruction()}\n`);
9
+ }
10
+ //# sourceMappingURL=instruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/instruction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,CAAc;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Admin Models 只读视图。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 这里不提供模型新增、删除、启停。
6
+ * - 模型定义仍然来自代码注册;admin 只负责查看当前可用状态。
7
+ * - 如果模型缺少 provider key,会在这里直接显示缺失项。
8
+ */
9
+ import { AdminClient } from "@downcity/conduit";
10
+ /**
11
+ * 展示全部代码注册模型及其运行状态。
12
+ */
13
+ export declare function manageModels(a: AdminClient): Promise<void>;
14
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChE"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Admin Models 只读视图。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 这里不提供模型新增、删除、启停。
6
+ * - 模型定义仍然来自代码注册;admin 只负责查看当前可用状态。
7
+ * - 如果模型缺少 provider key,会在这里直接显示缺失项。
8
+ */
9
+ import { show, showError } from "../../core/ui.js";
10
+ import { adminErrorMessage, isAdminNotFoundError, rethrowAdminAuthError } from "../auth-error.js";
11
+ /**
12
+ * 展示全部代码注册模型及其运行状态。
13
+ */
14
+ export async function manageModels(a) {
15
+ try {
16
+ const [modelResp, envCatalog] = await Promise.all([
17
+ a.listModels(),
18
+ a.env.catalog(),
19
+ ]);
20
+ const items = modelResp ?? [];
21
+ const aiScope = envCatalog.find((item) => item.id === "ai-models");
22
+ const envMap = new Map(aiScope?.env.map((item) => [item.key, item.configured]) ?? []);
23
+ if (items.length === 0) {
24
+ show("No models registered on server.");
25
+ return;
26
+ }
27
+ console.log(`\n${items.length} models:\n`);
28
+ for (const model of items) {
29
+ const requirements = model.env_requirements ?? [];
30
+ const missingEnv = requirements
31
+ .filter((item) => item.required && !envMap.get(item.key))
32
+ .map((item) => item.key);
33
+ const status = missingEnv.length === 0 ? "READY" : `MISSING ${missingEnv.join(", ")}`;
34
+ const defaults = (model.default_modes ?? []).length > 0
35
+ ? `default: ${(model.default_modes ?? []).join(", ")}`
36
+ : "default: none";
37
+ const envText = requirements.length > 0
38
+ ? requirements
39
+ .map((item) => `${item.key}${envMap.get(item.key) ? "✓" : "✗"}`)
40
+ .join(", ")
41
+ : "none";
42
+ console.log(` ${model.name} (${model.id})`);
43
+ console.log(` status: ${status}`);
44
+ console.log(` modalities: ${model.modalities.join(", ") || "none"}`);
45
+ console.log(` ${defaults}`);
46
+ console.log(` env: ${envText}`);
47
+ if (model.description)
48
+ console.log(` desc: ${model.description}`);
49
+ console.log("");
50
+ }
51
+ }
52
+ catch (e) {
53
+ rethrowAdminAuthError(e);
54
+ if (isAdminNotFoundError(e)) {
55
+ showError("Connected InfraRuntime is too old and does not expose /v1/env/catalog yet. Deploy the latest worker/server first.");
56
+ return;
57
+ }
58
+ showError(adminErrorMessage(e));
59
+ }
60
+ }
61
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Admin Payment 管理命令。
3
+ */
4
+ import { AdminClient } from "@downcity/conduit";
5
+ export declare function managePayment(a: AdminClient, baseUrl: string): Promise<void>;
6
+ //# sourceMappingURL=payment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/payment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAoChD,wBAAsB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDlF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Admin Payment 管理命令。
3
+ */
4
+ import { select, isCancel } from "@clack/prompts";
5
+ import { buildStripeEndpoints } from "../../core/stripe.js";
6
+ import { show, showError } from "../../core/ui.js";
7
+ import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
8
+ export async function managePayment(a, baseUrl) {
9
+ const svc = a.service("payment.stripe");
10
+ const endpoints = buildStripeEndpoints(baseUrl);
11
+ while (true) {
12
+ const act = await select({
13
+ message: "Payment",
14
+ options: [
15
+ { label: "Show webhook setup", value: "webhook", hint: endpoints.webhook_url },
16
+ { label: "List payments", value: "payments" },
17
+ { label: "List webhook events", value: "events" },
18
+ { label: "Back", value: "back" },
19
+ ],
20
+ });
21
+ if (!act || isCancel(act) || act === "back")
22
+ return;
23
+ try {
24
+ if (act === "webhook") {
25
+ show([
26
+ `Server URL: ${endpoints.base_url}`,
27
+ `Stripe webhook endpoint: ${endpoints.webhook_url}`,
28
+ "Recommended Stripe events:",
29
+ "- checkout.session.completed",
30
+ "- checkout.session.expired",
31
+ "- payment_intent.payment_failed",
32
+ "After creating the endpoint in Stripe Dashboard, copy its Signing secret into STRIPE_WEBHOOK_SECRET.",
33
+ ].join("\n"));
34
+ continue;
35
+ }
36
+ if (act === "payments") {
37
+ const result = await svc.get("payments");
38
+ console.log(`\n${result.items.length} payments:\n`);
39
+ for (const item of result.items) {
40
+ console.log(` ${item.updated_at.slice(0, 19)} ${item.user_id.padEnd(20)} ${String(item.amount).padStart(6)} ${item.currency.padEnd(6)} [${item.status}] ${item.payment_id}`);
41
+ }
42
+ console.log("");
43
+ continue;
44
+ }
45
+ const result = await svc.get("events");
46
+ console.log(`\n${result.items.length} webhook events:\n`);
47
+ for (const item of result.items) {
48
+ const error = item.sync_error ? ` ${item.sync_error}` : "";
49
+ console.log(` ${item.created_at.slice(0, 19)} ${item.type.padEnd(32)} [${item.sync_status}] ${item.event_id}${error}`);
50
+ }
51
+ console.log("");
52
+ }
53
+ catch (e) {
54
+ rethrowAdminAuthError(e);
55
+ showError(adminErrorMessage(e));
56
+ }
57
+ }
58
+ }
59
+ //# sourceMappingURL=payment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/payment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Admin Products 管理命令。
3
+ */
4
+ import { AdminClient } from "@downcity/conduit";
5
+ export declare function manageProducts(a: AdminClient): Promise<void>;
6
+ //# sourceMappingURL=products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/products.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,wBAAsB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DlE"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Admin Products 管理命令。
3
+ */
4
+ import { select, isCancel } from "@clack/prompts";
5
+ import { askText, showError, showSuccess } from "../../core/ui.js";
6
+ import { adminErrorMessage, rethrowAdminAuthError } from "../auth-error.js";
7
+ export async function manageProducts(a) {
8
+ while (true) {
9
+ const act = await select({
10
+ message: "Products",
11
+ options: [
12
+ { label: "List all", value: "list" },
13
+ { label: "Create", value: "create" },
14
+ { label: "Pause", value: "pause" },
15
+ { label: "Activate", value: "activate" },
16
+ { label: "Remove", value: "remove" },
17
+ { label: "Issue token", value: "token" },
18
+ { label: "Back", value: "back" },
19
+ ],
20
+ });
21
+ if (!act || isCancel(act) || act === "back")
22
+ return;
23
+ try {
24
+ if (act === "list") {
25
+ const items = await a.products.list();
26
+ console.log(`\n${items.length} products:\n`);
27
+ for (const p of items) {
28
+ console.log(` ${p.product_id.padEnd(24)} ${p.name.padEnd(20)} [${p.status}]`);
29
+ }
30
+ console.log("");
31
+ }
32
+ else if (act === "create") {
33
+ const n = await askText("product name");
34
+ if (!n)
35
+ continue;
36
+ const productId = await askText("product_id (optional)");
37
+ const p = await a.products.create(productId
38
+ ? { name: n, product_id: productId }
39
+ : { name: n });
40
+ showSuccess(`created: ${p.product_id}`);
41
+ }
42
+ else if (act === "pause") {
43
+ const id = await askText("product_id");
44
+ if (!id)
45
+ continue;
46
+ await a.products.pause(id);
47
+ showSuccess(`paused: ${id}`);
48
+ }
49
+ else if (act === "activate") {
50
+ const id = await askText("product_id");
51
+ if (!id)
52
+ continue;
53
+ await a.products.activate(id);
54
+ showSuccess(`activated: ${id}`);
55
+ }
56
+ else if (act === "remove") {
57
+ const id = await askText("product_id");
58
+ if (!id)
59
+ continue;
60
+ await a.products.remove(id);
61
+ showSuccess(`removed: ${id}`);
62
+ }
63
+ else if (act === "token") {
64
+ const pid = await askText("product_id");
65
+ if (!pid)
66
+ continue;
67
+ const uid = await askText("user_id");
68
+ if (!uid)
69
+ continue;
70
+ const t = await a.products.tokens.apply({ product_id: pid, user_id: uid });
71
+ showSuccess(`token: ${t.user_token.slice(0, 20)}...`);
72
+ }
73
+ }
74
+ catch (e) {
75
+ rethrowAdminAuthError(e);
76
+ showError(adminErrorMessage(e));
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/products.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Admin Env 管理命令。
3
+ *
4
+ * 三种模式:
5
+ * - Init:遍历所有 service 的 env 需求,逐一交互式配置
6
+ * - 按 Service 查看:选择一个 service,查看/配置其 env
7
+ * - 直接管理:list / upsert / remove 裸 key-value
8
+ */
9
+ import { AdminClient } from "@downcity/conduit";
10
+ export declare function manageEnv(a: AdminClient): Promise<void>;
11
+ //# sourceMappingURL=service-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-env.d.ts","sourceRoot":"","sources":["../../../../src/terminal/admin/commands/service-env.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2BhD,wBAAsB,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC7D"}