@testany/hephos 0.3.17 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiFH,wBAAwB;AACxB,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEzB;IAEA;IAHT,YACS,IAAmB,EAC1B,OAAe,EACR,KAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAe;QAEnB,UAAK,GAAL,KAAK,CAAQ;QAGpB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
package/out/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AA4SH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAmaH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvD"}
package/out/cli.js CHANGED
@@ -15,6 +15,7 @@ import { ConsoleOutput } from './outputs/ConsoleOutput.js';
15
15
  import { ConsoleLogger } from './outputs/ConsoleLogger.js';
16
16
  import { getTeamConfigDir, ensureTeamConfigDir, resolveTeamConfigPath, formatMissingConfigError, discoverTeamConfigs } from '@testany/agent-chatter-core';
17
17
  import { colorize, sanitizeProxyUrl } from '@testany/agent-chatter-core';
18
+ import { AuthService, isValidRegion, AUTH_CONFIG, tokenCache, AuthError } from './auth/index.js';
18
19
  /**
19
20
  * Determine if debug mode is enabled
20
21
  * Priority: CLI flag > environment variable > default (false)
@@ -125,10 +126,105 @@ program
125
126
  .option('--registry <path>', 'Custom agent registry path (default: ~/.agent-chatter/agents/config.json)')
126
127
  .option('--debug', 'Enable debug logging (also: AGENT_CHATTER_DEBUG=1)')
127
128
  .option('--proxy <url>', 'HTTP/HTTPS proxy URL (overrides environment variables)')
129
+ .option('--login <region>', 'Login to HephOS cloud (cn|us)')
130
+ .option('--logout [region]', 'Logout from HephOS cloud (cn|us, or omit for active region)')
131
+ .option('--auth-status', 'Show authentication status')
128
132
  .action(async () => {
129
- // Start REPL mode when no subcommand is provided
130
133
  const cliOptions = program.opts();
131
134
  const debug = isDebugEnabled(cliOptions.debug);
135
+ // Handle --auth-status
136
+ if (cliOptions.authStatus) {
137
+ const activeRegion = tokenCache.getActiveRegion();
138
+ console.log(colorize('\n=== HephOS Authentication Status ===\n', 'bright'));
139
+ for (const region of ['cn', 'us']) {
140
+ const config = AUTH_CONFIG[region];
141
+ const isValid = tokenCache.isValid(region);
142
+ const userInfo = tokenCache.getUserInfo(region);
143
+ const isActive = activeRegion === region;
144
+ const status = isValid
145
+ ? colorize('✓ Logged in', 'green')
146
+ : colorize('✗ Not logged in', 'dim');
147
+ const activeMarker = isActive ? colorize(' (active)', 'cyan') : '';
148
+ console.log(`${config.displayName}${activeMarker}`);
149
+ console.log(` Status: ${status}`);
150
+ if (userInfo) {
151
+ console.log(colorize(` Email: ${userInfo.email || 'N/A'}`, 'dim'));
152
+ console.log(colorize(` User ID: ${userInfo.sub}`, 'dim'));
153
+ }
154
+ console.log();
155
+ }
156
+ console.log(colorize(`Token cache: ${tokenCache.getCachePath()}`, 'dim'));
157
+ return;
158
+ }
159
+ // Handle --login
160
+ if (cliOptions.login) {
161
+ const region = cliOptions.login.toLowerCase();
162
+ if (!isValidRegion(region)) {
163
+ console.error(colorize(`Error: Invalid region "${cliOptions.login}". Use 'cn' or 'us'.`, 'red'));
164
+ process.exitCode = 1;
165
+ return;
166
+ }
167
+ const config = AUTH_CONFIG[region];
168
+ console.log(colorize(`\n🔐 Opening browser for HephOS login (${config.displayName})...`, 'cyan'));
169
+ console.log(colorize(' Complete login in your browser to continue.\n', 'dim'));
170
+ try {
171
+ const authService = new AuthService(region);
172
+ const result = await authService.login();
173
+ console.log(colorize(`\n✓ Login successful!`, 'green'));
174
+ console.log(colorize(` Welcome, ${result.userInfo.email || result.userInfo.name || result.userInfo.sub}`, 'bright'));
175
+ console.log(colorize(` Token cached at: ${tokenCache.getCachePath()}`, 'dim'));
176
+ }
177
+ catch (err) {
178
+ if (err instanceof AuthError) {
179
+ console.error(colorize(`\n✗ Login failed: ${err.message}`, 'red'));
180
+ if (err.code === 'AUTH_BROWSER_FAILED') {
181
+ // URL already printed by AuthService
182
+ }
183
+ }
184
+ else {
185
+ console.error(colorize(`\n✗ Login failed: ${err instanceof Error ? err.message : String(err)}`, 'red'));
186
+ }
187
+ process.exitCode = 1;
188
+ }
189
+ return;
190
+ }
191
+ // Handle --logout
192
+ if (cliOptions.logout !== undefined) {
193
+ let region;
194
+ if (typeof cliOptions.logout === 'string') {
195
+ const r = cliOptions.logout.toLowerCase();
196
+ if (!isValidRegion(r)) {
197
+ console.error(colorize(`Error: Invalid region "${cliOptions.logout}". Use 'cn' or 'us'.`, 'red'));
198
+ process.exitCode = 1;
199
+ return;
200
+ }
201
+ region = r;
202
+ }
203
+ else {
204
+ // No region specified - use active region
205
+ const active = tokenCache.getActiveRegion();
206
+ if (!active) {
207
+ console.log(colorize('No active session to logout from.', 'yellow'));
208
+ return;
209
+ }
210
+ region = active;
211
+ }
212
+ const config = AUTH_CONFIG[region];
213
+ console.log(colorize(`Logging out from ${config.displayName}...`, 'cyan'));
214
+ try {
215
+ const authService = new AuthService(region);
216
+ await authService.logout();
217
+ console.log(colorize('✓ Logged out successfully.', 'green'));
218
+ }
219
+ catch (err) {
220
+ console.error(colorize(`Logout error: ${err instanceof Error ? err.message : String(err)}`, 'yellow'));
221
+ // Clear tokens anyway
222
+ tokenCache.clear(region);
223
+ console.log(colorize('Local tokens cleared.', 'dim'));
224
+ }
225
+ return;
226
+ }
227
+ // Start REPL mode when no auth-related options
132
228
  // Debug log with sanitized URL
133
229
  if (cliOptions.proxy && debug) {
134
230
  const sanitized = sanitizeProxyUrl(cliOptions.proxy);
package/out/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAiB;IACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC/C,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,IAAI,aAAa,CAAC;QACvB,KAAK;QACL,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAmB,EAAE,MAAe,EAAE,aAAsB,IAAI;IACvF,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACrC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACpD,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAClF,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,UAAkB;IAClC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAa,EAAE;QAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,qCAAqC;QACrC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,CAAC,YAAY,CAAC,oBAAoB,GAAG,OAAO,CAAC,CAAE,aAAa;QACtE,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACjD,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;QAC9C,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,UAAU,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,OAAO;KACF,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,mBAAmB,EAAE,2EAA2E,CAAC;KACxG,MAAM,CAAC,SAAS,EAAE,oDAAoD,CAAC;KACvE,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;KACjF,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,iDAAiD;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;IAC1F,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAE/C,+BAA+B;IAC/B,IAAI,UAAU,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEP,wDAAwD;AACxD,0DAA0D;AAE1D,OAAO;KACF,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;KACvE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAChB,MAAM,aAAa,GAAc;QAC7B,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,QAAQ;gBACd,+EAA+E;gBAC/E,4CAA4C;gBAC5C,IAAI,EAAE,CAAC,6BAA6B,EAAE,WAAW,CAAC;gBAClD,MAAM,EAAE,KAAK;aAChB;SACJ;QACD,IAAI,EAAE;YACF,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,sDAAsD;YACnE,eAAe,EAAE,8CAA8C;YAC/D,eAAe,EAAE;gBACb;oBACI,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,oCAAoC;iBACpD;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,0DAA0D;iBAC1E;aACJ;YACD,OAAO,EAAE;gBACL;oBACI,WAAW,EAAE,iBAAiB;oBAC9B,WAAW,EAAE,aAAa;oBAC1B,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,mDAAmD;oBAC5D,eAAe,EAAE,6DAA6D;iBACjF;gBACD;oBACI,WAAW,EAAE,gBAAgB;oBAC7B,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU;oBAChB,UAAU,EAAE,OAAO;oBACnB,OAAO,EAAE,kDAAkD;oBAC3D,eAAe,EAAE,4DAA4D;iBAChF;aACJ;SACJ;QACD,SAAS,EAAE,EAAE;KAChB,CAAC;IAEF,sCAAsC;IACtC,mBAAmB,EAAE,CAAC;IAEtB,wDAAwD;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,MAAM;QAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,kCAAkC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IACrC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IACzF,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEP,qBAAqB;AACrB,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1C,mBAAmB;AACnB,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAClC,WAAW,CAAC,0BAA0B,CAAC,CAAC;AAE7C,WAAW;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,iCAAiC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,6BAA6B,gBAAgB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,OAAO,CAAC,MAAM,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,WAAW;KACN,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;KACpD,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,YAAY,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,oCAAoC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACpC,MAAM,cAAc,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC;QACD,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACX,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACX,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;YACrC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO;QACX,CAAC;QACD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC;QACD,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,YAAY,KAAK,YAAY,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;AAEL,IAAI,cAAc,EAAE,CAAC;IACjB,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReplModeInk.d.ts","sourceRoot":"","sources":["../../src/repl/ReplModeInk.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAg5FH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,QAMjF"}
1
+ {"version":3,"file":"ReplModeInk.d.ts","sourceRoot":"","sources":["../../src/repl/ReplModeInk.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAwkGH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,QAMjF"}
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
4
4
  */
5
5
  import { useState, useEffect, useRef, useMemo } from 'react';
6
6
  import { render, Box, Text, useInput, useApp, Static, useStdout } from 'ink';
7
- import TextInput from 'ink-text-input';
7
+ import TextInput, { getLineInfo } from 'ink-text-input';
8
8
  import * as fs from 'fs';
9
9
  import { watch } from 'fs';
10
10
  import * as path from 'path';
@@ -27,6 +27,7 @@ import { QueueDisplay } from './components/QueueDisplay.js';
27
27
  import { TipsBar } from './components/TipsBar.js';
28
28
  import { HistoryOverlay } from './components/HistoryOverlay.js';
29
29
  import { useHistory } from './hooks/useHistory.js';
30
+ import { AuthService, isValidRegion, AUTH_CONFIG, tokenCache, AuthError } from '../auth/index.js';
30
31
  // Read version from package.json
31
32
  const __filename = fileURLToPath(import.meta.url);
32
33
  const __dirname = path.dirname(__filename);
@@ -38,11 +39,18 @@ const commands = [
38
39
  { name: '/status', desc: 'Check installed AI CLI tools' },
39
40
  { name: '/agents', desc: 'Manage registered AI agents' },
40
41
  { name: '/team', desc: 'Manage team configurations' },
42
+ { name: '/login', desc: 'Login to HephOS cloud' },
41
43
  { name: '/tips', desc: 'Toggle syntax tips in conversation mode' },
42
44
  { name: '/clear', desc: 'Clear the screen' },
43
45
  { name: '/exit', desc: 'Exit the application' },
44
46
  { name: '/quit', desc: 'Same as /exit' },
45
47
  ];
48
+ const loginCommands = [
49
+ { name: '/login cn', desc: 'Login to China Region' },
50
+ { name: '/login us', desc: 'Login to International Region' },
51
+ { name: '/login status', desc: 'Show authentication status' },
52
+ { name: '/login logout', desc: 'Logout from current region' },
53
+ ];
46
54
  const teamCommands = [
47
55
  { name: '/team create', desc: 'Create a new team configuration' },
48
56
  { name: '/team list', desc: 'List all team configurations' },
@@ -60,7 +68,11 @@ const agentsCommands = [
60
68
  ];
61
69
  // 欢迎界面组件
62
70
  function WelcomeScreen() {
63
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 0, flexDirection: "column", children: [_jsx(Logo, {}), _jsx(Text, { dimColor: true, children: "Multi-AI Conversation Orchestrator" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: " CLI version " }), _jsx(Text, { color: "white", children: VERSION })] }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: " Core version " }), _jsx(Text, { color: "white", children: CORE_VERSION })] })] }), _jsxs(Text, { dimColor: true, children: [" built by ", _jsx(Text, { color: "cyan", children: "TestAny.io" })] }), _jsxs(Text, { dimColor: true, children: [" Type ", _jsx(Text, { color: "green", children: "/help" }), " for available commands"] }), _jsxs(Text, { dimColor: true, children: [" Type ", _jsx(Text, { color: "green", children: "/exit" }), " to quit"] })] }));
71
+ // Check login status
72
+ const activeRegion = tokenCache.getActiveRegion();
73
+ const userInfo = activeRegion ? tokenCache.getUserInfo(activeRegion) : null;
74
+ const isLoggedIn = activeRegion && tokenCache.isValid(activeRegion);
75
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 0, flexDirection: "column", children: [_jsx(Logo, {}), _jsx(Text, { dimColor: true, children: "Multi-AI Conversation Orchestrator" }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: " CLI version " }), _jsx(Text, { color: "white", children: VERSION })] }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: " Core version " }), _jsx(Text, { color: "white", children: CORE_VERSION })] }), isLoggedIn && userInfo && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: " Logged in " }), _jsxs(Text, { color: "green", children: ["HephOS ", activeRegion.toUpperCase()] }), _jsx(Text, { dimColor: true, children: " as " }), _jsx(Text, { color: "white", children: userInfo.email || userInfo.name || 'unknown' })] }))] }), _jsxs(Text, { dimColor: true, children: [" built by ", _jsx(Text, { color: "cyan", children: "TestAny.io" })] }), _jsxs(Text, { dimColor: true, children: [" Type ", _jsx(Text, { color: "green", children: "/login" }), " to login"] }), _jsxs(Text, { dimColor: true, children: [" Type ", _jsx(Text, { color: "green", children: "/help" }), " for available commands"] }), _jsxs(Text, { dimColor: true, children: [" Type ", _jsx(Text, { color: "green", children: "/exit" }), " to quit"] })] }));
64
76
  }
65
77
  // 更新通知组件
66
78
  function UpdateNotification({ versionInfo }) {
@@ -217,6 +229,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
217
229
  const { stdout } = useStdout();
218
230
  const terminalWidth = stdout?.columns || 80;
219
231
  const [input, setInput] = useState('');
232
+ const [cursorOffset, setCursorOffset] = useState(0);
220
233
  // Initialize output with WelcomeScreen as first item - it will be rendered once via Static
221
234
  const [output, setOutput] = useState([_jsx(WelcomeScreen, {}, "welcome")]);
222
235
  const [currentConfig, setCurrentConfig] = useState(null);
@@ -726,6 +739,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
726
739
  const result = history.searchBackward();
727
740
  if (result !== null) {
728
741
  setInput(result);
742
+ setCursorOffset(result.length);
729
743
  }
730
744
  }
731
745
  else {
@@ -741,6 +755,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
741
755
  const result = history.searchForward();
742
756
  if (result !== null) {
743
757
  setInput(result);
758
+ setCursorOffset(result.length);
744
759
  }
745
760
  return;
746
761
  }
@@ -754,6 +769,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
754
769
  const result = history.searchBackward();
755
770
  if (result !== null) {
756
771
  setInput(result);
772
+ setCursorOffset(result.length);
757
773
  }
758
774
  return;
759
775
  }
@@ -761,6 +777,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
761
777
  const historyEntry = history.navigateUp(input, historyMode);
762
778
  if (historyEntry !== null) {
763
779
  setInput(historyEntry);
780
+ setCursorOffset(historyEntry.length); // Reset cursor to end
764
781
  }
765
782
  return;
766
783
  }
@@ -774,6 +791,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
774
791
  const result = history.searchForward();
775
792
  if (result !== null) {
776
793
  setInput(result);
794
+ setCursorOffset(result.length);
777
795
  }
778
796
  return;
779
797
  }
@@ -781,6 +799,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
781
799
  const historyEntry = history.navigateDown(historyMode);
782
800
  if (historyEntry !== null) {
783
801
  setInput(historyEntry);
802
+ setCursorOffset(historyEntry.length); // Reset cursor to end
784
803
  }
785
804
  return;
786
805
  }
@@ -882,6 +901,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
882
901
  const historyEntry = history.jumpUp(input, historyMode);
883
902
  if (historyEntry !== null) {
884
903
  setInput(historyEntry);
904
+ setCursorOffset(historyEntry.length); // Reset cursor to end
885
905
  }
886
906
  return;
887
907
  }
@@ -894,17 +914,24 @@ function App({ registryPath, debug = false, proxyUrl }) {
894
914
  const historyEntry = history.jumpDown(historyMode);
895
915
  if (historyEntry !== null) {
896
916
  setInput(historyEntry);
917
+ setCursorOffset(historyEntry.length); // Reset cursor to end
897
918
  }
898
919
  return;
899
920
  }
900
921
  }
901
922
  // 处理不同模式下的上下键导航
902
923
  if (key.upArrow) {
924
+ // Multi-line input: if cursor is not on first line, let TextInput handle it
925
+ const lineInfo = getLineInfo(input, cursorOffset);
926
+ if (!lineInfo.isFirstLine) {
927
+ return; // Let TextInput handle line navigation
928
+ }
903
929
  // Search mode takes priority - navigate search results
904
930
  if (history.searchMode) {
905
931
  const result = history.searchBackward();
906
932
  if (result !== null) {
907
933
  setInput(result);
934
+ setCursorOffset(result.length);
908
935
  }
909
936
  return;
910
937
  }
@@ -914,6 +941,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
914
941
  const historyEntry = history.navigateUp(input, 'normal');
915
942
  if (historyEntry !== null) {
916
943
  setInput(historyEntry);
944
+ setCursorOffset(historyEntry.length); // Reset cursor to end
917
945
  }
918
946
  return;
919
947
  }
@@ -928,6 +956,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
928
956
  const historyEntry = history.navigateUp(input, 'normal');
929
957
  if (historyEntry !== null) {
930
958
  setInput(historyEntry);
959
+ setCursorOffset(historyEntry.length); // Reset cursor to end
931
960
  }
932
961
  return;
933
962
  }
@@ -936,6 +965,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
936
965
  const historyEntry = history.navigateUp(input, 'conversation');
937
966
  if (historyEntry !== null) {
938
967
  setInput(historyEntry);
968
+ setCursorOffset(historyEntry.length); // Reset cursor to end
939
969
  }
940
970
  return;
941
971
  }
@@ -949,11 +979,17 @@ function App({ registryPath, debug = false, proxyUrl }) {
949
979
  }
950
980
  }
951
981
  if (key.downArrow) {
982
+ // Multi-line input: if cursor is not on last line, let TextInput handle it
983
+ const lineInfo = getLineInfo(input, cursorOffset);
984
+ if (!lineInfo.isLastLine) {
985
+ return; // Let TextInput handle line navigation
986
+ }
952
987
  // Search mode takes priority - navigate search results
953
988
  if (history.searchMode) {
954
989
  const result = history.searchForward();
955
990
  if (result !== null) {
956
991
  setInput(result);
992
+ setCursorOffset(result.length);
957
993
  }
958
994
  return;
959
995
  }
@@ -963,6 +999,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
963
999
  const historyEntry = history.navigateDown('normal');
964
1000
  if (historyEntry !== null) {
965
1001
  setInput(historyEntry);
1002
+ setCursorOffset(historyEntry.length); // Reset cursor to end
966
1003
  }
967
1004
  return;
968
1005
  }
@@ -983,6 +1020,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
983
1020
  const historyEntry = history.navigateDown('conversation');
984
1021
  if (historyEntry !== null) {
985
1022
  setInput(historyEntry);
1023
+ setCursorOffset(historyEntry.length); // Reset cursor to end
986
1024
  }
987
1025
  }
988
1026
  return;
@@ -1139,6 +1177,9 @@ function App({ registryPath, debug = false, proxyUrl }) {
1139
1177
  case '/agents':
1140
1178
  handleAgentsCommand(args);
1141
1179
  break;
1180
+ case '/login':
1181
+ await handleLoginCommand(args);
1182
+ break;
1142
1183
  case '/tips':
1143
1184
  if (args[0] === 'off') {
1144
1185
  setShowTips(false);
@@ -1202,6 +1243,71 @@ function App({ registryPath, debug = false, proxyUrl }) {
1202
1243
  }
1203
1244
  }
1204
1245
  };
1246
+ // Handle /login command
1247
+ const handleLoginCommand = async (args) => {
1248
+ if (args.length === 0) {
1249
+ // Show login help/region selection
1250
+ appendOutput(_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", children: "Login to HephOS Cloud" }), _jsx(Text, { dimColor: true, children: "Usage: /login <region> | /login status | /login logout" }), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Available regions:" }), _jsxs(Text, { children: [" cn - ", AUTH_CONFIG.cn.displayName] }), _jsxs(Text, { children: [" us - ", AUTH_CONFIG.us.displayName] }), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Commands:" }), _jsx(Text, { children: " /login cn - Login to CN region" }), _jsx(Text, { children: " /login us - Login to US region" }), _jsx(Text, { children: " /login status - Show authentication status" }), _jsx(Text, { children: " /login logout - Logout from current region" })] }, `login-help-${getNextKey()}`));
1251
+ return;
1252
+ }
1253
+ const subcommand = args[0].toLowerCase();
1254
+ if (subcommand === 'status') {
1255
+ // Show auth status
1256
+ const activeRegion = tokenCache.getActiveRegion();
1257
+ appendOutput(_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", children: "HephOS Authentication Status" }), _jsx(Text, { children: " " }), ['cn', 'us'].map(region => {
1258
+ const config = AUTH_CONFIG[region];
1259
+ const isValid = tokenCache.isValid(region);
1260
+ const userInfo = tokenCache.getUserInfo(region);
1261
+ const isActive = activeRegion === region;
1262
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { children: [config.displayName, isActive && _jsx(Text, { color: "cyan", children: " (active)" })] }), _jsxs(Text, { children: [' Status: ', isValid
1263
+ ? _jsx(Text, { color: "green", children: "\u2713 Logged in" })
1264
+ : _jsx(Text, { dimColor: true, children: "\u2717 Not logged in" })] }), userInfo && (_jsxs(_Fragment, { children: [_jsxs(Text, { dimColor: true, children: [" Email: ", userInfo.email || 'N/A'] }), _jsxs(Text, { dimColor: true, children: [" User ID: ", userInfo.sub] })] }))] }, region));
1265
+ }), _jsxs(Text, { dimColor: true, children: ["Token cache: ", tokenCache.getCachePath()] })] }, `auth-status-${getNextKey()}`));
1266
+ return;
1267
+ }
1268
+ if (subcommand === 'logout') {
1269
+ const region = args[1]?.toLowerCase();
1270
+ const targetRegion = region && isValidRegion(region) ? region : tokenCache.getActiveRegion();
1271
+ if (!targetRegion) {
1272
+ appendOutput(_jsx(Text, { color: "yellow", children: "No active session to logout from." }, `logout-none-${getNextKey()}`));
1273
+ return;
1274
+ }
1275
+ const config = AUTH_CONFIG[targetRegion];
1276
+ appendOutput(_jsxs(Text, { dimColor: true, children: ["Logging out from ", config.displayName, "..."] }, `logout-msg-${getNextKey()}`));
1277
+ try {
1278
+ const authService = new AuthService(targetRegion);
1279
+ await authService.logout();
1280
+ appendOutput(_jsx(Text, { color: "green", children: "\u2713 Logged out successfully." }, `logout-ok-${getNextKey()}`));
1281
+ }
1282
+ catch (err) {
1283
+ tokenCache.clear(targetRegion);
1284
+ appendOutput(_jsx(Text, { color: "yellow", children: "Local tokens cleared." }, `logout-warn-${getNextKey()}`));
1285
+ }
1286
+ return;
1287
+ }
1288
+ // Login to a region
1289
+ if (!isValidRegion(subcommand)) {
1290
+ appendOutput(_jsxs(Text, { color: "red", children: ["Invalid region \"", subcommand, "\". Use 'cn' or 'us'."] }, `login-invalid-${getNextKey()}`));
1291
+ return;
1292
+ }
1293
+ const region = subcommand;
1294
+ const config = AUTH_CONFIG[region];
1295
+ appendOutput(_jsxs(Text, { color: "cyan", children: ["\uD83D\uDD10 Opening browser for HephOS login (", config.displayName, ")..."] }, `login-start-${getNextKey()}`));
1296
+ appendOutput(_jsx(Text, { dimColor: true, children: " Complete login in your browser to continue." }, `login-hint-${getNextKey()}`));
1297
+ try {
1298
+ const authService = new AuthService(region);
1299
+ const result = await authService.login();
1300
+ appendOutput(_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", children: "\u2713 Login successful!" }), _jsxs(Text, { bold: true, children: [" Welcome, ", result.userInfo.email || result.userInfo.name || result.userInfo.sub] }), _jsxs(Text, { dimColor: true, children: [" Token cached at: ", tokenCache.getCachePath()] })] }, `login-success-${getNextKey()}`));
1301
+ }
1302
+ catch (err) {
1303
+ if (err instanceof AuthError) {
1304
+ appendOutput(_jsxs(Text, { color: "red", children: ["\u2717 Login failed: ", err.message] }, `login-error-${getNextKey()}`));
1305
+ }
1306
+ else {
1307
+ appendOutput(_jsxs(Text, { color: "red", children: ["\u2717 Login failed: ", err instanceof Error ? err.message : String(err)] }, `login-error-${getNextKey()}`));
1308
+ }
1309
+ }
1310
+ };
1205
1311
  const handleTeamCommand = (args) => {
1206
1312
  if (args.length === 0) {
1207
1313
  appendOutput(_jsx(TeamMenuHelp, {}, `team-help-${getNextKey()}`));
@@ -1872,7 +1978,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
1872
1978
  history.exitHistory();
1873
1979
  }
1874
1980
  setInput(val);
1875
- }, onSubmit: handleInputSubmit, placeholder: " " })] }), _jsx(Text, { color: mode === 'conversation' ? 'green' : 'cyan', dimColor: true, children: '─'.repeat(terminalWidth - 4) })] })), !isExiting && (mode === 'normal' || mode === 'conversation') && (history.isActive || history.searchMode) && (_jsx(HistoryOverlay, { visible: true, entries: history.entries, currentIndex: history.currentIndex, activeMode: history.activeMode, searchMode: history.searchMode, searchQuery: history.searchQuery, terminalWidth: terminalWidth })), !isExiting && mode === 'normal' && !history.isActive && !history.searchMode && _jsx(CommandHints, { input: input, selectedIndex: selectedIndex }), !isExiting && mode === 'conversation' && !history.isActive && !history.searchMode && (_jsx(TipsBar, { visible: showTips, terminalWidth: terminalWidth }))] }));
1981
+ }, onSubmit: handleInputSubmit, onCursorChange: setCursorOffset, placeholder: " " })] }), _jsx(Text, { color: mode === 'conversation' ? 'green' : 'cyan', dimColor: true, children: '─'.repeat(terminalWidth - 4) })] })), !isExiting && (mode === 'normal' || mode === 'conversation') && (history.isActive || history.searchMode) && (_jsx(HistoryOverlay, { visible: true, entries: history.entries, currentIndex: history.currentIndex, activeMode: history.activeMode, searchMode: history.searchMode, searchQuery: history.searchQuery, terminalWidth: terminalWidth })), !isExiting && mode === 'normal' && !history.isActive && !history.searchMode && _jsx(CommandHints, { input: input, selectedIndex: selectedIndex }), !isExiting && mode === 'conversation' && !history.isActive && !history.searchMode && (_jsx(TipsBar, { visible: showTips, terminalWidth: terminalWidth }))] }));
1876
1982
  }
1877
1983
  export function startReplInk(registryPath, options = {}) {
1878
1984
  render(_jsx(App, { registryPath: registryPath, debug: options.debug, proxyUrl: options.proxyUrl }), {