maeve-cli 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -0
- package/dist/index.js +1958 -137
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -13,7 +13,11 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
13
13
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
14
14
|
});
|
|
15
15
|
var __commonJS = (cb, mod) => function __require2() {
|
|
16
|
-
|
|
16
|
+
try {
|
|
17
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
18
|
+
} catch (e) {
|
|
19
|
+
throw mod = 0, e;
|
|
20
|
+
}
|
|
17
21
|
};
|
|
18
22
|
var __copyProps = (to, from, except, desc) => {
|
|
19
23
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -74,10 +78,12 @@ var require_dist = __commonJS({
|
|
|
74
78
|
};
|
|
75
79
|
})();
|
|
76
80
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
-
exports.
|
|
78
|
-
exports.
|
|
79
|
-
exports.
|
|
80
|
-
exports.
|
|
81
|
+
exports.taskBoardListMcpInputSchema = exports.taskBoardListInputSchema = exports.contentGetCountsMcpInputSchema = exports.contentGetMcpInputSchema = exports.contentGetInputSchema = exports.contentGetCountsInputSchema = exports.contentListAgentInputSchema = exports.contentListInputSchema = exports.contentListMcpInputSchema = exports.COMPOSER_PATCH_MEDIA_CONTRACT = exports.COMPOSER_PATCH_TAXONOMY_CONTRACT = exports.COMPOSER_PATCH_SCHEDULE_CONTRACT = exports.COMPOSER_PATCH_CAPTION_CONTRACT = exports.composerPatchOutputSchema = exports.composerPatchArtifactMetadataSchema = exports.composerPatchMediaArtifactMetadataSchema = exports.composerPatchTaxonomyArtifactMetadataSchema = exports.composerPatchScheduleArtifactMetadataSchema = exports.composerPatchCaptionArtifactMetadataSchema = exports.composerPatchMediaInputSchema = exports.composerPatchTaxonomyInputSchema = exports.composerPatchScheduleInputSchema = exports.composerPatchCaptionInputSchema = exports.MEDIA_SEARCH_CONTRACT = exports.mediaSearchOutputSchema = exports.mediaSearchInputSchema = exports.CALENDAR_SUGGEST_PUBLISH_TIMES_CONTRACT = exports.calendarSuggestPublishTimesOutputSchema = exports.calendarSuggestPublishTimesInputSchema = exports.CALENDAR_READ_RANGE_CONTRACT = exports.scheduledPostsListOutputSchema = exports.SCHEDULED_POSTS_PRESENTATION_NOTE_KINDS = exports.calendarReadRangeInputSchema = exports.CONTENT_FIND_RECENT_CONTRACT = exports.contentFindRecentOutputSchema = exports.contentFindRecentInputSchema = exports.MEMORY_REMEMBER_CONTRACT = exports.MEMORY_LIST_CONTRACT = exports.memoryRememberOutputSchema = exports.memoryListOutputSchema = exports.memoryRememberInputSchema = exports.memoryListInputSchema = exports.WORKSPACE_SUMMARY_CONTRACT = exports.workspaceSummaryOutputSchema = exports.workspaceSummaryInputSchema = exports.TIMEZONE_QUALIFIED_ISO8601_TIMESTAMP_ERROR = exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS = exports.TOOL_CAPABILITIES = exports.TOOL_WIRE_NAMES = exports.TOOL_OPERATION_IDS = void 0;
|
|
82
|
+
exports.TASK_CHECKLIST_ITEM_CREATE_CONTRACT = exports.TASK_COMMENT_CREATE_CONTRACT = exports.TASK_DELETE_CONTRACT = exports.TASK_RESTORE_CONTRACT = exports.TASK_ARCHIVE_CONTRACT = exports.TASK_MOVE_CONTRACT = exports.TASK_UPDATE_CONTRACT = exports.TASK_CREATE_CONTRACT = exports.TASK_LIST_ARCHIVED_CONTRACT = exports.TASK_LIST_FOR_POST_CONTRACT = exports.TASK_GET_CONTRACT = exports.TASK_BOARD_LIST_CONTRACT = exports.CONTENT_GET_COUNTS_CONTRACT = exports.CONTENT_GET_CONTRACT = exports.CONTENT_LIST_CONTRACT = exports.deleteTaskChecklistItemMcpInputSchema = exports.deleteTaskChecklistItemInputSchema = exports.moveTaskChecklistItemMcpInputSchema = exports.moveTaskChecklistItemInputSchema = exports.moveTaskChecklistItemBodySchema = exports.updateTaskChecklistItemMcpInputSchema = exports.updateTaskChecklistItemInputSchema = exports.updateTaskChecklistItemBodySchema = exports.createTaskChecklistItemMcpInputSchema = exports.createTaskChecklistItemInputSchema = exports.createTaskChecklistItemBodySchema = exports.createTaskCommentMcpInputSchema = exports.createTaskCommentInputSchema = exports.createTaskCommentBodySchema = exports.deleteTaskMcpInputSchema = exports.deleteTaskInputSchema = exports.restoreTaskMcpInputSchema = exports.restoreTaskInputSchema = exports.archiveTaskMcpInputSchema = exports.archiveTaskInputSchema = exports.moveTaskMcpInputSchema = exports.moveTaskInputSchema = exports.moveTaskBodySchema = exports.updateTaskMcpInputSchema = exports.updateTaskInputSchema = exports.updateTaskBodySchema = exports.createTaskMcpInputSchema = exports.createTaskInputSchema = exports.createTaskBodySchema = exports.taskListArchivedMcpInputSchema = exports.taskListArchivedInputSchema = exports.taskListForPostMcpInputSchema = exports.taskListForPostInputSchema = exports.taskGetMcpInputSchema = exports.taskGetInputSchema = void 0;
|
|
83
|
+
exports.analyticsAggregateMcpInputSchema = exports.MEDIA_GET_USAGE_HISTORY_CONTRACT = exports.MEDIA_GET_CONTRACT = exports.MEDIA_LIST_LABELS_CONTRACT = exports.MEDIA_GET_FOLDER_PATH_CONTRACT = exports.MEDIA_GET_FOLDER_CONTRACT = exports.MEDIA_LIST_FOLDERS_CONTRACT = exports.MEDIA_LIST_CONTRACT = exports.mediaGetUsageHistoryAgentInputSchema = exports.mediaGetUsageHistoryInputSchema = exports.mediaGetInputSchema = exports.mediaListLabelsInputSchema = exports.mediaGetFolderPathInputSchema = exports.mediaGetFolderInputSchema = exports.mediaListFoldersInputSchema = exports.mediaListAgentInputSchema = exports.mediaListInputSchema = exports.mediaGetUsageHistoryMcpInputSchema = exports.mediaGetMcpInputSchema = exports.mediaListLabelsMcpInputSchema = exports.mediaGetFolderPathMcpInputSchema = exports.mediaGetFolderMcpInputSchema = exports.mediaListFoldersMcpInputSchema = exports.mediaListMcpInputSchema = exports.HASHTAG_GROUPS_LIST_CONTRACT = exports.CAMPAIGNS_LIST_CONTRACT = exports.TAXONOMY_LIST_CONTRACT = exports.INTEGRATIONS_GET_OPTIONS_CONTRACT = exports.INTEGRATIONS_GET_CAPABILITIES_CONTRACT = exports.INTEGRATIONS_LIST_CONTRACT = exports.hashtagGroupsListOutputSchema = exports.campaignsListOutputSchema = exports.taxonomyListOutputSchema = exports.integrationsListOutputSchema = exports.hashtagGroupsListMcpInputSchema = exports.hashtagGroupsListInputSchema = exports.campaignsListMcpInputSchema = exports.campaignsListInputSchema = exports.taxonomyListMcpInputSchema = exports.taxonomyListInputSchema = exports.integrationsGetOptionsMcpInputSchema = exports.integrationsGetOptionsInputSchema = exports.integrationsGetCapabilitiesMcpInputSchema = exports.integrationsGetCapabilitiesInputSchema = exports.INTEGRATION_OPTION_KEYS = exports.integrationsListMcpInputSchema = exports.integrationsListInputSchema = exports.TASK_CHECKLIST_ITEM_DELETE_CONTRACT = exports.TASK_CHECKLIST_ITEM_MOVE_CONTRACT = exports.TASK_CHECKLIST_ITEM_UPDATE_CONTRACT = void 0;
|
|
84
|
+
exports.archiveContentMcpInputSchema = exports.archiveContentInputSchema = exports.publishNowOutputSchema = exports.publishNowMcpInputSchema = exports.publishNowInputSchema = exports.contentScheduleBatchOutputSchema = exports.contentScheduleBatchInputSchema = exports.SCHEDULE_BATCH_MAX_ITEMS = exports.contentScheduleOutputSchema = exports.contentScheduleMcpInputSchema = exports.contentScheduleInputSchema = exports.CONTENT_UPDATE_NOTES_CONTRACT = exports.CONTENT_UPDATE_METADATA_CONTRACT = exports.updateContentNotesOutputSchema = exports.updateContentMetadataOutputSchema = exports.updateContentNotesMcpInputSchema = exports.updateContentNotesInputSchema = exports.updateContentMetadataMcpInputSchema = exports.updateContentMetadataInputSchema = exports.CONTENT_UPDATE_DRAFT_CONTRACT = exports.updateDraftContentOutputSchema = exports.updateDraftContentMcpInputSchema = exports.updateDraftContentInputSchema = exports.CONTENT_CREATE_DRAFTS_CONTRACT = exports.createDraftsContentOutputSchema = exports.createDraftsContentInputSchema = exports.CREATE_DRAFTS_MAX_ITEMS = exports.CONTENT_CREATE_DRAFT_CONTRACT = exports.createDraftContentOutputSchema = exports.createDraftContentMcpInputSchema = exports.createDraftContentAgentInputSchema = exports.createDraftContentInputSchema = exports.ANALYTICS_GET_POST_CONTRACT = exports.ANALYTICS_GET_POSTS_AGGREGATE_CONTRACT = exports.ANALYTICS_GET_POSTS_CONTRACT = exports.ANALYTICS_GET_DEMOGRAPHICS_CONTRACT = exports.ANALYTICS_GET_HEALTH_CONTRACT = exports.ANALYTICS_GET_AGGREGATE_CONTRACT = exports.ANALYTICS_GET_SUMMARY_CONTRACT = exports.postAnalyticsInputSchema = exports.analyticsPostsAgentInputSchema = exports.analyticsPostsInputSchema = exports.analyticsIntegrationInputSchema = exports.analyticsAggregateAgentInputSchema = exports.analyticsAggregateInputSchema = exports.postAnalyticsMcpInputSchema = exports.analyticsPostsAggregateInputSchema = exports.analyticsPostsAggregateMcpInputSchema = exports.analyticsPostsMcpInputSchema = exports.analyticsIntegrationMcpInputSchema = void 0;
|
|
85
|
+
exports.INBOX_AUTOMATION_RULE_GET_CONTRACT = exports.INBOX_AUTOMATION_RULES_LIST_CONTRACT = exports.listInboxAutomationExecutionsOutputSchema = exports.deleteInboxAutomationRuleOutputSchema = exports.inboxAutomationRuleResultOutputSchema = exports.inboxAutomationRulesListOutputSchema = exports.listInboxAutomationExecutionsMcpInputSchema = exports.listInboxAutomationExecutionsInputSchema = exports.deleteInboxAutomationRuleMcpInputSchema = exports.deleteInboxAutomationRuleInputSchema = exports.updateInboxAutomationRuleMcpInputSchema = exports.updateInboxAutomationRuleInputSchema = exports.createInboxAutomationRuleMcpInputSchema = exports.createInboxAutomationRuleInputSchema = exports.inboxAutomationRuleGetMcpInputSchema = exports.inboxAutomationRuleGetInputSchema = exports.inboxAutomationRulesListMcpInputSchema = exports.inboxAutomationRulesListInputSchema = exports.CONTENT_SET_INTENDED_PUBLISH_TIME_CONTRACT = exports.contentSetIntendedPublishTimeOutputSchema = exports.contentSetIntendedPublishTimeMcpInputSchema = exports.contentSetIntendedPublishTimeInputSchema = exports.CONTENT_DELETE_BATCH_CONTRACT = exports.CONTENT_DELETE_CONTRACT = exports.CONTENT_RETRY_CONTRACT = exports.CONTENT_RESTORE_CONTRACT = exports.CONTENT_ARCHIVE_CONTRACT = exports.CONTENT_PUBLISH_NOW_BATCH_CONTRACT = exports.CONTENT_PUBLISH_NOW_CONTRACT = exports.CONTENT_UNSCHEDULE_CONTRACT = exports.contentUnscheduleOutputSchema = exports.contentUnscheduleInputSchema = exports.CONTENT_SCHEDULE_BATCH_CONTRACT = exports.CONTENT_SCHEDULE_CONTRACT = exports.deleteBatchOutputSchema = exports.deleteBatchInputSchema = exports.DELETE_BATCH_MAX_ITEMS = exports.publishNowBatchOutputSchema = exports.publishNowBatchInputSchema = exports.PUBLISH_NOW_BATCH_MAX_ITEMS = exports.deleteContentOutputSchema = exports.deleteContentMcpInputSchema = exports.deleteContentInputSchema = exports.retryContentOutputSchema = exports.retryContentMcpInputSchema = exports.retryContentInputSchema = exports.restoreContentOutputSchema = exports.restoreContentMcpInputSchema = exports.restoreContentInputSchema = exports.archiveContentOutputSchema = void 0;
|
|
86
|
+
exports.TOOL_CONTRACTS = exports.INBOX_AUTOMATION_EXECUTIONS_LIST_CONTRACT = exports.INBOX_AUTOMATION_RULE_DELETE_CONTRACT = exports.INBOX_AUTOMATION_RULE_UPDATE_CONTRACT = exports.INBOX_AUTOMATION_RULE_CREATE_CONTRACT = void 0;
|
|
81
87
|
exports.isTimezoneQualifiedIso8601Timestamp = isTimezoneQualifiedIso8601Timestamp;
|
|
82
88
|
var z9 = __importStar(__require("zod/v4"));
|
|
83
89
|
exports.TOOL_OPERATION_IDS = {
|
|
@@ -95,6 +101,21 @@ var require_dist = __commonJS({
|
|
|
95
101
|
contentList: "content.list",
|
|
96
102
|
contentGet: "content.get",
|
|
97
103
|
contentGetCounts: "content.get_counts",
|
|
104
|
+
taskBoardList: "task_board.list",
|
|
105
|
+
taskGet: "task.get",
|
|
106
|
+
taskListForPost: "task.list_for_post",
|
|
107
|
+
taskListArchived: "task.list_archived",
|
|
108
|
+
taskCreate: "task.create",
|
|
109
|
+
taskUpdate: "task.update",
|
|
110
|
+
taskMove: "task.move",
|
|
111
|
+
taskArchive: "task.archive",
|
|
112
|
+
taskRestore: "task.restore",
|
|
113
|
+
taskDelete: "task.delete",
|
|
114
|
+
taskCommentCreate: "task.create_comment",
|
|
115
|
+
taskChecklistItemCreate: "task.create_checklist_item",
|
|
116
|
+
taskChecklistItemUpdate: "task.update_checklist_item",
|
|
117
|
+
taskChecklistItemMove: "task.move_checklist_item",
|
|
118
|
+
taskChecklistItemDelete: "task.delete_checklist_item",
|
|
98
119
|
integrationsList: "integrations.list",
|
|
99
120
|
integrationsGetCapabilities: "integrations.get_capabilities",
|
|
100
121
|
integrationsGetOptions: "integrations.get_options",
|
|
@@ -102,15 +123,20 @@ var require_dist = __commonJS({
|
|
|
102
123
|
campaignsList: "campaigns.list",
|
|
103
124
|
hashtagGroupsList: "hashtag_groups.list",
|
|
104
125
|
contentCreateDraft: "content.create_draft",
|
|
126
|
+
contentCreateDrafts: "content.create_drafts",
|
|
105
127
|
contentUpdateDraft: "content.update_draft",
|
|
106
128
|
contentUpdateMetadata: "content.update_metadata",
|
|
107
129
|
contentUpdateNotes: "content.update_notes",
|
|
108
130
|
contentSchedule: "content.schedule",
|
|
131
|
+
contentScheduleBatch: "content.schedule_batch",
|
|
132
|
+
contentUnschedule: "content.unschedule",
|
|
109
133
|
contentPublishNow: "content.publish_now",
|
|
134
|
+
contentPublishNowBatch: "content.publish_now_batch",
|
|
110
135
|
contentArchive: "content.archive",
|
|
111
136
|
contentRestore: "content.restore",
|
|
112
137
|
contentRetry: "content.retry",
|
|
113
138
|
contentDelete: "content.delete",
|
|
139
|
+
contentDeleteBatch: "content.delete_batch",
|
|
114
140
|
contentSetIntendedPublishTime: "content.set_intended_publish_time",
|
|
115
141
|
mediaList: "media.list",
|
|
116
142
|
mediaListFolders: "media.list_folders",
|
|
@@ -125,7 +151,13 @@ var require_dist = __commonJS({
|
|
|
125
151
|
analyticsGetPosts: "analytics.get_posts",
|
|
126
152
|
analyticsGetPostsAggregate: "analytics.get_posts_aggregate",
|
|
127
153
|
analyticsGetPost: "analytics.get_post",
|
|
128
|
-
analyticsGetDemographics: "analytics.get_demographics"
|
|
154
|
+
analyticsGetDemographics: "analytics.get_demographics",
|
|
155
|
+
inboxAutomationRulesList: "inbox_automation.list_rules",
|
|
156
|
+
inboxAutomationRuleGet: "inbox_automation.get_rule",
|
|
157
|
+
inboxAutomationRuleCreate: "inbox_automation.create_rule",
|
|
158
|
+
inboxAutomationRuleUpdate: "inbox_automation.update_rule",
|
|
159
|
+
inboxAutomationRuleDelete: "inbox_automation.delete_rule",
|
|
160
|
+
inboxAutomationExecutionsList: "inbox_automation.list_executions"
|
|
129
161
|
};
|
|
130
162
|
exports.TOOL_WIRE_NAMES = {
|
|
131
163
|
workspaceSummary: {
|
|
@@ -173,6 +205,51 @@ var require_dist = __commonJS({
|
|
|
173
205
|
agent: exports.TOOL_OPERATION_IDS.contentGetCounts,
|
|
174
206
|
mcp: "get_content_counts"
|
|
175
207
|
},
|
|
208
|
+
taskBoardList: {
|
|
209
|
+
mcp: "list_tasks"
|
|
210
|
+
},
|
|
211
|
+
taskGet: {
|
|
212
|
+
mcp: "get_task"
|
|
213
|
+
},
|
|
214
|
+
taskListForPost: {
|
|
215
|
+
mcp: "list_tasks_for_post"
|
|
216
|
+
},
|
|
217
|
+
taskListArchived: {
|
|
218
|
+
mcp: "list_archived_tasks"
|
|
219
|
+
},
|
|
220
|
+
taskCreate: {
|
|
221
|
+
mcp: "create_task"
|
|
222
|
+
},
|
|
223
|
+
taskUpdate: {
|
|
224
|
+
mcp: "update_task"
|
|
225
|
+
},
|
|
226
|
+
taskMove: {
|
|
227
|
+
mcp: "move_task"
|
|
228
|
+
},
|
|
229
|
+
taskArchive: {
|
|
230
|
+
mcp: "archive_task"
|
|
231
|
+
},
|
|
232
|
+
taskRestore: {
|
|
233
|
+
mcp: "restore_task"
|
|
234
|
+
},
|
|
235
|
+
taskDelete: {
|
|
236
|
+
mcp: "delete_task"
|
|
237
|
+
},
|
|
238
|
+
taskCommentCreate: {
|
|
239
|
+
mcp: "create_task_comment"
|
|
240
|
+
},
|
|
241
|
+
taskChecklistItemCreate: {
|
|
242
|
+
mcp: "create_task_checklist_item"
|
|
243
|
+
},
|
|
244
|
+
taskChecklistItemUpdate: {
|
|
245
|
+
mcp: "update_task_checklist_item"
|
|
246
|
+
},
|
|
247
|
+
taskChecklistItemMove: {
|
|
248
|
+
mcp: "move_task_checklist_item"
|
|
249
|
+
},
|
|
250
|
+
taskChecklistItemDelete: {
|
|
251
|
+
mcp: "delete_task_checklist_item"
|
|
252
|
+
},
|
|
176
253
|
integrationsList: {
|
|
177
254
|
agent: exports.TOOL_OPERATION_IDS.integrationsList,
|
|
178
255
|
mcp: "list_integrations"
|
|
@@ -201,6 +278,9 @@ var require_dist = __commonJS({
|
|
|
201
278
|
agent: exports.TOOL_OPERATION_IDS.contentCreateDraft,
|
|
202
279
|
mcp: "create_draft_content"
|
|
203
280
|
},
|
|
281
|
+
contentCreateDrafts: {
|
|
282
|
+
agent: exports.TOOL_OPERATION_IDS.contentCreateDrafts
|
|
283
|
+
},
|
|
204
284
|
contentUpdateDraft: {
|
|
205
285
|
agent: exports.TOOL_OPERATION_IDS.contentUpdateDraft,
|
|
206
286
|
mcp: "update_content"
|
|
@@ -217,10 +297,19 @@ var require_dist = __commonJS({
|
|
|
217
297
|
agent: exports.TOOL_OPERATION_IDS.contentSchedule,
|
|
218
298
|
mcp: "schedule_content"
|
|
219
299
|
},
|
|
300
|
+
contentScheduleBatch: {
|
|
301
|
+
agent: exports.TOOL_OPERATION_IDS.contentScheduleBatch
|
|
302
|
+
},
|
|
303
|
+
contentUnschedule: {
|
|
304
|
+
agent: exports.TOOL_OPERATION_IDS.contentUnschedule
|
|
305
|
+
},
|
|
220
306
|
contentPublishNow: {
|
|
221
307
|
agent: exports.TOOL_OPERATION_IDS.contentPublishNow,
|
|
222
308
|
mcp: "publish_now"
|
|
223
309
|
},
|
|
310
|
+
contentPublishNowBatch: {
|
|
311
|
+
agent: exports.TOOL_OPERATION_IDS.contentPublishNowBatch
|
|
312
|
+
},
|
|
224
313
|
contentArchive: {
|
|
225
314
|
agent: exports.TOOL_OPERATION_IDS.contentArchive,
|
|
226
315
|
mcp: "archive_content"
|
|
@@ -237,6 +326,9 @@ var require_dist = __commonJS({
|
|
|
237
326
|
agent: exports.TOOL_OPERATION_IDS.contentDelete,
|
|
238
327
|
mcp: "delete_content"
|
|
239
328
|
},
|
|
329
|
+
contentDeleteBatch: {
|
|
330
|
+
agent: exports.TOOL_OPERATION_IDS.contentDeleteBatch
|
|
331
|
+
},
|
|
240
332
|
contentSetIntendedPublishTime: {
|
|
241
333
|
agent: exports.TOOL_OPERATION_IDS.contentSetIntendedPublishTime,
|
|
242
334
|
mcp: "set_intended_publish_time"
|
|
@@ -296,6 +388,24 @@ var require_dist = __commonJS({
|
|
|
296
388
|
analyticsGetDemographics: {
|
|
297
389
|
agent: exports.TOOL_OPERATION_IDS.analyticsGetDemographics,
|
|
298
390
|
mcp: "get_analytics_demographics"
|
|
391
|
+
},
|
|
392
|
+
inboxAutomationRulesList: {
|
|
393
|
+
mcp: "list_inbox_automation_rules"
|
|
394
|
+
},
|
|
395
|
+
inboxAutomationRuleGet: {
|
|
396
|
+
mcp: "get_inbox_automation_rule"
|
|
397
|
+
},
|
|
398
|
+
inboxAutomationRuleCreate: {
|
|
399
|
+
mcp: "create_inbox_automation_rule"
|
|
400
|
+
},
|
|
401
|
+
inboxAutomationRuleUpdate: {
|
|
402
|
+
mcp: "update_inbox_automation_rule"
|
|
403
|
+
},
|
|
404
|
+
inboxAutomationRuleDelete: {
|
|
405
|
+
mcp: "delete_inbox_automation_rule"
|
|
406
|
+
},
|
|
407
|
+
inboxAutomationExecutionsList: {
|
|
408
|
+
mcp: "list_inbox_automation_executions"
|
|
299
409
|
}
|
|
300
410
|
};
|
|
301
411
|
exports.TOOL_CAPABILITIES = {
|
|
@@ -312,8 +422,13 @@ var require_dist = __commonJS({
|
|
|
312
422
|
contentReviewSetIntendedPublishTime: "content.review.set_intended_publish_time",
|
|
313
423
|
mediaRead: "media.read",
|
|
314
424
|
analyticsRead: "analytics.read",
|
|
315
|
-
integrationsRead: "integrations.read"
|
|
425
|
+
integrationsRead: "integrations.read",
|
|
426
|
+
taskBoardRead: "task_board.read",
|
|
427
|
+
taskBoardManage: "task_board.manage",
|
|
428
|
+
inboxRead: "inbox.read",
|
|
429
|
+
inboxAutomationManage: "inbox.automation_manage"
|
|
316
430
|
};
|
|
431
|
+
exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS = 4 * 60 * 60 * 1e3;
|
|
317
432
|
function defineToolContract(contract) {
|
|
318
433
|
return contract;
|
|
319
434
|
}
|
|
@@ -438,12 +553,16 @@ var require_dist = __commonJS({
|
|
|
438
553
|
inputSchema: exports.memoryRememberInputSchema,
|
|
439
554
|
outputSchema: exports.memoryRememberOutputSchema,
|
|
440
555
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.workspaceUpdate],
|
|
441
|
-
confirmation: {
|
|
556
|
+
confirmation: {
|
|
557
|
+
required: false,
|
|
558
|
+
actionType: exports.TOOL_OPERATION_IDS.memoryRemember,
|
|
559
|
+
buildSummary: (input) => `Save a workspace ${input.kind} to memory (${input.content.length} characters).`
|
|
560
|
+
},
|
|
442
561
|
idempotency: { required: true },
|
|
443
562
|
surfaces: {
|
|
444
563
|
agent: {
|
|
445
564
|
name: exports.TOOL_WIRE_NAMES.memoryRemember.agent,
|
|
446
|
-
description:
|
|
565
|
+
description: `Store a durable workspace preference, brand rule, or factual context explicitly provided by the user. For standing rules the workspace must always follow (prohibited words, compliance requirements, hard do/don't instructions), use a kind containing "rule", "constraint", "policy", "compliance", or "prohibited" (for example brand_rule, compliance_policy, prohibited_terms); those kinds are always injected into future turns. Use descriptive kinds like preference, brand_voice, or note for everything else.`,
|
|
447
566
|
access: "write",
|
|
448
567
|
gated: false,
|
|
449
568
|
safeInputSummary: (input) => `kind=${input.kind} contentLength=${input.content.length}`
|
|
@@ -829,16 +948,22 @@ var require_dist = __commonJS({
|
|
|
829
948
|
exports.COMPOSER_PATCH_CAPTION_CONTRACT = defineToolContract({
|
|
830
949
|
canonicalName: exports.TOOL_OPERATION_IDS.composerPatchCaption,
|
|
831
950
|
wireNames: exports.TOOL_WIRE_NAMES.composerPatchCaption,
|
|
832
|
-
description: "
|
|
951
|
+
description: "Replace a caption or first comment only after the user directly asks to edit the open surface.",
|
|
833
952
|
inputSchema: exports.composerPatchCaptionInputSchema,
|
|
834
953
|
outputSchema: exports.composerPatchOutputSchema,
|
|
835
954
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftUpdate],
|
|
836
|
-
|
|
955
|
+
// required stays false: the card only appears when the safety layer asks for
|
|
956
|
+
// one (surface-edit intent gate); a directly requested edit stages silently.
|
|
957
|
+
confirmation: {
|
|
958
|
+
required: false,
|
|
959
|
+
actionType: exports.TOOL_OPERATION_IDS.composerPatchCaption,
|
|
960
|
+
buildSummary: (input) => buildComposerCaptionPatchConfirmationSummary(input)
|
|
961
|
+
},
|
|
837
962
|
idempotency: { required: true },
|
|
838
963
|
surfaces: {
|
|
839
964
|
agent: {
|
|
840
965
|
name: exports.TOOL_WIRE_NAMES.composerPatchCaption.agent,
|
|
841
|
-
description: "
|
|
966
|
+
description: "Replace a caption or first comment only after the user directly asks to edit the open surface. For questions, critique, summaries, recommendations, or option requests, answer in chat without patching or asking whether to apply the answer.",
|
|
842
967
|
access: "write",
|
|
843
968
|
gated: false,
|
|
844
969
|
safeInputSummary: (input) => `targetDraftId=current field=${input.field ?? "caption"} captionLength=${input.caption.length}`
|
|
@@ -848,16 +973,20 @@ var require_dist = __commonJS({
|
|
|
848
973
|
exports.COMPOSER_PATCH_SCHEDULE_CONTRACT = defineToolContract({
|
|
849
974
|
canonicalName: exports.TOOL_OPERATION_IDS.composerPatchSchedule,
|
|
850
975
|
wireNames: exports.TOOL_WIRE_NAMES.composerPatchSchedule,
|
|
851
|
-
description: "
|
|
976
|
+
description: "Change composer schedule fields only after the user directly asks to edit them.",
|
|
852
977
|
inputSchema: exports.composerPatchScheduleInputSchema,
|
|
853
978
|
outputSchema: exports.composerPatchOutputSchema,
|
|
854
979
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftUpdate],
|
|
855
|
-
confirmation: {
|
|
980
|
+
confirmation: {
|
|
981
|
+
required: false,
|
|
982
|
+
actionType: exports.TOOL_OPERATION_IDS.composerPatchSchedule,
|
|
983
|
+
buildSummary: (input) => input.scheduledAt ? `Stage a schedule change on the open draft: ${input.scheduledAt}${input.timezone ? ` (${input.timezone})` : ""}. Nothing is saved until you save the draft.` : "Stage a schedule change on the open draft. Nothing is saved until you save the draft."
|
|
984
|
+
},
|
|
856
985
|
idempotency: { required: true },
|
|
857
986
|
surfaces: {
|
|
858
987
|
agent: {
|
|
859
988
|
name: exports.TOOL_WIRE_NAMES.composerPatchSchedule.agent,
|
|
860
|
-
description: "
|
|
989
|
+
description: "Change composer schedule fields only after the user directly asks to edit them. Questions and recommendations stay in chat without a patch or an offer to apply the answer.",
|
|
861
990
|
access: "write",
|
|
862
991
|
gated: false,
|
|
863
992
|
safeInputSummary: (input) => `targetDraftId=current scheduledAt=${input.scheduledAt ?? "unchanged"} timezone=${input.timezone ?? "unchanged"}`
|
|
@@ -867,16 +996,20 @@ var require_dist = __commonJS({
|
|
|
867
996
|
exports.COMPOSER_PATCH_TAXONOMY_CONTRACT = defineToolContract({
|
|
868
997
|
canonicalName: exports.TOOL_OPERATION_IDS.composerPatchTaxonomy,
|
|
869
998
|
wireNames: exports.TOOL_WIRE_NAMES.composerPatchTaxonomy,
|
|
870
|
-
description: "
|
|
999
|
+
description: "Change labels, pillars, formats, or hashtags only after the user directly asks to edit them.",
|
|
871
1000
|
inputSchema: exports.composerPatchTaxonomyInputSchema,
|
|
872
1001
|
outputSchema: exports.composerPatchOutputSchema,
|
|
873
1002
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftUpdate],
|
|
874
|
-
confirmation: {
|
|
1003
|
+
confirmation: {
|
|
1004
|
+
required: false,
|
|
1005
|
+
actionType: exports.TOOL_OPERATION_IDS.composerPatchTaxonomy,
|
|
1006
|
+
buildSummary: (input) => buildComposerTaxonomyPatchConfirmationSummary(input)
|
|
1007
|
+
},
|
|
875
1008
|
idempotency: { required: true },
|
|
876
1009
|
surfaces: {
|
|
877
1010
|
agent: {
|
|
878
1011
|
name: exports.TOOL_WIRE_NAMES.composerPatchTaxonomy.agent,
|
|
879
|
-
description: "
|
|
1012
|
+
description: "Change labels, pillars, formats, or hashtags only after the user directly asks to edit them. Taxonomy questions and recommendations stay in chat without a patch or an offer to apply the answer.",
|
|
880
1013
|
access: "write",
|
|
881
1014
|
gated: false,
|
|
882
1015
|
safeInputSummary: (input) => [
|
|
@@ -892,16 +1025,20 @@ var require_dist = __commonJS({
|
|
|
892
1025
|
exports.COMPOSER_PATCH_MEDIA_CONTRACT = defineToolContract({
|
|
893
1026
|
canonicalName: exports.TOOL_OPERATION_IDS.composerPatchMedia,
|
|
894
1027
|
wireNames: exports.TOOL_WIRE_NAMES.composerPatchMedia,
|
|
895
|
-
description: "
|
|
1028
|
+
description: "Replace the open draft's media list only after the user directly asks to edit it.",
|
|
896
1029
|
inputSchema: exports.composerPatchMediaInputSchema,
|
|
897
1030
|
outputSchema: exports.composerPatchOutputSchema,
|
|
898
1031
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftUpdate],
|
|
899
|
-
confirmation: {
|
|
1032
|
+
confirmation: {
|
|
1033
|
+
required: false,
|
|
1034
|
+
actionType: exports.TOOL_OPERATION_IDS.composerPatchMedia,
|
|
1035
|
+
buildSummary: (input) => `Stage a media change on the open draft (${input.contentMedia.length} item${input.contentMedia.length === 1 ? "" : "s"}). Nothing is saved until you save the draft.`
|
|
1036
|
+
},
|
|
900
1037
|
idempotency: { required: true },
|
|
901
1038
|
surfaces: {
|
|
902
1039
|
agent: {
|
|
903
1040
|
name: exports.TOOL_WIRE_NAMES.composerPatchMedia.agent,
|
|
904
|
-
description: "
|
|
1041
|
+
description: "Replace the open draft's media list only after the user directly asks to edit it. Media questions and recommendations stay in chat without a patch or an offer to apply the answer.",
|
|
905
1042
|
access: "write",
|
|
906
1043
|
gated: false,
|
|
907
1044
|
safeInputSummary: (input) => `targetDraftId=current media=${input.contentMedia.length}`
|
|
@@ -1016,6 +1153,213 @@ var require_dist = __commonJS({
|
|
|
1016
1153
|
includePendingApproval: z9.boolean().optional().describe("Include pending approval count. Requires Standard or Premium plan.")
|
|
1017
1154
|
}).strict();
|
|
1018
1155
|
var contentSelectionToolsets = ["content_selection", "content_read_only", "content_workflow", "content_workflow_all"];
|
|
1156
|
+
var taskBoardReadToolsets = [
|
|
1157
|
+
"task_board_read",
|
|
1158
|
+
"task_board_workflow",
|
|
1159
|
+
"task_board_workflow_all",
|
|
1160
|
+
"content_selection",
|
|
1161
|
+
"content_read_only",
|
|
1162
|
+
"content_workflow",
|
|
1163
|
+
"content_workflow_all"
|
|
1164
|
+
];
|
|
1165
|
+
var taskBoardWorkflowToolsets = ["task_board_workflow", "task_board_workflow_all"];
|
|
1166
|
+
var taskBoardDangerousToolsets = ["task_board_dangerous", "task_board_workflow_all"];
|
|
1167
|
+
exports.taskBoardListInputSchema = z9.object({}).strict();
|
|
1168
|
+
exports.taskBoardListMcpInputSchema = z9.object({
|
|
1169
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID.")
|
|
1170
|
+
}).strict();
|
|
1171
|
+
exports.taskGetInputSchema = z9.object({
|
|
1172
|
+
taskId: z9.string().uuid().describe("Task ID to retrieve."),
|
|
1173
|
+
includeComments: z9.boolean().default(false).describe("Include task comments."),
|
|
1174
|
+
includeActivity: z9.boolean().default(false).describe("Include task activity history."),
|
|
1175
|
+
activityLimit: z9.number().int().min(1).max(100).default(50).describe("Activity page size, maximum 100."),
|
|
1176
|
+
activityCursor: z9.string().trim().min(1).nullable().optional().describe("Activity pagination cursor.")
|
|
1177
|
+
}).strict();
|
|
1178
|
+
exports.taskGetMcpInputSchema = exports.taskGetInputSchema.extend({
|
|
1179
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID.")
|
|
1180
|
+
}).strict();
|
|
1181
|
+
exports.taskListForPostInputSchema = z9.object({
|
|
1182
|
+
postId: z9.string().uuid().describe("Linked content post ID.")
|
|
1183
|
+
}).strict();
|
|
1184
|
+
exports.taskListForPostMcpInputSchema = exports.taskListForPostInputSchema.extend({
|
|
1185
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID.")
|
|
1186
|
+
}).strict();
|
|
1187
|
+
exports.taskListArchivedInputSchema = z9.object({
|
|
1188
|
+
limit: z9.number().int().min(1).max(100).default(50).describe("Archive page size, maximum 100."),
|
|
1189
|
+
cursor: z9.string().trim().min(1).nullable().optional().describe("Archive pagination cursor.")
|
|
1190
|
+
}).strict();
|
|
1191
|
+
exports.taskListArchivedMcpInputSchema = exports.taskListArchivedInputSchema.extend({
|
|
1192
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID.")
|
|
1193
|
+
}).strict();
|
|
1194
|
+
var TASK_BOARD_PRIORITY_VALUES = ["urgent", "high", "medium", "low"];
|
|
1195
|
+
var workspaceIdSchema = z9.string().uuid().describe("Maeve workspace ID.");
|
|
1196
|
+
var taskTitleSchema = z9.string().regex(/\S/, "title should not be blank").max(180);
|
|
1197
|
+
var taskDescriptionSchema = z9.string().max(5e3);
|
|
1198
|
+
var taskColorSchema = z9.string().regex(/^#[0-9a-fA-F]{6}$/, "must be a #rrggbb hex color");
|
|
1199
|
+
var taskUuidV4Schema = z9.uuidv4();
|
|
1200
|
+
var taskUuidV4ListSchema = z9.array(taskUuidV4Schema).max(50);
|
|
1201
|
+
var taskDueAtSchema = z9.string().regex(/^\d{4}-\d{2}-\d{2}$/, "must be an ISO date (YYYY-MM-DD)").refine(isTaskDateOnly, "must be a valid ISO date (YYYY-MM-DD)");
|
|
1202
|
+
var taskChecklistTitleSchema = z9.string().regex(/\S/, "title should not be blank").max(500);
|
|
1203
|
+
function isTaskDateOnly(value) {
|
|
1204
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
|
|
1205
|
+
if (!match)
|
|
1206
|
+
return false;
|
|
1207
|
+
const [, yearRaw, monthRaw, dayRaw] = match;
|
|
1208
|
+
const year = Number.parseInt(yearRaw, 10);
|
|
1209
|
+
const month = Number.parseInt(monthRaw, 10);
|
|
1210
|
+
const day = Number.parseInt(dayRaw, 10);
|
|
1211
|
+
const time = Date.UTC(year, month - 1, day);
|
|
1212
|
+
if (!Number.isFinite(time))
|
|
1213
|
+
return false;
|
|
1214
|
+
const parsed = new Date(time);
|
|
1215
|
+
return parsed.getUTCFullYear() === year && parsed.getUTCMonth() + 1 === month && parsed.getUTCDate() === day;
|
|
1216
|
+
}
|
|
1217
|
+
var createTaskBodyShape = {
|
|
1218
|
+
title: taskTitleSchema.describe("Task title, maximum 180 characters."),
|
|
1219
|
+
description: taskDescriptionSchema.nullable().optional().describe("Task description, maximum 5000 characters."),
|
|
1220
|
+
color: taskColorSchema.nullable().optional().describe("Card color as a #rrggbb hex value."),
|
|
1221
|
+
columnId: taskUuidV4Schema.nullable().optional().describe("Target column ID. Defaults to the backlog column."),
|
|
1222
|
+
postId: z9.string().uuid().nullable().optional().describe("Content post ID to link to the task."),
|
|
1223
|
+
assigneeIds: taskUuidV4ListSchema.optional().describe("Workspace member user IDs to assign, maximum 50."),
|
|
1224
|
+
labelIds: taskUuidV4ListSchema.optional().describe("Task board label IDs to apply, maximum 50."),
|
|
1225
|
+
priority: z9.enum(TASK_BOARD_PRIORITY_VALUES).nullable().optional().describe("Task priority."),
|
|
1226
|
+
dueAt: taskDueAtSchema.nullable().optional().describe("Due date as YYYY-MM-DD."),
|
|
1227
|
+
checklistItemTitles: z9.array(taskChecklistTitleSchema).max(25).optional().describe("Starter checklist item titles, maximum 25.")
|
|
1228
|
+
};
|
|
1229
|
+
exports.createTaskBodySchema = z9.object(createTaskBodyShape).strict();
|
|
1230
|
+
exports.createTaskInputSchema = exports.createTaskBodySchema;
|
|
1231
|
+
exports.createTaskMcpInputSchema = z9.object({
|
|
1232
|
+
workspaceId: workspaceIdSchema,
|
|
1233
|
+
...createTaskBodyShape
|
|
1234
|
+
}).strict();
|
|
1235
|
+
var updateTaskBodyShape = {
|
|
1236
|
+
title: taskTitleSchema.optional().describe("Task title, maximum 180 characters."),
|
|
1237
|
+
description: taskDescriptionSchema.nullable().optional().describe("Pass null to clear the description."),
|
|
1238
|
+
color: taskColorSchema.nullable().optional().describe("Pass null to clear the card color."),
|
|
1239
|
+
postId: z9.string().uuid().nullable().optional().describe("Content post ID to link; pass null to unlink."),
|
|
1240
|
+
assigneeIds: taskUuidV4ListSchema.optional().describe("Full replacement set of assignee user IDs, maximum 50."),
|
|
1241
|
+
labelIds: taskUuidV4ListSchema.optional().describe("Full replacement set of label IDs, maximum 50."),
|
|
1242
|
+
priority: z9.enum(TASK_BOARD_PRIORITY_VALUES).nullable().optional().describe("Pass null to clear the priority."),
|
|
1243
|
+
dueAt: taskDueAtSchema.nullable().optional().describe("Due date as YYYY-MM-DD; pass null to clear.")
|
|
1244
|
+
};
|
|
1245
|
+
exports.updateTaskBodySchema = z9.object(updateTaskBodyShape).strict();
|
|
1246
|
+
exports.updateTaskInputSchema = z9.object({
|
|
1247
|
+
taskId: z9.string().uuid().describe("Task ID to update."),
|
|
1248
|
+
...updateTaskBodyShape
|
|
1249
|
+
}).strict();
|
|
1250
|
+
exports.updateTaskMcpInputSchema = z9.object({
|
|
1251
|
+
workspaceId: workspaceIdSchema,
|
|
1252
|
+
taskId: z9.string().uuid().describe("Task ID to update."),
|
|
1253
|
+
...updateTaskBodyShape
|
|
1254
|
+
}).strict();
|
|
1255
|
+
var moveTaskBodyShape = {
|
|
1256
|
+
targetColumnId: taskUuidV4Schema.describe("Column to move the task into."),
|
|
1257
|
+
beforeTaskId: taskUuidV4Schema.nullable().optional().describe("Place the task immediately before this task."),
|
|
1258
|
+
afterTaskId: taskUuidV4Schema.nullable().optional().describe("Place the task immediately after this task.")
|
|
1259
|
+
};
|
|
1260
|
+
exports.moveTaskBodySchema = z9.object(moveTaskBodyShape).strict();
|
|
1261
|
+
exports.moveTaskInputSchema = z9.object({
|
|
1262
|
+
taskId: z9.string().uuid().describe("Task ID to move."),
|
|
1263
|
+
...moveTaskBodyShape
|
|
1264
|
+
}).strict();
|
|
1265
|
+
exports.moveTaskMcpInputSchema = z9.object({
|
|
1266
|
+
workspaceId: workspaceIdSchema,
|
|
1267
|
+
taskId: z9.string().uuid().describe("Task ID to move."),
|
|
1268
|
+
...moveTaskBodyShape
|
|
1269
|
+
}).strict();
|
|
1270
|
+
exports.archiveTaskInputSchema = z9.object({
|
|
1271
|
+
taskId: z9.string().uuid().describe("Task ID to archive.")
|
|
1272
|
+
}).strict();
|
|
1273
|
+
exports.archiveTaskMcpInputSchema = exports.archiveTaskInputSchema.extend({
|
|
1274
|
+
workspaceId: workspaceIdSchema
|
|
1275
|
+
}).strict();
|
|
1276
|
+
exports.restoreTaskInputSchema = z9.object({
|
|
1277
|
+
taskId: z9.string().uuid().describe("Archived task ID to restore.")
|
|
1278
|
+
}).strict();
|
|
1279
|
+
exports.restoreTaskMcpInputSchema = exports.restoreTaskInputSchema.extend({
|
|
1280
|
+
workspaceId: workspaceIdSchema
|
|
1281
|
+
}).strict();
|
|
1282
|
+
var deleteTaskInputShape = {
|
|
1283
|
+
taskId: z9.string().uuid().describe("Task ID to delete."),
|
|
1284
|
+
confirmationText: z9.string().optional().describe("Exact confirmation text: delete_task:<taskId>."),
|
|
1285
|
+
dangerouslyAutoConfirm: z9.boolean().optional().describe("Never honored for this action; deletion always requires the exact confirmation text.")
|
|
1286
|
+
};
|
|
1287
|
+
exports.deleteTaskInputSchema = z9.object(deleteTaskInputShape).strict();
|
|
1288
|
+
exports.deleteTaskMcpInputSchema = z9.object({
|
|
1289
|
+
workspaceId: workspaceIdSchema,
|
|
1290
|
+
...deleteTaskInputShape
|
|
1291
|
+
}).strict();
|
|
1292
|
+
var createTaskCommentBodyShape = {
|
|
1293
|
+
content: z9.string().max(4e3).describe("Comment text, maximum 4000 characters. @mentions notify workspace members.")
|
|
1294
|
+
};
|
|
1295
|
+
exports.createTaskCommentBodySchema = z9.object(createTaskCommentBodyShape).strict();
|
|
1296
|
+
exports.createTaskCommentInputSchema = z9.object({
|
|
1297
|
+
taskId: z9.string().uuid().describe("Task ID to comment on."),
|
|
1298
|
+
...createTaskCommentBodyShape
|
|
1299
|
+
}).strict();
|
|
1300
|
+
exports.createTaskCommentMcpInputSchema = z9.object({
|
|
1301
|
+
workspaceId: workspaceIdSchema,
|
|
1302
|
+
taskId: z9.string().uuid().describe("Task ID to comment on."),
|
|
1303
|
+
...createTaskCommentBodyShape
|
|
1304
|
+
}).strict();
|
|
1305
|
+
var createTaskChecklistItemBodyShape = {
|
|
1306
|
+
title: taskChecklistTitleSchema.describe("Checklist item title, maximum 500 characters."),
|
|
1307
|
+
beforeItemId: taskUuidV4Schema.nullable().optional().describe("Insert immediately before this checklist item."),
|
|
1308
|
+
afterItemId: taskUuidV4Schema.nullable().optional().describe("Insert immediately after this checklist item.")
|
|
1309
|
+
};
|
|
1310
|
+
exports.createTaskChecklistItemBodySchema = z9.object(createTaskChecklistItemBodyShape).strict();
|
|
1311
|
+
exports.createTaskChecklistItemInputSchema = z9.object({
|
|
1312
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1313
|
+
...createTaskChecklistItemBodyShape
|
|
1314
|
+
}).strict();
|
|
1315
|
+
exports.createTaskChecklistItemMcpInputSchema = z9.object({
|
|
1316
|
+
workspaceId: workspaceIdSchema,
|
|
1317
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1318
|
+
...createTaskChecklistItemBodyShape
|
|
1319
|
+
}).strict();
|
|
1320
|
+
var updateTaskChecklistItemBodyShape = {
|
|
1321
|
+
title: taskChecklistTitleSchema.optional().describe("Checklist item title, maximum 500 characters."),
|
|
1322
|
+
isCompleted: z9.boolean().optional().describe("Mark the checklist item complete or incomplete.")
|
|
1323
|
+
};
|
|
1324
|
+
exports.updateTaskChecklistItemBodySchema = z9.object(updateTaskChecklistItemBodyShape).strict();
|
|
1325
|
+
exports.updateTaskChecklistItemInputSchema = z9.object({
|
|
1326
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1327
|
+
itemId: z9.string().uuid().describe("Checklist item ID to update."),
|
|
1328
|
+
...updateTaskChecklistItemBodyShape
|
|
1329
|
+
}).strict();
|
|
1330
|
+
exports.updateTaskChecklistItemMcpInputSchema = z9.object({
|
|
1331
|
+
workspaceId: workspaceIdSchema,
|
|
1332
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1333
|
+
itemId: z9.string().uuid().describe("Checklist item ID to update."),
|
|
1334
|
+
...updateTaskChecklistItemBodyShape
|
|
1335
|
+
}).strict();
|
|
1336
|
+
var moveTaskChecklistItemBodyShape = {
|
|
1337
|
+
beforeItemId: taskUuidV4Schema.nullable().optional().describe("Place immediately before this checklist item."),
|
|
1338
|
+
afterItemId: taskUuidV4Schema.nullable().optional().describe("Place immediately after this checklist item.")
|
|
1339
|
+
};
|
|
1340
|
+
exports.moveTaskChecklistItemBodySchema = z9.object(moveTaskChecklistItemBodyShape).strict();
|
|
1341
|
+
exports.moveTaskChecklistItemInputSchema = z9.object({
|
|
1342
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1343
|
+
itemId: z9.string().uuid().describe("Checklist item ID to move."),
|
|
1344
|
+
...moveTaskChecklistItemBodyShape
|
|
1345
|
+
}).strict();
|
|
1346
|
+
exports.moveTaskChecklistItemMcpInputSchema = z9.object({
|
|
1347
|
+
workspaceId: workspaceIdSchema,
|
|
1348
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1349
|
+
itemId: z9.string().uuid().describe("Checklist item ID to move."),
|
|
1350
|
+
...moveTaskChecklistItemBodyShape
|
|
1351
|
+
}).strict();
|
|
1352
|
+
var deleteTaskChecklistItemInputShape = {
|
|
1353
|
+
taskId: z9.string().uuid().describe("Parent task ID."),
|
|
1354
|
+
itemId: z9.string().uuid().describe("Checklist item ID to delete."),
|
|
1355
|
+
confirmationText: z9.string().optional().describe("Exact confirmation text: delete_task_checklist_item:<itemId>."),
|
|
1356
|
+
dangerouslyAutoConfirm: z9.boolean().optional().describe("Never honored for this action; deletion always requires the exact confirmation text.")
|
|
1357
|
+
};
|
|
1358
|
+
exports.deleteTaskChecklistItemInputSchema = z9.object(deleteTaskChecklistItemInputShape).strict();
|
|
1359
|
+
exports.deleteTaskChecklistItemMcpInputSchema = z9.object({
|
|
1360
|
+
workspaceId: workspaceIdSchema,
|
|
1361
|
+
...deleteTaskChecklistItemInputShape
|
|
1362
|
+
}).strict();
|
|
1019
1363
|
exports.CONTENT_LIST_CONTRACT = {
|
|
1020
1364
|
canonicalName: exports.TOOL_OPERATION_IDS.contentList,
|
|
1021
1365
|
wireNames: exports.TOOL_WIRE_NAMES.contentList,
|
|
@@ -1031,82 +1375,549 @@ var require_dist = __commonJS({
|
|
|
1031
1375
|
// promoted to the agent surface must carry at least one capability.
|
|
1032
1376
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.workspaceRead],
|
|
1033
1377
|
confirmation: { required: false },
|
|
1034
|
-
idempotency: { required: false },
|
|
1378
|
+
idempotency: { required: false },
|
|
1379
|
+
surfaces: {
|
|
1380
|
+
agent: {
|
|
1381
|
+
name: exports.TOOL_WIRE_NAMES.contentList.agent,
|
|
1382
|
+
description: "List saved content in the current workspace with status, workflow, review-lifecycle, integration, and sort filters. Items include full captions, so keep limit small and page with offset. Prefer content.find_recent for a quick recency scan. Read-only.",
|
|
1383
|
+
access: "read",
|
|
1384
|
+
gated: false,
|
|
1385
|
+
safeInputSummary: (input) => `status=${input.status ?? "any"} limit=${input.limit ?? 10} offset=${input.offset ?? 0}`
|
|
1386
|
+
},
|
|
1387
|
+
mcp: {
|
|
1388
|
+
name: exports.TOOL_WIRE_NAMES.contentList.mcp,
|
|
1389
|
+
title: "List Content",
|
|
1390
|
+
description: "List Maeve content for a workspace using public API filters and sanitized output. Defaults intentionally exclude review-held pending_approval content; explicit reviewLifecycle filters opt into review-held content and include reviewLifecycle on items.",
|
|
1391
|
+
scope: "mcp:read",
|
|
1392
|
+
toolsets: contentSelectionToolsets,
|
|
1393
|
+
annotations: mcpReadAnnotations
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
};
|
|
1397
|
+
exports.CONTENT_GET_CONTRACT = {
|
|
1398
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentGet,
|
|
1399
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentGet,
|
|
1400
|
+
description: "Get one Maeve content item with public API detail fields, sanitized media, and sanitized platform settings. When reviewLifecycle is present, use its state, blockers, and nextAction instead of content.status alone for review workflow decisions.",
|
|
1401
|
+
inputSchema: exports.contentGetInputSchema,
|
|
1402
|
+
wireInputSchemas: {
|
|
1403
|
+
mcp: exports.contentGetMcpInputSchema
|
|
1404
|
+
},
|
|
1405
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1406
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.workspaceRead],
|
|
1407
|
+
confirmation: { required: false },
|
|
1408
|
+
idempotency: { required: false },
|
|
1409
|
+
surfaces: {
|
|
1410
|
+
agent: {
|
|
1411
|
+
name: exports.TOOL_WIRE_NAMES.contentGet.agent,
|
|
1412
|
+
description: "Read one saved content item in the current workspace, including sanitized media, captions, workflow metadata, and platform settings.",
|
|
1413
|
+
access: "read",
|
|
1414
|
+
gated: false,
|
|
1415
|
+
safeInputSummary: (input) => `contentId=${input.contentId}`
|
|
1416
|
+
},
|
|
1417
|
+
mcp: {
|
|
1418
|
+
name: exports.TOOL_WIRE_NAMES.contentGet.mcp,
|
|
1419
|
+
title: "Get Content",
|
|
1420
|
+
description: "Get one Maeve content item with public API detail fields, sanitized media, and sanitized platform settings. When reviewLifecycle is present, use its state, blockers, and nextAction instead of content.status alone for review workflow decisions.",
|
|
1421
|
+
scope: "mcp:read",
|
|
1422
|
+
toolsets: contentSelectionToolsets,
|
|
1423
|
+
annotations: mcpReadAnnotations
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
};
|
|
1427
|
+
exports.CONTENT_GET_COUNTS_CONTRACT = {
|
|
1428
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentGetCounts,
|
|
1429
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentGetCounts,
|
|
1430
|
+
description: "Get safe content workflow counts for an Maeve workspace, including failed content and premium-plan pending approvals.",
|
|
1431
|
+
inputSchema: exports.contentGetCountsInputSchema,
|
|
1432
|
+
wireInputSchemas: {
|
|
1433
|
+
mcp: exports.contentGetCountsMcpInputSchema
|
|
1434
|
+
},
|
|
1435
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1436
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.workspaceRead],
|
|
1437
|
+
confirmation: { required: false },
|
|
1438
|
+
idempotency: { required: false },
|
|
1439
|
+
surfaces: {
|
|
1440
|
+
agent: {
|
|
1441
|
+
name: exports.TOOL_WIRE_NAMES.contentGetCounts.agent,
|
|
1442
|
+
description: "Read safe content workflow counts for the current workspace: failed content, plus pending approvals when includePendingApproval is true. Cheap way to check whether anything needs attention before listing. Read-only.",
|
|
1443
|
+
access: "read",
|
|
1444
|
+
gated: false,
|
|
1445
|
+
safeInputSummary: (input) => `includePendingApproval=${input.includePendingApproval ?? false}`
|
|
1446
|
+
},
|
|
1447
|
+
mcp: {
|
|
1448
|
+
name: exports.TOOL_WIRE_NAMES.contentGetCounts.mcp,
|
|
1449
|
+
title: "Get Content Counts",
|
|
1450
|
+
description: "Get safe content workflow counts for an Maeve workspace, including failed content and premium-plan pending approvals.",
|
|
1451
|
+
scope: "mcp:read",
|
|
1452
|
+
toolsets: contentSelectionToolsets,
|
|
1453
|
+
annotations: mcpReadAnnotations
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
};
|
|
1457
|
+
exports.TASK_BOARD_LIST_CONTRACT = {
|
|
1458
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskBoardList,
|
|
1459
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskBoardList,
|
|
1460
|
+
description: "List active task board columns, tasks, members, and task details. Tasks include descriptions, priorities, due dates, assignees, checklist items, labels, and linked content.",
|
|
1461
|
+
inputSchema: exports.taskBoardListInputSchema,
|
|
1462
|
+
wireInputSchemas: {
|
|
1463
|
+
mcp: exports.taskBoardListMcpInputSchema
|
|
1464
|
+
},
|
|
1465
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1466
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardRead],
|
|
1467
|
+
confirmation: { required: false },
|
|
1468
|
+
idempotency: { required: false },
|
|
1469
|
+
surfaces: {
|
|
1470
|
+
mcp: {
|
|
1471
|
+
name: exports.TOOL_WIRE_NAMES.taskBoardList.mcp,
|
|
1472
|
+
title: "List Tasks",
|
|
1473
|
+
description: "List active Maeve task board columns, tasks, members, and task details. Tasks include descriptions, priorities, due dates, assignees, checklist items, labels, and linked content.",
|
|
1474
|
+
scope: "mcp:read",
|
|
1475
|
+
toolsets: taskBoardReadToolsets,
|
|
1476
|
+
annotations: mcpReadAnnotations
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
};
|
|
1480
|
+
exports.TASK_GET_CONTRACT = {
|
|
1481
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskGet,
|
|
1482
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskGet,
|
|
1483
|
+
description: "Get one Maeve task with details, including checklist items, labels, assignees, linked content, and optional comments and activity.",
|
|
1484
|
+
inputSchema: exports.taskGetInputSchema,
|
|
1485
|
+
wireInputSchemas: {
|
|
1486
|
+
mcp: exports.taskGetMcpInputSchema
|
|
1487
|
+
},
|
|
1488
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1489
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardRead],
|
|
1490
|
+
confirmation: { required: false },
|
|
1491
|
+
idempotency: { required: false },
|
|
1492
|
+
surfaces: {
|
|
1493
|
+
mcp: {
|
|
1494
|
+
name: exports.TOOL_WIRE_NAMES.taskGet.mcp,
|
|
1495
|
+
title: "Get Task",
|
|
1496
|
+
description: "Get one Maeve task with details. The task includes checklist items, labels, assignees, linked content, description, priority, and due date. Set includeComments or includeActivity when the surrounding discussion or task history is needed.",
|
|
1497
|
+
scope: "mcp:read",
|
|
1498
|
+
toolsets: taskBoardReadToolsets,
|
|
1499
|
+
annotations: mcpReadAnnotations
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
};
|
|
1503
|
+
exports.TASK_LIST_FOR_POST_CONTRACT = {
|
|
1504
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskListForPost,
|
|
1505
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskListForPost,
|
|
1506
|
+
description: "List active Maeve tasks linked to one content post.",
|
|
1507
|
+
inputSchema: exports.taskListForPostInputSchema,
|
|
1508
|
+
wireInputSchemas: {
|
|
1509
|
+
mcp: exports.taskListForPostMcpInputSchema
|
|
1510
|
+
},
|
|
1511
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1512
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardRead],
|
|
1513
|
+
confirmation: { required: false },
|
|
1514
|
+
idempotency: { required: false },
|
|
1515
|
+
surfaces: {
|
|
1516
|
+
mcp: {
|
|
1517
|
+
name: exports.TOOL_WIRE_NAMES.taskListForPost.mcp,
|
|
1518
|
+
title: "List Tasks For Post",
|
|
1519
|
+
description: "List active Maeve tasks linked to one content post. Each task includes checklist items, labels, assignees, and linked content.",
|
|
1520
|
+
scope: "mcp:read",
|
|
1521
|
+
toolsets: taskBoardReadToolsets,
|
|
1522
|
+
annotations: mcpReadAnnotations
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
};
|
|
1526
|
+
exports.TASK_LIST_ARCHIVED_CONTRACT = {
|
|
1527
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskListArchived,
|
|
1528
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskListArchived,
|
|
1529
|
+
description: "List archived Maeve tasks with task details, including checklist items, labels, assignees, and linked content.",
|
|
1530
|
+
inputSchema: exports.taskListArchivedInputSchema,
|
|
1531
|
+
wireInputSchemas: {
|
|
1532
|
+
mcp: exports.taskListArchivedMcpInputSchema
|
|
1533
|
+
},
|
|
1534
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1535
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardRead],
|
|
1536
|
+
confirmation: { required: false },
|
|
1537
|
+
idempotency: { required: false },
|
|
1538
|
+
surfaces: {
|
|
1539
|
+
mcp: {
|
|
1540
|
+
name: exports.TOOL_WIRE_NAMES.taskListArchived.mcp,
|
|
1541
|
+
title: "List Archived Tasks",
|
|
1542
|
+
description: "List archived Maeve tasks with task details, including checklist items, labels, assignees, and linked content.",
|
|
1543
|
+
scope: "mcp:read",
|
|
1544
|
+
toolsets: taskBoardReadToolsets,
|
|
1545
|
+
annotations: mcpReadAnnotations
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
};
|
|
1549
|
+
function buildDeleteTaskConfirmationSummary(input) {
|
|
1550
|
+
return `Delete task ${input.taskId} from the task board. Deleted tasks cannot be restored.`;
|
|
1551
|
+
}
|
|
1552
|
+
function buildDeleteTaskChecklistItemConfirmationSummary(input) {
|
|
1553
|
+
return `Delete checklist item ${input.itemId} from task ${input.taskId}. This cannot be undone.`;
|
|
1554
|
+
}
|
|
1555
|
+
exports.TASK_CREATE_CONTRACT = {
|
|
1556
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskCreate,
|
|
1557
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskCreate,
|
|
1558
|
+
description: "Create a Maeve task board task with optional description, color, column, linked content post, assignees, labels, priority, due date, and starter checklist items. Assignees are notified.",
|
|
1559
|
+
inputSchema: exports.createTaskInputSchema,
|
|
1560
|
+
wireInputSchemas: {
|
|
1561
|
+
mcp: exports.createTaskMcpInputSchema
|
|
1562
|
+
},
|
|
1563
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1564
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1565
|
+
confirmation: { required: false },
|
|
1566
|
+
idempotency: {
|
|
1567
|
+
required: true,
|
|
1568
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskCreate, context.workspaceId, shortStableHash(input)].join(":")
|
|
1569
|
+
},
|
|
1570
|
+
surfaces: {
|
|
1571
|
+
mcp: {
|
|
1572
|
+
name: exports.TOOL_WIRE_NAMES.taskCreate.mcp,
|
|
1573
|
+
title: "Create Task",
|
|
1574
|
+
description: "Create a Maeve task board task. Supports description, color, column, linked content post, assignees, labels, priority, due date, and starter checklist items. Assignees are notified.",
|
|
1575
|
+
scope: "mcp:write",
|
|
1576
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1577
|
+
annotations: {
|
|
1578
|
+
readOnlyHint: false,
|
|
1579
|
+
destructiveHint: false,
|
|
1580
|
+
idempotentHint: false,
|
|
1581
|
+
openWorldHint: false
|
|
1582
|
+
}
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
};
|
|
1586
|
+
exports.TASK_UPDATE_CONTRACT = {
|
|
1587
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskUpdate,
|
|
1588
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskUpdate,
|
|
1589
|
+
description: "Update a Maeve task board task: title, description, color, linked content post, assignees, labels, priority, and due date. Assignee and label arrays are full replacement sets. Archived tasks are read-only until restored.",
|
|
1590
|
+
inputSchema: exports.updateTaskInputSchema,
|
|
1591
|
+
wireInputSchemas: {
|
|
1592
|
+
mcp: exports.updateTaskMcpInputSchema
|
|
1593
|
+
},
|
|
1594
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1595
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1596
|
+
confirmation: { required: false },
|
|
1597
|
+
idempotency: {
|
|
1598
|
+
required: true,
|
|
1599
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskUpdate, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1600
|
+
},
|
|
1601
|
+
surfaces: {
|
|
1602
|
+
mcp: {
|
|
1603
|
+
name: exports.TOOL_WIRE_NAMES.taskUpdate.mcp,
|
|
1604
|
+
title: "Update Task",
|
|
1605
|
+
description: "Update a Maeve task board task: title, description, color, linked content post (null unlinks), assignees, labels, priority, and due date. Assignee and label arrays are full replacement sets. Archived tasks are read-only until restored.",
|
|
1606
|
+
scope: "mcp:write",
|
|
1607
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1608
|
+
annotations: {
|
|
1609
|
+
readOnlyHint: false,
|
|
1610
|
+
destructiveHint: false,
|
|
1611
|
+
idempotentHint: true,
|
|
1612
|
+
openWorldHint: false
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1616
|
+
};
|
|
1617
|
+
exports.TASK_MOVE_CONTRACT = {
|
|
1618
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskMove,
|
|
1619
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskMove,
|
|
1620
|
+
description: "Move a Maeve task board task to a column, optionally anchored before or after another task in that column. Archived tasks cannot be moved.",
|
|
1621
|
+
inputSchema: exports.moveTaskInputSchema,
|
|
1622
|
+
wireInputSchemas: {
|
|
1623
|
+
mcp: exports.moveTaskMcpInputSchema
|
|
1624
|
+
},
|
|
1625
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1626
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1627
|
+
confirmation: { required: false },
|
|
1628
|
+
idempotency: {
|
|
1629
|
+
required: true,
|
|
1630
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskMove, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1631
|
+
},
|
|
1632
|
+
surfaces: {
|
|
1633
|
+
mcp: {
|
|
1634
|
+
name: exports.TOOL_WIRE_NAMES.taskMove.mcp,
|
|
1635
|
+
title: "Move Task",
|
|
1636
|
+
description: "Move a Maeve task board task to a column, optionally anchored before or after another task in that column. Omit both anchors to place the task at the top. Archived tasks cannot be moved.",
|
|
1637
|
+
scope: "mcp:write",
|
|
1638
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1639
|
+
annotations: {
|
|
1640
|
+
readOnlyHint: false,
|
|
1641
|
+
destructiveHint: false,
|
|
1642
|
+
idempotentHint: true,
|
|
1643
|
+
openWorldHint: false
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
}
|
|
1647
|
+
};
|
|
1648
|
+
exports.TASK_ARCHIVE_CONTRACT = {
|
|
1649
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskArchive,
|
|
1650
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskArchive,
|
|
1651
|
+
description: "Archive a Maeve task board task. Archived tasks are read-only and recoverable with restore_task; archiving an already archived task is a no-op.",
|
|
1652
|
+
inputSchema: exports.archiveTaskInputSchema,
|
|
1653
|
+
wireInputSchemas: {
|
|
1654
|
+
mcp: exports.archiveTaskMcpInputSchema
|
|
1655
|
+
},
|
|
1656
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1657
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1658
|
+
confirmation: { required: false },
|
|
1659
|
+
idempotency: {
|
|
1660
|
+
required: true,
|
|
1661
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskArchive, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1662
|
+
},
|
|
1663
|
+
surfaces: {
|
|
1664
|
+
mcp: {
|
|
1665
|
+
name: exports.TOOL_WIRE_NAMES.taskArchive.mcp,
|
|
1666
|
+
title: "Archive Task",
|
|
1667
|
+
description: "Archive a Maeve task board task. Archived tasks are read-only and recoverable with restore_task; archiving an already archived task is a no-op.",
|
|
1668
|
+
scope: "mcp:write",
|
|
1669
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1670
|
+
annotations: {
|
|
1671
|
+
readOnlyHint: false,
|
|
1672
|
+
destructiveHint: false,
|
|
1673
|
+
idempotentHint: true,
|
|
1674
|
+
openWorldHint: false
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
};
|
|
1679
|
+
exports.TASK_RESTORE_CONTRACT = {
|
|
1680
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskRestore,
|
|
1681
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskRestore,
|
|
1682
|
+
description: "Restore an archived Maeve task board task to the top of its column. Restoring an active task is a no-op.",
|
|
1683
|
+
inputSchema: exports.restoreTaskInputSchema,
|
|
1684
|
+
wireInputSchemas: {
|
|
1685
|
+
mcp: exports.restoreTaskMcpInputSchema
|
|
1686
|
+
},
|
|
1687
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1688
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1689
|
+
confirmation: { required: false },
|
|
1690
|
+
idempotency: {
|
|
1691
|
+
required: true,
|
|
1692
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskRestore, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1693
|
+
},
|
|
1694
|
+
surfaces: {
|
|
1695
|
+
mcp: {
|
|
1696
|
+
name: exports.TOOL_WIRE_NAMES.taskRestore.mcp,
|
|
1697
|
+
title: "Restore Task",
|
|
1698
|
+
description: "Restore an archived Maeve task board task to the top of its column. Restoring an active task is a no-op.",
|
|
1699
|
+
scope: "mcp:write",
|
|
1700
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1701
|
+
annotations: {
|
|
1702
|
+
readOnlyHint: false,
|
|
1703
|
+
destructiveHint: false,
|
|
1704
|
+
idempotentHint: true,
|
|
1705
|
+
openWorldHint: false
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
};
|
|
1710
|
+
exports.TASK_DELETE_CONTRACT = {
|
|
1711
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskDelete,
|
|
1712
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskDelete,
|
|
1713
|
+
description: "Delete a Maeve task board task. Deleted tasks disappear from the board and archive and cannot be restored. High-risk: requires the exact confirmation text delete_task:<taskId>; dangerous auto-confirm is never honored for this action.",
|
|
1714
|
+
inputSchema: exports.deleteTaskInputSchema,
|
|
1715
|
+
wireInputSchemas: {
|
|
1716
|
+
mcp: exports.deleteTaskMcpInputSchema
|
|
1717
|
+
},
|
|
1718
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1719
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1720
|
+
confirmation: {
|
|
1721
|
+
required: true,
|
|
1722
|
+
actionType: exports.TOOL_OPERATION_IDS.taskDelete,
|
|
1723
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
1724
|
+
buildSummary: (input) => buildDeleteTaskConfirmationSummary(input)
|
|
1725
|
+
},
|
|
1726
|
+
idempotency: {
|
|
1727
|
+
required: true,
|
|
1728
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskDelete, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1729
|
+
},
|
|
1730
|
+
surfaces: {
|
|
1731
|
+
mcp: {
|
|
1732
|
+
name: exports.TOOL_WIRE_NAMES.taskDelete.mcp,
|
|
1733
|
+
title: "Delete Task",
|
|
1734
|
+
description: "Delete a Maeve task board task. Deleted tasks disappear from the board and archive and cannot be restored. High-risk: requires the exact confirmation text delete_task:<taskId>; dangerous auto-confirm is never honored for this action.",
|
|
1735
|
+
scope: "mcp:dangerous",
|
|
1736
|
+
toolsets: taskBoardDangerousToolsets,
|
|
1737
|
+
annotations: {
|
|
1738
|
+
readOnlyHint: false,
|
|
1739
|
+
destructiveHint: true,
|
|
1740
|
+
idempotentHint: false,
|
|
1741
|
+
openWorldHint: false
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
};
|
|
1746
|
+
exports.TASK_COMMENT_CREATE_CONTRACT = {
|
|
1747
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskCommentCreate,
|
|
1748
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskCommentCreate,
|
|
1749
|
+
description: "Add a comment to a Maeve task board task. @mentions in the comment notify the mentioned workspace members. Archived task comments are read-only.",
|
|
1750
|
+
inputSchema: exports.createTaskCommentInputSchema,
|
|
1751
|
+
wireInputSchemas: {
|
|
1752
|
+
mcp: exports.createTaskCommentMcpInputSchema
|
|
1753
|
+
},
|
|
1754
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1755
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1756
|
+
confirmation: { required: false },
|
|
1757
|
+
idempotency: {
|
|
1758
|
+
required: true,
|
|
1759
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskCommentCreate, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1760
|
+
},
|
|
1761
|
+
surfaces: {
|
|
1762
|
+
mcp: {
|
|
1763
|
+
name: exports.TOOL_WIRE_NAMES.taskCommentCreate.mcp,
|
|
1764
|
+
title: "Create Task Comment",
|
|
1765
|
+
description: "Add a comment to a Maeve task board task. @mentions in the comment notify the mentioned workspace members. Archived task comments are read-only.",
|
|
1766
|
+
scope: "mcp:write",
|
|
1767
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1768
|
+
annotations: {
|
|
1769
|
+
readOnlyHint: false,
|
|
1770
|
+
destructiveHint: false,
|
|
1771
|
+
idempotentHint: false,
|
|
1772
|
+
openWorldHint: false
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
};
|
|
1777
|
+
exports.TASK_CHECKLIST_ITEM_CREATE_CONTRACT = {
|
|
1778
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskChecklistItemCreate,
|
|
1779
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskChecklistItemCreate,
|
|
1780
|
+
description: "Add a checklist item to a Maeve task board task, optionally anchored before or after an existing item. Archived task checklists are read-only.",
|
|
1781
|
+
inputSchema: exports.createTaskChecklistItemInputSchema,
|
|
1782
|
+
wireInputSchemas: {
|
|
1783
|
+
mcp: exports.createTaskChecklistItemMcpInputSchema
|
|
1784
|
+
},
|
|
1785
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1786
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1787
|
+
confirmation: { required: false },
|
|
1788
|
+
idempotency: {
|
|
1789
|
+
required: true,
|
|
1790
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.taskChecklistItemCreate, context.workspaceId, input.taskId, shortStableHash(input)].join(":")
|
|
1791
|
+
},
|
|
1792
|
+
surfaces: {
|
|
1793
|
+
mcp: {
|
|
1794
|
+
name: exports.TOOL_WIRE_NAMES.taskChecklistItemCreate.mcp,
|
|
1795
|
+
title: "Create Task Checklist Item",
|
|
1796
|
+
description: "Add a checklist item to a Maeve task board task, optionally anchored before or after an existing item. Archived task checklists are read-only.",
|
|
1797
|
+
scope: "mcp:write",
|
|
1798
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1799
|
+
annotations: {
|
|
1800
|
+
readOnlyHint: false,
|
|
1801
|
+
destructiveHint: false,
|
|
1802
|
+
idempotentHint: false,
|
|
1803
|
+
openWorldHint: false
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
};
|
|
1808
|
+
exports.TASK_CHECKLIST_ITEM_UPDATE_CONTRACT = {
|
|
1809
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskChecklistItemUpdate,
|
|
1810
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskChecklistItemUpdate,
|
|
1811
|
+
description: "Update a checklist item on a Maeve task board task: title and completion state. Archived task checklists are read-only.",
|
|
1812
|
+
inputSchema: exports.updateTaskChecklistItemInputSchema,
|
|
1813
|
+
wireInputSchemas: {
|
|
1814
|
+
mcp: exports.updateTaskChecklistItemMcpInputSchema
|
|
1815
|
+
},
|
|
1816
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
1817
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1818
|
+
confirmation: { required: false },
|
|
1819
|
+
idempotency: {
|
|
1820
|
+
required: true,
|
|
1821
|
+
buildKey: (input, context) => [
|
|
1822
|
+
exports.TOOL_OPERATION_IDS.taskChecklistItemUpdate,
|
|
1823
|
+
context.workspaceId,
|
|
1824
|
+
input.taskId,
|
|
1825
|
+
input.itemId,
|
|
1826
|
+
shortStableHash(input)
|
|
1827
|
+
].join(":")
|
|
1828
|
+
},
|
|
1035
1829
|
surfaces: {
|
|
1036
|
-
agent: {
|
|
1037
|
-
name: exports.TOOL_WIRE_NAMES.contentList.agent,
|
|
1038
|
-
description: "List saved content in the current workspace with status, workflow, review-lifecycle, integration, and sort filters. Items include full captions, so keep limit small and page with offset. Prefer content.find_recent for a quick recency scan. Read-only.",
|
|
1039
|
-
access: "read",
|
|
1040
|
-
gated: false,
|
|
1041
|
-
safeInputSummary: (input) => `status=${input.status ?? "any"} limit=${input.limit ?? 10} offset=${input.offset ?? 0}`
|
|
1042
|
-
},
|
|
1043
1830
|
mcp: {
|
|
1044
|
-
name: exports.TOOL_WIRE_NAMES.
|
|
1045
|
-
title: "
|
|
1046
|
-
description: "
|
|
1047
|
-
scope: "mcp:
|
|
1048
|
-
toolsets:
|
|
1049
|
-
annotations:
|
|
1831
|
+
name: exports.TOOL_WIRE_NAMES.taskChecklistItemUpdate.mcp,
|
|
1832
|
+
title: "Update Task Checklist Item",
|
|
1833
|
+
description: "Update a checklist item on a Maeve task board task: title and completion state. Archived task checklists are read-only.",
|
|
1834
|
+
scope: "mcp:write",
|
|
1835
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1836
|
+
annotations: {
|
|
1837
|
+
readOnlyHint: false,
|
|
1838
|
+
destructiveHint: false,
|
|
1839
|
+
idempotentHint: true,
|
|
1840
|
+
openWorldHint: false
|
|
1841
|
+
}
|
|
1050
1842
|
}
|
|
1051
1843
|
}
|
|
1052
1844
|
};
|
|
1053
|
-
exports.
|
|
1054
|
-
canonicalName: exports.TOOL_OPERATION_IDS.
|
|
1055
|
-
wireNames: exports.TOOL_WIRE_NAMES.
|
|
1056
|
-
description: "
|
|
1057
|
-
inputSchema: exports.
|
|
1845
|
+
exports.TASK_CHECKLIST_ITEM_MOVE_CONTRACT = {
|
|
1846
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskChecklistItemMove,
|
|
1847
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskChecklistItemMove,
|
|
1848
|
+
description: "Reorder a checklist item on a Maeve task board task, anchored before or after another item. Archived task checklists are read-only.",
|
|
1849
|
+
inputSchema: exports.moveTaskChecklistItemInputSchema,
|
|
1058
1850
|
wireInputSchemas: {
|
|
1059
|
-
mcp: exports.
|
|
1851
|
+
mcp: exports.moveTaskChecklistItemMcpInputSchema
|
|
1060
1852
|
},
|
|
1061
1853
|
outputSchema: mcpStructuredContentOutputSchema,
|
|
1062
|
-
requiredCapabilities: [exports.TOOL_CAPABILITIES.
|
|
1854
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1063
1855
|
confirmation: { required: false },
|
|
1064
|
-
idempotency: {
|
|
1856
|
+
idempotency: {
|
|
1857
|
+
required: true,
|
|
1858
|
+
buildKey: (input, context) => [
|
|
1859
|
+
exports.TOOL_OPERATION_IDS.taskChecklistItemMove,
|
|
1860
|
+
context.workspaceId,
|
|
1861
|
+
input.taskId,
|
|
1862
|
+
input.itemId,
|
|
1863
|
+
shortStableHash(input)
|
|
1864
|
+
].join(":")
|
|
1865
|
+
},
|
|
1065
1866
|
surfaces: {
|
|
1066
|
-
agent: {
|
|
1067
|
-
name: exports.TOOL_WIRE_NAMES.contentGet.agent,
|
|
1068
|
-
description: "Read one saved content item in the current workspace, including sanitized media, captions, workflow metadata, and platform settings.",
|
|
1069
|
-
access: "read",
|
|
1070
|
-
gated: false,
|
|
1071
|
-
safeInputSummary: (input) => `contentId=${input.contentId}`
|
|
1072
|
-
},
|
|
1073
1867
|
mcp: {
|
|
1074
|
-
name: exports.TOOL_WIRE_NAMES.
|
|
1075
|
-
title: "
|
|
1076
|
-
description: "
|
|
1077
|
-
scope: "mcp:
|
|
1078
|
-
toolsets:
|
|
1079
|
-
annotations:
|
|
1868
|
+
name: exports.TOOL_WIRE_NAMES.taskChecklistItemMove.mcp,
|
|
1869
|
+
title: "Move Task Checklist Item",
|
|
1870
|
+
description: "Reorder a checklist item on a Maeve task board task, anchored before or after another item. Omit both anchors to move it to the top. Archived task checklists are read-only.",
|
|
1871
|
+
scope: "mcp:write",
|
|
1872
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1873
|
+
annotations: {
|
|
1874
|
+
readOnlyHint: false,
|
|
1875
|
+
destructiveHint: false,
|
|
1876
|
+
idempotentHint: true,
|
|
1877
|
+
openWorldHint: false
|
|
1878
|
+
}
|
|
1080
1879
|
}
|
|
1081
1880
|
}
|
|
1082
1881
|
};
|
|
1083
|
-
exports.
|
|
1084
|
-
canonicalName: exports.TOOL_OPERATION_IDS.
|
|
1085
|
-
wireNames: exports.TOOL_WIRE_NAMES.
|
|
1086
|
-
description: "
|
|
1087
|
-
inputSchema: exports.
|
|
1882
|
+
exports.TASK_CHECKLIST_ITEM_DELETE_CONTRACT = {
|
|
1883
|
+
canonicalName: exports.TOOL_OPERATION_IDS.taskChecklistItemDelete,
|
|
1884
|
+
wireNames: exports.TOOL_WIRE_NAMES.taskChecklistItemDelete,
|
|
1885
|
+
description: "Delete a checklist item from a Maeve task board task. High-risk: requires the exact confirmation text delete_task_checklist_item:<itemId>; dangerous auto-confirm is never honored for this action.",
|
|
1886
|
+
inputSchema: exports.deleteTaskChecklistItemInputSchema,
|
|
1088
1887
|
wireInputSchemas: {
|
|
1089
|
-
mcp: exports.
|
|
1888
|
+
mcp: exports.deleteTaskChecklistItemMcpInputSchema
|
|
1090
1889
|
},
|
|
1091
1890
|
outputSchema: mcpStructuredContentOutputSchema,
|
|
1092
|
-
requiredCapabilities: [exports.TOOL_CAPABILITIES.
|
|
1093
|
-
confirmation: {
|
|
1094
|
-
|
|
1891
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.taskBoardManage],
|
|
1892
|
+
confirmation: {
|
|
1893
|
+
required: true,
|
|
1894
|
+
actionType: exports.TOOL_OPERATION_IDS.taskChecklistItemDelete,
|
|
1895
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
1896
|
+
buildSummary: (input) => buildDeleteTaskChecklistItemConfirmationSummary(input)
|
|
1897
|
+
},
|
|
1898
|
+
idempotency: {
|
|
1899
|
+
required: true,
|
|
1900
|
+
buildKey: (input, context) => [
|
|
1901
|
+
exports.TOOL_OPERATION_IDS.taskChecklistItemDelete,
|
|
1902
|
+
context.workspaceId,
|
|
1903
|
+
input.taskId,
|
|
1904
|
+
input.itemId,
|
|
1905
|
+
shortStableHash(input)
|
|
1906
|
+
].join(":")
|
|
1907
|
+
},
|
|
1095
1908
|
surfaces: {
|
|
1096
|
-
agent: {
|
|
1097
|
-
name: exports.TOOL_WIRE_NAMES.contentGetCounts.agent,
|
|
1098
|
-
description: "Read safe content workflow counts for the current workspace: failed content, plus pending approvals when includePendingApproval is true. Cheap way to check whether anything needs attention before listing. Read-only.",
|
|
1099
|
-
access: "read",
|
|
1100
|
-
gated: false,
|
|
1101
|
-
safeInputSummary: (input) => `includePendingApproval=${input.includePendingApproval ?? false}`
|
|
1102
|
-
},
|
|
1103
1909
|
mcp: {
|
|
1104
|
-
name: exports.TOOL_WIRE_NAMES.
|
|
1105
|
-
title: "
|
|
1106
|
-
description: "
|
|
1107
|
-
scope: "mcp:
|
|
1108
|
-
toolsets:
|
|
1109
|
-
annotations:
|
|
1910
|
+
name: exports.TOOL_WIRE_NAMES.taskChecklistItemDelete.mcp,
|
|
1911
|
+
title: "Delete Task Checklist Item",
|
|
1912
|
+
description: "Delete a checklist item from a Maeve task board task. High-risk: requires the exact confirmation text delete_task_checklist_item:<itemId>; dangerous auto-confirm is never honored for this action.",
|
|
1913
|
+
scope: "mcp:write",
|
|
1914
|
+
toolsets: taskBoardWorkflowToolsets,
|
|
1915
|
+
annotations: {
|
|
1916
|
+
readOnlyHint: false,
|
|
1917
|
+
destructiveHint: true,
|
|
1918
|
+
idempotentHint: false,
|
|
1919
|
+
openWorldHint: false
|
|
1920
|
+
}
|
|
1110
1921
|
}
|
|
1111
1922
|
}
|
|
1112
1923
|
};
|
|
@@ -1140,6 +1951,7 @@ var require_dist = __commonJS({
|
|
|
1140
1951
|
"locations",
|
|
1141
1952
|
"instagram-catalogs",
|
|
1142
1953
|
"instagram-products",
|
|
1954
|
+
"instagram-audio",
|
|
1143
1955
|
"youtube-video-categories"
|
|
1144
1956
|
];
|
|
1145
1957
|
exports.integrationsGetCapabilitiesInputSchema = z9.object({
|
|
@@ -1151,8 +1963,9 @@ var require_dist = __commonJS({
|
|
|
1151
1963
|
}).strict();
|
|
1152
1964
|
var integrationOptionRequestShape = {
|
|
1153
1965
|
regionCode: z9.string().max(2).optional().describe("Optional ISO country code, for example US."),
|
|
1154
|
-
query: z9.string().max(255).optional().describe("Search text for locations or
|
|
1155
|
-
catalogId: z9.string().max(255).optional().describe("Instagram catalog ID for product search.")
|
|
1966
|
+
query: z9.string().max(255).optional().describe("Search text for locations, products, or audio."),
|
|
1967
|
+
catalogId: z9.string().max(255).optional().describe("Instagram catalog ID for product search."),
|
|
1968
|
+
audioType: z9.enum(["music", "original_sound"]).optional().describe("Required for instagram-audio: search licensed music or original sounds.")
|
|
1156
1969
|
};
|
|
1157
1970
|
exports.integrationsGetOptionsInputSchema = z9.object({
|
|
1158
1971
|
integrationId: z9.string().uuid().describe("Integration ID to inspect. Use integrations.list to resolve account names to IDs."),
|
|
@@ -1766,14 +2579,52 @@ var require_dist = __commonJS({
|
|
|
1766
2579
|
}
|
|
1767
2580
|
};
|
|
1768
2581
|
var analyticsDaysSchema = z9.union([z9.number().int().min(1).max(90), z9.literal("all")]);
|
|
2582
|
+
var analyticsAgentDaysSchema = z9.number().int().min(1).max(90);
|
|
2583
|
+
var ANALYTICS_RANGE_MAX_SPAN_DAYS = 366;
|
|
2584
|
+
var analyticsRangeStartDateSchema = z9.string().regex(/^\d{4}-\d{2}-\d{2}$/, "startDate must be a YYYY-MM-DD date.").optional().describe("Custom start, YYYY-MM-DD.");
|
|
2585
|
+
var analyticsRangeEndDateSchema = z9.string().regex(/^\d{4}-\d{2}-\d{2}$/, "endDate must be a YYYY-MM-DD date.").optional().describe("Custom inclusive end, YYYY-MM-DD.");
|
|
2586
|
+
function analyticsRangeRefinement(input, ctx) {
|
|
2587
|
+
const { startDate, endDate } = input;
|
|
2588
|
+
if (!startDate && !endDate)
|
|
2589
|
+
return;
|
|
2590
|
+
if (!startDate || !endDate) {
|
|
2591
|
+
ctx.addIssue({
|
|
2592
|
+
code: "custom",
|
|
2593
|
+
path: [startDate ? "endDate" : "startDate"],
|
|
2594
|
+
message: "startDate and endDate must be provided together."
|
|
2595
|
+
});
|
|
2596
|
+
return;
|
|
2597
|
+
}
|
|
2598
|
+
if (endDate < startDate) {
|
|
2599
|
+
ctx.addIssue({
|
|
2600
|
+
code: "custom",
|
|
2601
|
+
path: ["endDate"],
|
|
2602
|
+
message: "endDate must be on or after startDate."
|
|
2603
|
+
});
|
|
2604
|
+
return;
|
|
2605
|
+
}
|
|
2606
|
+
const spanDays = (Date.parse(`${endDate}T00:00:00Z`) - Date.parse(`${startDate}T00:00:00Z`)) / DAY_MS + 1;
|
|
2607
|
+
if (spanDays > ANALYTICS_RANGE_MAX_SPAN_DAYS) {
|
|
2608
|
+
ctx.addIssue({
|
|
2609
|
+
code: "custom",
|
|
2610
|
+
path: ["endDate"],
|
|
2611
|
+
message: `Date range must span ${ANALYTICS_RANGE_MAX_SPAN_DAYS} days or less.`
|
|
2612
|
+
});
|
|
2613
|
+
}
|
|
2614
|
+
}
|
|
2615
|
+
function summarizeAnalyticsRange(input) {
|
|
2616
|
+
return input.startDate && input.endDate ? `range=${input.startDate}..${input.endDate}` : `days=${input.days ?? 30}`;
|
|
2617
|
+
}
|
|
1769
2618
|
var analyticsPostSortFields = ["recent", "engagement", "views"];
|
|
1770
2619
|
var analyticsOverviewToolsets = ["analytics_overview", "analytics_read_only"];
|
|
1771
2620
|
var analyticsPostsToolsets = ["analytics_posts", "analytics_read_only"];
|
|
1772
2621
|
exports.analyticsAggregateMcpInputSchema = z9.object({
|
|
1773
2622
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
1774
2623
|
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("Optional integration IDs to include. Empty returns no metrics."),
|
|
1775
|
-
days: analyticsDaysSchema.optional().describe('Analytics window, either an integer between 1 and 90 or "all". Default 30.')
|
|
1776
|
-
|
|
2624
|
+
days: analyticsDaysSchema.optional().describe('Analytics window, either an integer between 1 and 90 or "all". Default 30.'),
|
|
2625
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2626
|
+
endDate: analyticsRangeEndDateSchema
|
|
2627
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1777
2628
|
exports.analyticsIntegrationMcpInputSchema = z9.object({
|
|
1778
2629
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
1779
2630
|
integrationId: z9.string().uuid().describe("Integration ID to inspect.")
|
|
@@ -1785,35 +2636,45 @@ var require_dist = __commonJS({
|
|
|
1785
2636
|
limit: z9.number().int().min(1).max(50).optional().describe("Page size. Default 10 single, 12 aggregate."),
|
|
1786
2637
|
offset: z9.number().int().min(0).optional().describe("Offset for pagination."),
|
|
1787
2638
|
days: analyticsDaysSchema.optional().describe("Aggregate analytics window. Default 30."),
|
|
2639
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2640
|
+
endDate: analyticsRangeEndDateSchema,
|
|
1788
2641
|
sortBy: z9.enum(analyticsPostSortFields).optional().describe("Aggregate sort. Default recent.")
|
|
1789
|
-
}).strict();
|
|
2642
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1790
2643
|
exports.analyticsPostsAggregateMcpInputSchema = z9.object({
|
|
1791
2644
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
1792
2645
|
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("Optional integration IDs to include. Empty returns no posts."),
|
|
1793
2646
|
limit: z9.number().int().min(1).max(50).optional().describe("Page size. Default 12."),
|
|
1794
2647
|
offset: z9.number().int().min(0).optional().describe("Offset for pagination. Default 0."),
|
|
1795
2648
|
days: analyticsDaysSchema.optional().describe('Analytics window, either an integer between 1 and 90 or "all". Default 30.'),
|
|
2649
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2650
|
+
endDate: analyticsRangeEndDateSchema,
|
|
1796
2651
|
sortBy: z9.enum(analyticsPostSortFields).optional().describe("Sort field. Default recent.")
|
|
1797
|
-
}).strict();
|
|
2652
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1798
2653
|
exports.analyticsPostsAggregateInputSchema = z9.object({
|
|
1799
|
-
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("
|
|
1800
|
-
limit: z9.number().int().min(1).max(50).optional().describe("
|
|
1801
|
-
offset: z9.number().int().min(0).optional().describe("
|
|
1802
|
-
days: analyticsDaysSchema.optional().describe(
|
|
1803
|
-
|
|
1804
|
-
|
|
2654
|
+
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("Channels to include; empty returns no posts."),
|
|
2655
|
+
limit: z9.number().int().min(1).max(50).optional().describe("Default 12."),
|
|
2656
|
+
offset: z9.number().int().min(0).optional().describe("Default 0."),
|
|
2657
|
+
days: analyticsDaysSchema.optional().describe("1-90 or all; default 30."),
|
|
2658
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2659
|
+
endDate: analyticsRangeEndDateSchema,
|
|
2660
|
+
sortBy: z9.enum(analyticsPostSortFields).optional().describe("Default recent.")
|
|
2661
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1805
2662
|
exports.postAnalyticsMcpInputSchema = z9.object({
|
|
1806
2663
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
1807
2664
|
contentId: z9.string().uuid().describe("Published content ID.")
|
|
1808
2665
|
}).strict();
|
|
1809
2666
|
exports.analyticsAggregateInputSchema = z9.object({
|
|
1810
2667
|
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("Optional integration IDs to include. Empty returns no metrics."),
|
|
1811
|
-
days: analyticsDaysSchema.optional().describe('Analytics window, either an integer between 1 and 90 or "all". Default 30.')
|
|
1812
|
-
|
|
2668
|
+
days: analyticsDaysSchema.optional().describe('Analytics window, either an integer between 1 and 90 or "all". Default 30.'),
|
|
2669
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2670
|
+
endDate: analyticsRangeEndDateSchema
|
|
2671
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1813
2672
|
exports.analyticsAggregateAgentInputSchema = z9.object({
|
|
1814
2673
|
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("Integration IDs for the connected channels to include. Empty returns no metrics."),
|
|
1815
|
-
days:
|
|
1816
|
-
|
|
2674
|
+
days: analyticsAgentDaysSchema.optional().describe("Analytics window in days, between 1 and 90. Default 30."),
|
|
2675
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2676
|
+
endDate: analyticsRangeEndDateSchema
|
|
2677
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1817
2678
|
exports.analyticsIntegrationInputSchema = z9.object({
|
|
1818
2679
|
integrationId: z9.string().uuid().describe("Integration ID to inspect.")
|
|
1819
2680
|
}).strict();
|
|
@@ -1823,16 +2684,20 @@ var require_dist = __commonJS({
|
|
|
1823
2684
|
limit: z9.number().int().min(1).max(50).optional().describe("Page size. Default 10 single, 12 aggregate."),
|
|
1824
2685
|
offset: z9.number().int().min(0).optional().describe("Offset for pagination."),
|
|
1825
2686
|
days: analyticsDaysSchema.optional().describe("Aggregate analytics window. Default 30."),
|
|
2687
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2688
|
+
endDate: analyticsRangeEndDateSchema,
|
|
1826
2689
|
sortBy: z9.enum(analyticsPostSortFields).optional().describe("Aggregate sort. Default recent.")
|
|
1827
|
-
}).strict();
|
|
2690
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1828
2691
|
exports.analyticsPostsAgentInputSchema = z9.object({
|
|
1829
2692
|
integrationId: z9.string().uuid().optional().describe("Single integration ID to inspect."),
|
|
1830
2693
|
integrationIds: z9.array(z9.string().uuid()).max(20).optional().describe("Integration IDs for aggregated post analytics. Used when integrationId is omitted."),
|
|
1831
2694
|
limit: z9.number().int().min(1).max(20).optional().describe("Page size, maximum 20. Default 10 single, 12 aggregate."),
|
|
1832
2695
|
offset: z9.number().int().min(0).optional().describe("Offset for pagination."),
|
|
1833
|
-
days:
|
|
2696
|
+
days: analyticsAgentDaysSchema.optional().describe("Analytics window in days, between 1 and 90. Default 30."),
|
|
2697
|
+
startDate: analyticsRangeStartDateSchema,
|
|
2698
|
+
endDate: analyticsRangeEndDateSchema,
|
|
1834
2699
|
sortBy: z9.enum(analyticsPostSortFields).optional().describe("Aggregate sort. Default recent.")
|
|
1835
|
-
}).strict();
|
|
2700
|
+
}).strict().superRefine(analyticsRangeRefinement);
|
|
1836
2701
|
exports.postAnalyticsInputSchema = z9.object({
|
|
1837
2702
|
contentId: z9.string().uuid().describe("Published content ID.")
|
|
1838
2703
|
}).strict();
|
|
@@ -1855,7 +2720,7 @@ var require_dist = __commonJS({
|
|
|
1855
2720
|
description: "Read an aggregated account analytics summary (metrics nested under an analytics key) for selected connected channels. Prefer analytics.get_aggregate for the same data unnested. Pass integrationIds from Workspace context; an omitted or empty list returns no metrics. Read-only.",
|
|
1856
2721
|
access: "read",
|
|
1857
2722
|
gated: false,
|
|
1858
|
-
safeInputSummary: (input) => `integrationIds=${input.integrationIds?.length ?? "none"}
|
|
2723
|
+
safeInputSummary: (input) => `integrationIds=${input.integrationIds?.length ?? "none"} ${summarizeAnalyticsRange(input)}`
|
|
1859
2724
|
},
|
|
1860
2725
|
mcp: {
|
|
1861
2726
|
name: exports.TOOL_WIRE_NAMES.analyticsGetSummary.mcp,
|
|
@@ -1883,10 +2748,10 @@ var require_dist = __commonJS({
|
|
|
1883
2748
|
surfaces: {
|
|
1884
2749
|
agent: {
|
|
1885
2750
|
name: exports.TOOL_WIRE_NAMES.analyticsGetAggregate.agent,
|
|
1886
|
-
description: "Read aggregated account analytics metrics (audience, reach, engagement, views) across the workspace's connected channels for a window of up to 90 days. Pass integrationIds from Workspace context; an omitted or empty list returns no metrics. Use to ground performance answers in real account-level numbers. Read-only.",
|
|
2751
|
+
description: "Read aggregated account analytics metrics (audience, reach, engagement, views) across the workspace's connected channels for a preset window of up to 90 days, all time, or an explicit startDate/endDate range (up to 366 days). Pass integrationIds from Workspace context; an omitted or empty list returns no metrics. Use to ground performance answers in real account-level numbers. Read-only.",
|
|
1887
2752
|
access: "read",
|
|
1888
2753
|
gated: false,
|
|
1889
|
-
safeInputSummary: (input) => `integrationIds=${input.integrationIds?.length ?? "none"}
|
|
2754
|
+
safeInputSummary: (input) => `integrationIds=${input.integrationIds?.length ?? "none"} ${summarizeAnalyticsRange(input)}`
|
|
1890
2755
|
},
|
|
1891
2756
|
mcp: {
|
|
1892
2757
|
name: exports.TOOL_WIRE_NAMES.analyticsGetAggregate.mcp,
|
|
@@ -1977,7 +2842,7 @@ var require_dist = __commonJS({
|
|
|
1977
2842
|
description: "Read sanitized per-post analytics for one channel (integrationId) or several (integrationIds). Prefer analytics.get_posts_aggregate for cross-channel post performance; use this when you need a single channel or offset pagination. Keep limit small. Read-only.",
|
|
1978
2843
|
access: "read",
|
|
1979
2844
|
gated: false,
|
|
1980
|
-
safeInputSummary: (input) => `integrationId=${input.integrationId ?? "none"} integrationIds=${input.integrationIds?.length ?? "none"}
|
|
2845
|
+
safeInputSummary: (input) => `integrationId=${input.integrationId ?? "none"} integrationIds=${input.integrationIds?.length ?? "none"} ${summarizeAnalyticsRange(input)} limit=${input.limit ?? "default"}`
|
|
1981
2846
|
},
|
|
1982
2847
|
mcp: {
|
|
1983
2848
|
name: exports.TOOL_WIRE_NAMES.analyticsGetPosts.mcp,
|
|
@@ -2008,10 +2873,10 @@ var require_dist = __commonJS({
|
|
|
2008
2873
|
surfaces: {
|
|
2009
2874
|
agent: {
|
|
2010
2875
|
name: exports.TOOL_WIRE_NAMES.analyticsGetPostsAggregate.agent,
|
|
2011
|
-
description: "Read
|
|
2876
|
+
description: "Read post analytics across connected channels. Pass integrationIds from Workspace context; empty returns no posts. Use days (1-90 or all) or startDate/endDate (max 366 days). Read-only.",
|
|
2012
2877
|
access: "read",
|
|
2013
2878
|
gated: false,
|
|
2014
|
-
safeInputSummary: (input) => `integrationIds=${input.integrationIds?.length ?? "none"}
|
|
2879
|
+
safeInputSummary: (input) => `integrationIds=${input.integrationIds?.length ?? "none"} ${summarizeAnalyticsRange(input)} sortBy=${input.sortBy ?? "recent"} limit=${input.limit ?? 12}`
|
|
2015
2880
|
},
|
|
2016
2881
|
mcp: {
|
|
2017
2882
|
name: exports.TOOL_WIRE_NAMES.analyticsGetPostsAggregate.mcp,
|
|
@@ -2057,6 +2922,7 @@ var require_dist = __commonJS({
|
|
|
2057
2922
|
var WORKBENCH_PRIORITY_VALUES = ["urgent", "high", "medium", "low"];
|
|
2058
2923
|
var LINKEDIN_POLL_DURATION_VALUES = ["ONE_DAY", "THREE_DAYS", "SEVEN_DAYS", "FOURTEEN_DAYS"];
|
|
2059
2924
|
var LINKEDIN_POLL_VOTE_SELECTION_TYPE_VALUES = ["SINGLE_VOTE"];
|
|
2925
|
+
var TIKTOK_MUSIC_CLIP_TYPES = ["full_duration", "trending"];
|
|
2060
2926
|
var FACEBOOK_PAGE_POST_CTA_TYPES = [
|
|
2061
2927
|
"LEARN_MORE",
|
|
2062
2928
|
"SIGN_UP",
|
|
@@ -2086,7 +2952,9 @@ var require_dist = __commonJS({
|
|
|
2086
2952
|
{ key: "locationId", type: "string" },
|
|
2087
2953
|
{ key: "audio_id", type: "string" },
|
|
2088
2954
|
{ key: "audio_volume", type: "number", min: 0, max: 100 },
|
|
2089
|
-
{ key: "video_volume", type: "number", min: 0, max: 100 }
|
|
2955
|
+
{ key: "video_volume", type: "number", min: 0, max: 100 },
|
|
2956
|
+
{ key: "trialReel", type: "boolean" },
|
|
2957
|
+
{ key: "trialReelGraduationStrategy", type: "string", enum: ["manual", "automatic"] }
|
|
2090
2958
|
],
|
|
2091
2959
|
facebook: FACEBOOK_PAGE_SETTINGS_FIELDS,
|
|
2092
2960
|
"facebook-page": FACEBOOK_PAGE_SETTINGS_FIELDS,
|
|
@@ -2096,7 +2964,6 @@ var require_dist = __commonJS({
|
|
|
2096
2964
|
threads: [
|
|
2097
2965
|
{ key: "topicTag", type: "string" },
|
|
2098
2966
|
{ key: "linkAttachment", type: "string" },
|
|
2099
|
-
{ key: "isGhostPost", type: "boolean" },
|
|
2100
2967
|
{ key: "locationId", type: "string" },
|
|
2101
2968
|
{ key: "replyControl", type: "string", enum: THREADS_REPLY_CONTROL_VALUES }
|
|
2102
2969
|
],
|
|
@@ -2110,7 +2977,8 @@ var require_dist = __commonJS({
|
|
|
2110
2977
|
{ key: "is_aigc", type: "boolean" },
|
|
2111
2978
|
{ key: "tiktok_post_to_drafts", type: "boolean" },
|
|
2112
2979
|
{ key: "photo_cover_index", type: "number" },
|
|
2113
|
-
{ key: "auto_add_music", type: "boolean" }
|
|
2980
|
+
{ key: "auto_add_music", type: "boolean" },
|
|
2981
|
+
{ key: "tiktok_music", type: "tiktok_music" }
|
|
2114
2982
|
],
|
|
2115
2983
|
youtube: [
|
|
2116
2984
|
{ key: "privacyStatus", type: "string", enum: ["public", "unlisted", "private"] },
|
|
@@ -2125,9 +2993,25 @@ var require_dist = __commonJS({
|
|
|
2125
2993
|
{ key: "boardId", type: "string" },
|
|
2126
2994
|
{ key: "link", type: "string" },
|
|
2127
2995
|
{ key: "altText", type: "string" }
|
|
2996
|
+
],
|
|
2997
|
+
"google-business-profile": [
|
|
2998
|
+
{ key: "googlePostType", type: "string", enum: ["standard", "event", "offer"] },
|
|
2999
|
+
{
|
|
3000
|
+
key: "googleCallToActionType",
|
|
3001
|
+
type: "string",
|
|
3002
|
+
enum: ["book", "order", "shop", "learn_more", "sign_up", "call"]
|
|
3003
|
+
},
|
|
3004
|
+
{ key: "googleCallToActionUrl", type: "string" },
|
|
3005
|
+
{ key: "googleEventTitle", type: "string" },
|
|
3006
|
+
{ key: "googleEventStartAt", type: "string" },
|
|
3007
|
+
{ key: "googleEventEndAt", type: "string" },
|
|
3008
|
+
{ key: "googleOfferCouponCode", type: "string" },
|
|
3009
|
+
{ key: "googleOfferRedeemOnlineUrl", type: "string" },
|
|
3010
|
+
{ key: "googleOfferTerms", type: "string" },
|
|
3011
|
+
{ key: "googleLanguageCode", type: "string" }
|
|
2128
3012
|
]
|
|
2129
3013
|
};
|
|
2130
|
-
function createDraftProviderSettingsZodSchema() {
|
|
3014
|
+
function createDraftProviderSettingsZodSchema(excludedKeys = /* @__PURE__ */ new Set()) {
|
|
2131
3015
|
const shape = {};
|
|
2132
3016
|
const fieldsByKey = /* @__PURE__ */ new Map();
|
|
2133
3017
|
for (const fields of Object.values(CREATE_DRAFT_PROVIDER_SETTINGS_FIELDS_BY_PLATFORM)) {
|
|
@@ -2136,11 +3020,15 @@ var require_dist = __commonJS({
|
|
|
2136
3020
|
}
|
|
2137
3021
|
}
|
|
2138
3022
|
for (const field of fieldsByKey.values()) {
|
|
3023
|
+
if (excludedKeys.has(field.key))
|
|
3024
|
+
continue;
|
|
2139
3025
|
shape[field.key] = createDraftProviderSettingZodField(field).optional();
|
|
2140
3026
|
}
|
|
2141
3027
|
return z9.object(shape).strict();
|
|
2142
3028
|
}
|
|
2143
3029
|
function createDraftProviderSettingZodField(field) {
|
|
3030
|
+
if (field.type === "tiktok_music")
|
|
3031
|
+
return createDraftTikTokMusicSelectionSchema;
|
|
2144
3032
|
if (field.enum?.length) {
|
|
2145
3033
|
return z9.enum(field.enum);
|
|
2146
3034
|
}
|
|
@@ -2157,7 +3045,22 @@ var require_dist = __commonJS({
|
|
|
2157
3045
|
schema = schema.max(field.max);
|
|
2158
3046
|
return schema;
|
|
2159
3047
|
}
|
|
3048
|
+
var createDraftTikTokMusicSelectionSchema = z9.object({
|
|
3049
|
+
integrationId: z9.string().trim().min(1),
|
|
3050
|
+
countryCode: z9.string().trim().toUpperCase().regex(/^[A-Z]{2}$/),
|
|
3051
|
+
commercialMusicId: z9.string().trim().min(1),
|
|
3052
|
+
songClipId: z9.string().trim().min(1),
|
|
3053
|
+
clipType: z9.enum(TIKTOK_MUSIC_CLIP_TYPES),
|
|
3054
|
+
trackName: z9.string().trim().min(1),
|
|
3055
|
+
artist: z9.string().trim().min(1),
|
|
3056
|
+
trackDurationSeconds: z9.number().positive().nullable(),
|
|
3057
|
+
clipDurationSeconds: z9.number().positive().nullable(),
|
|
3058
|
+
genres: z9.array(z9.string()),
|
|
3059
|
+
musicSoundVolume: z9.number().int().min(0).max(100),
|
|
3060
|
+
videoOriginalSoundVolume: z9.number().int().min(0).max(100)
|
|
3061
|
+
}).strict();
|
|
2160
3062
|
var createDraftContentSettingsSchema = createDraftProviderSettingsZodSchema();
|
|
3063
|
+
var createDraftContentAgentSettingsSchema = createDraftProviderSettingsZodSchema(/* @__PURE__ */ new Set(["tiktok_music"]));
|
|
2161
3064
|
var createDraftContentMediaSchema = z9.array(z9.object({
|
|
2162
3065
|
mediaId: z9.string().uuid(),
|
|
2163
3066
|
order: z9.number().int().min(0).optional(),
|
|
@@ -2204,34 +3107,41 @@ var require_dist = __commonJS({
|
|
|
2204
3107
|
})).max(20).optional().describe("Optional thread/reply draft messages with canonical captions and media relationships.")
|
|
2205
3108
|
};
|
|
2206
3109
|
exports.createDraftContentInputSchema = z9.object(createDraftContentInputShape).strict();
|
|
3110
|
+
exports.createDraftContentAgentInputSchema = exports.createDraftContentInputSchema.extend({
|
|
3111
|
+
settings: createDraftContentAgentSettingsSchema.optional().describe("Optional strict platform-specific provider settings.")
|
|
3112
|
+
});
|
|
2207
3113
|
exports.createDraftContentMcpInputSchema = z9.object({
|
|
2208
3114
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
2209
3115
|
...createDraftContentInputShape
|
|
2210
3116
|
}).strict();
|
|
3117
|
+
var createDraftContentResultSchema = z9.object({
|
|
3118
|
+
contentId: z9.string(),
|
|
3119
|
+
status: z9.string(),
|
|
3120
|
+
appUrl: z9.url().optional(),
|
|
3121
|
+
title: z9.string().nullable(),
|
|
3122
|
+
integrationId: z9.string(),
|
|
3123
|
+
platform: z9.string().nullable(),
|
|
3124
|
+
accountLabel: z9.string().nullable(),
|
|
3125
|
+
groupId: z9.string().optional(),
|
|
3126
|
+
contentIds: z9.array(z9.string()).optional()
|
|
3127
|
+
}).strict();
|
|
3128
|
+
var createDraftIdempotencyResultSchema = z9.object({
|
|
3129
|
+
key: z9.string(),
|
|
3130
|
+
replayed: z9.boolean()
|
|
3131
|
+
}).strict();
|
|
2211
3132
|
exports.createDraftContentOutputSchema = z9.object({
|
|
2212
3133
|
ok: z9.literal(true),
|
|
2213
3134
|
renderHint: z9.literal("draft_created"),
|
|
2214
|
-
content:
|
|
2215
|
-
|
|
2216
|
-
status: z9.string(),
|
|
2217
|
-
title: z9.string().nullable(),
|
|
2218
|
-
integrationId: z9.string(),
|
|
2219
|
-
platform: z9.string().nullable(),
|
|
2220
|
-
accountLabel: z9.string().nullable(),
|
|
2221
|
-
groupId: z9.string().optional(),
|
|
2222
|
-
contentIds: z9.array(z9.string()).optional()
|
|
2223
|
-
}).strict(),
|
|
2224
|
-
idempotency: z9.object({
|
|
2225
|
-
key: z9.string(),
|
|
2226
|
-
replayed: z9.boolean()
|
|
2227
|
-
}).strict()
|
|
3135
|
+
content: createDraftContentResultSchema,
|
|
3136
|
+
idempotency: createDraftIdempotencyResultSchema
|
|
2228
3137
|
}).strict();
|
|
2229
3138
|
exports.CONTENT_CREATE_DRAFT_CONTRACT = {
|
|
2230
3139
|
canonicalName: exports.TOOL_OPERATION_IDS.contentCreateDraft,
|
|
2231
3140
|
wireNames: exports.TOOL_WIRE_NAMES.contentCreateDraft,
|
|
2232
|
-
description: "Create Maeve content as a saved draft only. Does not schedule or publish
|
|
3141
|
+
description: "Create Maeve content as a saved draft only. Does not schedule or publish. Agent use requires explicit create or save language; confirmation depends on workspace autonomy.",
|
|
2233
3142
|
inputSchema: exports.createDraftContentInputSchema,
|
|
2234
3143
|
wireInputSchemas: {
|
|
3144
|
+
agent: exports.createDraftContentAgentInputSchema,
|
|
2235
3145
|
mcp: exports.createDraftContentMcpInputSchema
|
|
2236
3146
|
},
|
|
2237
3147
|
outputSchema: exports.createDraftContentOutputSchema,
|
|
@@ -2253,7 +3163,7 @@ var require_dist = __commonJS({
|
|
|
2253
3163
|
surfaces: {
|
|
2254
3164
|
agent: {
|
|
2255
3165
|
name: exports.TOOL_WIRE_NAMES.contentCreateDraft.agent,
|
|
2256
|
-
description: "Creates a REAL saved draft in Maeve. Only call this when the user explicitly asks to save or create a draft.
|
|
3166
|
+
description: "Creates a REAL saved draft in Maeve. Only call this when the user explicitly asks to save or create a draft. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.",
|
|
2257
3167
|
access: "write",
|
|
2258
3168
|
gated: false,
|
|
2259
3169
|
safeInputSummary: (input) => [
|
|
@@ -2278,6 +3188,67 @@ var require_dist = __commonJS({
|
|
|
2278
3188
|
}
|
|
2279
3189
|
}
|
|
2280
3190
|
};
|
|
3191
|
+
exports.CREATE_DRAFTS_MAX_ITEMS = 20;
|
|
3192
|
+
exports.createDraftsContentInputSchema = z9.object({
|
|
3193
|
+
idempotencyKey: z9.string().max(255).optional().describe("Optional batch idempotency key. Generated and returned when omitted."),
|
|
3194
|
+
drafts: z9.array(exports.createDraftContentInputSchema).min(1).max(exports.CREATE_DRAFTS_MAX_ITEMS).describe("Draft definitions to create. Each item takes the same fields as content.create_draft.")
|
|
3195
|
+
}).strict();
|
|
3196
|
+
exports.createDraftsContentOutputSchema = z9.object({
|
|
3197
|
+
ok: z9.literal(true),
|
|
3198
|
+
renderHint: z9.literal("drafts_created"),
|
|
3199
|
+
createdCount: z9.number().int().min(0),
|
|
3200
|
+
failedCount: z9.number().int().min(0),
|
|
3201
|
+
results: z9.array(z9.discriminatedUnion("ok", [
|
|
3202
|
+
z9.object({
|
|
3203
|
+
ok: z9.literal(true),
|
|
3204
|
+
index: z9.number().int().min(0),
|
|
3205
|
+
content: createDraftContentResultSchema,
|
|
3206
|
+
idempotency: createDraftIdempotencyResultSchema
|
|
3207
|
+
}).strict(),
|
|
3208
|
+
z9.object({
|
|
3209
|
+
ok: z9.literal(false),
|
|
3210
|
+
index: z9.number().int().min(0),
|
|
3211
|
+
error: z9.object({
|
|
3212
|
+
code: z9.string(),
|
|
3213
|
+
message: z9.string()
|
|
3214
|
+
}).strict()
|
|
3215
|
+
}).strict()
|
|
3216
|
+
]))
|
|
3217
|
+
}).strict();
|
|
3218
|
+
exports.CONTENT_CREATE_DRAFTS_CONTRACT = defineToolContract({
|
|
3219
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentCreateDrafts,
|
|
3220
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentCreateDrafts,
|
|
3221
|
+
description: `Create up to ${exports.CREATE_DRAFTS_MAX_ITEMS} Maeve content drafts in one batch under a single user confirmation. Drafts only; does not schedule or publish.`,
|
|
3222
|
+
inputSchema: exports.createDraftsContentInputSchema,
|
|
3223
|
+
outputSchema: exports.createDraftsContentOutputSchema,
|
|
3224
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftCreate],
|
|
3225
|
+
confirmation: {
|
|
3226
|
+
required: true,
|
|
3227
|
+
actionType: exports.TOOL_OPERATION_IDS.contentCreateDrafts,
|
|
3228
|
+
buildSummary: (input) => buildCreateDraftsConfirmationSummary(input)
|
|
3229
|
+
},
|
|
3230
|
+
idempotency: {
|
|
3231
|
+
required: true,
|
|
3232
|
+
buildKey: (input, context) => [
|
|
3233
|
+
exports.TOOL_OPERATION_IDS.contentCreateDrafts,
|
|
3234
|
+
context.workspaceId,
|
|
3235
|
+
input.idempotencyKey?.trim() || shortStableHash(input)
|
|
3236
|
+
].join(":")
|
|
3237
|
+
},
|
|
3238
|
+
surfaces: {
|
|
3239
|
+
agent: {
|
|
3240
|
+
name: exports.TOOL_WIRE_NAMES.contentCreateDrafts.agent,
|
|
3241
|
+
description: `Creates multiple REAL saved drafts in Maeve under one user confirmation. Prefer this over repeated content.create_draft calls whenever the user asks for more than one draft (up to ${exports.CREATE_DRAFTS_MAX_ITEMS} per call). Only call it when the user explicitly asks to save or create drafts. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.`,
|
|
3242
|
+
access: "write",
|
|
3243
|
+
gated: false,
|
|
3244
|
+
safeInputSummary: (input) => [
|
|
3245
|
+
`drafts=${input.drafts.length}`,
|
|
3246
|
+
`integrations=${new Set(input.drafts.map((draft) => draft.integrationId)).size}`,
|
|
3247
|
+
`idempotencyKey=${input.idempotencyKey ? "present" : "absent"}`
|
|
3248
|
+
].join(" ")
|
|
3249
|
+
}
|
|
3250
|
+
}
|
|
3251
|
+
});
|
|
2281
3252
|
var updateDraftContentInputShape = {
|
|
2282
3253
|
contentId: z9.string().uuid().describe("Draft or scheduled content ID to edit."),
|
|
2283
3254
|
internalTitle: z9.string().max(500).nullable().optional().describe("Internal planning title. Never published. Pass null to clear."),
|
|
@@ -2333,7 +3304,7 @@ var require_dist = __commonJS({
|
|
|
2333
3304
|
surfaces: {
|
|
2334
3305
|
agent: {
|
|
2335
3306
|
name: exports.TOOL_WIRE_NAMES.contentUpdateDraft.agent,
|
|
2336
|
-
description: "Updates a REAL saved draft or scheduled content item in Maeve. Only call this when the user explicitly asks to edit saved content.
|
|
3307
|
+
description: "Updates a REAL saved draft or scheduled content item in Maeve. Only call this when the user explicitly asks to edit saved content. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.",
|
|
2337
3308
|
access: "write",
|
|
2338
3309
|
gated: false,
|
|
2339
3310
|
safeInputSummary: (input) => [
|
|
@@ -2361,6 +3332,7 @@ var require_dist = __commonJS({
|
|
|
2361
3332
|
var contentMetadataUuidArraySchema = z9.array(z9.string().uuid());
|
|
2362
3333
|
var updateContentMetadataInputShape = {
|
|
2363
3334
|
contentId: z9.string().uuid().describe("Content ID whose planning metadata should be updated."),
|
|
3335
|
+
organizationalTitle: z9.string().max(240).nullable().optional().describe("Organizational title shown inside Maeve. Never published. Pass null to clear."),
|
|
2364
3336
|
labelIds: contentMetadataUuidArraySchema.optional().describe("Replacement workspace content label IDs. Empty array clears."),
|
|
2365
3337
|
pillarIds: contentMetadataUuidArraySchema.optional().describe("Replacement content pillar IDs. Empty array clears."),
|
|
2366
3338
|
formatIds: contentMetadataUuidArraySchema.optional().describe("Replacement content format IDs. Empty array clears."),
|
|
@@ -2416,6 +3388,7 @@ var require_dist = __commonJS({
|
|
|
2416
3388
|
workspaceId: z9.string(),
|
|
2417
3389
|
status: z9.string(),
|
|
2418
3390
|
workflowStatus: z9.string().nullable(),
|
|
3391
|
+
organizationalTitle: z9.string().nullable(),
|
|
2419
3392
|
labelIds: z9.array(z9.string()),
|
|
2420
3393
|
labels: z9.array(publicContentLabelOutputSchema),
|
|
2421
3394
|
pillarIds: z9.array(z9.string()),
|
|
@@ -2444,7 +3417,7 @@ var require_dist = __commonJS({
|
|
|
2444
3417
|
exports.CONTENT_UPDATE_METADATA_CONTRACT = {
|
|
2445
3418
|
canonicalName: exports.TOOL_OPERATION_IDS.contentUpdateMetadata,
|
|
2446
3419
|
wireNames: exports.TOOL_WIRE_NAMES.contentUpdateMetadata,
|
|
2447
|
-
description: "Update planning metadata on one existing draft or
|
|
3420
|
+
description: "Update the organizational title and planning metadata on one existing draft, scheduled, or published content item. The organizational title is internal to Maeve and never changes a provider title. Omitted fields remain unchanged; provided arrays replace existing assignments and empty arrays clear.",
|
|
2448
3421
|
inputSchema: exports.updateContentMetadataInputSchema,
|
|
2449
3422
|
wireInputSchemas: {
|
|
2450
3423
|
mcp: exports.updateContentMetadataMcpInputSchema
|
|
@@ -2463,12 +3436,13 @@ var require_dist = __commonJS({
|
|
|
2463
3436
|
surfaces: {
|
|
2464
3437
|
agent: {
|
|
2465
3438
|
name: exports.TOOL_WIRE_NAMES.contentUpdateMetadata.agent,
|
|
2466
|
-
description: "Updates REAL saved content
|
|
3439
|
+
description: "Updates REAL saved content organizational metadata in Maeve: organizational title, labels, pillars, formats, assignees, priority, campaign, and campaign phase. The organizational title is never published. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.",
|
|
2467
3440
|
access: "write",
|
|
2468
3441
|
gated: false,
|
|
2469
3442
|
safeInputSummary: (input) => [
|
|
2470
3443
|
`contentId=${input.contentId}`,
|
|
2471
3444
|
`fields=${countUpdateMetadataFields(input)}`,
|
|
3445
|
+
`organizationalTitle=${Object.prototype.hasOwnProperty.call(input, "organizationalTitle") ? input.organizationalTitle === null ? "clear" : "present" : "unchanged"}`,
|
|
2472
3446
|
`labels=${input.labelIds?.length ?? "unchanged"}`,
|
|
2473
3447
|
`assignees=${input.assigneeIds?.length ?? "unchanged"}`
|
|
2474
3448
|
].join(" ")
|
|
@@ -2476,7 +3450,7 @@ var require_dist = __commonJS({
|
|
|
2476
3450
|
mcp: {
|
|
2477
3451
|
name: exports.TOOL_WIRE_NAMES.contentUpdateMetadata.mcp,
|
|
2478
3452
|
title: "Update Content Metadata",
|
|
2479
|
-
description: "Update planning metadata on one existing draft or
|
|
3453
|
+
description: "Update the organizational title and planning metadata on one existing draft, scheduled, or published content item. The organizational title is internal to Maeve and never changes a provider title. Omitted fields remain unchanged; provided arrays replace existing assignments and empty arrays clear.",
|
|
2480
3454
|
scope: "mcp:write",
|
|
2481
3455
|
toolsets: ["content_drafting", "content_workflow", "content_workflow_all"],
|
|
2482
3456
|
annotations: {
|
|
@@ -2510,7 +3484,7 @@ var require_dist = __commonJS({
|
|
|
2510
3484
|
surfaces: {
|
|
2511
3485
|
agent: {
|
|
2512
3486
|
name: exports.TOOL_WIRE_NAMES.contentUpdateNotes.agent,
|
|
2513
|
-
description: "Updates REAL internal notes on saved Maeve content. Notes are never published.
|
|
3487
|
+
description: "Updates REAL internal notes on saved Maeve content. Notes are never published. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.",
|
|
2514
3488
|
access: "write",
|
|
2515
3489
|
gated: false,
|
|
2516
3490
|
safeInputSummary: (input) => `contentId=${input.contentId} notesLength=${input.notes.length}`
|
|
@@ -2542,6 +3516,7 @@ var require_dist = __commonJS({
|
|
|
2542
3516
|
var publicContentMutationOutputSchema = z9.object({
|
|
2543
3517
|
id: z9.string(),
|
|
2544
3518
|
status: z9.string(),
|
|
3519
|
+
appUrl: z9.url().optional(),
|
|
2545
3520
|
groupId: z9.string().optional(),
|
|
2546
3521
|
contentIds: z9.array(z9.string()).optional()
|
|
2547
3522
|
}).strict();
|
|
@@ -2556,6 +3531,37 @@ var require_dist = __commonJS({
|
|
|
2556
3531
|
action: z9.literal("scheduled")
|
|
2557
3532
|
}).strict()
|
|
2558
3533
|
}).strict();
|
|
3534
|
+
exports.SCHEDULE_BATCH_MAX_ITEMS = 20;
|
|
3535
|
+
exports.contentScheduleBatchInputSchema = z9.object({
|
|
3536
|
+
idempotencyKey: z9.string().max(255).optional().describe("Optional batch idempotency key."),
|
|
3537
|
+
items: z9.array(z9.object({
|
|
3538
|
+
contentId: z9.string().uuid().describe("Content ID to schedule or reschedule."),
|
|
3539
|
+
scheduledAt: z9.string().describe("ISO-8601 scheduled time. Include a timezone, or omit it to use the workspace timezone, for example 2026-05-01T09:00:00."),
|
|
3540
|
+
label: z9.string().max(200).optional().describe("Display-only content title as you know it; does not change the saved content.")
|
|
3541
|
+
}).strict()).min(1).max(exports.SCHEDULE_BATCH_MAX_ITEMS).describe("Content items to schedule under one confirmation.")
|
|
3542
|
+
}).strict();
|
|
3543
|
+
exports.contentScheduleBatchOutputSchema = z9.object({
|
|
3544
|
+
ok: z9.literal(true),
|
|
3545
|
+
renderHint: z9.literal("contents_scheduled"),
|
|
3546
|
+
scheduledCount: z9.number().int().min(0),
|
|
3547
|
+
failedCount: z9.number().int().min(0),
|
|
3548
|
+
results: z9.array(z9.discriminatedUnion("ok", [
|
|
3549
|
+
z9.object({
|
|
3550
|
+
ok: z9.literal(true),
|
|
3551
|
+
index: z9.number().int().min(0),
|
|
3552
|
+
content: exports.contentScheduleOutputSchema.shape.content
|
|
3553
|
+
}).strict(),
|
|
3554
|
+
z9.object({
|
|
3555
|
+
ok: z9.literal(false),
|
|
3556
|
+
index: z9.number().int().min(0),
|
|
3557
|
+
contentId: z9.string().uuid(),
|
|
3558
|
+
error: z9.object({
|
|
3559
|
+
code: z9.string(),
|
|
3560
|
+
message: z9.string()
|
|
3561
|
+
}).strict()
|
|
3562
|
+
}).strict()
|
|
3563
|
+
]))
|
|
3564
|
+
}).strict();
|
|
2559
3565
|
var publishNowInputShape = {
|
|
2560
3566
|
contentId: z9.string().uuid().describe("Draft or scheduled content ID to publish now."),
|
|
2561
3567
|
confirmationText: z9.string().optional().describe("Exact confirmation text: publish_now:<contentId>."),
|
|
@@ -2642,7 +3648,7 @@ var require_dist = __commonJS({
|
|
|
2642
3648
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
2643
3649
|
...deleteContentInputShape
|
|
2644
3650
|
}).strict();
|
|
2645
|
-
var deleteContentModeSchema = z9.enum(["hard_deleted", "platform_deleted"]);
|
|
3651
|
+
var deleteContentModeSchema = z9.enum(["hard_deleted", "platform_deleted", "locally_deleted"]);
|
|
2646
3652
|
exports.deleteContentOutputSchema = z9.object({
|
|
2647
3653
|
content: z9.object({
|
|
2648
3654
|
mode: deleteContentModeSchema,
|
|
@@ -2654,6 +3660,64 @@ var require_dist = __commonJS({
|
|
|
2654
3660
|
action: z9.literal("content_deleted")
|
|
2655
3661
|
}).strict()
|
|
2656
3662
|
}).strict();
|
|
3663
|
+
var batchContentMutationItemSchema = z9.object({
|
|
3664
|
+
contentId: z9.string().uuid().describe("Content ID to mutate."),
|
|
3665
|
+
label: z9.string().max(200).optional().describe("Display-only content title as you know it; does not change the saved content.")
|
|
3666
|
+
}).strict();
|
|
3667
|
+
exports.PUBLISH_NOW_BATCH_MAX_ITEMS = 20;
|
|
3668
|
+
exports.publishNowBatchInputSchema = z9.object({
|
|
3669
|
+
idempotencyKey: z9.string().max(255).optional().describe("Optional batch idempotency key."),
|
|
3670
|
+
items: z9.array(batchContentMutationItemSchema).min(1).max(exports.PUBLISH_NOW_BATCH_MAX_ITEMS).describe("Content items to publish now under one confirmation.")
|
|
3671
|
+
}).strict();
|
|
3672
|
+
exports.publishNowBatchOutputSchema = z9.object({
|
|
3673
|
+
ok: z9.literal(true),
|
|
3674
|
+
renderHint: z9.literal("contents_published"),
|
|
3675
|
+
publishedCount: z9.number().int().min(0),
|
|
3676
|
+
failedCount: z9.number().int().min(0),
|
|
3677
|
+
results: z9.array(z9.discriminatedUnion("ok", [
|
|
3678
|
+
z9.object({
|
|
3679
|
+
ok: z9.literal(true),
|
|
3680
|
+
index: z9.number().int().min(0),
|
|
3681
|
+
content: exports.publishNowOutputSchema.shape.content
|
|
3682
|
+
}).strict(),
|
|
3683
|
+
z9.object({
|
|
3684
|
+
ok: z9.literal(false),
|
|
3685
|
+
index: z9.number().int().min(0),
|
|
3686
|
+
contentId: z9.string().uuid(),
|
|
3687
|
+
error: z9.object({
|
|
3688
|
+
code: z9.string(),
|
|
3689
|
+
message: z9.string()
|
|
3690
|
+
}).strict()
|
|
3691
|
+
}).strict()
|
|
3692
|
+
]))
|
|
3693
|
+
}).strict();
|
|
3694
|
+
exports.DELETE_BATCH_MAX_ITEMS = 20;
|
|
3695
|
+
exports.deleteBatchInputSchema = z9.object({
|
|
3696
|
+
idempotencyKey: z9.string().max(255).optional().describe("Optional batch idempotency key."),
|
|
3697
|
+
items: z9.array(batchContentMutationItemSchema).min(1).max(exports.DELETE_BATCH_MAX_ITEMS).describe("Content items to delete under one confirmation.")
|
|
3698
|
+
}).strict();
|
|
3699
|
+
exports.deleteBatchOutputSchema = z9.object({
|
|
3700
|
+
ok: z9.literal(true),
|
|
3701
|
+
renderHint: z9.literal("contents_deleted"),
|
|
3702
|
+
deletedCount: z9.number().int().min(0),
|
|
3703
|
+
failedCount: z9.number().int().min(0),
|
|
3704
|
+
results: z9.array(z9.discriminatedUnion("ok", [
|
|
3705
|
+
z9.object({
|
|
3706
|
+
ok: z9.literal(true),
|
|
3707
|
+
index: z9.number().int().min(0),
|
|
3708
|
+
content: exports.deleteContentOutputSchema.shape.content
|
|
3709
|
+
}).strict(),
|
|
3710
|
+
z9.object({
|
|
3711
|
+
ok: z9.literal(false),
|
|
3712
|
+
index: z9.number().int().min(0),
|
|
3713
|
+
contentId: z9.string().uuid(),
|
|
3714
|
+
error: z9.object({
|
|
3715
|
+
code: z9.string(),
|
|
3716
|
+
message: z9.string()
|
|
3717
|
+
}).strict()
|
|
3718
|
+
}).strict()
|
|
3719
|
+
]))
|
|
3720
|
+
}).strict();
|
|
2657
3721
|
exports.CONTENT_SCHEDULE_CONTRACT = {
|
|
2658
3722
|
canonicalName: exports.TOOL_OPERATION_IDS.contentSchedule,
|
|
2659
3723
|
wireNames: exports.TOOL_WIRE_NAMES.contentSchedule,
|
|
@@ -2676,7 +3740,7 @@ var require_dist = __commonJS({
|
|
|
2676
3740
|
surfaces: {
|
|
2677
3741
|
agent: {
|
|
2678
3742
|
name: exports.TOOL_WIRE_NAMES.contentSchedule.agent,
|
|
2679
|
-
description: "Schedules REAL saved content for publishing on the connected external account and creates the publishing queue job.
|
|
3743
|
+
description: "Schedules REAL saved content for publishing on the connected external account and creates the publishing queue job. Requires user confirmation when the workspace autonomy level is always_ask or when a scheduled time is less than one hour away; otherwise it executes directly with a content.unschedule undo.",
|
|
2680
3744
|
access: "write",
|
|
2681
3745
|
gated: false,
|
|
2682
3746
|
safeInputSummary: (input) => `contentId=${input.contentId} scheduledAt=${input.scheduledAt}`
|
|
@@ -2696,6 +3760,81 @@ var require_dist = __commonJS({
|
|
|
2696
3760
|
}
|
|
2697
3761
|
}
|
|
2698
3762
|
};
|
|
3763
|
+
exports.CONTENT_SCHEDULE_BATCH_CONTRACT = defineToolContract({
|
|
3764
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentScheduleBatch,
|
|
3765
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentScheduleBatch,
|
|
3766
|
+
description: `Schedule up to ${exports.SCHEDULE_BATCH_MAX_ITEMS} Maeve content items in one batch under a single user confirmation.`,
|
|
3767
|
+
inputSchema: exports.contentScheduleBatchInputSchema,
|
|
3768
|
+
outputSchema: exports.contentScheduleBatchOutputSchema,
|
|
3769
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentSchedule],
|
|
3770
|
+
confirmation: {
|
|
3771
|
+
required: true,
|
|
3772
|
+
actionType: exports.TOOL_OPERATION_IDS.contentScheduleBatch,
|
|
3773
|
+
buildSummary: (input) => buildScheduleBatchConfirmationSummary(input),
|
|
3774
|
+
buildDisplay: (input) => ({
|
|
3775
|
+
kind: "batch",
|
|
3776
|
+
items: input.items.map((item) => ({
|
|
3777
|
+
label: resolveBatchDisplayLabel(item.label, item.contentId),
|
|
3778
|
+
detail: truncateText(item.scheduledAt, 120) ?? item.scheduledAt.slice(0, 120),
|
|
3779
|
+
entityId: item.contentId
|
|
3780
|
+
}))
|
|
3781
|
+
})
|
|
3782
|
+
},
|
|
3783
|
+
idempotency: {
|
|
3784
|
+
required: true,
|
|
3785
|
+
buildKey: (input, context) => [
|
|
3786
|
+
exports.TOOL_OPERATION_IDS.contentScheduleBatch,
|
|
3787
|
+
context.workspaceId,
|
|
3788
|
+
input.idempotencyKey?.trim() || shortStableHash(input)
|
|
3789
|
+
].join(":")
|
|
3790
|
+
},
|
|
3791
|
+
surfaces: {
|
|
3792
|
+
agent: {
|
|
3793
|
+
name: exports.TOOL_WIRE_NAMES.contentScheduleBatch.agent,
|
|
3794
|
+
description: `Schedules multiple REAL saved content items for publishing under one user confirmation. Prefer this over repeated content.schedule calls whenever the user asks to schedule more than one item (up to ${exports.SCHEDULE_BATCH_MAX_ITEMS} per call). Requires user confirmation when the workspace autonomy level is always_ask or when a scheduled time is less than one hour away; otherwise it executes directly with a content.unschedule undo.`,
|
|
3795
|
+
access: "write",
|
|
3796
|
+
gated: false,
|
|
3797
|
+
safeInputSummary: (input) => `items=${input.items.length} idempotencyKey=${input.idempotencyKey ? "present" : "absent"}`
|
|
3798
|
+
}
|
|
3799
|
+
}
|
|
3800
|
+
});
|
|
3801
|
+
exports.contentUnscheduleInputSchema = z9.object({
|
|
3802
|
+
contentId: z9.string().uuid().describe("Scheduled Maeve content ID to revert to draft.")
|
|
3803
|
+
}).strict();
|
|
3804
|
+
exports.contentUnscheduleOutputSchema = z9.object({
|
|
3805
|
+
ok: z9.literal(true),
|
|
3806
|
+
renderHint: z9.literal("content_unscheduled"),
|
|
3807
|
+
content: z9.object({
|
|
3808
|
+
contentId: z9.string(),
|
|
3809
|
+
status: z9.literal("draft")
|
|
3810
|
+
}).strict()
|
|
3811
|
+
}).strict();
|
|
3812
|
+
exports.CONTENT_UNSCHEDULE_CONTRACT = defineToolContract({
|
|
3813
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentUnschedule,
|
|
3814
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentUnschedule,
|
|
3815
|
+
description: "Unschedule a scheduled Maeve content item: cancels the publishing queue job and reverts the content to draft. This is the undo for content.schedule and content.schedule_batch.",
|
|
3816
|
+
inputSchema: exports.contentUnscheduleInputSchema,
|
|
3817
|
+
outputSchema: exports.contentUnscheduleOutputSchema,
|
|
3818
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentSchedule],
|
|
3819
|
+
confirmation: {
|
|
3820
|
+
required: false,
|
|
3821
|
+
actionType: exports.TOOL_OPERATION_IDS.contentUnschedule,
|
|
3822
|
+
buildSummary: (input) => `Unschedule content ${input.contentId} and revert it to a draft.`
|
|
3823
|
+
},
|
|
3824
|
+
idempotency: {
|
|
3825
|
+
required: true,
|
|
3826
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.contentUnschedule, context.workspaceId, input.contentId].join(":")
|
|
3827
|
+
},
|
|
3828
|
+
surfaces: {
|
|
3829
|
+
agent: {
|
|
3830
|
+
name: exports.TOOL_WIRE_NAMES.contentUnschedule.agent,
|
|
3831
|
+
description: "Unschedules scheduled Maeve content: cancels the publishing queue job and reverts it to draft. Use this to undo a schedule the user no longer wants. Fails if the content has already been sent or is inside the publish execution window.",
|
|
3832
|
+
access: "write",
|
|
3833
|
+
gated: false,
|
|
3834
|
+
safeInputSummary: (input) => `contentId=${input.contentId}`
|
|
3835
|
+
}
|
|
3836
|
+
}
|
|
3837
|
+
});
|
|
2699
3838
|
exports.CONTENT_PUBLISH_NOW_CONTRACT = {
|
|
2700
3839
|
canonicalName: exports.TOOL_OPERATION_IDS.contentPublishNow,
|
|
2701
3840
|
wireNames: exports.TOOL_WIRE_NAMES.contentPublishNow,
|
|
@@ -2709,6 +3848,7 @@ var require_dist = __commonJS({
|
|
|
2709
3848
|
confirmation: {
|
|
2710
3849
|
required: true,
|
|
2711
3850
|
actionType: exports.TOOL_OPERATION_IDS.contentPublishNow,
|
|
3851
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
2712
3852
|
buildSummary: (input) => buildPublishNowConfirmationSummary(input)
|
|
2713
3853
|
},
|
|
2714
3854
|
idempotency: {
|
|
@@ -2738,6 +3878,38 @@ var require_dist = __commonJS({
|
|
|
2738
3878
|
}
|
|
2739
3879
|
}
|
|
2740
3880
|
};
|
|
3881
|
+
exports.CONTENT_PUBLISH_NOW_BATCH_CONTRACT = defineToolContract({
|
|
3882
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentPublishNowBatch,
|
|
3883
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentPublishNowBatch,
|
|
3884
|
+
description: `Publish up to ${exports.PUBLISH_NOW_BATCH_MAX_ITEMS} Maeve content items immediately in one batch under a single user confirmation.`,
|
|
3885
|
+
inputSchema: exports.publishNowBatchInputSchema,
|
|
3886
|
+
outputSchema: exports.publishNowBatchOutputSchema,
|
|
3887
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentPublishNow],
|
|
3888
|
+
confirmation: {
|
|
3889
|
+
required: true,
|
|
3890
|
+
actionType: exports.TOOL_OPERATION_IDS.contentPublishNowBatch,
|
|
3891
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
3892
|
+
buildSummary: (input) => buildPublishNowBatchConfirmationSummary(input),
|
|
3893
|
+
buildDisplay: (input) => buildBatchConfirmationDisplay(input.items)
|
|
3894
|
+
},
|
|
3895
|
+
idempotency: {
|
|
3896
|
+
required: true,
|
|
3897
|
+
buildKey: (input, context) => [
|
|
3898
|
+
exports.TOOL_OPERATION_IDS.contentPublishNowBatch,
|
|
3899
|
+
context.workspaceId,
|
|
3900
|
+
input.idempotencyKey?.trim() || shortStableHash(input)
|
|
3901
|
+
].join(":")
|
|
3902
|
+
},
|
|
3903
|
+
surfaces: {
|
|
3904
|
+
agent: {
|
|
3905
|
+
name: exports.TOOL_WIRE_NAMES.contentPublishNowBatch.agent,
|
|
3906
|
+
description: `Publishes multiple REAL saved content items immediately under one user confirmation. Prefer this over repeated content.publish_now calls whenever the user asks to publish more than one item (up to ${exports.PUBLISH_NOW_BATCH_MAX_ITEMS} per call). This always requires explicit user confirmation before executing.`,
|
|
3907
|
+
access: "write",
|
|
3908
|
+
gated: false,
|
|
3909
|
+
safeInputSummary: (input) => `items=${input.items.length} idempotencyKey=${input.idempotencyKey ? "present" : "absent"}`
|
|
3910
|
+
}
|
|
3911
|
+
}
|
|
3912
|
+
});
|
|
2741
3913
|
exports.CONTENT_ARCHIVE_CONTRACT = {
|
|
2742
3914
|
canonicalName: exports.TOOL_OPERATION_IDS.contentArchive,
|
|
2743
3915
|
wireNames: exports.TOOL_WIRE_NAMES.contentArchive,
|
|
@@ -2760,7 +3932,7 @@ var require_dist = __commonJS({
|
|
|
2760
3932
|
surfaces: {
|
|
2761
3933
|
agent: {
|
|
2762
3934
|
name: exports.TOOL_WIRE_NAMES.contentArchive.agent,
|
|
2763
|
-
description: "Archives REAL published saved content in Maeve.
|
|
3935
|
+
description: "Archives REAL published saved content in Maeve. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.",
|
|
2764
3936
|
access: "write",
|
|
2765
3937
|
gated: false,
|
|
2766
3938
|
safeInputSummary: (input) => `contentId=${input.contentId}`
|
|
@@ -2802,7 +3974,7 @@ var require_dist = __commonJS({
|
|
|
2802
3974
|
surfaces: {
|
|
2803
3975
|
agent: {
|
|
2804
3976
|
name: exports.TOOL_WIRE_NAMES.contentRestore.agent,
|
|
2805
|
-
description: "Restores REAL archived saved content in Maeve.
|
|
3977
|
+
description: "Restores REAL archived saved content in Maeve. Whether this needs user confirmation depends on the workspace agent autonomy level; at the default level it executes directly.",
|
|
2806
3978
|
access: "write",
|
|
2807
3979
|
gated: false,
|
|
2808
3980
|
safeInputSummary: (input) => `contentId=${input.contentId}`
|
|
@@ -2835,6 +4007,7 @@ var require_dist = __commonJS({
|
|
|
2835
4007
|
confirmation: {
|
|
2836
4008
|
required: true,
|
|
2837
4009
|
actionType: exports.TOOL_OPERATION_IDS.contentRetry,
|
|
4010
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
2838
4011
|
buildSummary: (input) => buildRetryConfirmationSummary(input)
|
|
2839
4012
|
},
|
|
2840
4013
|
idempotency: {
|
|
@@ -2877,6 +4050,7 @@ var require_dist = __commonJS({
|
|
|
2877
4050
|
confirmation: {
|
|
2878
4051
|
required: true,
|
|
2879
4052
|
actionType: exports.TOOL_OPERATION_IDS.contentDelete,
|
|
4053
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
2880
4054
|
buildSummary: (input) => buildDeleteConfirmationSummary(input)
|
|
2881
4055
|
},
|
|
2882
4056
|
idempotency: {
|
|
@@ -2905,7 +4079,62 @@ var require_dist = __commonJS({
|
|
|
2905
4079
|
}
|
|
2906
4080
|
}
|
|
2907
4081
|
}
|
|
2908
|
-
};
|
|
4082
|
+
};
|
|
4083
|
+
exports.CONTENT_DELETE_BATCH_CONTRACT = defineToolContract({
|
|
4084
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentDeleteBatch,
|
|
4085
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentDeleteBatch,
|
|
4086
|
+
description: `Delete up to ${exports.DELETE_BATCH_MAX_ITEMS} Maeve content items in one batch under a single user confirmation.`,
|
|
4087
|
+
inputSchema: exports.deleteBatchInputSchema,
|
|
4088
|
+
outputSchema: exports.deleteBatchOutputSchema,
|
|
4089
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftDelete],
|
|
4090
|
+
confirmation: {
|
|
4091
|
+
required: true,
|
|
4092
|
+
actionType: exports.TOOL_OPERATION_IDS.contentDeleteBatch,
|
|
4093
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
4094
|
+
buildSummary: (input) => buildDeleteBatchConfirmationSummary(input),
|
|
4095
|
+
buildDisplay: (input) => buildBatchConfirmationDisplay(input.items)
|
|
4096
|
+
},
|
|
4097
|
+
idempotency: {
|
|
4098
|
+
required: true,
|
|
4099
|
+
buildKey: (input, context) => [
|
|
4100
|
+
exports.TOOL_OPERATION_IDS.contentDeleteBatch,
|
|
4101
|
+
context.workspaceId,
|
|
4102
|
+
input.idempotencyKey?.trim() || shortStableHash(input)
|
|
4103
|
+
].join(":")
|
|
4104
|
+
},
|
|
4105
|
+
surfaces: {
|
|
4106
|
+
agent: {
|
|
4107
|
+
name: exports.TOOL_WIRE_NAMES.contentDeleteBatch.agent,
|
|
4108
|
+
description: `Permanently deletes multiple REAL saved content items under one user confirmation. Prefer this over repeated content.delete calls whenever the user asks to delete more than one item (up to ${exports.DELETE_BATCH_MAX_ITEMS} per call). This always requires explicit user confirmation before executing.`,
|
|
4109
|
+
access: "write",
|
|
4110
|
+
gated: false,
|
|
4111
|
+
safeInputSummary: (input) => `items=${input.items.length} idempotencyKey=${input.idempotencyKey ? "present" : "absent"}`
|
|
4112
|
+
}
|
|
4113
|
+
}
|
|
4114
|
+
});
|
|
4115
|
+
function buildComposerCaptionPatchConfirmationSummary(input) {
|
|
4116
|
+
const fieldLabel = input.field === "firstComment" ? "first comment" : "caption";
|
|
4117
|
+
const target = input.platform ? `${input.platform} ${fieldLabel}` : fieldLabel;
|
|
4118
|
+
const preview = truncateText(input.caption, 120);
|
|
4119
|
+
if (preview) {
|
|
4120
|
+
const punctuation = /[.!?]$/.test(preview) ? "" : ".";
|
|
4121
|
+
return `Stage a new ${target} on the open draft: "${preview}"${punctuation} Nothing is saved until you save the draft.`;
|
|
4122
|
+
}
|
|
4123
|
+
return `Stage a new ${target} on the open draft. Nothing is saved until you save the draft.`;
|
|
4124
|
+
}
|
|
4125
|
+
function buildComposerTaxonomyPatchConfirmationSummary(input) {
|
|
4126
|
+
const changed = [];
|
|
4127
|
+
if (input.labelIds)
|
|
4128
|
+
changed.push("labels");
|
|
4129
|
+
if (input.pillarIds)
|
|
4130
|
+
changed.push("pillars");
|
|
4131
|
+
if (input.formatIds)
|
|
4132
|
+
changed.push("formats");
|
|
4133
|
+
if (input.hashtags)
|
|
4134
|
+
changed.push("hashtags");
|
|
4135
|
+
const fields = changed.length > 0 ? changed.join(", ") : "taxonomy";
|
|
4136
|
+
return `Stage a ${fields} change on the open draft. Nothing is saved until you save the draft.`;
|
|
4137
|
+
}
|
|
2909
4138
|
function buildCreateDraftConfirmationSummary(input) {
|
|
2910
4139
|
const title = truncateText(resolveCreateDraftTitle(input), 120);
|
|
2911
4140
|
const captionPreview = title ? null : truncateText(input.captions?.canonical, 120);
|
|
@@ -2919,6 +4148,16 @@ var require_dist = __commonJS({
|
|
|
2919
4148
|
function hasCreateDraftTitle(input) {
|
|
2920
4149
|
return Boolean(resolveCreateDraftTitle(input));
|
|
2921
4150
|
}
|
|
4151
|
+
function buildCreateDraftsConfirmationSummary(input) {
|
|
4152
|
+
const count = input.drafts.length;
|
|
4153
|
+
const integrationCount = new Set(input.drafts.map((draft) => draft.integrationId)).size;
|
|
4154
|
+
const target = integrationCount === 1 ? "1 account" : `${integrationCount} accounts`;
|
|
4155
|
+
const previews = input.drafts.map((draft) => truncateText(resolveCreateDraftTitle(draft) ?? draft.captions?.canonical, 60)).filter((preview) => Boolean(preview)).slice(0, 3).map((preview) => `"${preview}"`);
|
|
4156
|
+
const base = count === 1 ? `Create 1 saved draft for ${target}` : `Create ${count} saved drafts across ${target}`;
|
|
4157
|
+
if (previews.length === 0)
|
|
4158
|
+
return `${base}.`;
|
|
4159
|
+
return `${base}: ${previews.join(", ")}${count > previews.length ? ", \u2026" : ""}.`;
|
|
4160
|
+
}
|
|
2922
4161
|
function resolveCreateDraftTitle(input) {
|
|
2923
4162
|
return input.internalTitle?.trim() || input.publishTitle?.trim() || null;
|
|
2924
4163
|
}
|
|
@@ -2940,6 +4179,13 @@ var require_dist = __commonJS({
|
|
|
2940
4179
|
}
|
|
2941
4180
|
function buildUpdateMetadataConfirmationSummary(input) {
|
|
2942
4181
|
const fields = countUpdateMetadataFields(input);
|
|
4182
|
+
if (Object.prototype.hasOwnProperty.call(input, "organizationalTitle")) {
|
|
4183
|
+
const title = truncateText(input.organizationalTitle?.trim(), 120);
|
|
4184
|
+
if (fields === 1) {
|
|
4185
|
+
return title ? `Rename saved content ${input.contentId} inside Maeve to "${title}".` : `Clear the organizational title for saved content ${input.contentId}.`;
|
|
4186
|
+
}
|
|
4187
|
+
return title ? `Update saved content ${input.contentId} metadata (${fields} fields), including the organizational title "${title}".` : `Update saved content ${input.contentId} metadata (${fields} fields), including clearing the organizational title.`;
|
|
4188
|
+
}
|
|
2943
4189
|
return `Update saved content ${input.contentId} metadata (${fields} ${fields === 1 ? "field" : "fields"}).`;
|
|
2944
4190
|
}
|
|
2945
4191
|
function countUpdateMetadataFields(input) {
|
|
@@ -2952,9 +4198,21 @@ var require_dist = __commonJS({
|
|
|
2952
4198
|
function buildScheduleConfirmationSummary(input) {
|
|
2953
4199
|
return `Schedule real publishing for saved content ${input.contentId} on the connected external account at ${input.scheduledAt}.`;
|
|
2954
4200
|
}
|
|
4201
|
+
function buildScheduleBatchConfirmationSummary(input) {
|
|
4202
|
+
const count = input.items.length;
|
|
4203
|
+
const previews = input.items.slice(0, 3).map((item) => `"${resolveBatchDisplayLabel(item.label, item.contentId)}"`);
|
|
4204
|
+
const base = `Schedule ${count} ${count === 1 ? "post" : "posts"}`;
|
|
4205
|
+
return `${base}: ${previews.join(", ")}${count > previews.length ? ", \u2026" : ""}.`;
|
|
4206
|
+
}
|
|
4207
|
+
function resolveBatchDisplayLabel(label, contentId) {
|
|
4208
|
+
return truncateText(label, 120) ?? contentId.slice(0, 8);
|
|
4209
|
+
}
|
|
2955
4210
|
function buildPublishNowConfirmationSummary(input) {
|
|
2956
4211
|
return `Publish saved content ${input.contentId} immediately to the connected external account.`;
|
|
2957
4212
|
}
|
|
4213
|
+
function buildPublishNowBatchConfirmationSummary(input) {
|
|
4214
|
+
return buildBatchConfirmationSummary("Publish", input.items, "now");
|
|
4215
|
+
}
|
|
2958
4216
|
function buildArchiveConfirmationSummary(input) {
|
|
2959
4217
|
return `Archive saved content ${input.contentId}.`;
|
|
2960
4218
|
}
|
|
@@ -2967,6 +4225,24 @@ var require_dist = __commonJS({
|
|
|
2967
4225
|
function buildDeleteConfirmationSummary(input) {
|
|
2968
4226
|
return `Permanently delete saved content ${input.contentId}. This will delete the content item from Maeve and cannot be undone.`;
|
|
2969
4227
|
}
|
|
4228
|
+
function buildDeleteBatchConfirmationSummary(input) {
|
|
4229
|
+
return `${buildBatchConfirmationSummary("Permanently delete", input.items)} This cannot be undone.`;
|
|
4230
|
+
}
|
|
4231
|
+
function buildBatchConfirmationSummary(action, items, suffix = "") {
|
|
4232
|
+
const count = items.length;
|
|
4233
|
+
const previews = items.slice(0, 3).map((item) => `"${resolveBatchDisplayLabel(item.label, item.contentId)}"`);
|
|
4234
|
+
const timing = suffix ? ` ${suffix}` : "";
|
|
4235
|
+
return `${action} ${count} ${count === 1 ? "post" : "posts"}${timing}: ${previews.join(", ")}${count > previews.length ? ", \u2026" : ""}.`;
|
|
4236
|
+
}
|
|
4237
|
+
function buildBatchConfirmationDisplay(items) {
|
|
4238
|
+
return {
|
|
4239
|
+
kind: "batch",
|
|
4240
|
+
items: items.map((item) => ({
|
|
4241
|
+
label: resolveBatchDisplayLabel(item.label, item.contentId),
|
|
4242
|
+
entityId: item.contentId
|
|
4243
|
+
}))
|
|
4244
|
+
};
|
|
4245
|
+
}
|
|
2970
4246
|
function shortStableHash(value) {
|
|
2971
4247
|
const text = stableStringify(value);
|
|
2972
4248
|
let hash = 2166136261;
|
|
@@ -3054,6 +4330,322 @@ var require_dist = __commonJS({
|
|
|
3054
4330
|
}
|
|
3055
4331
|
}
|
|
3056
4332
|
};
|
|
4333
|
+
var INBOX_AUTOMATION_MAX_KEYWORDS = 20;
|
|
4334
|
+
var INBOX_AUTOMATION_MAX_KEYWORD_LENGTH = 80;
|
|
4335
|
+
var INBOX_AUTOMATION_BODY_TRANSPORT_MAX = 1e4;
|
|
4336
|
+
var inboxAutomationToolsets = ["inbox_automation"];
|
|
4337
|
+
var inboxAutomationTriggerSchema = z9.enum(["comment_keyword", "dm_keyword", "dm_welcome"]);
|
|
4338
|
+
var inboxAutomationMatchModeSchema = z9.enum(["any", "contains", "exact"]);
|
|
4339
|
+
var inboxAutomationPostScopeSchema = z9.enum(["all", "specific"]);
|
|
4340
|
+
var inboxAutomationExecutionStatusSchema = z9.enum(["pending", "completed", "partial", "failed", "skipped", "expired"]);
|
|
4341
|
+
var inboxAutomationKeywordsSchema = z9.array(z9.string().trim().toLowerCase().max(INBOX_AUTOMATION_MAX_KEYWORD_LENGTH)).max(INBOX_AUTOMATION_MAX_KEYWORDS).describe('Keywords the trigger matches on. Ignored when matchMode is "any".');
|
|
4342
|
+
var inboxAutomationReplyBodySchema = z9.string().trim().max(INBOX_AUTOMATION_BODY_TRANSPORT_MAX);
|
|
4343
|
+
var inboxAutomationRuleSchema = z9.object({
|
|
4344
|
+
id: z9.string(),
|
|
4345
|
+
integrationId: z9.string(),
|
|
4346
|
+
name: z9.string(),
|
|
4347
|
+
trigger: inboxAutomationTriggerSchema,
|
|
4348
|
+
matchMode: inboxAutomationMatchModeSchema,
|
|
4349
|
+
keywords: z9.array(z9.string()),
|
|
4350
|
+
postScope: inboxAutomationPostScopeSchema,
|
|
4351
|
+
postIds: z9.array(z9.string()),
|
|
4352
|
+
publicReplyBody: z9.string().nullable(),
|
|
4353
|
+
privateReplyBody: z9.string().nullable(),
|
|
4354
|
+
dmReplyBody: z9.string().nullable(),
|
|
4355
|
+
applyTagIds: z9.array(z9.string()),
|
|
4356
|
+
assignToUserId: z9.string().nullable(),
|
|
4357
|
+
disclosureEnabled: z9.boolean(),
|
|
4358
|
+
cooldownHours: z9.number().int(),
|
|
4359
|
+
dailyCap: z9.number().int(),
|
|
4360
|
+
enabled: z9.boolean(),
|
|
4361
|
+
pausedAt: z9.string().nullable(),
|
|
4362
|
+
pausedReason: z9.string().nullable(),
|
|
4363
|
+
consecutiveFailures: z9.number().int(),
|
|
4364
|
+
createdByUserId: z9.string().nullable(),
|
|
4365
|
+
createdAt: z9.string().nullable(),
|
|
4366
|
+
updatedAt: z9.string().nullable(),
|
|
4367
|
+
executionCount: z9.number().int()
|
|
4368
|
+
}).strict();
|
|
4369
|
+
var inboxAutomationExecutionSchema = z9.object({
|
|
4370
|
+
id: z9.string(),
|
|
4371
|
+
ruleId: z9.string(),
|
|
4372
|
+
threadId: z9.string(),
|
|
4373
|
+
triggerMessageId: z9.string(),
|
|
4374
|
+
participantPlatformId: z9.string().nullable(),
|
|
4375
|
+
platformCommentId: z9.string().nullable(),
|
|
4376
|
+
privateReplyPlanned: z9.boolean(),
|
|
4377
|
+
status: inboxAutomationExecutionStatusSchema,
|
|
4378
|
+
actionsPlanned: z9.array(z9.string()),
|
|
4379
|
+
actionsCompleted: z9.record(z9.string(), z9.unknown()),
|
|
4380
|
+
error: z9.string().nullable(),
|
|
4381
|
+
deferredUntil: z9.string().nullable(),
|
|
4382
|
+
deferCount: z9.number().int(),
|
|
4383
|
+
createdAt: z9.string().nullable(),
|
|
4384
|
+
completedAt: z9.string().nullable()
|
|
4385
|
+
}).strict();
|
|
4386
|
+
exports.inboxAutomationRulesListInputSchema = z9.object({}).strict();
|
|
4387
|
+
exports.inboxAutomationRulesListMcpInputSchema = z9.object({
|
|
4388
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID.")
|
|
4389
|
+
}).strict();
|
|
4390
|
+
var inboxAutomationRuleGetInputShape = {
|
|
4391
|
+
ruleId: z9.string().uuid().describe("Automation rule ID.")
|
|
4392
|
+
};
|
|
4393
|
+
exports.inboxAutomationRuleGetInputSchema = z9.object(inboxAutomationRuleGetInputShape).strict();
|
|
4394
|
+
exports.inboxAutomationRuleGetMcpInputSchema = z9.object({
|
|
4395
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4396
|
+
...inboxAutomationRuleGetInputShape
|
|
4397
|
+
}).strict();
|
|
4398
|
+
var createInboxAutomationRuleInputShape = {
|
|
4399
|
+
name: z9.string().trim().min(1).max(120).describe("Rule name shown in the inbox automation dialog."),
|
|
4400
|
+
integrationId: z9.string().uuid().describe("Instagram or Facebook integration the rule listens on."),
|
|
4401
|
+
trigger: inboxAutomationTriggerSchema.describe("comment_keyword replies to post comments, dm_keyword replies to DMs, dm_welcome greets first-time DMs."),
|
|
4402
|
+
matchMode: inboxAutomationMatchModeSchema.optional().describe('Keyword match mode. Defaults to "contains".'),
|
|
4403
|
+
keywords: inboxAutomationKeywordsSchema.optional(),
|
|
4404
|
+
postScope: inboxAutomationPostScopeSchema.optional().describe('Comment rules only. Defaults to "all".'),
|
|
4405
|
+
postIds: z9.array(z9.string().max(255)).max(50).optional().describe('Post IDs the rule targets when postScope is "specific".'),
|
|
4406
|
+
publicReplyBody: inboxAutomationReplyBodySchema.nullable().optional().describe("Public comment reply body."),
|
|
4407
|
+
privateReplyBody: inboxAutomationReplyBodySchema.nullable().optional().describe("Private reply sent to the commenter as a DM."),
|
|
4408
|
+
dmReplyBody: inboxAutomationReplyBodySchema.nullable().optional().describe("DM reply body for DM rules."),
|
|
4409
|
+
applyTagIds: z9.array(z9.string().uuid()).max(20).optional().describe("Inbox tag IDs applied to the matched thread."),
|
|
4410
|
+
assignToUserId: z9.string().uuid().nullable().optional().describe("Workspace member assigned to the matched thread."),
|
|
4411
|
+
disclosureEnabled: z9.boolean().optional().describe("Append the automated-reply disclosure line to sends. Defaults to true."),
|
|
4412
|
+
cooldownHours: z9.number().int().min(0).max(168).optional().describe("Per-participant cooldown in hours (0-168). Defaults to 24."),
|
|
4413
|
+
dailyCap: z9.number().int().min(1).max(1e3).optional().describe("Maximum executions per day. Defaults to 200."),
|
|
4414
|
+
enabled: z9.boolean().optional().describe("MCP creates default to disabled; pass true (or update later) to start the rule.")
|
|
4415
|
+
};
|
|
4416
|
+
exports.createInboxAutomationRuleInputSchema = z9.object(createInboxAutomationRuleInputShape).strict();
|
|
4417
|
+
exports.createInboxAutomationRuleMcpInputSchema = z9.object({
|
|
4418
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4419
|
+
...createInboxAutomationRuleInputShape
|
|
4420
|
+
}).strict();
|
|
4421
|
+
var updateInboxAutomationRuleInputShape = {
|
|
4422
|
+
ruleId: z9.string().uuid().describe("Automation rule ID."),
|
|
4423
|
+
name: z9.string().trim().min(1).max(120).optional(),
|
|
4424
|
+
trigger: inboxAutomationTriggerSchema.optional(),
|
|
4425
|
+
matchMode: inboxAutomationMatchModeSchema.optional(),
|
|
4426
|
+
keywords: inboxAutomationKeywordsSchema.optional(),
|
|
4427
|
+
postScope: inboxAutomationPostScopeSchema.optional(),
|
|
4428
|
+
postIds: z9.array(z9.string().max(255)).max(50).optional(),
|
|
4429
|
+
publicReplyBody: inboxAutomationReplyBodySchema.nullable().optional().describe("Pass null to clear."),
|
|
4430
|
+
privateReplyBody: inboxAutomationReplyBodySchema.nullable().optional().describe("Pass null to clear."),
|
|
4431
|
+
dmReplyBody: inboxAutomationReplyBodySchema.nullable().optional().describe("Pass null to clear."),
|
|
4432
|
+
applyTagIds: z9.array(z9.string().uuid()).max(20).optional(),
|
|
4433
|
+
assignToUserId: z9.string().uuid().nullable().optional().describe("Pass null to clear."),
|
|
4434
|
+
disclosureEnabled: z9.boolean().optional(),
|
|
4435
|
+
cooldownHours: z9.number().int().min(0).max(168).optional(),
|
|
4436
|
+
dailyCap: z9.number().int().min(1).max(1e3).optional(),
|
|
4437
|
+
enabled: z9.boolean().optional().describe("Enable or disable the rule. Enabling clears an auto-pause and resets the failure counter.")
|
|
4438
|
+
};
|
|
4439
|
+
exports.updateInboxAutomationRuleInputSchema = z9.object(updateInboxAutomationRuleInputShape).strict();
|
|
4440
|
+
exports.updateInboxAutomationRuleMcpInputSchema = z9.object({
|
|
4441
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4442
|
+
...updateInboxAutomationRuleInputShape
|
|
4443
|
+
}).strict();
|
|
4444
|
+
var deleteInboxAutomationRuleInputShape = {
|
|
4445
|
+
ruleId: z9.string().uuid().describe("Automation rule ID to delete."),
|
|
4446
|
+
confirmationText: z9.string().optional().describe("Exact confirmation text: inbox_automation_delete:<ruleId>."),
|
|
4447
|
+
dangerouslyAutoConfirm: z9.boolean().optional().describe("Never honored for this action; deletion always requires the exact confirmation text.")
|
|
4448
|
+
};
|
|
4449
|
+
exports.deleteInboxAutomationRuleInputSchema = z9.object(deleteInboxAutomationRuleInputShape).strict();
|
|
4450
|
+
exports.deleteInboxAutomationRuleMcpInputSchema = z9.object({
|
|
4451
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4452
|
+
...deleteInboxAutomationRuleInputShape
|
|
4453
|
+
}).strict();
|
|
4454
|
+
var listInboxAutomationExecutionsInputShape = {
|
|
4455
|
+
ruleId: z9.string().uuid().describe("Automation rule ID."),
|
|
4456
|
+
limit: z9.number().int().min(1).max(100).optional().describe("Executions per page (max 100, default 50)."),
|
|
4457
|
+
offset: z9.number().int().min(0).optional().describe("Rows to skip."),
|
|
4458
|
+
status: inboxAutomationExecutionStatusSchema.optional().describe("Filter by execution status.")
|
|
4459
|
+
};
|
|
4460
|
+
exports.listInboxAutomationExecutionsInputSchema = z9.object(listInboxAutomationExecutionsInputShape).strict();
|
|
4461
|
+
exports.listInboxAutomationExecutionsMcpInputSchema = z9.object({
|
|
4462
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4463
|
+
...listInboxAutomationExecutionsInputShape
|
|
4464
|
+
}).strict();
|
|
4465
|
+
exports.inboxAutomationRulesListOutputSchema = z9.object({
|
|
4466
|
+
rules: z9.array(inboxAutomationRuleSchema)
|
|
4467
|
+
}).strict();
|
|
4468
|
+
exports.inboxAutomationRuleResultOutputSchema = z9.object({
|
|
4469
|
+
rule: inboxAutomationRuleSchema
|
|
4470
|
+
}).strict();
|
|
4471
|
+
exports.deleteInboxAutomationRuleOutputSchema = z9.object({
|
|
4472
|
+
success: z9.literal(true),
|
|
4473
|
+
confirmationMode: lifecycleConfirmationModeSchema
|
|
4474
|
+
}).strict();
|
|
4475
|
+
exports.listInboxAutomationExecutionsOutputSchema = z9.object({
|
|
4476
|
+
executions: z9.array(inboxAutomationExecutionSchema),
|
|
4477
|
+
total: z9.number().int().nonnegative()
|
|
4478
|
+
}).strict();
|
|
4479
|
+
function buildDeleteInboxAutomationRuleConfirmationSummary(input) {
|
|
4480
|
+
return `Permanently delete inbox automation rule ${input.ruleId}. The rule stops matching immediately and its configuration cannot be recovered.`;
|
|
4481
|
+
}
|
|
4482
|
+
exports.INBOX_AUTOMATION_RULES_LIST_CONTRACT = {
|
|
4483
|
+
canonicalName: exports.TOOL_OPERATION_IDS.inboxAutomationRulesList,
|
|
4484
|
+
wireNames: exports.TOOL_WIRE_NAMES.inboxAutomationRulesList,
|
|
4485
|
+
description: "List the inbox auto-reply automation rules configured for a workspace, including enabled/paused state and execution counts.",
|
|
4486
|
+
inputSchema: exports.inboxAutomationRulesListInputSchema,
|
|
4487
|
+
wireInputSchemas: {
|
|
4488
|
+
mcp: exports.inboxAutomationRulesListMcpInputSchema
|
|
4489
|
+
},
|
|
4490
|
+
outputSchema: exports.inboxAutomationRulesListOutputSchema,
|
|
4491
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.inboxRead],
|
|
4492
|
+
confirmation: { required: false },
|
|
4493
|
+
idempotency: { required: false },
|
|
4494
|
+
surfaces: {
|
|
4495
|
+
mcp: {
|
|
4496
|
+
name: exports.TOOL_WIRE_NAMES.inboxAutomationRulesList.mcp,
|
|
4497
|
+
title: "List Inbox Automation Rules",
|
|
4498
|
+
description: "List the inbox auto-reply automation rules configured for a workspace, including enabled/paused state and execution counts.",
|
|
4499
|
+
scope: "mcp:read",
|
|
4500
|
+
toolsets: inboxAutomationToolsets,
|
|
4501
|
+
annotations: mcpReadAnnotations
|
|
4502
|
+
}
|
|
4503
|
+
}
|
|
4504
|
+
};
|
|
4505
|
+
exports.INBOX_AUTOMATION_RULE_GET_CONTRACT = {
|
|
4506
|
+
canonicalName: exports.TOOL_OPERATION_IDS.inboxAutomationRuleGet,
|
|
4507
|
+
wireNames: exports.TOOL_WIRE_NAMES.inboxAutomationRuleGet,
|
|
4508
|
+
description: "Get one inbox auto-reply automation rule with its full trigger, action, and safety configuration.",
|
|
4509
|
+
inputSchema: exports.inboxAutomationRuleGetInputSchema,
|
|
4510
|
+
wireInputSchemas: {
|
|
4511
|
+
mcp: exports.inboxAutomationRuleGetMcpInputSchema
|
|
4512
|
+
},
|
|
4513
|
+
outputSchema: exports.inboxAutomationRuleResultOutputSchema,
|
|
4514
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.inboxRead],
|
|
4515
|
+
confirmation: { required: false },
|
|
4516
|
+
idempotency: { required: false },
|
|
4517
|
+
surfaces: {
|
|
4518
|
+
mcp: {
|
|
4519
|
+
name: exports.TOOL_WIRE_NAMES.inboxAutomationRuleGet.mcp,
|
|
4520
|
+
title: "Get Inbox Automation Rule",
|
|
4521
|
+
description: "Get one inbox auto-reply automation rule with its full trigger, action, and safety configuration.",
|
|
4522
|
+
scope: "mcp:read",
|
|
4523
|
+
toolsets: inboxAutomationToolsets,
|
|
4524
|
+
annotations: mcpReadAnnotations
|
|
4525
|
+
}
|
|
4526
|
+
}
|
|
4527
|
+
};
|
|
4528
|
+
exports.INBOX_AUTOMATION_RULE_CREATE_CONTRACT = {
|
|
4529
|
+
canonicalName: exports.TOOL_OPERATION_IDS.inboxAutomationRuleCreate,
|
|
4530
|
+
wireNames: exports.TOOL_WIRE_NAMES.inboxAutomationRuleCreate,
|
|
4531
|
+
description: "Create an inbox auto-reply automation rule for an Instagram or Facebook account. MCP creates default to disabled so a half-configured rule never replies to real customers; enable it explicitly once configured.",
|
|
4532
|
+
inputSchema: exports.createInboxAutomationRuleInputSchema,
|
|
4533
|
+
wireInputSchemas: {
|
|
4534
|
+
mcp: exports.createInboxAutomationRuleMcpInputSchema
|
|
4535
|
+
},
|
|
4536
|
+
outputSchema: exports.inboxAutomationRuleResultOutputSchema,
|
|
4537
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.inboxAutomationManage],
|
|
4538
|
+
confirmation: { required: false },
|
|
4539
|
+
idempotency: {
|
|
4540
|
+
required: true,
|
|
4541
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.inboxAutomationRuleCreate, context.workspaceId, shortStableHash(input)].join(":")
|
|
4542
|
+
},
|
|
4543
|
+
surfaces: {
|
|
4544
|
+
mcp: {
|
|
4545
|
+
name: exports.TOOL_WIRE_NAMES.inboxAutomationRuleCreate.mcp,
|
|
4546
|
+
title: "Create Inbox Automation Rule",
|
|
4547
|
+
description: "Create an inbox auto-reply automation rule for an Instagram or Facebook account. MCP creates default to disabled so a half-configured rule never replies to real customers; enable it explicitly (enabled: true here, or via update) once configured.",
|
|
4548
|
+
scope: "mcp:write",
|
|
4549
|
+
toolsets: inboxAutomationToolsets,
|
|
4550
|
+
annotations: {
|
|
4551
|
+
readOnlyHint: false,
|
|
4552
|
+
destructiveHint: false,
|
|
4553
|
+
idempotentHint: false,
|
|
4554
|
+
openWorldHint: false
|
|
4555
|
+
}
|
|
4556
|
+
}
|
|
4557
|
+
}
|
|
4558
|
+
};
|
|
4559
|
+
exports.INBOX_AUTOMATION_RULE_UPDATE_CONTRACT = {
|
|
4560
|
+
canonicalName: exports.TOOL_OPERATION_IDS.inboxAutomationRuleUpdate,
|
|
4561
|
+
wireNames: exports.TOOL_WIRE_NAMES.inboxAutomationRuleUpdate,
|
|
4562
|
+
description: "Update an inbox auto-reply automation rule. The enabled field enables or disables the rule; enabling clears an auto-pause and resets the failure counter. Rules stay pinned to their integration; retargeting is delete + recreate.",
|
|
4563
|
+
inputSchema: exports.updateInboxAutomationRuleInputSchema,
|
|
4564
|
+
wireInputSchemas: {
|
|
4565
|
+
mcp: exports.updateInboxAutomationRuleMcpInputSchema
|
|
4566
|
+
},
|
|
4567
|
+
outputSchema: exports.inboxAutomationRuleResultOutputSchema,
|
|
4568
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.inboxAutomationManage],
|
|
4569
|
+
confirmation: { required: false },
|
|
4570
|
+
idempotency: {
|
|
4571
|
+
required: true,
|
|
4572
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.inboxAutomationRuleUpdate, context.workspaceId, input.ruleId, shortStableHash(input)].join(":")
|
|
4573
|
+
},
|
|
4574
|
+
surfaces: {
|
|
4575
|
+
mcp: {
|
|
4576
|
+
name: exports.TOOL_WIRE_NAMES.inboxAutomationRuleUpdate.mcp,
|
|
4577
|
+
title: "Update Inbox Automation Rule",
|
|
4578
|
+
description: "Update an inbox auto-reply automation rule. Set enabled to true or false to enable or disable it; enabling clears an auto-pause and resets the failure counter.",
|
|
4579
|
+
scope: "mcp:write",
|
|
4580
|
+
toolsets: inboxAutomationToolsets,
|
|
4581
|
+
annotations: {
|
|
4582
|
+
readOnlyHint: false,
|
|
4583
|
+
destructiveHint: false,
|
|
4584
|
+
idempotentHint: true,
|
|
4585
|
+
openWorldHint: false
|
|
4586
|
+
}
|
|
4587
|
+
}
|
|
4588
|
+
}
|
|
4589
|
+
};
|
|
4590
|
+
exports.INBOX_AUTOMATION_RULE_DELETE_CONTRACT = {
|
|
4591
|
+
canonicalName: exports.TOOL_OPERATION_IDS.inboxAutomationRuleDelete,
|
|
4592
|
+
wireNames: exports.TOOL_WIRE_NAMES.inboxAutomationRuleDelete,
|
|
4593
|
+
description: "Permanently delete an inbox auto-reply automation rule. High-risk: requires the exact confirmation text inbox_automation_delete:<ruleId>; dangerous auto-confirm is never honored for this action.",
|
|
4594
|
+
inputSchema: exports.deleteInboxAutomationRuleInputSchema,
|
|
4595
|
+
wireInputSchemas: {
|
|
4596
|
+
mcp: exports.deleteInboxAutomationRuleMcpInputSchema
|
|
4597
|
+
},
|
|
4598
|
+
outputSchema: exports.deleteInboxAutomationRuleOutputSchema,
|
|
4599
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.inboxAutomationManage],
|
|
4600
|
+
confirmation: {
|
|
4601
|
+
required: true,
|
|
4602
|
+
actionType: exports.TOOL_OPERATION_IDS.inboxAutomationRuleDelete,
|
|
4603
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
4604
|
+
buildSummary: (input) => buildDeleteInboxAutomationRuleConfirmationSummary(input)
|
|
4605
|
+
},
|
|
4606
|
+
idempotency: {
|
|
4607
|
+
required: true,
|
|
4608
|
+
buildKey: (input, context) => [exports.TOOL_OPERATION_IDS.inboxAutomationRuleDelete, context.workspaceId, input.ruleId, shortStableHash(input)].join(":")
|
|
4609
|
+
},
|
|
4610
|
+
surfaces: {
|
|
4611
|
+
mcp: {
|
|
4612
|
+
name: exports.TOOL_WIRE_NAMES.inboxAutomationRuleDelete.mcp,
|
|
4613
|
+
title: "Delete Inbox Automation Rule",
|
|
4614
|
+
description: "Permanently delete an inbox auto-reply automation rule. High-risk: requires the exact confirmation text inbox_automation_delete:<ruleId>; dangerous auto-confirm is never honored for this action.",
|
|
4615
|
+
scope: "mcp:write",
|
|
4616
|
+
toolsets: inboxAutomationToolsets,
|
|
4617
|
+
annotations: {
|
|
4618
|
+
readOnlyHint: false,
|
|
4619
|
+
destructiveHint: true,
|
|
4620
|
+
idempotentHint: false,
|
|
4621
|
+
openWorldHint: false
|
|
4622
|
+
}
|
|
4623
|
+
}
|
|
4624
|
+
}
|
|
4625
|
+
};
|
|
4626
|
+
exports.INBOX_AUTOMATION_EXECUTIONS_LIST_CONTRACT = {
|
|
4627
|
+
canonicalName: exports.TOOL_OPERATION_IDS.inboxAutomationExecutionsList,
|
|
4628
|
+
wireNames: exports.TOOL_WIRE_NAMES.inboxAutomationExecutionsList,
|
|
4629
|
+
description: "List the execution history of an inbox auto-reply automation rule, including per-action outcomes and pacing deferrals.",
|
|
4630
|
+
inputSchema: exports.listInboxAutomationExecutionsInputSchema,
|
|
4631
|
+
wireInputSchemas: {
|
|
4632
|
+
mcp: exports.listInboxAutomationExecutionsMcpInputSchema
|
|
4633
|
+
},
|
|
4634
|
+
outputSchema: exports.listInboxAutomationExecutionsOutputSchema,
|
|
4635
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.inboxRead],
|
|
4636
|
+
confirmation: { required: false },
|
|
4637
|
+
idempotency: { required: false },
|
|
4638
|
+
surfaces: {
|
|
4639
|
+
mcp: {
|
|
4640
|
+
name: exports.TOOL_WIRE_NAMES.inboxAutomationExecutionsList.mcp,
|
|
4641
|
+
title: "List Inbox Automation Executions",
|
|
4642
|
+
description: "List the execution history of an inbox auto-reply automation rule, including per-action outcomes and pacing deferrals.",
|
|
4643
|
+
scope: "mcp:read",
|
|
4644
|
+
toolsets: inboxAutomationToolsets,
|
|
4645
|
+
annotations: mcpReadAnnotations
|
|
4646
|
+
}
|
|
4647
|
+
}
|
|
4648
|
+
};
|
|
3057
4649
|
exports.TOOL_CONTRACTS = [
|
|
3058
4650
|
exports.WORKSPACE_SUMMARY_CONTRACT,
|
|
3059
4651
|
exports.MEMORY_LIST_CONTRACT,
|
|
@@ -3069,22 +4661,45 @@ var require_dist = __commonJS({
|
|
|
3069
4661
|
exports.CONTENT_LIST_CONTRACT,
|
|
3070
4662
|
exports.CONTENT_GET_CONTRACT,
|
|
3071
4663
|
exports.CONTENT_GET_COUNTS_CONTRACT,
|
|
4664
|
+
exports.TASK_BOARD_LIST_CONTRACT,
|
|
4665
|
+
exports.TASK_GET_CONTRACT,
|
|
4666
|
+
exports.TASK_LIST_FOR_POST_CONTRACT,
|
|
4667
|
+
exports.TASK_LIST_ARCHIVED_CONTRACT,
|
|
4668
|
+
exports.TASK_CREATE_CONTRACT,
|
|
4669
|
+
exports.TASK_UPDATE_CONTRACT,
|
|
4670
|
+
exports.TASK_MOVE_CONTRACT,
|
|
4671
|
+
exports.TASK_ARCHIVE_CONTRACT,
|
|
4672
|
+
exports.TASK_RESTORE_CONTRACT,
|
|
4673
|
+
exports.TASK_DELETE_CONTRACT,
|
|
4674
|
+
exports.TASK_COMMENT_CREATE_CONTRACT,
|
|
4675
|
+
exports.TASK_CHECKLIST_ITEM_CREATE_CONTRACT,
|
|
4676
|
+
exports.TASK_CHECKLIST_ITEM_UPDATE_CONTRACT,
|
|
4677
|
+
exports.TASK_CHECKLIST_ITEM_MOVE_CONTRACT,
|
|
4678
|
+
exports.TASK_CHECKLIST_ITEM_DELETE_CONTRACT,
|
|
3072
4679
|
exports.INTEGRATIONS_LIST_CONTRACT,
|
|
3073
4680
|
exports.INTEGRATIONS_GET_CAPABILITIES_CONTRACT,
|
|
3074
4681
|
exports.INTEGRATIONS_GET_OPTIONS_CONTRACT,
|
|
3075
4682
|
exports.TAXONOMY_LIST_CONTRACT,
|
|
3076
4683
|
exports.CAMPAIGNS_LIST_CONTRACT,
|
|
3077
4684
|
exports.HASHTAG_GROUPS_LIST_CONTRACT,
|
|
4685
|
+
// No Workbench command exists on any package surface (Maeve agent, CLI,
|
|
4686
|
+
// MCP). Document 06 removed the dormant Workbench list/get/patch contracts
|
|
4687
|
+
// entirely; future Workbench tools require a separate approved plan.
|
|
3078
4688
|
exports.CONTENT_CREATE_DRAFT_CONTRACT,
|
|
4689
|
+
exports.CONTENT_CREATE_DRAFTS_CONTRACT,
|
|
3079
4690
|
exports.CONTENT_UPDATE_DRAFT_CONTRACT,
|
|
3080
4691
|
exports.CONTENT_UPDATE_METADATA_CONTRACT,
|
|
3081
4692
|
exports.CONTENT_UPDATE_NOTES_CONTRACT,
|
|
3082
4693
|
exports.CONTENT_SCHEDULE_CONTRACT,
|
|
4694
|
+
exports.CONTENT_SCHEDULE_BATCH_CONTRACT,
|
|
4695
|
+
exports.CONTENT_UNSCHEDULE_CONTRACT,
|
|
3083
4696
|
exports.CONTENT_PUBLISH_NOW_CONTRACT,
|
|
4697
|
+
exports.CONTENT_PUBLISH_NOW_BATCH_CONTRACT,
|
|
3084
4698
|
exports.CONTENT_ARCHIVE_CONTRACT,
|
|
3085
4699
|
exports.CONTENT_RESTORE_CONTRACT,
|
|
3086
4700
|
exports.CONTENT_RETRY_CONTRACT,
|
|
3087
4701
|
exports.CONTENT_DELETE_CONTRACT,
|
|
4702
|
+
exports.CONTENT_DELETE_BATCH_CONTRACT,
|
|
3088
4703
|
exports.CONTENT_SET_INTENDED_PUBLISH_TIME_CONTRACT,
|
|
3089
4704
|
exports.MEDIA_LIST_CONTRACT,
|
|
3090
4705
|
exports.MEDIA_LIST_FOLDERS_CONTRACT,
|
|
@@ -3099,7 +4714,13 @@ var require_dist = __commonJS({
|
|
|
3099
4714
|
exports.ANALYTICS_GET_POSTS_CONTRACT,
|
|
3100
4715
|
exports.ANALYTICS_GET_POSTS_AGGREGATE_CONTRACT,
|
|
3101
4716
|
exports.ANALYTICS_GET_POST_CONTRACT,
|
|
3102
|
-
exports.ANALYTICS_GET_DEMOGRAPHICS_CONTRACT
|
|
4717
|
+
exports.ANALYTICS_GET_DEMOGRAPHICS_CONTRACT,
|
|
4718
|
+
exports.INBOX_AUTOMATION_RULES_LIST_CONTRACT,
|
|
4719
|
+
exports.INBOX_AUTOMATION_RULE_GET_CONTRACT,
|
|
4720
|
+
exports.INBOX_AUTOMATION_RULE_CREATE_CONTRACT,
|
|
4721
|
+
exports.INBOX_AUTOMATION_RULE_UPDATE_CONTRACT,
|
|
4722
|
+
exports.INBOX_AUTOMATION_RULE_DELETE_CONTRACT,
|
|
4723
|
+
exports.INBOX_AUTOMATION_EXECUTIONS_LIST_CONTRACT
|
|
3103
4724
|
];
|
|
3104
4725
|
}
|
|
3105
4726
|
});
|
|
@@ -4407,16 +6028,22 @@ var threadsReplyControlValues = [
|
|
|
4407
6028
|
"parent_post_author_only",
|
|
4408
6029
|
"followers_only"
|
|
4409
6030
|
];
|
|
6031
|
+
var googleBusinessProfilePostTypes = ["standard", "event", "offer"];
|
|
6032
|
+
var googleBusinessProfileCtaTypes = ["book", "order", "shop", "learn_more", "sign_up", "call"];
|
|
4410
6033
|
var settingsSchema = z4.object({
|
|
4411
6034
|
collaborators: z4.array(z4.string()).optional(),
|
|
4412
6035
|
locationId: z4.string().optional(),
|
|
6036
|
+
trialReel: z4.boolean().optional(),
|
|
6037
|
+
trialReelGraduationStrategy: z4.enum(["manual", "automatic"]).optional(),
|
|
6038
|
+
audio_id: z4.string().optional(),
|
|
6039
|
+
audio_volume: z4.number().min(0).max(100).optional(),
|
|
6040
|
+
video_volume: z4.number().min(0).max(100).optional(),
|
|
4413
6041
|
facebookLinkUrl: z4.string().optional(),
|
|
4414
6042
|
facebookCtaType: z4.enum(facebookPagePostCtaTypes).optional(),
|
|
4415
6043
|
facebookLocationId: z4.string().optional(),
|
|
4416
6044
|
xCommunityUrl: z4.string().optional(),
|
|
4417
6045
|
topicTag: z4.string().optional(),
|
|
4418
6046
|
linkAttachment: z4.string().optional(),
|
|
4419
|
-
isGhostPost: z4.boolean().optional(),
|
|
4420
6047
|
replyControl: z4.enum(threadsReplyControlValues).optional(),
|
|
4421
6048
|
privacy_level: z4.string().optional(),
|
|
4422
6049
|
disable_comment: z4.boolean().optional(),
|
|
@@ -4428,6 +6055,7 @@ var settingsSchema = z4.object({
|
|
|
4428
6055
|
tiktok_post_to_drafts: z4.boolean().optional(),
|
|
4429
6056
|
photo_cover_index: z4.number().optional(),
|
|
4430
6057
|
auto_add_music: z4.boolean().optional(),
|
|
6058
|
+
tiktok_music: z4.record(z4.string(), z4.unknown()).optional(),
|
|
4431
6059
|
privacyStatus: z4.enum(["public", "unlisted", "private"]).optional(),
|
|
4432
6060
|
categoryId: z4.string().optional(),
|
|
4433
6061
|
tags: z4.array(z4.string()).optional(),
|
|
@@ -4437,7 +6065,17 @@ var settingsSchema = z4.object({
|
|
|
4437
6065
|
license: z4.enum(["youtube", "creativeCommon"]).optional(),
|
|
4438
6066
|
boardId: z4.string().optional(),
|
|
4439
6067
|
link: z4.string().optional(),
|
|
4440
|
-
altText: z4.string().optional()
|
|
6068
|
+
altText: z4.string().optional(),
|
|
6069
|
+
googlePostType: z4.enum(googleBusinessProfilePostTypes).optional(),
|
|
6070
|
+
googleCallToActionType: z4.enum(googleBusinessProfileCtaTypes).optional(),
|
|
6071
|
+
googleCallToActionUrl: z4.string().optional(),
|
|
6072
|
+
googleEventTitle: z4.string().optional(),
|
|
6073
|
+
googleEventStartAt: z4.string().optional(),
|
|
6074
|
+
googleEventEndAt: z4.string().optional(),
|
|
6075
|
+
googleOfferCouponCode: z4.string().optional(),
|
|
6076
|
+
googleOfferRedeemOnlineUrl: z4.string().optional(),
|
|
6077
|
+
googleOfferTerms: z4.string().optional(),
|
|
6078
|
+
googleLanguageCode: z4.string().optional()
|
|
4441
6079
|
}).strict().superRefine((settings, context) => {
|
|
4442
6080
|
for (const key of unsupportedSettingsKeys) {
|
|
4443
6081
|
if (Object.prototype.hasOwnProperty.call(settings, key)) {
|
|
@@ -4459,7 +6097,14 @@ var createContentBaseSchema = z4.object({
|
|
|
4459
6097
|
contentMedia: contentMediaSchema.optional(),
|
|
4460
6098
|
scheduledAt: isoWithTimezone.optional(),
|
|
4461
6099
|
settings: settingsSchema,
|
|
4462
|
-
postType: z4.enum(["post", "reel", "story", "thread"]).optional(),
|
|
6100
|
+
postType: z4.enum(["post", "reel", "story", "thread", "poll"]).optional(),
|
|
6101
|
+
poll: z4.object({
|
|
6102
|
+
question: z4.string().min(1).max(140),
|
|
6103
|
+
options: z4.array(z4.object({ text: z4.string().min(1).max(30) }).strict()).min(2).max(4),
|
|
6104
|
+
duration: z4.enum(["ONE_DAY", "THREE_DAYS", "SEVEN_DAYS", "FOURTEEN_DAYS"]),
|
|
6105
|
+
voteSelectionType: z4.literal("SINGLE_VOTE").optional(),
|
|
6106
|
+
isVoterVisibleToAuthor: z4.literal(true).optional()
|
|
6107
|
+
}).strict().nullable().optional(),
|
|
4463
6108
|
firstComment: z4.string().optional(),
|
|
4464
6109
|
shareToFeed: z4.boolean().optional(),
|
|
4465
6110
|
pillarIds: z4.array(uuid4).optional(),
|
|
@@ -5933,6 +7578,181 @@ function registerTaxonomyCommands(program) {
|
|
|
5933
7578
|
});
|
|
5934
7579
|
}
|
|
5935
7580
|
|
|
7581
|
+
// src/tasks-schema.ts
|
|
7582
|
+
var import_tool_contracts2 = __toESM(require_dist(), 1);
|
|
7583
|
+
var createTaskSchema = import_tool_contracts2.createTaskBodySchema;
|
|
7584
|
+
var updateTaskSchema = import_tool_contracts2.updateTaskBodySchema;
|
|
7585
|
+
var moveTaskSchema = import_tool_contracts2.moveTaskBodySchema;
|
|
7586
|
+
var createTaskCommentSchema = import_tool_contracts2.createTaskCommentBodySchema;
|
|
7587
|
+
var createTaskChecklistItemSchema = import_tool_contracts2.createTaskChecklistItemBodySchema;
|
|
7588
|
+
var updateTaskChecklistItemSchema = import_tool_contracts2.updateTaskChecklistItemBodySchema;
|
|
7589
|
+
var moveTaskChecklistItemSchema = import_tool_contracts2.moveTaskChecklistItemBodySchema;
|
|
7590
|
+
|
|
7591
|
+
// src/commands/tasks.ts
|
|
7592
|
+
function registerTaskCommands(program) {
|
|
7593
|
+
addConnectionOptions(program.command("tasks:list")).description("List task board columns, active tasks, and members for a workspace.").requiredOption("-w, --workspace <id>", "Workspace ID.").action(async (options, command) => {
|
|
7594
|
+
const client = createApiClient(resolveConfig(command));
|
|
7595
|
+
writeRawJson(await client.request("GET", `/v1/workspaces/${options.workspace}/task-board`));
|
|
7596
|
+
});
|
|
7597
|
+
addConnectionOptions(program.command("tasks:archive")).description("List archived task board tasks.").requiredOption("-w, --workspace <id>", "Workspace ID.").option("--limit <number>", "Page size.").option("--cursor <cursor>", "Pagination cursor.").action(async (options, command) => {
|
|
7598
|
+
const client = createApiClient(resolveConfig(command));
|
|
7599
|
+
writeRawJson(
|
|
7600
|
+
await client.request("GET", `/v1/workspaces/${options.workspace}/task-board/archive`, {
|
|
7601
|
+
query: { limit: options.limit, cursor: options.cursor }
|
|
7602
|
+
})
|
|
7603
|
+
);
|
|
7604
|
+
});
|
|
7605
|
+
addConnectionOptions(program.command("tasks:get")).description("Get one task board task with checklist items and optional comments or activity.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").option("--include-comments", "Include task comments.").option("--include-activity", "Include task activity.").option("--activity-limit <number>", "Activity page size.").option("--activity-cursor <cursor>", "Activity pagination cursor.").action(async (options, command) => {
|
|
7606
|
+
const client = createApiClient(resolveConfig(command));
|
|
7607
|
+
writeRawJson(
|
|
7608
|
+
await client.request("GET", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}`, {
|
|
7609
|
+
query: {
|
|
7610
|
+
includeComments: options.includeComments,
|
|
7611
|
+
includeActivity: options.includeActivity,
|
|
7612
|
+
activityLimit: options.activityLimit,
|
|
7613
|
+
activityCursor: options.activityCursor
|
|
7614
|
+
}
|
|
7615
|
+
})
|
|
7616
|
+
);
|
|
7617
|
+
});
|
|
7618
|
+
addConnectionOptions(program.command("tasks:for-post")).description("List active task board tasks linked to a content post.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--post-id <postId>", "Content post ID.").action(async (options, command) => {
|
|
7619
|
+
const client = createApiClient(resolveConfig(command));
|
|
7620
|
+
writeRawJson(
|
|
7621
|
+
await client.request("GET", `/v1/workspaces/${options.workspace}/task-board/posts/${options.postId}/tasks`)
|
|
7622
|
+
);
|
|
7623
|
+
});
|
|
7624
|
+
addConnectionOptions(program.command("tasks:linkable-posts")).description("List content posts that can be linked to task board tasks.").requiredOption("-w, --workspace <id>", "Workspace ID.").option("--query <text>", "Search text.").option("--limit <number>", "Page size.").option("--sort <sort>", "Sort order: suggested, recent, created, or title.").option("--stage <stage>", "Filter by stage: idea, drafting, review, scheduled, or published.").option("--board <filter>", "Filter by content board placement: on_board or off_board.").action(async (options, command) => {
|
|
7625
|
+
const client = createApiClient(resolveConfig(command));
|
|
7626
|
+
writeRawJson(
|
|
7627
|
+
await client.request("GET", `/v1/workspaces/${options.workspace}/task-board/linkable-posts`, {
|
|
7628
|
+
query: {
|
|
7629
|
+
query: options.query,
|
|
7630
|
+
limit: options.limit,
|
|
7631
|
+
sort: options.sort,
|
|
7632
|
+
stage: options.stage,
|
|
7633
|
+
board: options.board
|
|
7634
|
+
}
|
|
7635
|
+
})
|
|
7636
|
+
);
|
|
7637
|
+
});
|
|
7638
|
+
addConnectionOptions(program.command("tasks:comments")).description("List comments for one task board task.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").action(async (options, command) => {
|
|
7639
|
+
const client = createApiClient(resolveConfig(command));
|
|
7640
|
+
writeRawJson(
|
|
7641
|
+
await client.request("GET", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/comments`)
|
|
7642
|
+
);
|
|
7643
|
+
});
|
|
7644
|
+
addConnectionOptions(program.command("tasks:activity")).description("List activity for one task board task.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").option("--limit <number>", "Page size.").option("--cursor <cursor>", "Pagination cursor.").action(async (options, command) => {
|
|
7645
|
+
const client = createApiClient(resolveConfig(command));
|
|
7646
|
+
writeRawJson(
|
|
7647
|
+
await client.request("GET", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/activity`, {
|
|
7648
|
+
query: { limit: options.limit, cursor: options.cursor }
|
|
7649
|
+
})
|
|
7650
|
+
);
|
|
7651
|
+
});
|
|
7652
|
+
addConnectionOptions(program.command("tasks:create")).description("Create a task board task from a JSON payload.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--json <file>", "JSON file with the task payload.").action(async (options, command) => {
|
|
7653
|
+
const payload = createTaskSchema.parse(await readJsonFile(options.json));
|
|
7654
|
+
const client = createApiClient(resolveConfig(command));
|
|
7655
|
+
writeRawJson(
|
|
7656
|
+
await client.request("POST", `/v1/workspaces/${options.workspace}/task-board/tasks`, { body: payload })
|
|
7657
|
+
);
|
|
7658
|
+
});
|
|
7659
|
+
addConnectionOptions(program.command("tasks:update")).description("Update a task board task from a JSON payload. Archived tasks are read-only until restored.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--json <file>", "JSON file with the fields to change.").action(async (options, command) => {
|
|
7660
|
+
const payload = updateTaskSchema.parse(await readJsonFile(options.json));
|
|
7661
|
+
const client = createApiClient(resolveConfig(command));
|
|
7662
|
+
writeRawJson(
|
|
7663
|
+
await client.request("PATCH", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}`, {
|
|
7664
|
+
body: payload
|
|
7665
|
+
})
|
|
7666
|
+
);
|
|
7667
|
+
});
|
|
7668
|
+
addConnectionOptions(program.command("tasks:move")).description("Move a task board task to a column, optionally anchored before or after another task.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--json <file>", "JSON file with targetColumnId and optional beforeTaskId/afterTaskId.").action(async (options, command) => {
|
|
7669
|
+
const payload = moveTaskSchema.parse(await readJsonFile(options.json));
|
|
7670
|
+
const client = createApiClient(resolveConfig(command));
|
|
7671
|
+
writeRawJson(
|
|
7672
|
+
await client.request("PATCH", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/move`, {
|
|
7673
|
+
body: payload
|
|
7674
|
+
})
|
|
7675
|
+
);
|
|
7676
|
+
});
|
|
7677
|
+
addConnectionOptions(program.command("tasks:archive-task")).description("Archive a task board task. Archived tasks are read-only and recoverable with tasks:restore.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").action(async (options, command) => {
|
|
7678
|
+
const client = createApiClient(resolveConfig(command));
|
|
7679
|
+
writeRawJson(
|
|
7680
|
+
await client.request("POST", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/archive`)
|
|
7681
|
+
);
|
|
7682
|
+
});
|
|
7683
|
+
addConnectionOptions(program.command("tasks:restore")).description("Restore an archived task board task to the top of its column.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").action(async (options, command) => {
|
|
7684
|
+
const client = createApiClient(resolveConfig(command));
|
|
7685
|
+
writeRawJson(
|
|
7686
|
+
await client.request("POST", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/restore`)
|
|
7687
|
+
);
|
|
7688
|
+
});
|
|
7689
|
+
addConnectionOptions(program.command("tasks:delete")).description("Delete a task board task. Deleted tasks cannot be restored.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").option("--yes", "Confirm permanent task deletion.").action(async (options, command) => {
|
|
7690
|
+
if (!options.yes) {
|
|
7691
|
+
throw new CliError("tasks:delete requires --yes because deleted tasks cannot be restored.", {
|
|
7692
|
+
code: "INVALID_OPTIONS"
|
|
7693
|
+
});
|
|
7694
|
+
}
|
|
7695
|
+
const client = createApiClient(resolveConfig(command));
|
|
7696
|
+
writeRawJson(await client.request("DELETE", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}`));
|
|
7697
|
+
});
|
|
7698
|
+
addConnectionOptions(program.command("tasks:comments:create")).description("Add a comment to a task board task. @mentions notify workspace members.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--json <file>", "JSON file with the comment content.").action(async (options, command) => {
|
|
7699
|
+
const payload = createTaskCommentSchema.parse(await readJsonFile(options.json));
|
|
7700
|
+
const client = createApiClient(resolveConfig(command));
|
|
7701
|
+
writeRawJson(
|
|
7702
|
+
await client.request("POST", `/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/comments`, {
|
|
7703
|
+
body: payload
|
|
7704
|
+
})
|
|
7705
|
+
);
|
|
7706
|
+
});
|
|
7707
|
+
addConnectionOptions(program.command("tasks:checklist:create")).description("Add a checklist item to a task board task.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--json <file>", "JSON file with the checklist item title and optional anchors.").action(async (options, command) => {
|
|
7708
|
+
const payload = createTaskChecklistItemSchema.parse(await readJsonFile(options.json));
|
|
7709
|
+
const client = createApiClient(resolveConfig(command));
|
|
7710
|
+
writeRawJson(
|
|
7711
|
+
await client.request(
|
|
7712
|
+
"POST",
|
|
7713
|
+
`/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/checklist-items`,
|
|
7714
|
+
{ body: payload }
|
|
7715
|
+
)
|
|
7716
|
+
);
|
|
7717
|
+
});
|
|
7718
|
+
addConnectionOptions(program.command("tasks:checklist:update")).description("Update a checklist item title or completion state.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--item <itemId>", "Checklist item ID.").requiredOption("--json <file>", "JSON file with the fields to change.").action(async (options, command) => {
|
|
7719
|
+
const payload = updateTaskChecklistItemSchema.parse(await readJsonFile(options.json));
|
|
7720
|
+
const client = createApiClient(resolveConfig(command));
|
|
7721
|
+
writeRawJson(
|
|
7722
|
+
await client.request(
|
|
7723
|
+
"PATCH",
|
|
7724
|
+
`/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/checklist-items/${options.item}`,
|
|
7725
|
+
{ body: payload }
|
|
7726
|
+
)
|
|
7727
|
+
);
|
|
7728
|
+
});
|
|
7729
|
+
addConnectionOptions(program.command("tasks:checklist:move")).description("Reorder a checklist item, anchored before or after another item.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--item <itemId>", "Checklist item ID.").requiredOption("--json <file>", "JSON file with beforeItemId and/or afterItemId (empty object moves to top).").action(async (options, command) => {
|
|
7730
|
+
const payload = moveTaskChecklistItemSchema.parse(await readJsonFile(options.json));
|
|
7731
|
+
const client = createApiClient(resolveConfig(command));
|
|
7732
|
+
writeRawJson(
|
|
7733
|
+
await client.request(
|
|
7734
|
+
"PATCH",
|
|
7735
|
+
`/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/checklist-items/${options.item}/move`,
|
|
7736
|
+
{ body: payload }
|
|
7737
|
+
)
|
|
7738
|
+
);
|
|
7739
|
+
});
|
|
7740
|
+
addConnectionOptions(program.command("tasks:checklist:delete")).description("Delete a checklist item from a task board task.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <taskId>", "Task ID.").requiredOption("--item <itemId>", "Checklist item ID.").option("--yes", "Confirm checklist item deletion.").action(async (options, command) => {
|
|
7741
|
+
if (!options.yes) {
|
|
7742
|
+
throw new CliError("tasks:checklist:delete requires --yes because it permanently removes the item.", {
|
|
7743
|
+
code: "INVALID_OPTIONS"
|
|
7744
|
+
});
|
|
7745
|
+
}
|
|
7746
|
+
const client = createApiClient(resolveConfig(command));
|
|
7747
|
+
writeRawJson(
|
|
7748
|
+
await client.request(
|
|
7749
|
+
"DELETE",
|
|
7750
|
+
`/v1/workspaces/${options.workspace}/task-board/tasks/${options.id}/checklist-items/${options.item}`
|
|
7751
|
+
)
|
|
7752
|
+
);
|
|
7753
|
+
});
|
|
7754
|
+
}
|
|
7755
|
+
|
|
5936
7756
|
// src/commands/workspaces.ts
|
|
5937
7757
|
function registerWorkspaceCommands(program) {
|
|
5938
7758
|
addConnectionOptions(program.command("workspaces:list")).description("List workspaces accessible to the API key.").action(async (_options, command) => {
|
|
@@ -5967,6 +7787,7 @@ function createProgram() {
|
|
|
5967
7787
|
registerCampaignCommands(program);
|
|
5968
7788
|
registerStrategyCommands(program);
|
|
5969
7789
|
registerTaxonomyCommands(program);
|
|
7790
|
+
registerTaskCommands(program);
|
|
5970
7791
|
registerHashtagCommands(program);
|
|
5971
7792
|
registerAnalyticsCommands(program);
|
|
5972
7793
|
registerInboxCommands(program);
|