import axios from 'axios';
import https from 'https';
const config = {
wordpressUrl: 'https://fluentboards.local',
username: 'aiagent',
appPassword: 'E3a3 3Hw5 tVlb HDDm QcUR WYoC',
};
const api = axios.create({
baseURL: `${config.wordpressUrl}/wp-json/fluent-boards/v2`,
auth: {
username: config.username,
password: config.appPassword,
},
httpsAgent: new https.Agent({
rejectUnauthorized: false,
}),
});
// Define all the implementation tasks
const tasks = [
{
title: 'Implement get_task tool with full details',
description: 'Enhance get_task to include comments, attachments, labels, and all metadata',
},
{
title: 'Implement update_task tool',
description: 'Allow updating task title, description, due date, priority, and other fields',
},
{
title: 'Implement task assignment features',
description: 'Add tools to assign/unassign users to tasks',
},
{
title: 'Implement task priority management',
description: 'Add ability to set and update task priorities',
},
{
title: 'Implement due date management',
description: 'Add tools to set, update, and remove due dates from tasks',
},
{
title: 'Implement task search functionality',
description: 'Add search_tasks tool with filters for status, assignee, labels, etc.',
},
{
title: 'Implement bulk operations',
description: 'Add tools for bulk task updates (move multiple tasks, bulk assign, etc.)',
},
{
title: 'Implement task templates',
description: 'Add ability to create tasks from templates',
},
{
title: 'Implement task dependencies',
description: 'Add tools to manage task dependencies and relationships',
},
{
title: 'Implement custom fields support',
description: 'Add tools to read and update custom fields on tasks',
},
{
title: 'Implement board permissions check',
description: 'Add tool to check user permissions for specific boards',
},
{
title: 'Implement activity feed tool',
description: 'Add tool to retrieve recent activity on boards and tasks',
},
{
title: 'Implement notification management',
description: 'Add tools to manage notification preferences',
},
{
title: 'Implement board archiving',
description: 'Add tools to archive/unarchive boards',
},
{
title: 'Implement stage management',
description: 'Add tools to create, update, and reorder stages within boards',
},
{
title: 'Implement label management',
description: 'Add tools to create, update, and delete labels',
},
{
title: 'Implement file attachment support',
description: 'Add tools to upload and manage file attachments on tasks',
},
{
title: 'Implement task export functionality',
description: 'Add tools to export tasks in various formats (CSV, JSON)',
},
{
title: 'Implement webhook integration',
description: 'Add tools to manage webhooks for real-time updates',
},
{
title: 'Add comprehensive error handling',
description: 'Improve error messages and add retry logic for failed requests',
},
{
title: 'Add request caching',
description: 'Implement caching to reduce API calls for frequently accessed data',
},
{
title: 'Add rate limiting',
description: 'Implement rate limiting to prevent API abuse',
},
{
title: 'Create comprehensive test suite',
description: 'Add unit and integration tests for all tools',
},
{
title: 'Add TypeScript types for API responses',
description: 'Create proper TypeScript interfaces for all API response types',
},
{
title: 'Create user documentation',
description: 'Write detailed documentation for each tool with examples',
},
{
title: 'Create developer documentation',
description: 'Document the codebase and how to extend the server',
},
{
title: 'Add logging and debugging features',
description: 'Implement proper logging for debugging and monitoring',
},
{
title: 'Create Docker container',
description: 'Package the server as a Docker container for easy deployment',
},
{
title: 'Add CI/CD pipeline',
description: 'Set up automated testing and deployment',
},
{
title: 'Publish to npm',
description: 'Prepare and publish the package to npm registry',
},
];
async function createTasks() {
try {
// First, get the board
console.log('Getting board information...');
const boardsResponse = await api.get('/projects');
const boards = boardsResponse.data.boards.data;
if (boards.length === 0) {
console.error('No boards found!');
return;
}
const boardId = boards[0].id;
const boardResponse = await api.get(`/projects/${boardId}`);
const stages = boardResponse.data.board.stages;
const todoStage = stages.find((s: any) => s.title.toLowerCase().includes('open')) || stages[0];
console.log(`\nCreating ${tasks.length} tasks in board "${boards[0].title}"...`);
for (const task of tasks) {
try {
const response = await api.post(`/projects/${boardId}/tasks`, {
task: {
title: task.title,
description: task.description,
board_id: boardId,
stage_id: todoStage.id,
}
});
console.log(`✅ Created: ${task.title}`);
} catch (error: any) {
console.error(`❌ Failed to create "${task.title}":`, error.message);
}
}
console.log('\nAll tasks created successfully!');
} catch (error: any) {
console.error('Error:', error.message);
}
}
// Run the script
createTasks();