@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,342 @@
1
+ /**
2
+ * Session 与 server 配置持久化模块。
3
+ *
4
+ * 关键说明(中文)
5
+ * - server 是一等资源,必须显式配置后 CLI 才进入身份菜单
6
+ * - 不再注入默认 server;没有 server 时必须先添加
7
+ * - user session 仍然按 base_url 隔离保存
8
+ * - admin_secret_key 直接属于 server 配置,不再作为独立 session 维护
9
+ */
10
+ import fs from "node:fs";
11
+ import os from "node:os";
12
+ import path from "node:path";
13
+ import crypto from "node:crypto";
14
+ import { normalizeBaseUrl } from "./env.js";
15
+ const DIR = path.join(os.homedir(), ".downcity");
16
+ const CONFIG_FILE = path.join(DIR, "config.json");
17
+ const LEGACY_CONFIG_FILE = path.join(DIR, "product-client-config.json");
18
+ const LEGACY_USER_FILE = path.join(DIR, "product-client-user.json");
19
+ const LEGACY_ADMIN_FILE = path.join(DIR, "product-client-admin.json");
20
+ // ============================================================
21
+ // Config 读写
22
+ // ============================================================
23
+ /**
24
+ * 从磁盘读取 config,并把旧结构迁移到新的 server 模型。
25
+ */
26
+ export function readConfig() {
27
+ const raw = readJSON(CONFIG_FILE)
28
+ ?? readJSON(LEGACY_CONFIG_FILE)
29
+ ?? {};
30
+ const servers = readServersFromConfig(raw);
31
+ const active_server_url = readActiveServerURL(raw, servers);
32
+ return {
33
+ active_server_url,
34
+ servers,
35
+ model: typeof raw.model === "string" ? raw.model : "",
36
+ last_identity: raw.last_identity === "admin" || raw.last_identity === "user"
37
+ ? raw.last_identity
38
+ : undefined,
39
+ };
40
+ }
41
+ /**
42
+ * 写入 config 到磁盘。
43
+ */
44
+ export function writeConfig(config) {
45
+ const normalizedServers = normalizeServers(config.servers);
46
+ const active = normalizedServers.find((server) => server.base_url === config.active_server_url)
47
+ ? config.active_server_url
48
+ : normalizedServers[0]?.base_url;
49
+ writeJSON(CONFIG_FILE, {
50
+ active_server_url: active,
51
+ servers: normalizedServers,
52
+ model: config.model ?? "",
53
+ last_identity: config.last_identity,
54
+ });
55
+ }
56
+ // ============================================================
57
+ // Server 管理
58
+ // ============================================================
59
+ /**
60
+ * 读取当前激活的 server。
61
+ */
62
+ export function readActiveServer() {
63
+ const config = readConfig();
64
+ return config.servers.find((server) => server.base_url === config.active_server_url);
65
+ }
66
+ /**
67
+ * 设置当前激活的 server。
68
+ */
69
+ export function setActiveServer(baseUrl) {
70
+ const config = readConfig();
71
+ const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
72
+ if (!config.servers.find((server) => server.base_url === normalizedBaseUrl)) {
73
+ throw new Error(`Unknown server: ${normalizedBaseUrl}`);
74
+ }
75
+ writeConfig({
76
+ ...config,
77
+ active_server_url: normalizedBaseUrl,
78
+ });
79
+ }
80
+ /**
81
+ * 添加 server,并设为当前激活 server。
82
+ */
83
+ export function addServer(input) {
84
+ const config = readConfig();
85
+ const normalized = normalizeServer(input);
86
+ const existingIndex = config.servers.findIndex((server) => server.base_url === normalized.base_url);
87
+ if (existingIndex >= 0) {
88
+ config.servers[existingIndex] = normalized;
89
+ }
90
+ else {
91
+ config.servers.push(normalized);
92
+ }
93
+ writeConfig({
94
+ ...config,
95
+ servers: config.servers,
96
+ active_server_url: normalized.base_url,
97
+ });
98
+ return normalized;
99
+ }
100
+ /**
101
+ * 更新已存在的 server。
102
+ *
103
+ * 关键说明(中文)
104
+ * - 如果 base_url 变化,会清除旧 URL 下的 user session
105
+ * - active server 会自动切换到新 URL
106
+ */
107
+ export function updateServer(currentBaseUrl, input) {
108
+ const config = readConfig();
109
+ const normalizedCurrent = normalizeBaseUrl(currentBaseUrl);
110
+ const index = config.servers.findIndex((server) => server.base_url === normalizedCurrent);
111
+ if (index < 0) {
112
+ throw new Error(`Unknown server: ${normalizedCurrent}`);
113
+ }
114
+ const normalizedNext = normalizeServer(input);
115
+ const duplicateIndex = config.servers.findIndex((server) => server.base_url === normalizedNext.base_url);
116
+ if (duplicateIndex >= 0 && duplicateIndex !== index) {
117
+ throw new Error(`Server already exists: ${normalizedNext.base_url}`);
118
+ }
119
+ config.servers[index] = normalizedNext;
120
+ const activeServerUrl = config.active_server_url === normalizedCurrent
121
+ ? normalizedNext.base_url
122
+ : config.active_server_url;
123
+ writeConfig({
124
+ ...config,
125
+ servers: config.servers,
126
+ active_server_url: activeServerUrl,
127
+ });
128
+ if (normalizedCurrent !== normalizedNext.base_url) {
129
+ clearServerSessions(normalizedCurrent);
130
+ }
131
+ return normalizedNext;
132
+ }
133
+ /**
134
+ * 删除 server,同时清除该 URL 下的所有 session。
135
+ */
136
+ export function removeServer(baseUrl) {
137
+ const config = readConfig();
138
+ const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
139
+ const nextServers = config.servers.filter((server) => server.base_url !== normalizedBaseUrl);
140
+ const nextActive = config.active_server_url === normalizedBaseUrl
141
+ ? nextServers[0]?.base_url
142
+ : config.active_server_url;
143
+ writeConfig({
144
+ ...config,
145
+ servers: nextServers,
146
+ active_server_url: nextActive,
147
+ });
148
+ clearServerSessions(normalizedBaseUrl);
149
+ }
150
+ /**
151
+ * 根据 URL 读取 server。
152
+ */
153
+ export function readServer(baseUrl) {
154
+ const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
155
+ return readConfig().servers.find((server) => server.base_url === normalizedBaseUrl);
156
+ }
157
+ // ============================================================
158
+ // User Session(按 URL 隔离)
159
+ // ============================================================
160
+ function sessionDir(url) {
161
+ return path.join(DIR, "servers", urlHash(url));
162
+ }
163
+ function userFile(url) {
164
+ return path.join(sessionDir(url), "user.json");
165
+ }
166
+ export function readUserSession(url) {
167
+ return readJSON(userFile(url)) ?? readLegacyUserSession(url);
168
+ }
169
+ export function writeUserSession(session) {
170
+ writeJSON(userFile(session.base_url), session);
171
+ }
172
+ export function clearUserSession(url) {
173
+ try {
174
+ fs.unlinkSync(userFile(url));
175
+ }
176
+ catch {
177
+ // ignore
178
+ }
179
+ const legacy = readLegacyUserSession(url);
180
+ if (legacy) {
181
+ try {
182
+ fs.unlinkSync(LEGACY_USER_FILE);
183
+ }
184
+ catch {
185
+ // ignore
186
+ }
187
+ }
188
+ }
189
+ /**
190
+ * 清除某个 server URL 下的所有 session。
191
+ */
192
+ export function clearServerSessions(url) {
193
+ clearUserSession(url);
194
+ clearLegacyAdminSession(url);
195
+ }
196
+ // ============================================================
197
+ // 内部工具
198
+ // ============================================================
199
+ function readServersFromConfig(raw) {
200
+ const input = Array.isArray(raw.servers) ? raw.servers : [];
201
+ const servers = [];
202
+ for (const item of input) {
203
+ if (!item || typeof item !== "object")
204
+ continue;
205
+ const record = item;
206
+ const rawBaseUrl = typeof record.base_url === "string"
207
+ ? record.base_url
208
+ : typeof record.url === "string"
209
+ ? record.url
210
+ : "";
211
+ if (!rawBaseUrl.trim())
212
+ continue;
213
+ const normalizedBaseUrl = normalizeBaseUrl(rawBaseUrl);
214
+ const adminSecretKey = typeof record.admin_secret_key === "string"
215
+ ? record.admin_secret_key.trim()
216
+ : readLegacyAdminToken(normalizedBaseUrl);
217
+ const name = typeof record.name === "string" && record.name.trim()
218
+ ? record.name.trim()
219
+ : deriveServerName(normalizedBaseUrl);
220
+ const existing = servers.find((server) => server.base_url === normalizedBaseUrl);
221
+ if (existing) {
222
+ existing.name = name;
223
+ existing.admin_secret_key = adminSecretKey;
224
+ continue;
225
+ }
226
+ servers.push({
227
+ name,
228
+ base_url: normalizedBaseUrl,
229
+ admin_secret_key: adminSecretKey,
230
+ });
231
+ }
232
+ if (servers.length === 0 && typeof raw.base_url === "string" && raw.base_url.trim()) {
233
+ const normalizedBaseUrl = normalizeBaseUrl(raw.base_url);
234
+ servers.push({
235
+ name: deriveServerName(normalizedBaseUrl),
236
+ base_url: normalizedBaseUrl,
237
+ admin_secret_key: readLegacyAdminToken(normalizedBaseUrl),
238
+ });
239
+ }
240
+ return servers;
241
+ }
242
+ function readActiveServerURL(raw, servers) {
243
+ const rawActive = typeof raw.active_server_url === "string"
244
+ ? raw.active_server_url
245
+ : typeof raw.base_url === "string"
246
+ ? raw.base_url
247
+ : "";
248
+ if (rawActive.trim()) {
249
+ const normalized = normalizeBaseUrl(rawActive);
250
+ if (servers.find((server) => server.base_url === normalized)) {
251
+ return normalized;
252
+ }
253
+ }
254
+ return servers[0]?.base_url;
255
+ }
256
+ function normalizeServers(servers) {
257
+ const normalized = [];
258
+ for (const server of servers) {
259
+ const item = normalizeServer(server);
260
+ if (normalized.find((candidate) => candidate.base_url === item.base_url)) {
261
+ continue;
262
+ }
263
+ normalized.push(item);
264
+ }
265
+ return normalized;
266
+ }
267
+ function normalizeServer(input) {
268
+ const normalizedBaseUrl = normalizeBaseUrl(input.base_url);
269
+ const normalizedAdminSecretKey = String(input.admin_secret_key ?? "").trim();
270
+ if (!normalizedAdminSecretKey) {
271
+ throw new Error("admin_secret_key cannot be empty");
272
+ }
273
+ const normalizedName = String(input.name ?? "").trim() || deriveServerName(normalizedBaseUrl);
274
+ return {
275
+ name: normalizedName,
276
+ base_url: normalizedBaseUrl,
277
+ admin_secret_key: normalizedAdminSecretKey,
278
+ };
279
+ }
280
+ function deriveServerName(baseUrl) {
281
+ try {
282
+ const url = new URL(baseUrl);
283
+ return url.hostname || baseUrl;
284
+ }
285
+ catch {
286
+ return baseUrl;
287
+ }
288
+ }
289
+ function readLegacyAdminToken(url) {
290
+ const payload = readJSON(legacyAdminFile(url)) ?? readLegacyGlobalAdminSession(url);
291
+ return String(payload?.admin_token ?? "").trim();
292
+ }
293
+ function clearLegacyAdminSession(url) {
294
+ try {
295
+ fs.unlinkSync(legacyAdminFile(url));
296
+ }
297
+ catch {
298
+ // ignore
299
+ }
300
+ const legacy = readLegacyGlobalAdminSession(url);
301
+ if (legacy) {
302
+ try {
303
+ fs.unlinkSync(LEGACY_ADMIN_FILE);
304
+ }
305
+ catch {
306
+ // ignore
307
+ }
308
+ }
309
+ }
310
+ function legacyAdminFile(url) {
311
+ return path.join(sessionDir(url), "admin.json");
312
+ }
313
+ function readLegacyUserSession(url) {
314
+ const payload = readJSON(LEGACY_USER_FILE);
315
+ if (!payload?.base_url) {
316
+ return undefined;
317
+ }
318
+ return normalizeBaseUrl(payload.base_url) === normalizeBaseUrl(url) ? payload : undefined;
319
+ }
320
+ function readLegacyGlobalAdminSession(url) {
321
+ const payload = readJSON(LEGACY_ADMIN_FILE);
322
+ if (!payload?.base_url) {
323
+ return undefined;
324
+ }
325
+ return normalizeBaseUrl(payload.base_url) === normalizeBaseUrl(url) ? payload : undefined;
326
+ }
327
+ function urlHash(url) {
328
+ return crypto.createHash("sha256").update(url).digest("hex").slice(0, 16);
329
+ }
330
+ function readJSON(filepath) {
331
+ try {
332
+ return JSON.parse(fs.readFileSync(filepath, "utf8"));
333
+ }
334
+ catch {
335
+ return undefined;
336
+ }
337
+ }
338
+ function writeJSON(filepath, data) {
339
+ fs.mkdirSync(path.dirname(filepath), { recursive: true });
340
+ fs.writeFileSync(filepath, JSON.stringify(data, null, 2));
341
+ }
342
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/terminal/core/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Stripe 终端辅助模块。
3
+ *
4
+ * 关键说明(中文)
5
+ * - manager 侧不直接管理 Stripe 资源
6
+ * - 这里只负责基于当前 Infra server 推导可复制的固定回调地址
7
+ * - 这样用户在 Stripe Dashboard 里不需要手动拼 webhook URL
8
+ */
9
+ /**
10
+ * Stripe 常用 endpoint 集合。
11
+ */
12
+ export interface StripeEndpointSet {
13
+ /** 当前 InfraRuntime 对外地址 */
14
+ base_url: string;
15
+ /** Stripe webhook endpoint */
16
+ webhook_url: string;
17
+ /** 默认支付成功页 */
18
+ success_url: string;
19
+ /** 默认支付取消页 */
20
+ cancel_url: string;
21
+ }
22
+ /**
23
+ * 基于当前 InfraRuntime 地址构建 Stripe 相关 URL。
24
+ */
25
+ export declare function buildStripeEndpoints(baseUrl: string): StripeEndpointSet;
26
+ //# sourceMappingURL=stripe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../../src/terminal/core/stripe.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAQvE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Stripe 终端辅助模块。
3
+ *
4
+ * 关键说明(中文)
5
+ * - manager 侧不直接管理 Stripe 资源
6
+ * - 这里只负责基于当前 Infra server 推导可复制的固定回调地址
7
+ * - 这样用户在 Stripe Dashboard 里不需要手动拼 webhook URL
8
+ */
9
+ import { normalizeBaseUrl } from "./env.js";
10
+ /**
11
+ * 基于当前 InfraRuntime 地址构建 Stripe 相关 URL。
12
+ */
13
+ export function buildStripeEndpoints(baseUrl) {
14
+ const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
15
+ return {
16
+ base_url: normalizedBaseUrl,
17
+ webhook_url: `${normalizedBaseUrl}/v1/payment.stripe/webhook`,
18
+ success_url: `${normalizedBaseUrl}/v1/payment.stripe/redirect/success`,
19
+ cancel_url: `${normalizedBaseUrl}/v1/payment.stripe/redirect/cancel`,
20
+ };
21
+ }
22
+ //# sourceMappingURL=stripe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../../src/terminal/core/stripe.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgB5C;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO;QACL,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,GAAG,iBAAiB,4BAA4B;QAC7D,WAAW,EAAE,GAAG,iBAAiB,qCAAqC;QACtE,UAAU,EAAE,GAAG,iBAAiB,oCAAoC;KACrE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * UI 工具模块。
3
+ *
4
+ * 提供 CLI 交互所需的输入/输出封装。
5
+ * 模型选择接受通用的 { id, name, hint } 数组,不依赖 server model 类型。
6
+ */
7
+ import { isCancel, intro, log } from "@clack/prompts";
8
+ export { intro, log, isCancel };
9
+ export declare function show(text: string): void;
10
+ export declare function showError(text: string): void;
11
+ export declare function showSuccess(text: string): void;
12
+ /** 主命令菜单 */
13
+ export declare function askUserCommand(): Promise<string | undefined>;
14
+ /** 文本输入 */
15
+ export declare function askText(label: string): Promise<string | undefined>;
16
+ /** 密码输入 */
17
+ export declare function askSecret(label: string): Promise<string | undefined>;
18
+ /** 模型选项 */
19
+ export interface ModelOption {
20
+ /** 模型 ID */
21
+ id: string;
22
+ /** 模型展示名 */
23
+ name: string;
24
+ /** 提示信息 */
25
+ hint: string;
26
+ }
27
+ /** 列出并选择模型,返回模型 id 或 undefined */
28
+ export declare function askModel(models: ModelOption[], currentModel: string): Promise<string | undefined>;
29
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/terminal/core/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA0B,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAMhC,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAoB;AAC5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAqB;AAClE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAuB;AAMtE,YAAY;AACZ,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmBlE;AAED,WAAW;AACX,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAGxE;AAED,WAAW;AACX,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG1E;AAMD,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kCAAkC;AAClC,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * UI 工具模块。
3
+ *
4
+ * 提供 CLI 交互所需的输入/输出封装。
5
+ * 模型选择接受通用的 { id, name, hint } 数组,不依赖 server model 类型。
6
+ */
7
+ import { password, select, text, isCancel, intro, log } from "@clack/prompts";
8
+ export { intro, log, isCancel };
9
+ // ============================================================
10
+ // 显示函数
11
+ // ============================================================
12
+ export function show(text) { log.info(text); }
13
+ export function showError(text) { log.error(text); }
14
+ export function showSuccess(text) { log.success(text); }
15
+ // ============================================================
16
+ // 交互 prompts
17
+ // ============================================================
18
+ /** 主命令菜单 */
19
+ export async function askUserCommand() {
20
+ const s = await select({ message: "Command", options: [
21
+ { label: "Chat (agent)", value: "chat", hint: "Continuous conversation with pi-agent" },
22
+ { label: "Models", value: "models", hint: "List and select model" },
23
+ { label: "Balance", value: "balance", hint: "View current balance" },
24
+ { label: "History", value: "history", hint: "View balance ledger" },
25
+ { label: "Topups", value: "topups", hint: "View recharge orders" },
26
+ { label: "Recharge (Stripe)", value: "recharge", hint: "Create Checkout and pay in browser" },
27
+ { label: "Create topup", value: "topup_create", hint: "Create a pending topup order only" },
28
+ { label: "Redeem code", value: "redeem_code", hint: "Redeem a one-time credit code" },
29
+ { label: "My profile", value: "me" },
30
+ { label: "List services", value: "services" },
31
+ { label: "Call service", value: "service" },
32
+ { label: "Switch to Admin", value: "switch" },
33
+ { label: "Logout", value: "logout" },
34
+ { label: "Quit", value: "quit" },
35
+ ] });
36
+ if (!s || isCancel(s))
37
+ return undefined;
38
+ return s;
39
+ }
40
+ /** 文本输入 */
41
+ export async function askText(label) {
42
+ const v = await text({ message: label });
43
+ return (!v || isCancel(v)) ? undefined : v;
44
+ }
45
+ /** 密码输入 */
46
+ export async function askSecret(label) {
47
+ const v = await password({ message: label });
48
+ return (!v || isCancel(v)) ? undefined : v;
49
+ }
50
+ /** 列出并选择模型,返回模型 id 或 undefined */
51
+ export async function askModel(models, currentModel) {
52
+ const options = models.map((m) => ({
53
+ label: m.id === currentModel ? `★ ${m.name}` : ` ${m.name}`,
54
+ value: m.id,
55
+ hint: m.hint,
56
+ }));
57
+ const s = await select({ message: "Select model (★ current)", options });
58
+ return (!s || isCancel(s)) ? undefined : String(s);
59
+ }
60
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/terminal/core/ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CLI 自更新模块。
3
+ *
4
+ * 关键说明(中文)
5
+ * - 在 downcity 仓库内执行时,优先走本地 workspace 刷新全局安装
6
+ * - 普通全局安装环境下,退化为 `npm install -g @downcity/city@latest`
7
+ * - 更新完成后建议重新运行 CLI,避免当前进程继续使用旧代码
8
+ */
9
+ /**
10
+ * 执行 CLI 自更新。
11
+ */
12
+ export declare function updateCityCLI(cwd?: string): Promise<{
13
+ mode: "workspace" | "npm";
14
+ version: string;
15
+ }>;
16
+ /**
17
+ * 读取当前全局安装的 city 版本。
18
+ */
19
+ export declare function readInstalledCityVersion(): Promise<string>;
20
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/terminal/core/update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC;IAChE,IAAI,EAAE,WAAW,GAAG,KAAK,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAoBD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAUhE"}