diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.test.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.test.ts new file mode 100644 index 00000000..7dfce22a --- /dev/null +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.test.ts @@ -0,0 +1,56 @@ +import { createMockApiClient } from './test-utils/mock-api-client'; +import { CreateBoardTool } from './create-board-tool'; +import { BoardKind } from '../../../monday-graphql/generated/graphql/graphql'; + +describe('CreateBoardTool', () => { + let mocks: ReturnType; + + beforeEach(() => { + mocks = createMockApiClient(); + jest.clearAllMocks(); + }); + + const successfulResponse = { + create_board: { + id: '123456', + name: 'Test Board', + url: 'https://monday.com/boards/123456', + }, + }; + + it('includes boardOwnerIds in variables when provided', async () => { + mocks.setResponse(successfulResponse); + const tool = new CreateBoardTool(mocks.mockApiClient); + + await tool.execute({ + boardName: 'Test Board', + boardKind: BoardKind.Public, + boardOwnerIds: ['111', '222'], + }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith(expect.stringContaining('mutation createBoard'), { + boardName: 'Test Board', + boardKind: BoardKind.Public, + boardDescription: undefined, + workspaceId: undefined, + boardOwnerIds: ['111', '222'], + }); + }); + + it('does not include boardOwnerIds in variables when not provided', async () => { + mocks.setResponse(successfulResponse); + const tool = new CreateBoardTool(mocks.mockApiClient); + + await tool.execute({ + boardName: 'Test Board', + boardKind: BoardKind.Public, + }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith(expect.stringContaining('mutation createBoard'), { + boardName: 'Test Board', + boardKind: BoardKind.Public, + boardDescription: undefined, + workspaceId: undefined, + }); + }); +}); diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.ts index 59ac9d7e..0af399c5 100644 --- a/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.ts +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/create-board-tool.ts @@ -13,6 +13,7 @@ export const createBoardToolSchema = { boardKind: z.nativeEnum(BoardKind).default(BoardKind.Public).describe('The kind of board to create'), boardDescription: z.string().optional().describe('The description of the board to create'), workspaceId: z.string().optional().describe('The ID of the workspace to create the board in'), + boardOwnerIds: z.array(z.string()).optional().describe('Optional list of user IDs to set as board owners'), }; export class CreateBoardTool extends BaseMondayApiTool { @@ -39,6 +40,7 @@ export class CreateBoardTool extends BaseMondayApiTool(createBoard, variables); diff --git a/packages/agent-toolkit/src/monday-graphql/generated/graphql/graphql.ts b/packages/agent-toolkit/src/monday-graphql/generated/graphql/graphql.ts index f3bf1211..24254bc4 100644 --- a/packages/agent-toolkit/src/monday-graphql/generated/graphql/graphql.ts +++ b/packages/agent-toolkit/src/monday-graphql/generated/graphql/graphql.ts @@ -12249,6 +12249,7 @@ export type CreateBoardMutationVariables = Exact<{ boardName: Scalars['String']['input']; boardDescription?: InputMaybe; workspaceId?: InputMaybe; + boardOwnerIds?: InputMaybe | Scalars['ID']['input']>; }>; diff --git a/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts b/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts index f9dda19c..48cb1356 100644 --- a/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts +++ b/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts @@ -63,12 +63,19 @@ export const moveItemToGroup = gql` `; export const createBoard = gql` - mutation createBoard($boardKind: BoardKind!, $boardName: String!, $boardDescription: String, $workspaceId: ID) { + mutation createBoard( + $boardKind: BoardKind! + $boardName: String! + $boardDescription: String + $workspaceId: ID + $boardOwnerIds: [ID!] + ) { create_board( board_kind: $boardKind board_name: $boardName description: $boardDescription workspace_id: $workspaceId + board_owner_ids: $boardOwnerIds empty: true ) { id