chore: import upstream snapshot with attribution
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 13:20:55 +08:00
commit d25d482dc2
13754 changed files with 4996608 additions and 0 deletions
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildColumnChangeOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayColumnChangedTrigger: TriggerConfig = {
id: 'monday_column_changed',
name: 'Monday Column Value Changed',
provider: 'monday',
description: 'Trigger workflow when any column value changes on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_column_changed',
eventType: 'Column Value Changed',
}),
outputs: buildColumnChangeOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
+9
View File
@@ -0,0 +1,9 @@
export { mondayColumnChangedTrigger } from './column_changed'
export { mondayItemArchivedTrigger } from './item_archived'
export { mondayItemCreatedTrigger } from './item_created'
export { mondayItemDeletedTrigger } from './item_deleted'
export { mondayItemMovedTrigger } from './item_moved'
export { mondayItemNameChangedTrigger } from './item_name_changed'
export { mondayStatusChangedTrigger } from './status_changed'
export { mondaySubitemCreatedTrigger } from './subitem_created'
export { mondayUpdateCreatedTrigger } from './update_created'
+18
View File
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildItemOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayItemArchivedTrigger: TriggerConfig = {
id: 'monday_item_archived',
name: 'Monday Item Archived',
provider: 'monday',
description: 'Trigger workflow when an item is archived on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_item_archived',
eventType: 'Item Archived',
}),
outputs: buildItemOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
+19
View File
@@ -0,0 +1,19 @@
import { MondayIcon } from '@/components/icons'
import { buildItemOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayItemCreatedTrigger: TriggerConfig = {
id: 'monday_item_created',
name: 'Monday Item Created',
provider: 'monday',
description: 'Trigger workflow when a new item is created on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_item_created',
eventType: 'Item Created',
includeDropdown: true,
}),
outputs: buildItemOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
+18
View File
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildItemOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayItemDeletedTrigger: TriggerConfig = {
id: 'monday_item_deleted',
name: 'Monday Item Deleted',
provider: 'monday',
description: 'Trigger workflow when an item is deleted on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_item_deleted',
eventType: 'Item Deleted',
}),
outputs: buildItemOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
+18
View File
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildItemMovedOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayItemMovedTrigger: TriggerConfig = {
id: 'monday_item_moved',
name: 'Monday Item Moved to Group',
provider: 'monday',
description: 'Trigger workflow when an item is moved to any group on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_item_moved',
eventType: 'Item Moved to Group',
}),
outputs: buildItemMovedOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildColumnChangeOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayItemNameChangedTrigger: TriggerConfig = {
id: 'monday_item_name_changed',
name: 'Monday Item Name Changed',
provider: 'monday',
description: 'Trigger workflow when an item name changes on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_item_name_changed',
eventType: 'Item Name Changed',
}),
outputs: buildColumnChangeOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildColumnChangeOutputs, buildMondaySubBlocks } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayStatusChangedTrigger: TriggerConfig = {
id: 'monday_status_changed',
name: 'Monday Status Changed',
provider: 'monday',
description: 'Trigger workflow when a status column value changes on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_status_changed',
eventType: 'Status Changed',
}),
outputs: buildColumnChangeOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildMondaySubBlocks, buildSubitemOutputs } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondaySubitemCreatedTrigger: TriggerConfig = {
id: 'monday_subitem_created',
name: 'Monday Subitem Created',
provider: 'monday',
description: 'Trigger workflow when a subitem is created on a Monday.com board',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_subitem_created',
eventType: 'Subitem Created',
}),
outputs: buildSubitemOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
@@ -0,0 +1,18 @@
import { MondayIcon } from '@/components/icons'
import { buildMondaySubBlocks, buildUpdateOutputs } from '@/triggers/monday/utils'
import type { TriggerConfig } from '@/triggers/types'
export const mondayUpdateCreatedTrigger: TriggerConfig = {
id: 'monday_update_created',
name: 'Monday Update Posted',
provider: 'monday',
description: 'Trigger workflow when an update or comment is posted on a Monday.com item',
version: '1.0.0',
icon: MondayIcon,
subBlocks: buildMondaySubBlocks({
triggerId: 'monday_update_created',
eventType: 'Update Posted',
}),
outputs: buildUpdateOutputs(),
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
}
+155
View File
@@ -0,0 +1,155 @@
import type { SubBlockConfig } from '@/blocks/types'
import type { TriggerOutput } from '@/triggers/types'
export const mondayTriggerOptions = [
{ label: 'Item Created', id: 'monday_item_created' },
{ label: 'Column Value Changed', id: 'monday_column_changed' },
{ label: 'Status Changed', id: 'monday_status_changed' },
{ label: 'Item Name Changed', id: 'monday_item_name_changed' },
{ label: 'Item Archived', id: 'monday_item_archived' },
{ label: 'Item Deleted', id: 'monday_item_deleted' },
{ label: 'Item Moved to Group', id: 'monday_item_moved' },
{ label: 'Subitem Created', id: 'monday_subitem_created' },
{ label: 'Update Posted', id: 'monday_update_created' },
]
/**
* Maps trigger IDs to Monday.com webhook event types used in the
* `create_webhook` GraphQL mutation.
*/
export const MONDAY_EVENT_TYPE_MAP: Record<string, string> = {
monday_item_created: 'create_item',
monday_column_changed: 'change_column_value',
monday_status_changed: 'change_status_column_value',
monday_item_name_changed: 'change_name',
monday_item_archived: 'item_archived',
monday_item_deleted: 'item_deleted',
monday_item_moved: 'item_moved_to_any_group',
monday_subitem_created: 'create_subitem',
monday_update_created: 'create_update',
}
export function mondaySetupInstructions(eventType: string): string {
const instructions = [
`This trigger automatically subscribes to <strong>${eventType}</strong> events on the specified board.`,
'Select your <strong>Monday.com account</strong> above.',
'Enter the <strong>Board ID</strong> you want to monitor. You can find it in the board URL: <code>https://your-org.monday.com/boards/<strong>BOARD_ID</strong></code>.',
'Click <strong>"Save"</strong> to activate the trigger. The webhook will be created automatically.',
]
return instructions
.map(
(instruction, index) =>
`<div class="mb-3"><strong>${index + 1}.</strong> ${instruction}</div>`
)
.join('')
}
/**
* Builds the subBlock configuration for Monday.com triggers with auto-subscription.
* Pattern follows Linear V2: [dropdown?] → OAuth credential → boardId → instructions
*/
export function buildMondaySubBlocks(options: {
triggerId: string
eventType: string
includeDropdown?: boolean
}): SubBlockConfig[] {
const { triggerId, eventType, includeDropdown } = options
const subBlocks: SubBlockConfig[] = []
if (includeDropdown) {
subBlocks.push({
id: 'selectedTriggerId',
title: 'Trigger Type',
type: 'dropdown',
options: mondayTriggerOptions,
value: () => triggerId,
mode: 'trigger',
})
}
subBlocks.push(
{
id: 'triggerCredentials',
title: 'Monday Account',
type: 'oauth-input',
description: 'Select your Monday.com account to create the webhook automatically.',
serviceId: 'monday',
requiredScopes: [],
required: true,
mode: 'trigger',
condition: { field: 'selectedTriggerId', value: triggerId },
},
{
id: 'boardId',
title: 'Board ID',
type: 'short-input',
placeholder: 'Enter the board ID from the board URL',
description: 'The ID of the board to monitor. Find it in the URL: monday.com/boards/BOARD_ID',
required: true,
mode: 'trigger',
condition: { field: 'selectedTriggerId', value: triggerId },
},
{
id: 'triggerInstructions',
title: 'Setup Instructions',
hideFromPreview: true,
type: 'text',
defaultValue: mondaySetupInstructions(eventType),
mode: 'trigger',
condition: { field: 'selectedTriggerId', value: triggerId },
}
)
return subBlocks
}
const baseEventOutputs: Record<string, TriggerOutput> = {
boardId: { type: 'string', description: 'The board ID where the event occurred' },
itemId: { type: 'string', description: 'The item ID (pulseId)' },
itemName: { type: 'string', description: 'The item name (pulseName)' },
groupId: { type: 'string', description: 'The group ID of the item' },
userId: { type: 'string', description: 'The ID of the user who triggered the event' },
triggerTime: { type: 'string', description: 'ISO timestamp of when the event occurred' },
triggerUuid: { type: 'string', description: 'Unique identifier for this event' },
subscriptionId: { type: 'string', description: 'The webhook subscription ID' },
}
export function buildItemOutputs(): Record<string, TriggerOutput> {
return { ...baseEventOutputs }
}
export function buildItemMovedOutputs(): Record<string, TriggerOutput> {
return {
...baseEventOutputs,
destGroupId: { type: 'string', description: 'The destination group ID the item was moved to' },
sourceGroupId: { type: 'string', description: 'The source group ID the item was moved from' },
}
}
export function buildColumnChangeOutputs(): Record<string, TriggerOutput> {
return {
...baseEventOutputs,
columnId: { type: 'string', description: 'The ID of the changed column' },
columnType: { type: 'string', description: 'The type of the changed column' },
columnTitle: { type: 'string', description: 'The title of the changed column' },
value: { type: 'json', description: 'The new value of the column' },
previousValue: { type: 'json', description: 'The previous value of the column' },
}
}
export function buildSubitemOutputs(): Record<string, TriggerOutput> {
return {
...baseEventOutputs,
parentItemId: { type: 'string', description: 'The parent item ID' },
parentItemBoardId: { type: 'string', description: 'The parent item board ID' },
}
}
export function buildUpdateOutputs(): Record<string, TriggerOutput> {
return {
...baseEventOutputs,
updateId: { type: 'string', description: 'The ID of the created update' },
body: { type: 'string', description: 'The HTML body of the update' },
textBody: { type: 'string', description: 'The plain text body of the update' },
}
}