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.
Files changed (407) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/src/bot.d.ts +29 -0
  4. package/dist/src/bot.js +75 -0
  5. package/dist/src/cards.d.ts +6 -0
  6. package/dist/src/cards.js +87 -0
  7. package/dist/src/config.d.ts +3 -0
  8. package/dist/src/config.js +28 -0
  9. package/dist/src/daemon.d.ts +2 -0
  10. package/dist/src/daemon.js +151 -0
  11. package/dist/src/extension.d.ts +2 -0
  12. package/dist/src/extension.js +124 -0
  13. package/dist/src/poller.d.ts +33 -0
  14. package/dist/src/poller.js +94 -0
  15. package/dist/src/renderer.d.ts +8 -0
  16. package/dist/src/renderer.js +31 -0
  17. package/dist/src/session-registry.d.ts +15 -0
  18. package/dist/src/session-registry.js +82 -0
  19. package/dist/src/types.d.ts +25 -0
  20. package/dist/src/types.js +1 -0
  21. package/dist/tests/bot.test.d.ts +1 -0
  22. package/dist/tests/bot.test.js +89 -0
  23. package/dist/tests/cards.test.d.ts +1 -0
  24. package/dist/tests/cards.test.js +39 -0
  25. package/dist/tests/config.test.d.ts +1 -0
  26. package/dist/tests/config.test.js +59 -0
  27. package/dist/tests/renderer.test.d.ts +1 -0
  28. package/dist/tests/renderer.test.js +61 -0
  29. package/dist/tests/session-registry.test.d.ts +1 -0
  30. package/dist/tests/session-registry.test.js +92 -0
  31. package/dist/tests/types.test.d.ts +1 -0
  32. package/dist/tests/types.test.js +30 -0
  33. package/package.json +35 -0
  34. package/skills/lark-approval/SKILL.md +56 -0
  35. package/skills/lark-apps/SKILL.md +92 -0
  36. package/skills/lark-apps/references/lark-apps-access-scope-get.md +104 -0
  37. package/skills/lark-apps/references/lark-apps-access-scope-set.md +126 -0
  38. package/skills/lark-apps/references/lark-apps-create.md +112 -0
  39. package/skills/lark-apps/references/lark-apps-html-publish.md +151 -0
  40. package/skills/lark-apps/references/lark-apps-list.md +95 -0
  41. package/skills/lark-apps/references/lark-apps-update.md +86 -0
  42. package/skills/lark-attendance/SKILL.md +57 -0
  43. package/skills/lark-base/SKILL.md +359 -0
  44. package/skills/lark-base/references/dashboard-block-data-config.md +350 -0
  45. package/skills/lark-base/references/examples.md +140 -0
  46. package/skills/lark-base/references/formula-field-guide.md +737 -0
  47. package/skills/lark-base/references/lark-base-advperm-disable.md +83 -0
  48. package/skills/lark-base/references/lark-base-advperm-enable.md +80 -0
  49. package/skills/lark-base/references/lark-base-base-copy.md +74 -0
  50. package/skills/lark-base/references/lark-base-base-create.md +68 -0
  51. package/skills/lark-base/references/lark-base-base-get.md +39 -0
  52. package/skills/lark-base/references/lark-base-cell-value.md +151 -0
  53. package/skills/lark-base/references/lark-base-dashboard-arrange.md +83 -0
  54. package/skills/lark-base/references/lark-base-dashboard-block-create.md +108 -0
  55. package/skills/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
  56. package/skills/lark-base/references/lark-base-dashboard-block-get.md +57 -0
  57. package/skills/lark-base/references/lark-base-dashboard-block-list.md +53 -0
  58. package/skills/lark-base/references/lark-base-dashboard-block-update.md +84 -0
  59. package/skills/lark-base/references/lark-base-dashboard-create.md +73 -0
  60. package/skills/lark-base/references/lark-base-dashboard-delete.md +44 -0
  61. package/skills/lark-base/references/lark-base-dashboard-get.md +59 -0
  62. package/skills/lark-base/references/lark-base-dashboard-list.md +52 -0
  63. package/skills/lark-base/references/lark-base-dashboard-update.md +69 -0
  64. package/skills/lark-base/references/lark-base-dashboard.md +240 -0
  65. package/skills/lark-base/references/lark-base-data-analysis-sop.md +88 -0
  66. package/skills/lark-base/references/lark-base-data-query.md +375 -0
  67. package/skills/lark-base/references/lark-base-field-create.md +104 -0
  68. package/skills/lark-base/references/lark-base-field-delete.md +51 -0
  69. package/skills/lark-base/references/lark-base-field-get.md +42 -0
  70. package/skills/lark-base/references/lark-base-field-list.md +44 -0
  71. package/skills/lark-base/references/lark-base-field-search-options.md +48 -0
  72. package/skills/lark-base/references/lark-base-field-update.md +97 -0
  73. package/skills/lark-base/references/lark-base-field.md +22 -0
  74. package/skills/lark-base/references/lark-base-form-create.md +87 -0
  75. package/skills/lark-base/references/lark-base-form-delete.md +64 -0
  76. package/skills/lark-base/references/lark-base-form-detail.md +198 -0
  77. package/skills/lark-base/references/lark-base-form-get.md +68 -0
  78. package/skills/lark-base/references/lark-base-form-list.md +73 -0
  79. package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
  80. package/skills/lark-base/references/lark-base-form-questions-delete.md +68 -0
  81. package/skills/lark-base/references/lark-base-form-questions-list.md +84 -0
  82. package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
  83. package/skills/lark-base/references/lark-base-form-questions.md +23 -0
  84. package/skills/lark-base/references/lark-base-form-submit.md +171 -0
  85. package/skills/lark-base/references/lark-base-form-update.md +82 -0
  86. package/skills/lark-base/references/lark-base-form.md +25 -0
  87. package/skills/lark-base/references/lark-base-history.md +16 -0
  88. package/skills/lark-base/references/lark-base-record-batch-create.md +58 -0
  89. package/skills/lark-base/references/lark-base-record-batch-update.md +53 -0
  90. package/skills/lark-base/references/lark-base-record-delete.md +62 -0
  91. package/skills/lark-base/references/lark-base-record-history-list.md +86 -0
  92. package/skills/lark-base/references/lark-base-record-share-link-create.md +72 -0
  93. package/skills/lark-base/references/lark-base-record-upsert.md +64 -0
  94. package/skills/lark-base/references/lark-base-record.md +31 -0
  95. package/skills/lark-base/references/lark-base-role-create.md +89 -0
  96. package/skills/lark-base/references/lark-base-role-delete.md +83 -0
  97. package/skills/lark-base/references/lark-base-role-get.md +87 -0
  98. package/skills/lark-base/references/lark-base-role-list.md +81 -0
  99. package/skills/lark-base/references/lark-base-role-update.md +94 -0
  100. package/skills/lark-base/references/lark-base-shortcut-field-properties.md +481 -0
  101. package/skills/lark-base/references/lark-base-table-create.md +62 -0
  102. package/skills/lark-base/references/lark-base-table-delete.md +51 -0
  103. package/skills/lark-base/references/lark-base-table-get.md +46 -0
  104. package/skills/lark-base/references/lark-base-table-list.md +43 -0
  105. package/skills/lark-base/references/lark-base-table-update.md +49 -0
  106. package/skills/lark-base/references/lark-base-table.md +20 -0
  107. package/skills/lark-base/references/lark-base-view-create.md +50 -0
  108. package/skills/lark-base/references/lark-base-view-delete.md +48 -0
  109. package/skills/lark-base/references/lark-base-view-get-card.md +38 -0
  110. package/skills/lark-base/references/lark-base-view-get-filter.md +38 -0
  111. package/skills/lark-base/references/lark-base-view-get-group.md +38 -0
  112. package/skills/lark-base/references/lark-base-view-get-sort.md +38 -0
  113. package/skills/lark-base/references/lark-base-view-get-timebar.md +38 -0
  114. package/skills/lark-base/references/lark-base-view-get-visible-fields.md +28 -0
  115. package/skills/lark-base/references/lark-base-view-get.md +38 -0
  116. package/skills/lark-base/references/lark-base-view-list.md +44 -0
  117. package/skills/lark-base/references/lark-base-view-rename.md +44 -0
  118. package/skills/lark-base/references/lark-base-view-set-card.md +55 -0
  119. package/skills/lark-base/references/lark-base-view-set-filter.md +181 -0
  120. package/skills/lark-base/references/lark-base-view-set-group.md +65 -0
  121. package/skills/lark-base/references/lark-base-view-set-sort.md +63 -0
  122. package/skills/lark-base/references/lark-base-view-set-timebar.md +51 -0
  123. package/skills/lark-base/references/lark-base-view-set-visible-fields.md +46 -0
  124. package/skills/lark-base/references/lark-base-view.md +44 -0
  125. package/skills/lark-base/references/lark-base-workflow-create.md +180 -0
  126. package/skills/lark-base/references/lark-base-workflow-disable.md +94 -0
  127. package/skills/lark-base/references/lark-base-workflow-enable.md +94 -0
  128. package/skills/lark-base/references/lark-base-workflow-get.md +147 -0
  129. package/skills/lark-base/references/lark-base-workflow-guide.md +718 -0
  130. package/skills/lark-base/references/lark-base-workflow-list.md +124 -0
  131. package/skills/lark-base/references/lark-base-workflow-schema.md +935 -0
  132. package/skills/lark-base/references/lark-base-workflow-update.md +167 -0
  133. package/skills/lark-base/references/lark-base-workflow.md +23 -0
  134. package/skills/lark-base/references/lark-base-workspace.md +18 -0
  135. package/skills/lark-base/references/lookup-field-guide.md +512 -0
  136. package/skills/lark-base/references/role-config.md +539 -0
  137. package/skills/lark-calendar/SKILL.md +154 -0
  138. package/skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
  139. package/skills/lark-calendar/references/lark-calendar-create.md +109 -0
  140. package/skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
  141. package/skills/lark-calendar/references/lark-calendar-room-find.md +113 -0
  142. package/skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
  143. package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
  144. package/skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
  145. package/skills/lark-calendar/references/lark-calendar-update.md +105 -0
  146. package/skills/lark-contact/SKILL.md +45 -0
  147. package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
  148. package/skills/lark-contact/references/lark-contact-search-user.md +124 -0
  149. package/skills/lark-doc/SKILL.md +65 -0
  150. package/skills/lark-doc/references/lark-doc-create.md +89 -0
  151. package/skills/lark-doc/references/lark-doc-fetch.md +141 -0
  152. package/skills/lark-doc/references/lark-doc-md.md +71 -0
  153. package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
  154. package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
  155. package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
  156. package/skills/lark-doc/references/lark-doc-update.md +252 -0
  157. package/skills/lark-doc/references/lark-doc-whiteboard.md +100 -0
  158. package/skills/lark-doc/references/lark-doc-xml.md +169 -0
  159. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +56 -0
  160. package/skills/lark-doc/references/style/lark-doc-style.md +106 -0
  161. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +54 -0
  162. package/skills/lark-drive/SKILL.md +369 -0
  163. package/skills/lark-drive/references/lark-drive-add-comment.md +182 -0
  164. package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
  165. package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
  166. package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
  167. package/skills/lark-drive/references/lark-drive-delete.md +79 -0
  168. package/skills/lark-drive/references/lark-drive-download.md +31 -0
  169. package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
  170. package/skills/lark-drive/references/lark-drive-export.md +119 -0
  171. package/skills/lark-drive/references/lark-drive-import.md +159 -0
  172. package/skills/lark-drive/references/lark-drive-inspect.md +50 -0
  173. package/skills/lark-drive/references/lark-drive-move.md +120 -0
  174. package/skills/lark-drive/references/lark-drive-pull.md +137 -0
  175. package/skills/lark-drive/references/lark-drive-push.md +162 -0
  176. package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
  177. package/skills/lark-drive/references/lark-drive-search.md +266 -0
  178. package/skills/lark-drive/references/lark-drive-status.md +198 -0
  179. package/skills/lark-drive/references/lark-drive-task-result.md +302 -0
  180. package/skills/lark-drive/references/lark-drive-upload.md +67 -0
  181. package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
  182. package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
  183. package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
  184. package/skills/lark-drive/references/lark-drive-version-revert.md +198 -0
  185. package/skills/lark-event/SKILL.md +145 -0
  186. package/skills/lark-event/references/lark-event-im.md +86 -0
  187. package/skills/lark-im/SKILL.md +162 -0
  188. package/skills/lark-im/references/lark-im-chat-create.md +162 -0
  189. package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
  190. package/skills/lark-im/references/lark-im-chat-list.md +198 -0
  191. package/skills/lark-im/references/lark-im-chat-messages-list.md +148 -0
  192. package/skills/lark-im/references/lark-im-chat-search.md +136 -0
  193. package/skills/lark-im/references/lark-im-chat-update.md +84 -0
  194. package/skills/lark-im/references/lark-im-flag-cancel.md +198 -0
  195. package/skills/lark-im/references/lark-im-flag-create.md +67 -0
  196. package/skills/lark-im/references/lark-im-flag-list.md +100 -0
  197. package/skills/lark-im/references/lark-im-messages-mget.md +95 -0
  198. package/skills/lark-im/references/lark-im-messages-reply.md +228 -0
  199. package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
  200. package/skills/lark-im/references/lark-im-messages-search.md +232 -0
  201. package/skills/lark-im/references/lark-im-messages-send.md +229 -0
  202. package/skills/lark-im/references/lark-im-reactions.md +297 -0
  203. package/skills/lark-im/references/lark-im-threads-messages-list.md +111 -0
  204. package/skills/lark-mail/SKILL.md +648 -0
  205. package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
  206. package/skills/lark-mail/references/lark-mail-draft-create.md +123 -0
  207. package/skills/lark-mail/references/lark-mail-draft-edit.md +400 -0
  208. package/skills/lark-mail/references/lark-mail-forward.md +173 -0
  209. package/skills/lark-mail/references/lark-mail-message.md +230 -0
  210. package/skills/lark-mail/references/lark-mail-messages.md +108 -0
  211. package/skills/lark-mail/references/lark-mail-reply-all.md +206 -0
  212. package/skills/lark-mail/references/lark-mail-reply.md +242 -0
  213. package/skills/lark-mail/references/lark-mail-send-receipt.md +198 -0
  214. package/skills/lark-mail/references/lark-mail-send.md +216 -0
  215. package/skills/lark-mail/references/lark-mail-share-to-chat.md +198 -0
  216. package/skills/lark-mail/references/lark-mail-signature.md +98 -0
  217. package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
  218. package/skills/lark-mail/references/lark-mail-template-update.md +198 -0
  219. package/skills/lark-mail/references/lark-mail-thread.md +111 -0
  220. package/skills/lark-mail/references/lark-mail-triage.md +122 -0
  221. package/skills/lark-mail/references/lark-mail-watch.md +94 -0
  222. package/skills/lark-minutes/SKILL.md +139 -0
  223. package/skills/lark-minutes/references/lark-minutes-download.md +137 -0
  224. package/skills/lark-minutes/references/lark-minutes-search.md +206 -0
  225. package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
  226. package/skills/lark-okr/SKILL.md +133 -0
  227. package/skills/lark-okr/references/lark-okr-contentblock.md +359 -0
  228. package/skills/lark-okr/references/lark-okr-cycle-detail.md +84 -0
  229. package/skills/lark-okr/references/lark-okr-cycle-list.md +90 -0
  230. package/skills/lark-okr/references/lark-okr-entities.md +329 -0
  231. package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
  232. package/skills/lark-okr/references/lark-okr-progress-create.md +81 -0
  233. package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
  234. package/skills/lark-okr/references/lark-okr-progress-get.md +62 -0
  235. package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
  236. package/skills/lark-okr/references/lark-okr-progress-update.md +81 -0
  237. package/skills/lark-openapi-explorer/SKILL.md +153 -0
  238. package/skills/lark-shared/SKILL.md +144 -0
  239. package/skills/lark-sheets/SKILL.md +343 -0
  240. package/skills/lark-sheets/references/lark-sheets-cell-data.md +197 -0
  241. package/skills/lark-sheets/references/lark-sheets-cell-images.md +59 -0
  242. package/skills/lark-sheets/references/lark-sheets-cell-style-and-merge.md +141 -0
  243. package/skills/lark-sheets/references/lark-sheets-dropdown.md +133 -0
  244. package/skills/lark-sheets/references/lark-sheets-filter-views.md +193 -0
  245. package/skills/lark-sheets/references/lark-sheets-float-images.md +125 -0
  246. package/skills/lark-sheets/references/lark-sheets-formula.md +88 -0
  247. package/skills/lark-sheets/references/lark-sheets-row-column-management.md +151 -0
  248. package/skills/lark-sheets/references/lark-sheets-sheet-management.md +164 -0
  249. package/skills/lark-sheets/references/lark-sheets-spreadsheet-management.md +140 -0
  250. package/skills/lark-skill-maker/SKILL.md +85 -0
  251. package/skills/lark-slides/SKILL.md +296 -0
  252. package/skills/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
  253. package/skills/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
  254. package/skills/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
  255. package/skills/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
  256. package/skills/lark-slides/assets/templates/hr--employee_training.xml +912 -0
  257. package/skills/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
  258. package/skills/lark-slides/assets/templates/hr--onboarding.xml +933 -0
  259. package/skills/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
  260. package/skills/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
  261. package/skills/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
  262. package/skills/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
  263. package/skills/lark-slides/assets/templates/marketing--marketing_plan.xml +198 -0
  264. package/skills/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
  265. package/skills/lark-slides/assets/templates/marketing--product_whitepaper.xml +198 -0
  266. package/skills/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
  267. package/skills/lark-slides/assets/templates/misc--book_sharing.xml +198 -0
  268. package/skills/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
  269. package/skills/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
  270. package/skills/lark-slides/assets/templates/office--dark_general.xml +3763 -0
  271. package/skills/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
  272. package/skills/lark-slides/assets/templates/office--light_general.xml +3378 -0
  273. package/skills/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
  274. package/skills/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
  275. package/skills/lark-slides/assets/templates/office--work_report.xml +1099 -0
  276. package/skills/lark-slides/assets/templates/office--work_summary.xml +4420 -0
  277. package/skills/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
  278. package/skills/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
  279. package/skills/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
  280. package/skills/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
  281. package/skills/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
  282. package/skills/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
  283. package/skills/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
  284. package/skills/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
  285. package/skills/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
  286. package/skills/lark-slides/assets/templates/personal--self_intro.xml +696 -0
  287. package/skills/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
  288. package/skills/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
  289. package/skills/lark-slides/assets/templates/product--market_analysis.xml +898 -0
  290. package/skills/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
  291. package/skills/lark-slides/assets/templates/product--product_intro.xml +2838 -0
  292. package/skills/lark-slides/assets/templates/product--product_promotion.xml +687 -0
  293. package/skills/lark-slides/assets/templates/product--product_promotion_2.xml +198 -0
  294. package/skills/lark-slides/references/asset-planning.md +124 -0
  295. package/skills/lark-slides/references/examples.md +261 -0
  296. package/skills/lark-slides/references/lark-slides-create.md +137 -0
  297. package/skills/lark-slides/references/lark-slides-edit-workflows.md +142 -0
  298. package/skills/lark-slides/references/lark-slides-media-upload.md +128 -0
  299. package/skills/lark-slides/references/lark-slides-replace-slide.md +239 -0
  300. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +220 -0
  301. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
  302. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
  303. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +186 -0
  304. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
  305. package/skills/lark-slides/references/planning-layer.md +219 -0
  306. package/skills/lark-slides/references/slide-templates.md +201 -0
  307. package/skills/lark-slides/references/slides_demo.xml +226 -0
  308. package/skills/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
  309. package/skills/lark-slides/references/template-catalog.md +463 -0
  310. package/skills/lark-slides/references/template-index.json +198 -0
  311. package/skills/lark-slides/references/troubleshooting.md +198 -0
  312. package/skills/lark-slides/references/validation-checklist.md +102 -0
  313. package/skills/lark-slides/references/visual-planning.md +250 -0
  314. package/skills/lark-slides/references/xml-format-guide.md +369 -0
  315. package/skills/lark-slides/references/xml-schema-quick-ref.md +215 -0
  316. package/skills/lark-slides/scripts/template_tool.py +970 -0
  317. package/skills/lark-slides/scripts/template_tool_test.py +177 -0
  318. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +367 -0
  319. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +263 -0
  320. package/skills/lark-task/SKILL.md +165 -0
  321. package/skills/lark-task/references/lark-task-assign.md +38 -0
  322. package/skills/lark-task/references/lark-task-comment.md +28 -0
  323. package/skills/lark-task/references/lark-task-complete.md +27 -0
  324. package/skills/lark-task/references/lark-task-create.md +57 -0
  325. package/skills/lark-task/references/lark-task-followers.md +35 -0
  326. package/skills/lark-task/references/lark-task-get-my-tasks.md +55 -0
  327. package/skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
  328. package/skills/lark-task/references/lark-task-reminder.md +36 -0
  329. package/skills/lark-task/references/lark-task-reopen.md +27 -0
  330. package/skills/lark-task/references/lark-task-search.md +41 -0
  331. package/skills/lark-task/references/lark-task-set-ancestor.md +32 -0
  332. package/skills/lark-task/references/lark-task-subscribe-event.md +86 -0
  333. package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
  334. package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
  335. package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
  336. package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
  337. package/skills/lark-task/references/lark-task-update.md +37 -0
  338. package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
  339. package/skills/lark-vc/SKILL.md +168 -0
  340. package/skills/lark-vc/references/lark-vc-notes.md +126 -0
  341. package/skills/lark-vc/references/lark-vc-recording.md +153 -0
  342. package/skills/lark-vc/references/lark-vc-search.md +193 -0
  343. package/skills/lark-vc-agent/SKILL.md +121 -0
  344. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +247 -0
  345. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +133 -0
  346. package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +111 -0
  347. package/skills/lark-whiteboard/SKILL.md +144 -0
  348. package/skills/lark-whiteboard/references/connectors.md +102 -0
  349. package/skills/lark-whiteboard/references/content.md +40 -0
  350. package/skills/lark-whiteboard/references/image.md +80 -0
  351. package/skills/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
  352. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +100 -0
  353. package/skills/lark-whiteboard/references/layout.md +374 -0
  354. package/skills/lark-whiteboard/references/schema.md +357 -0
  355. package/skills/lark-whiteboard/references/style.md +318 -0
  356. package/skills/lark-whiteboard/references/typography.md +73 -0
  357. package/skills/lark-whiteboard/routes/dsl.md +107 -0
  358. package/skills/lark-whiteboard/routes/mermaid.md +27 -0
  359. package/skills/lark-whiteboard/routes/svg.md +54 -0
  360. package/skills/lark-whiteboard/scenes/architecture.md +433 -0
  361. package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
  362. package/skills/lark-whiteboard/scenes/comparison.md +135 -0
  363. package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
  364. package/skills/lark-whiteboard/scenes/flowchart.md +198 -0
  365. package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
  366. package/skills/lark-whiteboard/scenes/funnel.md +198 -0
  367. package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
  368. package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
  369. package/skills/lark-whiteboard/scenes/milestone.md +139 -0
  370. package/skills/lark-whiteboard/scenes/organization.md +173 -0
  371. package/skills/lark-whiteboard/scenes/photo-showcase.md +198 -0
  372. package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
  373. package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
  374. package/skills/lark-whiteboard/scenes/treemap.md +198 -0
  375. package/skills/lark-wiki/SKILL.md +119 -0
  376. package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
  377. package/skills/lark-wiki/references/lark-wiki-member-add.md +66 -0
  378. package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
  379. package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
  380. package/skills/lark-wiki/references/lark-wiki-move.md +183 -0
  381. package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
  382. package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
  383. package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
  384. package/skills/lark-wiki/references/lark-wiki-node-get.md +56 -0
  385. package/skills/lark-wiki/references/lark-wiki-node-list.md +198 -0
  386. package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
  387. package/skills/lark-wiki/references/lark-wiki-space-list.md +198 -0
  388. package/skills/lark-workflow-meeting-summary/SKILL.md +104 -0
  389. package/skills/lark-workflow-standup-report/SKILL.md +120 -0
  390. package/skills/mmx-cli/SKILL.md +440 -0
  391. package/src/bot.ts +109 -0
  392. package/src/cards.ts +105 -0
  393. package/src/config.ts +33 -0
  394. package/src/daemon.ts +217 -0
  395. package/src/extension.ts +132 -0
  396. package/src/poller.ts +135 -0
  397. package/src/renderer.ts +47 -0
  398. package/src/session-registry.ts +90 -0
  399. package/src/types.ts +29 -0
  400. package/tests/bot.test.ts +104 -0
  401. package/tests/cards.test.ts +48 -0
  402. package/tests/config.test.ts +59 -0
  403. package/tests/renderer.test.ts +74 -0
  404. package/tests/session-registry.test.ts +94 -0
  405. package/tests/types.test.ts +35 -0
  406. package/tsconfig.json +16 -0
  407. 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)