@xwang152/claw-lark 0.1.27 → 0.1.29

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.
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export { createLarkClient, createLarkWSClient } from "./src/client.js";
12
12
  export { monitorLarkProvider, stopMonitor } from "./src/monitor.js";
13
13
  export { startWebhookServer } from "./src/webhook.js";
14
14
  export { listLarkDirectoryPeers, listLarkDirectoryGroups } from "./src/directory.js";
15
- export { sendMessageLark, sendCardLark, updateCardLark, buildMarkdownCard, sendMarkdownCardLark, editMessageLark, } from "./src/send.js";
15
+ export { sendMessageLark, sendCardLark, updateCardLark, buildMarkdownCard, sendMarkdownCardLark, editMessageLark, shouldUseCard, } from "./src/send.js";
16
16
  export type { LarkSendResult, SendLarkMessageParams, SendLarkCardParams, SendLarkMarkdownCardParams } from "./src/send.js";
17
17
  export { downloadImageLark, downloadFileLark, uploadImageLark, uploadFileLark, sendImageLark, sendFileLark, sendMediaLark, detectFileType, } from "./src/media.js";
18
18
  export { addReactionLark, removeReactionLark, listReactionsLark } from "./src/reactions.js";
@@ -21,6 +21,8 @@ export { addTypingIndicator, removeTypingIndicator, createTypingController, } fr
21
21
  export type { TypingIndicatorState } from "./src/typing.js";
22
22
  export { resolveLarkSenderName, clearSenderNameCache, getSenderNameCacheStats, prefetchLarkSenderNames, } from "./src/sender-name.js";
23
23
  export { getLarkMessage, formatQuotedContext, isReplyMessage, buildMessageContextWithQuote, } from "./src/message-context.js";
24
+ export { readDocumentLark, createDocumentLark, writeDocumentLark, appendDocumentLark, updateBlockLark, deleteBlockLark, listBlocksLark, getBlockLark, listFolderLark, listAppScopesLark, } from "./src/docx.js";
25
+ export type { LarkDocumentInfo, LarkCreateDocResult, LarkWriteDocResult, LarkAppendDocResult, LarkBlock, LarkListBlocksResult, LarkGetBlockResult, LarkFolderItem, LarkListFolderResult, LarkAppScopeResult, } from "./src/docx.js";
24
26
  export type { LarkDomain, LarkConnectionMode, DmPolicy, GroupPolicy, RenderMode, LarkAccountConfig, ResolvedLarkAccount, LarkChannelConfig, LarkGroupConfig, LarkMessageEvent, LarkMention, ParsedMessage, SendResult, } from "./src/types.js";
25
27
  export { resolveLarkAllowlistMatch, resolveLarkGroupConfig, resolveLarkGroupToolPolicy, isLarkGroupAllowed, resolveLarkGroupRequireMention, resolveLarkReplyToMode, } from "./src/policy.js";
26
28
  export { detectLarkIdType, normalizeLarkTarget, formatLarkTarget, inferReceiveIdType, looksLikeLarkId, } from "./src/utils.js";
package/dist/index.js CHANGED
@@ -16,13 +16,14 @@ export { createLarkClient, createLarkWSClient } from "./src/client.js";
16
16
  export { monitorLarkProvider, stopMonitor } from "./src/monitor.js";
17
17
  export { startWebhookServer } from "./src/webhook.js";
18
18
  export { listLarkDirectoryPeers, listLarkDirectoryGroups } from "./src/directory.js";
19
- export { sendMessageLark, sendCardLark, updateCardLark, buildMarkdownCard, sendMarkdownCardLark, editMessageLark, } from "./src/send.js";
19
+ export { sendMessageLark, sendCardLark, updateCardLark, buildMarkdownCard, sendMarkdownCardLark, editMessageLark, shouldUseCard, } from "./src/send.js";
20
20
  export { downloadImageLark, downloadFileLark, uploadImageLark, uploadFileLark, sendImageLark, sendFileLark, sendMediaLark, detectFileType, } from "./src/media.js";
21
21
  export { addReactionLark, removeReactionLark, listReactionsLark } from "./src/reactions.js";
22
22
  export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, formatMentionForText, formatMentionForCard, formatMentionAllForText, formatMentionAllForCard, buildMentionedMessage, buildMentionedCardContent, } from "./src/mention.js";
23
23
  export { addTypingIndicator, removeTypingIndicator, createTypingController, } from "./src/typing.js";
24
24
  export { resolveLarkSenderName, clearSenderNameCache, getSenderNameCacheStats, prefetchLarkSenderNames, } from "./src/sender-name.js";
25
25
  export { getLarkMessage, formatQuotedContext, isReplyMessage, buildMessageContextWithQuote, } from "./src/message-context.js";
26
+ export { readDocumentLark, createDocumentLark, writeDocumentLark, appendDocumentLark, updateBlockLark, deleteBlockLark, listBlocksLark, getBlockLark, listFolderLark, listAppScopesLark, } from "./src/docx.js";
26
27
  export { resolveLarkAllowlistMatch, resolveLarkGroupConfig, resolveLarkGroupToolPolicy, isLarkGroupAllowed, resolveLarkGroupRequireMention, resolveLarkReplyToMode, } from "./src/policy.js";
27
28
  export { detectLarkIdType, normalizeLarkTarget, formatLarkTarget, inferReceiveIdType, looksLikeLarkId, } from "./src/utils.js";
28
29
  export { probeLark } from "./src/probe.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAgBlC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,uBAAuB,EAAE;IACvC,QAAQ,CAAC,GAAsB;QAC7B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,wCAAwC;QACxC,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AA4BvB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,uBAAuB,EAAE;IACvC,QAAQ,CAAC,GAAsB;QAC7B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,wCAAwC;QACxC,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Lark/Feishu Document Tools
3
+ *
4
+ * Functions for creating, reading, updating, and managing Lark documents.
5
+ * Supports markdown-to-document conversion with image handling.
6
+ */
7
+ import type { ResolvedLarkAccount } from "./types.js";
8
+ export type LarkBlockType = number;
9
+ export type LarkDocumentInfo = {
10
+ title?: string;
11
+ content?: string;
12
+ revision_id?: string;
13
+ block_count: number;
14
+ block_types: Record<string, number>;
15
+ hint?: string;
16
+ };
17
+ export type LarkCreateDocResult = {
18
+ document_id?: string;
19
+ title?: string;
20
+ url: string;
21
+ };
22
+ export type LarkWriteDocResult = {
23
+ success: boolean;
24
+ blocks_deleted: number;
25
+ blocks_added: number;
26
+ images_processed: number;
27
+ warning?: string;
28
+ };
29
+ export type LarkAppendDocResult = {
30
+ success: boolean;
31
+ blocks_added: number;
32
+ images_processed: number;
33
+ block_ids: string[];
34
+ warning?: string;
35
+ };
36
+ export type LarkBlock = {
37
+ block_id?: string;
38
+ block_type: number;
39
+ parent_id?: string;
40
+ [key: string]: unknown;
41
+ };
42
+ export type LarkListBlocksResult = {
43
+ blocks: LarkBlock[];
44
+ };
45
+ export type LarkGetBlockResult = {
46
+ block: LarkBlock | undefined;
47
+ };
48
+ export type LarkFolderItem = {
49
+ token: string;
50
+ name: string;
51
+ type: string;
52
+ url: string;
53
+ };
54
+ export type LarkListFolderResult = {
55
+ files: LarkFolderItem[];
56
+ };
57
+ export type LarkAppScopeResult = {
58
+ granted: Array<{
59
+ name: string;
60
+ type: string;
61
+ }>;
62
+ pending: Array<{
63
+ name: string;
64
+ type: string;
65
+ }>;
66
+ summary: string;
67
+ };
68
+ /**
69
+ * Read a Lark document's content and metadata.
70
+ *
71
+ * @param account - The Lark account to use
72
+ * @param docToken - The document token (from URL /docx/XXX)
73
+ * @returns Document info with title, content, block counts
74
+ */
75
+ export declare function readDocumentLark(account: ResolvedLarkAccount, docToken: string): Promise<LarkDocumentInfo>;
76
+ /**
77
+ * Create a new Lark document.
78
+ *
79
+ * @param account - The Lark account to use
80
+ * @param title - Document title
81
+ * @param folderToken - Optional parent folder token
82
+ * @returns Created document info with ID and URL
83
+ */
84
+ export declare function createDocumentLark(account: ResolvedLarkAccount, title: string, folderToken?: string): Promise<LarkCreateDocResult>;
85
+ /**
86
+ * Write markdown content to a Lark document (replaces all content).
87
+ *
88
+ * @param account - The Lark account to use
89
+ * @param docToken - Document token
90
+ * @param markdown - Markdown content to write
91
+ * @returns Write result with block counts and warnings
92
+ */
93
+ export declare function writeDocumentLark(account: ResolvedLarkAccount, docToken: string, markdown: string): Promise<LarkWriteDocResult>;
94
+ /**
95
+ * Append markdown content to a Lark document.
96
+ *
97
+ * @param account - The Lark account to use
98
+ * @param docToken - Document token
99
+ * @param markdown - Markdown content to append
100
+ * @returns Append result with block counts
101
+ */
102
+ export declare function appendDocumentLark(account: ResolvedLarkAccount, docToken: string, markdown: string): Promise<LarkAppendDocResult>;
103
+ /**
104
+ * Update a single text block in a document.
105
+ *
106
+ * @param account - The Lark account to use
107
+ * @param docToken - Document token
108
+ * @param blockId - Block ID to update
109
+ * @param content - New text content
110
+ * @returns Update result
111
+ */
112
+ export declare function updateBlockLark(account: ResolvedLarkAccount, docToken: string, blockId: string, content: string): Promise<{
113
+ success: boolean;
114
+ block_id: string;
115
+ }>;
116
+ /**
117
+ * Delete a block from a document.
118
+ *
119
+ * @param account - The Lark account to use
120
+ * @param docToken - Document token
121
+ * @param blockId - Block ID to delete
122
+ * @returns Delete result
123
+ */
124
+ export declare function deleteBlockLark(account: ResolvedLarkAccount, docToken: string, blockId: string): Promise<{
125
+ success: boolean;
126
+ deleted_block_id: string;
127
+ }>;
128
+ /**
129
+ * List all blocks in a document.
130
+ *
131
+ * @param account - The Lark account to use
132
+ * @param docToken - Document token
133
+ * @returns List of all blocks with full data
134
+ */
135
+ export declare function listBlocksLark(account: ResolvedLarkAccount, docToken: string): Promise<LarkListBlocksResult>;
136
+ /**
137
+ * Get a single block's details.
138
+ *
139
+ * @param account - The Lark account to use
140
+ * @param docToken - Document token
141
+ * @param blockId - Block ID
142
+ * @returns Block details
143
+ */
144
+ export declare function getBlockLark(account: ResolvedLarkAccount, docToken: string, blockId: string): Promise<LarkGetBlockResult>;
145
+ /**
146
+ * List files in a folder.
147
+ *
148
+ * @param account - The Lark account to use
149
+ * @param folderToken - Folder token
150
+ * @returns List of files in folder
151
+ */
152
+ export declare function listFolderLark(account: ResolvedLarkAccount, folderToken: string): Promise<LarkListFolderResult>;
153
+ /**
154
+ * List application scopes (permissions).
155
+ *
156
+ * @param account - The Lark account to use
157
+ * @returns List of granted and pending scopes
158
+ */
159
+ export declare function listAppScopesLark(account: ResolvedLarkAccount): Promise<LarkAppScopeResult>;
@@ -0,0 +1,462 @@
1
+ /**
2
+ * Lark/Feishu Document Tools
3
+ *
4
+ * Functions for creating, reading, updating, and managing Lark documents.
5
+ * Supports markdown-to-document conversion with image handling.
6
+ */
7
+ import { createLarkClient } from "./client.js";
8
+ import { Readable } from "stream";
9
+ // ============ Constants ============
10
+ const BLOCK_TYPE_NAMES = {
11
+ 1: "Page",
12
+ 2: "Text",
13
+ 3: "Heading1",
14
+ 4: "Heading2",
15
+ 5: "Heading3",
16
+ 12: "Bullet",
17
+ 13: "Ordered",
18
+ 14: "Code",
19
+ 15: "Quote",
20
+ 17: "Todo",
21
+ 18: "Bitable",
22
+ 21: "Diagram",
23
+ 22: "Divider",
24
+ 23: "File",
25
+ 27: "Image",
26
+ 30: "Sheet",
27
+ 31: "Table",
28
+ 32: "TableCell",
29
+ };
30
+ // Block types that cannot be created via documentBlockChildren.create API
31
+ const UNSUPPORTED_CREATE_TYPES = new Set([
32
+ 31, // Table - must use different API or workaround
33
+ 32, // TableCell - child of Table
34
+ ]);
35
+ // Block types that are NOT included in rawContent (plain text) output
36
+ const STRUCTURED_BLOCK_TYPES = new Set([14, 18, 21, 23, 27, 30, 31, 32]);
37
+ // ============ Helper Functions ============
38
+ function extractBlockPreview(block) {
39
+ const elements = block.text?.elements ??
40
+ block.heading1?.elements ??
41
+ block.heading2?.elements ??
42
+ block.heading3?.elements ??
43
+ [];
44
+ return elements
45
+ .filter((e) => e.text_run)
46
+ .map((e) => e.text_run.content)
47
+ .join("")
48
+ .slice(0, 50);
49
+ }
50
+ /** Extract image URLs from markdown content */
51
+ function extractImageUrls(markdown) {
52
+ const regex = /!\[[^\]]*\]\(([^)]+)\)/g;
53
+ const urls = [];
54
+ let match;
55
+ while ((match = regex.exec(markdown)) !== null) {
56
+ const url = match[1].trim();
57
+ // Only collect http(s) URLs, not file paths
58
+ if (url.startsWith("http://") || url.startsWith("https://")) {
59
+ urls.push(url);
60
+ }
61
+ }
62
+ return urls;
63
+ }
64
+ /** Clean blocks for insertion (remove unsupported types and read-only fields) */
65
+ function cleanBlocksForInsert(blocks) {
66
+ const skipped = [];
67
+ const cleaned = blocks
68
+ .filter((block) => {
69
+ if (UNSUPPORTED_CREATE_TYPES.has(block.block_type)) {
70
+ const typeName = BLOCK_TYPE_NAMES[block.block_type] || `type_${block.block_type}`;
71
+ skipped.push(typeName);
72
+ return false;
73
+ }
74
+ return true;
75
+ })
76
+ .map((block) => {
77
+ // Remove any read-only fields that might slip through
78
+ if (block.block_type === 31 && block.table?.merge_info) {
79
+ const { merge_info, ...tableRest } = block.table;
80
+ return { ...block, table: tableRest };
81
+ }
82
+ return block;
83
+ });
84
+ return { cleaned, skipped };
85
+ }
86
+ /** Convert markdown to Lark blocks using the Convert API */
87
+ async function convertMarkdown(client, markdown) {
88
+ const res = await client.docx.document.convert({
89
+ data: { content_type: "markdown", content: markdown },
90
+ });
91
+ if (res.code !== 0)
92
+ throw new Error(res.msg);
93
+ return {
94
+ blocks: res.data?.blocks ?? [],
95
+ firstLevelBlockIds: res.data?.first_level_block_ids ?? [],
96
+ };
97
+ }
98
+ /** Insert blocks as children of a parent block */
99
+ async function insertBlocks(client, docToken, blocks, parentBlockId) {
100
+ const { cleaned, skipped } = cleanBlocksForInsert(blocks);
101
+ const blockId = parentBlockId ?? docToken;
102
+ if (cleaned.length === 0) {
103
+ return { children: [], skipped };
104
+ }
105
+ const res = await client.docx.documentBlockChildren.create({
106
+ path: { document_id: docToken, block_id: blockId },
107
+ data: { children: cleaned },
108
+ });
109
+ if (res.code !== 0)
110
+ throw new Error(res.msg);
111
+ return { children: res.data?.children ?? [], skipped };
112
+ }
113
+ /** Delete all child blocks from a parent */
114
+ async function clearDocumentContent(client, docToken) {
115
+ const existing = await client.docx.documentBlock.list({
116
+ path: { document_id: docToken },
117
+ });
118
+ if (existing.code !== 0)
119
+ throw new Error(existing.msg);
120
+ const childIds = existing.data?.items
121
+ ?.filter((b) => b.parent_id === docToken && b.block_type !== 1)
122
+ .map((b) => b.block_id) ?? [];
123
+ if (childIds.length > 0) {
124
+ const res = await client.docx.documentBlockChildren.batchDelete({
125
+ path: { document_id: docToken, block_id: docToken },
126
+ data: { start_index: 0, end_index: childIds.length },
127
+ });
128
+ if (res.code !== 0)
129
+ throw new Error(res.msg);
130
+ }
131
+ return childIds.length;
132
+ }
133
+ /** Upload image to Lark drive for docx */
134
+ async function uploadImageToDocx(client, blockId, imageBuffer, fileName) {
135
+ const res = await client.drive.media.uploadAll({
136
+ data: {
137
+ file_name: fileName,
138
+ parent_type: "docx_image",
139
+ parent_node: blockId,
140
+ size: imageBuffer.length,
141
+ file: Readable.from(imageBuffer),
142
+ },
143
+ });
144
+ const fileToken = res?.file_token;
145
+ if (!fileToken) {
146
+ throw new Error("Image upload failed: no file_token returned");
147
+ }
148
+ return fileToken;
149
+ }
150
+ /** Download image from URL */
151
+ async function downloadImage(url) {
152
+ const response = await fetch(url);
153
+ if (!response.ok) {
154
+ throw new Error(`Failed to download image: ${response.status} ${response.statusText}`);
155
+ }
156
+ return Buffer.from(await response.arrayBuffer());
157
+ }
158
+ /** Process images in markdown: download from URL, upload to Lark, update blocks */
159
+ async function processImages(client, docToken, markdown, insertedBlocks) {
160
+ const imageUrls = extractImageUrls(markdown);
161
+ if (imageUrls.length === 0)
162
+ return 0;
163
+ // Find Image blocks (block_type 27)
164
+ const imageBlocks = insertedBlocks.filter((b) => b.block_type === 27);
165
+ let processed = 0;
166
+ for (let i = 0; i < Math.min(imageUrls.length, imageBlocks.length); i++) {
167
+ const url = imageUrls[i];
168
+ const blockId = imageBlocks[i].block_id;
169
+ try {
170
+ // Download image from URL
171
+ const buffer = await downloadImage(url);
172
+ // Generate filename from URL
173
+ const urlPath = new URL(url).pathname;
174
+ const fileName = urlPath.split("/").pop() || `image_${i}.png`;
175
+ // Upload to Lark
176
+ const fileToken = await uploadImageToDocx(client, blockId, buffer, fileName);
177
+ // Update the image block
178
+ await client.docx.documentBlock.patch({
179
+ path: { document_id: docToken, block_id: blockId },
180
+ data: {
181
+ replace_image: { token: fileToken },
182
+ },
183
+ });
184
+ processed++;
185
+ }
186
+ catch (err) {
187
+ // Log but continue processing other images
188
+ console.error(`Failed to process image ${url}:`, err);
189
+ }
190
+ }
191
+ return processed;
192
+ }
193
+ // ============ Public API Functions ============
194
+ /**
195
+ * Read a Lark document's content and metadata.
196
+ *
197
+ * @param account - The Lark account to use
198
+ * @param docToken - The document token (from URL /docx/XXX)
199
+ * @returns Document info with title, content, block counts
200
+ */
201
+ export async function readDocumentLark(account, docToken) {
202
+ const client = createLarkClient(account);
203
+ const [contentRes, infoRes, blocksRes] = await Promise.all([
204
+ client.docx.document.rawContent({ path: { document_id: docToken } }),
205
+ client.docx.document.get({ path: { document_id: docToken } }),
206
+ client.docx.documentBlock.list({ path: { document_id: docToken } }),
207
+ ]);
208
+ if (contentRes.code !== 0)
209
+ throw new Error(contentRes.msg);
210
+ const blocks = blocksRes.data?.items ?? [];
211
+ const blockCounts = {};
212
+ const structuredTypes = [];
213
+ for (const b of blocks) {
214
+ const type = b.block_type ?? 0;
215
+ const name = BLOCK_TYPE_NAMES[type] || `type_${type}`;
216
+ blockCounts[name] = (blockCounts[name] || 0) + 1;
217
+ // Track structured types that need list_blocks to read
218
+ if (STRUCTURED_BLOCK_TYPES.has(type) && !structuredTypes.includes(name)) {
219
+ structuredTypes.push(name);
220
+ }
221
+ }
222
+ // Build hint if there are structured blocks
223
+ let hint;
224
+ if (structuredTypes.length > 0) {
225
+ hint = `This document contains ${structuredTypes.join(", ")} which are NOT included in the plain text above. Use listBlocksLark to get full content.`;
226
+ }
227
+ return {
228
+ title: infoRes.data?.document?.title,
229
+ content: contentRes.data?.content,
230
+ revision_id: infoRes.data?.document?.revision_id,
231
+ block_count: blocks.length,
232
+ block_types: blockCounts,
233
+ ...(hint && { hint }),
234
+ };
235
+ }
236
+ /**
237
+ * Create a new Lark document.
238
+ *
239
+ * @param account - The Lark account to use
240
+ * @param title - Document title
241
+ * @param folderToken - Optional parent folder token
242
+ * @returns Created document info with ID and URL
243
+ */
244
+ export async function createDocumentLark(account, title, folderToken) {
245
+ const client = createLarkClient(account);
246
+ const res = await client.docx.document.create({
247
+ data: { title, folder_token: folderToken },
248
+ });
249
+ if (res.code !== 0)
250
+ throw new Error(res.msg);
251
+ const doc = res.data?.document;
252
+ // Build URL based on domain
253
+ const baseUrl = account.domain === "lark" ? "https://larksuite.com" : "https://feishu.cn";
254
+ return {
255
+ document_id: doc?.document_id,
256
+ title: doc?.title,
257
+ url: `${baseUrl}/docx/${doc?.document_id}`,
258
+ };
259
+ }
260
+ /**
261
+ * Write markdown content to a Lark document (replaces all content).
262
+ *
263
+ * @param account - The Lark account to use
264
+ * @param docToken - Document token
265
+ * @param markdown - Markdown content to write
266
+ * @returns Write result with block counts and warnings
267
+ */
268
+ export async function writeDocumentLark(account, docToken, markdown) {
269
+ const client = createLarkClient(account);
270
+ // 1. Clear existing content
271
+ const deleted = await clearDocumentContent(client, docToken);
272
+ // 2. Convert markdown to blocks
273
+ const { blocks } = await convertMarkdown(client, markdown);
274
+ if (blocks.length === 0) {
275
+ return { success: true, blocks_deleted: deleted, blocks_added: 0, images_processed: 0 };
276
+ }
277
+ // 3. Insert new blocks (unsupported types like Table are filtered)
278
+ const { children: inserted, skipped } = await insertBlocks(client, docToken, blocks);
279
+ // 4. Process images
280
+ const imagesProcessed = await processImages(client, docToken, markdown, inserted);
281
+ return {
282
+ success: true,
283
+ blocks_deleted: deleted,
284
+ blocks_added: inserted.length,
285
+ images_processed: imagesProcessed,
286
+ ...(skipped.length > 0 && {
287
+ warning: `Skipped unsupported block types: ${skipped.join(", ")}. Tables are not supported via this API.`,
288
+ }),
289
+ };
290
+ }
291
+ /**
292
+ * Append markdown content to a Lark document.
293
+ *
294
+ * @param account - The Lark account to use
295
+ * @param docToken - Document token
296
+ * @param markdown - Markdown content to append
297
+ * @returns Append result with block counts
298
+ */
299
+ export async function appendDocumentLark(account, docToken, markdown) {
300
+ const client = createLarkClient(account);
301
+ // 1. Convert markdown to blocks
302
+ const { blocks } = await convertMarkdown(client, markdown);
303
+ if (blocks.length === 0) {
304
+ throw new Error("Content is empty");
305
+ }
306
+ // 2. Insert blocks (unsupported types like Table are filtered)
307
+ const { children: inserted, skipped } = await insertBlocks(client, docToken, blocks);
308
+ // 3. Process images
309
+ const imagesProcessed = await processImages(client, docToken, markdown, inserted);
310
+ return {
311
+ success: true,
312
+ blocks_added: inserted.length,
313
+ images_processed: imagesProcessed,
314
+ block_ids: inserted.map((b) => b.block_id),
315
+ ...(skipped.length > 0 && {
316
+ warning: `Skipped unsupported block types: ${skipped.join(", ")}. Tables are not supported via this API.`,
317
+ }),
318
+ };
319
+ }
320
+ /**
321
+ * Update a single text block in a document.
322
+ *
323
+ * @param account - The Lark account to use
324
+ * @param docToken - Document token
325
+ * @param blockId - Block ID to update
326
+ * @param content - New text content
327
+ * @returns Update result
328
+ */
329
+ export async function updateBlockLark(account, docToken, blockId, content) {
330
+ const client = createLarkClient(account);
331
+ const blockInfo = await client.docx.documentBlock.get({
332
+ path: { document_id: docToken, block_id: blockId },
333
+ });
334
+ if (blockInfo.code !== 0)
335
+ throw new Error(blockInfo.msg);
336
+ const res = await client.docx.documentBlock.patch({
337
+ path: { document_id: docToken, block_id: blockId },
338
+ data: {
339
+ update_text_elements: {
340
+ elements: [{ text_run: { content } }],
341
+ },
342
+ },
343
+ });
344
+ if (res.code !== 0)
345
+ throw new Error(res.msg);
346
+ return { success: true, block_id: blockId };
347
+ }
348
+ /**
349
+ * Delete a block from a document.
350
+ *
351
+ * @param account - The Lark account to use
352
+ * @param docToken - Document token
353
+ * @param blockId - Block ID to delete
354
+ * @returns Delete result
355
+ */
356
+ export async function deleteBlockLark(account, docToken, blockId) {
357
+ const client = createLarkClient(account);
358
+ const blockInfo = await client.docx.documentBlock.get({
359
+ path: { document_id: docToken, block_id: blockId },
360
+ });
361
+ if (blockInfo.code !== 0)
362
+ throw new Error(blockInfo.msg);
363
+ const parentId = blockInfo.data?.block?.parent_id ?? docToken;
364
+ const children = await client.docx.documentBlockChildren.get({
365
+ path: { document_id: docToken, block_id: parentId },
366
+ });
367
+ if (children.code !== 0)
368
+ throw new Error(children.msg);
369
+ const items = children.data?.items ?? [];
370
+ const index = items.findIndex((item) => item.block_id === blockId);
371
+ if (index === -1)
372
+ throw new Error("Block not found");
373
+ const res = await client.docx.documentBlockChildren.batchDelete({
374
+ path: { document_id: docToken, block_id: parentId },
375
+ data: { start_index: index, end_index: index + 1 },
376
+ });
377
+ if (res.code !== 0)
378
+ throw new Error(res.msg);
379
+ return { success: true, deleted_block_id: blockId };
380
+ }
381
+ /**
382
+ * List all blocks in a document.
383
+ *
384
+ * @param account - The Lark account to use
385
+ * @param docToken - Document token
386
+ * @returns List of all blocks with full data
387
+ */
388
+ export async function listBlocksLark(account, docToken) {
389
+ const client = createLarkClient(account);
390
+ const res = await client.docx.documentBlock.list({
391
+ path: { document_id: docToken },
392
+ });
393
+ if (res.code !== 0)
394
+ throw new Error(res.msg);
395
+ // Return full block data for agent to parse
396
+ return {
397
+ blocks: res.data?.items ?? [],
398
+ };
399
+ }
400
+ /**
401
+ * Get a single block's details.
402
+ *
403
+ * @param account - The Lark account to use
404
+ * @param docToken - Document token
405
+ * @param blockId - Block ID
406
+ * @returns Block details
407
+ */
408
+ export async function getBlockLark(account, docToken, blockId) {
409
+ const client = createLarkClient(account);
410
+ const res = await client.docx.documentBlock.get({
411
+ path: { document_id: docToken, block_id: blockId },
412
+ });
413
+ if (res.code !== 0)
414
+ throw new Error(res.msg);
415
+ return {
416
+ block: res.data?.block,
417
+ };
418
+ }
419
+ /**
420
+ * List files in a folder.
421
+ *
422
+ * @param account - The Lark account to use
423
+ * @param folderToken - Folder token
424
+ * @returns List of files in folder
425
+ */
426
+ export async function listFolderLark(account, folderToken) {
427
+ const client = createLarkClient(account);
428
+ const res = await client.drive.file.list({
429
+ params: { folder_token: folderToken },
430
+ });
431
+ if (res.code !== 0)
432
+ throw new Error(res.msg);
433
+ return {
434
+ files: res.data?.files?.map((f) => ({
435
+ token: f.token,
436
+ name: f.name,
437
+ type: f.type,
438
+ url: f.url,
439
+ })) ?? [],
440
+ };
441
+ }
442
+ /**
443
+ * List application scopes (permissions).
444
+ *
445
+ * @param account - The Lark account to use
446
+ * @returns List of granted and pending scopes
447
+ */
448
+ export async function listAppScopesLark(account) {
449
+ const client = createLarkClient(account);
450
+ const res = await client.application.scope.list({});
451
+ if (res.code !== 0)
452
+ throw new Error(res.msg);
453
+ const scopes = res.data?.scopes ?? [];
454
+ const granted = scopes.filter((s) => s.grant_status === 1);
455
+ const pending = scopes.filter((s) => s.grant_status !== 1);
456
+ return {
457
+ granted: granted.map((s) => ({ name: s.scope_name, type: s.scope_type })),
458
+ pending: pending.map((s) => ({ name: s.scope_name, type: s.scope_type })),
459
+ summary: `${granted.length} granted, ${pending.length} pending`,
460
+ };
461
+ }
462
+ //# sourceMappingURL=docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/docx.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,14 @@
6
6
  */
7
7
  import type { ResolvedLarkAccount } from "./types.js";
8
8
  import type { MentionTarget } from "./mention.js";
9
+ /**
10
+ * Detect if text contains markdown elements that benefit from card rendering.
11
+ * Used by auto render mode to determine when to use interactive cards.
12
+ *
13
+ * @param text - Text content to check
14
+ * @returns true if text should use card rendering
15
+ */
16
+ export declare function shouldUseCard(text: string): boolean;
9
17
  export type LarkSendResult = {
10
18
  messageId: string;
11
19
  chatId: string;
package/dist/src/send.js CHANGED
@@ -7,6 +7,22 @@
7
7
  import { createLarkClient } from "./client.js";
8
8
  import { inferReceiveIdType, normalizeLarkTarget } from "./utils.js";
9
9
  import { buildMentionedCardContent } from "./mention.js";
10
+ /**
11
+ * Detect if text contains markdown elements that benefit from card rendering.
12
+ * Used by auto render mode to determine when to use interactive cards.
13
+ *
14
+ * @param text - Text content to check
15
+ * @returns true if text should use card rendering
16
+ */
17
+ export function shouldUseCard(text) {
18
+ // Code blocks (fenced)
19
+ if (/```[\s\S]*?```/.test(text))
20
+ return true;
21
+ // Tables (at least header + separator row with |)
22
+ if (/\|.+\|[\r\n]+\|[-:| ]+\|/.test(text))
23
+ return true;
24
+ return false;
25
+ }
10
26
  /**
11
27
  * Send a text message to Lark/Feishu.
12
28
  *
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/send.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xwang152/claw-lark",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "type": "module",
5
5
  "description": "Lark/Feishu channel plugin for OpenClaw with WebSocket and Webhook support",
6
6
  "license": "MIT",