diff --git a/dashboard/server/jobs.js b/dashboard/server/jobs.js index 00a7b33..c8544ca 100644 --- a/dashboard/server/jobs.js +++ b/dashboard/server/jobs.js @@ -15,6 +15,13 @@ fs.mkdirSync(JOB_DIR, { recursive: true }); export const JOB_TYPES = { "account-audit": { label: "Account audit", needsClient: true, prompt: (c) => `/account-audit ${c.name}` }, "weekly-plan": { label: "Weekly content plan", needsClient: true, prompt: (c) => `/weekly-plan ${c.name}` }, + "month-plan": { label: "Next month's content calendar", needsClient: true, prompt: (c) => { + const d = new Date(); const next = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth() + 1, 1)); + const month = next.toLocaleString("en-US", { month: "long", year: "numeric", timeZone: "UTC" }); + return `/weekly-plan ${c.name} + +Plan all of ${month}, not just next week: every week that starts in ${month}, one calendar file per week (clients/${c.slug}/calendar/YYYY-Www.md). Check content_plan first so nothing is doubled, and add every planned post to the dashboard Calendar with plan_add (status idea or brief).`; + } }, "weekly-report": { label: "Weekly report", needsClient: true, prompt: (c) => `/weekly-report ${c.name}` }, "assign-tasks": { label: "Assign this week's tasks", needsClient: false, prompt: () => `/assign-tasks` }, custom: { label: "Custom request", needsClient: false, prompt: (c, text) => (c ? `Client: ${c.name} (clients/${c.slug}/).\n\n${text}` : text) }, @@ -32,6 +39,11 @@ const READ_TOOLS = [ "Bash(node tools/report-pdf/build.mjs:*)", "mcp__social-manager__list_accounts", "mcp__social-manager__instagram_insights", "mcp__social-manager__instagram_recent_posts", "mcp__social-manager__instagram_comments", "mcp__social-manager__facebook_page_insights", "mcp__social-manager__facebook_recent_posts", + "mcp__social-manager__audience_demographics", "mcp__social-manager__instagram_mentions", "mcp__social-manager__competitor_lookup", "mcp__social-manager__competitors", + "mcp__social-manager__list_connections", "mcp__social-manager__suggested_post_times", "mcp__social-manager__content_library", "mcp__social-manager__brand_kit", + "mcp__social-manager__caption_check", "mcp__social-manager__content_plan", + // Calendar items are plans for the team (idea → brief → …), never posts: nothing is scheduled or published from a run. + "mcp__social-manager__plan_add", "mcp__social-manager__plan_update", "mcp__odoo-mcp__search_records", "mcp__odoo-mcp__read_records", "mcp__odoo-mcp__read_record_by_id", "mcp__odoo-mcp__count_records", ]; const BLOCKED_TOOLS = ["mcp__social-manager__instagram_publish", "mcp__social-manager__facebook_publish"];