bitfire-lark-mcp 1.0.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.
- package/CHANGELOG.md +73 -0
- package/LICENSE +9 -0
- package/README.md +217 -0
- package/README_ZH.md +214 -0
- package/dist/auth/config.d.ts +12 -0
- package/dist/auth/config.js +17 -0
- package/dist/auth/handler/handler-local.d.ts +21 -0
- package/dist/auth/handler/handler-local.js +123 -0
- package/dist/auth/handler/handler.d.ts +32 -0
- package/dist/auth/handler/handler.js +117 -0
- package/dist/auth/handler/index.d.ts +2 -0
- package/dist/auth/handler/index.js +18 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.js +20 -0
- package/dist/auth/provider/index.d.ts +3 -0
- package/dist/auth/provider/index.js +19 -0
- package/dist/auth/provider/oauth.d.ts +18 -0
- package/dist/auth/provider/oauth.js +147 -0
- package/dist/auth/provider/oidc.d.ts +18 -0
- package/dist/auth/provider/oidc.js +172 -0
- package/dist/auth/provider/types.d.ts +8 -0
- package/dist/auth/provider/types.js +2 -0
- package/dist/auth/store.d.ts +39 -0
- package/dist/auth/store.js +213 -0
- package/dist/auth/types.d.ts +13 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/utils/encryption.d.ts +7 -0
- package/dist/auth/utils/encryption.js +40 -0
- package/dist/auth/utils/index.d.ts +3 -0
- package/dist/auth/utils/index.js +19 -0
- package/dist/auth/utils/is-token-valid.d.ts +7 -0
- package/dist/auth/utils/is-token-valid.js +28 -0
- package/dist/auth/utils/pkce.d.ts +6 -0
- package/dist/auth/utils/pkce.js +20 -0
- package/dist/auth/utils/storage-manager.d.ts +17 -0
- package/dist/auth/utils/storage-manager.js +135 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/login-handler.d.ts +16 -0
- package/dist/cli/login-handler.js +142 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +122 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/mcp-server/index.d.ts +2 -0
- package/dist/mcp-server/index.js +18 -0
- package/dist/mcp-server/shared/index.d.ts +2 -0
- package/dist/mcp-server/shared/index.js +18 -0
- package/dist/mcp-server/shared/init.d.ts +10 -0
- package/dist/mcp-server/shared/init.js +121 -0
- package/dist/mcp-server/shared/types.d.ts +40 -0
- package/dist/mcp-server/shared/types.js +10 -0
- package/dist/mcp-server/transport/index.d.ts +3 -0
- package/dist/mcp-server/transport/index.js +19 -0
- package/dist/mcp-server/transport/sse.d.ts +2 -0
- package/dist/mcp-server/transport/sse.js +75 -0
- package/dist/mcp-server/transport/stdio.d.ts +2 -0
- package/dist/mcp-server/transport/stdio.js +36 -0
- package/dist/mcp-server/transport/streamable.d.ts +2 -0
- package/dist/mcp-server/transport/streamable.js +86 -0
- package/dist/mcp-server/transport/utils.d.ts +16 -0
- package/dist/mcp-server/transport/utils.js +34 -0
- package/dist/mcp-tool/constants.d.ts +49 -0
- package/dist/mcp-tool/constants.js +118 -0
- package/dist/mcp-tool/document-tool/index.d.ts +1 -0
- package/dist/mcp-tool/document-tool/index.js +17 -0
- package/dist/mcp-tool/document-tool/read-full-content/extract-text.d.ts +53 -0
- package/dist/mcp-tool/document-tool/read-full-content/extract-text.js +109 -0
- package/dist/mcp-tool/document-tool/read-full-content/index.d.ts +3 -0
- package/dist/mcp-tool/document-tool/read-full-content/index.js +9 -0
- package/dist/mcp-tool/document-tool/read-full-content/reader.d.ts +12 -0
- package/dist/mcp-tool/document-tool/read-full-content/reader.js +283 -0
- package/dist/mcp-tool/document-tool/read-full-content/types.d.ts +78 -0
- package/dist/mcp-tool/document-tool/read-full-content/types.js +2 -0
- package/dist/mcp-tool/document-tool/read-full-content/whiteboard.d.ts +53 -0
- package/dist/mcp-tool/document-tool/read-full-content/whiteboard.js +174 -0
- package/dist/mcp-tool/document-tool/recall/index.d.ts +2 -0
- package/dist/mcp-tool/document-tool/recall/index.js +39 -0
- package/dist/mcp-tool/document-tool/recall/request.d.ts +2 -0
- package/dist/mcp-tool/document-tool/recall/request.js +25 -0
- package/dist/mcp-tool/document-tool/recall/type.d.ts +19 -0
- package/dist/mcp-tool/document-tool/recall/type.js +2 -0
- package/dist/mcp-tool/index.d.ts +5 -0
- package/dist/mcp-tool/index.js +21 -0
- package/dist/mcp-tool/mcp-tool.d.ts +52 -0
- package/dist/mcp-tool/mcp-tool.js +198 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/builtin.d.ts +6 -0
- package/dist/mcp-tool/tools/en/builtin-tools/docx/builtin.js +303 -0
- package/dist/mcp-tool/tools/en/builtin-tools/im/buildin.d.ts +4 -0
- package/dist/mcp-tool/tools/en/builtin-tools/im/buildin.js +63 -0
- package/dist/mcp-tool/tools/en/builtin-tools/index.d.ts +4 -0
- package/dist/mcp-tool/tools/en/builtin-tools/index.js +6 -0
- package/dist/mcp-tool/tools/en/gen-tools/index.d.ts +113 -0
- package/dist/mcp-tool/tools/en/gen-tools/index.js +127 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/acs_v1.d.ts +562 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/acs_v1.js +264 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/admin_v1.d.ts +912 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/admin_v1.js +449 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/aily_v1.d.ts +1213 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/aily_v1.js +560 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/apaas_v1.d.ts +2530 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/apaas_v1.js +949 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v5.d.ts +80 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v5.js +53 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v6.d.ts +1008 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/application_v6.js +775 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/approval_v4.d.ts +3928 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/approval_v4.js +1602 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/attendance_v1.d.ts +6043 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/attendance_v1.js +1857 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/auth_v3.d.ts +151 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/auth_v3.js +71 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/authen_v1.d.ts +26 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/authen_v1.js +17 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/baike_v1.d.ts +2174 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/baike_v1.js +594 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/base_v2.d.ts +755 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/base_v2.js +234 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/bitable_v1.d.ts +3541 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/bitable_v1.js +1786 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/board_v1.d.ts +40 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/board_v1.js +18 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/calendar_v4.d.ts +2075 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/calendar_v4.js +1594 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/cardkit_v1.d.ts +528 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/cardkit_v1.js +260 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/compensation_v1.d.ts +189 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/compensation_v1.js +132 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/contact_v3.d.ts +4274 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/contact_v3.js +2583 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v1.d.ts +16873 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v1.js +5045 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v2.d.ts +29387 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/corehr_v2.js +7787 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/directory_v1.d.ts +4274 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/directory_v1.js +1367 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docs_v1.d.ts +58 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docs_v1.js +28 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docx_v1.d.ts +93466 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/docx_v1.js +14350 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v1.d.ts +3251 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v1.js +1422 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v2.d.ts +174 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/drive_v2.js +117 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/ehr_v1.d.ts +86 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/ehr_v1.js +48 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/event_v1.d.ts +44 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/event_v1.js +17 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/helpdesk_v1.d.ts +733 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/helpdesk_v1.js +285 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v1.d.ts +10076 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v1.js +6065 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v2.d.ts +158 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/hire_v2.js +61 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/human_authentication_v1.d.ts +70 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/human_authentication_v1.js +27 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v1.d.ts +3043 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v1.js +1869 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v2.d.ts +2176 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/im_v2.js +460 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/lingo_v1.d.ts +2301 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/lingo_v1.js +669 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mail_v1.d.ts +2462 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mail_v1.js +1655 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v1.d.ts +104 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v1.js +45 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v3.d.ts +329 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/mdm_v3.js +78 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/minutes_v1.d.ts +92 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/minutes_v1.js +62 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/moments_v1.d.ts +52 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/moments_v1.js +24 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/okr_v1.d.ts +1628 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/okr_v1.js +434 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/optical_char_recognition_v1.d.ts +38 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/optical_char_recognition_v1.js +17 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/passport_v1.d.ts +131 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/passport_v1.js +59 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/payroll_v1.d.ts +333 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/payroll_v1.js +176 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v1.d.ts +309 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v1.js +178 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v2.d.ts +1177 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/performance_v2.js +559 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/personal_settings_v1.d.ts +640 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/personal_settings_v1.js +303 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/report_v1.d.ts +192 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/report_v1.js +71 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/search_v2.d.ts +1695 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/search_v2.js +446 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/security_and_compliance_v1.d.ts +68 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/security_and_compliance_v1.js +32 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v3.d.ts +979 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/sheets_v3.js +721 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/speech_to_text_v1.d.ts +225 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/speech_to_text_v1.js +65 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v1.d.ts +1161 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v1.js +672 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v2.d.ts +6051 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/task_v2.js +1970 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/tenant_v2.d.ts +31 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/tenant_v2.js +24 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/translation_v1.d.ts +80 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/translation_v1.js +37 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/trust_party_v1.d.ts +182 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/trust_party_v1.js +141 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/vc_v1.d.ts +5725 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/vc_v1.js +1751 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/verification_v1.d.ts +21 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/verification_v1.js +14 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v1.d.ts +72 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v1.js +19 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v2.d.ts +843 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/wiki_v2.js +381 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/workplace_v1.d.ts +116 -0
- package/dist/mcp-tool/tools/en/gen-tools/zod/workplace_v1.js +77 -0
- package/dist/mcp-tool/tools/index.d.ts +104 -0
- package/dist/mcp-tool/tools/index.js +9 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/builtin.d.ts +6 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/docx/builtin.js +282 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/im/buildin.d.ts +4 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/im/buildin.js +63 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/index.d.ts +4 -0
- package/dist/mcp-tool/tools/zh/builtin-tools/index.js +6 -0
- package/dist/mcp-tool/tools/zh/gen-tools/index.d.ts +113 -0
- package/dist/mcp-tool/tools/zh/gen-tools/index.js +127 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/acs_v1.d.ts +562 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/acs_v1.js +277 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/admin_v1.d.ts +912 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/admin_v1.js +430 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/aily_v1.d.ts +1213 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/aily_v1.js +541 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/apaas_v1.d.ts +2530 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/apaas_v1.js +885 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v5.d.ts +80 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v5.js +59 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v6.d.ts +1007 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/application_v6.js +721 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/approval_v4.d.ts +3928 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/approval_v4.js +1532 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/attendance_v1.d.ts +6043 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/attendance_v1.js +1620 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/auth_v3.d.ts +151 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/auth_v3.js +87 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/authen_v1.d.ts +26 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/authen_v1.js +17 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/baike_v1.d.ts +2174 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/baike_v1.js +574 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/base_v2.d.ts +755 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/base_v2.js +270 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/bitable_v1.d.ts +3541 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/bitable_v1.js +1864 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/board_v1.d.ts +40 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/board_v1.js +18 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/calendar_v4.d.ts +2075 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/calendar_v4.js +1533 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/cardkit_v1.d.ts +528 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/cardkit_v1.js +248 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/compensation_v1.d.ts +189 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/compensation_v1.js +130 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/contact_v3.d.ts +4274 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/contact_v3.js +2394 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v1.d.ts +16957 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v1.js +4753 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v2.d.ts +29869 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/corehr_v2.js +7902 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/directory_v1.d.ts +4324 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/directory_v1.js +1340 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docs_v1.d.ts +58 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docs_v1.js +26 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docx_v1.d.ts +116719 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/docx_v1.js +14949 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v1.d.ts +3251 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v1.js +1395 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v2.d.ts +174 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/drive_v2.js +115 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/ehr_v1.d.ts +86 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/ehr_v1.js +48 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/event_v1.d.ts +44 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/event_v1.js +25 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/helpdesk_v1.d.ts +733 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/helpdesk_v1.js +279 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v1.d.ts +10085 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v1.js +5787 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v2.d.ts +158 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/hire_v2.js +64 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/human_authentication_v1.d.ts +70 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/human_authentication_v1.js +27 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v1.d.ts +3043 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v1.js +1812 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v2.d.ts +2176 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/im_v2.js +454 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/lingo_v1.d.ts +2301 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/lingo_v1.js +650 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mail_v1.d.ts +2465 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mail_v1.js +1467 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v1.d.ts +104 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v1.js +45 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v3.d.ts +329 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/mdm_v3.js +76 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/minutes_v1.d.ts +92 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/minutes_v1.js +62 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/moments_v1.d.ts +52 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/moments_v1.js +20 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/okr_v1.d.ts +1664 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/okr_v1.js +455 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/optical_char_recognition_v1.d.ts +38 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/optical_char_recognition_v1.js +17 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/passport_v1.d.ts +131 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/passport_v1.js +53 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/payroll_v1.d.ts +609 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/payroll_v1.js +321 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v1.d.ts +309 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v1.js +165 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v2.d.ts +1177 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/performance_v2.js +525 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/personal_settings_v1.d.ts +640 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/personal_settings_v1.js +295 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/report_v1.d.ts +194 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/report_v1.js +72 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/search_v2.d.ts +1695 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/search_v2.js +556 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/security_and_compliance_v1.d.ts +68 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/security_and_compliance_v1.js +32 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v3.d.ts +979 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/sheets_v3.js +821 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/speech_to_text_v1.d.ts +225 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/speech_to_text_v1.js +65 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v1.d.ts +1161 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v1.js +647 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v2.d.ts +6077 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/task_v2.js +1894 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/tenant_v2.d.ts +31 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/tenant_v2.js +24 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/translation_v1.d.ts +80 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/translation_v1.js +37 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/trust_party_v1.d.ts +182 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/trust_party_v1.js +137 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/vc_v1.d.ts +5725 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/vc_v1.js +1640 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/verification_v1.d.ts +21 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/verification_v1.js +14 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v1.d.ts +72 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v1.js +34 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v2.d.ts +843 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/wiki_v2.js +376 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/workplace_v1.d.ts +116 -0
- package/dist/mcp-tool/tools/zh/gen-tools/zod/workplace_v1.js +77 -0
- package/dist/mcp-tool/types/index.d.ts +53 -0
- package/dist/mcp-tool/types/index.js +9 -0
- package/dist/mcp-tool/utils/case-transf.d.ts +2 -0
- package/dist/mcp-tool/utils/case-transf.js +15 -0
- package/dist/mcp-tool/utils/filter-tools.d.ts +2 -0
- package/dist/mcp-tool/utils/filter-tools.js +27 -0
- package/dist/mcp-tool/utils/get-should-use-uat.d.ts +2 -0
- package/dist/mcp-tool/utils/get-should-use-uat.js +18 -0
- package/dist/mcp-tool/utils/handler.d.ts +2 -0
- package/dist/mcp-tool/utils/handler.js +92 -0
- package/dist/mcp-tool/utils/index.d.ts +4 -0
- package/dist/mcp-tool/utils/index.js +20 -0
- package/dist/utils/clean-env-args.d.ts +1 -0
- package/dist/utils/clean-env-args.js +12 -0
- package/dist/utils/constants.d.ts +18 -0
- package/dist/utils/constants.js +35 -0
- package/dist/utils/http-instance.d.ts +2 -0
- package/dist/utils/http-instance.js +21 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.js +97 -0
- package/dist/utils/noop.d.ts +1 -0
- package/dist/utils/noop.js +6 -0
- package/dist/utils/parser-string-array.d.ts +1 -0
- package/dist/utils/parser-string-array.js +13 -0
- package/dist/utils/safe-json-parse.d.ts +1 -0
- package/dist/utils/safe-json-parse.js +14 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +52 -0
- package/docs/development/mcp-develop-and-publish.md +273 -0
- package/docs/examples/read-wiki-with-board.md +114 -0
- package/docs/examples/wiki-board-architecture-summary.md +88 -0
- package/docs/recall-mcp/README.md +137 -0
- package/docs/recall-mcp/README_ZH.md +137 -0
- package/docs/reference/cli/cli-zh.md +92 -0
- package/docs/reference/cli/cli.md +92 -0
- package/docs/reference/tool-presets/presets-zh.md +122 -0
- package/docs/reference/tool-presets/presets.md +122 -0
- package/docs/reference/tool-presets/tools-en.md +1516 -0
- package/docs/reference/tool-presets/tools-zh.md +1533 -0
- package/docs/troubleshooting/faq-zh.md +67 -0
- package/docs/troubleshooting/faq.md +67 -0
- package/docs/usage/bitfire-lark-mcp-setup.md +119 -0
- package/docs/usage/configuration/configuration-zh.md +344 -0
- package/docs/usage/configuration/configuration.md +344 -0
- package/docs/usage/docker/docker-zh.md +101 -0
- package/docs/usage/docker/docker.md +106 -0
- package/package.json +64 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.fetchWhiteboardNodes = fetchWhiteboardNodes;
|
|
37
|
+
exports.formatWhiteboardNodes = formatWhiteboardNodes;
|
|
38
|
+
const lark = __importStar(require("@larksuiteoapi/node-sdk"));
|
|
39
|
+
const BOARD_NODES_PAGE_SIZE = 100;
|
|
40
|
+
/**
|
|
41
|
+
* 拉取画板内所有节点(分页)
|
|
42
|
+
*/
|
|
43
|
+
async function fetchWhiteboardNodes(client, whiteboardId, options) {
|
|
44
|
+
var _a, _b, _c, _d;
|
|
45
|
+
const items = [];
|
|
46
|
+
let pageToken;
|
|
47
|
+
const baseUrl = `/open-apis/board/v1/whiteboards/${encodeURIComponent(whiteboardId)}/nodes`;
|
|
48
|
+
const doRequest = (token) => {
|
|
49
|
+
const query = new URLSearchParams({ page_size: String(BOARD_NODES_PAGE_SIZE) });
|
|
50
|
+
if (token)
|
|
51
|
+
query.set('page_token', token);
|
|
52
|
+
const url = `${baseUrl}?${query.toString()}`;
|
|
53
|
+
const params = { method: 'GET', url };
|
|
54
|
+
return options.useUAT && options.userAccessToken
|
|
55
|
+
? client.request(params, lark.withUserAccessToken(options.userAccessToken))
|
|
56
|
+
: client.request(params);
|
|
57
|
+
};
|
|
58
|
+
try {
|
|
59
|
+
do {
|
|
60
|
+
const res = await doRequest(pageToken);
|
|
61
|
+
const data = (_a = res === null || res === void 0 ? void 0 : res.data) !== null && _a !== void 0 ? _a : res;
|
|
62
|
+
const batch = (_d = (_c = (_b = data.items) !== null && _b !== void 0 ? _b : data.nodes) !== null && _c !== void 0 ? _c : data.node_list) !== null && _d !== void 0 ? _d : [];
|
|
63
|
+
if (batch === null || batch === void 0 ? void 0 : batch.length)
|
|
64
|
+
items.push(...batch);
|
|
65
|
+
pageToken = data.has_more ? data.page_token : undefined;
|
|
66
|
+
} while (pageToken);
|
|
67
|
+
}
|
|
68
|
+
catch (_e) {
|
|
69
|
+
return items;
|
|
70
|
+
}
|
|
71
|
+
return items;
|
|
72
|
+
}
|
|
73
|
+
/** 从节点中提取可读文本(多字段 + 深度扫描,便于流程图/状态图) */
|
|
74
|
+
function nodeToText(node) {
|
|
75
|
+
var _a, _b, _c, _d;
|
|
76
|
+
const parts = [];
|
|
77
|
+
if ((_b = (_a = node.text) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.length) {
|
|
78
|
+
parts.push(node.text.elements.map((el) => { var _a; return (_a = el.content) !== null && _a !== void 0 ? _a : ''; }).join(''));
|
|
79
|
+
}
|
|
80
|
+
if (typeof node.content === 'string' && node.content.trim())
|
|
81
|
+
parts.push(node.content.trim());
|
|
82
|
+
if (typeof node.label === 'string' && node.label.trim())
|
|
83
|
+
parts.push(node.label.trim());
|
|
84
|
+
if (typeof node.title === 'string' && node.title.trim())
|
|
85
|
+
parts.push(node.title.trim());
|
|
86
|
+
if (typeof node.name === 'string' && node.name.trim())
|
|
87
|
+
parts.push(node.name.trim());
|
|
88
|
+
if (typeof node.body === 'string' && node.body.trim())
|
|
89
|
+
parts.push(node.body.trim());
|
|
90
|
+
if (typeof node.description === 'string' && node.description.trim())
|
|
91
|
+
parts.push(node.description.trim());
|
|
92
|
+
if (node.shape) {
|
|
93
|
+
if (typeof node.shape.text === 'string' && node.shape.text.trim())
|
|
94
|
+
parts.push(node.shape.text.trim());
|
|
95
|
+
if (typeof node.shape.label === 'string' && node.shape.label.trim())
|
|
96
|
+
parts.push(node.shape.label.trim());
|
|
97
|
+
}
|
|
98
|
+
if (Array.isArray(node.nodes)) {
|
|
99
|
+
for (const n of node.nodes) {
|
|
100
|
+
const t = oneLineText((_d = (_c = n.label) !== null && _c !== void 0 ? _c : n.text) !== null && _d !== void 0 ? _d : n.content);
|
|
101
|
+
if (t)
|
|
102
|
+
parts.push(t);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (Array.isArray(node.edges)) {
|
|
106
|
+
for (const e of node.edges) {
|
|
107
|
+
const t = typeof e.label === 'string' ? e.label.trim() : '';
|
|
108
|
+
if (t)
|
|
109
|
+
parts.push(t);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (parts.length)
|
|
113
|
+
return parts.join(' ');
|
|
114
|
+
const deep = deepCollectStrings(node, 4);
|
|
115
|
+
if (deep.length)
|
|
116
|
+
return deep.join(' ').slice(0, 500);
|
|
117
|
+
return '';
|
|
118
|
+
}
|
|
119
|
+
function oneLineText(v) {
|
|
120
|
+
if (typeof v === 'string')
|
|
121
|
+
return v.trim();
|
|
122
|
+
if (v && typeof v === 'object' && 'content' in v && typeof v.content === 'string')
|
|
123
|
+
return v.content.trim();
|
|
124
|
+
return '';
|
|
125
|
+
}
|
|
126
|
+
/** 深度收集对象中的短文本(跳过 ID、token 等),用于未知结构 */
|
|
127
|
+
function deepCollectStrings(obj, maxDepth, depth = 0) {
|
|
128
|
+
if (depth > maxDepth || obj == null)
|
|
129
|
+
return [];
|
|
130
|
+
const out = [];
|
|
131
|
+
const skipKeys = new Set(['id', 'block_id', 'parent_id', 'token', 'node_id', 'whiteboard_id']);
|
|
132
|
+
if (typeof obj === 'string') {
|
|
133
|
+
const s = obj.trim();
|
|
134
|
+
if (s.length > 0 && s.length < 500 && !/^[\d\s\-_:.]+$/.test(s))
|
|
135
|
+
out.push(s);
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
if (Array.isArray(obj)) {
|
|
139
|
+
for (const v of obj)
|
|
140
|
+
out.push(...deepCollectStrings(v, maxDepth, depth + 1));
|
|
141
|
+
return out;
|
|
142
|
+
}
|
|
143
|
+
if (typeof obj === 'object') {
|
|
144
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
145
|
+
if (skipKeys.has(k))
|
|
146
|
+
continue;
|
|
147
|
+
out.push(...deepCollectStrings(v, maxDepth, depth + 1));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return out;
|
|
151
|
+
}
|
|
152
|
+
/** 将画板节点列表格式化为可读文本(含类型标注,便于状态流转图) */
|
|
153
|
+
function formatWhiteboardNodes(nodes) {
|
|
154
|
+
var _a, _b;
|
|
155
|
+
if (!nodes.length)
|
|
156
|
+
return '(画板无节点)';
|
|
157
|
+
const lines = [];
|
|
158
|
+
let hasAny = false;
|
|
159
|
+
for (const node of nodes) {
|
|
160
|
+
const text = nodeToText(node).trim();
|
|
161
|
+
const type = String((_b = (_a = node.resource_type) !== null && _a !== void 0 ? _a : node.node_type) !== null && _b !== void 0 ? _b : '').trim();
|
|
162
|
+
const tag = type ? `[${type}]` : '节点';
|
|
163
|
+
if (text) {
|
|
164
|
+
lines.push(`- ${tag} ${text}`);
|
|
165
|
+
hasAny = true;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
lines.push(`- ${tag} (无文本)`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (!hasAny)
|
|
172
|
+
lines.push('(以上节点未解析出文本,可能为图形/连线;若为流程图可尝试在画板中为形状添加文字说明)');
|
|
173
|
+
return lines.join('\n');
|
|
174
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RecallTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const request_1 = require("./request");
|
|
6
|
+
const searchParamsSchema = {
|
|
7
|
+
query: zod_1.z.string().describe("user input"),
|
|
8
|
+
};
|
|
9
|
+
exports.RecallTool = {
|
|
10
|
+
name: "openplatform_developer_document_recall",
|
|
11
|
+
description: "Recall for relevant documents in all of the Feishu/Lark Open Platform Developer Documents based on user input.",
|
|
12
|
+
schema: searchParamsSchema,
|
|
13
|
+
handler: async (params, options) => {
|
|
14
|
+
const { query } = params;
|
|
15
|
+
try {
|
|
16
|
+
const results = await (0, request_1.recallDeveloperDocument)(query, options);
|
|
17
|
+
// Return results
|
|
18
|
+
return {
|
|
19
|
+
content: [
|
|
20
|
+
{
|
|
21
|
+
type: "text",
|
|
22
|
+
text: results.length ? `Find ${results.length} results:\n${results.join("\n\n")}` : "No results found",
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return {
|
|
29
|
+
isError: true,
|
|
30
|
+
content: [
|
|
31
|
+
{
|
|
32
|
+
type: "text",
|
|
33
|
+
text: `Search failed:${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recallDeveloperDocument = void 0;
|
|
4
|
+
const http_instance_1 = require("../../../utils/http-instance");
|
|
5
|
+
const recallDeveloperDocument = async (query, options) => {
|
|
6
|
+
try {
|
|
7
|
+
const { domain, count = 3 } = options;
|
|
8
|
+
// Get Feishu search API endpoint
|
|
9
|
+
const searchEndpoint = `${domain}/document_portal/v1/recall`;
|
|
10
|
+
const payload = {
|
|
11
|
+
question: query,
|
|
12
|
+
};
|
|
13
|
+
// Send network request to Feishu search API
|
|
14
|
+
const response = await http_instance_1.commonHttpInstance.post(searchEndpoint, payload, {
|
|
15
|
+
timeout: 10000,
|
|
16
|
+
});
|
|
17
|
+
// Process search results
|
|
18
|
+
let results = response.data.chunks || [];
|
|
19
|
+
return results.slice(0, count);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.recallDeveloperDocument = recallDeveloperDocument;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
export interface DocumentRecallToolOptions {
|
|
4
|
+
domain?: string;
|
|
5
|
+
smallToBig?: boolean;
|
|
6
|
+
count?: number;
|
|
7
|
+
multiQuery?: boolean;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface DocumentRecallTool {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
schema: {
|
|
14
|
+
query: z.ZodType<string>;
|
|
15
|
+
};
|
|
16
|
+
handler: (params: {
|
|
17
|
+
query: string;
|
|
18
|
+
}, options: DocumentRecallToolOptions) => Promise<CallToolResult>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./mcp-tool"), exports);
|
|
18
|
+
__exportStar(require("./tools"), exports);
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
__exportStar(require("./constants"), exports);
|
|
21
|
+
__exportStar(require("./document-tool"), exports);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { LarkMcpToolOptions, McpTool, SettableValue, ToolNameCase } from './types';
|
|
3
|
+
import { LarkAuthHandler } from '../auth';
|
|
4
|
+
/**
|
|
5
|
+
* Feishu/Lark MCP
|
|
6
|
+
*/
|
|
7
|
+
export declare class LarkMcpTool {
|
|
8
|
+
private client;
|
|
9
|
+
private userAccessToken;
|
|
10
|
+
private auth;
|
|
11
|
+
private options;
|
|
12
|
+
private allTools;
|
|
13
|
+
/**
|
|
14
|
+
* Feishu/Lark MCP
|
|
15
|
+
* @param options Feishu/Lark Client Options
|
|
16
|
+
*/
|
|
17
|
+
constructor(options: LarkMcpToolOptions, auth?: LarkAuthHandler);
|
|
18
|
+
/**
|
|
19
|
+
* Get MCP Tools
|
|
20
|
+
* @returns MCP Tool Definition Array
|
|
21
|
+
*/
|
|
22
|
+
getTools(): McpTool[];
|
|
23
|
+
/**
|
|
24
|
+
* Update User Access Token
|
|
25
|
+
* @param userAccessToken User Access Token
|
|
26
|
+
*/
|
|
27
|
+
updateUserAccessToken(userAccessToken: string | SettableValue): void;
|
|
28
|
+
private getUserAccessToken;
|
|
29
|
+
private setUserAccessToken;
|
|
30
|
+
reAuthorize(): Promise<{
|
|
31
|
+
userAccessToken?: string;
|
|
32
|
+
authorizeUrl?: string;
|
|
33
|
+
}>;
|
|
34
|
+
ensureGetUserAccessToken(): Promise<{
|
|
35
|
+
userAccessToken?: string;
|
|
36
|
+
authorizeUrl?: string;
|
|
37
|
+
}>;
|
|
38
|
+
getReAuthorizeMessage(authorizeUrl?: string, errorCode?: number, errorText?: string): {
|
|
39
|
+
isError: boolean;
|
|
40
|
+
content: {
|
|
41
|
+
type: "text";
|
|
42
|
+
text: string;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Register Tools to MCP Server
|
|
47
|
+
* @param server MCP Server Instance
|
|
48
|
+
*/
|
|
49
|
+
registerMcpServer(server: McpServer, options?: {
|
|
50
|
+
toolNameCase?: ToolNameCase;
|
|
51
|
+
}): void;
|
|
52
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LarkMcpTool = void 0;
|
|
4
|
+
const node_sdk_1 = require("@larksuiteoapi/node-sdk");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const tools_1 = require("./tools");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const auth_1 = require("../auth");
|
|
10
|
+
const safe_json_parse_1 = require("../utils/safe-json-parse");
|
|
11
|
+
const constants_2 = require("../utils/constants");
|
|
12
|
+
const logger_1 = require("../utils/logger");
|
|
13
|
+
/**
|
|
14
|
+
* Feishu/Lark MCP
|
|
15
|
+
*/
|
|
16
|
+
class LarkMcpTool {
|
|
17
|
+
/**
|
|
18
|
+
* Feishu/Lark MCP
|
|
19
|
+
* @param options Feishu/Lark Client Options
|
|
20
|
+
*/
|
|
21
|
+
constructor(options, auth) {
|
|
22
|
+
var _a;
|
|
23
|
+
// Lark Client
|
|
24
|
+
this.client = null;
|
|
25
|
+
// User Access Token
|
|
26
|
+
this.userAccessToken = {};
|
|
27
|
+
// All Tools
|
|
28
|
+
this.allTools = [];
|
|
29
|
+
this.options = options;
|
|
30
|
+
this.auth = auth;
|
|
31
|
+
if (options.client) {
|
|
32
|
+
this.client = options.client;
|
|
33
|
+
}
|
|
34
|
+
else if (options.appId && options.appSecret) {
|
|
35
|
+
this.client = new node_sdk_1.Client({ appId: options.appId, appSecret: options.appSecret, ...options });
|
|
36
|
+
}
|
|
37
|
+
const isZH = ((_a = options.toolsOptions) === null || _a === void 0 ? void 0 : _a.language) === 'zh';
|
|
38
|
+
const filterOptions = {
|
|
39
|
+
allowTools: constants_1.defaultToolNames,
|
|
40
|
+
tokenMode: this.options.tokenMode || types_1.TokenMode.AUTO,
|
|
41
|
+
...options.toolsOptions,
|
|
42
|
+
};
|
|
43
|
+
this.allTools = (0, utils_1.filterTools)(isZH ? tools_1.AllToolsZh : tools_1.AllTools, filterOptions);
|
|
44
|
+
logger_1.logger.info(`[LarkMcpTool] Initialized with ${this.allTools.length} tools, tokenMode: ${this.options.tokenMode}`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get MCP Tools
|
|
48
|
+
* @returns MCP Tool Definition Array
|
|
49
|
+
*/
|
|
50
|
+
getTools() {
|
|
51
|
+
return this.allTools;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Update User Access Token
|
|
55
|
+
* @param userAccessToken User Access Token
|
|
56
|
+
*/
|
|
57
|
+
updateUserAccessToken(userAccessToken) {
|
|
58
|
+
if (typeof userAccessToken === 'string') {
|
|
59
|
+
this.userAccessToken.value = userAccessToken;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.userAccessToken = userAccessToken;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async getUserAccessToken() {
|
|
66
|
+
if (this.userAccessToken.getter) {
|
|
67
|
+
return await this.userAccessToken.getter();
|
|
68
|
+
}
|
|
69
|
+
return this.userAccessToken.value;
|
|
70
|
+
}
|
|
71
|
+
async setUserAccessToken(userAccessToken) {
|
|
72
|
+
this.userAccessToken.value = userAccessToken;
|
|
73
|
+
if (this.userAccessToken.setter) {
|
|
74
|
+
await this.userAccessToken.setter(userAccessToken);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async reAuthorize() {
|
|
78
|
+
const userAccessToken = await this.getUserAccessToken();
|
|
79
|
+
// if not enable oauth mode, return empty object
|
|
80
|
+
if (!this.auth || !this.options.oauth) {
|
|
81
|
+
return {};
|
|
82
|
+
}
|
|
83
|
+
logger_1.logger.info(`[LarkMcpTool] Re-authorizing user access token`);
|
|
84
|
+
const { authorizeUrl, accessToken } = await this.auth.reAuthorize(userAccessToken);
|
|
85
|
+
if (accessToken) {
|
|
86
|
+
logger_1.logger.info(`[LarkMcpTool] Successfully re-authorized user access token`);
|
|
87
|
+
this.setUserAccessToken(accessToken);
|
|
88
|
+
return { userAccessToken: accessToken };
|
|
89
|
+
}
|
|
90
|
+
return { authorizeUrl };
|
|
91
|
+
}
|
|
92
|
+
async ensureGetUserAccessToken() {
|
|
93
|
+
var _a;
|
|
94
|
+
const userAccessToken = await this.getUserAccessToken();
|
|
95
|
+
if (!this.auth) {
|
|
96
|
+
return { userAccessToken };
|
|
97
|
+
}
|
|
98
|
+
const { valid, isExpired, token } = await (0, auth_1.isTokenValid)(userAccessToken);
|
|
99
|
+
if (valid) {
|
|
100
|
+
return { userAccessToken };
|
|
101
|
+
}
|
|
102
|
+
logger_1.logger.info(`[LarkMcpTool] UserAccessToken is invalid or expired, trying to get new token...`);
|
|
103
|
+
try {
|
|
104
|
+
if (isExpired && ((_a = token === null || token === void 0 ? void 0 : token.extra) === null || _a === void 0 ? void 0 : _a.refreshToken)) {
|
|
105
|
+
logger_1.logger.info(`[LarkMcpTool] UserAccessToken is expired, trying to use refreshToken to refresh...`);
|
|
106
|
+
const newToken = await this.auth.refreshToken(token.token);
|
|
107
|
+
if (newToken === null || newToken === void 0 ? void 0 : newToken.access_token) {
|
|
108
|
+
this.setUserAccessToken(newToken.access_token);
|
|
109
|
+
return { userAccessToken: newToken.access_token };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
logger_1.logger.error(`[LarkMcpTool] Failed to refreshToken: ${error}`);
|
|
115
|
+
}
|
|
116
|
+
// reAuthorize
|
|
117
|
+
return await this.reAuthorize();
|
|
118
|
+
}
|
|
119
|
+
getReAuthorizeMessage(authorizeUrl, errorCode, errorText) {
|
|
120
|
+
var _a;
|
|
121
|
+
const errorMessage = errorCode === constants_2.OAPI_MCP_ERROR_CODE.USER_ACCESS_TOKEN_UNAUTHORIZED
|
|
122
|
+
? 'Current user_access_token lacks required permissions. Please ensure the corresponding permissions are enabled in the developer console, then re-authorize using the following Authorization URL or login command.'
|
|
123
|
+
: 'Current user_access_token is invalid or expired';
|
|
124
|
+
const instruction = authorizeUrl
|
|
125
|
+
? [
|
|
126
|
+
'Please open the following URL in your browser to complete the authorization:',
|
|
127
|
+
`Note: Ensure the redirect URL (${(_a = this.auth) === null || _a === void 0 ? void 0 : _a.callbackUrl}) is configured in your app's security settings.`,
|
|
128
|
+
` If not configured, go to: ${this.options.domain}/app/${this.options.appId}/safe`,
|
|
129
|
+
'Authorization URL:',
|
|
130
|
+
authorizeUrl,
|
|
131
|
+
'This authorization link expires in 60 seconds. Generating a new link will immediately invalidate this one.',
|
|
132
|
+
]
|
|
133
|
+
.join('\n')
|
|
134
|
+
.trim()
|
|
135
|
+
: '';
|
|
136
|
+
const reAuthorizeMessage = {
|
|
137
|
+
errorCode,
|
|
138
|
+
errorMessage,
|
|
139
|
+
instruction,
|
|
140
|
+
rawErrorText: errorText,
|
|
141
|
+
};
|
|
142
|
+
return {
|
|
143
|
+
isError: true,
|
|
144
|
+
content: [{ type: 'text', text: JSON.stringify(reAuthorizeMessage) }],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Register Tools to MCP Server
|
|
149
|
+
* @param server MCP Server Instance
|
|
150
|
+
*/
|
|
151
|
+
registerMcpServer(server, options) {
|
|
152
|
+
for (const tool of this.allTools) {
|
|
153
|
+
server.tool((0, utils_1.caseTransf)(tool.name, options === null || options === void 0 ? void 0 : options.toolNameCase), tool.description, tool.schema, async (params) => {
|
|
154
|
+
var _a, _b, _c, _d, _e;
|
|
155
|
+
try {
|
|
156
|
+
if (!this.client) {
|
|
157
|
+
return {
|
|
158
|
+
isError: true,
|
|
159
|
+
content: [{ type: 'text', text: JSON.stringify({ msg: 'Client not initialized' }) }],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const handler = tool.customHandler || utils_1.larkOapiHandler;
|
|
163
|
+
const shouldUseUAT = (0, utils_1.getShouldUseUAT)(this.options.tokenMode, (_a = params === null || params === void 0 ? void 0 : params.useUAT) !== null && _a !== void 0 ? _a : false);
|
|
164
|
+
if (shouldUseUAT) {
|
|
165
|
+
const { userAccessToken, authorizeUrl } = await this.ensureGetUserAccessToken();
|
|
166
|
+
if (!userAccessToken) {
|
|
167
|
+
return this.getReAuthorizeMessage(authorizeUrl);
|
|
168
|
+
}
|
|
169
|
+
logger_1.logger.info(`[LarkMcpTool] Calling tool: ${tool.name}`);
|
|
170
|
+
const result = await handler(this.client, { ...params, useUAT: shouldUseUAT }, { userAccessToken, tool });
|
|
171
|
+
const errorCode = (0, safe_json_parse_1.safeJsonParse)((_c = (_b = result.content) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.text, { code: 0 }).code;
|
|
172
|
+
if (result.isError &&
|
|
173
|
+
[
|
|
174
|
+
constants_2.OAPI_MCP_ERROR_CODE.USER_ACCESS_TOKEN_UNAUTHORIZED,
|
|
175
|
+
constants_2.OAPI_MCP_ERROR_CODE.USER_ACCESS_TOKEN_INVALID,
|
|
176
|
+
].includes(errorCode)) {
|
|
177
|
+
logger_1.logger.info(`[LarkMcpTool] User access token unauthorized the scope or invalid, reAuthorize, errorCode: ${errorCode}`);
|
|
178
|
+
// user access token unauthorized the scope or invalid, reAuthorize
|
|
179
|
+
const { authorizeUrl } = await this.reAuthorize();
|
|
180
|
+
return this.getReAuthorizeMessage(authorizeUrl, errorCode, (_e = (_d = result.content) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.text);
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
logger_1.logger.info(`[LarkMcpTool] Calling tool: ${tool.name}`);
|
|
185
|
+
return handler(this.client, { ...params, useUAT: shouldUseUAT }, { tool });
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
logger_1.logger.error(`[LarkMcpTool] Failed to call tool: ${tool.name}, error: ${error}`);
|
|
189
|
+
return {
|
|
190
|
+
isError: true,
|
|
191
|
+
content: [{ type: 'text', text: JSON.stringify(error === null || error === void 0 ? void 0 : error.message) }],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
exports.LarkMcpTool = LarkMcpTool;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { McpTool } from '../../../../types';
|
|
2
|
+
export type docxBuiltinToolName = 'docx.builtin.search' | 'docx.builtin.import' | 'docx.builtin.readFullContent';
|
|
3
|
+
export declare const larkDocxBuiltinSearchTool: McpTool;
|
|
4
|
+
export declare const larkDocxBuiltinImportTool: McpTool;
|
|
5
|
+
export declare const larkDocxBuiltinReadFullContentTool: McpTool;
|
|
6
|
+
export declare const docxBuiltinTools: McpTool[];
|