@wagemule/daemon 0.1.0 → 0.1.3

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 (341) hide show
  1. package/README.md +9 -2
  2. package/dist/main.cjs +270 -101
  3. package/dist/main.cjs.map +3 -3
  4. package/dist/skills/larksuite/lark-approval/SKILL.md +56 -0
  5. package/dist/skills/larksuite/lark-attendance/SKILL.md +57 -0
  6. package/dist/skills/larksuite/lark-base/SKILL.md +349 -0
  7. package/dist/skills/larksuite/lark-base/references/dashboard-block-data-config.md +350 -0
  8. package/dist/skills/larksuite/lark-base/references/examples.md +140 -0
  9. package/dist/skills/larksuite/lark-base/references/formula-field-guide.md +735 -0
  10. package/dist/skills/larksuite/lark-base/references/lark-base-advperm-disable.md +83 -0
  11. package/dist/skills/larksuite/lark-base/references/lark-base-advperm-enable.md +80 -0
  12. package/dist/skills/larksuite/lark-base/references/lark-base-base-copy.md +74 -0
  13. package/dist/skills/larksuite/lark-base/references/lark-base-base-create.md +68 -0
  14. package/dist/skills/larksuite/lark-base/references/lark-base-base-get.md +39 -0
  15. package/dist/skills/larksuite/lark-base/references/lark-base-cell-value.md +151 -0
  16. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-arrange.md +83 -0
  17. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-create.md +108 -0
  18. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
  19. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-get.md +57 -0
  20. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-list.md +53 -0
  21. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-update.md +84 -0
  22. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-create.md +73 -0
  23. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-delete.md +44 -0
  24. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-get.md +59 -0
  25. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-list.md +52 -0
  26. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-update.md +69 -0
  27. package/dist/skills/larksuite/lark-base/references/lark-base-dashboard.md +240 -0
  28. package/dist/skills/larksuite/lark-base/references/lark-base-data-analysis-sop.md +88 -0
  29. package/dist/skills/larksuite/lark-base/references/lark-base-data-query.md +451 -0
  30. package/dist/skills/larksuite/lark-base/references/lark-base-field-create.md +104 -0
  31. package/dist/skills/larksuite/lark-base/references/lark-base-field-delete.md +51 -0
  32. package/dist/skills/larksuite/lark-base/references/lark-base-field-get.md +42 -0
  33. package/dist/skills/larksuite/lark-base/references/lark-base-field-list.md +44 -0
  34. package/dist/skills/larksuite/lark-base/references/lark-base-field-search-options.md +48 -0
  35. package/dist/skills/larksuite/lark-base/references/lark-base-field-update.md +166 -0
  36. package/dist/skills/larksuite/lark-base/references/lark-base-field.md +23 -0
  37. package/dist/skills/larksuite/lark-base/references/lark-base-form-create.md +87 -0
  38. package/dist/skills/larksuite/lark-base/references/lark-base-form-delete.md +64 -0
  39. package/dist/skills/larksuite/lark-base/references/lark-base-form-get.md +68 -0
  40. package/dist/skills/larksuite/lark-base/references/lark-base-form-list.md +73 -0
  41. package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-create.md +118 -0
  42. package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-delete.md +68 -0
  43. package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-list.md +84 -0
  44. package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-update.md +92 -0
  45. package/dist/skills/larksuite/lark-base/references/lark-base-form-questions.md +23 -0
  46. package/dist/skills/larksuite/lark-base/references/lark-base-form-update.md +82 -0
  47. package/dist/skills/larksuite/lark-base/references/lark-base-form.md +24 -0
  48. package/dist/skills/larksuite/lark-base/references/lark-base-history.md +16 -0
  49. package/dist/skills/larksuite/lark-base/references/lark-base-record-batch-create.md +58 -0
  50. package/dist/skills/larksuite/lark-base/references/lark-base-record-batch-update.md +53 -0
  51. package/dist/skills/larksuite/lark-base/references/lark-base-record-delete.md +62 -0
  52. package/dist/skills/larksuite/lark-base/references/lark-base-record-history-list.md +86 -0
  53. package/dist/skills/larksuite/lark-base/references/lark-base-record-share-link-create.md +72 -0
  54. package/dist/skills/larksuite/lark-base/references/lark-base-record-upload-attachment.md +50 -0
  55. package/dist/skills/larksuite/lark-base/references/lark-base-record-upsert.md +64 -0
  56. package/dist/skills/larksuite/lark-base/references/lark-base-record.md +29 -0
  57. package/dist/skills/larksuite/lark-base/references/lark-base-role-create.md +89 -0
  58. package/dist/skills/larksuite/lark-base/references/lark-base-role-delete.md +83 -0
  59. package/dist/skills/larksuite/lark-base/references/lark-base-role-get.md +87 -0
  60. package/dist/skills/larksuite/lark-base/references/lark-base-role-list.md +81 -0
  61. package/dist/skills/larksuite/lark-base/references/lark-base-role-update.md +94 -0
  62. package/dist/skills/larksuite/lark-base/references/lark-base-shortcut-field-properties.md +481 -0
  63. package/dist/skills/larksuite/lark-base/references/lark-base-table-create.md +62 -0
  64. package/dist/skills/larksuite/lark-base/references/lark-base-table-delete.md +51 -0
  65. package/dist/skills/larksuite/lark-base/references/lark-base-table-get.md +46 -0
  66. package/dist/skills/larksuite/lark-base/references/lark-base-table-list.md +43 -0
  67. package/dist/skills/larksuite/lark-base/references/lark-base-table-update.md +49 -0
  68. package/dist/skills/larksuite/lark-base/references/lark-base-table.md +20 -0
  69. package/dist/skills/larksuite/lark-base/references/lark-base-view-create.md +50 -0
  70. package/dist/skills/larksuite/lark-base/references/lark-base-view-delete.md +48 -0
  71. package/dist/skills/larksuite/lark-base/references/lark-base-view-get-card.md +38 -0
  72. package/dist/skills/larksuite/lark-base/references/lark-base-view-get-filter.md +38 -0
  73. package/dist/skills/larksuite/lark-base/references/lark-base-view-get-group.md +38 -0
  74. package/dist/skills/larksuite/lark-base/references/lark-base-view-get-sort.md +38 -0
  75. package/dist/skills/larksuite/lark-base/references/lark-base-view-get-timebar.md +38 -0
  76. package/dist/skills/larksuite/lark-base/references/lark-base-view-get-visible-fields.md +28 -0
  77. package/dist/skills/larksuite/lark-base/references/lark-base-view-get.md +38 -0
  78. package/dist/skills/larksuite/lark-base/references/lark-base-view-list.md +44 -0
  79. package/dist/skills/larksuite/lark-base/references/lark-base-view-rename.md +44 -0
  80. package/dist/skills/larksuite/lark-base/references/lark-base-view-set-card.md +55 -0
  81. package/dist/skills/larksuite/lark-base/references/lark-base-view-set-filter.md +181 -0
  82. package/dist/skills/larksuite/lark-base/references/lark-base-view-set-group.md +65 -0
  83. package/dist/skills/larksuite/lark-base/references/lark-base-view-set-sort.md +63 -0
  84. package/dist/skills/larksuite/lark-base/references/lark-base-view-set-timebar.md +51 -0
  85. package/dist/skills/larksuite/lark-base/references/lark-base-view-set-visible-fields.md +46 -0
  86. package/dist/skills/larksuite/lark-base/references/lark-base-view.md +44 -0
  87. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-create.md +180 -0
  88. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-disable.md +94 -0
  89. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-enable.md +94 -0
  90. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-get.md +147 -0
  91. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-guide.md +718 -0
  92. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-list.md +124 -0
  93. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-schema.md +935 -0
  94. package/dist/skills/larksuite/lark-base/references/lark-base-workflow-update.md +167 -0
  95. package/dist/skills/larksuite/lark-base/references/lark-base-workflow.md +23 -0
  96. package/dist/skills/larksuite/lark-base/references/lark-base-workspace.md +18 -0
  97. package/dist/skills/larksuite/lark-base/references/lookup-field-guide.md +510 -0
  98. package/dist/skills/larksuite/lark-base/references/role-config.md +539 -0
  99. package/dist/skills/larksuite/lark-calendar/SKILL.md +154 -0
  100. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-agenda.md +78 -0
  101. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-create.md +109 -0
  102. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-freebusy.md +124 -0
  103. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-room-find.md +113 -0
  104. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-rsvp.md +42 -0
  105. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
  106. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-suggestion.md +125 -0
  107. package/dist/skills/larksuite/lark-calendar/references/lark-calendar-update.md +105 -0
  108. package/dist/skills/larksuite/lark-contact/SKILL.md +45 -0
  109. package/dist/skills/larksuite/lark-contact/references/lark-contact-get-user.md +19 -0
  110. package/dist/skills/larksuite/lark-contact/references/lark-contact-search-user.md +124 -0
  111. package/dist/skills/larksuite/lark-doc/SKILL.md +69 -0
  112. package/dist/skills/larksuite/lark-doc/references/lark-doc-create.md +89 -0
  113. package/dist/skills/larksuite/lark-doc/references/lark-doc-fetch.md +141 -0
  114. package/dist/skills/larksuite/lark-doc/references/lark-doc-md.md +71 -0
  115. package/dist/skills/larksuite/lark-doc/references/lark-doc-media-download.md +50 -0
  116. package/dist/skills/larksuite/lark-doc/references/lark-doc-media-insert.md +114 -0
  117. package/dist/skills/larksuite/lark-doc/references/lark-doc-media-preview.md +41 -0
  118. package/dist/skills/larksuite/lark-doc/references/lark-doc-search.md +217 -0
  119. package/dist/skills/larksuite/lark-doc/references/lark-doc-update.md +252 -0
  120. package/dist/skills/larksuite/lark-doc/references/lark-doc-whiteboard.md +100 -0
  121. package/dist/skills/larksuite/lark-doc/references/lark-doc-xml.md +169 -0
  122. package/dist/skills/larksuite/lark-doc/references/style/lark-doc-create-workflow.md +56 -0
  123. package/dist/skills/larksuite/lark-doc/references/style/lark-doc-style.md +106 -0
  124. package/dist/skills/larksuite/lark-doc/references/style/lark-doc-update-workflow.md +54 -0
  125. package/dist/skills/larksuite/lark-drive/SKILL.md +343 -0
  126. package/dist/skills/larksuite/lark-drive/references/lark-drive-add-comment.md +169 -0
  127. package/dist/skills/larksuite/lark-drive/references/lark-drive-apply-permission.md +77 -0
  128. package/dist/skills/larksuite/lark-drive/references/lark-drive-create-folder.md +73 -0
  129. package/dist/skills/larksuite/lark-drive/references/lark-drive-create-shortcut.md +103 -0
  130. package/dist/skills/larksuite/lark-drive/references/lark-drive-delete.md +79 -0
  131. package/dist/skills/larksuite/lark-drive/references/lark-drive-download.md +31 -0
  132. package/dist/skills/larksuite/lark-drive/references/lark-drive-export-download.md +50 -0
  133. package/dist/skills/larksuite/lark-drive/references/lark-drive-export.md +119 -0
  134. package/dist/skills/larksuite/lark-drive/references/lark-drive-import.md +154 -0
  135. package/dist/skills/larksuite/lark-drive/references/lark-drive-move.md +120 -0
  136. package/dist/skills/larksuite/lark-drive/references/lark-drive-pull.md +137 -0
  137. package/dist/skills/larksuite/lark-drive/references/lark-drive-push.md +162 -0
  138. package/dist/skills/larksuite/lark-drive/references/lark-drive-reactions.md +113 -0
  139. package/dist/skills/larksuite/lark-drive/references/lark-drive-search.md +239 -0
  140. package/dist/skills/larksuite/lark-drive/references/lark-drive-status.md +137 -0
  141. package/dist/skills/larksuite/lark-drive/references/lark-drive-task-result.md +302 -0
  142. package/dist/skills/larksuite/lark-drive/references/lark-drive-upload.md +101 -0
  143. package/dist/skills/larksuite/lark-event/SKILL.md +145 -0
  144. package/dist/skills/larksuite/lark-event/references/lark-event-im.md +86 -0
  145. package/dist/skills/larksuite/lark-im/SKILL.md +162 -0
  146. package/dist/skills/larksuite/lark-im/references/lark-im-chat-create.md +162 -0
  147. package/dist/skills/larksuite/lark-im/references/lark-im-chat-identity.md +55 -0
  148. package/dist/skills/larksuite/lark-im/references/lark-im-chat-list.md +113 -0
  149. package/dist/skills/larksuite/lark-im/references/lark-im-chat-messages-list.md +142 -0
  150. package/dist/skills/larksuite/lark-im/references/lark-im-chat-search.md +136 -0
  151. package/dist/skills/larksuite/lark-im/references/lark-im-chat-update.md +84 -0
  152. package/dist/skills/larksuite/lark-im/references/lark-im-flag-cancel.md +67 -0
  153. package/dist/skills/larksuite/lark-im/references/lark-im-flag-create.md +67 -0
  154. package/dist/skills/larksuite/lark-im/references/lark-im-flag-list.md +100 -0
  155. package/dist/skills/larksuite/lark-im/references/lark-im-messages-mget.md +95 -0
  156. package/dist/skills/larksuite/lark-im/references/lark-im-messages-reply.md +222 -0
  157. package/dist/skills/larksuite/lark-im/references/lark-im-messages-resources-download.md +94 -0
  158. package/dist/skills/larksuite/lark-im/references/lark-im-messages-search.md +217 -0
  159. package/dist/skills/larksuite/lark-im/references/lark-im-messages-send.md +223 -0
  160. package/dist/skills/larksuite/lark-im/references/lark-im-reactions.md +297 -0
  161. package/dist/skills/larksuite/lark-im/references/lark-im-threads-messages-list.md +111 -0
  162. package/dist/skills/larksuite/lark-mail/SKILL.md +648 -0
  163. package/dist/skills/larksuite/lark-mail/references/lark-mail-decline-receipt.md +115 -0
  164. package/dist/skills/larksuite/lark-mail/references/lark-mail-draft-create.md +123 -0
  165. package/dist/skills/larksuite/lark-mail/references/lark-mail-draft-edit.md +400 -0
  166. package/dist/skills/larksuite/lark-mail/references/lark-mail-forward.md +232 -0
  167. package/dist/skills/larksuite/lark-mail/references/lark-mail-message.md +230 -0
  168. package/dist/skills/larksuite/lark-mail/references/lark-mail-messages.md +108 -0
  169. package/dist/skills/larksuite/lark-mail/references/lark-mail-reply-all.md +206 -0
  170. package/dist/skills/larksuite/lark-mail/references/lark-mail-reply.md +242 -0
  171. package/dist/skills/larksuite/lark-mail/references/lark-mail-send-receipt.md +120 -0
  172. package/dist/skills/larksuite/lark-mail/references/lark-mail-send.md +216 -0
  173. package/dist/skills/larksuite/lark-mail/references/lark-mail-share-to-chat.md +87 -0
  174. package/dist/skills/larksuite/lark-mail/references/lark-mail-signature.md +98 -0
  175. package/dist/skills/larksuite/lark-mail/references/lark-mail-template-create.md +129 -0
  176. package/dist/skills/larksuite/lark-mail/references/lark-mail-template-update.md +150 -0
  177. package/dist/skills/larksuite/lark-mail/references/lark-mail-thread.md +111 -0
  178. package/dist/skills/larksuite/lark-mail/references/lark-mail-triage.md +122 -0
  179. package/dist/skills/larksuite/lark-mail/references/lark-mail-watch.md +94 -0
  180. package/dist/skills/larksuite/lark-markdown/SKILL.md +46 -0
  181. package/dist/skills/larksuite/lark-markdown/references/lark-markdown-create.md +86 -0
  182. package/dist/skills/larksuite/lark-markdown/references/lark-markdown-fetch.md +79 -0
  183. package/dist/skills/larksuite/lark-markdown/references/lark-markdown-overwrite.md +85 -0
  184. package/dist/skills/larksuite/lark-minutes/SKILL.md +139 -0
  185. package/dist/skills/larksuite/lark-minutes/references/lark-minutes-download.md +137 -0
  186. package/dist/skills/larksuite/lark-minutes/references/lark-minutes-search.md +206 -0
  187. package/dist/skills/larksuite/lark-minutes/references/lark-minutes-upload.md +104 -0
  188. package/dist/skills/larksuite/lark-okr/SKILL.md +133 -0
  189. package/dist/skills/larksuite/lark-okr/references/lark-okr-contentblock.md +359 -0
  190. package/dist/skills/larksuite/lark-okr/references/lark-okr-cycle-detail.md +84 -0
  191. package/dist/skills/larksuite/lark-okr/references/lark-okr-cycle-list.md +90 -0
  192. package/dist/skills/larksuite/lark-okr/references/lark-okr-entities.md +329 -0
  193. package/dist/skills/larksuite/lark-okr/references/lark-okr-image-upload.md +116 -0
  194. package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-create.md +81 -0
  195. package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-delete.md +47 -0
  196. package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-get.md +62 -0
  197. package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-list.md +80 -0
  198. package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-update.md +81 -0
  199. package/dist/skills/larksuite/lark-openapi-explorer/SKILL.md +153 -0
  200. package/dist/skills/larksuite/lark-shared/SKILL.md +138 -0
  201. package/dist/skills/larksuite/lark-sheets/SKILL.md +345 -0
  202. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-data.md +197 -0
  203. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-images.md +59 -0
  204. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-style-and-merge.md +141 -0
  205. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-dropdown.md +133 -0
  206. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-filter-views.md +193 -0
  207. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-float-images.md +125 -0
  208. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-formula.md +88 -0
  209. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-row-column-management.md +151 -0
  210. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-sheet-management.md +164 -0
  211. package/dist/skills/larksuite/lark-sheets/references/lark-sheets-spreadsheet-management.md +134 -0
  212. package/dist/skills/larksuite/lark-skill-maker/SKILL.md +85 -0
  213. package/dist/skills/larksuite/lark-slides/SKILL.md +525 -0
  214. package/dist/skills/larksuite/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
  215. package/dist/skills/larksuite/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
  216. package/dist/skills/larksuite/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
  217. package/dist/skills/larksuite/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
  218. package/dist/skills/larksuite/lark-slides/assets/templates/hr--employee_training.xml +912 -0
  219. package/dist/skills/larksuite/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
  220. package/dist/skills/larksuite/lark-slides/assets/templates/hr--onboarding.xml +933 -0
  221. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
  222. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
  223. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
  224. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
  225. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--marketing_plan.xml +1469 -0
  226. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
  227. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--product_whitepaper.xml +1455 -0
  228. package/dist/skills/larksuite/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
  229. package/dist/skills/larksuite/lark-slides/assets/templates/misc--book_sharing.xml +1338 -0
  230. package/dist/skills/larksuite/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
  231. package/dist/skills/larksuite/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
  232. package/dist/skills/larksuite/lark-slides/assets/templates/office--dark_general.xml +3763 -0
  233. package/dist/skills/larksuite/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
  234. package/dist/skills/larksuite/lark-slides/assets/templates/office--light_general.xml +3378 -0
  235. package/dist/skills/larksuite/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
  236. package/dist/skills/larksuite/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
  237. package/dist/skills/larksuite/lark-slides/assets/templates/office--work_report.xml +1099 -0
  238. package/dist/skills/larksuite/lark-slides/assets/templates/office--work_summary.xml +4420 -0
  239. package/dist/skills/larksuite/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
  240. package/dist/skills/larksuite/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
  241. package/dist/skills/larksuite/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
  242. package/dist/skills/larksuite/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
  243. package/dist/skills/larksuite/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
  244. package/dist/skills/larksuite/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
  245. package/dist/skills/larksuite/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
  246. package/dist/skills/larksuite/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
  247. package/dist/skills/larksuite/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
  248. package/dist/skills/larksuite/lark-slides/assets/templates/personal--self_intro.xml +696 -0
  249. package/dist/skills/larksuite/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
  250. package/dist/skills/larksuite/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
  251. package/dist/skills/larksuite/lark-slides/assets/templates/product--market_analysis.xml +898 -0
  252. package/dist/skills/larksuite/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
  253. package/dist/skills/larksuite/lark-slides/assets/templates/product--product_intro.xml +2838 -0
  254. package/dist/skills/larksuite/lark-slides/assets/templates/product--product_promotion.xml +687 -0
  255. package/dist/skills/larksuite/lark-slides/assets/templates/product--product_promotion_2.xml +687 -0
  256. package/dist/skills/larksuite/lark-slides/references/examples.md +261 -0
  257. package/dist/skills/larksuite/lark-slides/references/lark-slides-create.md +137 -0
  258. package/dist/skills/larksuite/lark-slides/references/lark-slides-edit-workflows.md +142 -0
  259. package/dist/skills/larksuite/lark-slides/references/lark-slides-media-upload.md +128 -0
  260. package/dist/skills/larksuite/lark-slides/references/lark-slides-replace-slide.md +239 -0
  261. package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-create.md +221 -0
  262. package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
  263. package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
  264. package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +186 -0
  265. package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
  266. package/dist/skills/larksuite/lark-slides/references/slide-templates.md +201 -0
  267. package/dist/skills/larksuite/lark-slides/references/slides_demo.xml +226 -0
  268. package/dist/skills/larksuite/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
  269. package/dist/skills/larksuite/lark-slides/references/template-catalog.md +464 -0
  270. package/dist/skills/larksuite/lark-slides/references/template-index.json +1853 -0
  271. package/dist/skills/larksuite/lark-slides/references/xml-format-guide.md +369 -0
  272. package/dist/skills/larksuite/lark-slides/references/xml-schema-quick-ref.md +215 -0
  273. package/dist/skills/larksuite/lark-slides/scripts/layout_lint.py +349 -0
  274. package/dist/skills/larksuite/lark-slides/scripts/layout_lint_test.py +159 -0
  275. package/dist/skills/larksuite/lark-slides/scripts/template_tool.py +970 -0
  276. package/dist/skills/larksuite/lark-slides/scripts/template_tool_test.py +177 -0
  277. package/dist/skills/larksuite/lark-task/SKILL.md +165 -0
  278. package/dist/skills/larksuite/lark-task/references/lark-task-assign.md +38 -0
  279. package/dist/skills/larksuite/lark-task/references/lark-task-comment.md +28 -0
  280. package/dist/skills/larksuite/lark-task/references/lark-task-complete.md +27 -0
  281. package/dist/skills/larksuite/lark-task/references/lark-task-create.md +57 -0
  282. package/dist/skills/larksuite/lark-task/references/lark-task-followers.md +35 -0
  283. package/dist/skills/larksuite/lark-task/references/lark-task-get-my-tasks.md +55 -0
  284. package/dist/skills/larksuite/lark-task/references/lark-task-get-related-tasks.md +53 -0
  285. package/dist/skills/larksuite/lark-task/references/lark-task-reminder.md +36 -0
  286. package/dist/skills/larksuite/lark-task/references/lark-task-reopen.md +27 -0
  287. package/dist/skills/larksuite/lark-task/references/lark-task-search.md +41 -0
  288. package/dist/skills/larksuite/lark-task/references/lark-task-set-ancestor.md +32 -0
  289. package/dist/skills/larksuite/lark-task/references/lark-task-subscribe-event.md +86 -0
  290. package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-create.md +35 -0
  291. package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-members.md +36 -0
  292. package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-search.md +38 -0
  293. package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-task-add.md +38 -0
  294. package/dist/skills/larksuite/lark-task/references/lark-task-update.md +37 -0
  295. package/dist/skills/larksuite/lark-task/references/lark-task-upload-attachment.md +59 -0
  296. package/dist/skills/larksuite/lark-vc/SKILL.md +168 -0
  297. package/dist/skills/larksuite/lark-vc/references/lark-vc-notes.md +126 -0
  298. package/dist/skills/larksuite/lark-vc/references/lark-vc-recording.md +153 -0
  299. package/dist/skills/larksuite/lark-vc/references/lark-vc-search.md +176 -0
  300. package/dist/skills/larksuite/lark-vc-agent/SKILL.md +121 -0
  301. package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-events.md +247 -0
  302. package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-join.md +133 -0
  303. package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +111 -0
  304. package/dist/skills/larksuite/lark-whiteboard/SKILL.md +144 -0
  305. package/dist/skills/larksuite/lark-whiteboard/references/connectors.md +102 -0
  306. package/dist/skills/larksuite/lark-whiteboard/references/content.md +40 -0
  307. package/dist/skills/larksuite/lark-whiteboard/references/image.md +80 -0
  308. package/dist/skills/larksuite/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
  309. package/dist/skills/larksuite/lark-whiteboard/references/lark-whiteboard-update.md +100 -0
  310. package/dist/skills/larksuite/lark-whiteboard/references/layout.md +374 -0
  311. package/dist/skills/larksuite/lark-whiteboard/references/schema.md +357 -0
  312. package/dist/skills/larksuite/lark-whiteboard/references/style.md +318 -0
  313. package/dist/skills/larksuite/lark-whiteboard/references/typography.md +73 -0
  314. package/dist/skills/larksuite/lark-whiteboard/routes/dsl.md +107 -0
  315. package/dist/skills/larksuite/lark-whiteboard/routes/mermaid.md +27 -0
  316. package/dist/skills/larksuite/lark-whiteboard/routes/svg.md +54 -0
  317. package/dist/skills/larksuite/lark-whiteboard/scenes/architecture.md +433 -0
  318. package/dist/skills/larksuite/lark-whiteboard/scenes/bar-chart.md +187 -0
  319. package/dist/skills/larksuite/lark-whiteboard/scenes/comparison.md +135 -0
  320. package/dist/skills/larksuite/lark-whiteboard/scenes/fishbone.md +238 -0
  321. package/dist/skills/larksuite/lark-whiteboard/scenes/flowchart.md +185 -0
  322. package/dist/skills/larksuite/lark-whiteboard/scenes/flywheel.md +195 -0
  323. package/dist/skills/larksuite/lark-whiteboard/scenes/funnel.md +101 -0
  324. package/dist/skills/larksuite/lark-whiteboard/scenes/line-chart.md +214 -0
  325. package/dist/skills/larksuite/lark-whiteboard/scenes/mermaid.md +130 -0
  326. package/dist/skills/larksuite/lark-whiteboard/scenes/milestone.md +139 -0
  327. package/dist/skills/larksuite/lark-whiteboard/scenes/organization.md +173 -0
  328. package/dist/skills/larksuite/lark-whiteboard/scenes/photo-showcase.md +126 -0
  329. package/dist/skills/larksuite/lark-whiteboard/scenes/pyramid.md +99 -0
  330. package/dist/skills/larksuite/lark-whiteboard/scenes/swimlane.md +371 -0
  331. package/dist/skills/larksuite/lark-whiteboard/scenes/treemap.md +216 -0
  332. package/dist/skills/larksuite/lark-wiki/SKILL.md +111 -0
  333. package/dist/skills/larksuite/lark-wiki/references/lark-wiki-delete-space.md +205 -0
  334. package/dist/skills/larksuite/lark-wiki/references/lark-wiki-move.md +183 -0
  335. package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-copy.md +72 -0
  336. package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-create.md +127 -0
  337. package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-list.md +88 -0
  338. package/dist/skills/larksuite/lark-wiki/references/lark-wiki-space-list.md +68 -0
  339. package/dist/skills/larksuite/lark-workflow-meeting-summary/SKILL.md +104 -0
  340. package/dist/skills/larksuite/lark-workflow-standup-report/SKILL.md +120 -0
  341. package/package.json +2 -1
@@ -0,0 +1,510 @@
1
+ # Base Lookup Field Configuration Guide
2
+
3
+ ## Mandatory Read Acknowledgement
4
+
5
+ When creating or updating a lookup field with `lark-cli base +field-create/+field-update --json ...` and `type` is `lookup`, you should read this guide first and only then add `--i-have-read-guide` to the command.
6
+
7
+ Do **not** proactively add `--i-have-read-guide` before reading this guide. Without it, the CLI will fail fast and direct you back to this guide.
8
+
9
+ ## Default strategy
10
+
11
+ **Use Formula fields by default for cross-table references and aggregations.** Only use Lookup fields when the user explicitly requests a Lookup field. Formula is a strict superset of Lookup — anything Lookup can do, Formula can do with a single expression.
12
+
13
+ ## Usage
14
+
15
+ When creating a lookup field, the Agent should:
16
+
17
+ 1. Get all table names: `lark-cli base +table-list --base-token <base>` — returns `items[].table_name`
18
+ 2. Get table structure: `lark-cli base +table-get --base-token <base> --table-id <table>` — returns `fields[]`
19
+ 3. If the lookup references other tables, also get those tables' structures
20
+ 4. Determine the four elements: from (source table), select (source field), where (filter), aggregate (aggregation)
21
+ 5. Construct the Lookup field JSON and submit it to create or update the field
22
+
23
+ **Key constraints**:
24
+
25
+ - Table names and field names must **exactly match** those returned by `+table-list` / `+table-get`
26
+ - The `from` table must be in the same Base
27
+
28
+ ---
29
+
30
+ ## Section 1: Core Concepts — Four-Element Model
31
+
32
+ A Lookup field is defined by five fields:
33
+
34
+ | Field | Meaning | JSON key | Required |
35
+ |-------|---------|----------|----------|
36
+ | **type** | Must be `"lookup"` | `type` | Yes |
37
+ | **from** | Source table to pull data from | `from` | Yes |
38
+ | **select** | Field in the source table to retrieve | `select` | Yes |
39
+ | **where** | Filter conditions on the source table | `where` | Yes (at least one condition) |
40
+ | **aggregate** | How to aggregate multiple matching records | `aggregate` | No (default: `raw_value`) |
41
+
42
+ **SQL analogy**:
43
+
44
+ ```
45
+ SELECT [select field]
46
+ FROM [from table]
47
+ WHERE [filter conditions]
48
+ GROUP BY [aggregate function]
49
+ ```
50
+
51
+ **Row-level matching (most important concept)**:
52
+
53
+ A Lookup field is computed row-by-row — for each row in the current table, it filters the source table to find "related" records. **The filter defines what "related" means.**
54
+
55
+ ```
56
+ Current table row 1 → filter source table → matching records → select field → aggregate → result
57
+ Current table row 2 → filter source table → matching records → select field → aggregate → result
58
+ ...
59
+ ```
60
+
61
+ **Rule: Whenever the current table and the source table have a row-level correspondence (matching by some field value), you must specify a filter.**
62
+
63
+ ---
64
+
65
+ ## Section 2: Lookup vs Link vs Formula
66
+
67
+ Lookup and Link serve **different purposes**. Creating a Lookup does NOT require a Link field to exist first.
68
+
69
+ | Dimension | Link | Lookup | Formula |
70
+ |-----------|------|--------|---------|
71
+ | Purpose | Establish record relationships (read-write) | Pull and aggregate data from another table (read-only) | Compute values from expressions (read-only) |
72
+ | When to use | "link" / "associate" / "bind" two tables | "look up" / "reference" / "aggregate" / "count" from another table | Calculations, text manipulation, conditional logic |
73
+
74
+ **Common mistake**: Creating a Link field just to create a Lookup. If two tables share a matching text/number field, Lookup can match directly — no Link required.
75
+
76
+ **Selection decision tree**:
77
+
78
+ ```
79
+ What does the user need?
80
+ ├─ "Link"/"associate"/"bind" records between tables → Link
81
+ ├─ "Look up"/"reference"/"aggregate"/"count" from another table → Lookup
82
+ │ ├─ Needs aggregation (sum/count/average)? → Lookup + aggregate
83
+ │ └─ Just reference a value? → Lookup (aggregate = null)
84
+ ├─ Calculations/text manipulation within current table → Formula
85
+ └─ Access linked record's field → Prefer Lookup (more intuitive), or Formula chain access
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Section 3: Filter Condition Rules
91
+
92
+ **You must provide a `where` with at least one condition.** Improper conditions cause every row to pull all records from the source table.
93
+
94
+ ### The Iron Rule: field belongs to source table
95
+
96
+ ```
97
+ filter condition:
98
+ field → must be a field in the FROM table (source table)
99
+ value → constant or reference to a field in the CURRENT table
100
+ ```
101
+
102
+ ### How to find the matching field pair
103
+
104
+ **With a Link field (most common)**: The match is between the **Link field** and the **target table's primary field**.
105
+
106
+ ```
107
+ Link is in the source table → source.linkField matches current.primaryField
108
+ Link is in the current table → source.primaryField matches current.linkField
109
+ ```
110
+
111
+ **Without a Link field**: Two tables share a field with the same meaning — match directly.
112
+
113
+ ### Where condition structure
114
+
115
+ Each condition is a **tuple** (array) of 2 or 3 elements: `[field, operator, value?]`
116
+
117
+ ```json
118
+ {
119
+ "logic": "and",
120
+ "conditions": [
121
+ ["<source table field>", "<operator>", { "type": "constant", "value": "<val>" }]
122
+ ]
123
+ }
124
+ ```
125
+
126
+ For `empty` / `non_empty`, the value can be omitted (2-element tuple):
127
+
128
+ ```json
129
+ ["<source table field>", "empty"]
130
+ ```
131
+
132
+ ### Two value formats
133
+
134
+ **Constant value** — for fixed conditions (e.g., "status is completed"):
135
+
136
+ ```json
137
+ ["状态", "==", { "type": "constant", "value": "已完成" }]
138
+ ```
139
+
140
+ **Field reference** — for dynamic per-row matching (e.g., "match current row's project"):
141
+
142
+ ```json
143
+ ["项目名", "==", { "type": "field_ref", "field": "项目名" }]
144
+ ```
145
+
146
+ **Decision guide**: Fixed condition (e.g., "status is completed") → `constant`. Dynamic condition (e.g., "match current record's project ID") → `field_ref`.
147
+
148
+ ### Constant value format by field type
149
+
150
+ The `value` inside `{ "type": "constant", "value": ... }` varies by field type:
151
+
152
+ | Field type | Constant value format | Example |
153
+ |-----------|----------------------|---------|
154
+ | `text` | String | `"已完成"` |
155
+ | `number` | Number | `100`, `0.8` |
156
+ | `datetime` / `created_at` / `updated_at` | String | `"ExactDate(2025-01-01)"`, `"ExactDate(2025-01-01 09:30)"`, `"Today"`, `"Yesterday"`, `"Tomorrow"` |
157
+ | `select` (`multiple=false/true`) | Option name array | `["Todo"]`, `["Todo", "Done"]` |
158
+ | `link` | Record reference array | `[{ "id": "rec_xxx" }]`, `[{ "id": "rec_xxx" }, { "id": "rec_yyy" }]` |
159
+ | `user` / `created_by` / `updated_by` | User reference array | `[{ "id": "ou_xxx" }]`, `[{ "id": "ou_xxx" }, { "id": "ou_yyy" }]` |
160
+ | `checkbox` | Boolean | `true`, `false` |
161
+ | `attachment` / `location` | Only `empty` / `non_empty` | value must be `null` or omitted |
162
+ | `auto_number` | Not supported for constant comparison | Use dynamic field\_ref instead |
163
+ | `formula` / `lookup` (exact type) | Follow the underlying type rules | — |
164
+ | `formula` / `lookup` (fuzzy type) | String | `"some text"` |
165
+
166
+ **`datetime` notes**:
167
+ - Supported datetime constant values are `ExactDate(...)`, `Today`, `Yesterday`, `Tomorrow`
168
+ - Date-only fields use `ExactDate(YYYY-MM-DD)`
169
+ - Fields that include time use `ExactDate(YYYY-MM-DD HH:mm)`
170
+ - For complex or relative date filtering, consider using a Formula field instead
171
+
172
+ ### Dynamic field reference — set comparison semantics
173
+
174
+ When using `{ "type": "field_ref", "field": "..." }`, values from both sides are first **converted to sets** at runtime, then compared using set operations:
175
+
176
+ - **`==`**: Sets are exactly equal (strict matching)
177
+ - **`intersects`**: Sets have a non-empty intersection (most commonly used)
178
+
179
+ **Conversion rules by field type**:
180
+
181
+ | Field type | Converted to |
182
+ |-----------|-------------|
183
+ | `text` | Single-element string set |
184
+ | `number` / `auto_number` / `datetime` | Single-element number set |
185
+ | `select` (`multiple=false/true`) | Set of option name strings |
186
+ | `user` / `created_by` / `updated_by` | Set of user name strings |
187
+ | `link` | Set of linked records' primary field string representations |
188
+ | `formula` / `lookup` | The computed value set |
189
+
190
+ **Examples**:
191
+ - User field `["name1", "name2"]` **intersects** text `"name1"` → true; **==** text `"name1"` → false (sets not equal)
192
+ - User field `["name1"]` **==** text `"name1"` → true (single-element sets are equal)
193
+ - Link field referencing records → converted to primary field strings, then compared
194
+
195
+ ### Supported operators
196
+
197
+ | Operator | Meaning | Applicable field types |
198
+ |----------|---------|-----------------|
199
+ | `==` | Equal (exact match) | All types |
200
+ | `!=` | Not equal | All types |
201
+ | `>` | Greater than | `number`, `datetime` |
202
+ | `>=` | Greater than or equal | `number`, `datetime` |
203
+ | `<` | Less than | `number`, `datetime` |
204
+ | `<=` | Less than or equal | `number`, `datetime` |
205
+ | `intersects` | Has intersection (non-empty overlap) | All types (most commonly used for dynamic field\_ref) |
206
+ | `disjoint` | No intersection | All types |
207
+ | `empty` | Field is empty | All types (value must be null or omitted) |
208
+ | `non_empty` | Field is not empty | All types (value must be null or omitted) |
209
+
210
+ ### Constraints
211
+
212
+ - **Only one level of and/or** — nesting (e.g., `{ and: [{ or: [...] }] }`) is not supported
213
+ - **At least one condition** — empty conditions array will error
214
+
215
+ ---
216
+
217
+ ## Section 4: Aggregate Rules
218
+
219
+ | Aggregate | Common user phrasing | Select field should be | Result type |
220
+ |-----------|---------------------|----------------------|-------------|
221
+ | `sum` | "total" / "sum" / "cumulative amount" | `number` field (e.g., amount) | Number |
222
+ | `average` | "average" / "mean" | `number` field | Number |
223
+ | `max` | "maximum" / "latest" / "most recent" | `number` / `datetime` field | Same as source |
224
+ | `min` | "minimum" / "earliest" | `number` / `datetime` field | Same as source |
225
+ | `counta` | "count" / "how many" / "total number" | Any field | Number |
226
+ | `unique_counta` | "count distinct" / "how many different" | Field to deduplicate | Number |
227
+ | `unique` | "list distinct" / "which ones" / "show different" | Field to display | List |
228
+ | `raw_value` | "list all" / "show all values" (default) | Field to display | List |
229
+
230
+ **Common confusion**: `unique` returns a **deduplicated list**, `unique_counta` returns a **count**. "Which categories are involved" → `unique`; "How many categories" → `unique_counta`.
231
+
232
+ **Important**:
233
+ - Enum values are **snake_case lowercase**: `sum` not `Sum`, `average` not `Average`
234
+ - **Count is `counta`, NOT `count`** — this is the most common enum mistake
235
+
236
+ ---
237
+
238
+ ## Section 5: Hard Constraints
239
+
240
+ 1. **Always write a filter**: The `where` field is required with at least one condition. Whenever the current table and source table have row-level correspondence, the condition should express that relationship.
241
+ 2. **Lookup fields are read-only**: Cell values cannot be manually set.
242
+ 3. **Create Lookup after all dependent fields exist**: The source table and referenced fields must exist before creating the Lookup field.
243
+ 4. **Source table must be in the same Base**: Cross-Base lookups are not supported.
244
+ 5. **Changing `from` requires changing `select`**: Updating the source table without updating the select field will error.
245
+
246
+ ---
247
+
248
+ ## Section 6: Decision Trees
249
+
250
+ ### How to build the filter
251
+
252
+ ```
253
+ Step 1: Analyze the filtering semantics in the user's request
254
+ "Count artworks per exhibition" → filter: belongs to exhibition = current exhibition
255
+ "Sum completed order amounts" → filter: status = completed AND project = current project
256
+
257
+ Step 2: Find the matching field pair
258
+ ├─ Tables have a Link relationship?
259
+ │ ├─ Link is in source table → source.linkField matches current.primaryField
260
+ │ └─ Link is in current table → source.primaryField matches current.linkField
261
+ ├─ Tables share same-meaning text/number field? → source.field matches current.field
262
+ └─ Also need constant filtering? → AND combination
263
+ ```
264
+
265
+ ### Which aggregate?
266
+
267
+ ```
268
+ How to handle multiple matching records?
269
+ ├─ Show all values as-is → raw_value (default)
270
+ ├─ Show deduplicated list → unique
271
+ ├─ Sum → sum
272
+ ├─ Average → average
273
+ ├─ Maximum / minimum → max / min
274
+ ├─ Count records → counta
275
+ └─ Count distinct → unique_counta
276
+ ```
277
+
278
+ ---
279
+
280
+ ## Section 7: Common Configuration Patterns
281
+
282
+ > Patterns are categorized by **filter matching method**. Aggregate choice is independent — see Section 4.
283
+
284
+ ### Pattern 1: Aggregate from a linked table (Link is in the source table)
285
+
286
+ **Scenario**: "Count artworks per exhibition", "Sum order amounts per project"
287
+
288
+ When the source table has a Link pointing to the current table:
289
+
290
+ ```
291
+ Exhibition table: ExhibitionName (primaryField) ← current table
292
+ Artwork table: ArtworkName (primaryField), ← source table (Link is here)
293
+ Exhibition (Link → Exhibition table)
294
+ ```
295
+
296
+ ```json
297
+ {
298
+ "type": "lookup",
299
+ "name": "Artwork Count",
300
+ "from": "Artwork table",
301
+ "select": "ArtworkName",
302
+ "aggregate": "counta",
303
+ "where": {
304
+ "logic": "and",
305
+ "conditions": [
306
+ ["Exhibition", "intersects", { "type": "field_ref", "field": "ExhibitionName" }]
307
+ ]
308
+ }
309
+ }
310
+ ```
311
+
312
+ ### Pattern 2: Reference a linked record's field (Link is in the current table)
313
+
314
+ **Scenario**: "Show supplier's contact person", "Display warehouse manager"
315
+
316
+ When the current table has a Link pointing to the source table:
317
+
318
+ ```
319
+ Supplier table: SupplierName (primaryField), Contact (Text) ← source table
320
+ Inventory table: ProductName (primaryField), ← current table (Link is here)
321
+ Supplier (Link → Supplier table)
322
+ ```
323
+
324
+ ```json
325
+ {
326
+ "type": "lookup",
327
+ "name": "Supplier Contact",
328
+ "from": "Supplier table",
329
+ "select": "Contact",
330
+ "where": {
331
+ "logic": "and",
332
+ "conditions": [
333
+ ["SupplierName", "intersects", { "type": "field_ref", "field": "Supplier" }]
334
+ ]
335
+ }
336
+ }
337
+ ```
338
+
339
+ ### Pattern 3: Match by same-meaning field (no Link)
340
+
341
+ **Scenario**: "Sum order amounts per project" (tables share a "ProjectName" field but no Link)
342
+
343
+ ```
344
+ Project table: ProjectName (primaryField) ← current table
345
+ Order table: OrderID (primaryField), ProjectName (Text), ← source table
346
+ Amount (Number)
347
+ ```
348
+
349
+ ```json
350
+ {
351
+ "type": "lookup",
352
+ "name": "Order Total",
353
+ "from": "Order table",
354
+ "select": "Amount",
355
+ "aggregate": "sum",
356
+ "where": {
357
+ "logic": "and",
358
+ "conditions": [
359
+ ["ProjectName", "==", { "type": "field_ref", "field": "ProjectName" }]
360
+ ]
361
+ }
362
+ }
363
+ ```
364
+
365
+ ### Pattern 4: Dynamic matching + constant filtering
366
+
367
+ **Scenario**: "Only count completed orders", "Only sum approved budgets"
368
+
369
+ Combine row-level matching with fixed-value filtering using `logic: "and"`:
370
+
371
+ ```json
372
+ {
373
+ "type": "lookup",
374
+ "name": "Completed Order Amount",
375
+ "from": "Order table",
376
+ "select": "Amount",
377
+ "aggregate": "sum",
378
+ "where": {
379
+ "logic": "and",
380
+ "conditions": [
381
+ ["Manager", "==", { "type": "field_ref", "field": "EmployeeName" }],
382
+ ["Status", "==", { "type": "constant", "value": "Completed" }]
383
+ ]
384
+ }
385
+ }
386
+ ```
387
+
388
+ ### Pattern 5: Date filtering with constant value
389
+
390
+ **Scenario**: "Look up orders created after 2025-01-01", "Sum today's sales"
391
+
392
+ ```json
393
+ {
394
+ "type": "lookup",
395
+ "name": "Recent Orders",
396
+ "from": "Order table",
397
+ "select": "Amount",
398
+ "aggregate": "sum",
399
+ "where": {
400
+ "logic": "and",
401
+ "conditions": [
402
+ ["ProjectName", "==", { "type": "field_ref", "field": "ProjectName" }],
403
+ ["CreatedDate", ">=", { "type": "constant", "value": "ExactDate(2025-01-01)" }]
404
+ ]
405
+ }
406
+ }
407
+ ```
408
+
409
+ ---
410
+
411
+ ## Section 8: Anti-Pattern Collection
412
+
413
+ ### Mistake 1: Omitting where (most common)
414
+
415
+ ```json
416
+ // Wrong: no where, every row pulls all records
417
+ { "type": "lookup", "name": "Artwork Count", "from": "Artwork table", "select": "ArtworkName", "aggregate": "counta" }
418
+
419
+ // Correct: where with Link relationship
420
+ { "type": "lookup", "name": "Artwork Count", "from": "Artwork table", "select": "ArtworkName", "aggregate": "counta",
421
+ "where": { "logic": "and", "conditions": [
422
+ ["Exhibition", "intersects", { "type": "field_ref", "field": "ExhibitionName" }]
423
+ ]}}
424
+ ```
425
+
426
+ ### Mistake 2: Wrong value type — confusing constant vs field_ref
427
+
428
+ ```json
429
+ // Wrong: using constant for a dynamic join
430
+ ["ProjectName", "==", { "type": "constant", "value": "ProjectName" }]
431
+
432
+ // Correct: use field_ref for dynamic per-row matching
433
+ ["ProjectName", "==", { "type": "field_ref", "field": "ProjectName" }]
434
+ ```
435
+
436
+ ### Mistake 3: Using `count` instead of `counta`
437
+
438
+ ```json
439
+ // Wrong
440
+ { "aggregate": "count" }
441
+
442
+ // Correct
443
+ { "aggregate": "counta" }
444
+ ```
445
+
446
+ ### Mistake 4: Wrong case for aggregate values
447
+
448
+ ```json
449
+ // Wrong
450
+ { "aggregate": "SUM" }
451
+ { "aggregate": "Sum" }
452
+
453
+ // Correct — snake_case lowercase
454
+ { "aggregate": "sum" }
455
+ { "aggregate": "average" }
456
+ ```
457
+
458
+ ### Mistake 5: Nested where conditions
459
+
460
+ ```json
461
+ // Wrong: nesting not supported
462
+ { "logic": "and", "conditions": [
463
+ { "logic": "or", "conditions": [...] }
464
+ ]}
465
+
466
+ // Correct: only one level
467
+ { "logic": "and", "conditions": [cond1, cond2, cond3] }
468
+ ```
469
+
470
+ ### Mistake 6: Confusing Lookup with Link
471
+
472
+ The user says "aggregate order amounts" — use Lookup, not Link. Link establishes relationships; Lookup retrieves and aggregates data.
473
+
474
+ ### Mistake 7: Using object format instead of tuple for conditions
475
+
476
+ ```json
477
+ // Wrong: object format
478
+ { "fieldRef": "Status", "operator": "is", "value": { "type": "constant", "value": "Done" } }
479
+
480
+ // Correct: tuple format [field, operator, value?]
481
+ ["Status", "==", { "type": "constant", "value": "Done" }]
482
+ ```
483
+
484
+ ### Mistake 8: Missing `type` field
485
+
486
+ ```json
487
+ // Wrong: no type field
488
+ { "name": "Total", "from": "Orders", "select": "Amount", "aggregate": "sum", "where": { ... } }
489
+
490
+ // Correct: must include type
491
+ { "type": "lookup", "name": "Total", "from": "Orders", "select": "Amount", "aggregate": "sum", "where": { ... } }
492
+ ```
493
+
494
+ ---
495
+
496
+ ## Section 9: Constraint Summary
497
+
498
+ - `type` must be `"lookup"` — this field is required in the request body
499
+ - `where` is required with at least one condition — always specify a filter
500
+ - Conditions use **tuple format**: `[field, operator, value?]` — NOT object format
501
+ - Lookup fields are read-only — values cannot be manually set
502
+ - Source table and referenced fields must exist before creating the Lookup
503
+ - Condition field (first element of tuple) must reference a field in the source table, not the current table
504
+ - Where supports only one level of and/or — no nesting
505
+ - Aggregate values are snake_case lowercase: `sum`, `counta`, `unique_counta` (NOT `count`)
506
+ - Operators: `==`, `!=`, `>`, `>=`, `<`, `<=`, `intersects`, `disjoint`, `empty`, `non_empty`
507
+ - Table and field names must exactly match `+table-get` output
508
+ - `datetime` constant values use string format: `ExactDate(YYYY-MM-DD)` / `ExactDate(YYYY-MM-DD HH:mm)` / `Today` / `Yesterday` / `Tomorrow`
509
+ - `select` constant values use option names;
510
+ - `link` / `user` constant values use `{id}` object arrays