pi-feishu-cli 0.1.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/LICENSE +21 -0
- package/README.md +111 -0
- package/dist/src/bot.d.ts +29 -0
- package/dist/src/bot.js +75 -0
- package/dist/src/cards.d.ts +6 -0
- package/dist/src/cards.js +87 -0
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.js +28 -0
- package/dist/src/daemon.d.ts +2 -0
- package/dist/src/daemon.js +151 -0
- package/dist/src/extension.d.ts +2 -0
- package/dist/src/extension.js +124 -0
- package/dist/src/poller.d.ts +33 -0
- package/dist/src/poller.js +94 -0
- package/dist/src/renderer.d.ts +8 -0
- package/dist/src/renderer.js +31 -0
- package/dist/src/session-registry.d.ts +15 -0
- package/dist/src/session-registry.js +82 -0
- package/dist/src/types.d.ts +25 -0
- package/dist/src/types.js +1 -0
- package/dist/tests/bot.test.d.ts +1 -0
- package/dist/tests/bot.test.js +89 -0
- package/dist/tests/cards.test.d.ts +1 -0
- package/dist/tests/cards.test.js +39 -0
- package/dist/tests/config.test.d.ts +1 -0
- package/dist/tests/config.test.js +59 -0
- package/dist/tests/renderer.test.d.ts +1 -0
- package/dist/tests/renderer.test.js +61 -0
- package/dist/tests/session-registry.test.d.ts +1 -0
- package/dist/tests/session-registry.test.js +92 -0
- package/dist/tests/types.test.d.ts +1 -0
- package/dist/tests/types.test.js +30 -0
- package/package.json +35 -0
- package/skills/lark-approval/SKILL.md +56 -0
- package/skills/lark-apps/SKILL.md +92 -0
- package/skills/lark-apps/references/lark-apps-access-scope-get.md +104 -0
- package/skills/lark-apps/references/lark-apps-access-scope-set.md +126 -0
- package/skills/lark-apps/references/lark-apps-create.md +112 -0
- package/skills/lark-apps/references/lark-apps-html-publish.md +151 -0
- package/skills/lark-apps/references/lark-apps-list.md +95 -0
- package/skills/lark-apps/references/lark-apps-update.md +86 -0
- package/skills/lark-attendance/SKILL.md +57 -0
- package/skills/lark-base/SKILL.md +359 -0
- package/skills/lark-base/references/dashboard-block-data-config.md +350 -0
- package/skills/lark-base/references/examples.md +140 -0
- package/skills/lark-base/references/formula-field-guide.md +737 -0
- package/skills/lark-base/references/lark-base-advperm-disable.md +83 -0
- package/skills/lark-base/references/lark-base-advperm-enable.md +80 -0
- package/skills/lark-base/references/lark-base-base-copy.md +74 -0
- package/skills/lark-base/references/lark-base-base-create.md +68 -0
- package/skills/lark-base/references/lark-base-base-get.md +39 -0
- package/skills/lark-base/references/lark-base-cell-value.md +151 -0
- package/skills/lark-base/references/lark-base-dashboard-arrange.md +83 -0
- package/skills/lark-base/references/lark-base-dashboard-block-create.md +108 -0
- package/skills/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
- package/skills/lark-base/references/lark-base-dashboard-block-get.md +57 -0
- package/skills/lark-base/references/lark-base-dashboard-block-list.md +53 -0
- package/skills/lark-base/references/lark-base-dashboard-block-update.md +84 -0
- package/skills/lark-base/references/lark-base-dashboard-create.md +73 -0
- package/skills/lark-base/references/lark-base-dashboard-delete.md +44 -0
- package/skills/lark-base/references/lark-base-dashboard-get.md +59 -0
- package/skills/lark-base/references/lark-base-dashboard-list.md +52 -0
- package/skills/lark-base/references/lark-base-dashboard-update.md +69 -0
- package/skills/lark-base/references/lark-base-dashboard.md +240 -0
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +88 -0
- package/skills/lark-base/references/lark-base-data-query.md +375 -0
- package/skills/lark-base/references/lark-base-field-create.md +104 -0
- package/skills/lark-base/references/lark-base-field-delete.md +51 -0
- package/skills/lark-base/references/lark-base-field-get.md +42 -0
- package/skills/lark-base/references/lark-base-field-list.md +44 -0
- package/skills/lark-base/references/lark-base-field-search-options.md +48 -0
- package/skills/lark-base/references/lark-base-field-update.md +97 -0
- package/skills/lark-base/references/lark-base-field.md +22 -0
- package/skills/lark-base/references/lark-base-form-create.md +87 -0
- package/skills/lark-base/references/lark-base-form-delete.md +64 -0
- package/skills/lark-base/references/lark-base-form-detail.md +198 -0
- package/skills/lark-base/references/lark-base-form-get.md +68 -0
- package/skills/lark-base/references/lark-base-form-list.md +73 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
- package/skills/lark-base/references/lark-base-form-questions-delete.md +68 -0
- package/skills/lark-base/references/lark-base-form-questions-list.md +84 -0
- package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
- package/skills/lark-base/references/lark-base-form-questions.md +23 -0
- package/skills/lark-base/references/lark-base-form-submit.md +171 -0
- package/skills/lark-base/references/lark-base-form-update.md +82 -0
- package/skills/lark-base/references/lark-base-form.md +25 -0
- package/skills/lark-base/references/lark-base-history.md +16 -0
- package/skills/lark-base/references/lark-base-record-batch-create.md +58 -0
- package/skills/lark-base/references/lark-base-record-batch-update.md +53 -0
- package/skills/lark-base/references/lark-base-record-delete.md +62 -0
- package/skills/lark-base/references/lark-base-record-history-list.md +86 -0
- package/skills/lark-base/references/lark-base-record-share-link-create.md +72 -0
- package/skills/lark-base/references/lark-base-record-upsert.md +64 -0
- package/skills/lark-base/references/lark-base-record.md +31 -0
- package/skills/lark-base/references/lark-base-role-create.md +89 -0
- package/skills/lark-base/references/lark-base-role-delete.md +83 -0
- package/skills/lark-base/references/lark-base-role-get.md +87 -0
- package/skills/lark-base/references/lark-base-role-list.md +81 -0
- package/skills/lark-base/references/lark-base-role-update.md +94 -0
- package/skills/lark-base/references/lark-base-shortcut-field-properties.md +481 -0
- package/skills/lark-base/references/lark-base-table-create.md +62 -0
- package/skills/lark-base/references/lark-base-table-delete.md +51 -0
- package/skills/lark-base/references/lark-base-table-get.md +46 -0
- package/skills/lark-base/references/lark-base-table-list.md +43 -0
- package/skills/lark-base/references/lark-base-table-update.md +49 -0
- package/skills/lark-base/references/lark-base-table.md +20 -0
- package/skills/lark-base/references/lark-base-view-create.md +50 -0
- package/skills/lark-base/references/lark-base-view-delete.md +48 -0
- package/skills/lark-base/references/lark-base-view-get-card.md +38 -0
- package/skills/lark-base/references/lark-base-view-get-filter.md +38 -0
- package/skills/lark-base/references/lark-base-view-get-group.md +38 -0
- package/skills/lark-base/references/lark-base-view-get-sort.md +38 -0
- package/skills/lark-base/references/lark-base-view-get-timebar.md +38 -0
- package/skills/lark-base/references/lark-base-view-get-visible-fields.md +28 -0
- package/skills/lark-base/references/lark-base-view-get.md +38 -0
- package/skills/lark-base/references/lark-base-view-list.md +44 -0
- package/skills/lark-base/references/lark-base-view-rename.md +44 -0
- package/skills/lark-base/references/lark-base-view-set-card.md +55 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +181 -0
- package/skills/lark-base/references/lark-base-view-set-group.md +65 -0
- package/skills/lark-base/references/lark-base-view-set-sort.md +63 -0
- package/skills/lark-base/references/lark-base-view-set-timebar.md +51 -0
- package/skills/lark-base/references/lark-base-view-set-visible-fields.md +46 -0
- package/skills/lark-base/references/lark-base-view.md +44 -0
- package/skills/lark-base/references/lark-base-workflow-create.md +180 -0
- package/skills/lark-base/references/lark-base-workflow-disable.md +94 -0
- package/skills/lark-base/references/lark-base-workflow-enable.md +94 -0
- package/skills/lark-base/references/lark-base-workflow-get.md +147 -0
- package/skills/lark-base/references/lark-base-workflow-guide.md +718 -0
- package/skills/lark-base/references/lark-base-workflow-list.md +124 -0
- package/skills/lark-base/references/lark-base-workflow-schema.md +935 -0
- package/skills/lark-base/references/lark-base-workflow-update.md +167 -0
- package/skills/lark-base/references/lark-base-workflow.md +23 -0
- package/skills/lark-base/references/lark-base-workspace.md +18 -0
- package/skills/lark-base/references/lookup-field-guide.md +512 -0
- package/skills/lark-base/references/role-config.md +539 -0
- package/skills/lark-calendar/SKILL.md +154 -0
- package/skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
- package/skills/lark-calendar/references/lark-calendar-create.md +109 -0
- package/skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +113 -0
- package/skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
- package/skills/lark-calendar/references/lark-calendar-update.md +105 -0
- package/skills/lark-contact/SKILL.md +45 -0
- package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
- package/skills/lark-contact/references/lark-contact-search-user.md +124 -0
- package/skills/lark-doc/SKILL.md +65 -0
- package/skills/lark-doc/references/lark-doc-create.md +89 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +141 -0
- package/skills/lark-doc/references/lark-doc-md.md +71 -0
- package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
- package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
- package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
- package/skills/lark-doc/references/lark-doc-update.md +252 -0
- package/skills/lark-doc/references/lark-doc-whiteboard.md +100 -0
- package/skills/lark-doc/references/lark-doc-xml.md +169 -0
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +56 -0
- package/skills/lark-doc/references/style/lark-doc-style.md +106 -0
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +54 -0
- package/skills/lark-drive/SKILL.md +369 -0
- package/skills/lark-drive/references/lark-drive-add-comment.md +182 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
- package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
- package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
- package/skills/lark-drive/references/lark-drive-delete.md +79 -0
- package/skills/lark-drive/references/lark-drive-download.md +31 -0
- package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
- package/skills/lark-drive/references/lark-drive-export.md +119 -0
- package/skills/lark-drive/references/lark-drive-import.md +159 -0
- package/skills/lark-drive/references/lark-drive-inspect.md +50 -0
- package/skills/lark-drive/references/lark-drive-move.md +120 -0
- package/skills/lark-drive/references/lark-drive-pull.md +137 -0
- package/skills/lark-drive/references/lark-drive-push.md +162 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
- package/skills/lark-drive/references/lark-drive-search.md +266 -0
- package/skills/lark-drive/references/lark-drive-status.md +198 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +302 -0
- package/skills/lark-drive/references/lark-drive-upload.md +67 -0
- package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
- package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
- package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
- package/skills/lark-drive/references/lark-drive-version-revert.md +198 -0
- package/skills/lark-event/SKILL.md +145 -0
- package/skills/lark-event/references/lark-event-im.md +86 -0
- package/skills/lark-im/SKILL.md +162 -0
- package/skills/lark-im/references/lark-im-chat-create.md +162 -0
- package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
- package/skills/lark-im/references/lark-im-chat-list.md +198 -0
- package/skills/lark-im/references/lark-im-chat-messages-list.md +148 -0
- package/skills/lark-im/references/lark-im-chat-search.md +136 -0
- package/skills/lark-im/references/lark-im-chat-update.md +84 -0
- package/skills/lark-im/references/lark-im-flag-cancel.md +198 -0
- package/skills/lark-im/references/lark-im-flag-create.md +67 -0
- package/skills/lark-im/references/lark-im-flag-list.md +100 -0
- package/skills/lark-im/references/lark-im-messages-mget.md +95 -0
- package/skills/lark-im/references/lark-im-messages-reply.md +228 -0
- package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
- package/skills/lark-im/references/lark-im-messages-search.md +232 -0
- package/skills/lark-im/references/lark-im-messages-send.md +229 -0
- package/skills/lark-im/references/lark-im-reactions.md +297 -0
- package/skills/lark-im/references/lark-im-threads-messages-list.md +111 -0
- package/skills/lark-mail/SKILL.md +648 -0
- package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
- package/skills/lark-mail/references/lark-mail-draft-create.md +123 -0
- package/skills/lark-mail/references/lark-mail-draft-edit.md +400 -0
- package/skills/lark-mail/references/lark-mail-forward.md +173 -0
- package/skills/lark-mail/references/lark-mail-message.md +230 -0
- package/skills/lark-mail/references/lark-mail-messages.md +108 -0
- package/skills/lark-mail/references/lark-mail-reply-all.md +206 -0
- package/skills/lark-mail/references/lark-mail-reply.md +242 -0
- package/skills/lark-mail/references/lark-mail-send-receipt.md +198 -0
- package/skills/lark-mail/references/lark-mail-send.md +216 -0
- package/skills/lark-mail/references/lark-mail-share-to-chat.md +198 -0
- package/skills/lark-mail/references/lark-mail-signature.md +98 -0
- package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
- package/skills/lark-mail/references/lark-mail-template-update.md +198 -0
- package/skills/lark-mail/references/lark-mail-thread.md +111 -0
- package/skills/lark-mail/references/lark-mail-triage.md +122 -0
- package/skills/lark-mail/references/lark-mail-watch.md +94 -0
- package/skills/lark-minutes/SKILL.md +139 -0
- package/skills/lark-minutes/references/lark-minutes-download.md +137 -0
- package/skills/lark-minutes/references/lark-minutes-search.md +206 -0
- package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
- package/skills/lark-okr/SKILL.md +133 -0
- package/skills/lark-okr/references/lark-okr-contentblock.md +359 -0
- package/skills/lark-okr/references/lark-okr-cycle-detail.md +84 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +90 -0
- package/skills/lark-okr/references/lark-okr-entities.md +329 -0
- package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
- package/skills/lark-okr/references/lark-okr-progress-create.md +81 -0
- package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
- package/skills/lark-okr/references/lark-okr-progress-get.md +62 -0
- package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
- package/skills/lark-okr/references/lark-okr-progress-update.md +81 -0
- package/skills/lark-openapi-explorer/SKILL.md +153 -0
- package/skills/lark-shared/SKILL.md +144 -0
- package/skills/lark-sheets/SKILL.md +343 -0
- package/skills/lark-sheets/references/lark-sheets-cell-data.md +197 -0
- package/skills/lark-sheets/references/lark-sheets-cell-images.md +59 -0
- package/skills/lark-sheets/references/lark-sheets-cell-style-and-merge.md +141 -0
- package/skills/lark-sheets/references/lark-sheets-dropdown.md +133 -0
- package/skills/lark-sheets/references/lark-sheets-filter-views.md +193 -0
- package/skills/lark-sheets/references/lark-sheets-float-images.md +125 -0
- package/skills/lark-sheets/references/lark-sheets-formula.md +88 -0
- package/skills/lark-sheets/references/lark-sheets-row-column-management.md +151 -0
- package/skills/lark-sheets/references/lark-sheets-sheet-management.md +164 -0
- package/skills/lark-sheets/references/lark-sheets-spreadsheet-management.md +140 -0
- package/skills/lark-skill-maker/SKILL.md +85 -0
- package/skills/lark-slides/SKILL.md +296 -0
- package/skills/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
- package/skills/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
- package/skills/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
- package/skills/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
- package/skills/lark-slides/assets/templates/hr--employee_training.xml +912 -0
- package/skills/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
- package/skills/lark-slides/assets/templates/hr--onboarding.xml +933 -0
- package/skills/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
- package/skills/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
- package/skills/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
- package/skills/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
- package/skills/lark-slides/assets/templates/marketing--marketing_plan.xml +198 -0
- package/skills/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
- package/skills/lark-slides/assets/templates/marketing--product_whitepaper.xml +198 -0
- package/skills/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
- package/skills/lark-slides/assets/templates/misc--book_sharing.xml +198 -0
- package/skills/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
- package/skills/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
- package/skills/lark-slides/assets/templates/office--dark_general.xml +3763 -0
- package/skills/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
- package/skills/lark-slides/assets/templates/office--light_general.xml +3378 -0
- package/skills/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
- package/skills/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
- package/skills/lark-slides/assets/templates/office--work_report.xml +1099 -0
- package/skills/lark-slides/assets/templates/office--work_summary.xml +4420 -0
- package/skills/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
- package/skills/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
- package/skills/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
- package/skills/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
- package/skills/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
- package/skills/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
- package/skills/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
- package/skills/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
- package/skills/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
- package/skills/lark-slides/assets/templates/personal--self_intro.xml +696 -0
- package/skills/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
- package/skills/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
- package/skills/lark-slides/assets/templates/product--market_analysis.xml +898 -0
- package/skills/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
- package/skills/lark-slides/assets/templates/product--product_intro.xml +2838 -0
- package/skills/lark-slides/assets/templates/product--product_promotion.xml +687 -0
- package/skills/lark-slides/assets/templates/product--product_promotion_2.xml +198 -0
- package/skills/lark-slides/references/asset-planning.md +124 -0
- package/skills/lark-slides/references/examples.md +261 -0
- package/skills/lark-slides/references/lark-slides-create.md +137 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +142 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +128 -0
- package/skills/lark-slides/references/lark-slides-replace-slide.md +239 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +220 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +186 -0
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
- package/skills/lark-slides/references/planning-layer.md +219 -0
- package/skills/lark-slides/references/slide-templates.md +201 -0
- package/skills/lark-slides/references/slides_demo.xml +226 -0
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
- package/skills/lark-slides/references/template-catalog.md +463 -0
- package/skills/lark-slides/references/template-index.json +198 -0
- package/skills/lark-slides/references/troubleshooting.md +198 -0
- package/skills/lark-slides/references/validation-checklist.md +102 -0
- package/skills/lark-slides/references/visual-planning.md +250 -0
- package/skills/lark-slides/references/xml-format-guide.md +369 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +215 -0
- package/skills/lark-slides/scripts/template_tool.py +970 -0
- package/skills/lark-slides/scripts/template_tool_test.py +177 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +367 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +263 -0
- package/skills/lark-task/SKILL.md +165 -0
- package/skills/lark-task/references/lark-task-assign.md +38 -0
- package/skills/lark-task/references/lark-task-comment.md +28 -0
- package/skills/lark-task/references/lark-task-complete.md +27 -0
- package/skills/lark-task/references/lark-task-create.md +57 -0
- package/skills/lark-task/references/lark-task-followers.md +35 -0
- package/skills/lark-task/references/lark-task-get-my-tasks.md +55 -0
- package/skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
- package/skills/lark-task/references/lark-task-reminder.md +36 -0
- package/skills/lark-task/references/lark-task-reopen.md +27 -0
- package/skills/lark-task/references/lark-task-search.md +41 -0
- package/skills/lark-task/references/lark-task-set-ancestor.md +32 -0
- package/skills/lark-task/references/lark-task-subscribe-event.md +86 -0
- package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
- package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
- package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
- package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
- package/skills/lark-task/references/lark-task-update.md +37 -0
- package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
- package/skills/lark-vc/SKILL.md +168 -0
- package/skills/lark-vc/references/lark-vc-notes.md +126 -0
- package/skills/lark-vc/references/lark-vc-recording.md +153 -0
- package/skills/lark-vc/references/lark-vc-search.md +193 -0
- package/skills/lark-vc-agent/SKILL.md +121 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +247 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +133 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +111 -0
- package/skills/lark-whiteboard/SKILL.md +144 -0
- package/skills/lark-whiteboard/references/connectors.md +102 -0
- package/skills/lark-whiteboard/references/content.md +40 -0
- package/skills/lark-whiteboard/references/image.md +80 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +100 -0
- package/skills/lark-whiteboard/references/layout.md +374 -0
- package/skills/lark-whiteboard/references/schema.md +357 -0
- package/skills/lark-whiteboard/references/style.md +318 -0
- package/skills/lark-whiteboard/references/typography.md +73 -0
- package/skills/lark-whiteboard/routes/dsl.md +107 -0
- package/skills/lark-whiteboard/routes/mermaid.md +27 -0
- package/skills/lark-whiteboard/routes/svg.md +54 -0
- package/skills/lark-whiteboard/scenes/architecture.md +433 -0
- package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
- package/skills/lark-whiteboard/scenes/comparison.md +135 -0
- package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
- package/skills/lark-whiteboard/scenes/flowchart.md +198 -0
- package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
- package/skills/lark-whiteboard/scenes/funnel.md +198 -0
- package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
- package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
- package/skills/lark-whiteboard/scenes/milestone.md +139 -0
- package/skills/lark-whiteboard/scenes/organization.md +173 -0
- package/skills/lark-whiteboard/scenes/photo-showcase.md +198 -0
- package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
- package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
- package/skills/lark-whiteboard/scenes/treemap.md +198 -0
- package/skills/lark-wiki/SKILL.md +119 -0
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
- package/skills/lark-wiki/references/lark-wiki-member-add.md +66 -0
- package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
- package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
- package/skills/lark-wiki/references/lark-wiki-move.md +183 -0
- package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
- package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
- package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
- package/skills/lark-wiki/references/lark-wiki-node-get.md +56 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +198 -0
- package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
- package/skills/lark-wiki/references/lark-wiki-space-list.md +198 -0
- package/skills/lark-workflow-meeting-summary/SKILL.md +104 -0
- package/skills/lark-workflow-standup-report/SKILL.md +120 -0
- package/skills/mmx-cli/SKILL.md +440 -0
- package/src/bot.ts +109 -0
- package/src/cards.ts +105 -0
- package/src/config.ts +33 -0
- package/src/daemon.ts +217 -0
- package/src/extension.ts +132 -0
- package/src/poller.ts +135 -0
- package/src/renderer.ts +47 -0
- package/src/session-registry.ts +90 -0
- package/src/types.ts +29 -0
- package/tests/bot.test.ts +104 -0
- package/tests/cards.test.ts +48 -0
- package/tests/config.test.ts +59 -0
- package/tests/renderer.test.ts +74 -0
- package/tests/session-registry.test.ts +94 -0
- package/tests/types.test.ts +35 -0
- package/tsconfig.json +16 -0
- package/vitest.config.ts +7 -0
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-feishu-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Feishu IM integration for Pi - converse with Pi from Feishu",
|
|
5
|
+
"keywords": ["pi-package", "pi", "feishu", "lark", "extension"],
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/yandy/pi-feishu-cli.git"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/yandy/pi-feishu-cli#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/yandy/pi-feishu-cli/issues"
|
|
15
|
+
},
|
|
16
|
+
"pi": {
|
|
17
|
+
"extensions": ["./src/extension.ts"],
|
|
18
|
+
"skills": ["./skills"]
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"@earendil-works/pi-ai": "*",
|
|
22
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
23
|
+
"typebox": "*"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^22.0.0",
|
|
27
|
+
"typescript": "^5.7.0",
|
|
28
|
+
"vitest": "^3.0.0"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"check": "tsc --noEmit",
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"test:watch": "vitest"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lark-approval
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "飞书审批 API:审批实例、审批任务管理。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["lark-cli"]
|
|
8
|
+
cliHelp: "lark-cli approval --help"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# approval (v4)
|
|
12
|
+
|
|
13
|
+
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
|
|
14
|
+
|
|
15
|
+
## API Resources
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
lark-cli schema approval.<resource>.<method> # 调用 API 前必须先查看参数结构
|
|
19
|
+
lark-cli approval <resource> <method> [flags] # 调用 API
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
> **重要**:使用原生 API 时,必须先运行 `schema` 查看 `--data` / `--params` 参数结构,不要猜测字段格式。
|
|
23
|
+
|
|
24
|
+
### instances
|
|
25
|
+
|
|
26
|
+
- `get` — 获取单个审批实例详情
|
|
27
|
+
- `cancel` — 撤回审批实例
|
|
28
|
+
- `cc` — 抄送审批实例
|
|
29
|
+
- `initiated` — 查询用户的已发起列表
|
|
30
|
+
|
|
31
|
+
### tasks
|
|
32
|
+
|
|
33
|
+
- `remind` — 催办审批人
|
|
34
|
+
- `approve` — 同意审批任务
|
|
35
|
+
- `reject` — 拒绝审批任务
|
|
36
|
+
- `transfer` — 转交审批任务
|
|
37
|
+
- `query` — 查询用户的任务列表
|
|
38
|
+
- `add_sign` — 审批任务加签
|
|
39
|
+
- `rollback` — 退回审批任务
|
|
40
|
+
|
|
41
|
+
## 权限表
|
|
42
|
+
|
|
43
|
+
| 方法 | 所需 scope |
|
|
44
|
+
|------|-----------|
|
|
45
|
+
| `instances.get` | `approval:instance:read` |
|
|
46
|
+
| `instances.cancel` | `approval:instance:write` |
|
|
47
|
+
| `instances.cc` | `approval:instance:write` |
|
|
48
|
+
| `instances.initiated` | `approval:instance:read` |
|
|
49
|
+
| `tasks.remind` | `approval:instance:write` |
|
|
50
|
+
| `tasks.approve` | `approval:task:write` |
|
|
51
|
+
| `tasks.reject` | `approval:task:write` |
|
|
52
|
+
| `tasks.transfer` | `approval:task:write` |
|
|
53
|
+
| `tasks.query` | `approval:task:read` |
|
|
54
|
+
| `tasks.add_sign` | `approval:task:write` |
|
|
55
|
+
| `tasks.rollback` | `approval:task:write` |
|
|
56
|
+
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lark-apps
|
|
3
|
+
description: "把本地 HTML 文件或目录部署到飞书妙搭(Miaoda),生成可分享访问的 Web 页面并返回 URL;管理应用的创建、更新、列表和访问范围。当用户要把 HTML、静态网站或 Web demo 发布成可分享链接,或提到妙搭 / Miaoda 时使用。不用于:上传普通文件到云空间(用 lark-drive)、编辑飞书云文档内容(用 lark-doc)、创建飞书原生幻灯片 / 演示文稿(用 lark-slides)。"
|
|
4
|
+
metadata:
|
|
5
|
+
requires:
|
|
6
|
+
bins: ["lark-cli"]
|
|
7
|
+
cliHelp: "lark-cli apps --help"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# apps (v1)
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# 常用示例
|
|
14
|
+
lark-cli apps +create --name "客户调研问卷" --app-type HTML
|
|
15
|
+
lark-cli apps +html-publish --app-id app_xxx --path ./dist
|
|
16
|
+
lark-cli apps +access-scope-set --app-id app_xxx --scope tenant
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 品牌可用性(先做)
|
|
20
|
+
|
|
21
|
+
跑 `lark-cli apps --help`;若提示暂未支持,告诉用户敬请期待并停止。
|
|
22
|
+
|
|
23
|
+
## 前置条件 — 执行操作前必读
|
|
24
|
+
|
|
25
|
+
**CRITICAL — 执行对应操作前,MUST 先用 Read 工具读取以下文件,缺一不可:**
|
|
26
|
+
1. [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) — 认证、权限处理、全局参数(所有操作通用)
|
|
27
|
+
2. **创建应用(`apps +create`)** → 必读 [`lark-apps-create.md`](references/lark-apps-create.md)
|
|
28
|
+
3. **更新应用元信息(`apps +update`)** → 必读 [`lark-apps-update.md`](references/lark-apps-update.md)(部分更新,未传字段不变)
|
|
29
|
+
4. **发布 HTML / PPT / 静态网站(`apps +html-publish`)** → 必读 [`lark-apps-html-publish.md`](references/lark-apps-html-publish.md)(`--path` 文件 vs 目录、tar.gz 打包不做过滤)
|
|
30
|
+
5. **设置可用范围(`apps +access-scope-set`)** → 必读 [`lark-apps-access-scope-set.md`](references/lark-apps-access-scope-set.md)(specific / public / tenant 三态互斥校验、targets JSON 结构)
|
|
31
|
+
|
|
32
|
+
**未读完以上文件就执行相应操作会导致参数选择错误、互斥违反或文件被错误打包。**
|
|
33
|
+
|
|
34
|
+
## 身份与一次性授权
|
|
35
|
+
|
|
36
|
+
妙搭应用是用户的个人资产,**统一使用 `--as user`**(CLI 默认 `--as auto` 会按 shortcut 声明自动落到 user)。
|
|
37
|
+
|
|
38
|
+
**首次操作前一次性把本域 scope 全拿到,避免每条命令首次跑都触发新一轮授权**:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
lark-cli auth login --domain apps
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 端到端流程(HTML / PPT / 静态网站发布)
|
|
45
|
+
|
|
46
|
+
**第一步:判断用户意图是「明示部署」还是「仅演示」**:
|
|
47
|
+
|
|
48
|
+
| 用户表达 | 意图 | 处理 |
|
|
49
|
+
|---------|------|------|
|
|
50
|
+
| "部署 ./xxx 的 HTML"、"发布到妙搭"、"开发 xxx 并部署成可分享的网站 / 可访问的链接"、"生成可分享 URL" | **明示部署 / 分享** | 不停下追问,HTML 写完直接走下表 step 1→2 |
|
|
51
|
+
| "用 HTML 写一个 PPT / 幻灯片 / 演示文稿"、"做个可演示的 demo"、"写个介绍 xxx 的页面"(没提部署 / 分享 / URL) | **仅演示** | HTML 写完先输出本地文件路径 + 简要说明,**主动追问一句**:"要部署到妙搭以便分享给别人吗?"用户同意再走 step 1→2;用户说不用就停 |
|
|
52
|
+
|
|
53
|
+
**第二步:用户同意部署 / 已明示部署后,按下表走完整链路并把最终 URL 返回给用户**:
|
|
54
|
+
|
|
55
|
+
| 步骤 | 命令 | 说明 |
|
|
56
|
+
|------|------|------|
|
|
57
|
+
| 1. 新建应用 | `apps +create --name "<根据内容主题起的应用名>" --app-type HTML` → 从响应里拿 `app_id` | 默认都走新建(**不要尝试搜索 / 枚举已有应用**)。用户明确要复用现有应用时让他提供 **妙搭应用链接** 或 **app_id 字符串**(详见下方"快速决策");`--app-type` 必填,当前只支持 `HTML`(区分大小写),未来扩展 |
|
|
58
|
+
| 1.5 预检 | `apps +html-publish --app-id <id> --path <path> --dry-run` 看 `warnings` 字段 | 命中 `.git` / `.env*` / `*.pem` / `*.key` 等敏感文件时**停下来**,把 warnings 列给用户看,确认要继续才走 step 2;用户没确认前不要去掉 `--dry-run` 真发 |
|
|
59
|
+
| 2. 发布 HTML | `apps +html-publish --app-id <id> --path <文件或目录>` | 必走 |
|
|
60
|
+
| 3. 设置可用范围(可选) | `apps +access-scope-set --app-id <id> --scope tenant\|public\|specific ...` | 用户说"公开 / 全员可见 / 让 Alice 看 / 互联网可分享"等 |
|
|
61
|
+
|
|
62
|
+
报告给用户的话术:
|
|
63
|
+
|
|
64
|
+
> 应用「{name}」已发布,访问链接:`{url}`
|
|
65
|
+
|
|
66
|
+
若用户没指定可用范围且场景明显需要分享,主动追问一句"要设为企业全员 / 互联网公开吗?",但不要为了问而问。
|
|
67
|
+
|
|
68
|
+
## 快速决策
|
|
69
|
+
|
|
70
|
+
- 用户**明示**"部署 / 发布 ./xxx 的 HTML"、"开发 xxx 并部署成可分享的网站 / 可访问的链接"、"发到妙搭" → 直接走「端到端流程」step 1→2,`apps +html-publish` 自动部署并返回 URL,不要追问
|
|
71
|
+
- 用户**只说**"用 HTML 写 PPT / 幻灯片 / 演示文稿 / demo"、"开发一个可演示的页面"(**没提**部署 / 分享 / URL) → HTML 写完先输出本地路径 + 简要说明,主动问一句"要部署到妙搭以便分享吗?",用户同意才走 publish;不要擅自部署,但也不要忘了问
|
|
72
|
+
- 用户说"把应用 X 开放给全员 / 全公司" → `--scope tenant`,不要再传别的 flag
|
|
73
|
+
- 用户说"公开 / 让任何人都能访问 / 互联网可见" → `--scope public --require-login=<bool>`,二选一
|
|
74
|
+
- 用户说"只让 Alice / 某部门 / 某群访问" → `--scope specific --targets <JSON>`;姓名先用 `contact +search-user` 换 `ou_id`,群名先用 `im +chat-search` 换 `chat_id`
|
|
75
|
+
- 用户没给 app_id → **默认 `apps +create --name "<根据内容主题起的名字>" --app-type HTML` 新建一个**。**不要尝试搜索 / 枚举已有应用** —— 列举应用的命令对 Agent 不可见,强行调用也只会浪费一次 OAPI 请求。如果用户明确要复用现有应用,**让他提供下列任一种**:
|
|
76
|
+
- **妙搭应用链接**:形如 `https://miaoda.feishu.cn/app/app_xxxxxxxxxxxxx`(或带尾斜杠 `/app/app_xxx/`)—— `app_id` 是 `/app/` 后面的 path segment(以 `app_` 开头)。从 URL 中提取的简单办法:`APP_ID=$(echo "$URL" | sed -E 's|.*/app/([^/?#]+).*|\1|')`
|
|
77
|
+
- **app_id 字符串**:用户直接给的 `app_xxxxxxxxxxxxx`,不需要再做处理
|
|
78
|
+
- `--path` 既可传单个 HTML 文件也可传目录;目录会**递归打包成 tar.gz 不做过滤**,要提醒用户传干净的产物目录(如 `./dist`),避免把 `.git` / `node_modules` 一起打进去
|
|
79
|
+
- `apps +update` 只更新传入字段,未传字段保持不变;`--name` / `--description` 至少传一个,否则 Validate 阶段直接拦截
|
|
80
|
+
- `apps +access-scope-set` 三种 scope **互斥**:specific 必传 `--targets`、不允许 `--require-login`;public 必传 `--require-login`、不允许 `--targets` / `--apply-enabled` / `--approver`;tenant 不允许任何其他 flag
|
|
81
|
+
- 失败时**优先转述 `error.hint`**(CLI 给的可执行修复建议),hint 为空时退回 `error.message`;不要原样把 envelope JSON 复述给用户
|
|
82
|
+
|
|
83
|
+
## Shortcuts(推荐优先使用)
|
|
84
|
+
|
|
85
|
+
Shortcut 是对常用操作的高级封装(`lark-cli apps +<verb> [flags]`)。有 Shortcut 的操作优先使用。
|
|
86
|
+
|
|
87
|
+
| Shortcut | 说明 |
|
|
88
|
+
|----------|------|
|
|
89
|
+
| [`+create`](references/lark-apps-create.md) | 创建妙搭应用(name / description / icon-url) |
|
|
90
|
+
| [`+update`](references/lark-apps-update.md) | 部分更新应用名 / 描述(只发传入字段) |
|
|
91
|
+
| [`+access-scope-set`](references/lark-apps-access-scope-set.md) | 设置应用可用范围(specific / public / tenant,三态互斥校验) |
|
|
92
|
+
| [`+html-publish`](references/lark-apps-html-publish.md) | **把本地 HTML 文件 / 目录 / PPT / 静态网站部署为可分享的妙搭应用,返回访问 URL**(用户明示部署 / 分享时直接调;仅说"可演示"时先问用户是否要部署再调) |
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# apps +access-scope-get
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
|
|
4
|
+
|
|
5
|
+
获取应用当前的可用范围配置。一次 `GET /apps/{appId}/access-scope` 调用,响应原样透传服务端契约(字符串 scope 枚举 + 拆分数组)。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
lark-cli apps +access-scope-get --app-id app_xxx
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 参数
|
|
14
|
+
|
|
15
|
+
| 参数 | 必填 | 说明 |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `--app-id <id>` | ✅ | 应用 ID |
|
|
18
|
+
|
|
19
|
+
## 返回值
|
|
20
|
+
|
|
21
|
+
**成功(specific,三种 target 类型混合):**
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"ok": true,
|
|
26
|
+
"data": {
|
|
27
|
+
"scope": "Range",
|
|
28
|
+
"users": ["ou_xxx", "ou_yyy"],
|
|
29
|
+
"departments": ["od_xxx"],
|
|
30
|
+
"chats": ["oc_xxx"],
|
|
31
|
+
"apply_config": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"approvers": ["ou_approver"]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**成功(public + 免登):**
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{ "ok": true, "data": { "scope": "All", "require_login": false } }
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**成功(tenant):**
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{ "ok": true, "data": { "scope": "Tenant" } }
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**失败:**
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{ "ok": false, "error": { "type": "api_error", "message": "...", "hint": "..." } }
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 字段语义
|
|
58
|
+
|
|
59
|
+
- `scope` 是**字符串枚举**:
|
|
60
|
+
- `"All"` = 互联网公开 — 对应 `apps +access-scope-set --scope public`
|
|
61
|
+
- `"Tenant"` = 组织内 — 对应 `--scope tenant`
|
|
62
|
+
- `"Range"` = 部分人员 — 对应 `--scope specific`
|
|
63
|
+
- `users` / `departments` / `chats` 三个数组(仅 `scope="Range"` 时):服务端拆分形态,CLI 不合并回统一 targets
|
|
64
|
+
- `apply_config`(可选,仅 `scope="Range"` 且申请开启时):含 `enabled` 和 `approvers`(只允许一个 user open_id)
|
|
65
|
+
- `require_login`(仅 `scope="All"` 时):bool
|
|
66
|
+
|
|
67
|
+
## 典型场景
|
|
68
|
+
|
|
69
|
+
### 场景 1:查看当前应用对谁可见
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
lark-cli apps +access-scope-get --app-id app_xxx
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
按 `scope` 值组装报告:
|
|
76
|
+
- `scope="All"` → "应用 `{app_id}` 当前互联网公开(require_login={require_login})"
|
|
77
|
+
- `scope="Tenant"` → "应用 `{app_id}` 当前对企业全员可见"
|
|
78
|
+
- `scope="Range"` → "应用 `{app_id}` 当前指定可见,包含 N 个用户 / M 个部门 / K 个群"
|
|
79
|
+
|
|
80
|
+
### 场景 2:把 GET 响应拼回 `+access-scope-set` 命令(复制 / 备份可用范围)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# 拼一个 --targets JSON 数组(jq)
|
|
84
|
+
lark-cli apps +access-scope-get --app-id app_src -q '
|
|
85
|
+
.data
|
|
86
|
+
| (.users // [] | map({type:"user", id:.}))
|
|
87
|
+
+ (.departments // [] | map({type:"department", id:.}))
|
|
88
|
+
+ (.chats // [] | map({type:"chat", id:.}))
|
|
89
|
+
'
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
得到 `[{"type":"user","id":"ou_x"}, ...]` 数组,可作为 `apps +access-scope-set --targets '...'` 的入参。
|
|
93
|
+
|
|
94
|
+
## 协同命令
|
|
95
|
+
|
|
96
|
+
| 场景 | 命令 |
|
|
97
|
+
|---|---|
|
|
98
|
+
| 设置可用范围 | `apps +access-scope-set` |
|
|
99
|
+
| 拿 app_id | 从用户提供的妙搭应用链接 `https://miaoda.feishu.cn/app/app_xxx` 的 `/app/` 后面提取,或让用户直接给 `app_xxx` 字符串(详见 `../SKILL.md`) |
|
|
100
|
+
|
|
101
|
+
## 参考
|
|
102
|
+
|
|
103
|
+
- [lark-apps](../SKILL.md)
|
|
104
|
+
- [lark-shared](../../lark-shared/SKILL.md)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# apps +access-scope-set
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
|
|
4
|
+
|
|
5
|
+
设置应用的可用范围。三种 scope 形态互斥:`specific`(指定可见)、`public`(互联网公开)、`tenant`(企业全员)。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 指定可见 + 允许申请(targets 支持 user / department / chat 三种类型)
|
|
11
|
+
lark-cli apps +access-scope-set --app-id app_xxx \
|
|
12
|
+
--scope specific \
|
|
13
|
+
--targets '[{"type":"user","id":"ou_xxx"},{"type":"department","id":"od_xxx"},{"type":"chat","id":"oc_xxx"}]' \
|
|
14
|
+
--apply-enabled \
|
|
15
|
+
--approver ou_yyy
|
|
16
|
+
|
|
17
|
+
# 互联网公开 + 免登
|
|
18
|
+
lark-cli apps +access-scope-set --app-id app_xxx --scope public --require-login=false
|
|
19
|
+
|
|
20
|
+
# 企业全员
|
|
21
|
+
lark-cli apps +access-scope-set --app-id app_xxx --scope tenant
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 参数
|
|
25
|
+
|
|
26
|
+
| 参数 | 必填 | 说明 |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `--app-id <id>` | ✅ | 应用 ID |
|
|
29
|
+
| `--scope <enum>` | ✅ | `specific` / `public` / `tenant` |
|
|
30
|
+
| `--targets <json>` | scope=specific 必填 | targets JSON 数组,每项 `{"type":"user\|department\|chat", "id":"<id>"}` |
|
|
31
|
+
| `--apply-enabled` | scope=specific 可选 | 是否允许申请访问 |
|
|
32
|
+
| `--approver <ou_xxx>` | `--apply-enabled` 必填 | 申请审批人(**只能传一个 user open_id**,服务端限制) |
|
|
33
|
+
| `--require-login` | scope=public 必填 | 是否要求登录 |
|
|
34
|
+
|
|
35
|
+
## 互斥校验(Validate 阶段,不通过直接报错不发请求)
|
|
36
|
+
|
|
37
|
+
- `scope=specific`:必传 `--targets`;不允许 `--require-login`
|
|
38
|
+
- `scope=public`:必传 `--require-login`;不允许 `--targets` / `--apply-enabled` / `--approver`
|
|
39
|
+
- `scope=tenant`:不允许任何其它 flag
|
|
40
|
+
- `--targets` 内每项的 `type` 必须是 `user` / `department` / `chat` 之一
|
|
41
|
+
|
|
42
|
+
## 返回值
|
|
43
|
+
|
|
44
|
+
**成功:**
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{ "ok": true, "data": {} }
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**API 失败:**
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{ "ok": false, "error": { "type": "api_error", "message": "...", "hint": "..." } }
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Validate 失败(互斥违反,CLI 本地校验):**
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{ "ok": false, "error": { "type": "validation", "message": "--targets is required when --scope=specific" } }
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 字段语义
|
|
63
|
+
|
|
64
|
+
- 成功时 `data` 为空对象,CLI 端基于 `--scope` 构造给用户的报告语
|
|
65
|
+
- Validate 错的 `error.type=validation` 是本地校验,**不发请求**
|
|
66
|
+
|
|
67
|
+
## 典型场景
|
|
68
|
+
|
|
69
|
+
### 场景 1:用户说"把应用 X 开放给全员"
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
lark-cli apps +access-scope-set --app-id app_xxx --scope tenant
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
> 应用 `{app_id}` 可用范围已设为企业全员。
|
|
76
|
+
|
|
77
|
+
### 场景 2:用户说"把应用 X 设为互联网公开 + 免登"
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
lark-cli apps +access-scope-set --app-id app_xxx --scope public --require-login=false
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
> 应用 `{app_id}` 可用范围已设为互联网公开(免登)。
|
|
84
|
+
|
|
85
|
+
### 场景 3:用户说"只让 Alice 和 Bob 访问应用 X"
|
|
86
|
+
|
|
87
|
+
先用 `lark-cli contact +search-user --query Alice` 拿到 ou_id,再调:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
lark-cli apps +access-scope-set --app-id app_xxx \
|
|
91
|
+
--scope specific \
|
|
92
|
+
--targets '[{"type":"user","id":"ou_alice"},{"type":"user","id":"ou_bob"}]'
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
> 应用 `{app_id}` 可用范围已设为指定可见,目标人数 2。
|
|
96
|
+
|
|
97
|
+
### 场景 4:用户说"开放给「项目讨论群」"
|
|
98
|
+
|
|
99
|
+
把群名转 chat_id:用 `lark-cli im +chat-search --query "项目讨论群"`,再调:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
lark-cli apps +access-scope-set --app-id app_xxx \
|
|
103
|
+
--scope specific \
|
|
104
|
+
--targets '[{"type":"chat","id":"oc_xxx"}]'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 场景 5:互斥违反
|
|
108
|
+
|
|
109
|
+
例如 `--scope tenant --targets ...` —— Validate 本地拦截。**不发请求**。
|
|
110
|
+
|
|
111
|
+
### 场景 6:API 失败
|
|
112
|
+
|
|
113
|
+
转述 `error.hint` / `error.message`。
|
|
114
|
+
|
|
115
|
+
## 协同命令
|
|
116
|
+
|
|
117
|
+
| 场景 | 命令 |
|
|
118
|
+
|---|---|
|
|
119
|
+
| 拿 app_id | 从用户提供的妙搭应用链接 `https://miaoda.feishu.cn/app/app_xxx` 的 `/app/` 后面提取,或让用户直接给 `app_xxx` 字符串(详见 `../SKILL.md`) |
|
|
120
|
+
| 把人名转 ou_id | `lark-cli contact +search-user --query <name>` |
|
|
121
|
+
| 把群名转 chat_id | `lark-cli im +chat-search --query <群名>` |
|
|
122
|
+
|
|
123
|
+
## 参考
|
|
124
|
+
|
|
125
|
+
- [lark-apps](../SKILL.md)
|
|
126
|
+
- [lark-shared](../../lark-shared/SKILL.md)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# apps +create
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
|
+
|
|
5
|
+
创建一个新的妙搭应用。一次 `POST /apps` 调用,返回新建应用的元信息。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 最小调用
|
|
11
|
+
lark-cli apps +create --name "客户调研问卷" --app-type HTML
|
|
12
|
+
|
|
13
|
+
# 全参数
|
|
14
|
+
lark-cli apps +create \
|
|
15
|
+
--name "客户调研问卷" \
|
|
16
|
+
--app-type HTML \
|
|
17
|
+
--description "本季度客户满意度调研" \
|
|
18
|
+
--icon-url "https://lf3-static.bytednsdoc.com/.../feisuda/avatar/5.svg"
|
|
19
|
+
|
|
20
|
+
# Dry-run(仅打印请求,不执行)
|
|
21
|
+
lark-cli apps +create --name "Demo" --app-type HTML --dry-run
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 参数
|
|
25
|
+
|
|
26
|
+
| 参数 | 必填 | 说明 |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `--name <str>` | ✅ | 应用显示名 |
|
|
29
|
+
| `--app-type <enum>` | ✅ | 应用类型,当前可选值:`HTML`(区分大小写;未来会扩展) |
|
|
30
|
+
| `--description <str>` | ❌ | 应用描述 |
|
|
31
|
+
| `--icon-url <url>` | ❌ | 应用图标 URL;不传服务端给默认图标 |
|
|
32
|
+
|
|
33
|
+
## 返回值
|
|
34
|
+
|
|
35
|
+
**成功:**
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"ok": true,
|
|
40
|
+
"data": {
|
|
41
|
+
"app_id": "app_4k5jepcbjmv6m",
|
|
42
|
+
"name": "客户调研问卷",
|
|
43
|
+
"description": "本季度客户满意度调研",
|
|
44
|
+
"icon_url": "https://lf3-static.bytednsdoc.com/.../feisuda/avatar/5.svg",
|
|
45
|
+
"created_at": "2026-05-18T10:00:00Z"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**失败:**
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"ok": false,
|
|
55
|
+
"error": {
|
|
56
|
+
"type": "api_error",
|
|
57
|
+
"code": "api_error",
|
|
58
|
+
"message": "...",
|
|
59
|
+
"hint": "可执行的修复建议(可能为空)"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 字段语义
|
|
65
|
+
|
|
66
|
+
- `app_type` 是应用类型枚举,**区分大小写**,当前只允许 `HTML`,未来会扩展(如 `SPA`、`NATIVE` 等);不在白名单的取值 CLI 端会直接拒绝
|
|
67
|
+
- `created_at` 是 ISO 8601 UTC 时间字符串
|
|
68
|
+
- `error.hint` 是 CLI 给出的可执行修复建议,**优先**转述给用户;hint 为空时退回 `error.message`
|
|
69
|
+
- 不要原样把 envelope JSON 复述给用户
|
|
70
|
+
|
|
71
|
+
## 典型场景
|
|
72
|
+
|
|
73
|
+
### 场景 1:用户说"创建一个妙搭应用,名字叫 X"
|
|
74
|
+
|
|
75
|
+
目前只支持 HTML 类型,统一传 `--app-type HTML`(用户没说类型时不要追问,直接用大写 HTML,区分大小写):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
lark-cli apps +create --name "X" --app-type HTML
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
向用户报告:
|
|
82
|
+
|
|
83
|
+
> 应用「{name}」已创建(ID: `{app_id}`)。
|
|
84
|
+
|
|
85
|
+
可选建议下一步:
|
|
86
|
+
|
|
87
|
+
> 接下来用 `apps +html-publish --app-id {app_id} --path <你的 HTML 目录>` 发布内容。
|
|
88
|
+
|
|
89
|
+
### 场景 2:用户提供完整元信息
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
lark-cli apps +create --name "Q4 调研" --app-type HTML --description "..."
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
返回后同场景 1。
|
|
96
|
+
|
|
97
|
+
### 场景 3:失败处理
|
|
98
|
+
|
|
99
|
+
转述 `error.hint`(优先)或 `error.message`,**不要**原样输出 envelope JSON。
|
|
100
|
+
|
|
101
|
+
## 协同命令
|
|
102
|
+
|
|
103
|
+
| 场景 | 命令 |
|
|
104
|
+
|---|---|
|
|
105
|
+
| 修改应用名 / 描述 | `apps +update` |
|
|
106
|
+
| 发布 HTML | `apps +html-publish` |
|
|
107
|
+
| 拿现有应用 ID | 从用户提供的妙搭应用链接 `https://miaoda.feishu.cn/app/app_xxx` 的 `/app/` 后面提取,或让用户直接给 `app_xxx` 字符串(详见 `../SKILL.md`) |
|
|
108
|
+
|
|
109
|
+
## 参考
|
|
110
|
+
|
|
111
|
+
- [lark-apps](../SKILL.md) — 妙搭应用全部命令
|
|
112
|
+
- [lark-shared](../../lark-shared/SKILL.md) — 认证和全局参数
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# apps +html-publish
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md)。
|
|
4
|
+
|
|
5
|
+
把本地的 HTML 文件或目录部署为可访问的妙搭应用,响应返回应用的访问链接 `url`。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 发布整个目录
|
|
11
|
+
lark-cli apps +html-publish --app-id app_xxx --path ./dist/
|
|
12
|
+
|
|
13
|
+
# 发布单个 HTML 文件
|
|
14
|
+
lark-cli apps +html-publish --app-id app_xxx --path ./index.html
|
|
15
|
+
|
|
16
|
+
# 预演(打印文件清单 + SHA256 + 目标 endpoint,不发请求)
|
|
17
|
+
lark-cli apps +html-publish --app-id app_xxx --path ./dist --dry-run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 参数
|
|
21
|
+
|
|
22
|
+
| 参数 | 必填 | 说明 |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `--app-id <id>` | ✅ | 应用 ID。从 `apps +create` 响应里拿;或者从用户给的妙搭应用链接 `https://miaoda.feishu.cn/app/app_xxx` 的 `/app/` 后面提取(详见 `../SKILL.md` "用户没给 app_id" 一节) |
|
|
25
|
+
| `--path <path>` | ✅ | 本地文件或目录路径;目录会递归打包成 tar.gz。**必须含 `index.html`**:目录形态时根目录下,单文件形态时文件名必须就是 `index.html`(妙搭统一以 `index.html` 作为应用入口) |
|
|
26
|
+
|
|
27
|
+
## 返回值
|
|
28
|
+
|
|
29
|
+
**成功:**
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"ok": true,
|
|
34
|
+
"data": {
|
|
35
|
+
"url": "https://miaoda.feishu.cn/app/app_4k5jepcbjmv6m"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**业务失败(如构建失败、应用不存在):**
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"ok": false,
|
|
45
|
+
"error": {
|
|
46
|
+
"type": "api_error",
|
|
47
|
+
"code": "api_error",
|
|
48
|
+
"message": "html-publish failed (code=90001): build failed: dependency conflict",
|
|
49
|
+
"hint": "构建失败:用 `lark-cli apps +html-publish --path <path> --dry-run` 检查打包文件清单"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**基础设施失败(网络 / HTTP 5xx):**
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"ok": false,
|
|
59
|
+
"error": { "type": "infra_error", "message": "...", "hint": "" }
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Validate 失败(本地校验,如缺 --app-id):**
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"ok": false,
|
|
68
|
+
"error": { "type": "validation", "message": "--app-id is required" }
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 字段语义
|
|
73
|
+
|
|
74
|
+
| 字段 / 组合 | 含义 |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `data.url` 存在且无 `error` | 发布成功,URL 可访问 |
|
|
77
|
+
| `error.type=api_error` | 业务失败(构建失败、应用不存在等),按 `hint` 引导用户修复 |
|
|
78
|
+
| `error.type=infra_error` | 网络 / 服务端 5xx,告诉用户稍后重试 |
|
|
79
|
+
| `error.type=validation` | 本地参数错,提示用户修 flag |
|
|
80
|
+
| `error.hint` 非空 | **优先转述给用户**,比 `error.message` 更可操作 |
|
|
81
|
+
|
|
82
|
+
## 典型场景
|
|
83
|
+
|
|
84
|
+
### 场景 1:用户说"把这个目录发布到妙搭"
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
lark-cli apps +html-publish --app-id app_xxx --path ./dist
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
成功后:
|
|
91
|
+
|
|
92
|
+
> 应用发布成功!访问 `{url}` 查看。
|
|
93
|
+
|
|
94
|
+
可选追加:
|
|
95
|
+
|
|
96
|
+
> 如需让其他人访问,可以用 `apps +access-scope-set` 设置可用范围。
|
|
97
|
+
|
|
98
|
+
### 场景 2:用户没有 app_id
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
APP=$(lark-cli apps +create --name "..." -q '.data.app_id' | tr -d '"')
|
|
102
|
+
lark-cli apps +html-publish --app-id "$APP" --path ./dist
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 场景 3:构建失败(code=90001)
|
|
106
|
+
|
|
107
|
+
转述 hint:
|
|
108
|
+
|
|
109
|
+
> 构建失败,建议用 `lark-cli apps +html-publish --app-id <your-app-id> --path ./dist --dry-run` 看一下打包文件清单是否完整。
|
|
110
|
+
|
|
111
|
+
### 场景 4:应用不存在(code=90002)
|
|
112
|
+
|
|
113
|
+
> hint:"应用不存在或无权访问;请用户确认妙搭应用链接 / app_id 是否正确(从 `https://miaoda.feishu.cn/app/app_xxx` 的 `/app/` 后面取)"
|
|
114
|
+
|
|
115
|
+
转述给用户。
|
|
116
|
+
|
|
117
|
+
### 场景 5:网络 / 服务端失败(infra_error)
|
|
118
|
+
|
|
119
|
+
> 服务暂时不可用,建议稍后重试。
|
|
120
|
+
|
|
121
|
+
## 敏感文件警告
|
|
122
|
+
|
|
123
|
+
dry-run 输出会扫描 manifest 里的相对路径,命中以下任一模式时把它们列入 envelope 的 `warnings` 字段(advisory,不阻断 dry-run):
|
|
124
|
+
|
|
125
|
+
- `.git/`(任意 SCM 内部文件)
|
|
126
|
+
- `.env` 或 `.env.*`(环境变量 / API key)
|
|
127
|
+
- `.npmrc` / `.netrc`(HTTP 凭据)
|
|
128
|
+
- `.ssh/id_rsa*` / `.ssh/id_ed25519*` / `.ssh/id_ecdsa*` / `.ssh/id_dsa*`
|
|
129
|
+
- `.aws/credentials` / `.aws/config` / `.docker/config.json` / `.gcloud/...` / `.kube/...`
|
|
130
|
+
- `*.pem` / `*.key`(私钥)
|
|
131
|
+
|
|
132
|
+
**Agent 行为契约**:dry-run 看到 `warnings` 非空,**必须停下来向用户报告并询问是否继续**;用户确认后才能调真实的 `apps +html-publish`(去掉 `--dry-run`)。
|
|
133
|
+
|
|
134
|
+
## 提示
|
|
135
|
+
|
|
136
|
+
- `--path` **不能等于 cwd**(`.` 或 cwd 等价写法均拒)。原因:递归打包 + 互联网公开的组合下,cwd 根的项目级文件(`.git/` / `.env` / `node_modules` / `.aws/credentials`)会被一并打包并通过 share URL 公开访问。强制指定具体子目录或文件,如 `./dist` / `./public/` / `./index.html`
|
|
137
|
+
- `--path` **必须**是 cwd 内的相对路径(如 `./dist`、`./index.html`);绝对路径或越界路径(`../`、`/Users/...`)CLI 会直接拒绝。需要发布 cwd 外的目录时,先切到 agent 工作目录再调,**不要**私自 `cd` 绕过
|
|
138
|
+
- 目录打包成 tar.gz 时**不做过滤**(`.git` / `node_modules` 等会一并打包),让用户传干净的产物目录(如 `./dist`)
|
|
139
|
+
- **不要**原样把 envelope JSON 转述给用户
|
|
140
|
+
|
|
141
|
+
## 协同命令
|
|
142
|
+
|
|
143
|
+
| 场景 | 命令 |
|
|
144
|
+
|---|---|
|
|
145
|
+
| 创建新应用 | `apps +create` |
|
|
146
|
+
| 设置可用范围 | `apps +access-scope-set` |
|
|
147
|
+
|
|
148
|
+
## 参考
|
|
149
|
+
|
|
150
|
+
- [lark-apps](../SKILL.md)
|
|
151
|
+
- [lark-shared](../../lark-shared/SKILL.md)
|