@wagemule/daemon 0.1.2 → 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.
- package/README.md +9 -1
- package/dist/main.cjs +91 -32
- package/dist/main.cjs.map +2 -2
- package/dist/skills/larksuite/lark-approval/SKILL.md +56 -0
- package/dist/skills/larksuite/lark-attendance/SKILL.md +57 -0
- package/dist/skills/larksuite/lark-base/SKILL.md +349 -0
- package/dist/skills/larksuite/lark-base/references/dashboard-block-data-config.md +350 -0
- package/dist/skills/larksuite/lark-base/references/examples.md +140 -0
- package/dist/skills/larksuite/lark-base/references/formula-field-guide.md +735 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-advperm-disable.md +83 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-advperm-enable.md +80 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-base-copy.md +74 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-base-create.md +68 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-base-get.md +39 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-cell-value.md +151 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-arrange.md +83 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-create.md +108 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-get.md +57 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-list.md +53 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-update.md +84 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-create.md +73 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-delete.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-get.md +59 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-list.md +52 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-update.md +69 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard.md +240 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-data-analysis-sop.md +88 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-data-query.md +451 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-create.md +104 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-delete.md +51 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-get.md +42 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-list.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-search-options.md +48 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-update.md +166 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field.md +23 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-create.md +87 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-delete.md +64 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-get.md +68 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-list.md +73 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-create.md +118 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-delete.md +68 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-list.md +84 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-update.md +92 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions.md +23 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-update.md +82 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form.md +24 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-history.md +16 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-batch-create.md +58 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-batch-update.md +53 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-delete.md +62 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-history-list.md +86 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-share-link-create.md +72 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-upload-attachment.md +50 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-upsert.md +64 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record.md +29 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-create.md +89 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-delete.md +83 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-get.md +87 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-list.md +81 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-update.md +94 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-shortcut-field-properties.md +481 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-create.md +62 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-delete.md +51 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-get.md +46 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-list.md +43 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-update.md +49 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table.md +20 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-create.md +50 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-delete.md +48 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-card.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-filter.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-group.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-sort.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-timebar.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-visible-fields.md +28 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-list.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-rename.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-card.md +55 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-filter.md +181 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-group.md +65 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-sort.md +63 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-timebar.md +51 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-visible-fields.md +46 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-create.md +180 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-disable.md +94 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-enable.md +94 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-get.md +147 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-guide.md +718 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-list.md +124 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-schema.md +935 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-update.md +167 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow.md +23 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workspace.md +18 -0
- package/dist/skills/larksuite/lark-base/references/lookup-field-guide.md +510 -0
- package/dist/skills/larksuite/lark-base/references/role-config.md +539 -0
- package/dist/skills/larksuite/lark-calendar/SKILL.md +154 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-agenda.md +78 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-create.md +109 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-freebusy.md +124 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-room-find.md +113 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-rsvp.md +42 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-suggestion.md +125 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-update.md +105 -0
- package/dist/skills/larksuite/lark-contact/SKILL.md +45 -0
- package/dist/skills/larksuite/lark-contact/references/lark-contact-get-user.md +19 -0
- package/dist/skills/larksuite/lark-contact/references/lark-contact-search-user.md +124 -0
- package/dist/skills/larksuite/lark-doc/SKILL.md +69 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-create.md +89 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-fetch.md +141 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-md.md +71 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-media-download.md +50 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-media-insert.md +114 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-media-preview.md +41 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-search.md +217 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-update.md +252 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-whiteboard.md +100 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-xml.md +169 -0
- package/dist/skills/larksuite/lark-doc/references/style/lark-doc-create-workflow.md +56 -0
- package/dist/skills/larksuite/lark-doc/references/style/lark-doc-style.md +106 -0
- package/dist/skills/larksuite/lark-doc/references/style/lark-doc-update-workflow.md +54 -0
- package/dist/skills/larksuite/lark-drive/SKILL.md +343 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-add-comment.md +169 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-apply-permission.md +77 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-create-folder.md +73 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-create-shortcut.md +103 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-delete.md +79 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-download.md +31 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-export-download.md +50 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-export.md +119 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-import.md +154 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-move.md +120 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-pull.md +137 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-push.md +162 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-reactions.md +113 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-search.md +239 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-status.md +137 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-task-result.md +302 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-upload.md +101 -0
- package/dist/skills/larksuite/lark-event/SKILL.md +145 -0
- package/dist/skills/larksuite/lark-event/references/lark-event-im.md +86 -0
- package/dist/skills/larksuite/lark-im/SKILL.md +162 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-create.md +162 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-identity.md +55 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-list.md +113 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-messages-list.md +142 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-search.md +136 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-update.md +84 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-flag-cancel.md +67 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-flag-create.md +67 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-flag-list.md +100 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-mget.md +95 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-reply.md +222 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-resources-download.md +94 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-search.md +217 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-send.md +223 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-reactions.md +297 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-threads-messages-list.md +111 -0
- package/dist/skills/larksuite/lark-mail/SKILL.md +648 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-decline-receipt.md +115 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-draft-create.md +123 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-draft-edit.md +400 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-forward.md +232 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-message.md +230 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-messages.md +108 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-reply-all.md +206 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-reply.md +242 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-send-receipt.md +120 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-send.md +216 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-share-to-chat.md +87 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-signature.md +98 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-template-create.md +129 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-template-update.md +150 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-thread.md +111 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-triage.md +122 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-watch.md +94 -0
- package/dist/skills/larksuite/lark-markdown/SKILL.md +46 -0
- package/dist/skills/larksuite/lark-markdown/references/lark-markdown-create.md +86 -0
- package/dist/skills/larksuite/lark-markdown/references/lark-markdown-fetch.md +79 -0
- package/dist/skills/larksuite/lark-markdown/references/lark-markdown-overwrite.md +85 -0
- package/dist/skills/larksuite/lark-minutes/SKILL.md +139 -0
- package/dist/skills/larksuite/lark-minutes/references/lark-minutes-download.md +137 -0
- package/dist/skills/larksuite/lark-minutes/references/lark-minutes-search.md +206 -0
- package/dist/skills/larksuite/lark-minutes/references/lark-minutes-upload.md +104 -0
- package/dist/skills/larksuite/lark-okr/SKILL.md +133 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-contentblock.md +359 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-cycle-detail.md +84 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-cycle-list.md +90 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-entities.md +329 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-image-upload.md +116 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-create.md +81 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-delete.md +47 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-get.md +62 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-list.md +80 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-update.md +81 -0
- package/dist/skills/larksuite/lark-openapi-explorer/SKILL.md +153 -0
- package/dist/skills/larksuite/lark-shared/SKILL.md +138 -0
- package/dist/skills/larksuite/lark-sheets/SKILL.md +345 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-data.md +197 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-images.md +59 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-style-and-merge.md +141 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-dropdown.md +133 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-filter-views.md +193 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-float-images.md +125 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-formula.md +88 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-row-column-management.md +151 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-sheet-management.md +164 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-spreadsheet-management.md +134 -0
- package/dist/skills/larksuite/lark-skill-maker/SKILL.md +85 -0
- package/dist/skills/larksuite/lark-slides/SKILL.md +525 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/hr--employee_training.xml +912 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/hr--onboarding.xml +933 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--marketing_plan.xml +1469 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--product_whitepaper.xml +1455 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/misc--book_sharing.xml +1338 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--dark_general.xml +3763 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--light_general.xml +3378 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--work_report.xml +1099 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--work_summary.xml +4420 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--self_intro.xml +696 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--market_analysis.xml +898 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_intro.xml +2838 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_promotion.xml +687 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_promotion_2.xml +687 -0
- package/dist/skills/larksuite/lark-slides/references/examples.md +261 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-create.md +137 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-edit-workflows.md +142 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-media-upload.md +128 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-replace-slide.md +239 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-create.md +221 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +186 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
- package/dist/skills/larksuite/lark-slides/references/slide-templates.md +201 -0
- package/dist/skills/larksuite/lark-slides/references/slides_demo.xml +226 -0
- package/dist/skills/larksuite/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
- package/dist/skills/larksuite/lark-slides/references/template-catalog.md +464 -0
- package/dist/skills/larksuite/lark-slides/references/template-index.json +1853 -0
- package/dist/skills/larksuite/lark-slides/references/xml-format-guide.md +369 -0
- package/dist/skills/larksuite/lark-slides/references/xml-schema-quick-ref.md +215 -0
- package/dist/skills/larksuite/lark-slides/scripts/layout_lint.py +349 -0
- package/dist/skills/larksuite/lark-slides/scripts/layout_lint_test.py +159 -0
- package/dist/skills/larksuite/lark-slides/scripts/template_tool.py +970 -0
- package/dist/skills/larksuite/lark-slides/scripts/template_tool_test.py +177 -0
- package/dist/skills/larksuite/lark-task/SKILL.md +165 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-assign.md +38 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-comment.md +28 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-complete.md +27 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-create.md +57 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-followers.md +35 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-get-my-tasks.md +55 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-get-related-tasks.md +53 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-reminder.md +36 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-reopen.md +27 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-search.md +41 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-set-ancestor.md +32 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-subscribe-event.md +86 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-create.md +35 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-members.md +36 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-search.md +38 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-task-add.md +38 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-update.md +37 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-upload-attachment.md +59 -0
- package/dist/skills/larksuite/lark-vc/SKILL.md +168 -0
- package/dist/skills/larksuite/lark-vc/references/lark-vc-notes.md +126 -0
- package/dist/skills/larksuite/lark-vc/references/lark-vc-recording.md +153 -0
- package/dist/skills/larksuite/lark-vc/references/lark-vc-search.md +176 -0
- package/dist/skills/larksuite/lark-vc-agent/SKILL.md +121 -0
- package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-events.md +247 -0
- package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-join.md +133 -0
- package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +111 -0
- package/dist/skills/larksuite/lark-whiteboard/SKILL.md +144 -0
- package/dist/skills/larksuite/lark-whiteboard/references/connectors.md +102 -0
- package/dist/skills/larksuite/lark-whiteboard/references/content.md +40 -0
- package/dist/skills/larksuite/lark-whiteboard/references/image.md +80 -0
- package/dist/skills/larksuite/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
- package/dist/skills/larksuite/lark-whiteboard/references/lark-whiteboard-update.md +100 -0
- package/dist/skills/larksuite/lark-whiteboard/references/layout.md +374 -0
- package/dist/skills/larksuite/lark-whiteboard/references/schema.md +357 -0
- package/dist/skills/larksuite/lark-whiteboard/references/style.md +318 -0
- package/dist/skills/larksuite/lark-whiteboard/references/typography.md +73 -0
- package/dist/skills/larksuite/lark-whiteboard/routes/dsl.md +107 -0
- package/dist/skills/larksuite/lark-whiteboard/routes/mermaid.md +27 -0
- package/dist/skills/larksuite/lark-whiteboard/routes/svg.md +54 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/architecture.md +433 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/bar-chart.md +187 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/comparison.md +135 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/fishbone.md +238 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/flowchart.md +185 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/flywheel.md +195 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/funnel.md +101 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/line-chart.md +214 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/mermaid.md +130 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/milestone.md +139 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/organization.md +173 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/photo-showcase.md +126 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/pyramid.md +99 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/swimlane.md +371 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/treemap.md +216 -0
- package/dist/skills/larksuite/lark-wiki/SKILL.md +111 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-delete-space.md +205 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-move.md +183 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-copy.md +72 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-create.md +127 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-list.md +88 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-space-list.md +68 -0
- package/dist/skills/larksuite/lark-workflow-meeting-summary/SKILL.md +104 -0
- package/dist/skills/larksuite/lark-workflow-standup-report/SKILL.md +120 -0
- 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
|