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
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:
@@ -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' } },
|
||||
}
|
||||
@@ -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'
|
||||
@@ -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' } },
|
||||
}
|
||||
@@ -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' } },
|
||||
}
|
||||
@@ -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' } },
|
||||
}
|
||||
@@ -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' } },
|
||||
}
|
||||
@@ -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' },
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user