@studiometa/productive-mcp 0.9.2 → 0.10.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.
Files changed (52) hide show
  1. package/dist/errors.d.ts +1 -0
  2. package/dist/errors.d.ts.map +1 -1
  3. package/dist/formatters.d.ts +0 -4
  4. package/dist/formatters.d.ts.map +1 -1
  5. package/dist/handlers/attachments.d.ts +5 -2
  6. package/dist/handlers/attachments.d.ts.map +1 -1
  7. package/dist/handlers/bookings.d.ts +5 -2
  8. package/dist/handlers/bookings.d.ts.map +1 -1
  9. package/dist/handlers/comments.d.ts +5 -2
  10. package/dist/handlers/comments.d.ts.map +1 -1
  11. package/dist/handlers/companies.d.ts +11 -5
  12. package/dist/handlers/companies.d.ts.map +1 -1
  13. package/dist/handlers/deals.d.ts +4 -5
  14. package/dist/handlers/deals.d.ts.map +1 -1
  15. package/dist/handlers/discussions.d.ts +5 -9
  16. package/dist/handlers/discussions.d.ts.map +1 -1
  17. package/dist/handlers/factory.d.ts +116 -0
  18. package/dist/handlers/factory.d.ts.map +1 -0
  19. package/dist/handlers/help.d.ts.map +1 -1
  20. package/dist/handlers/index.d.ts.map +1 -1
  21. package/dist/handlers/pages.d.ts +12 -9
  22. package/dist/handlers/pages.d.ts.map +1 -1
  23. package/dist/handlers/projects.d.ts +11 -5
  24. package/dist/handlers/projects.d.ts.map +1 -1
  25. package/dist/handlers/services.d.ts +12 -2
  26. package/dist/handlers/services.d.ts.map +1 -1
  27. package/dist/handlers/tasks.d.ts +4 -5
  28. package/dist/handlers/tasks.d.ts.map +1 -1
  29. package/dist/handlers/time.d.ts +4 -6
  30. package/dist/handlers/time.d.ts.map +1 -1
  31. package/dist/handlers/timers.d.ts +5 -2
  32. package/dist/handlers/timers.d.ts.map +1 -1
  33. package/dist/handlers/types.d.ts +6 -0
  34. package/dist/handlers/types.d.ts.map +1 -1
  35. package/dist/{handlers-D4tRd30c.js → handlers-BE3CYyVX.js} +636 -897
  36. package/dist/handlers-BE3CYyVX.js.map +1 -0
  37. package/dist/handlers.js +1 -1
  38. package/dist/hints.d.ts +0 -4
  39. package/dist/hints.d.ts.map +1 -1
  40. package/dist/http.js +2 -2
  41. package/dist/index.js +2 -2
  42. package/dist/schema.d.ts +0 -2
  43. package/dist/schema.d.ts.map +1 -1
  44. package/dist/server.js +2 -2
  45. package/dist/stdio.js +1 -1
  46. package/dist/{version-IB2ulmSy.js → version-BKUpCCHx.js} +2 -2
  47. package/dist/{version-IB2ulmSy.js.map → version-BKUpCCHx.js.map} +1 -1
  48. package/package.json +3 -3
  49. package/skills/SKILL.md +31 -54
  50. package/dist/handlers/budgets.d.ts +0 -9
  51. package/dist/handlers/budgets.d.ts.map +0 -1
  52. package/dist/handlers-D4tRd30c.js.map +0 -1
package/dist/errors.d.ts CHANGED
@@ -32,6 +32,7 @@ export declare const ErrorMessages: {
32
32
  readonly noUserIdConfigured: () => UserInputError;
33
33
  readonly missingCommentTarget: () => UserInputError;
34
34
  readonly missingBookingTarget: () => UserInputError;
35
+ readonly noUpdateFieldsSpecified: (allowedFields: string[]) => UserInputError;
35
36
  readonly apiError: (statusCode: number, message: string) => UserInputError;
36
37
  };
37
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE;IAM7C;;OAEG;IACH,kBAAkB,IAAI,MAAM;CAO7B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;iCAEJ,MAAM;+CAMQ,MAAM,UAAU,MAAM,EAAE;qCAUlC,MAAM,YAAY,MAAM,gBAAgB,MAAM,EAAE;yCAO5C,MAAM,kBAAkB,MAAM,EAAE;;6CAa5B,MAAM,cAAc,MAAM,EAAE;;;;;oCAmCrC,MAAM,WAAW,MAAM;CAuBtC,CAAC;AAEX;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE;IAM7C;;OAEG;IACH,kBAAkB,IAAI,MAAM;CAO7B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;iCAEJ,MAAM;+CAMQ,MAAM,UAAU,MAAM,EAAE;qCAUlC,MAAM,YAAY,MAAM,gBAAgB,MAAM,EAAE;yCAO5C,MAAM,kBAAkB,MAAM,EAAE;;6CAa5B,MAAM,cAAc,MAAM,EAAE;;;;;sDAmCnB,MAAM,EAAE;oCAO1B,MAAM,WAAW,MAAM;CAuBtC,CAAC;AAEX;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE"}
@@ -37,10 +37,6 @@ export declare function formatPerson(person: JsonApiResource, options?: McpForma
37
37
  * Format service for agent consumption
38
38
  */
39
39
  export declare function formatService(service: JsonApiResource, options?: McpFormatOptions): Record<string, unknown>;
40
- /**
41
- * Format budget for agent consumption
42
- */
43
- export declare function formatBudget(budget: JsonApiResource, options?: McpFormatOptions): Record<string, unknown>;
44
40
  /**
45
41
  * Format company for agent consumption
46
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAeL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAcjF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,eAAe,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,IAAI,EAAE,eAAe,EAAE,EACvB,SAAS,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,CAAC,EACnE,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,gBAAgB,GACzB;IAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAY3C"}
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Attachments MCP handler.
3
3
  */
4
- import type { AttachmentArgs, HandlerContext, ToolResult } from './types.js';
5
- export declare function handleAttachments(action: string, args: AttachmentArgs, ctx: HandlerContext): Promise<ToolResult>;
4
+ import type { AttachmentArgs } from './types.js';
5
+ export declare const handleAttachments: (action: string, args: AttachmentArgs & {
6
+ query?: string;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
6
9
  //# sourceMappingURL=attachments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/handlers/attachments.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7E,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAwCrB"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/handlers/attachments.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,eAAO,MAAM,iBAAiB;;;wFAoB5B,CAAC"}
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Bookings MCP handler.
3
3
  */
4
- import type { BookingArgs, HandlerContext, ToolResult } from './types.js';
5
- export declare function handleBookings(action: string, args: BookingArgs, ctx: HandlerContext): Promise<ToolResult>;
4
+ import type { BookingArgs } from './types.js';
5
+ export declare const handleBookings: (action: string, args: BookingArgs & {
6
+ query?: string;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
6
9
  //# sourceMappingURL=bookings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bookings.d.ts","sourceRoot":"","sources":["../../src/handlers/bookings.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS1E,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAqErB"}
1
+ {"version":3,"file":"bookings.d.ts","sourceRoot":"","sources":["../../src/handlers/bookings.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,eAAO,MAAM,cAAc;;;wFA6CzB,CAAC"}
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Comments MCP handler.
3
3
  */
4
- import type { CommentArgs, HandlerContext, ToolResult } from './types.js';
5
- export declare function handleComments(action: string, args: CommentArgs, ctx: HandlerContext): Promise<ToolResult>;
4
+ import type { CommentArgs } from './types.js';
5
+ export declare const handleComments: (action: string, args: CommentArgs & {
6
+ query?: string;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
6
9
  //# sourceMappingURL=comments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/handlers/comments.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS1E,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CA2DrB"}
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/handlers/comments.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,eAAO,MAAM,cAAc;;;wFA6CzB,CAAC"}
@@ -1,10 +1,16 @@
1
1
  /**
2
2
  * Companies MCP handler.
3
+ *
4
+ * Uses the createResourceHandler factory for the common list/get/create/update/resolve pattern.
3
5
  */
4
- import type { CompanyArgs, HandlerContext, ToolResult } from './types.js';
5
- import { type ResolvableResourceType } from './resolve.js';
6
- export declare function handleCompanies(action: string, args: CompanyArgs & {
6
+ import type { CompanyArgs } from './types.js';
7
+ /**
8
+ * Handle companies resource.
9
+ *
10
+ * Supports: list, get, create, update, resolve
11
+ */
12
+ export declare const handleCompanies: (action: string, args: CompanyArgs & {
7
13
  query?: string;
8
- type?: ResolvableResourceType;
9
- }, ctx: HandlerContext): Promise<ToolResult>;
14
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
15
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
10
16
  //# sourceMappingURL=companies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"companies.d.ts","sourceRoot":"","sources":["../../src/handlers/companies.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK1E,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAK1E,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,sBAAsB,CAAA;CAAE,EACrE,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAgDrB"}
1
+ {"version":3,"file":"companies.d.ts","sourceRoot":"","sources":["../../src/handlers/companies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;wFAmB1B,CAAC"}
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * Deals MCP handler.
3
3
  */
4
- import type { DealArgs, HandlerContext, ToolResult } from './types.js';
5
- import { type ResolvableResourceType } from './resolve.js';
6
- export declare function handleDeals(action: string, args: DealArgs & {
4
+ import type { DealArgs } from './types.js';
5
+ export declare const handleDeals: (action: string, args: DealArgs & {
7
6
  query?: string;
8
- type?: ResolvableResourceType;
9
- }, ctx: HandlerContext): Promise<ToolResult>;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
10
9
  //# sourceMappingURL=deals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deals.d.ts","sourceRoot":"","sources":["../../src/handlers/deals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKvE,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAK1E,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,sBAAsB,CAAA;CAAE,EAClE,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CA2DrB"}
1
+ {"version":3,"file":"deals.d.ts","sourceRoot":"","sources":["../../src/handlers/deals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,eAAO,MAAM,WAAW;;;wFAwBtB,CAAC"}
@@ -1,13 +1,9 @@
1
1
  /**
2
2
  * Discussions MCP handler.
3
3
  */
4
- import type { HandlerContext, ToolResult } from './types.js';
5
- export interface DiscussionArgs {
6
- id?: string;
7
- title?: string;
8
- body?: string;
9
- page_id?: string;
10
- status?: string;
11
- }
12
- export declare function handleDiscussions(action: string, args: DiscussionArgs, ctx: HandlerContext): Promise<ToolResult>;
4
+ import type { DiscussionArgs } from './types.js';
5
+ export declare const handleDiscussions: (action: string, args: DiscussionArgs & {
6
+ query?: string;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
13
9
  //# sourceMappingURL=discussions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discussions.d.ts","sourceRoot":"","sources":["../../src/handlers/discussions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO7D,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAmFrB"}
1
+ {"version":3,"file":"discussions.d.ts","sourceRoot":"","sources":["../../src/handlers/discussions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcjD,eAAO,MAAM,iBAAiB;;;wFA+C5B,CAAC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Factory for creating resource handlers.
3
+ *
4
+ * Encapsulates the repetitive list/get/create/update/delete/resolve pattern
5
+ * shared by all MCP resource handlers.
6
+ */
7
+ import type { JsonApiResource } from '@studiometa/productive-api';
8
+ import type { ExecutorContext, ResolvedInfo } from '@studiometa/productive-core';
9
+ import type { McpFormatOptions } from '../formatters.js';
10
+ import type { ContextualHints } from '../hints.js';
11
+ import type { CommonArgs, HandlerContext, ToolResult } from './types.js';
12
+ import { type ResolvableResourceType } from './resolve.js';
13
+ export type { ExecutorContext };
14
+ /**
15
+ * Result type from executors (list operations)
16
+ */
17
+ interface ListExecutorResult {
18
+ data: JsonApiResource[];
19
+ meta?: {
20
+ total_count?: number;
21
+ total_pages?: number;
22
+ current_page?: number;
23
+ };
24
+ included?: JsonApiResource[];
25
+ resolved?: Record<string, ResolvedInfo>;
26
+ }
27
+ /**
28
+ * Result type from executors (single resource operations)
29
+ */
30
+ interface SingleExecutorResult {
31
+ data: JsonApiResource;
32
+ included?: JsonApiResource[];
33
+ }
34
+ /**
35
+ * Configuration for the create action
36
+ */
37
+ interface CreateConfig<TArgs> {
38
+ /** Fields that must be present for create */
39
+ required: (keyof TArgs)[];
40
+ /** Custom validation that returns a ToolResult on error, or undefined if valid */
41
+ validateArgs?: (args: TArgs) => ToolResult | undefined;
42
+ /** Map args to executor options */
43
+ mapOptions: (args: TArgs) => Record<string, unknown>;
44
+ }
45
+ /**
46
+ * Configuration for the update action
47
+ */
48
+ interface UpdateConfig<TArgs> {
49
+ /** Fields that can be updated - if none provided, error is returned */
50
+ allowedFields?: (keyof TArgs)[];
51
+ /** Map args to executor options (id is handled automatically) */
52
+ mapOptions: (args: TArgs) => Record<string, unknown>;
53
+ }
54
+ /**
55
+ * Configuration for a resource handler
56
+ */
57
+ export interface ResourceHandlerConfig<TArgs extends CommonArgs = CommonArgs> {
58
+ /** Resource name (e.g., 'projects', 'tasks') */
59
+ resource: string;
60
+ /** Display name for error messages (defaults to resource) */
61
+ displayName?: string;
62
+ /** Valid actions for this resource */
63
+ actions: string[];
64
+ /** Formatter function for this resource */
65
+ formatter: (item: JsonApiResource, options?: McpFormatOptions) => Record<string, unknown>;
66
+ /** Optional hints generator for get action */
67
+ hints?: (data: JsonApiResource, id: string) => ContextualHints;
68
+ /** Default include for list/get operations */
69
+ defaultInclude?: {
70
+ list?: string[];
71
+ get?: string[];
72
+ };
73
+ /** Whether this resource supports the resolve action */
74
+ supportsResolve?: boolean;
75
+ /** Extract additional filters from args for list operations */
76
+ listFilterFromArgs?: (args: TArgs) => Record<string, string>;
77
+ /** Extract extra args to pass to handleResolve (e.g., project_id for tasks/time) */
78
+ resolveArgsFromArgs?: (args: TArgs) => Record<string, string | undefined>;
79
+ /** Custom action handlers for non-CRUD actions (e.g., resolve/reopen for discussions, start/stop for timers) */
80
+ customActions?: Record<string, (args: TArgs, ctx: HandlerContext, execCtx: ExecutorContext) => Promise<ToolResult>>;
81
+ /** Create action configuration (if supported) */
82
+ create?: CreateConfig<TArgs>;
83
+ /** Update action configuration (if supported) */
84
+ update?: UpdateConfig<TArgs>;
85
+ /** Executors for each action */
86
+ executors: {
87
+ list: (options: any, ctx: ExecutorContext) => Promise<ListExecutorResult>;
88
+ get?: (options: any, ctx: ExecutorContext) => Promise<SingleExecutorResult>;
89
+ create?: (options: any, ctx: ExecutorContext) => Promise<SingleExecutorResult>;
90
+ update?: (options: any, ctx: ExecutorContext) => Promise<SingleExecutorResult>;
91
+ delete?: (options: any, ctx: ExecutorContext) => Promise<unknown>;
92
+ };
93
+ }
94
+ /**
95
+ * Create a resource handler function from configuration.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * export const handleProjects = createResourceHandler({
100
+ * resource: 'projects',
101
+ * actions: ['list', 'get', 'resolve'],
102
+ * formatter: formatProject,
103
+ * hints: (data, id) => getProjectHints(id),
104
+ * supportsResolve: true,
105
+ * executors: {
106
+ * list: listProjects,
107
+ * get: getProject,
108
+ * },
109
+ * });
110
+ * ```
111
+ */
112
+ export declare function createResourceHandler<TArgs extends CommonArgs = CommonArgs>(config: ResourceHandlerConfig<TArgs>): (action: string, args: TArgs & {
113
+ query?: string;
114
+ type?: ResolvableResourceType;
115
+ }, ctx: HandlerContext) => Promise<ToolResult>;
116
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/handlers/factory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/handlers/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4oB7C;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAcvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,CAW/C"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/handlers/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2mB7C;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAcvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,UAAU,CAW/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AAwB7D,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2D7C;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,qBAAqB,GACjC,OAAO,CAAC,UAAU,CAAC,CAkIrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB7D,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2D7C;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,qBAAqB,GACjC,OAAO,CAAC,UAAU,CAAC,CA6IrB"}
@@ -1,13 +1,16 @@
1
1
  /**
2
2
  * Pages MCP handler.
3
+ *
4
+ * Uses the createResourceHandler factory for the common list/get/create/update/delete pattern.
3
5
  */
4
- import type { HandlerContext, ToolResult } from './types.js';
5
- export interface PageArgs {
6
- id?: string;
7
- title?: string;
8
- body?: string;
9
- project_id?: string;
10
- parent_page_id?: string;
11
- }
12
- export declare function handlePages(action: string, args: PageArgs, ctx: HandlerContext): Promise<ToolResult>;
6
+ import type { PageArgs } from './types.js';
7
+ /**
8
+ * Handle pages resource.
9
+ *
10
+ * Supports: list, get, create, update, delete
11
+ */
12
+ export declare const handlePages: (action: string, args: PageArgs & {
13
+ query?: string;
14
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
15
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
13
16
  //# sourceMappingURL=pages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/handlers/pages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO7D,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CA0DrB"}
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/handlers/pages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS3C;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;wFAyBtB,CAAC"}
@@ -1,10 +1,16 @@
1
1
  /**
2
2
  * Projects MCP handler.
3
+ *
4
+ * Uses the createResourceHandler factory for the common list/get/resolve pattern.
3
5
  */
4
- import type { CommonArgs, HandlerContext, ToolResult } from './types.js';
5
- import { type ResolvableResourceType } from './resolve.js';
6
- export declare function handleProjects(action: string, args: CommonArgs & {
6
+ import type { CommonArgs } from './types.js';
7
+ /**
8
+ * Handle projects resource.
9
+ *
10
+ * Supports: list, get, resolve
11
+ */
12
+ export declare const handleProjects: (action: string, args: CommonArgs & {
7
13
  query?: string;
8
- type?: ResolvableResourceType;
9
- }, ctx: HandlerContext): Promise<ToolResult>;
14
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
15
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
10
16
  //# sourceMappingURL=projects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/handlers/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKzE,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAK1E,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,sBAAsB,CAAA;CAAE,EACpE,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAuCrB"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/handlers/projects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;wFAUzB,CAAC"}
@@ -1,6 +1,16 @@
1
1
  /**
2
2
  * Services MCP handler.
3
+ *
4
+ * Uses the createResourceHandler factory for the common list pattern.
3
5
  */
4
- import type { CommonArgs, HandlerContext, ToolResult } from './types.js';
5
- export declare function handleServices(action: string, _args: CommonArgs, ctx: HandlerContext): Promise<ToolResult>;
6
+ import type { CommonArgs } from './types.js';
7
+ /**
8
+ * Handle services resource.
9
+ *
10
+ * Supports: list
11
+ */
12
+ export declare const handleServices: (action: string, args: CommonArgs & {
13
+ query?: string;
14
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
15
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
6
16
  //# sourceMappingURL=services.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/handlers/services.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQzE,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAWrB"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/handlers/services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;wFAOzB,CAAC"}
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * Tasks MCP handler.
3
3
  */
4
- import type { HandlerContext, TaskArgs, ToolResult } from './types.js';
5
- import { type ResolvableResourceType } from './resolve.js';
6
- export declare function handleTasks(action: string, args: TaskArgs & {
4
+ import type { TaskArgs } from './types.js';
5
+ export declare const handleTasks: (action: string, args: TaskArgs & {
7
6
  query?: string;
8
- type?: ResolvableResourceType;
9
- }, ctx: HandlerContext): Promise<ToolResult>;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
10
9
  //# sourceMappingURL=tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/handlers/tasks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKvE,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAM1E,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,sBAAsB,CAAA;CAAE,EAClE,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CA0ErB"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/handlers/tasks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,eAAO,MAAM,WAAW;;;wFAsCtB,CAAC"}
@@ -4,11 +4,9 @@
4
4
  * Thin adapter that delegates business logic to core executors
5
5
  * and handles MCP-specific concerns (hints, error formatting, JSON results).
6
6
  */
7
- import type { CommonArgs, HandlerContext, ToolResult } from './types.js';
8
- import { type ResolvableResourceType } from './resolve.js';
9
- export declare function handleTime(action: string, args: CommonArgs & {
7
+ import type { TimeArgs } from './types.js';
8
+ export declare const handleTime: (action: string, args: TimeArgs & {
10
9
  query?: string;
11
- type?: ResolvableResourceType;
12
- project_id?: string;
13
- }, ctx: HandlerContext): Promise<ToolResult>;
10
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
11
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
14
12
  //# sourceMappingURL=time.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/handlers/time.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKzE,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAK1E,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACzF,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CA8FrB"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/handlers/time.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,eAAO,MAAM,UAAU;;;wFAqCrB,CAAC"}
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Timers MCP handler.
3
3
  */
4
- import type { HandlerContext, TimerArgs, ToolResult } from './types.js';
5
- export declare function handleTimers(action: string, args: TimerArgs, ctx: HandlerContext): Promise<ToolResult>;
4
+ import type { TimerArgs } from './types.js';
5
+ export declare const handleTimers: (action: string, args: TimerArgs & {
6
+ query?: string;
7
+ type?: import("@studiometa/productive-core").ResolvableResourceType;
8
+ }, ctx: import("./types.js").HandlerContext) => Promise<import("./types.js").ToolResult>;
6
9
  //# sourceMappingURL=timers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../src/handlers/timers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AASxE,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,CAqCrB"}
1
+ {"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../src/handlers/timers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQ5C,eAAO,MAAM,YAAY;;;wFAqCvB,CAAC"}
@@ -55,6 +55,12 @@ export interface TaskArgs extends CommonArgs {
55
55
  description?: string;
56
56
  assignee_id?: string;
57
57
  }
58
+ /**
59
+ * Time entry-specific args
60
+ */
61
+ export interface TimeArgs extends CommonArgs {
62
+ project_id?: string;
63
+ }
58
64
  /**
59
65
  * Comment-specific args
60
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"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"}