@neomei/opencode-feishu 0.1.2 → 0.2.1

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 (124) hide show
  1. package/CHANGELOG.md +29 -4
  2. package/LICENSE +0 -0
  3. package/README.md +114 -6
  4. package/dist/cli.js +154 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/config.d.ts +30 -0
  7. package/dist/core/config.d.ts.map +1 -1
  8. package/dist/core/config.js +41 -1
  9. package/dist/core/config.js.map +1 -1
  10. package/dist/core/daemon.d.ts.map +1 -1
  11. package/dist/core/daemon.js +2 -1
  12. package/dist/core/daemon.js.map +1 -1
  13. package/dist/core/dedup.d.ts +29 -0
  14. package/dist/core/dedup.d.ts.map +1 -0
  15. package/dist/core/dedup.js +69 -0
  16. package/dist/core/dedup.js.map +1 -0
  17. package/dist/core/file-downloader.d.ts +24 -0
  18. package/dist/core/file-downloader.d.ts.map +1 -0
  19. package/dist/core/file-downloader.js +79 -0
  20. package/dist/core/file-downloader.js.map +1 -0
  21. package/dist/core/hook-manager.d.ts +14 -0
  22. package/dist/core/hook-manager.d.ts.map +1 -0
  23. package/dist/core/hook-manager.js +71 -0
  24. package/dist/core/hook-manager.js.map +1 -0
  25. package/dist/core/message-handler.d.ts +17 -1
  26. package/dist/core/message-handler.d.ts.map +1 -1
  27. package/dist/core/message-handler.js +151 -8
  28. package/dist/core/message-handler.js.map +1 -1
  29. package/dist/core/profile-manager.d.ts +27 -0
  30. package/dist/core/profile-manager.d.ts.map +1 -0
  31. package/dist/core/profile-manager.js +149 -0
  32. package/dist/core/profile-manager.js.map +1 -0
  33. package/dist/core/session-manager.d.ts +8 -1
  34. package/dist/core/session-manager.d.ts.map +1 -1
  35. package/dist/core/session-manager.js +27 -4
  36. package/dist/core/session-manager.js.map +1 -1
  37. package/dist/core/types.d.ts +13 -0
  38. package/dist/core/types.d.ts.map +1 -1
  39. package/dist/feishu/api.d.ts +17 -0
  40. package/dist/feishu/api.d.ts.map +1 -1
  41. package/dist/feishu/api.js +106 -0
  42. package/dist/feishu/api.js.map +1 -1
  43. package/dist/feishu/card.d.ts +4 -1
  44. package/dist/feishu/card.d.ts.map +1 -1
  45. package/dist/feishu/card.js +26 -6
  46. package/dist/feishu/card.js.map +1 -1
  47. package/dist/feishu/event-source.d.ts.map +1 -1
  48. package/dist/feishu/event-source.js +3 -0
  49. package/dist/feishu/event-source.js.map +1 -1
  50. package/dist/feishu/silent-logger.d.ts +5 -5
  51. package/dist/feishu/silent-logger.d.ts.map +1 -1
  52. package/dist/feishu/silent-logger.js +5 -5
  53. package/dist/feishu/silent-logger.js.map +1 -1
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +3 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/opencode/client.d.ts +5 -1
  59. package/dist/opencode/client.d.ts.map +1 -1
  60. package/dist/opencode/client.js +15 -2
  61. package/dist/opencode/client.js.map +1 -1
  62. package/dist/opencode/event-handler.d.ts +6 -1
  63. package/dist/opencode/event-handler.d.ts.map +1 -1
  64. package/dist/opencode/event-handler.js +31 -3
  65. package/dist/opencode/event-handler.js.map +1 -1
  66. package/dist/plugin.d.ts.map +1 -1
  67. package/dist/plugin.js +4 -2
  68. package/dist/plugin.js.map +1 -1
  69. package/dist/services/approval-service.d.ts +20 -0
  70. package/dist/services/approval-service.d.ts.map +1 -0
  71. package/dist/services/approval-service.js +123 -0
  72. package/dist/services/approval-service.js.map +1 -0
  73. package/dist/services/base-service.d.ts +22 -0
  74. package/dist/services/base-service.d.ts.map +1 -0
  75. package/dist/services/base-service.js +47 -0
  76. package/dist/services/base-service.js.map +1 -0
  77. package/dist/services/calendar-service.d.ts +25 -0
  78. package/dist/services/calendar-service.d.ts.map +1 -0
  79. package/dist/services/calendar-service.js +220 -0
  80. package/dist/services/calendar-service.js.map +1 -0
  81. package/dist/services/chat-service.d.ts +52 -0
  82. package/dist/services/chat-service.d.ts.map +1 -0
  83. package/dist/services/chat-service.js +170 -0
  84. package/dist/services/chat-service.js.map +1 -0
  85. package/dist/services/contact-service.d.ts +40 -0
  86. package/dist/services/contact-service.d.ts.map +1 -0
  87. package/dist/services/contact-service.js +137 -0
  88. package/dist/services/contact-service.js.map +1 -0
  89. package/dist/services/doc-service.d.ts +137 -0
  90. package/dist/services/doc-service.d.ts.map +1 -0
  91. package/dist/services/doc-service.js +516 -0
  92. package/dist/services/doc-service.js.map +1 -0
  93. package/dist/services/im-service.d.ts +64 -0
  94. package/dist/services/im-service.d.ts.map +1 -0
  95. package/dist/services/im-service.js +215 -0
  96. package/dist/services/im-service.js.map +1 -0
  97. package/dist/services/index.d.ts +9 -0
  98. package/dist/services/index.d.ts.map +1 -0
  99. package/dist/services/index.js +10 -0
  100. package/dist/services/index.js.map +1 -0
  101. package/dist/services/task-service.d.ts +19 -0
  102. package/dist/services/task-service.d.ts.map +1 -0
  103. package/dist/services/task-service.js +126 -0
  104. package/dist/services/task-service.js.map +1 -0
  105. package/dist/setup/device-flow.d.ts +31 -0
  106. package/dist/setup/device-flow.d.ts.map +1 -0
  107. package/dist/setup/device-flow.js +133 -0
  108. package/dist/setup/device-flow.js.map +1 -0
  109. package/dist/setup/preflight.d.ts +1 -0
  110. package/dist/setup/preflight.d.ts.map +1 -1
  111. package/dist/setup/preflight.js +167 -1
  112. package/dist/setup/preflight.js.map +1 -1
  113. package/dist/setup/wizard.d.ts +3 -1
  114. package/dist/setup/wizard.d.ts.map +1 -1
  115. package/dist/setup/wizard.js +113 -125
  116. package/dist/setup/wizard.js.map +1 -1
  117. package/dist/standalone.d.ts.map +1 -1
  118. package/dist/standalone.js +49 -13
  119. package/dist/standalone.js.map +1 -1
  120. package/dist/types/extended.d.ts +196 -0
  121. package/dist/types/extended.d.ts.map +1 -0
  122. package/dist/types/extended.js +6 -0
  123. package/dist/types/extended.js.map +1 -0
  124. package/package.json +5 -3
@@ -0,0 +1,137 @@
1
+ import { BaseService } from './base-service.js';
2
+ /**
3
+ * Contact/ User Service
4
+ * Provides user operations: search, get info, department query
5
+ */
6
+ export class ContactService extends BaseService {
7
+ constructor(api) {
8
+ super(api);
9
+ }
10
+ /**
11
+ * Search users by keyword (name, email, phone).
12
+ */
13
+ async searchUsers(query, options) {
14
+ this.validateRequired(query, 'query');
15
+ return this.call('searchUsers', async () => {
16
+ const client = this.api.getClient();
17
+ const res = await client.request({
18
+ method: 'POST',
19
+ url: '/open-apis/contact/v3/users/batch_get_id',
20
+ data: {
21
+ query,
22
+ ...this.buildPagination(options?.pageSize || 20, options?.pageToken),
23
+ },
24
+ });
25
+ if (res.code !== 0) {
26
+ // Try alternative search endpoint
27
+ const searchRes = await client.request({
28
+ method: 'GET',
29
+ url: '/open-apis/contact/v3/users',
30
+ params: {
31
+ query,
32
+ ...this.buildPagination(options?.pageSize || 20, options?.pageToken),
33
+ },
34
+ });
35
+ if (searchRes.code !== 0) {
36
+ throw new Error(`Failed to search users: ${searchRes.msg || res.msg || 'Unknown error'}`);
37
+ }
38
+ const data = searchRes.data || {};
39
+ return {
40
+ users: (data.items || []).map((user) => this.parseUser(user)),
41
+ hasMore: data.has_more || false,
42
+ pageToken: data.page_token,
43
+ };
44
+ }
45
+ const data = res.data || {};
46
+ return {
47
+ users: (data.user_list || []).map((user) => this.parseUser(user)),
48
+ hasMore: false,
49
+ };
50
+ });
51
+ }
52
+ /**
53
+ * Get user info by ID.
54
+ */
55
+ async getUserInfo(userId) {
56
+ this.validateRequired(userId, 'userId');
57
+ return this.call('getUserInfo', async () => {
58
+ const client = this.api.getClient();
59
+ const res = await client.contact.v3.user.get({
60
+ path: { user_id: userId },
61
+ params: { user_id_type: 'open_id' },
62
+ });
63
+ if (res.code !== 0) {
64
+ throw new Error(`Failed to get user info: ${res.msg || 'Unknown error'}`);
65
+ }
66
+ return this.parseUser(res.data?.user);
67
+ });
68
+ }
69
+ /**
70
+ * Get current bot info.
71
+ */
72
+ async getBotInfo() {
73
+ return this.call('getBotInfo', async () => {
74
+ const client = this.api.getClient();
75
+ const res = await client.request({
76
+ method: 'GET',
77
+ url: '/open-apis/bot/v3/info',
78
+ });
79
+ if (res.code !== 0) {
80
+ throw new Error(`Failed to get bot info: ${res.msg || 'Unknown error'}`);
81
+ }
82
+ return {
83
+ openId: res.data?.bot?.open_id,
84
+ name: res.data?.bot?.app_name || 'Bot',
85
+ };
86
+ });
87
+ }
88
+ /**
89
+ * Get user list by department.
90
+ */
91
+ async getDepartmentUsers(departmentId, options) {
92
+ this.validateRequired(departmentId, 'departmentId');
93
+ return this.call('getDepartmentUsers', async () => {
94
+ const client = this.api.getClient();
95
+ const res = await client.contact.v3.user.findByDepartment({
96
+ params: {
97
+ department_id_type: 'open_department_id',
98
+ department_id: departmentId,
99
+ ...this.buildPagination(options?.pageSize || 50, options?.pageToken),
100
+ },
101
+ });
102
+ if (res.code !== 0) {
103
+ throw new Error(`Failed to get department users: ${res.msg || 'Unknown error'}`);
104
+ }
105
+ const data = res.data || {};
106
+ return {
107
+ users: (data.items || []).map((user) => this.parseUser(user)),
108
+ hasMore: data.has_more || false,
109
+ pageToken: data.page_token,
110
+ };
111
+ });
112
+ }
113
+ /**
114
+ * Parse user object from API response.
115
+ */
116
+ parseUser(user) {
117
+ if (!user) {
118
+ return {
119
+ openId: '',
120
+ name: 'Unknown',
121
+ };
122
+ }
123
+ return {
124
+ openId: user.open_id || user.union_id || '',
125
+ unionId: user.union_id,
126
+ userId: user.user_id,
127
+ name: user.name || user.en_name || 'Unknown',
128
+ enName: user.en_name,
129
+ email: user.email,
130
+ mobile: user.mobile,
131
+ avatar: user.avatar?.avatar_origin,
132
+ department: user.department_name,
133
+ tenantKey: user.tenant_key,
134
+ };
135
+ }
136
+ }
137
+ //# sourceMappingURL=contact-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-service.js","sourceRoot":"","sources":["../../src/services/contact-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { BaseService } from './base-service.js';
2
+ import type { FeishuAPI } from '../feishu/api.js';
3
+ import type { DocumentContent, DocumentSearchResult, ResourceUploadResult, FeishuMessage } from '../types/extended.js';
4
+ /**
5
+ * Document Service
6
+ * Provides document operations: create, read, search, update
7
+ * Supports both docx and wiki documents
8
+ *
9
+ * Aligned with lark-cli docs features:
10
+ * - +create: Create from XML/Markdown content
11
+ * - +fetch: Read with detail/scope support
12
+ * - +update: 8 commands (str_replace, block_insert_after, etc.)
13
+ * - +search: Cloud space search
14
+ */
15
+ export declare class DocService extends BaseService {
16
+ constructor(api: FeishuAPI);
17
+ /**
18
+ * Create a new document from content.
19
+ * Supports XML (default) and Markdown formats.
20
+ */
21
+ createDocument(options: {
22
+ content: string;
23
+ format?: 'xml' | 'markdown';
24
+ parentToken?: string;
25
+ parentPosition?: string;
26
+ }): Promise<{
27
+ documentId: string;
28
+ revisionId: number;
29
+ url: string;
30
+ title: string;
31
+ }>;
32
+ /**
33
+ * Create a document from Markdown content (convenience method).
34
+ */
35
+ createDocumentFromMarkdown(title: string, markdown: string, options?: {
36
+ parentToken?: string;
37
+ }): Promise<{
38
+ documentId: string;
39
+ revisionId: number;
40
+ url: string;
41
+ title: string;
42
+ }>;
43
+ /**
44
+ * Fetch document content with support for detail levels and scopes.
45
+ *
46
+ * @param docToken - Document token or URL
47
+ * @param options - Fetch options
48
+ * - detail: 'simple' | 'with-ids' | 'full' (default: 'simple')
49
+ * - scope: 'outline' | 'section' | 'range' | 'keyword' (default: undefined = full doc)
50
+ * - docFormat: 'xml' | 'markdown' | 'text' (default: 'markdown')
51
+ * - startBlockId: For section/range scope
52
+ * - endBlockId: For range scope
53
+ * - keyword: For keyword scope
54
+ * - maxDepth: For outline scope (heading depth limit)
55
+ */
56
+ fetchDocument(docToken: string, options?: {
57
+ detail?: 'simple' | 'with-ids' | 'full';
58
+ scope?: 'outline' | 'section' | 'range' | 'keyword';
59
+ docFormat?: 'xml' | 'markdown' | 'text';
60
+ startBlockId?: string;
61
+ endBlockId?: string;
62
+ keyword?: string;
63
+ maxDepth?: number;
64
+ }): Promise<DocumentContent>;
65
+ /**
66
+ * Get document outline (table of contents).
67
+ * Returns heading structure up to specified depth.
68
+ */
69
+ getDocumentOutline(docToken: string, maxDepth?: number): Promise<Array<{
70
+ level: number;
71
+ text: string;
72
+ blockId: string;
73
+ }>>;
74
+ /**
75
+ * Update document content with various commands.
76
+ *
77
+ * Commands:
78
+ * - str_replace: Find and replace text
79
+ * - block_insert_after: Insert after a block
80
+ * - block_replace: Replace a block
81
+ * - block_delete: Delete block(s)
82
+ * - block_copy_insert_after: Copy blocks and insert after
83
+ * - block_move_after: Move blocks after a position
84
+ * - append: Append to end of document
85
+ * - overwrite: Overwrite entire document
86
+ */
87
+ updateDocument(docToken: string, command: string, options: {
88
+ content?: string;
89
+ pattern?: string;
90
+ blockId?: string;
91
+ srcBlockIds?: string[];
92
+ docFormat?: 'xml' | 'markdown';
93
+ }): Promise<{
94
+ revisionId: number;
95
+ }>;
96
+ /**
97
+ * Search documents in cloud space.
98
+ * Supports advanced query syntax.
99
+ */
100
+ searchDocuments(query: string, options?: {
101
+ pageSize?: number;
102
+ pageToken?: string;
103
+ filters?: {
104
+ docTypes?: string[];
105
+ creatorIds?: string[];
106
+ folderTokens?: string[];
107
+ openTime?: {
108
+ start?: string;
109
+ end?: string;
110
+ };
111
+ createTime?: {
112
+ start?: string;
113
+ end?: string;
114
+ };
115
+ onlyTitle?: boolean;
116
+ onlyComment?: boolean;
117
+ };
118
+ }): Promise<DocumentSearchResult>;
119
+ /**
120
+ * Share a document to a chat as an interactive card.
121
+ */
122
+ shareDocument(chatId: string, docToken: string, options?: {
123
+ description?: string;
124
+ docType?: 'doc' | 'docx' | 'wiki' | 'sheet';
125
+ }): Promise<FeishuMessage>;
126
+ /**
127
+ * Upload a resource (image/file) to a document.
128
+ */
129
+ uploadResource(filePath: string, fileName?: string): Promise<ResourceUploadResult>;
130
+ private parseSearchResult;
131
+ private mapDocType;
132
+ private guessMimeType;
133
+ private parseContentToBlocks;
134
+ private markdownToBlocks;
135
+ private xmlToBlocks;
136
+ }
137
+ //# sourceMappingURL=doc-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-service.d.ts","sourceRoot":"","sources":["../../src/services/doc-service.ts"],"names":[],"mappings":"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"}