downcity 1.1.127 → 1.1.130

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 (112) hide show
  1. package/city/admin/commands/models.d.ts.map +1 -1
  2. package/city/admin/commands/models.js +9 -2
  3. package/city/admin/commands/models.js.map +1 -1
  4. package/city/admin/loop.d.ts.map +1 -1
  5. package/city/admin/loop.js +76 -10
  6. package/city/admin/loop.js.map +1 -1
  7. package/city/app.d.ts.map +1 -1
  8. package/city/app.js +69 -4
  9. package/city/app.js.map +1 -1
  10. package/city/auth/admin.d.ts.map +1 -1
  11. package/city/auth/admin.js +5 -1
  12. package/city/auth/admin.js.map +1 -1
  13. package/city/auth/server-switch.d.ts.map +1 -1
  14. package/city/auth/server-switch.js +157 -30
  15. package/city/auth/server-switch.js.map +1 -1
  16. package/city/command/RootCommand.d.ts.map +1 -1
  17. package/city/command/RootCommand.js +75 -21
  18. package/city/command/RootCommand.js.map +1 -1
  19. package/city/core/session.d.ts +11 -0
  20. package/city/core/session.d.ts.map +1 -1
  21. package/city/core/session.js +26 -0
  22. package/city/core/session.js.map +1 -1
  23. package/city/core/ui.d.ts.map +1 -1
  24. package/city/core/ui.js +23 -16
  25. package/city/core/ui.js.map +1 -1
  26. package/city/env/commands/refresh.d.ts.map +1 -1
  27. package/city/env/commands/refresh.js +9 -2
  28. package/city/env/commands/refresh.js.map +1 -1
  29. package/city/home/HomeMenu.d.ts.map +1 -1
  30. package/city/home/HomeMenu.js +111 -15
  31. package/city/home/HomeMenu.js.map +1 -1
  32. package/city/i18n.d.ts +60 -0
  33. package/city/i18n.d.ts.map +1 -0
  34. package/city/i18n.js +110 -0
  35. package/city/i18n.js.map +1 -0
  36. package/city/index.js +2 -0
  37. package/city/index.js.map +1 -1
  38. package/city/types/CliLocale.d.ts +16 -0
  39. package/city/types/CliLocale.d.ts.map +1 -0
  40. package/city/types/CliLocale.js +9 -0
  41. package/city/types/CliLocale.js.map +1 -0
  42. package/city/types/Interactive.d.ts +2 -2
  43. package/city/types/Interactive.d.ts.map +1 -1
  44. package/city/workspace/ServerManagement.d.ts.map +1 -1
  45. package/city/workspace/ServerManagement.js +59 -13
  46. package/city/workspace/ServerManagement.js.map +1 -1
  47. package/package.json +4 -4
  48. package/town/command/AgentCommand.d.ts.map +1 -1
  49. package/town/command/AgentCommand.js +127 -39
  50. package/town/command/AgentCommand.js.map +1 -1
  51. package/town/command/ChatAuthCommand.d.ts.map +1 -1
  52. package/town/command/ChatAuthCommand.js +23 -6
  53. package/town/command/ChatAuthCommand.js.map +1 -1
  54. package/town/command/ChatCommand.d.ts.map +1 -1
  55. package/town/command/ChatCommand.js +6 -2
  56. package/town/command/ChatCommand.js.map +1 -1
  57. package/town/command/CityCommand.d.ts.map +1 -1
  58. package/town/command/CityCommand.js +74 -19
  59. package/town/command/CityCommand.js.map +1 -1
  60. package/town/command/ConfigCommand.d.ts.map +1 -1
  61. package/town/command/ConfigCommand.js +46 -15
  62. package/town/command/ConfigCommand.js.map +1 -1
  63. package/town/command/EnvCommand.d.ts.map +1 -1
  64. package/town/command/EnvCommand.js +42 -14
  65. package/town/command/EnvCommand.js.map +1 -1
  66. package/town/command/GatewayCommand.d.ts.map +1 -1
  67. package/town/command/GatewayCommand.js +39 -14
  68. package/town/command/GatewayCommand.js.map +1 -1
  69. package/town/command/ManagedPluginActionCommand.d.ts.map +1 -1
  70. package/town/command/ManagedPluginActionCommand.js +87 -26
  71. package/town/command/ManagedPluginActionCommand.js.map +1 -1
  72. package/town/command/PluginCommand.d.ts.map +1 -1
  73. package/town/command/PluginCommand.js +74 -18
  74. package/town/command/PluginCommand.js.map +1 -1
  75. package/town/command/PluginScheduleCommand.d.ts.map +1 -1
  76. package/town/command/PluginScheduleCommand.js +38 -10
  77. package/town/command/PluginScheduleCommand.js.map +1 -1
  78. package/town/command/RootCommand.d.ts.map +1 -1
  79. package/town/command/RootCommand.js +21 -4
  80. package/town/command/RootCommand.js.map +1 -1
  81. package/town/command/TokenCommand.d.ts.map +1 -1
  82. package/town/command/TokenCommand.js +45 -10
  83. package/town/command/TokenCommand.js.map +1 -1
  84. package/town/index.js +2 -0
  85. package/town/index.js.map +1 -1
  86. package/town/shared/ChatManager.d.ts.map +1 -1
  87. package/town/shared/ChatManager.js +101 -25
  88. package/town/shared/ChatManager.js.map +1 -1
  89. package/town/shared/CityConnection.d.ts.map +1 -1
  90. package/town/shared/CityConnection.js +111 -22
  91. package/town/shared/CityConnection.js.map +1 -1
  92. package/town/shared/CityStateStore.d.ts +9 -0
  93. package/town/shared/CityStateStore.d.ts.map +1 -1
  94. package/town/shared/CityStateStore.js +25 -0
  95. package/town/shared/CityStateStore.js.map +1 -1
  96. package/town/shared/CliLocale.d.ts +60 -0
  97. package/town/shared/CliLocale.d.ts.map +1 -0
  98. package/town/shared/CliLocale.js +110 -0
  99. package/town/shared/CliLocale.js.map +1 -0
  100. package/town/shared/InteractiveLocale.d.ts +12 -0
  101. package/town/shared/InteractiveLocale.d.ts.map +1 -0
  102. package/town/shared/InteractiveLocale.js +74 -0
  103. package/town/shared/InteractiveLocale.js.map +1 -0
  104. package/town/shared/TownManager.d.ts.map +1 -1
  105. package/town/shared/TownManager.js +107 -21
  106. package/town/shared/TownManager.js.map +1 -1
  107. package/town/types/CliLocale.d.ts +16 -0
  108. package/town/types/CliLocale.d.ts.map +1 -0
  109. package/town/types/CliLocale.js +9 -0
  110. package/town/types/CliLocale.js.map +1 -0
  111. package/town/types/TownCityState.d.ts +5 -0
  112. package/town/types/TownCityState.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAItC;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CzD"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDzD"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { show, showError } from "../../core/ui.js";
10
10
  import { adminErrorMessage, isAdminNotFoundError, rethrowAdminAuthError } from "../auth-error.js";
11
+ import { t } from "../../i18n.js";
11
12
  /**
12
13
  * 展示全部代码注册模型及其运行状态。
13
14
  */
@@ -21,7 +22,10 @@ export async function manageModels(a) {
21
22
  const aiScope = envCatalog.find((item) => item.id === "ai-models");
22
23
  const envMap = new Map(aiScope?.env.map((item) => [item.key, item.configured]) ?? []);
23
24
  if (items.length === 0) {
24
- show("No models registered on server.");
25
+ show(t({
26
+ zh: "当前 server 没有已注册的 models。",
27
+ en: "No models registered on server.",
28
+ }));
25
29
  return;
26
30
  }
27
31
  console.log(`\n${items.length} models:\n`);
@@ -52,7 +56,10 @@ export async function manageModels(a) {
52
56
  catch (e) {
53
57
  rethrowAdminAuthError(e);
54
58
  if (isAdminNotFoundError(e)) {
55
- showError("Connected City is too old and does not expose /v1/env/catalog yet. Deploy the latest worker/server first.");
59
+ showError(t({
60
+ zh: "当前连接的 City 版本过旧,尚未暴露 /v1/env/catalog。请先部署最新的 worker/server。",
61
+ en: "Connected City is too old and does not expose /v1/env/catalog yet. Deploy the latest worker/server first.",
62
+ }));
56
63
  return;
57
64
  }
58
65
  showError(adminErrorMessage(e));
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/admin/commands/models.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/admin/loop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyBvD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC,CA+CzD"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/admin/loop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA0BvD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC,CAmHzD"}
@@ -18,6 +18,7 @@ import { managePayment } from "./commands/payment.js";
18
18
  import { manageCustom } from "./commands/custom.js";
19
19
  import { manageModels } from "./commands/models.js";
20
20
  import { manageInstruction } from "./commands/instruction.js";
21
+ import { t } from "../i18n.js";
21
22
  const commands = {
22
23
  env: manageEnv,
23
24
  instruction: manageInstruction,
@@ -38,24 +39,86 @@ export async function adminLoop(session, options) {
38
39
  const embedded = options?.embedded === true;
39
40
  while (true) {
40
41
  const svc = await select({
41
- message: embedded ? "Server management" : "Manage Service",
42
+ message: embedded
43
+ ? t({
44
+ zh: "Server 管理",
45
+ en: "Server management",
46
+ })
47
+ : t({
48
+ zh: "管理服务",
49
+ en: "Manage Service",
50
+ }),
42
51
  options: [
43
- { label: "Env", value: "env", hint: "View & configure environment variables" },
44
- { label: "City Instruction", value: "instruction", hint: "Read aggregated city/service guidance" },
45
- { label: "Models", value: "models", hint: "Read model readiness and missing env" },
52
+ {
53
+ label: "Env",
54
+ value: "env",
55
+ hint: t({
56
+ zh: "查看并配置环境变量",
57
+ en: "View and configure environment variables",
58
+ }),
59
+ },
60
+ {
61
+ label: t({
62
+ zh: "City 指令",
63
+ en: "City Instruction",
64
+ }),
65
+ value: "instruction",
66
+ hint: t({
67
+ zh: "读取聚合后的 city/service 指引",
68
+ en: "Read aggregated city/service guidance",
69
+ }),
70
+ },
71
+ {
72
+ label: "Models",
73
+ value: "models",
74
+ hint: t({
75
+ zh: "查看模型就绪状态与缺失 env",
76
+ en: "Read model readiness and missing env requirements",
77
+ }),
78
+ },
46
79
  { label: "Towns", value: "towns" },
47
80
  { label: "Accounts", value: "accounts" },
48
81
  { label: "Balance", value: "balance" },
49
82
  { label: "Usage", value: "usage" },
50
83
  { label: "Payment (Stripe)", value: "payment" },
51
- { label: "Custom service...", value: "custom" },
84
+ {
85
+ label: t({
86
+ zh: "自定义服务...",
87
+ en: "Custom service...",
88
+ }),
89
+ value: "custom",
90
+ },
52
91
  ...(embedded
53
- ? [{ label: "Back", value: "back" }]
92
+ ? [{
93
+ label: t({
94
+ zh: "返回",
95
+ en: "Back",
96
+ }),
97
+ value: "back",
98
+ }]
54
99
  : [
55
- { label: "Switch to User", value: "switch" },
56
- { label: "Logout", value: "logout" },
100
+ {
101
+ label: t({
102
+ zh: "切换到 User",
103
+ en: "Switch to User",
104
+ }),
105
+ value: "switch",
106
+ },
107
+ {
108
+ label: t({
109
+ zh: "退出登录",
110
+ en: "Logout",
111
+ }),
112
+ value: "logout",
113
+ },
57
114
  ]),
58
- { label: "Quit", value: "quit" },
115
+ {
116
+ label: t({
117
+ zh: "退出",
118
+ en: "Quit",
119
+ }),
120
+ value: "quit",
121
+ },
59
122
  ],
60
123
  });
61
124
  if (!svc || isCancel(svc))
@@ -65,7 +128,10 @@ export async function adminLoop(session, options) {
65
128
  if (svc === "back")
66
129
  return "back";
67
130
  if (svc === "logout") {
68
- showSuccess("left admin mode");
131
+ showSuccess(t({
132
+ zh: "已退出 admin 模式",
133
+ en: "left admin mode",
134
+ }));
69
135
  return "logout";
70
136
  }
71
137
  if (svc === "switch")
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/admin/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/admin/loop.ts"],"names":[],"mappings":"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"}
package/city/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAYH,wBAAsB,UAAU,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEnE"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAkBH,wBAAsB,UAAU,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EnE"}
package/city/app.js CHANGED
@@ -10,13 +10,15 @@
10
10
  * - user 登录与本机 runtime 统一由 `town city login` 承担。
11
11
  */
12
12
  import { readFileSync } from "node:fs";
13
+ import { isCancel, select } from "@clack/prompts";
13
14
  import { intro } from "./core/ui.js";
14
- import { readActiveServer } from "./core/session.js";
15
+ import { readActiveServer, writePersistedCliLocale, } from "./core/session.js";
15
16
  import { parseArgs } from "./core/env.js";
16
17
  import { promptAddServer, promptSelectActiveServer } from "./auth/server-switch.js";
17
18
  import { show, showError, showSuccess } from "./core/ui.js";
18
19
  import { updateCli } from "./core/update.js";
19
20
  import { selectHomeAction, selectWelcomeAction } from "./home/HomeMenu.js";
21
+ import { getCliLocale, setCliLocale, t } from "./i18n.js";
20
22
  import { openServerWorkspace } from "./workspace/ServerWorkspace.js";
21
23
  export async function runCityApp(argv = []) {
22
24
  const cli = parseArgs(argv);
@@ -36,6 +38,10 @@ export async function runCityApp(argv = []) {
36
38
  await runSelfUpdate();
37
39
  return;
38
40
  }
41
+ if (welcomeAction === "set_language") {
42
+ await promptAndPersistCityCliLocale();
43
+ continue;
44
+ }
39
45
  const connectedServer = await promptAddServer();
40
46
  if (!connectedServer) {
41
47
  continue;
@@ -54,6 +60,10 @@ export async function runCityApp(argv = []) {
54
60
  await runSelfUpdate();
55
61
  return;
56
62
  }
63
+ if (homeAction === "set_language") {
64
+ await promptAndPersistCityCliLocale();
65
+ continue;
66
+ }
57
67
  if (homeAction === "connect_city") {
58
68
  const connectedServer = await promptAddServer();
59
69
  if (!connectedServer) {
@@ -82,6 +92,52 @@ export async function runCityApp(argv = []) {
82
92
  }
83
93
  }
84
94
  }
95
+ /**
96
+ * 交互式切换并持久化 City CLI 语言。
97
+ */
98
+ async function promptAndPersistCityCliLocale() {
99
+ const current_locale = getCliLocale();
100
+ const selected_locale = await select({
101
+ message: t({
102
+ zh: "选择 City CLI 语言",
103
+ en: "Choose the City CLI language",
104
+ }),
105
+ options: [
106
+ {
107
+ label: "English",
108
+ value: "en",
109
+ hint: current_locale === "en"
110
+ ? t({
111
+ zh: "当前",
112
+ en: "Current",
113
+ })
114
+ : undefined,
115
+ },
116
+ {
117
+ label: "中文",
118
+ value: "zh",
119
+ hint: current_locale === "zh"
120
+ ? t({
121
+ zh: "当前",
122
+ en: "Current",
123
+ })
124
+ : undefined,
125
+ },
126
+ ],
127
+ });
128
+ if (!selected_locale || isCancel(selected_locale)) {
129
+ return;
130
+ }
131
+ const cli_locale = selected_locale;
132
+ setCliLocale(cli_locale);
133
+ writePersistedCliLocale(cli_locale);
134
+ showSuccess(t({
135
+ zh: cli_locale === "zh" ? "已切换为中文,并保存为默认语言" : "已切换为英文,并保存为默认语言",
136
+ en: cli_locale === "zh"
137
+ ? "Switched to Chinese and saved as the default language"
138
+ : "Switched to English and saved as the default language",
139
+ }));
140
+ }
85
141
  /**
86
142
  * 读取当前 CLI 包版本。
87
143
  *
@@ -105,10 +161,19 @@ function readCliVersion() {
105
161
  */
106
162
  async function runSelfUpdate() {
107
163
  try {
108
- show("Updating downcity CLI...");
164
+ show(t({
165
+ zh: "正在更新 downcity CLI...",
166
+ en: "Updating downcity CLI...",
167
+ }));
109
168
  const result = await updateCli();
110
- showSuccess(`CLI updated via ${result.mode} mode -> v${result.version}`);
111
- show("Please run `city` again to use the updated CLI.");
169
+ showSuccess(t({
170
+ zh: `CLI 已通过 ${result.mode} 模式更新到 v${result.version}`,
171
+ en: `CLI updated via ${result.mode} mode -> v${result.version}`,
172
+ }));
173
+ show(t({
174
+ zh: "请重新运行 `city` 以使用更新后的 CLI。",
175
+ en: "Please run `city` again to use the updated CLI.",
176
+ }));
112
177
  }
113
178
  catch (error) {
114
179
  showError(error instanceof Error ? error.message : String(error));
package/city/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/auth/admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG3E,wBAAsB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAWxF"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/auth/admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAI3E,wBAAsB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAcxF"}
@@ -4,10 +4,14 @@
4
4
  * 当前版本直接复用当前 active server 上保存的 admin_secret_key。
5
5
  */
6
6
  import { showError } from "../core/ui.js";
7
+ import { t } from "../i18n.js";
7
8
  export async function adminAuth(server) {
8
9
  const adminSecretKey = String(server.admin_secret_key ?? "").trim();
9
10
  if (!adminSecretKey) {
10
- showError("Current City is missing admin_secret_key. Open Server management -> Configure admin access.");
11
+ showError(t({
12
+ zh: "当前 City 缺少 admin_secret_key。请打开 Server 管理并配置 admin 访问。",
13
+ en: "Current City is missing admin_secret_key. Open Server management -> Configure admin access.",
14
+ }));
11
15
  return undefined;
12
16
  }
13
17
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/auth/admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAqB;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,6FAA6F,CAAC,CAAC;QACzG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,cAAc;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/auth/admin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAqB;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,SAAS,CAAC,CAAC,CAAC;YACV,EAAE,EAAE,wDAAwD;YAC5D,EAAE,EAAE,6FAA6F;SAClG,CAAC,CAAC,CAAC;QACJ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,cAAc;KACjC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-switch.d.ts","sourceRoot":"","sources":["../../src/auth/server-switch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAOL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAK5B;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAsB1E;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAwBnF;AAED,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAwE3F;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAyBpC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B3E"}
1
+ {"version":3,"file":"server-switch.d.ts","sourceRoot":"","sources":["../../src/auth/server-switch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAOL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA+B1E;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAiCnF;AAED,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAgJ3F;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAuCpC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoD3E"}