@testany/hephos 0.3.18 → 0.4.0-dev.3

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 (81) hide show
  1. package/README.md +29 -0
  2. package/out/auth/AuthConfig.d.ts +54 -0
  3. package/out/auth/AuthConfig.d.ts.map +1 -0
  4. package/out/auth/AuthConfig.js +70 -0
  5. package/out/auth/AuthConfig.js.map +1 -0
  6. package/out/auth/AuthService.d.ts +74 -0
  7. package/out/auth/AuthService.d.ts.map +1 -0
  8. package/out/auth/AuthService.js +275 -0
  9. package/out/auth/AuthService.js.map +1 -0
  10. package/out/auth/CallbackServer.d.ts +15 -0
  11. package/out/auth/CallbackServer.d.ts.map +1 -0
  12. package/out/auth/CallbackServer.js +277 -0
  13. package/out/auth/CallbackServer.js.map +1 -0
  14. package/out/auth/TokenCache.d.ts +81 -0
  15. package/out/auth/TokenCache.d.ts.map +1 -0
  16. package/out/auth/TokenCache.js +191 -0
  17. package/out/auth/TokenCache.js.map +1 -0
  18. package/out/auth/index.d.ts +11 -0
  19. package/out/auth/index.d.ts.map +1 -0
  20. package/out/auth/index.js +13 -0
  21. package/out/auth/index.js.map +1 -0
  22. package/out/auth/types.d.ts +75 -0
  23. package/out/auth/types.d.ts.map +1 -0
  24. package/out/auth/types.js +15 -0
  25. package/out/auth/types.js.map +1 -0
  26. package/out/cli.d.ts.map +1 -1
  27. package/out/cli.js +223 -33
  28. package/out/cli.js.map +1 -1
  29. package/out/repl/ReplModeInk.d.ts +1 -0
  30. package/out/repl/ReplModeInk.d.ts.map +1 -1
  31. package/out/repl/ReplModeInk.js +96 -3
  32. package/out/repl/ReplModeInk.js.map +1 -1
  33. package/out/secure-config/BaseDirResolver.d.ts +5 -0
  34. package/out/secure-config/BaseDirResolver.d.ts.map +1 -0
  35. package/out/secure-config/BaseDirResolver.js +20 -0
  36. package/out/secure-config/BaseDirResolver.js.map +1 -0
  37. package/out/secure-config/DeviceKeyService.d.ts +13 -0
  38. package/out/secure-config/DeviceKeyService.d.ts.map +1 -0
  39. package/out/secure-config/DeviceKeyService.js +51 -0
  40. package/out/secure-config/DeviceKeyService.js.map +1 -0
  41. package/out/secure-config/DeviceStore.d.ts +13 -0
  42. package/out/secure-config/DeviceStore.d.ts.map +1 -0
  43. package/out/secure-config/DeviceStore.js +39 -0
  44. package/out/secure-config/DeviceStore.js.map +1 -0
  45. package/out/secure-config/InstructionNormalizer.d.ts +5 -0
  46. package/out/secure-config/InstructionNormalizer.d.ts.map +1 -0
  47. package/out/secure-config/InstructionNormalizer.js +20 -0
  48. package/out/secure-config/InstructionNormalizer.js.map +1 -0
  49. package/out/secure-config/KeysetService.d.ts +15 -0
  50. package/out/secure-config/KeysetService.d.ts.map +1 -0
  51. package/out/secure-config/KeysetService.js +88 -0
  52. package/out/secure-config/KeysetService.js.map +1 -0
  53. package/out/secure-config/SCPService.d.ts +14 -0
  54. package/out/secure-config/SCPService.d.ts.map +1 -0
  55. package/out/secure-config/SCPService.js +79 -0
  56. package/out/secure-config/SCPService.js.map +1 -0
  57. package/out/secure-config/SecureConfigClient.d.ts +30 -0
  58. package/out/secure-config/SecureConfigClient.d.ts.map +1 -0
  59. package/out/secure-config/SecureConfigClient.js +81 -0
  60. package/out/secure-config/SecureConfigClient.js.map +1 -0
  61. package/out/secure-config/errors.d.ts +8 -0
  62. package/out/secure-config/errors.d.ts.map +1 -0
  63. package/out/secure-config/errors.js +20 -0
  64. package/out/secure-config/errors.js.map +1 -0
  65. package/out/secure-config/index.d.ts +11 -0
  66. package/out/secure-config/index.d.ts.map +1 -0
  67. package/out/secure-config/index.js +11 -0
  68. package/out/secure-config/index.js.map +1 -0
  69. package/out/secure-config/rootKey.d.ts +3 -0
  70. package/out/secure-config/rootKey.d.ts.map +1 -0
  71. package/out/secure-config/rootKey.js +57 -0
  72. package/out/secure-config/rootKey.js.map +1 -0
  73. package/out/secure-config/signatureUtils.d.ts +3 -0
  74. package/out/secure-config/signatureUtils.d.ts.map +1 -0
  75. package/out/secure-config/signatureUtils.js +23 -0
  76. package/out/secure-config/signatureUtils.js.map +1 -0
  77. package/out/secure-config/types.d.ts +79 -0
  78. package/out/secure-config/types.d.ts.map +1 -0
  79. package/out/secure-config/types.js +2 -0
  80. package/out/secure-config/types.js.map +1 -0
  81. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,uCAAuC;AACvC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAErC,6BAA6B;AAC7B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjD,4CAA4C;AAC5C,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,sBAAsB;AACtB,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mBAAmB;AACnB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,uBAAuB;AACvB,MAAM,MAAM,aAAa,GACrB,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,4BAA4B,GAC5B,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,kBAAkB,CAAC;AAEvB,wBAAwB;AACxB,qBAAa,SAAU,SAAQ,KAAK;IAEzB,IAAI,EAAE,aAAa;IAEnB,KAAK,CAAC,EAAE,KAAK;gBAFb,IAAI,EAAE,aAAa,EAC1B,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,KAAK,YAAA;CAKvB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Auth module type definitions
3
+ */
4
+ /** Custom auth error */
5
+ export class AuthError extends Error {
6
+ code;
7
+ cause;
8
+ constructor(code, message, cause) {
9
+ super(message);
10
+ this.code = code;
11
+ this.cause = cause;
12
+ this.name = 'AuthError';
13
+ }
14
+ }
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsFH,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;AAyhBH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvD"}
package/out/cli.js CHANGED
@@ -13,8 +13,11 @@ import { startReplInk } from './repl/ReplModeInk.js';
13
13
  import { createAgentsCommand } from './commands/AgentsCommand.js';
14
14
  import { ConsoleOutput } from './outputs/ConsoleOutput.js';
15
15
  import { ConsoleLogger } from './outputs/ConsoleLogger.js';
16
- import { getTeamConfigDir, ensureTeamConfigDir, resolveTeamConfigPath, formatMissingConfigError, discoverTeamConfigs } from '@testany/agent-chatter-core';
16
+ import { getTeamConfigDir, ensureTeamConfigDir, resolveTeamConfigPath, formatMissingConfigError } from '@testany/agent-chatter-core';
17
17
  import { colorize, sanitizeProxyUrl } from '@testany/agent-chatter-core';
18
+ import { AuthService, isValidRegion, isValidEnvironment, AUTH_CONFIG, tokenCache, AuthError } from './auth/index.js';
19
+ import { SecureConfigClient, DeviceKeyService, KeysetService, SCPService, InstructionNormalizer, BaseDirResolver, SecureConfigError, resolveRootPublicKeyPem } from './secure-config/index.js';
20
+ import * as os from 'os';
18
21
  /**
19
22
  * Determine if debug mode is enabled
20
23
  * Priority: CLI flag > environment variable > default (false)
@@ -39,6 +42,20 @@ function createLogger(debug) {
39
42
  // Read version from package.json
40
43
  const __filename = fileURLToPath(import.meta.url);
41
44
  const __dirname = path.dirname(__filename);
45
+ function getCliVersion() {
46
+ if (process.env.npm_package_version) {
47
+ return process.env.npm_package_version;
48
+ }
49
+ try {
50
+ const pkgPath = path.resolve(__dirname, '../package.json');
51
+ const raw = fs.readFileSync(pkgPath, 'utf-8');
52
+ const pkg = JSON.parse(raw);
53
+ return pkg.version || '0.0.0';
54
+ }
55
+ catch {
56
+ return '0.0.0';
57
+ }
58
+ }
42
59
  const packageJsonPath = path.join(__dirname, '..', 'package.json');
43
60
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
44
61
  const VERSION = packageJson.version;
@@ -125,10 +142,116 @@ program
125
142
  .option('--registry <path>', 'Custom agent registry path (default: ~/.agent-chatter/agents/config.json)')
126
143
  .option('--debug', 'Enable debug logging (also: AGENT_CHATTER_DEBUG=1)')
127
144
  .option('--proxy <url>', 'HTTP/HTTPS proxy URL (overrides environment variables)')
145
+ .option('--login <region>', 'Login to HephOS cloud (cn|us)')
146
+ .option('--env <env>', 'Environment for cloud APIs (prod|staging)', 'prod')
147
+ .option('--logout [region]', 'Logout from HephOS cloud (cn|us, or omit for active region)')
148
+ .option('--auth-status', 'Show authentication status')
128
149
  .action(async () => {
129
- // Start REPL mode when no subcommand is provided
130
150
  const cliOptions = program.opts();
131
151
  const debug = isDebugEnabled(cliOptions.debug);
152
+ // Handle --auth-status
153
+ if (cliOptions.authStatus) {
154
+ const activeRegion = tokenCache.getActiveRegion();
155
+ const activeEnv = tokenCache.getActiveEnv();
156
+ console.log(colorize('\n=== HephOS Authentication Status ===\n', 'bright'));
157
+ console.log(colorize(`Active environment: ${activeEnv}`, 'dim'));
158
+ console.log();
159
+ for (const region of ['cn', 'us']) {
160
+ const config = AUTH_CONFIG[region];
161
+ const isValid = tokenCache.isValid(region);
162
+ const userInfo = tokenCache.getUserInfo(region);
163
+ const isActive = activeRegion === region;
164
+ const status = isValid
165
+ ? colorize('✓ Logged in', 'green')
166
+ : colorize('✗ Not logged in', 'dim');
167
+ const activeMarker = isActive ? colorize(' (active)', 'cyan') : '';
168
+ console.log(`${config.displayName}${activeMarker}`);
169
+ console.log(` Status: ${status}`);
170
+ if (userInfo) {
171
+ console.log(colorize(` Email: ${userInfo.email || 'N/A'}`, 'dim'));
172
+ console.log(colorize(` User ID: ${userInfo.sub}`, 'dim'));
173
+ }
174
+ console.log();
175
+ }
176
+ console.log(colorize(`Token cache: ${tokenCache.getCachePath()}`, 'dim'));
177
+ return;
178
+ }
179
+ // Handle --login
180
+ if (cliOptions.login) {
181
+ const region = cliOptions.login.toLowerCase();
182
+ if (!isValidRegion(region)) {
183
+ console.error(colorize(`Error: Invalid region "${cliOptions.login}". Use 'cn' or 'us'.`, 'red'));
184
+ process.exitCode = 1;
185
+ return;
186
+ }
187
+ const env = (cliOptions.env || 'prod').toLowerCase();
188
+ if (!isValidEnvironment(env)) {
189
+ console.error(colorize(`Error: Invalid environment "${cliOptions.env}". Use 'prod' or 'staging'.`, 'red'));
190
+ process.exitCode = 1;
191
+ return;
192
+ }
193
+ const config = AUTH_CONFIG[region];
194
+ console.log(colorize(`\n🔐 Opening browser for HephOS login (${config.displayName})...`, 'cyan'));
195
+ console.log(colorize(' Complete login in your browser to continue.\n', 'dim'));
196
+ try {
197
+ const authService = new AuthService(region, env);
198
+ const result = await authService.login();
199
+ console.log(colorize(`\n✓ Login successful!`, 'green'));
200
+ console.log(colorize(` Welcome, ${result.userInfo.email || result.userInfo.name || result.userInfo.sub}`, 'bright'));
201
+ console.log(colorize(` Environment: ${env}`, 'dim'));
202
+ console.log(colorize(` Token cached at: ${tokenCache.getCachePath()}`, 'dim'));
203
+ }
204
+ catch (err) {
205
+ if (err instanceof AuthError) {
206
+ console.error(colorize(`\n✗ Login failed: ${err.message}`, 'red'));
207
+ if (err.code === 'AUTH_BROWSER_FAILED') {
208
+ // URL already printed by AuthService
209
+ }
210
+ }
211
+ else {
212
+ console.error(colorize(`\n✗ Login failed: ${err instanceof Error ? err.message : String(err)}`, 'red'));
213
+ }
214
+ process.exitCode = 1;
215
+ }
216
+ return;
217
+ }
218
+ // Handle --logout
219
+ if (cliOptions.logout !== undefined) {
220
+ let region;
221
+ if (typeof cliOptions.logout === 'string') {
222
+ const r = cliOptions.logout.toLowerCase();
223
+ if (!isValidRegion(r)) {
224
+ console.error(colorize(`Error: Invalid region "${cliOptions.logout}". Use 'cn' or 'us'.`, 'red'));
225
+ process.exitCode = 1;
226
+ return;
227
+ }
228
+ region = r;
229
+ }
230
+ else {
231
+ // No region specified - use active region
232
+ const active = tokenCache.getActiveRegion();
233
+ if (!active) {
234
+ console.log(colorize('No active session to logout from.', 'yellow'));
235
+ return;
236
+ }
237
+ region = active;
238
+ }
239
+ const config = AUTH_CONFIG[region];
240
+ console.log(colorize(`Logging out from ${config.displayName}...`, 'cyan'));
241
+ try {
242
+ const authService = new AuthService(region, tokenCache.getActiveEnv());
243
+ await authService.logout();
244
+ console.log(colorize('✓ Logged out successfully.', 'green'));
245
+ }
246
+ catch (err) {
247
+ console.error(colorize(`Logout error: ${err instanceof Error ? err.message : String(err)}`, 'yellow'));
248
+ // Clear tokens anyway
249
+ tokenCache.clear(region);
250
+ console.log(colorize('Local tokens cleared.', 'dim'));
251
+ }
252
+ return;
253
+ }
254
+ // Start REPL mode when no auth-related options
132
255
  // Debug log with sanitized URL
133
256
  if (cliOptions.proxy && debug) {
134
257
  const sanitized = sanitizeProxyUrl(cliOptions.proxy);
@@ -144,7 +267,7 @@ program
144
267
  .option('-o, --output <path>', 'Output file path', 'hephos-config.json')
145
268
  .action((options) => {
146
269
  const exampleConfig = {
147
- schemaVersion: '1.1',
270
+ schemaVersion: '1.2',
148
271
  agents: [
149
272
  {
150
273
  name: 'claude',
@@ -159,6 +282,7 @@ program
159
282
  displayName: 'Claude Code Test Team',
160
283
  description: 'A team with Claude Code CLI agent and human observer',
161
284
  instructionFile: './teams/claude-code-test/team_instruction.md',
285
+ instructionContent: '',
162
286
  roleDefinitions: [
163
287
  {
164
288
  name: 'reviewer',
@@ -181,7 +305,8 @@ program
181
305
  agentType: 'claude',
182
306
  themeColor: 'cyan',
183
307
  baseDir: './teams/claude-code-test/reviewer/claude-reviewer',
184
- instructionFile: './teams/claude-code-test/reviewer/claude-reviewer/AGENTS.md'
308
+ instructionFile: './teams/claude-code-test/reviewer/claude-reviewer/AGENTS.md',
309
+ instructionContent: ''
185
310
  },
186
311
  {
187
312
  displayName: 'Human Observer',
@@ -191,7 +316,8 @@ program
191
316
  role: 'observer',
192
317
  themeColor: 'green',
193
318
  baseDir: './teams/claude-code-test/observer/human-observer',
194
- instructionFile: './teams/claude-code-test/observer/human-observer/README.md'
319
+ instructionFile: './teams/claude-code-test/observer/human-observer/README.md',
320
+ instructionContent: ''
195
321
  }
196
322
  ]
197
323
  },
@@ -221,43 +347,107 @@ program
221
347
  });
222
348
  // Add agents command
223
349
  program.addCommand(createAgentsCommand());
224
- // Add team command
350
+ // Add team command (secure-config cloud)
225
351
  const teamCommand = new Command('team')
226
352
  .description('Team management commands');
227
353
  teamCommand
228
354
  .command('list')
229
- .description('List all team configurations')
230
- .action(() => {
231
- console.log(colorize('\n=== Team Configurations ===\n', 'bright'));
232
- const configs = discoverTeamConfigs();
233
- if (configs.length === 0) {
234
- console.log(colorize('No team configurations found.', 'yellow'));
235
- console.log(colorize(`\nCreate config files in: ${getTeamConfigDir()}`, 'dim'));
355
+ .description('List teams from HephOS cloud')
356
+ .option('--limit <number>', 'Items per page (1-50)', '20')
357
+ .action(async (options) => {
358
+ const active = tokenCache.getActiveRegion();
359
+ if (!active) {
360
+ console.error(colorize('Error: Not logged in. Run `hephos --login <region>` first.', 'red'));
361
+ process.exitCode = 1;
362
+ return;
236
363
  }
237
- else {
238
- configs.forEach(config => {
239
- console.log(`${colorize('●', 'cyan')} ${config.displayName}`);
240
- console.log(colorize(` File: ${config.filename}`, 'dim'));
241
- if (config.teamName) {
242
- console.log(colorize(` Team: ${config.teamName}`, 'dim'));
243
- }
244
- console.log(colorize(` Members: ${config.memberCount}`, 'dim'));
245
- console.log();
246
- });
247
- console.log(colorize(`Total: ${configs.length} configurations`, 'cyan'));
364
+ const env = tokenCache.getActiveEnv();
365
+ const authService = new AuthService(active, env);
366
+ const accessToken = await authService.getValidAccessToken();
367
+ if (!accessToken) {
368
+ console.error(colorize('Error: Access token expired. Please login again.', 'red'));
369
+ process.exitCode = 1;
370
+ return;
371
+ }
372
+ const deviceKeyService = new DeviceKeyService();
373
+ const deviceKey = await deviceKeyService.getOrCreateDeviceKey();
374
+ const client = new SecureConfigClient({
375
+ region: active,
376
+ environment: env,
377
+ accessToken,
378
+ deviceId: deviceKey.deviceId,
379
+ clientType: 'cli',
380
+ clientVersion: getCliVersion(),
381
+ });
382
+ const limit = Math.min(Math.max(parseInt(options.limit, 10) || 20, 1), 50);
383
+ const list = await client.listTeams(limit);
384
+ if (list.teams.length === 0) {
385
+ console.log(colorize('No teams found.', 'yellow'));
386
+ return;
248
387
  }
388
+ console.log(colorize(`Found ${list.teams.length} teams:`, 'cyan'));
389
+ list.teams.forEach((team) => {
390
+ const name = team.display_name || team.name || team.team_id;
391
+ console.log(`- ${name} (${team.team_id})`);
392
+ });
249
393
  });
250
394
  teamCommand
251
395
  .command('deploy')
252
- .argument('<config>', 'Team configuration file name')
253
- .description('Deploy a team - launches REPL and auto-deploys the team')
254
- .action((config) => {
255
- console.log(colorize('\n=== Team Deploy ===\n', 'bright'));
256
- console.log(`To deploy team "${config}", please:`);
257
- console.log(colorize('\n 1. Run: agent-chatter', 'cyan'));
258
- console.log(colorize(` 2. In REPL, type: /team deploy ${config}`, 'cyan'));
259
- console.log(colorize('\nNote: Team deployment requires interactive REPL mode.', 'dim'));
260
- console.log();
396
+ .description('Fetch secure config and auto-deploy a team session')
397
+ .requiredOption('--team <teamId>', 'Team ID to deploy')
398
+ .action(async (options) => {
399
+ const active = tokenCache.getActiveRegion();
400
+ if (!active) {
401
+ console.error(colorize('Error: Not logged in. Run `hephos --login <region>` first.', 'red'));
402
+ process.exitCode = 1;
403
+ return;
404
+ }
405
+ const env = tokenCache.getActiveEnv();
406
+ const authService = new AuthService(active, env);
407
+ const accessToken = await authService.getValidAccessToken();
408
+ if (!accessToken) {
409
+ console.error(colorize('Error: Access token expired. Please login again.', 'red'));
410
+ process.exitCode = 1;
411
+ return;
412
+ }
413
+ try {
414
+ const deviceKeyService = new DeviceKeyService();
415
+ const deviceKey = await deviceKeyService.getOrCreateDeviceKey();
416
+ const client = new SecureConfigClient({
417
+ region: active,
418
+ environment: env,
419
+ accessToken,
420
+ deviceId: deviceKey.deviceId,
421
+ clientType: 'cli',
422
+ clientVersion: getCliVersion(),
423
+ });
424
+ await client.registerDevice({
425
+ device_id: deviceKey.deviceId,
426
+ public_key_pem: deviceKey.publicKeyPem,
427
+ device_name: os.hostname(),
428
+ });
429
+ const keysetService = new KeysetService(client, active, resolveRootPublicKeyPem(active, env));
430
+ const scpService = new SCPService(deviceKeyService, keysetService);
431
+ const teamId = options.team;
432
+ const scp = await client.fetchSCP(teamId);
433
+ const teamConfig = await scpService.decryptSCP(scp, () => client.fetchSCP(teamId));
434
+ InstructionNormalizer.normalize(teamConfig);
435
+ BaseDirResolver.fill(teamConfig, process.cwd());
436
+ ensureTeamConfigDir();
437
+ const configPath = path.join(getTeamConfigDir(), `team-${teamId}-config.json`);
438
+ fs.writeFileSync(configPath, JSON.stringify(teamConfig, null, 2));
439
+ console.log(colorize(`✓ Secure config fetched. Auto-deploying team ${teamId}...`, 'green'));
440
+ startReplInk(undefined, { autoDeployConfigPath: configPath });
441
+ }
442
+ catch (err) {
443
+ if (err instanceof SecureConfigError) {
444
+ console.error(colorize(`✗ ${err.code}: ${err.message}`, 'red'));
445
+ }
446
+ else {
447
+ console.error(colorize(`✗ ${err instanceof Error ? err.message : String(err)}`, 'red'));
448
+ }
449
+ process.exitCode = 1;
450
+ }
261
451
  });
262
452
  program.addCommand(teamCommand);
263
453
  program.exitOverride();
package/out/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  export interface StartReplOptions {
5
5
  debug?: boolean;
6
6
  proxyUrl?: string;
7
+ autoDeployConfigPath?: string;
7
8
  }
8
9
  export declare function startReplInk(registryPath?: string, options?: StartReplOptions): void;
9
10
  //# sourceMappingURL=ReplModeInk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReplModeInk.d.ts","sourceRoot":"","sources":["../../src/repl/ReplModeInk.tsx"],"names":[],"mappings":"AAAA;;GAEG;AA66FH,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;AAqlGH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,QAMjF"}
@@ -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 }) {
@@ -213,7 +225,7 @@ function SelectView({ title, options, selectedIndex, multiSelect, selectedItems
213
225
  return (_jsx(Box, { children: _jsxs(Text, { color: isSelected ? 'green' : 'gray', bold: isSelected, children: [isSelected ? '▶ ' : ' ', multiSelect ? (isChecked ? '☑' : '☐') : '', ' ', option] }) }, idx));
214
226
  }) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Use " }), _jsx(Text, { color: "yellow", children: "\u2191\u2193" }), _jsx(Text, { dimColor: true, children: " to navigate, " }), multiSelect && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "yellow", children: "Space" }), _jsx(Text, { dimColor: true, children: " to toggle, " })] })), _jsx(Text, { color: "yellow", children: "Enter" }), _jsx(Text, { dimColor: true, children: " to confirm" })] })] }));
215
227
  }
216
- function App({ registryPath, debug = false, proxyUrl }) {
228
+ function App({ registryPath, debug = false, proxyUrl, autoDeployConfigPath }) {
217
229
  const { stdout } = useStdout();
218
230
  const terminalWidth = stdout?.columns || 80;
219
231
  const [input, setInput] = useState('');
@@ -233,6 +245,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
233
245
  const [isExiting, setIsExiting] = useState(false);
234
246
  const [queueState, setQueueState] = useState(null);
235
247
  const [showTips, setShowTips] = useState(true); // Tips bar visibility (default: on)
248
+ const autoDeployOnceRef = useRef(false);
236
249
  // Command history management
237
250
  const history = useHistory();
238
251
  // Track previous queue size to detect DROP-triggered clears
@@ -1165,6 +1178,9 @@ function App({ registryPath, debug = false, proxyUrl }) {
1165
1178
  case '/agents':
1166
1179
  handleAgentsCommand(args);
1167
1180
  break;
1181
+ case '/login':
1182
+ await handleLoginCommand(args);
1183
+ break;
1168
1184
  case '/tips':
1169
1185
  if (args[0] === 'off') {
1170
1186
  setShowTips(false);
@@ -1228,6 +1244,71 @@ function App({ registryPath, debug = false, proxyUrl }) {
1228
1244
  }
1229
1245
  }
1230
1246
  };
1247
+ // Handle /login command
1248
+ const handleLoginCommand = async (args) => {
1249
+ if (args.length === 0) {
1250
+ // Show login help/region selection
1251
+ 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()}`));
1252
+ return;
1253
+ }
1254
+ const subcommand = args[0].toLowerCase();
1255
+ if (subcommand === 'status') {
1256
+ // Show auth status
1257
+ const activeRegion = tokenCache.getActiveRegion();
1258
+ appendOutput(_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", children: "HephOS Authentication Status" }), _jsx(Text, { children: " " }), ['cn', 'us'].map(region => {
1259
+ const config = AUTH_CONFIG[region];
1260
+ const isValid = tokenCache.isValid(region);
1261
+ const userInfo = tokenCache.getUserInfo(region);
1262
+ const isActive = activeRegion === region;
1263
+ 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
1264
+ ? _jsx(Text, { color: "green", children: "\u2713 Logged in" })
1265
+ : _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));
1266
+ }), _jsxs(Text, { dimColor: true, children: ["Token cache: ", tokenCache.getCachePath()] })] }, `auth-status-${getNextKey()}`));
1267
+ return;
1268
+ }
1269
+ if (subcommand === 'logout') {
1270
+ const region = args[1]?.toLowerCase();
1271
+ const targetRegion = region && isValidRegion(region) ? region : tokenCache.getActiveRegion();
1272
+ if (!targetRegion) {
1273
+ appendOutput(_jsx(Text, { color: "yellow", children: "No active session to logout from." }, `logout-none-${getNextKey()}`));
1274
+ return;
1275
+ }
1276
+ const config = AUTH_CONFIG[targetRegion];
1277
+ appendOutput(_jsxs(Text, { dimColor: true, children: ["Logging out from ", config.displayName, "..."] }, `logout-msg-${getNextKey()}`));
1278
+ try {
1279
+ const authService = new AuthService(targetRegion);
1280
+ await authService.logout();
1281
+ appendOutput(_jsx(Text, { color: "green", children: "\u2713 Logged out successfully." }, `logout-ok-${getNextKey()}`));
1282
+ }
1283
+ catch (err) {
1284
+ tokenCache.clear(targetRegion);
1285
+ appendOutput(_jsx(Text, { color: "yellow", children: "Local tokens cleared." }, `logout-warn-${getNextKey()}`));
1286
+ }
1287
+ return;
1288
+ }
1289
+ // Login to a region
1290
+ if (!isValidRegion(subcommand)) {
1291
+ appendOutput(_jsxs(Text, { color: "red", children: ["Invalid region \"", subcommand, "\". Use 'cn' or 'us'."] }, `login-invalid-${getNextKey()}`));
1292
+ return;
1293
+ }
1294
+ const region = subcommand;
1295
+ const config = AUTH_CONFIG[region];
1296
+ appendOutput(_jsxs(Text, { color: "cyan", children: ["\uD83D\uDD10 Opening browser for HephOS login (", config.displayName, ")..."] }, `login-start-${getNextKey()}`));
1297
+ appendOutput(_jsx(Text, { dimColor: true, children: " Complete login in your browser to continue." }, `login-hint-${getNextKey()}`));
1298
+ try {
1299
+ const authService = new AuthService(region);
1300
+ const result = await authService.login();
1301
+ 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()}`));
1302
+ }
1303
+ catch (err) {
1304
+ if (err instanceof AuthError) {
1305
+ appendOutput(_jsxs(Text, { color: "red", children: ["\u2717 Login failed: ", err.message] }, `login-error-${getNextKey()}`));
1306
+ }
1307
+ else {
1308
+ appendOutput(_jsxs(Text, { color: "red", children: ["\u2717 Login failed: ", err instanceof Error ? err.message : String(err)] }, `login-error-${getNextKey()}`));
1309
+ }
1310
+ }
1311
+ };
1231
1312
  const handleTeamCommand = (args) => {
1232
1313
  if (args.length === 0) {
1233
1314
  appendOutput(_jsx(TeamMenuHelp, {}, `team-help-${getNextKey()}`));
@@ -1588,6 +1669,18 @@ function App({ registryPath, debug = false, proxyUrl }) {
1588
1669
  return null;
1589
1670
  }
1590
1671
  };
1672
+ useEffect(() => {
1673
+ if (!autoDeployConfigPath || autoDeployOnceRef.current)
1674
+ return;
1675
+ autoDeployOnceRef.current = true;
1676
+ const config = loadConfig(autoDeployConfigPath);
1677
+ if (config) {
1678
+ checkAndPromptRestore(config);
1679
+ }
1680
+ else {
1681
+ appendOutput(_jsxs(Text, { color: "red", children: ["\u2717 Failed to load config for auto deploy: ", autoDeployConfigPath] }, `auto-deploy-fail-${getNextKey()}`));
1682
+ }
1683
+ }, [autoDeployConfigPath]);
1591
1684
  const initializeAndDeployTeam = async (config) => {
1592
1685
  try {
1593
1686
  // Reset queue state tracking to avoid false "Queue cleared" on new session
@@ -1901,7 +1994,7 @@ function App({ registryPath, debug = false, proxyUrl }) {
1901
1994
  }, 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 }))] }));
1902
1995
  }
1903
1996
  export function startReplInk(registryPath, options = {}) {
1904
- render(_jsx(App, { registryPath: registryPath, debug: options.debug, proxyUrl: options.proxyUrl }), {
1997
+ render(_jsx(App, { registryPath: registryPath, debug: options.debug, proxyUrl: options.proxyUrl, autoDeployConfigPath: options.autoDeployConfigPath }), {
1905
1998
  // Don't use alternateBuffer - it prevents scrolling for long agent outputs
1906
1999
  // Trade-off: long input lines may cause duplicate prompts, but scrolling works
1907
2000
  incrementalRendering: true