@newpeak/barista-cli 0.2.287 → 0.2.298

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 (129) hide show
  1. package/dist/commands/liberica/finance/voucher/update.js +1 -1
  2. package/dist/commands/liberica/finance/voucher/update.js.map +1 -1
  3. package/dist/commands/liberica/issue/submit.d.ts.map +1 -1
  4. package/dist/commands/liberica/issue/submit.js +279 -11
  5. package/dist/commands/liberica/issue/submit.js.map +1 -1
  6. package/dist/commands/liberica/teams/chain-helper.d.ts +26 -0
  7. package/dist/commands/liberica/teams/chain-helper.d.ts.map +1 -0
  8. package/dist/commands/liberica/teams/chain-helper.js +42 -0
  9. package/dist/commands/liberica/teams/chain-helper.js.map +1 -0
  10. package/dist/commands/liberica/teams/index.d.ts.map +1 -1
  11. package/dist/commands/liberica/teams/index.js +6 -0
  12. package/dist/commands/liberica/teams/index.js.map +1 -1
  13. package/dist/commands/liberica/teams/issues/create.d.ts.map +1 -1
  14. package/dist/commands/liberica/teams/issues/create.js +39 -0
  15. package/dist/commands/liberica/teams/issues/create.js.map +1 -1
  16. package/dist/commands/liberica/teams/issues/list.d.ts.map +1 -1
  17. package/dist/commands/liberica/teams/issues/list.js +22 -0
  18. package/dist/commands/liberica/teams/issues/list.js.map +1 -1
  19. package/dist/commands/liberica/teams/issues/update.d.ts.map +1 -1
  20. package/dist/commands/liberica/teams/issues/update.js +32 -1
  21. package/dist/commands/liberica/teams/issues/update.js.map +1 -1
  22. package/dist/commands/liberica/teams/members/index.d.ts +3 -0
  23. package/dist/commands/liberica/teams/members/index.d.ts.map +1 -0
  24. package/dist/commands/liberica/teams/members/index.js +9 -0
  25. package/dist/commands/liberica/teams/members/index.js.map +1 -0
  26. package/dist/commands/liberica/teams/members/suggest.d.ts +3 -0
  27. package/dist/commands/liberica/teams/members/suggest.d.ts.map +1 -0
  28. package/dist/commands/liberica/teams/members/suggest.js +57 -0
  29. package/dist/commands/liberica/teams/members/suggest.js.map +1 -0
  30. package/dist/commands/liberica/teams/mentions/count.d.ts +3 -0
  31. package/dist/commands/liberica/teams/mentions/count.d.ts.map +1 -0
  32. package/dist/commands/liberica/teams/mentions/count.js +55 -0
  33. package/dist/commands/liberica/teams/mentions/count.js.map +1 -0
  34. package/dist/commands/liberica/teams/mentions/index.d.ts +3 -0
  35. package/dist/commands/liberica/teams/mentions/index.d.ts.map +1 -0
  36. package/dist/commands/liberica/teams/mentions/index.js +17 -0
  37. package/dist/commands/liberica/teams/mentions/index.js.map +1 -0
  38. package/dist/commands/liberica/teams/mentions/list.d.ts +3 -0
  39. package/dist/commands/liberica/teams/mentions/list.d.ts.map +1 -0
  40. package/dist/commands/liberica/teams/mentions/list.js +97 -0
  41. package/dist/commands/liberica/teams/mentions/list.js.map +1 -0
  42. package/dist/commands/liberica/teams/mentions/notify-setting.d.ts +3 -0
  43. package/dist/commands/liberica/teams/mentions/notify-setting.d.ts.map +1 -0
  44. package/dist/commands/liberica/teams/mentions/notify-setting.js +119 -0
  45. package/dist/commands/liberica/teams/mentions/notify-setting.js.map +1 -0
  46. package/dist/commands/liberica/teams/mentions/read.d.ts +3 -0
  47. package/dist/commands/liberica/teams/mentions/read.d.ts.map +1 -0
  48. package/dist/commands/liberica/teams/mentions/read.js +144 -0
  49. package/dist/commands/liberica/teams/mentions/read.js.map +1 -0
  50. package/dist/commands/liberica/teams/mentions/reply.d.ts +3 -0
  51. package/dist/commands/liberica/teams/mentions/reply.d.ts.map +1 -0
  52. package/dist/commands/liberica/teams/mentions/reply.js +96 -0
  53. package/dist/commands/liberica/teams/mentions/reply.js.map +1 -0
  54. package/dist/commands/liberica/teams/tasks/attachment-add.d.ts.map +1 -1
  55. package/dist/commands/liberica/teams/tasks/attachment-add.js +6 -0
  56. package/dist/commands/liberica/teams/tasks/attachment-add.js.map +1 -1
  57. package/dist/commands/liberica/teams/tasks/attachment-list.d.ts.map +1 -1
  58. package/dist/commands/liberica/teams/tasks/attachment-list.js +21 -1
  59. package/dist/commands/liberica/teams/tasks/attachment-list.js.map +1 -1
  60. package/dist/commands/liberica/teams/tasks/create.d.ts.map +1 -1
  61. package/dist/commands/liberica/teams/tasks/create.js +53 -0
  62. package/dist/commands/liberica/teams/tasks/create.js.map +1 -1
  63. package/dist/commands/liberica/teams/tasks/update.d.ts.map +1 -1
  64. package/dist/commands/liberica/teams/tasks/update.js +54 -0
  65. package/dist/commands/liberica/teams/tasks/update.js.map +1 -1
  66. package/dist/commands/liberica/teams/topics/common.d.ts +44 -0
  67. package/dist/commands/liberica/teams/topics/common.d.ts.map +1 -0
  68. package/dist/commands/liberica/teams/topics/common.js +135 -0
  69. package/dist/commands/liberica/teams/topics/common.js.map +1 -0
  70. package/dist/commands/liberica/teams/topics/follow.d.ts +3 -0
  71. package/dist/commands/liberica/teams/topics/follow.d.ts.map +1 -0
  72. package/dist/commands/liberica/teams/topics/follow.js +50 -0
  73. package/dist/commands/liberica/teams/topics/follow.js.map +1 -0
  74. package/dist/commands/liberica/teams/topics/followed.d.ts +3 -0
  75. package/dist/commands/liberica/teams/topics/followed.d.ts.map +1 -0
  76. package/dist/commands/liberica/teams/topics/followed.js +44 -0
  77. package/dist/commands/liberica/teams/topics/followed.js.map +1 -0
  78. package/dist/commands/liberica/teams/topics/get.d.ts +3 -0
  79. package/dist/commands/liberica/teams/topics/get.d.ts.map +1 -0
  80. package/dist/commands/liberica/teams/topics/get.js +51 -0
  81. package/dist/commands/liberica/teams/topics/get.js.map +1 -0
  82. package/dist/commands/liberica/teams/topics/index.d.ts +3 -0
  83. package/dist/commands/liberica/teams/topics/index.d.ts.map +1 -0
  84. package/dist/commands/liberica/teams/topics/index.js +23 -0
  85. package/dist/commands/liberica/teams/topics/index.js.map +1 -0
  86. package/dist/commands/liberica/teams/topics/list.d.ts +3 -0
  87. package/dist/commands/liberica/teams/topics/list.d.ts.map +1 -0
  88. package/dist/commands/liberica/teams/topics/list.js +58 -0
  89. package/dist/commands/liberica/teams/topics/list.js.map +1 -0
  90. package/dist/commands/liberica/teams/topics/refs.d.ts +3 -0
  91. package/dist/commands/liberica/teams/topics/refs.d.ts.map +1 -0
  92. package/dist/commands/liberica/teams/topics/refs.js +47 -0
  93. package/dist/commands/liberica/teams/topics/refs.js.map +1 -0
  94. package/dist/commands/liberica/teams/topics/stats.d.ts +3 -0
  95. package/dist/commands/liberica/teams/topics/stats.d.ts.map +1 -0
  96. package/dist/commands/liberica/teams/topics/stats.js +36 -0
  97. package/dist/commands/liberica/teams/topics/stats.js.map +1 -0
  98. package/dist/commands/liberica/teams/topics/suggest.d.ts +3 -0
  99. package/dist/commands/liberica/teams/topics/suggest.d.ts.map +1 -0
  100. package/dist/commands/liberica/teams/topics/suggest.js +57 -0
  101. package/dist/commands/liberica/teams/topics/suggest.js.map +1 -0
  102. package/dist/commands/liberica/teams/topics/unfollow.d.ts +3 -0
  103. package/dist/commands/liberica/teams/topics/unfollow.d.ts.map +1 -0
  104. package/dist/commands/liberica/teams/topics/unfollow.js +50 -0
  105. package/dist/commands/liberica/teams/topics/unfollow.js.map +1 -0
  106. package/dist/core/api/client.d.ts +67 -0
  107. package/dist/core/api/client.d.ts.map +1 -1
  108. package/dist/core/api/client.js +428 -5
  109. package/dist/core/api/client.js.map +1 -1
  110. package/dist/types/issue-report.d.ts +5 -0
  111. package/dist/types/issue-report.d.ts.map +1 -1
  112. package/dist/types/team-issue.d.ts +7 -0
  113. package/dist/types/team-issue.d.ts.map +1 -1
  114. package/dist/types/team-mention.d.ts +67 -0
  115. package/dist/types/team-mention.d.ts.map +1 -0
  116. package/dist/types/team-mention.js +10 -0
  117. package/dist/types/team-mention.js.map +1 -0
  118. package/dist/types/team-task.d.ts +14 -0
  119. package/dist/types/team-task.d.ts.map +1 -1
  120. package/dist/types/team-topic.d.ts +98 -0
  121. package/dist/types/team-topic.d.ts.map +1 -0
  122. package/dist/types/team-topic.js +10 -0
  123. package/dist/types/team-topic.js.map +1 -0
  124. package/dist/utils/enum-dict-mapping.d.ts.map +1 -1
  125. package/dist/utils/enum-dict-mapping.js +6 -0
  126. package/dist/utils/enum-dict-mapping.js.map +1 -1
  127. package/package.json +1 -1
  128. package/skills/barista-cli/data/commands.json +88 -1
  129. package/skills/barista-cli/data/commands.yaml +61 -1
@@ -0,0 +1,44 @@
1
+ import { Command, Option } from 'commander';
2
+ import { apiClient } from '../../../../core/api/client.js';
3
+ import { shouldUseJson } from '../../../../utils/output.js';
4
+ import { getTopicContext, printApiError, printCatchError, renderTopicRows, topicItems, withItems, } from './common.js';
5
+ export function createTeamTopicFollowedCommand() {
6
+ const command = new Command('followed');
7
+ command
8
+ .description('List topics followed by the current user (我关注的)')
9
+ .option('--page <number>', 'Page number', '1')
10
+ .option('--size <number>', 'Page size', '20')
11
+ .addOption(new Option('--env <string>').hideHelp())
12
+ .addOption(new Option('--tenant <string>').hideHelp())
13
+ .option('--json', 'Output as JSON');
14
+ command.action(async (options) => {
15
+ const { environment, tenant } = getTopicContext();
16
+ const outputJson = shouldUseJson(options);
17
+ const page = parseInt(options.page, 10) || 1;
18
+ const size = parseInt(options.size, 10) || 20;
19
+ try {
20
+ const response = await apiClient.listMyFollowedTeamTopics(environment, tenant, {
21
+ pageNo: page,
22
+ pageSize: size,
23
+ });
24
+ if (!response.success) {
25
+ printApiError(outputJson, response.error, 'Failed to list followed topics');
26
+ }
27
+ const data = response.data;
28
+ if (outputJson) {
29
+ console.log(JSON.stringify({ success: true, data: withItems(data) }, null, 2));
30
+ return;
31
+ }
32
+ renderTopicRows(topicItems(data), {
33
+ totalRows: data?.totalRows,
34
+ pageNo: data?.pageNo ?? page,
35
+ size,
36
+ });
37
+ }
38
+ catch (error) {
39
+ printCatchError(outputJson, error);
40
+ }
41
+ });
42
+ return command;
43
+ }
44
+ //# sourceMappingURL=followed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followed.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/followed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,8BAA8B;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO;SACJ,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,GAAG,CAAC;SAC7C,MAAM,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC;SAC5C,SAAS,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;SAClD,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QACxD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE;gBAC7E,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAChC,SAAS,EAAE,IAAI,EAAE,SAAS;gBAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;gBAC5B,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicGetCommand(): Command;
3
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAY5C,wBAAgB,yBAAyB,IAAI,OAAO,CAmDnD"}
@@ -0,0 +1,51 @@
1
+ import { Command, Option } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { apiClient } from '../../../../core/api/client.js';
4
+ import { shouldUseJson } from '../../../../utils/output.js';
5
+ import { getTopicContext, printApiError, printCatchError, refItems, renderRefRows, } from './common.js';
6
+ export function createTeamTopicGetCommand() {
7
+ const command = new Command('get');
8
+ command
9
+ .description('Show topic header with its references')
10
+ .argument('<topic-id>', 'Topic ID (19-digit Snowflake, passed as string)')
11
+ .option('--biz-type <type>', 'Filter references by biz type')
12
+ .option('--page <number>', 'Page number', '1')
13
+ .option('--size <number>', 'Page size', '20')
14
+ .addOption(new Option('--env <string>').hideHelp())
15
+ .addOption(new Option('--tenant <string>').hideHelp())
16
+ .option('--json', 'Output as JSON');
17
+ command.action(async (topicId, options) => {
18
+ const { environment, tenant } = getTopicContext();
19
+ const outputJson = shouldUseJson(options);
20
+ const page = parseInt(options.page, 10) || 1;
21
+ const size = parseInt(options.size, 10) || 20;
22
+ try {
23
+ const response = await apiClient.getTeamTopicDetail(environment, tenant, {
24
+ topicId,
25
+ bizType: options.bizType,
26
+ pageNo: page,
27
+ pageSize: size,
28
+ });
29
+ if (!response.success) {
30
+ printApiError(outputJson, response.error, 'Failed to get topic');
31
+ }
32
+ const data = response.data;
33
+ if (outputJson) {
34
+ console.log(JSON.stringify({ success: true, data }, null, 2));
35
+ return;
36
+ }
37
+ console.log(chalk.bold(`\n#${data?.topicName ?? ''}`) +
38
+ chalk.gray(` (${data?.topicId ?? topicId})`) +
39
+ chalk.gray(` Followed: ${data?.followed ? '是' : '否'}`));
40
+ renderRefRows(refItems(data), {
41
+ totalRows: data?.totalRows,
42
+ pageNo: data?.pageNo ?? page,
43
+ });
44
+ }
45
+ catch (error) {
46
+ printCatchError(outputJson, error);
47
+ }
48
+ });
49
+ return command;
50
+ }
51
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicsCommand(): Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,uBAAuB,IAAI,OAAO,CAcjD"}
@@ -0,0 +1,23 @@
1
+ import { Command } from 'commander';
2
+ import { createTeamTopicListCommand } from './list.js';
3
+ import { createTeamTopicGetCommand } from './get.js';
4
+ import { createTeamTopicFollowedCommand } from './followed.js';
5
+ import { createTeamTopicFollowCommand } from './follow.js';
6
+ import { createTeamTopicUnfollowCommand } from './unfollow.js';
7
+ import { createTeamTopicRefsCommand } from './refs.js';
8
+ import { createTeamTopicStatsCommand } from './stats.js';
9
+ import { createTeamTopicSuggestCommand } from './suggest.js';
10
+ export function createTeamTopicsCommand() {
11
+ const topicsCommand = new Command('topics');
12
+ topicsCommand.description('Manage aggregated topics (话题聚合 / 关注 / 引用项 / 联想)');
13
+ topicsCommand.addCommand(createTeamTopicListCommand());
14
+ topicsCommand.addCommand(createTeamTopicGetCommand());
15
+ topicsCommand.addCommand(createTeamTopicFollowedCommand());
16
+ topicsCommand.addCommand(createTeamTopicFollowCommand());
17
+ topicsCommand.addCommand(createTeamTopicUnfollowCommand());
18
+ topicsCommand.addCommand(createTeamTopicRefsCommand());
19
+ topicsCommand.addCommand(createTeamTopicStatsCommand());
20
+ topicsCommand.addCommand(createTeamTopicSuggestCommand());
21
+ return topicsCommand;
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,UAAU,uBAAuB;IACrC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,aAAa,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC;IAE7E,aAAa,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACvD,aAAa,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACtD,aAAa,CAAC,UAAU,CAAC,8BAA8B,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,UAAU,CAAC,8BAA8B,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACvD,aAAa,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IACxD,aAAa,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAE1D,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicListCommand(): Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAc5C,wBAAgB,0BAA0B,IAAI,OAAO,CA0DpD"}
@@ -0,0 +1,58 @@
1
+ import { Command, Option } from 'commander';
2
+ import { apiClient } from '../../../../core/api/client.js';
3
+ import { shouldUseJson } from '../../../../utils/output.js';
4
+ import { failCommand, getTopicContext, normalizeInstant, printApiError, printCatchError, renderTopicRows, topicItems, withItems, } from './common.js';
5
+ export function createTeamTopicListCommand() {
6
+ const command = new Command('list');
7
+ command
8
+ .description('List aggregated topics (话题聚合)')
9
+ .option('--keyword <text>', 'Filter by topic name keyword')
10
+ .option('--biz-type <type>', 'Filter by source biz type (ISSUE|TASK|WORKLOG|...)')
11
+ .option('--follow-state <state>', 'Filter by follow state (FOLLOWED|UNFOLLOWED)')
12
+ .option('--update-from <iso>', 'Updated from (YYYY-MM-DD or ISO-8601, UTC)')
13
+ .option('--update-to <iso>', 'Updated to (YYYY-MM-DD or ISO-8601, UTC)')
14
+ .option('--page <number>', 'Page number', '1')
15
+ .option('--size <number>', 'Page size', '20')
16
+ .addOption(new Option('--env <string>').hideHelp())
17
+ .addOption(new Option('--tenant <string>').hideHelp())
18
+ .option('--json', 'Output as JSON');
19
+ command.action(async (options) => {
20
+ const { environment, tenant } = getTopicContext();
21
+ const outputJson = shouldUseJson(options);
22
+ const page = parseInt(options.page, 10) || 1;
23
+ const size = parseInt(options.size, 10) || 20;
24
+ const followState = options.followState;
25
+ if (followState && !['FOLLOWED', 'UNFOLLOWED'].includes(followState.toUpperCase())) {
26
+ failCommand(outputJson, 'INVALID_OPTION', '--follow-state must be FOLLOWED or UNFOLLOWED');
27
+ }
28
+ try {
29
+ const response = await apiClient.listTeamTopics(environment, tenant, {
30
+ pageNo: page,
31
+ pageSize: size,
32
+ keyword: options.keyword,
33
+ bizType: options.bizType,
34
+ followState: followState ? followState.toUpperCase() : undefined,
35
+ updateFrom: normalizeInstant(options.updateFrom),
36
+ updateTo: normalizeInstant(options.updateTo, true),
37
+ });
38
+ if (!response.success) {
39
+ printApiError(outputJson, response.error, 'Failed to list topics');
40
+ }
41
+ const data = response.data;
42
+ if (outputJson) {
43
+ console.log(JSON.stringify({ success: true, data: withItems(data) }, null, 2));
44
+ return;
45
+ }
46
+ renderTopicRows(topicItems(data), {
47
+ totalRows: data?.totalRows,
48
+ pageNo: data?.pageNo ?? page,
49
+ size,
50
+ });
51
+ }
52
+ catch (error) {
53
+ printCatchError(outputJson, error);
54
+ }
55
+ });
56
+ return command;
57
+ }
58
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicRefsCommand(): Command;
3
+ //# sourceMappingURL=refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAY5C,wBAAgB,0BAA0B,IAAI,OAAO,CA8CpD"}
@@ -0,0 +1,47 @@
1
+ import { Command, Option } from 'commander';
2
+ import { apiClient } from '../../../../core/api/client.js';
3
+ import { shouldUseJson } from '../../../../utils/output.js';
4
+ import { getTopicContext, printApiError, printCatchError, refItems, renderRefRows, withItems, } from './common.js';
5
+ export function createTeamTopicRefsCommand() {
6
+ const command = new Command('refs');
7
+ command
8
+ .description('List business objects referencing a topic (no topic header)')
9
+ .argument('<topic-id>', 'Topic ID (19-digit Snowflake, passed as string)')
10
+ .option('--biz-type <type>', 'Filter by biz type (ISSUE|TASK|WORKLOG|...)')
11
+ .option('--page <number>', 'Page number', '1')
12
+ .option('--size <number>', 'Page size', '20')
13
+ .addOption(new Option('--env <string>').hideHelp())
14
+ .addOption(new Option('--tenant <string>').hideHelp())
15
+ .option('--json', 'Output as JSON');
16
+ command.action(async (topicId, options) => {
17
+ const { environment, tenant } = getTopicContext();
18
+ const outputJson = shouldUseJson(options);
19
+ const page = parseInt(options.page, 10) || 1;
20
+ const size = parseInt(options.size, 10) || 20;
21
+ try {
22
+ const response = await apiClient.listTeamTopicRefs(environment, tenant, {
23
+ topicId,
24
+ bizType: options.bizType,
25
+ pageNo: page,
26
+ pageSize: size,
27
+ });
28
+ if (!response.success) {
29
+ printApiError(outputJson, response.error, 'Failed to list topic references');
30
+ }
31
+ const data = response.data;
32
+ if (outputJson) {
33
+ console.log(JSON.stringify({ success: true, data: withItems(data) }, null, 2));
34
+ return;
35
+ }
36
+ renderRefRows(refItems(data), {
37
+ totalRows: data?.totalRows,
38
+ pageNo: data?.pageNo ?? page,
39
+ });
40
+ }
41
+ catch (error) {
42
+ printCatchError(outputJson, error);
43
+ }
44
+ });
45
+ return command;
46
+ }
47
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,0BAA0B;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO;SACJ,WAAW,CAAC,6DAA6D,CAAC;SAC1E,QAAQ,CAAC,YAAY,EAAE,iDAAiD,CAAC;SACzE,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,GAAG,CAAC;SAC7C,MAAM,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC;SAC5C,SAAS,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;SAClD,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAgC,EAAE,EAAE;QACzE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE;gBACtE,OAAO;gBACP,OAAO,EAAE,OAAO,CAAC,OAA6B;gBAC9C,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC5B,SAAS,EAAE,IAAI,EAAE,SAAS;gBAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;aAC7B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicStatsCommand(): Command;
3
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAM5C,wBAAgB,2BAA2B,IAAI,OAAO,CAiCrD"}
@@ -0,0 +1,36 @@
1
+ import { Command, Option } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { apiClient } from '../../../../core/api/client.js';
4
+ import { shouldUseJson } from '../../../../utils/output.js';
5
+ import { getTopicContext, printApiError, printCatchError } from './common.js';
6
+ export function createTeamTopicStatsCommand() {
7
+ const command = new Command('stats');
8
+ command
9
+ .description('Show topic aggregation statistics card')
10
+ .addOption(new Option('--env <string>').hideHelp())
11
+ .addOption(new Option('--tenant <string>').hideHelp())
12
+ .option('--json', 'Output as JSON');
13
+ command.action(async (options) => {
14
+ const { environment, tenant } = getTopicContext();
15
+ const outputJson = shouldUseJson(options);
16
+ try {
17
+ const response = await apiClient.getTeamTopicStatistics(environment, tenant);
18
+ if (!response.success) {
19
+ printApiError(outputJson, response.error, 'Failed to get topic statistics');
20
+ }
21
+ const data = response.data;
22
+ if (outputJson) {
23
+ console.log(JSON.stringify({ success: true, data }, null, 2));
24
+ return;
25
+ }
26
+ console.log(`\nTopics: ${chalk.green(String(data?.topicTotal ?? 0))}`);
27
+ console.log(`Followed: ${chalk.green(String(data?.followCount ?? 0))}`);
28
+ console.log(`Mentions: ${chalk.green(String(data?.mentionCount ?? 0))}\n`);
29
+ }
30
+ catch (error) {
31
+ printCatchError(outputJson, error);
32
+ }
33
+ });
34
+ return command;
35
+ }
36
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,UAAU,2BAA2B;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO;SACJ,WAAW,CAAC,wCAAwC,CAAC;SACrD,SAAS,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;SAClD,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;QACxD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC7E,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicSuggestCommand(): Command;
3
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C,wBAAgB,6BAA6B,IAAI,OAAO,CAuDvD"}
@@ -0,0 +1,57 @@
1
+ import { Command, Option } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { apiClient } from '../../../../core/api/client.js';
5
+ import { shouldUseJson } from '../../../../utils/output.js';
6
+ import { failCommand, getTopicContext, printApiError, printCatchError } from './common.js';
7
+ export function createTeamTopicSuggestCommand() {
8
+ const command = new Command('suggest');
9
+ command
10
+ .description('Suggest existing topics by keyword (avoid split tags)')
11
+ .requiredOption('--keyword <text>', 'Topic name keyword')
12
+ .option('--size <number>', 'Max results', '10')
13
+ .addOption(new Option('--env <string>').hideHelp())
14
+ .addOption(new Option('--tenant <string>').hideHelp())
15
+ .option('--json', 'Output as JSON');
16
+ command.action(async (options) => {
17
+ const { environment, tenant } = getTopicContext();
18
+ const outputJson = shouldUseJson(options);
19
+ const keyword = String(options.keyword ?? '').trim();
20
+ const size = parseInt(options.size, 10) || 10;
21
+ if (!keyword) {
22
+ failCommand(outputJson, 'MISSING_ARGUMENT', '--keyword is required');
23
+ }
24
+ try {
25
+ const response = await apiClient.suggestTeamTopics(environment, tenant, keyword, size);
26
+ if (!response.success) {
27
+ printApiError(outputJson, response.error, 'Failed to suggest topics');
28
+ }
29
+ const rows = response.data || [];
30
+ if (outputJson) {
31
+ console.log(JSON.stringify({ success: true, data: rows }, null, 2));
32
+ return;
33
+ }
34
+ if (rows.length === 0) {
35
+ console.log(chalk.yellow('\n⚠ No matching topics\n'));
36
+ return;
37
+ }
38
+ const table = new Table({
39
+ head: ['TopicId', 'Topic', 'Refs'],
40
+ style: { head: ['cyan'] },
41
+ colWidths: [22, 50, 7],
42
+ wordWrap: true,
43
+ });
44
+ for (const row of rows) {
45
+ table.push([row.topicId || '', row.topicName || '', String(row.refCount ?? 0)]);
46
+ }
47
+ console.log();
48
+ console.log(table.toString());
49
+ console.log();
50
+ }
51
+ catch (error) {
52
+ printCatchError(outputJson, error);
53
+ }
54
+ });
55
+ return command;
56
+ }
57
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/suggest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createTeamTopicUnfollowCommand(): Command;
3
+ //# sourceMappingURL=unfollow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unfollow.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/unfollow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAM5C,wBAAgB,8BAA8B,IAAI,OAAO,CA6CxD"}
@@ -0,0 +1,50 @@
1
+ import { Command, Option } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { apiClient } from '../../../../core/api/client.js';
4
+ import { shouldUseJson } from '../../../../utils/output.js';
5
+ import { getTopicContext, printApiError, printCatchError } from './common.js';
6
+ export function createTeamTopicUnfollowCommand() {
7
+ const command = new Command('unfollow');
8
+ command
9
+ .description('Unfollow a topic (idempotent)')
10
+ .argument('<topic-id>', 'Topic ID (19-digit Snowflake, passed as string)')
11
+ .option('--dry-run', 'Preview without making the write API call')
12
+ .addOption(new Option('--env <string>').hideHelp())
13
+ .addOption(new Option('--tenant <string>').hideHelp())
14
+ .option('--json', 'Output as JSON');
15
+ command.action(async (topicId, options) => {
16
+ const { environment, tenant } = getTopicContext();
17
+ const outputJson = shouldUseJson(options);
18
+ const dryRun = options.dryRun === true;
19
+ try {
20
+ if (dryRun) {
21
+ const data = { topicId, followed: false };
22
+ if (outputJson) {
23
+ console.log(JSON.stringify({ success: true, dryRun: true, data }, null, 2));
24
+ }
25
+ else {
26
+ console.log(chalk.bold('\n🔍 Dry-Run Mode: No changes will be made\n'));
27
+ console.log(` ${chalk.gray('Topic ID:')} ${topicId}`);
28
+ console.log();
29
+ }
30
+ return;
31
+ }
32
+ const response = await apiClient.unfollowTeamTopic(environment, tenant, topicId);
33
+ if (!response.success) {
34
+ printApiError(outputJson, response.error, 'Failed to unfollow topic');
35
+ }
36
+ const data = { topicId, followed: false };
37
+ if (outputJson) {
38
+ console.log(JSON.stringify({ success: true, data }, null, 2));
39
+ }
40
+ else {
41
+ console.log(chalk.green(`\n✓ Unfollowed topic ${topicId}\n`));
42
+ }
43
+ }
44
+ catch (error) {
45
+ printCatchError(outputJson, error);
46
+ }
47
+ });
48
+ return command;
49
+ }
50
+ //# sourceMappingURL=unfollow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unfollow.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/topics/unfollow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,UAAU,8BAA8B;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO;SACJ,WAAW,CAAC,+BAA+B,CAAC;SAC5C,QAAQ,CAAC,YAAY,EAAE,iDAAiD,CAAC;SACzE,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,SAAS,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;SAClD,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC;SACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAgC,EAAE,EAAE;QACzE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;QAEvC,IAAI,CAAC;YACH,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC1C,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;oBACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACjF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC1C,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,OAAO,IAAI,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -23,6 +23,8 @@ import { MouldEntityQueryParams, MouldEntitySetStatusRequest, MouldEntityApiResp
23
23
  import { MouldEntityRegFormRequest, MouldEntityRegFormApiResponse } from '../../types/mould-stock-in.js';
24
24
  import { MouldEntityStockOutFormRequest, MouldEntityStockOutFormApiResponse } from '../../types/mould-stock-out.js';
25
25
  import { TeamIssueQueryParams, TeamIssueApiResponse, CreateTeamIssueRequest, UpdateTeamIssueRequest, BatchEditTeamIssueRequest, CreateTeamIssueCommentRequest, TeamIssueCommentQueryParams, TeamIssueCommentApiResponse, AddTeamIssueAttachmentRequest, DeleteTeamIssueAttachmentRequest, TeamIssueAttachmentQueryParams, TeamIssueAttachmentApiResponse } from '../../types/team-issue.js';
26
+ import { TeamMentionListQueryParams, TeamMentionListResponse, TeamMentionUnreadCountResponse, TeamMentionReadResponse, TeamMentionReplyResponse, TeamMentionReplyRequest, TeamMentionNotifySetting, TeamMentionApiResponse } from '../../types/team-mention.js';
27
+ import { TeamTopicListQueryParams, TeamTopicPageResult, TeamTopicListRow, TeamTopicDetailQueryParams, TeamTopicDetailResponse, TeamTopicStatisticsResponse, TeamTopicRefRow, TeamTopicSuggestRow, TeamMemberSuggestRow, TeamTopicApiResponse } from '../../types/team-topic.js';
26
28
  import { IssueReportRequest, IssueReportApiResponse, IssueListApiResponse, IssueTrackApiResponse, ValidateProjectApiResponse, IssueCloseRequest, IssueCloseApiResponse, IssueReopenRequest, IssueReopenApiResponse } from '../../types/issue-report.js';
27
29
  import { TeamWorkLogQueryParams, TeamWorkLogApiResponse, CreateTeamWorkLogRequest, UpdateTeamWorkLogRequest } from '../../types/team-work-log.js';
28
30
  import { TeamEmployeeGroupsApiResponse } from '../../types/team-employee-group.js';
@@ -382,6 +384,71 @@ export declare const apiClient: {
382
384
  deleteTeamIssue(environment: Environment, tenant: string, teamIssueId: string): Promise<TeamIssueApiResponse>;
383
385
  createTeamIssueComment(environment: Environment, tenant: string, data: CreateTeamIssueCommentRequest): Promise<TeamIssueCommentApiResponse>;
384
386
  listTeamIssueComments(environment: Environment, tenant: string, params: TeamIssueCommentQueryParams): Promise<TeamIssueCommentApiResponse>;
387
+ /**
388
+ * 「提到我的」分页列表(POST /enterprise/team/mention/list)。
389
+ *
390
+ * `readState` 仅 `UNREAD` 生效,不传 = 全部。响应含当前用户未读总数 `unreadCount`。
391
+ */
392
+ listTeamMentions(environment: Environment, tenant: string, params?: TeamMentionListQueryParams): Promise<TeamMentionApiResponse<TeamMentionListResponse>>;
393
+ /**
394
+ * 未读提及计数(GET /enterprise/team/mention/unreadCount)。
395
+ */
396
+ getTeamMentionUnreadCount(environment: Environment, tenant: string): Promise<TeamMentionApiResponse<TeamMentionUnreadCountResponse>>;
397
+ /**
398
+ * 标记提及已读(POST /enterprise/team/mention/read)。
399
+ */
400
+ markTeamMentionsRead(environment: Environment, tenant: string, mentionIds: string[]): Promise<TeamMentionApiResponse<TeamMentionReadResponse>>;
401
+ /**
402
+ * 回复提及(POST /enterprise/team/mention/reply),生成 reply_of 提及。
403
+ */
404
+ replyTeamMention(environment: Environment, tenant: string, data: TeamMentionReplyRequest): Promise<TeamMentionApiResponse<TeamMentionReplyResponse>>;
405
+ /**
406
+ * 读取提及邮件通知设置(GET /enterprise/team/mention/notifySetting/get)。
407
+ */
408
+ getTeamMentionNotifySetting(environment: Environment, tenant: string): Promise<TeamMentionApiResponse<TeamMentionNotifySetting>>;
409
+ /**
410
+ * 保存提及邮件通知设置(POST /enterprise/team/mention/notifySetting/set)。
411
+ */
412
+ setTeamMentionNotifySetting(environment: Environment, tenant: string, emailEnable: boolean): Promise<TeamMentionApiResponse<TeamMentionNotifySetting>>;
413
+ /**
414
+ * 话题聚合分页列表(POST /enterprise/team/topic/list)。
415
+ */
416
+ listTeamTopics(environment: Environment, tenant: string, params?: TeamTopicListQueryParams): Promise<TeamTopicApiResponse<TeamTopicPageResult<TeamTopicListRow>>>;
417
+ /**
418
+ * 话题详情(POST /enterprise/team/topic/detail)。
419
+ */
420
+ getTeamTopicDetail(environment: Environment, tenant: string, params: TeamTopicDetailQueryParams): Promise<TeamTopicApiResponse<TeamTopicDetailResponse>>;
421
+ /**
422
+ * 关注话题(POST /enterprise/team/topic/follow)。幂等。
423
+ */
424
+ followTeamTopic(environment: Environment, tenant: string, topicId: string): Promise<TeamTopicApiResponse<boolean>>;
425
+ /**
426
+ * 取消关注话题(POST /enterprise/team/topic/unfollow)。幂等。
427
+ */
428
+ unfollowTeamTopic(environment: Environment, tenant: string, topicId: string): Promise<TeamTopicApiResponse<boolean>>;
429
+ /**
430
+ * 我关注的话题(POST /enterprise/team/topic/myFollowed)。
431
+ */
432
+ listMyFollowedTeamTopics(environment: Environment, tenant: string, params?: {
433
+ pageNo?: number;
434
+ pageSize?: number;
435
+ }): Promise<TeamTopicApiResponse<TeamTopicPageResult<TeamTopicListRow>>>;
436
+ /**
437
+ * 话题引用项分页(POST /enterprise/team/topic/ref/list)。
438
+ */
439
+ listTeamTopicRefs(environment: Environment, tenant: string, params: TeamTopicDetailQueryParams): Promise<TeamTopicApiResponse<TeamTopicPageResult<TeamTopicRefRow>>>;
440
+ /**
441
+ * 话题聚合页统计卡(POST /enterprise/team/topic/statistics)。
442
+ */
443
+ getTeamTopicStatistics(environment: Environment, tenant: string): Promise<TeamTopicApiResponse<TeamTopicStatisticsResponse>>;
444
+ /**
445
+ * 话题联想(POST /enterprise/team/topic/suggest)。
446
+ */
447
+ suggestTeamTopics(environment: Environment, tenant: string, keyword: string, pageSize?: number): Promise<TeamTopicApiResponse<TeamTopicSuggestRow[]>>;
448
+ /**
449
+ * 成员联想(POST /enterprise/team/member/suggest)。用于写正文前确认姓名/工号。
450
+ */
451
+ suggestTeamMembers(environment: Environment, tenant: string, keyword: string, pageSize?: number): Promise<TeamTopicApiResponse<TeamMemberSuggestRow[]>>;
385
452
  /**
386
453
  * Add a single attachment (file) to a team issue.
387
454
  *