@newpeak/barista-cli 0.2.245 → 0.2.247

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.
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,8BAA8B,IAAI,OAAO,CAgExD"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,8BAA8B,IAAI,OAAO,CAgExD"}
@@ -1,19 +1,20 @@
1
1
  import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
+ import Table from 'cli-table3';
3
4
  import { configManager } from '../../../../core/config/manager.js';
4
5
  import { apiClient } from '../../../../core/api/client.js';
5
6
  import { shouldUseJson } from '../../../../utils/output.js';
6
7
  export function createAiConversationGetCommand() {
7
8
  const cmd = new Command('get');
8
- cmd.description('Get AI conversation log detail by ID');
9
- cmd.requiredOption('--id <id>', 'Conversation ID (BigInt as string)');
9
+ cmd.description('Get AI conversation messages by conversation ID');
10
+ cmd.requiredOption('--conversation-id <id>', 'Conversation ID (BigInt as string)');
10
11
  cmd.option('--json', 'Output as JSON');
11
12
  cmd.action(async (options) => {
12
13
  const context = configManager.getCurrentContext();
13
14
  const environment = options.env || context.environment;
14
15
  const tenant = options.tenant || context.tenant;
15
16
  const outputJson = shouldUseJson(options);
16
- const response = await apiClient.getAiConversationDetail(environment, tenant, options.id);
17
+ const response = await apiClient.getAiConversationDetail(environment, tenant, options.conversationId);
17
18
  if (!response.success) {
18
19
  const errorMsg = response.error?.message || 'Failed to get AI conversation detail';
19
20
  const errorCode = response.error?.code || 'UNKNOWN';
@@ -24,41 +25,41 @@ export function createAiConversationGetCommand() {
24
25
  console.error(chalk.red(`\n✗ Failed: ${errorMsg}`));
25
26
  if (errorCode)
26
27
  console.error(chalk.gray(` Error code: ${errorCode}`));
27
- if (errorCode === 'B0309') {
28
- console.error(chalk.yellow('\n ðŸ’Ą This command requires platform administrator privileges (tenantId=1).'));
29
- }
30
28
  console.error();
31
29
  }
32
30
  process.exit(1);
33
31
  }
34
- const item = response.data;
35
- if (!item) {
32
+ const items = Array.isArray(response.data) ? response.data : (response.data?.data || response.data?.rows || []);
33
+ if (!items || items.length === 0) {
36
34
  if (outputJson) {
37
- console.log(JSON.stringify({ success: false, error: { code: 'NOT_FOUND', message: 'AI conversation log not found' } }));
35
+ console.log(JSON.stringify({ success: true, data: [], note: 'No messages found for this conversation' }));
38
36
  }
39
37
  else {
40
- console.log(chalk.yellow('\n⚠ AI conversation log not found\n'));
38
+ console.log(chalk.yellow('\n⚠ No messages found for this conversation\n'));
41
39
  }
42
40
  return;
43
41
  }
44
42
  if (outputJson) {
45
- console.log(JSON.stringify({ success: true, data: item }, null, 2));
43
+ console.log(JSON.stringify({ success: true, data: items }, null, 2));
46
44
  return;
47
45
  }
48
- console.log(chalk.bold('\n📋 AI Conversation Detail\n'));
49
- console.log(chalk.gray(' ID: ') + String(item.id || '-'));
50
- console.log(chalk.gray(' App: ') + String(item.appName || item.appId || '-'));
51
- console.log(chalk.gray(' User: ') + String(item.userName || item.userId || '-'));
52
- console.log(chalk.gray(' Model: ') + String(item.model || '-'));
53
- console.log(chalk.gray(' Total Tokens: ') + String(item.totalTokens || 0));
54
- console.log(chalk.gray(' Input Tokens: ') + String(item.inputTokens || 0));
55
- console.log(chalk.gray(' Output Tokens:') + String(item.outputTokens || 0));
56
- console.log(chalk.gray(' Duration: ') + String(item.duration || 0) + 'ms');
57
- console.log(chalk.gray(' Status: ') + (item.status === 'success' ? chalk.green('✓ success') : item.status === 'failed' ? chalk.red('✗ failed') : chalk.yellow('⏱ timeout')));
58
- if (item.errorMessage) {
59
- console.log(chalk.gray(' Error: ') + chalk.red(item.errorMessage));
46
+ console.log(chalk.bold(`\n💎 AI Conversation ${options.conversationId} (${items.length} messages)\n`));
47
+ const table = new Table({
48
+ head: [chalk.bold('#'), chalk.bold('Role'), chalk.bold('Model'), chalk.bold('Tokens'), chalk.bold('Latency'), chalk.bold('Question / Response')],
49
+ style: { head: [] },
50
+ });
51
+ for (const item of items) {
52
+ const content = item.role === 'user' ? String(item.question || '') : String(item.aiResponse || '');
53
+ table.push([
54
+ String(item.messageIndex ?? '-'),
55
+ String(item.role || '-'),
56
+ String(item.model || '-').substring(0, 15),
57
+ String(item.tokenEstimate ?? '-'),
58
+ (item.latencyMs != null ? String(item.latencyMs) : '-') + 'ms',
59
+ content.replace(/\s+/g, ' ').substring(0, 50),
60
+ ]);
60
61
  }
61
- console.log(chalk.gray(' Created: ') + String(item.createdAt || '-'));
62
+ console.log(table.toString());
62
63
  console.log();
63
64
  });
64
65
  return cmd;
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,MAAM,UAAU,8BAA8B;IAC5C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,GAAG,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;IACnE,GAAG,CAAC,cAAc,CAAC,wBAAwB,EAAE,oCAAoC,CAAC,CAAC;IACnF,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEvC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,WAAW,GAAI,OAAO,CAAC,GAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAEtG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,sCAAsC,CAAC;YACnF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC;YACpD,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACpD,IAAI,SAAS;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC;gBACvE,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAA4B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAEzI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,CAAC,CAAC;YAC5G,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;QACvG,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChJ,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;SACpB,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACnG,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBACjC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;gBAC9D,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,+BAA+B,IAAI,OAAO,CA6FzD"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,+BAA+B,IAAI,OAAO,CA6FzD"}
@@ -4,17 +4,22 @@ import Table from 'cli-table3';
4
4
  import { configManager } from '../../../../core/config/manager.js';
5
5
  import { apiClient } from '../../../../core/api/client.js';
6
6
  import { shouldUseJson } from '../../../../utils/output.js';
7
+ function toInstant(input) {
8
+ // Accept yyyy-MM-dd or full ISO-8601; backend binds Instant
9
+ return /^\d{4}-\d{2}-\d{2}$/.test(input) ? `${input}T00:00:00Z` : input;
10
+ }
7
11
  export function createAiConversationListCommand() {
8
12
  const cmd = new Command('list');
9
13
  cmd.description('List AI conversation logs with pagination and filters');
10
14
  cmd.option('--page <number>', 'Page number', '1');
11
15
  cmd.option('--size <number>', 'Page size', '20');
12
- cmd.option('--app-id <id>', 'Filter by app ID');
13
16
  cmd.option('--user-id <id>', 'Filter by user ID');
17
+ cmd.option('--conversation-id <id>', 'Filter by conversation ID');
14
18
  cmd.option('--model <model>', 'Filter by model');
15
- cmd.option('--status <status>', 'Filter by status (success/failed/timeout)');
16
- cmd.option('--start-date <date>', 'Filter start date (yyyy-MM-dd)');
17
- cmd.option('--end-date <date>', 'Filter end date (yyyy-MM-dd)');
19
+ cmd.option('--role <role>', 'Filter by role (user/ai/tool)');
20
+ cmd.option('--keyword <text>', 'LIKE search on question or AI response');
21
+ cmd.option('--start-time <time>', 'Filter start time (yyyy-MM-dd or ISO-8601)');
22
+ cmd.option('--end-time <time>', 'Filter end time (yyyy-MM-dd or ISO-8601)');
18
23
  cmd.option('--json', 'Output as JSON');
19
24
  cmd.action(async (options) => {
20
25
  const context = configManager.getCurrentContext();
@@ -25,18 +30,20 @@ export function createAiConversationListCommand() {
25
30
  pageNo: parseInt(options.page, 10),
26
31
  pageSize: parseInt(options.size, 10),
27
32
  };
28
- if (options.appId)
29
- params.appId = options.appId;
30
33
  if (options.userId)
31
34
  params.userId = options.userId;
35
+ if (options.conversationId)
36
+ params.conversationId = options.conversationId;
32
37
  if (options.model)
33
38
  params.model = options.model;
34
- if (options.status)
35
- params.status = options.status;
36
- if (options.startDate)
37
- params.startDate = options.startDate;
38
- if (options.endDate)
39
- params.endDate = options.endDate;
39
+ if (options.role)
40
+ params.role = options.role;
41
+ if (options.keyword)
42
+ params.keyword = options.keyword;
43
+ if (options.startTime)
44
+ params.startTime = toInstant(options.startTime);
45
+ if (options.endTime)
46
+ params.endTime = toInstant(options.endTime);
40
47
  const response = await apiClient.getAiConversationPage(environment, tenant, params);
41
48
  if (!response.success) {
42
49
  const errorMsg = response.error?.message || 'Failed to get AI conversation logs';
@@ -48,9 +55,6 @@ export function createAiConversationListCommand() {
48
55
  console.error(chalk.red(`\n✗ Failed: ${errorMsg}`));
49
56
  if (errorCode)
50
57
  console.error(chalk.gray(` Error code: ${errorCode}`));
51
- if (errorCode === 'B0309') {
52
- console.error(chalk.yellow('\n ðŸ’Ą This command requires platform administrator privileges (tenantId=1).'));
53
- }
54
58
  console.error();
55
59
  }
56
60
  process.exit(1);
@@ -79,18 +83,19 @@ export function createAiConversationListCommand() {
79
83
  }
80
84
  console.log(chalk.bold(`\n📊 AI Conversation Logs (${total} total, page ${options.page})\n`));
81
85
  const table = new Table({
82
- head: [chalk.bold('ID'), chalk.bold('App'), chalk.bold('User'), chalk.bold('Model'), chalk.bold('Tokens'), chalk.bold('Duration'), chalk.bold('Status')],
86
+ head: [chalk.bold('Log ID'), chalk.bold('Conversation'), chalk.bold('Role'), chalk.bold('Model'), chalk.bold('Tokens'), chalk.bold('Latency'), chalk.bold('Question'), chalk.bold('Time')],
83
87
  style: { head: [] },
84
88
  });
85
89
  for (const item of items) {
86
90
  table.push([
87
- String(item.id || '').substring(0, 12) + '...',
88
- String(item.appName || item.appId || '-').substring(0, 15),
89
- String(item.userName || item.userId || '-').substring(0, 12),
91
+ String(item.logId || item.id || '').substring(0, 12) + '...',
92
+ String(item.conversationId || '-').substring(0, 12) + '...',
93
+ String(item.role || '-'),
90
94
  String(item.model || '-').substring(0, 15),
91
- String(item.totalTokens || 0),
92
- String(item.duration || 0) + 'ms',
93
- item.status === 'success' ? chalk.green('✓') : item.status === 'failed' ? chalk.red('✗') : chalk.yellow('⏱'),
95
+ String(item.tokenEstimate || 0),
96
+ (item.latencyMs != null ? String(item.latencyMs) : '-') + 'ms',
97
+ String((item.question || '').replace(/\s+/g, ' ')).substring(0, 30),
98
+ String(item.createTime || item.createdAt || '-').substring(0, 19),
94
99
  ]);
95
100
  }
96
101
  console.log(table.toString());
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,UAAU,+BAA+B;IAC7C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,GAAG,CAAC,WAAW,CAAC,uDAAuD,CAAC,CAAC;IACzE,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;IAClD,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAChD,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAClD,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC,CAAC;IAC7E,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC,CAAC;IACpE,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC;IAChE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEvC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,WAAW,GAAI,OAAO,CAAC,GAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAgD;YAC1D,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACrC,CAAC;QACF,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACnD,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACnD,IAAI,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAC5D,IAAI,OAAO,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAEpF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,oCAAoC,CAAC;YACjF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC;YACpD,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACpD,IAAI,SAAS;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC;gBACvE,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,8EAA8E,CAAC,CAAC,CAAC;gBAC9G,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACpK,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,KAAK;oBACL,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;iBAC1F;aACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,KAAK,gBAAgB,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAC9F,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxJ,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;SACpB,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBAC9C,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI;gBACjC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;aAC7G,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,mCAAmC,IAAI,OAAO,CAqG7D"}
1
+ {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mCAAmC,IAAI,OAAO,CAyF7D"}
@@ -6,10 +6,8 @@ import { apiClient } from '../../../../core/api/client.js';
6
6
  import { shouldUseJson } from '../../../../utils/output.js';
7
7
  export function createAiConversationOverviewCommand() {
8
8
  const cmd = new Command('overview');
9
- cmd.description('Get AI conversation statistics overview');
10
- cmd.option('--start-date <date>', 'Start date (yyyy-MM-dd)');
11
- cmd.option('--end-date <date>', 'End date (yyyy-MM-dd)');
12
- cmd.option('--days <number>', 'Number of days to look back (e.g. 7 for last 7 days)');
9
+ cmd.description('Get AI dashboard overview statistics');
10
+ cmd.option('--days <number>', 'Number of days to look back (default 7)');
13
11
  cmd.option('--json', 'Output as JSON');
14
12
  cmd.action(async (options) => {
15
13
  const context = configManager.getCurrentContext();
@@ -17,10 +15,6 @@ export function createAiConversationOverviewCommand() {
17
15
  const tenant = options.tenant || context.tenant;
18
16
  const outputJson = shouldUseJson(options);
19
17
  const params = {};
20
- if (options.startDate)
21
- params.startDate = options.startDate;
22
- if (options.endDate)
23
- params.endDate = options.endDate;
24
18
  if (options.days)
25
19
  params.days = parseInt(options.days, 10);
26
20
  const response = await apiClient.getAiConversationOverview(environment, tenant, params);
@@ -34,9 +28,6 @@ export function createAiConversationOverviewCommand() {
34
28
  console.error(chalk.red(`\n✗ Failed: ${errorMsg}`));
35
29
  if (errorCode)
36
30
  console.error(chalk.gray(` Error code: ${errorCode}`));
37
- if (errorCode === 'B0309') {
38
- console.error(chalk.yellow('\n ðŸ’Ą This command requires platform administrator privileges (tenantId=1).'));
39
- }
40
31
  console.error();
41
32
  }
42
33
  process.exit(1);
@@ -55,34 +46,35 @@ export function createAiConversationOverviewCommand() {
55
46
  console.log(JSON.stringify({ success: true, data: overview }, null, 2));
56
47
  return;
57
48
  }
58
- console.log(chalk.bold('\n📊 AI Conversation Overview\n'));
49
+ console.log(chalk.bold('\n📊 AI Dashboard Overview\n'));
59
50
  const summaryTable = new Table({ style: { head: [] } });
60
- summaryTable.push([chalk.gray('Total Conversations:'), String(overview.totalConversations || 0)], [chalk.gray('Total Tokens:'), String(overview.totalTokens || 0)], [chalk.gray(' Input:'), String(overview.totalInputTokens || 0)], [chalk.gray(' Output:'), String(overview.totalOutputTokens || 0)], [chalk.gray('Success Count:'), chalk.green(String(overview.successCount || 0))], [chalk.gray('Failed Count:'), chalk.red(String(overview.failedCount || 0))], [chalk.gray('Timeout Count:'), chalk.yellow(String(overview.timeoutCount || 0))], [chalk.gray('Avg Duration:'), String(overview.avgDuration || 0) + 'ms'], [chalk.gray('Avg Tokens/Conv:'), String(overview.avgTokensPerConversation || 0)]);
51
+ summaryTable.push([chalk.gray('Total Conversations:'), String(overview.totalConversations ?? 0)], [chalk.gray('Satisfaction Rate:'), (overview.satisfactionRate != null ? String(overview.satisfactionRate) : '-') + '%'], [chalk.gray('Like Count:'), chalk.green(String(overview.likeCount ?? 0))], [chalk.gray('Dislike Count:'), chalk.red(String(overview.dislikeCount ?? 0))]);
61
52
  console.log(summaryTable.toString());
62
- if (overview.dateRange) {
63
- console.log(chalk.gray('\n Date Range: ') + `${overview.dateRange.startDate || '-'} ~ ${overview.dateRange.endDate || '-'}`);
64
- }
65
- if (overview.topModels && overview.topModels.length > 0) {
66
- console.log(chalk.bold('\n Top Models:\n'));
67
- const modelTable = new Table({
68
- head: [chalk.bold('Model'), chalk.bold('Count'), chalk.bold('Total Tokens')],
53
+ if (overview.topDislikes && overview.topDislikes.length > 0) {
54
+ console.log(chalk.bold('\n Top Dislikes:\n'));
55
+ const dislikeTable = new Table({
56
+ head: [chalk.bold('Question'), chalk.bold('Reason'), chalk.bold('Time')],
69
57
  style: { head: [] },
70
58
  });
71
- for (const m of overview.topModels.slice(0, 5)) {
72
- modelTable.push([String(m.model || '-'), String(m.count || 0), String(m.totalTokens || 0)]);
59
+ for (const d of overview.topDislikes.slice(0, 5)) {
60
+ dislikeTable.push([
61
+ String(d.question || '-').replace(/\s+/g, ' ').substring(0, 40),
62
+ String(d.reason || '-').substring(0, 30),
63
+ String(d.createTime || '-').substring(0, 19),
64
+ ]);
73
65
  }
74
- console.log(modelTable.toString());
66
+ console.log(dislikeTable.toString());
75
67
  }
76
- if (overview.topApps && overview.topApps.length > 0) {
77
- console.log(chalk.bold('\n Top Apps:\n'));
78
- const appTable = new Table({
79
- head: [chalk.bold('App ID'), chalk.bold('App Name'), chalk.bold('Count')],
68
+ if (overview.dailyTrend && overview.dailyTrend.length > 0) {
69
+ console.log(chalk.bold('\n Daily Trend:\n'));
70
+ const trendTable = new Table({
71
+ head: [chalk.bold('Date'), chalk.bold('Conversations')],
80
72
  style: { head: [] },
81
73
  });
82
- for (const a of overview.topApps.slice(0, 5)) {
83
- appTable.push([String(a.appId || '-'), String(a.appName || '-'), String(a.count || 0)]);
74
+ for (const t of overview.dailyTrend) {
75
+ trendTable.push([String(t.date || '-'), String(t.conversationCount ?? 0)]);
84
76
  }
85
- console.log(appTable.toString());
77
+ console.log(trendTable.toString());
86
78
  }
87
79
  console.log();
88
80
  });
@@ -1 +1 @@
1
- {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/overview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/system/ai-conversation/overview.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,4BAA4B,IAAI,OAAO,CAsTtD"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,wBAAgB,4BAA4B,IAAI,OAAO,CA4WtD"}
@@ -19,6 +19,8 @@ function formatTable(data) {
19
19
  lines.push(` ${chalk.gray('Priority:')} ${data.priority}`);
20
20
  if (data.teamIssueStatus)
21
21
  lines.push(` ${chalk.gray('Status:')} ${data.teamIssueStatus}`);
22
+ if (data.reporterAccount)
23
+ lines.push(` ${chalk.gray('Reporter Account:')} ${data.reporterAccount}`);
22
24
  if (data.assignTo && data.assignTo.length > 0)
23
25
  lines.push(` ${chalk.gray('Assign To:')} ${data.assignTo.join(', ')}`);
24
26
  if (data.follower && data.follower.length > 0)
@@ -48,9 +50,10 @@ export function createTeamIssueCreateCommand() {
48
50
  .option('--project-name <string>', 'Project name (optional if --project-id or --project-code provided)')
49
51
  .option('--reporter-name <string>', 'Reporter name (optional — auto-resolved from current user)')
50
52
  .option('--reporter-email <string>', 'Reporter email (optional — auto-resolved from current user)')
53
+ .option('--reporter-account <string>', 'Reporter account / employee number (čŒå‘˜įž–į , optional — auto-resolved from current user)')
51
54
  .option('--priority <string>', 'Priority: LOW/MEDIUM/HIGH/URGENT', 'MEDIUM')
52
55
  .option('--status <string>', 'Status: OPEN/IN_PROGRESS/RESOLVED/CLOSED/PENDING/VERIFIED/WONTFIX/DUPLICATE/REOPEN', 'OPEN')
53
- .option('--assign-to <string>', 'Assignee user IDs (comma-separated)')
56
+ .option('--assign-to <string>', 'Assignee employee number (čŒå‘˜įž–į , e.g. 0001, comma-separated; 19-digit snowflake IDs are auto-resolved)')
54
57
  .option('--follower <code...>', 'Follower employee codes (variadic)')
55
58
  .option('--tester <code...>', 'Tester employee codes (variadic)')
56
59
  .option('--solution <string>', 'Solution description')
@@ -73,6 +76,7 @@ export function createTeamIssueCreateCommand() {
73
76
  let projectName = opts.projectName;
74
77
  let reporterName = opts.reporterName;
75
78
  let reporterEmail = opts.reporterEmail;
79
+ let reporterAccount = opts.reporterAccount;
76
80
  const priorityInput = opts.priority;
77
81
  const statusInput = opts.status;
78
82
  const assignToInput = opts.assignTo;
@@ -216,14 +220,29 @@ export function createTeamIssueCreateCommand() {
216
220
  // Resolve reporter fields from current user when not provided
217
221
  // Reporter fields are optional — if auto-resolution fails, skip them
218
222
  // (the backend will handle missing values with its own validation)
219
- if (!reporterName || !reporterEmail) {
223
+ const notes = [];
224
+ let currentUserData = null;
225
+ if (!reporterName || !reporterEmail || !reporterAccount) {
220
226
  const currentUserResponse = await apiClient.getCurrentUser(context.environment, context.tenant);
221
227
  if (currentUserResponse.success && currentUserResponse.data) {
222
- const userData = currentUserResponse.data;
228
+ currentUserData = currentUserResponse.data;
223
229
  if (!reporterName)
224
- reporterName = userData.realName || userData.account;
230
+ reporterName = currentUserData.realName || currentUserData.account;
225
231
  if (!reporterEmail)
226
- reporterEmail = userData.email || userData.account;
232
+ reporterEmail = currentUserData.email || currentUserData.account;
233
+ if (!reporterAccount)
234
+ reporterAccount = currentUserData.employeeNumber;
235
+ if (!reporterAccount) {
236
+ notes.push('Could not auto-resolve reporterAccount (employeeNumber) from current user — reporterAccount will be omitted');
237
+ }
238
+ }
239
+ else {
240
+ if (!reporterName)
241
+ notes.push('Could not auto-resolve reporterName from current user — reporterName will be omitted');
242
+ if (!reporterEmail)
243
+ notes.push('Could not auto-resolve reporterEmail from current user — reporterEmail will be omitted');
244
+ if (!reporterAccount)
245
+ notes.push('Could not auto-resolve reporterAccount from current user — reporterAccount will be omitted');
227
246
  }
228
247
  }
229
248
  // Validate priority
@@ -255,14 +274,48 @@ export function createTeamIssueCreateCommand() {
255
274
  // Parse comma-separated arrays
256
275
  let assignToList = assignToInput ? assignToInput.split(',').map(s => s.trim()).filter(s => s.length > 0) : undefined;
257
276
  if (!assignToList || assignToList.length === 0) {
258
- const currentUserResponse = await apiClient.getCurrentUser(context.environment, context.tenant);
259
- if (currentUserResponse.success && currentUserResponse.data) {
260
- const userData = currentUserResponse.data;
261
- const currentUserId = userData.employeeId || userData.userId;
277
+ if (!currentUserData) {
278
+ const currentUserResponse = await apiClient.getCurrentUser(context.environment, context.tenant);
279
+ if (currentUserResponse.success && currentUserResponse.data) {
280
+ currentUserData = currentUserResponse.data;
281
+ }
282
+ }
283
+ if (currentUserData) {
284
+ const currentUserId = currentUserData.employeeNumber || currentUserData.employeeId;
262
285
  if (currentUserId) {
263
286
  assignToList = [currentUserId];
264
287
  }
288
+ else {
289
+ notes.push('Could not auto-resolve assignee (employeeNumber/employeeId) from current user — issue will have no assignee');
290
+ }
265
291
  }
292
+ else {
293
+ notes.push('Could not auto-resolve assignee from current user — issue will have no assignee');
294
+ }
295
+ }
296
+ // Resolve 19-digit snowflake IDs in assignTo to employee codes (čŒå‘˜įž–į )
297
+ if (assignToList && assignToList.length > 0) {
298
+ const resolvedAssignTo = [];
299
+ for (const id of assignToList) {
300
+ if (/^\d{19}$/.test(id)) {
301
+ const employeeResponse = await apiClient.getEmployee(context.environment, context.tenant, id);
302
+ const employeeCode = employeeResponse.success && employeeResponse.data
303
+ ? employeeResponse.data.employeeCode || employeeResponse.data.code
304
+ : undefined;
305
+ if (employeeCode) {
306
+ resolvedAssignTo.push(employeeCode);
307
+ notes.push(`Resolved snowflake ID ${id} → employee code ${employeeCode} for assignee`);
308
+ }
309
+ else {
310
+ resolvedAssignTo.push(id);
311
+ notes.push(`Could not resolve snowflake ID ${id} to employee code — passing through as-is`);
312
+ }
313
+ }
314
+ else {
315
+ resolvedAssignTo.push(id);
316
+ }
317
+ }
318
+ assignToList = resolvedAssignTo;
266
319
  }
267
320
  const data = {
268
321
  issueTitle: title,
@@ -275,6 +328,7 @@ export function createTeamIssueCreateCommand() {
275
328
  projectName: projectName,
276
329
  reporterName: reporterName,
277
330
  reporterEmail: reporterEmail,
331
+ reporterAccount: reporterAccount,
278
332
  reportDate: new Date().toISOString().slice(0, 10),
279
333
  priority: priority,
280
334
  teamIssueStatus: teamIssueStatus,
@@ -286,9 +340,15 @@ export function createTeamIssueCreateCommand() {
286
340
  };
287
341
  if (dryRun) {
288
342
  if (jsonOutput) {
289
- console.log(JSON.stringify({ success: true, dryRun: true, data }));
343
+ const output = { success: true, dryRun: true, data };
344
+ if (notes.length > 0)
345
+ output.note = notes.join('; ');
346
+ console.log(JSON.stringify(output));
290
347
  }
291
348
  else {
349
+ for (const note of notes) {
350
+ console.warn(chalk.yellow(`\n⚠ ${note}\n`));
351
+ }
292
352
  console.log(chalk.bold('\n🔍 Dry-Run Mode: No changes will be made\n'));
293
353
  console.log(' Issue to be created:');
294
354
  console.log(formatTable(data));
@@ -318,9 +378,15 @@ export function createTeamIssueCreateCommand() {
318
378
  if (response.success) {
319
379
  const issue = response.data;
320
380
  if (jsonOutput) {
321
- console.log(JSON.stringify({ success: true, data: issue }));
381
+ const output = { success: true, data: issue };
382
+ if (notes.length > 0)
383
+ output.note = notes.join('; ');
384
+ console.log(JSON.stringify(output));
322
385
  }
323
386
  else {
387
+ for (const note of notes) {
388
+ console.warn(chalk.yellow(`\n⚠ ${note}\n`));
389
+ }
324
390
  console.log(chalk.green('✓ Team issue created successfully\n'));
325
391
  if (issue?.teamIssueId)
326
392
  console.log(` ${chalk.gray('Issue ID:')} ${chalk.green(issue.teamIssueId)}`);