@studiometa/productive-mcp 0.10.8 → 0.10.10
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 +9 -7
- package/dist/auth.js +2 -0
- package/dist/auth.js.map +1 -1
- package/dist/crypto.js +2 -0
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/handlers/activities.d.ts +99 -3
- package/dist/handlers/activities.d.ts.map +1 -1
- package/dist/handlers/attachments.d.ts +99 -3
- package/dist/handlers/attachments.d.ts.map +1 -1
- package/dist/handlers/bookings.d.ts +99 -3
- package/dist/handlers/bookings.d.ts.map +1 -1
- package/dist/handlers/comments.d.ts +99 -3
- package/dist/handlers/comments.d.ts.map +1 -1
- package/dist/handlers/companies.d.ts +99 -3
- package/dist/handlers/companies.d.ts.map +1 -1
- package/dist/handlers/custom-fields.d.ts +99 -3
- package/dist/handlers/custom-fields.d.ts.map +1 -1
- package/dist/handlers/deals.d.ts +99 -3
- package/dist/handlers/deals.d.ts.map +1 -1
- package/dist/handlers/discussions.d.ts +99 -3
- package/dist/handlers/discussions.d.ts.map +1 -1
- package/dist/handlers/help.d.ts.map +1 -1
- package/dist/handlers/pages.d.ts +99 -3
- package/dist/handlers/pages.d.ts.map +1 -1
- package/dist/handlers/projects.d.ts +99 -3
- package/dist/handlers/projects.d.ts.map +1 -1
- package/dist/handlers/schema.d.ts.map +1 -1
- package/dist/handlers/services.d.ts +99 -3
- package/dist/handlers/services.d.ts.map +1 -1
- package/dist/handlers/tasks.d.ts +99 -3
- package/dist/handlers/tasks.d.ts.map +1 -1
- package/dist/handlers/time.d.ts +99 -3
- package/dist/handlers/time.d.ts.map +1 -1
- package/dist/handlers/timers.d.ts +99 -3
- package/dist/handlers/timers.d.ts.map +1 -1
- package/dist/handlers/types.d.ts +1 -0
- package/dist/handlers/types.d.ts.map +1 -1
- package/dist/{handlers-t95fhdps.js → handlers-vtRpc-Lx.js} +101 -25
- package/dist/handlers-vtRpc-Lx.js.map +1 -0
- package/dist/handlers.js +1 -1
- package/dist/http-CVE4qtko.js +6541 -0
- package/dist/http-CVE4qtko.js.map +1 -0
- package/dist/http.d.ts +12 -7
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +2 -159
- package/dist/index.js +4 -3
- package/dist/oauth.d.ts +9 -9
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +41 -149
- package/dist/oauth.js.map +1 -1
- package/dist/schema.d.ts +62 -62
- package/dist/server.js +6 -5
- package/dist/server.js.map +1 -1
- package/dist/{stdio-Bi1Lvp8O.js → stdio-BFK9AcdQ.js} +9 -3
- package/dist/{stdio-Bi1Lvp8O.js.map → stdio-BFK9AcdQ.js.map} +1 -1
- package/dist/stdio.d.ts +4 -4
- package/dist/stdio.js +1 -2
- package/dist/tools.js +4 -2
- package/dist/tools.js.map +1 -1
- package/dist/{version-DpBFJ7eV.js → version-Cy8UEAT1.js} +13 -7
- package/dist/{version-DpBFJ7eV.js.map → version-Cy8UEAT1.js.map} +1 -1
- package/package.json +10 -18
- package/dist/handlers-t95fhdps.js.map +0 -1
- package/dist/http.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProductiveApi, formatActivity, formatAttachment, formatBooking, formatComment, formatCompany, formatCustomField, formatDeal, formatDiscussion, formatListResponse, formatPage, formatPerson, formatProject, formatService, formatTask, formatTimeEntry, formatTimer } from "@studiometa/productive-api";
|
|
2
|
-
import { RESOURCES, ResolveError, VALID_REPORT_TYPES, completeTask, createBooking, createComment, createCompany, createDeal, createDiscussion, createPage, createTask, createTimeEntry, deleteAttachment, deleteDiscussion, deletePage, deleteTimeEntry, fromHandlerContext, getAttachment, getBooking, getComment, getCompany, getCustomField, getDeal, getDealContext, getDiscussion, getMyDaySummary, getPage, getPerson, getProject, getProjectContext, getProjectHealthSummary, getReport, getTask, getTaskContext, getTeamPulseSummary, getTimeEntry, getTimer, listActivities, listAttachments, listBookings, listComments, listCompanies, listCustomFields, listDeals, listDiscussions, listPages, listPeople, listProjects, listServices, listTasks, listTimeEntries, listTimers, logDay, reopenDiscussion, resolveDiscussion, resolveResource, startTimer, stopTimer, updateBooking, updateComment, updateCompany, updateDeal, updateDiscussion, updatePage, updateTask, updateTimeEntry, weeklyStandup } from "@studiometa/productive-core";
|
|
2
|
+
import { RESOURCES, ResolveError, VALID_REPORT_TYPES, completeTask, createBooking, createComment, createCompany, createDeal, createDiscussion, createPage, createTask, createTimeEntry, deleteAttachment, deleteDiscussion, deletePage, deleteTimeEntry, fromHandlerContext, getAttachment, getBooking, getComment, getCompany, getCustomField, getDeal, getDealContext, getDiscussion, getMyDaySummary, getPage, getPerson, getProject, getProjectContext, getProjectHealthSummary, getReport, getService, getTask, getTaskContext, getTeamPulseSummary, getTimeEntry, getTimer, listActivities, listAttachments, listBookings, listComments, listCompanies, listCustomFields, listDeals, listDiscussions, listPages, listPeople, listProjects, listServices, listTasks, listTimeEntries, listTimers, logDay, reopenDiscussion, resolveDiscussion, resolveResource, startTimer, stopTimer, updateBooking, updateComment, updateCompany, updateDeal, updateDiscussion, updatePage, updateTask, updateTimeEntry, weeklyStandup } from "@studiometa/productive-core";
|
|
3
|
+
//#region src/errors.ts
|
|
3
4
|
/**
|
|
4
5
|
* Custom error classes for MCP server
|
|
5
6
|
*
|
|
@@ -31,7 +32,7 @@ var UserInputError = class extends Error {
|
|
|
31
32
|
/**
|
|
32
33
|
* Error messages with guidance for common validation failures
|
|
33
34
|
*/
|
|
34
|
-
|
|
35
|
+
var ErrorMessages = {
|
|
35
36
|
missingId: (action) => new UserInputError(`id is required for ${action} action`, [`Use action="list" first to find the resource ID`, `Then use action="${action}" with the id parameter`]),
|
|
36
37
|
missingRequiredFields: (resource, fields) => new UserInputError(`${fields.join(", ")} ${fields.length === 1 ? "is" : "are"} required for creating ${resource}`, [`Provide all required fields: ${fields.join(", ")}`, `Use action="help" for detailed documentation on ${resource}`]),
|
|
37
38
|
invalidAction: (action, resource, validActions) => new UserInputError(`Invalid action "${action}" for ${resource}`, [`Valid actions are: ${validActions.join(", ")}`, `Use action="help" with resource="${resource}" for detailed documentation`]),
|
|
@@ -69,6 +70,8 @@ const ErrorMessages = {
|
|
|
69
70
|
function isUserInputError(error) {
|
|
70
71
|
return error instanceof UserInputError;
|
|
71
72
|
}
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/formatters.ts
|
|
72
75
|
/**
|
|
73
76
|
* Response formatters for agent-friendly output
|
|
74
77
|
*
|
|
@@ -265,6 +268,8 @@ function formatListResponse$1(data, formatter, meta, options) {
|
|
|
265
268
|
included: options?.included
|
|
266
269
|
});
|
|
267
270
|
}
|
|
271
|
+
//#endregion
|
|
272
|
+
//#region src/hints.ts
|
|
268
273
|
/**
|
|
269
274
|
* Generate hints for a task
|
|
270
275
|
*/
|
|
@@ -841,6 +846,8 @@ function getTimerHints(timerId, serviceId) {
|
|
|
841
846
|
});
|
|
842
847
|
return hints;
|
|
843
848
|
}
|
|
849
|
+
//#endregion
|
|
850
|
+
//#region src/suggestions.ts
|
|
844
851
|
/**
|
|
845
852
|
* Get today's date string in YYYY-MM-DD format
|
|
846
853
|
*/
|
|
@@ -937,6 +944,8 @@ function getMyDaySuggestions(data) {
|
|
|
937
944
|
}
|
|
938
945
|
return suggestions;
|
|
939
946
|
}
|
|
947
|
+
//#endregion
|
|
948
|
+
//#region src/handlers/utils.ts
|
|
940
949
|
/**
|
|
941
950
|
* Helper to create a successful JSON response
|
|
942
951
|
*/
|
|
@@ -988,6 +997,8 @@ function toStringFilter(filter) {
|
|
|
988
997
|
for (const [key, value] of Object.entries(filter)) if (value !== void 0 && value !== null) result[key] = String(value);
|
|
989
998
|
return Object.keys(result).length > 0 ? result : void 0;
|
|
990
999
|
}
|
|
1000
|
+
//#endregion
|
|
1001
|
+
//#region src/handlers/resolve.ts
|
|
991
1002
|
/**
|
|
992
1003
|
* Resolve handler for MCP.
|
|
993
1004
|
*
|
|
@@ -1018,6 +1029,8 @@ async function handleResolve(args, ctx) {
|
|
|
1018
1029
|
throw error;
|
|
1019
1030
|
}
|
|
1020
1031
|
}
|
|
1032
|
+
//#endregion
|
|
1033
|
+
//#region src/handlers/factory.ts
|
|
1021
1034
|
/**
|
|
1022
1035
|
* Merge user includes with defaults, ensuring no duplicates
|
|
1023
1036
|
*/
|
|
@@ -1148,10 +1161,12 @@ function createResourceHandler(config) {
|
|
|
1148
1161
|
return inputErrorResult(ErrorMessages.invalidAction(action, resource, actions));
|
|
1149
1162
|
};
|
|
1150
1163
|
}
|
|
1164
|
+
//#endregion
|
|
1165
|
+
//#region src/handlers/deals.ts
|
|
1151
1166
|
/**
|
|
1152
1167
|
* Deals MCP handler.
|
|
1153
1168
|
*/
|
|
1154
|
-
|
|
1169
|
+
var handleDeals = createResourceHandler({
|
|
1155
1170
|
resource: "deals",
|
|
1156
1171
|
displayName: "deal",
|
|
1157
1172
|
actions: [
|
|
@@ -1202,6 +1217,8 @@ const handleDeals = createResourceHandler({
|
|
|
1202
1217
|
update: updateDeal
|
|
1203
1218
|
}
|
|
1204
1219
|
});
|
|
1220
|
+
//#endregion
|
|
1221
|
+
//#region src/handlers/people.ts
|
|
1205
1222
|
/**
|
|
1206
1223
|
* People MCP handler.
|
|
1207
1224
|
*/
|
|
@@ -1258,6 +1275,8 @@ async function handlePeople(action, args, ctx, credentials) {
|
|
|
1258
1275
|
}
|
|
1259
1276
|
return inputErrorResult(ErrorMessages.invalidAction(action, "people", VALID_ACTIONS$3));
|
|
1260
1277
|
}
|
|
1278
|
+
//#endregion
|
|
1279
|
+
//#region src/handlers/projects.ts
|
|
1261
1280
|
/**
|
|
1262
1281
|
* Projects MCP handler.
|
|
1263
1282
|
*
|
|
@@ -1268,7 +1287,7 @@ async function handlePeople(action, args, ctx, credentials) {
|
|
|
1268
1287
|
*
|
|
1269
1288
|
* Supports: list, get, resolve, context
|
|
1270
1289
|
*/
|
|
1271
|
-
|
|
1290
|
+
var handleProjects = createResourceHandler({
|
|
1272
1291
|
resource: "projects",
|
|
1273
1292
|
actions: [
|
|
1274
1293
|
"list",
|
|
@@ -1301,6 +1320,8 @@ const handleProjects = createResourceHandler({
|
|
|
1301
1320
|
get: getProject
|
|
1302
1321
|
}
|
|
1303
1322
|
});
|
|
1323
|
+
//#endregion
|
|
1324
|
+
//#region src/handlers/schema.ts
|
|
1304
1325
|
/**
|
|
1305
1326
|
* Schema definitions for all resources.
|
|
1306
1327
|
*
|
|
@@ -1377,6 +1398,12 @@ var RESOURCE_SCHEMAS = {
|
|
|
1377
1398
|
type: "string"
|
|
1378
1399
|
}
|
|
1379
1400
|
},
|
|
1401
|
+
update: [
|
|
1402
|
+
"time",
|
|
1403
|
+
"billable_time",
|
|
1404
|
+
"date",
|
|
1405
|
+
"note"
|
|
1406
|
+
],
|
|
1380
1407
|
includes: [
|
|
1381
1408
|
"person",
|
|
1382
1409
|
"service",
|
|
@@ -1812,6 +1839,8 @@ function handleSchemaOverview() {
|
|
|
1812
1839
|
}))
|
|
1813
1840
|
});
|
|
1814
1841
|
}
|
|
1842
|
+
//#endregion
|
|
1843
|
+
//#region src/handlers/services.ts
|
|
1815
1844
|
/**
|
|
1816
1845
|
* Services MCP handler.
|
|
1817
1846
|
*
|
|
@@ -1822,11 +1851,14 @@ function handleSchemaOverview() {
|
|
|
1822
1851
|
*
|
|
1823
1852
|
* Supports: list
|
|
1824
1853
|
*/
|
|
1825
|
-
|
|
1854
|
+
var handleServices = createResourceHandler({
|
|
1826
1855
|
resource: "services",
|
|
1827
|
-
actions: ["list"],
|
|
1856
|
+
actions: ["list", "get"],
|
|
1828
1857
|
formatter: formatService$1,
|
|
1829
|
-
executors: {
|
|
1858
|
+
executors: {
|
|
1859
|
+
list: listServices,
|
|
1860
|
+
get: getService
|
|
1861
|
+
},
|
|
1830
1862
|
customActions: { list: async (args, ctx, execCtx) => {
|
|
1831
1863
|
const { formatOptions, filter, page, perPage } = ctx;
|
|
1832
1864
|
const additionalFilters = { ...filter };
|
|
@@ -1847,6 +1879,8 @@ const handleServices = createResourceHandler({
|
|
|
1847
1879
|
return jsonResult(response);
|
|
1848
1880
|
} }
|
|
1849
1881
|
});
|
|
1882
|
+
//#endregion
|
|
1883
|
+
//#region src/handlers/summaries.ts
|
|
1850
1884
|
/**
|
|
1851
1885
|
* Summaries MCP handler.
|
|
1852
1886
|
*
|
|
@@ -1923,10 +1957,12 @@ async function handleSummaries(action, args, ctx) {
|
|
|
1923
1957
|
default: return inputErrorResult(ErrorMessages.invalidAction(action, "summaries", VALID_ACTIONS$2));
|
|
1924
1958
|
}
|
|
1925
1959
|
}
|
|
1960
|
+
//#endregion
|
|
1961
|
+
//#region src/handlers/tasks.ts
|
|
1926
1962
|
/**
|
|
1927
1963
|
* Tasks MCP handler.
|
|
1928
1964
|
*/
|
|
1929
|
-
|
|
1965
|
+
var handleTasks = createResourceHandler({
|
|
1930
1966
|
resource: "tasks",
|
|
1931
1967
|
displayName: "task",
|
|
1932
1968
|
actions: [
|
|
@@ -1991,6 +2027,8 @@ const handleTasks = createResourceHandler({
|
|
|
1991
2027
|
update: updateTask
|
|
1992
2028
|
}
|
|
1993
2029
|
});
|
|
2030
|
+
//#endregion
|
|
2031
|
+
//#region src/handlers/activities.ts
|
|
1994
2032
|
/**
|
|
1995
2033
|
* Activities MCP handler.
|
|
1996
2034
|
*
|
|
@@ -2002,7 +2040,7 @@ const handleTasks = createResourceHandler({
|
|
|
2002
2040
|
*
|
|
2003
2041
|
* Supports: list
|
|
2004
2042
|
*/
|
|
2005
|
-
|
|
2043
|
+
var handleActivities = createResourceHandler({
|
|
2006
2044
|
resource: "activities",
|
|
2007
2045
|
actions: ["list"],
|
|
2008
2046
|
formatter: formatActivity$1,
|
|
@@ -2015,10 +2053,12 @@ const handleActivities = createResourceHandler({
|
|
|
2015
2053
|
return filter;
|
|
2016
2054
|
}
|
|
2017
2055
|
});
|
|
2056
|
+
//#endregion
|
|
2057
|
+
//#region src/handlers/attachments.ts
|
|
2018
2058
|
/**
|
|
2019
2059
|
* Attachments MCP handler.
|
|
2020
2060
|
*/
|
|
2021
|
-
|
|
2061
|
+
var handleAttachments = createResourceHandler({
|
|
2022
2062
|
resource: "attachments",
|
|
2023
2063
|
actions: [
|
|
2024
2064
|
"list",
|
|
@@ -2149,10 +2189,12 @@ async function handleBatch(operations, credentials, execute) {
|
|
|
2149
2189
|
results
|
|
2150
2190
|
});
|
|
2151
2191
|
}
|
|
2192
|
+
//#endregion
|
|
2193
|
+
//#region src/handlers/bookings.ts
|
|
2152
2194
|
/**
|
|
2153
2195
|
* Bookings MCP handler.
|
|
2154
2196
|
*/
|
|
2155
|
-
|
|
2197
|
+
var handleBookings = createResourceHandler({
|
|
2156
2198
|
resource: "bookings",
|
|
2157
2199
|
displayName: "booking",
|
|
2158
2200
|
actions: [
|
|
@@ -2202,10 +2244,12 @@ const handleBookings = createResourceHandler({
|
|
|
2202
2244
|
update: updateBooking
|
|
2203
2245
|
}
|
|
2204
2246
|
});
|
|
2247
|
+
//#endregion
|
|
2248
|
+
//#region src/handlers/comments.ts
|
|
2205
2249
|
/**
|
|
2206
2250
|
* Comments MCP handler.
|
|
2207
2251
|
*/
|
|
2208
|
-
|
|
2252
|
+
var handleComments = createResourceHandler({
|
|
2209
2253
|
resource: "comments",
|
|
2210
2254
|
actions: [
|
|
2211
2255
|
"list",
|
|
@@ -2253,6 +2297,8 @@ const handleComments = createResourceHandler({
|
|
|
2253
2297
|
update: updateComment
|
|
2254
2298
|
}
|
|
2255
2299
|
});
|
|
2300
|
+
//#endregion
|
|
2301
|
+
//#region src/handlers/companies.ts
|
|
2256
2302
|
/**
|
|
2257
2303
|
* Companies MCP handler.
|
|
2258
2304
|
*
|
|
@@ -2263,7 +2309,7 @@ const handleComments = createResourceHandler({
|
|
|
2263
2309
|
*
|
|
2264
2310
|
* Supports: list, get, create, update, resolve
|
|
2265
2311
|
*/
|
|
2266
|
-
|
|
2312
|
+
var handleCompanies = createResourceHandler({
|
|
2267
2313
|
resource: "companies",
|
|
2268
2314
|
actions: [
|
|
2269
2315
|
"list",
|
|
@@ -2287,6 +2333,8 @@ const handleCompanies = createResourceHandler({
|
|
|
2287
2333
|
update: updateCompany
|
|
2288
2334
|
}
|
|
2289
2335
|
});
|
|
2336
|
+
//#endregion
|
|
2337
|
+
//#region src/handlers/custom-fields.ts
|
|
2290
2338
|
/**
|
|
2291
2339
|
* Custom Fields MCP handler.
|
|
2292
2340
|
*
|
|
@@ -2298,7 +2346,7 @@ const handleCompanies = createResourceHandler({
|
|
|
2298
2346
|
*
|
|
2299
2347
|
* Supports: list, get
|
|
2300
2348
|
*/
|
|
2301
|
-
|
|
2349
|
+
var handleCustomFields = createResourceHandler({
|
|
2302
2350
|
resource: "custom_fields",
|
|
2303
2351
|
displayName: "custom field",
|
|
2304
2352
|
actions: ["list", "get"],
|
|
@@ -2316,6 +2364,8 @@ const handleCustomFields = createResourceHandler({
|
|
|
2316
2364
|
return filter;
|
|
2317
2365
|
}
|
|
2318
2366
|
});
|
|
2367
|
+
//#endregion
|
|
2368
|
+
//#region src/handlers/discussions.ts
|
|
2319
2369
|
/**
|
|
2320
2370
|
* Discussions MCP handler.
|
|
2321
2371
|
*/
|
|
@@ -2323,7 +2373,7 @@ var STATUS_MAP = {
|
|
|
2323
2373
|
active: "1",
|
|
2324
2374
|
resolved: "2"
|
|
2325
2375
|
};
|
|
2326
|
-
|
|
2376
|
+
var handleDiscussions = createResourceHandler({
|
|
2327
2377
|
resource: "discussions",
|
|
2328
2378
|
actions: [
|
|
2329
2379
|
"list",
|
|
@@ -2383,6 +2433,8 @@ const handleDiscussions = createResourceHandler({
|
|
|
2383
2433
|
delete: deleteDiscussion
|
|
2384
2434
|
}
|
|
2385
2435
|
});
|
|
2436
|
+
//#endregion
|
|
2437
|
+
//#region src/handlers/help.ts
|
|
2386
2438
|
var RESOURCE_HELP = {
|
|
2387
2439
|
batch: {
|
|
2388
2440
|
description: "Execute multiple operations in a single call. Operations run in parallel via Promise.all, reducing round-trips for AI agents.",
|
|
@@ -2693,7 +2745,9 @@ var RESOURCE_HELP = {
|
|
|
2693
2745
|
time: "Time in minutes",
|
|
2694
2746
|
note: "Description of work done",
|
|
2695
2747
|
billable_time: "Billable time in minutes",
|
|
2696
|
-
approved: "Whether the entry is approved"
|
|
2748
|
+
approved: "Whether the entry is approved",
|
|
2749
|
+
overhead: "Whether the entry is overhead time",
|
|
2750
|
+
started_at: "Start time for timer-based entries (ISO 8601)"
|
|
2697
2751
|
},
|
|
2698
2752
|
examples: [{
|
|
2699
2753
|
description: "List my time entries this week",
|
|
@@ -2744,7 +2798,8 @@ var RESOURCE_HELP = {
|
|
|
2744
2798
|
id: "Unique service identifier",
|
|
2745
2799
|
name: "Service name",
|
|
2746
2800
|
budgeted_time: "Budgeted time in minutes",
|
|
2747
|
-
worked_time: "Logged time in minutes"
|
|
2801
|
+
worked_time: "Logged time in minutes",
|
|
2802
|
+
billing_type_id: "Billing type: 1=fixed, 2=actuals, 3=non_billable"
|
|
2748
2803
|
},
|
|
2749
2804
|
examples: [{
|
|
2750
2805
|
description: "List services for a deal (budget line items)",
|
|
@@ -2790,7 +2845,8 @@ var RESOURCE_HELP = {
|
|
|
2790
2845
|
last_name: "Last name",
|
|
2791
2846
|
email: "Email address",
|
|
2792
2847
|
title: "Job title",
|
|
2793
|
-
active: "Whether the person is active"
|
|
2848
|
+
active: "Whether the person is active",
|
|
2849
|
+
custom_fields: "Employee custom fields (when Employee Fields are enabled)"
|
|
2794
2850
|
},
|
|
2795
2851
|
examples: [
|
|
2796
2852
|
{
|
|
@@ -3557,6 +3613,8 @@ function handleHelpOverview() {
|
|
|
3557
3613
|
_tip: "Always call { action: 'help', resource: '<name>' } before your first interaction with any resource to learn valid filters, required fields, and examples."
|
|
3558
3614
|
});
|
|
3559
3615
|
}
|
|
3616
|
+
//#endregion
|
|
3617
|
+
//#region src/handlers/pages.ts
|
|
3560
3618
|
/**
|
|
3561
3619
|
* Pages MCP handler.
|
|
3562
3620
|
*
|
|
@@ -3567,7 +3625,7 @@ function handleHelpOverview() {
|
|
|
3567
3625
|
*
|
|
3568
3626
|
* Supports: list, get, create, update, delete
|
|
3569
3627
|
*/
|
|
3570
|
-
|
|
3628
|
+
var handlePages = createResourceHandler({
|
|
3571
3629
|
resource: "pages",
|
|
3572
3630
|
actions: [
|
|
3573
3631
|
"list",
|
|
@@ -3600,6 +3658,8 @@ const handlePages = createResourceHandler({
|
|
|
3600
3658
|
delete: deletePage
|
|
3601
3659
|
}
|
|
3602
3660
|
});
|
|
3661
|
+
//#endregion
|
|
3662
|
+
//#region src/handlers/pre-validation-guards.ts
|
|
3603
3663
|
/**
|
|
3604
3664
|
* Detects the classic `params` mistake.
|
|
3605
3665
|
*
|
|
@@ -3675,7 +3735,7 @@ function detectGetUnderscoreAction(args) {
|
|
|
3675
3735
|
* Ordered list of pre-validation guards.
|
|
3676
3736
|
* Guards are evaluated in order; the first match short-circuits the pipeline.
|
|
3677
3737
|
*/
|
|
3678
|
-
|
|
3738
|
+
var PRE_VALIDATION_GUARDS = [
|
|
3679
3739
|
detectParamsField,
|
|
3680
3740
|
detectBudgetsResource,
|
|
3681
3741
|
detectDocsResource,
|
|
@@ -3695,6 +3755,8 @@ function runPreValidationGuards(args) {
|
|
|
3695
3755
|
}
|
|
3696
3756
|
return null;
|
|
3697
3757
|
}
|
|
3758
|
+
//#endregion
|
|
3759
|
+
//#region src/handlers/reports.ts
|
|
3698
3760
|
/**
|
|
3699
3761
|
* Reports MCP handler.
|
|
3700
3762
|
*/
|
|
@@ -3735,10 +3797,12 @@ async function handleReports(action, args, ctx) {
|
|
|
3735
3797
|
meta: result.meta
|
|
3736
3798
|
});
|
|
3737
3799
|
}
|
|
3800
|
+
//#endregion
|
|
3801
|
+
//#region src/handlers/search.ts
|
|
3738
3802
|
/**
|
|
3739
3803
|
* Resources that support the query filter for text search
|
|
3740
3804
|
*/
|
|
3741
|
-
|
|
3805
|
+
var SEARCHABLE_RESOURCES = [
|
|
3742
3806
|
"projects",
|
|
3743
3807
|
"companies",
|
|
3744
3808
|
"people",
|
|
@@ -3806,13 +3870,15 @@ async function handleSearch(query, resources, credentials, execute) {
|
|
|
3806
3870
|
total_results: totalResults
|
|
3807
3871
|
});
|
|
3808
3872
|
}
|
|
3873
|
+
//#endregion
|
|
3874
|
+
//#region src/handlers/time.ts
|
|
3809
3875
|
/**
|
|
3810
3876
|
* Time entries MCP handler.
|
|
3811
3877
|
*
|
|
3812
3878
|
* Thin adapter that delegates business logic to core executors
|
|
3813
3879
|
* and handles MCP-specific concerns (hints, error formatting, JSON results).
|
|
3814
3880
|
*/
|
|
3815
|
-
|
|
3881
|
+
var handleTime = createResourceHandler({
|
|
3816
3882
|
resource: "time",
|
|
3817
3883
|
displayName: "time entry",
|
|
3818
3884
|
actions: [
|
|
@@ -3854,6 +3920,7 @@ const handleTime = createResourceHandler({
|
|
|
3854
3920
|
} },
|
|
3855
3921
|
update: { mapOptions: (args) => ({
|
|
3856
3922
|
time: args.time ?? void 0,
|
|
3923
|
+
billable_time: args.billable_time ?? void 0,
|
|
3857
3924
|
date: args.date ?? void 0,
|
|
3858
3925
|
note: args.note ?? void 0
|
|
3859
3926
|
}) },
|
|
@@ -3865,10 +3932,12 @@ const handleTime = createResourceHandler({
|
|
|
3865
3932
|
delete: deleteTimeEntry
|
|
3866
3933
|
}
|
|
3867
3934
|
});
|
|
3935
|
+
//#endregion
|
|
3936
|
+
//#region src/handlers/timers.ts
|
|
3868
3937
|
/**
|
|
3869
3938
|
* Timers MCP handler.
|
|
3870
3939
|
*/
|
|
3871
|
-
|
|
3940
|
+
var handleTimers = createResourceHandler({
|
|
3872
3941
|
resource: "timers",
|
|
3873
3942
|
actions: [
|
|
3874
3943
|
"list",
|
|
@@ -3912,13 +3981,15 @@ const handleTimers = createResourceHandler({
|
|
|
3912
3981
|
get: getTimer
|
|
3913
3982
|
}
|
|
3914
3983
|
});
|
|
3984
|
+
//#endregion
|
|
3985
|
+
//#region src/handlers/valid-includes.ts
|
|
3915
3986
|
/**
|
|
3916
3987
|
* Valid include values per resource.
|
|
3917
3988
|
*
|
|
3918
3989
|
* Sourced from help.ts and schema.ts include lists.
|
|
3919
3990
|
* Resources not listed here have no include validation (pass-through).
|
|
3920
3991
|
*/
|
|
3921
|
-
|
|
3992
|
+
var VALID_INCLUDES = {
|
|
3922
3993
|
activities: ["creator"],
|
|
3923
3994
|
custom_fields: ["options"],
|
|
3924
3995
|
tasks: [
|
|
@@ -3991,6 +4062,8 @@ function validateIncludes(resource, includes) {
|
|
|
3991
4062
|
suggestions
|
|
3992
4063
|
};
|
|
3993
4064
|
}
|
|
4065
|
+
//#endregion
|
|
4066
|
+
//#region src/handlers/workflows.ts
|
|
3994
4067
|
/**
|
|
3995
4068
|
* Workflows MCP handler.
|
|
3996
4069
|
*
|
|
@@ -4098,6 +4171,8 @@ async function handleWorkflows(action, args, ctx) {
|
|
|
4098
4171
|
default: return inputErrorResult(ErrorMessages.invalidAction(action, "workflows", VALID_ACTIONS));
|
|
4099
4172
|
}
|
|
4100
4173
|
}
|
|
4174
|
+
//#endregion
|
|
4175
|
+
//#region src/handlers/index.ts
|
|
4101
4176
|
/**
|
|
4102
4177
|
* Tool execution handlers for Productive MCP server
|
|
4103
4178
|
* These are shared between stdio and HTTP transports
|
|
@@ -4220,6 +4295,7 @@ async function executeToolWithCredentials(name, args, credentials) {
|
|
|
4220
4295
|
return errorResult(message);
|
|
4221
4296
|
}
|
|
4222
4297
|
}
|
|
4298
|
+
//#endregion
|
|
4223
4299
|
export { handleSchemaOverview as a, handleDeals as c, handleServices as i, handleTasks as n, handleProjects as o, handleSummaries as r, handlePeople as s, executeToolWithCredentials as t };
|
|
4224
4300
|
|
|
4225
|
-
//# sourceMappingURL=handlers-
|
|
4301
|
+
//# sourceMappingURL=handlers-vtRpc-Lx.js.map
|