vps-work 2.5.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/.well-known/skills/index.json +14 -4
  2. package/README.md +1 -0
  3. package/USAGE.md +22 -0
  4. package/dist/vps-work.cjs +824 -546
  5. package/package.json +1 -1
  6. package/skills/vps-documents/references/api.md +4 -0
  7. package/skills/vps-okr/SKILL.md +12 -2
  8. package/skills/vps-okr-management-assistant/SKILL.md +2 -0
  9. package/skills/vps-store-management/references/store-reception.md +14 -2
  10. package/dist/packages/vps-work/src/bin/vps-work.js +0 -271
  11. package/dist/packages/vps-work/src/commands/agent/index.js +0 -264
  12. package/dist/packages/vps-work/src/commands/approval/index.js +0 -7
  13. package/dist/packages/vps-work/src/commands/approval/shortcuts.js +0 -259
  14. package/dist/packages/vps-work/src/commands/attendance/applications.js +0 -21
  15. package/dist/packages/vps-work/src/commands/attendance/index.js +0 -9
  16. package/dist/packages/vps-work/src/commands/attendance/scheduling.js +0 -183
  17. package/dist/packages/vps-work/src/commands/attendance/shortcuts.js +0 -131
  18. package/dist/packages/vps-work/src/commands/auth/check.js +0 -34
  19. package/dist/packages/vps-work/src/commands/auth/index.js +0 -21
  20. package/dist/packages/vps-work/src/commands/auth/list.js +0 -50
  21. package/dist/packages/vps-work/src/commands/auth/scopes.js +0 -17
  22. package/dist/packages/vps-work/src/commands/auth/status.js +0 -127
  23. package/dist/packages/vps-work/src/commands/auth/tenants.js +0 -35
  24. package/dist/packages/vps-work/src/commands/auth/use.js +0 -40
  25. package/dist/packages/vps-work/src/commands/calendar/index.js +0 -7
  26. package/dist/packages/vps-work/src/commands/calendar/shortcuts.js +0 -598
  27. package/dist/packages/vps-work/src/commands/catalog.js +0 -29
  28. package/dist/packages/vps-work/src/commands/cli-install.js +0 -70
  29. package/dist/packages/vps-work/src/commands/collab-invoke.js +0 -19
  30. package/dist/packages/vps-work/src/commands/corporate/index.js +0 -204
  31. package/dist/packages/vps-work/src/commands/creative/index.js +0 -369
  32. package/dist/packages/vps-work/src/commands/documents/index.js +0 -991
  33. package/dist/packages/vps-work/src/commands/drive/index.js +0 -435
  34. package/dist/packages/vps-work/src/commands/exec.js +0 -46
  35. package/dist/packages/vps-work/src/commands/hr/business.js +0 -22
  36. package/dist/packages/vps-work/src/commands/hr/data-view-shortcuts.js +0 -519
  37. package/dist/packages/vps-work/src/commands/hr/index.js +0 -15
  38. package/dist/packages/vps-work/src/commands/hr/job-responsibilities.js +0 -266
  39. package/dist/packages/vps-work/src/commands/hr/payslip.js +0 -45
  40. package/dist/packages/vps-work/src/commands/hr/shortcuts.js +0 -146
  41. package/dist/packages/vps-work/src/commands/im/im-message-payload.js +0 -150
  42. package/dist/packages/vps-work/src/commands/im/index.js +0 -7
  43. package/dist/packages/vps-work/src/commands/im/shortcuts.js +0 -856
  44. package/dist/packages/vps-work/src/commands/knowledge/index.js +0 -36
  45. package/dist/packages/vps-work/src/commands/login.js +0 -52
  46. package/dist/packages/vps-work/src/commands/logout.js +0 -12
  47. package/dist/packages/vps-work/src/commands/mail/email.js +0 -132
  48. package/dist/packages/vps-work/src/commands/mail/index.js +0 -9
  49. package/dist/packages/vps-work/src/commands/mail/shortcuts.js +0 -43
  50. package/dist/packages/vps-work/src/commands/meeting/index.js +0 -7
  51. package/dist/packages/vps-work/src/commands/meeting/shortcuts.js +0 -120
  52. package/dist/packages/vps-work/src/commands/odoo-invoke.js +0 -21
  53. package/dist/packages/vps-work/src/commands/odoo-leaf-registry.js +0 -13
  54. package/dist/packages/vps-work/src/commands/office/index.js +0 -59
  55. package/dist/packages/vps-work/src/commands/okr/index.js +0 -7
  56. package/dist/packages/vps-work/src/commands/okr/shortcuts.js +0 -75
  57. package/dist/packages/vps-work/src/commands/org-structure.js +0 -347
  58. package/dist/packages/vps-work/src/commands/popup/index.js +0 -147
  59. package/dist/packages/vps-work/src/commands/product/abnormal-statistics.js +0 -250
  60. package/dist/packages/vps-work/src/commands/product/data-view-shortcuts.js +0 -253
  61. package/dist/packages/vps-work/src/commands/product/index.js +0 -11
  62. package/dist/packages/vps-work/src/commands/purchase/index.js +0 -45
  63. package/dist/packages/vps-work/src/commands/reauth.js +0 -127
  64. package/dist/packages/vps-work/src/commands/report/index.js +0 -7
  65. package/dist/packages/vps-work/src/commands/report/missing-daily-reports.js +0 -9
  66. package/dist/packages/vps-work/src/commands/report/shortcuts.js +0 -251
  67. package/dist/packages/vps-work/src/commands/sales/index.js +0 -11
  68. package/dist/packages/vps-work/src/commands/sales/period-params.js +0 -75
  69. package/dist/packages/vps-work/src/commands/sales/shortcuts-personnel.js +0 -124
  70. package/dist/packages/vps-work/src/commands/sales/shortcuts.js +0 -800
  71. package/dist/packages/vps-work/src/commands/shortcut-common.js +0 -88
  72. package/dist/packages/vps-work/src/commands/shortcut-params.js +0 -22
  73. package/dist/packages/vps-work/src/commands/skill/index.js +0 -136
  74. package/dist/packages/vps-work/src/commands/skill/personal.js +0 -167
  75. package/dist/packages/vps-work/src/commands/store/index.js +0 -82
  76. package/dist/packages/vps-work/src/commands/task/index.js +0 -7
  77. package/dist/packages/vps-work/src/commands/task/task-center.js +0 -595
  78. package/dist/packages/vps-work/src/commands/tools/index.js +0 -127
  79. package/dist/packages/vps-work/src/commands/vemory/index.js +0 -7
  80. package/dist/packages/vps-work/src/commands/vemory/shortcuts.js +0 -53
  81. package/dist/packages/vps-work/src/commands/vertu-aisales.js +0 -30
  82. package/dist/packages/vps-work/src/commands/vertu-erp.js +0 -30
  83. package/dist/packages/vps-work/src/core/aisales-mcp-client.js +0 -35
  84. package/dist/packages/vps-work/src/core/auth.js +0 -240
  85. package/dist/packages/vps-work/src/core/cli-bin.js +0 -11
  86. package/dist/packages/vps-work/src/core/cli-root-help.js +0 -190
  87. package/dist/packages/vps-work/src/core/client.js +0 -158
  88. package/dist/packages/vps-work/src/core/config.js +0 -183
  89. package/dist/packages/vps-work/src/core/corporate-client.js +0 -52
  90. package/dist/packages/vps-work/src/core/creative-attachment-download.js +0 -48
  91. package/dist/packages/vps-work/src/core/documents-client.js +0 -57
  92. package/dist/packages/vps-work/src/core/endpoints.js +0 -46
  93. package/dist/packages/vps-work/src/core/erp-mcp-client.js +0 -11
  94. package/dist/packages/vps-work/src/core/errors.js +0 -107
  95. package/dist/packages/vps-work/src/core/execute-catalog-client.js +0 -42
  96. package/dist/packages/vps-work/src/core/hermes-client.js +0 -70
  97. package/dist/packages/vps-work/src/core/im-attachment-download.js +0 -109
  98. package/dist/packages/vps-work/src/core/im-client.js +0 -64
  99. package/dist/packages/vps-work/src/core/keychain.js +0 -58
  100. package/dist/packages/vps-work/src/core/mail-client.js +0 -82
  101. package/dist/packages/vps-work/src/core/mcp-client.js +0 -129
  102. package/dist/packages/vps-work/src/core/office-client.js +0 -25
  103. package/dist/packages/vps-work/src/core/office-files.js +0 -82
  104. package/dist/packages/vps-work/src/core/paths.js +0 -70
  105. package/dist/packages/vps-work/src/core/public-result.js +0 -43
  106. package/dist/packages/vps-work/src/core/sales-invoice-attachments-client.js +0 -75
  107. package/dist/packages/vps-work/src/core/sales-query-client.js +0 -452
  108. package/dist/packages/vps-work/src/core/skill-catalog.js +0 -158
  109. package/dist/packages/vps-work/src/core/skill-key.js +0 -19
  110. package/dist/packages/vps-work/src/core/v-drive-store.js +0 -392
  111. package/dist/packages/vps-work/src/core/vertu-agent-env.js +0 -32
  112. package/dist/packages/vps-work/src/core/vps-auth-scopes.js +0 -73
  113. package/dist/packages/vps-work/src/core/vps-service-auth.js +0 -382
  114. package/dist/packages/vps-work/src/core/vps-service-config.js +0 -83
  115. package/dist/packages/vps-work/src/core/vps-service-http.js +0 -187
  116. package/dist/packages/vps-work/src/utils/at-file.js +0 -34
  117. package/dist/packages/vps-work/src/utils/cli-option-helpers.js +0 -52
  118. package/dist/packages/vps-work/src/utils/frontmatter.js +0 -26
  119. package/dist/packages/vps-work/src/utils/normalize-argv.js +0 -51
  120. package/dist/packages/vps-work/src/utils/parse-json-arg.js +0 -85
  121. package/dist/packages/vps-work/src/utils/prompt.js +0 -46
  122. package/dist/packages/vps-work/src/utils/read-text.js +0 -44
  123. package/dist/packages/vps-work/src/utils/schema-to-options.js +0 -307
  124. package/dist/packages/vps-work/src/utils/unwrap-envelope.js +0 -31
  125. package/dist/shared/im-org-tree/index.js +0 -200
@@ -1,200 +0,0 @@
1
- /**
2
- * IM 通讯录组织架构:部门列表口径与树构建(vps-service / im-desktop 共用)。
3
- * 数据源以 `/v1/im/org/departments` 返回的 VPS 原生企业组织为准。
4
- */
5
- /** 身份同步占位部门在通讯录中的展示名,与 vps_org_units.unit_key=unassigned 对应。 */
6
- export const UNASSIGNED_ORG_DEPARTMENT_NAME = '未分配部门';
7
- /** 通讯录不展示身份同步占位部门。 */
8
- export function isUnassignedDirectoryDepartment(department) {
9
- return department.name.trim() === UNASSIGNED_ORG_DEPARTMENT_NAME
10
- || department.complete_name?.trim() === UNASSIGNED_ORG_DEPARTMENT_NAME;
11
- }
12
- export function excludeUnassignedDirectoryDepartments(departments) {
13
- return departments.filter((department) => !isUnassignedDirectoryDepartment(department));
14
- }
15
- export function imOrgDepartmentDisplayName(department) {
16
- const name = department.name.trim();
17
- if (name) {
18
- return name;
19
- }
20
- const complete = department.complete_name?.trim();
21
- if (complete) {
22
- return complete;
23
- }
24
- return `部门 ${department.department_id}`;
25
- }
26
- export function sortImOrgDepartmentsByName(a, b) {
27
- return imOrgDepartmentDisplayName(a).localeCompare(imOrgDepartmentDisplayName(b), 'zh-CN');
28
- }
29
- /** 通讯录口径:去掉本部门及全部子部门都没有在职人员的节点。 */
30
- export function filterImOrgDepartmentsWithSubtreeStaff(departments) {
31
- const byId = new Map();
32
- const childrenByParent = new Map();
33
- for (const dept of departments) {
34
- byId.set(dept.department_id, dept);
35
- const parentId = dept.parent_id;
36
- if (parentId !== null) {
37
- const siblings = childrenByParent.get(parentId) ?? [];
38
- siblings.push(dept.department_id);
39
- childrenByParent.set(parentId, siblings);
40
- }
41
- }
42
- const subtreeTotals = new Map();
43
- const computeSubtreeTotal = (departmentId) => {
44
- const cached = subtreeTotals.get(departmentId);
45
- if (cached !== undefined) {
46
- return cached;
47
- }
48
- const dept = byId.get(departmentId);
49
- if (!dept) {
50
- return 0;
51
- }
52
- let total = dept.employee_count;
53
- for (const childId of childrenByParent.get(departmentId) ?? []) {
54
- total += computeSubtreeTotal(childId);
55
- }
56
- subtreeTotals.set(departmentId, total);
57
- return total;
58
- };
59
- for (const dept of departments) {
60
- computeSubtreeTotal(dept.department_id);
61
- }
62
- return departments.filter((dept) => (subtreeTotals.get(dept.department_id) ?? 0) > 0);
63
- }
64
- /**
65
- * 构建森林:父节点不在当前列表中的部门提升为根(与 IM 通讯录一致)。
66
- */
67
- export function buildImOrgDepartmentForest(departments) {
68
- const nodes = new Map();
69
- for (const department of departments) {
70
- nodes.set(department.department_id, {
71
- department,
72
- children: [],
73
- subtreeEmployeeCount: 0,
74
- });
75
- }
76
- const roots = [];
77
- for (const node of nodes.values()) {
78
- const parentId = node.department.parent_id;
79
- const parent = parentId !== null ? nodes.get(parentId) : undefined;
80
- if (parent) {
81
- parent.children.push(node);
82
- }
83
- else {
84
- roots.push(node);
85
- }
86
- }
87
- const fillSubtreeCount = (node) => {
88
- node.subtreeEmployeeCount =
89
- node.department.employee_count +
90
- node.children.reduce((sum, child) => sum + fillSubtreeCount(child), 0);
91
- return node.subtreeEmployeeCount;
92
- };
93
- roots.sort((a, b) => sortImOrgDepartmentsByName(a.department, b.department));
94
- const sortRecursive = (items) => {
95
- items.sort((a, b) => sortImOrgDepartmentsByName(a.department, b.department));
96
- for (const item of items) {
97
- sortRecursive(item.children);
98
- }
99
- };
100
- sortRecursive(roots);
101
- roots.forEach(fillSubtreeCount);
102
- return roots;
103
- }
104
- /** 企业根名称与公司名重复时,这一级只是容器:有下级则提升子部门,没有则不再单独占一层。 */
105
- export function flattenDuplicateCompanyRoot(forest, companyName) {
106
- const company = companyName.trim();
107
- if (!company)
108
- return { forest, collapsedRoots: [] };
109
- const collapsedRoots = [];
110
- const next = [];
111
- for (const node of forest) {
112
- const name = node.department.name.trim();
113
- const path = node.department.complete_name?.trim() || name;
114
- const sameCompany = name === company && (path === company || path === name);
115
- if (!sameCompany) {
116
- next.push(node);
117
- continue;
118
- }
119
- collapsedRoots.push(node);
120
- next.push(...node.children);
121
- }
122
- return { forest: next, collapsedRoots };
123
- }
124
- function matchesImOrgDepartmentKeyword(department, keyword) {
125
- const q = keyword.trim().toLowerCase();
126
- if (!q) {
127
- return true;
128
- }
129
- const haystack = [
130
- department.department_id,
131
- department.parent_id,
132
- department.name,
133
- department.complete_name,
134
- department.employee_count,
135
- ]
136
- .join(' ')
137
- .toLowerCase();
138
- return haystack.includes(q);
139
- }
140
- export function filterImOrgDepartmentForestByKeyword(nodes, keyword) {
141
- if (!keyword.trim()) {
142
- return nodes;
143
- }
144
- const filtered = [];
145
- for (const node of nodes) {
146
- const childMatches = filterImOrgDepartmentForestByKeyword(node.children, keyword);
147
- if (matchesImOrgDepartmentKeyword(node.department, keyword) || childMatches.length > 0) {
148
- filtered.push({
149
- department: node.department,
150
- subtreeEmployeeCount: node.subtreeEmployeeCount,
151
- children: childMatches.length > 0 ? childMatches : node.children,
152
- });
153
- }
154
- }
155
- return filtered;
156
- }
157
- export function collectImOrgDepartmentForestIds(nodes) {
158
- const ids = [];
159
- const walk = (items) => {
160
- for (const node of items) {
161
- ids.push(node.department.department_id);
162
- walk(node.children);
163
- }
164
- };
165
- walk(nodes);
166
- return ids;
167
- }
168
- export function buildImOrgDepartmentChildrenIndex(departments) {
169
- const childrenByParent = new Map();
170
- const knownIds = new Set(departments.map((dept) => dept.department_id));
171
- for (const department of departments) {
172
- const parentId = department.parent_id;
173
- if (parentId === null || !knownIds.has(parentId)) {
174
- continue;
175
- }
176
- const siblings = childrenByParent.get(parentId) ?? [];
177
- siblings.push(department.department_id);
178
- childrenByParent.set(parentId, siblings);
179
- }
180
- return childrenByParent;
181
- }
182
- export function resolveImOrgDepartmentSubtreeScope(childrenByParent, selectedDepartmentIds) {
183
- if (!selectedDepartmentIds.length) {
184
- return new Set();
185
- }
186
- const scope = new Set();
187
- const walk = (departmentId) => {
188
- if (scope.has(departmentId)) {
189
- return;
190
- }
191
- scope.add(departmentId);
192
- for (const childId of childrenByParent.get(departmentId) ?? []) {
193
- walk(childId);
194
- }
195
- };
196
- for (const departmentId of selectedDepartmentIds) {
197
- walk(departmentId);
198
- }
199
- return scope;
200
- }