@doist/todoist-mcp 10.3.2 → 10.4.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/dist/http-app.d.ts +19 -0
- package/dist/http-app.d.ts.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/main-http.js +113 -40
- package/dist/main.js +1 -1
- package/dist/{mcp-server-C_UexOyp.js → mcp-server-DUs6oq-a.js} +1203 -1165
- package/dist/mcp-server.d.ts +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/middleware/require-trusted-host.d.ts +44 -0
- package/dist/middleware/require-trusted-host.d.ts.map +1 -0
- package/dist/{require-valid-todoist-token-B0fNp1hu.js → require-valid-todoist-token-BeOx8xgI.js} +1 -1
- package/dist/tool-helpers.d.ts +37 -0
- package/dist/tool-helpers.d.ts.map +1 -1
- package/dist/tools/add-projects.d.ts +2 -0
- package/dist/tools/add-projects.d.ts.map +1 -1
- package/dist/tools/fetch-object.d.ts +2 -0
- package/dist/tools/fetch-object.d.ts.map +1 -1
- package/dist/tools/find-projects.d.ts +9 -0
- package/dist/tools/find-projects.d.ts.map +1 -1
- package/dist/tools/project-management.d.ts +2 -0
- package/dist/tools/project-management.d.ts.map +1 -1
- package/dist/tools/project-move.d.ts +2 -0
- package/dist/tools/project-move.d.ts.map +1 -1
- package/dist/tools/update-projects.d.ts +2 -0
- package/dist/tools/update-projects.d.ts.map +1 -1
- package/dist/utils/host.d.ts +6 -0
- package/dist/utils/host.d.ts.map +1 -0
- package/dist/utils/output-schemas.d.ts +1 -0
- package/dist/utils/output-schemas.d.ts.map +1 -1
- package/dist/utils/response-builders.d.ts +1 -0
- package/dist/utils/response-builders.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/mcp-server.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { FEATURE_NAMES, Feature, FeatureName, Features } from './mcp-helpers.js';
|
|
3
|
-
export declare const instructions = "\n## Todoist Task and Project Management Tools\n\nYou have access to comprehensive Todoist management tools for personal productivity and team collaboration. Use these tools to help users manage tasks, projects, sections, comments, and assignments effectively.\n\n### Core Capabilities:\n- Create, update, complete, and search tasks with rich metadata (priorities, due dates, durations, assignments)\n- Manage projects and sections with flexible organization\n- Handle comments and collaboration features\n- Bulk assignment operations for team workflows\n- Get overviews and insights about workload and progress\n\n### Tool Usage Guidelines:\n\n**Task Management:**\n- **add-tasks**: Create tasks (max 25 per call) with content, description, priority (`p1`, `p2`, `p3`, `p4` strings only; `p1` highest and `p4` lowest/default; integers are not accepted), dueString (natural language like \"tomorrow\", \"next Friday\", \"2024-12-25\"), deadlineDate (ISO 8601 format like \"2025-12-31\" for immovable constraints), duration (formats like \"2h\", \"90m\", \"2h30m\"), and assignments to project collaborators\n- **update-tasks**: Modify existing tasks - get task IDs from search results first, only include fields that need changes. Supports priority updates using `p1`/`p2`/`p3`/`p4` string values (`p1` highest, `p4` lowest/default; integers are not accepted), due date updates via dueString and due date removal via \"dueString: remove\", plus deadlineDate (ISO 8601 format like \"2025-12-31\") updates and removals via \"deadlineDate: remove\". **IMPORTANT: Do NOT use update-tasks to reschedule/move task dates \u2014 use reschedule-tasks instead.** update-tasks replaces the entire due string which destroys recurrence patterns on recurring tasks.\n- **reschedule-tasks**: **Always use this tool when moving/rescheduling task due dates to a different date.** This tool preserves recurring schedules and existing time-of-day. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. Works for both recurring and non-recurring tasks. Do NOT use update-tasks for rescheduling.\n- **complete-tasks**: Mark tasks as done using task IDs\n- **uncomplete-tasks**: Reopen completed tasks using task IDs\n- **find-tasks**: Search by text, project/section/parent container, responsible user, labels, a raw Todoist `filter` string (e.g. \"today\", \"p1\", \"##Work\", \"(today | overdue) & p1\"), or a saved filter by ID or name (`filterIdOrName`). Requires at least one search parameter. `filter`/`filterIdOrName` cannot be combined with projectId/sectionId/parentId, and `filter` and `filterIdOrName` are mutually exclusive.\n- **find-tasks-by-date**: Get tasks by date range (startDate: YYYY-MM-DD or 'today' which includes overdue tasks) or specific day counts\n- **find-completed-tasks**: View completed tasks by completion date or original due date; if since/until are omitted, defaults to the last 7 days (returns all collaborators unless filtered)\n\n**Project & Organization:**\n- **add-projects/update-projects/find-projects**: Manage project lifecycle with names, descriptions (Markdown), favorites, view styles (list/board/calendar), and workspace assignment for new projects (by name or ID)\n- **project-management**: Archive or unarchive projects by ID\n- **project-move**: Move projects between personal and workspace contexts\n- **add-sections/update-sections/find-sections**: Organize tasks within projects using sections\n- **find-goals/add-goals/update-goals**: Manage goals (personal or workspace). Goals track progress via linked tasks\n- **complete-goals**: Complete or uncomplete goals by ID\n- **link-goal-tasks**: Link or unlink tasks to/from a goal\n- **get-overview**: Get comprehensive Markdown overview of entire account or specific project with task hierarchies. Project data includes parentId (sub-projects), folderId (workspace folder membership), and childOrder (sibling ordering)\n- **list-workspaces**: Get all workspaces for the user with details like plan type, role, and settings\n\n**Reminders:**\n- **add-reminders**: Create reminders for tasks. Three types: \"relative\" (minutes before due), \"absolute\" (specific date/time), or \"location\" (geofence-triggered). Each reminder must specify a taskId.\n- **find-reminders**: Find reminders by task ID (returns both time-based and location reminders), or get a specific reminder by ID (use reminderId for time-based, locationReminderId for location-based).\n- **update-reminders**: Update existing reminders. Must specify the reminder type (\"relative\", \"absolute\", or \"location\") and ID.\n- Relative and absolute reminders support an **isUrgent** flag to mark a reminder as urgent.\n- Reminders can be deleted using **delete-object** with type \"reminder\" (time-based) or \"location_reminder\" (location-based).\n\n**Collaboration & Comments:**\n- **add-comments/update-comments/find-comments**: Manage task and project discussions\n- **view-attachment**: View file attachments from comments. Pass the fileUrl from a comment's fileAttachment. Returns images inline, text files as text, and binary files as embedded resources.\n- **find-project-collaborators**: Look up Todoist users (collaborators, teammates) by name or email to get their user ID \u2014 use for \"find/who is X\" questions or any time you need to resolve a person's name to an ID. By default searches collaborators of every shared project the authenticated user can access (plus the authenticated user themselves). An empty result means the person is not a collaborator on any shared project, not that they do not exist. Pass projectId to scope to a single project\n- **manage-assignments**: Bulk assign/unassign/reassign up to 50 tasks with atomic operations and dry-run validation\n\n**Filters:**\n- **find-filters**: List all personal filters or search by name; filters are saved task views using query syntax\n- **add-filters**: Create personal filters with name, query (e.g. \"today & p1\"), color, and favorite flag\n- **update-filters**: Modify existing filters' name, query, color, or favorite status\n\n**Activity & Audit:**\n- **find-activity**: Retrieve recent activity logs to monitor and audit changes. Shows events from all users by default; use initiatorId to filter by specific user. Filter by object type (task/project/comment), event type (added/updated/deleted/completed/uncompleted/archived/unarchived/shared/left), and specific objects (objectId, projectId, taskId). Useful for tracking who did what and when. Note: Date-based filtering is not supported.\n- **get-productivity-stats**: Get comprehensive productivity statistics including daily/weekly completion breakdowns, goal streaks (current, last, max), karma score and trends, and historical karma data. No parameters required.\n\n**Project Health & Insights:**\n- **get-project-health**: Get comprehensive health assessment for a project including completion progress (completed/active counts, percentage), health status (EXCELLENT/ON_TRACK/AT_RISK/CRITICAL), description, and task-level recommendations. Use includeContext=true for detailed metrics (overdue tasks, weekly activity, avg completion time) and full task data. Health data may be stale \u2014 check isStale flag.\n- **get-project-activity-stats**: Get daily and optional weekly activity statistics for a project over a configurable time window (1-12 weeks). Useful for identifying activity trends.\n- **analyze-project-health**: Trigger a new health analysis for a project. Use when health data is stale. The analysis may take time \u2014 use get-project-health afterward to see updated results.\n- **get-workspace-insights**: Get aggregated health and progress insights across all projects in a workspace. Accepts workspace name or ID, with optional project ID filtering.\n\n**General Operations:**\n- **delete-object**: Remove projects, sections, tasks, comments, labels, filters, reminders, or location reminders by type and ID\n- **fetch-object**: Fetch a single task, project, comment, or section by its ID\n- **reorder-objects**: Reorder sibling projects or sections, and optionally move projects to a new parent. For projects: set order to reorder siblings, and/or set parentId to move under a new parent (use \"root\" for top level). For sections: set order to reorder within a project\n- **user-info**: Get user details including timezone, goals, and plan information\n\n### Best Practices:\n\n1. **Task Creation**: Write clear, actionable task titles. Use natural language for due dates (\"tomorrow\", \"next Monday\"). Set appropriate priorities and include detailed descriptions when needed.\n\n2. **Search Strategy**: Use specific search queries combining multiple filters for precise results. When searching for tasks, start with broader queries and narrow down as needed.\n\n3. **Assignments & user lookup**: Always validate project collaborators exist before assigning tasks. Use find-project-collaborators to verify user access. Also use find-project-collaborators (with just a searchTerm and no projectId) to resolve a user's ID whenever the user references a person by name or email \u2014 it searches collaborators of all shared projects you can access, plus yourself.\n\n4. **Bulk Operations**: When working with multiple items, prefer bulk tools (complete-tasks, manage-assignments) over individual operations for better performance.\n\n5. **Date Handling**: All dates respect user timezone settings. Use 'today' keyword for dynamic date filtering (includes overdue tasks). **When rescheduling/moving tasks to a different date, always use reschedule-tasks** \u2014 never update-tasks with dueString, as that destroys recurrence on recurring tasks.\n\n6. **Labels**: Use label filtering with AND/OR operators for advanced task organization. Most search tools support labels parameter. Use **find-labels** to discover personal and shared labels \u2014 use label **names** (not IDs) when filtering tasks, and use label **IDs** only with **delete-object** and **update-labels** (for personal label updates). Use **add-labels** to create new personal labels. Use **update-labels** to rename or recolor personal labels (by ID), or to rename shared labels (by name) \u2014 note that shared labels support renaming only, not color/order/favorite changes.\n\n7. **Pagination**: Large result sets use cursor-based pagination. Use limit parameter to control result size (default varies by tool).\n\n8. **Error Handling**: All tools provide detailed error messages and next-step suggestions. Pay attention to validation feedback for corrective actions.\n\n### Common Workflows:\n\n- **Daily Planning**: Use find-tasks-by-date with 'today' and get-overview for project status\n- **Team Assignment**: find-project-collaborators \u2192 add-tasks with responsibleUser \u2192 manage-assignments for bulk changes\n- **User Lookup**: find-project-collaborators with just a searchTerm (no projectId) to resolve a name or email to a Todoist user ID across all shared-project collaborators you can access\n- **Task Search**: find-tasks with multiple filters \u2192 update-tasks or complete-tasks based on results\n- **Project Organization**: add-projects \u2192 add-sections \u2192 add-tasks with projectId and sectionId\n- **Progress Reviews**: find-completed-tasks (defaults to last 7 days; optionally use explicit date ranges) \u2192 get-overview for project summaries\n- **Activity Auditing**: find-activity with event/object filters to track changes, monitor team activity, or investigate specific actions\n- **Productivity Analysis**: Use the productivity-analysis prompt for comprehensive analysis combining user-info, get-productivity-stats, and find-completed-tasks data into actionable insights\n- **Project Health Reviews**: get-project-health \u2192 analyze-project-health if stale \u2192 get-project-health with includeContext=true for detailed metrics \u2192 get-workspace-insights for cross-project overview\n\nAlways provide clear, actionable task titles and descriptions. Use the overview tools to give users context about their workload and project status.\n";
|
|
3
|
+
export declare const instructions = "\n## Todoist Task and Project Management Tools\n\nYou have access to comprehensive Todoist management tools for personal productivity and team collaboration. Use these tools to help users manage tasks, projects, sections, comments, and assignments effectively.\n\n### Core Capabilities:\n- Create, update, complete, and search tasks with rich metadata (priorities, due dates, durations, assignments)\n- Manage projects and sections with flexible organization\n- Handle comments and collaboration features\n- Bulk assignment operations for team workflows\n- Get overviews and insights about workload and progress\n\n### Tool Usage Guidelines:\n\n**Task Management:**\n- **add-tasks**: Create tasks (max 25 per call) with content, description, priority (`p1`, `p2`, `p3`, `p4` strings only; `p1` highest and `p4` lowest/default; integers are not accepted), dueString (natural language like \"tomorrow\", \"next Friday\", \"2024-12-25\"), deadlineDate (ISO 8601 format like \"2025-12-31\" for immovable constraints), duration (formats like \"2h\", \"90m\", \"2h30m\"), and assignments to project collaborators\n- **update-tasks**: Modify existing tasks - get task IDs from search results first, only include fields that need changes. Supports priority updates using `p1`/`p2`/`p3`/`p4` string values (`p1` highest, `p4` lowest/default; integers are not accepted), due date updates via dueString and due date removal via \"dueString: remove\", plus deadlineDate (ISO 8601 format like \"2025-12-31\") updates and removals via \"deadlineDate: remove\". **IMPORTANT: Do NOT use update-tasks to reschedule/move task dates \u2014 use reschedule-tasks instead.** update-tasks replaces the entire due string which destroys recurrence patterns on recurring tasks.\n- **reschedule-tasks**: **Always use this tool when moving/rescheduling task due dates to a different date.** This tool preserves recurring schedules and existing time-of-day. Accepts YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. Works for both recurring and non-recurring tasks. Do NOT use update-tasks for rescheduling.\n- **complete-tasks**: Mark tasks as done using task IDs\n- **uncomplete-tasks**: Reopen completed tasks using task IDs\n- **find-tasks**: Search by text, project/section/parent container, responsible user, labels, a raw Todoist `filter` string (e.g. \"today\", \"p1\", \"##Work\", \"(today | overdue) & p1\"), or a saved filter by ID or name (`filterIdOrName`). Requires at least one search parameter. `filter`/`filterIdOrName` cannot be combined with projectId/sectionId/parentId, and `filter` and `filterIdOrName` are mutually exclusive.\n- **find-tasks-by-date**: Get tasks by date range (startDate: YYYY-MM-DD or 'today' which includes overdue tasks) or specific day counts\n- **find-completed-tasks**: View completed tasks by completion date or original due date; if since/until are omitted, defaults to the last 7 days (returns all collaborators unless filtered)\n\n**Project & Organization:**\n- **add-projects/update-projects/find-projects**: Manage project lifecycle with names, descriptions (Markdown), favorites, view styles (list/board/calendar), and workspace assignment for new projects (by name or ID). find-projects returns active projects by default; pass archivedStatus ('archived' or 'all') to include archived projects. Every returned project includes an isArchived field\n- **project-management**: Archive or unarchive projects by ID\n- To delete a project (active or archived), use **delete-object** with type \"project\". Note: workspace projects must be archived first; personal projects can be deleted regardless\n- **project-move**: Move projects between personal and workspace contexts\n- **add-sections/update-sections/find-sections**: Organize tasks within projects using sections\n- **find-goals/add-goals/update-goals**: Manage goals (personal or workspace). Goals track progress via linked tasks\n- **complete-goals**: Complete or uncomplete goals by ID\n- **link-goal-tasks**: Link or unlink tasks to/from a goal\n- **get-overview**: Get comprehensive Markdown overview of entire account or specific project with task hierarchies. Project data includes parentId (sub-projects), folderId (workspace folder membership), and childOrder (sibling ordering)\n- **list-workspaces**: Get all workspaces for the user with details like plan type, role, and settings\n\n**Reminders:**\n- **add-reminders**: Create reminders for tasks. Three types: \"relative\" (minutes before due), \"absolute\" (specific date/time), or \"location\" (geofence-triggered). Each reminder must specify a taskId.\n- **find-reminders**: Find reminders by task ID (returns both time-based and location reminders), or get a specific reminder by ID (use reminderId for time-based, locationReminderId for location-based).\n- **update-reminders**: Update existing reminders. Must specify the reminder type (\"relative\", \"absolute\", or \"location\") and ID.\n- Relative and absolute reminders support an **isUrgent** flag to mark a reminder as urgent.\n- Reminders can be deleted using **delete-object** with type \"reminder\" (time-based) or \"location_reminder\" (location-based).\n\n**Collaboration & Comments:**\n- **add-comments/update-comments/find-comments**: Manage task and project discussions\n- **view-attachment**: View file attachments from comments. Pass the fileUrl from a comment's fileAttachment. Returns images inline, text files as text, and binary files as embedded resources.\n- **find-project-collaborators**: Look up Todoist users (collaborators, teammates) by name or email to get their user ID \u2014 use for \"find/who is X\" questions or any time you need to resolve a person's name to an ID. By default searches collaborators of every shared project the authenticated user can access (plus the authenticated user themselves). An empty result means the person is not a collaborator on any shared project, not that they do not exist. Pass projectId to scope to a single project\n- **manage-assignments**: Bulk assign/unassign/reassign up to 50 tasks with atomic operations and dry-run validation\n\n**Filters:**\n- **find-filters**: List all personal filters or search by name; filters are saved task views using query syntax\n- **add-filters**: Create personal filters with name, query (e.g. \"today & p1\"), color, and favorite flag\n- **update-filters**: Modify existing filters' name, query, color, or favorite status\n\n**Activity & Audit:**\n- **find-activity**: Retrieve recent activity logs to monitor and audit changes. Shows events from all users by default; use initiatorId to filter by specific user. Filter by object type (task/project/comment), event type (added/updated/deleted/completed/uncompleted/archived/unarchived/shared/left), and specific objects (objectId, projectId, taskId). Useful for tracking who did what and when. Note: Date-based filtering is not supported.\n- **get-productivity-stats**: Get comprehensive productivity statistics including daily/weekly completion breakdowns, goal streaks (current, last, max), karma score and trends, and historical karma data. No parameters required.\n\n**Project Health & Insights:**\n- **get-project-health**: Get comprehensive health assessment for a project including completion progress (completed/active counts, percentage), health status (EXCELLENT/ON_TRACK/AT_RISK/CRITICAL), description, and task-level recommendations. Use includeContext=true for detailed metrics (overdue tasks, weekly activity, avg completion time) and full task data. Health data may be stale \u2014 check isStale flag.\n- **get-project-activity-stats**: Get daily and optional weekly activity statistics for a project over a configurable time window (1-12 weeks). Useful for identifying activity trends.\n- **analyze-project-health**: Trigger a new health analysis for a project. Use when health data is stale. The analysis may take time \u2014 use get-project-health afterward to see updated results.\n- **get-workspace-insights**: Get aggregated health and progress insights across all projects in a workspace. Accepts workspace name or ID, with optional project ID filtering.\n\n**General Operations:**\n- **delete-object**: Remove projects, sections, tasks, comments, labels, filters, reminders, or location reminders by type and ID. Deletes both active and archived projects (workspace projects must be archived first; use find-projects with archivedStatus to locate archived projects)\n- **fetch-object**: Fetch a single task, project, comment, or section by its ID\n- **reorder-objects**: Reorder sibling projects or sections, and optionally move projects to a new parent. For projects: set order to reorder siblings, and/or set parentId to move under a new parent (use \"root\" for top level). For sections: set order to reorder within a project\n- **user-info**: Get user details including timezone, goals, and plan information\n\n### Best Practices:\n\n1. **Task Creation**: Write clear, actionable task titles. Use natural language for due dates (\"tomorrow\", \"next Monday\"). Set appropriate priorities and include detailed descriptions when needed.\n\n2. **Search Strategy**: Use specific search queries combining multiple filters for precise results. When searching for tasks, start with broader queries and narrow down as needed.\n\n3. **Assignments & user lookup**: Always validate project collaborators exist before assigning tasks. Use find-project-collaborators to verify user access. Also use find-project-collaborators (with just a searchTerm and no projectId) to resolve a user's ID whenever the user references a person by name or email \u2014 it searches collaborators of all shared projects you can access, plus yourself.\n\n4. **Bulk Operations**: When working with multiple items, prefer bulk tools (complete-tasks, manage-assignments) over individual operations for better performance.\n\n5. **Date Handling**: All dates respect user timezone settings. Use 'today' keyword for dynamic date filtering (includes overdue tasks). **When rescheduling/moving tasks to a different date, always use reschedule-tasks** \u2014 never update-tasks with dueString, as that destroys recurrence on recurring tasks.\n\n6. **Labels**: Use label filtering with AND/OR operators for advanced task organization. Most search tools support labels parameter. Use **find-labels** to discover personal and shared labels \u2014 use label **names** (not IDs) when filtering tasks, and use label **IDs** only with **delete-object** and **update-labels** (for personal label updates). Use **add-labels** to create new personal labels. Use **update-labels** to rename or recolor personal labels (by ID), or to rename shared labels (by name) \u2014 note that shared labels support renaming only, not color/order/favorite changes.\n\n7. **Pagination**: Large result sets use cursor-based pagination. Use limit parameter to control result size (default varies by tool).\n\n8. **Error Handling**: All tools provide detailed error messages and next-step suggestions. Pay attention to validation feedback for corrective actions.\n\n### Common Workflows:\n\n- **Daily Planning**: Use find-tasks-by-date with 'today' and get-overview for project status\n- **Team Assignment**: find-project-collaborators \u2192 add-tasks with responsibleUser \u2192 manage-assignments for bulk changes\n- **User Lookup**: find-project-collaborators with just a searchTerm (no projectId) to resolve a name or email to a Todoist user ID across all shared-project collaborators you can access\n- **Task Search**: find-tasks with multiple filters \u2192 update-tasks or complete-tasks based on results\n- **Project Organization**: add-projects \u2192 add-sections \u2192 add-tasks with projectId and sectionId\n- **Progress Reviews**: find-completed-tasks (defaults to last 7 days; optionally use explicit date ranges) \u2192 get-overview for project summaries\n- **Activity Auditing**: find-activity with event/object filters to track changes, monitor team activity, or investigate specific actions\n- **Productivity Analysis**: Use the productivity-analysis prompt for comprehensive analysis combining user-info, get-productivity-stats, and find-completed-tasks data into actionable insights\n- **Project Health Reviews**: get-project-health \u2192 analyze-project-health if stale \u2192 get-project-health with includeContext=true for detailed metrics \u2192 get-workspace-insights for cross-project overview\n\nAlways provide clear, actionable task titles and descriptions. Use the overview tools to give users context about their workload and project status.\n";
|
|
4
4
|
/**
|
|
5
5
|
* Create the MCP server.
|
|
6
6
|
* @param todoistApiKey - The API key for the todoist account.
|
package/dist/mcp-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGnE,OAAO,EACH,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEhB,MAAM,kBAAkB,CAAA;AAsDzB,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGnE,OAAO,EACH,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEhB,MAAM,kBAAkB,CAAA;AAsDzB,eAAO,MAAM,YAAY,kyYAqGxB,CAAA;AAED;;;;;;GAMG;AACH,iBAAS,YAAY,CAAC,EAClB,aAAa,EACb,OAAO,EACP,QAAa,GAChB,EAAE;IACC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACtB,aA+HA;AAED,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RequestHandler } from 'express';
|
|
2
|
+
type RequireTrustedHostOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* Port-agnostic hostnames permitted in the `Host` and `Origin` headers.
|
|
5
|
+
* IPv6 entries must be bracketed, e.g. `[::1]`. Invalid entries cause
|
|
6
|
+
* {@link requireTrustedHost} to throw at construction time (fail fast).
|
|
7
|
+
*/
|
|
8
|
+
allowedHosts: string[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Loopback hostnames always trusted by {@link requireTrustedHost}. Stored
|
|
12
|
+
* bracketed for IPv6 because `new URL('http://[::1]').hostname` returns `[::1]`.
|
|
13
|
+
*/
|
|
14
|
+
declare const DEFAULT_ALLOWED_HOSTS: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Build the list of hostnames trusted in the Host and Origin headers. Always
|
|
17
|
+
* includes the loopback defaults, plus any names from `allowedHostsEnv`
|
|
18
|
+
* (comma-separated), plus the configured `host` (so an explicit bind — loopback
|
|
19
|
+
* alias like 127.0.1.1, a LAN IP, etc. — is always trusted). Bind wildcards
|
|
20
|
+
* (0.0.0.0/::) are never added because they are never valid Host header values —
|
|
21
|
+
* operators exposing on a wildcard must enumerate client hostnames via
|
|
22
|
+
* ALLOWED_HOSTS.
|
|
23
|
+
*/
|
|
24
|
+
declare function buildAllowedHosts(host: string, allowedHostsEnv?: string): string[];
|
|
25
|
+
/**
|
|
26
|
+
* Express middleware that rejects requests whose `Host` or `Origin` header is
|
|
27
|
+
* not in the trusted allowlist. This is DNS-rebinding protection: a malicious
|
|
28
|
+
* website that rebinds its domain to a victim's loopback address keeps its own
|
|
29
|
+
* `Host`/`Origin`, so string-matching against the allowlist (we never DNS
|
|
30
|
+
* resolve) blocks the request before it can reach the MCP transport.
|
|
31
|
+
*
|
|
32
|
+
* - Missing `Host` → 403.
|
|
33
|
+
* - `Host` hostname not in the allowlist → 403.
|
|
34
|
+
* - `Origin` absent → allowed (non-browser clients such as `mcp-remote`/`curl`
|
|
35
|
+
* send none; the browser attack path always sends one).
|
|
36
|
+
* - `Origin` present but untrusted or unparseable → 403.
|
|
37
|
+
*
|
|
38
|
+
* Throws at construction time if `allowedHosts` contains an entry that isn't a
|
|
39
|
+
* valid authority, so misconfiguration fails fast instead of becoming opaque
|
|
40
|
+
* 403s at request time.
|
|
41
|
+
*/
|
|
42
|
+
declare function requireTrustedHost(options: RequireTrustedHostOptions): RequestHandler;
|
|
43
|
+
export { DEFAULT_ALLOWED_HOSTS, buildAllowedHosts, requireTrustedHost, type RequireTrustedHostOptions, };
|
|
44
|
+
//# sourceMappingURL=require-trusted-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-trusted-host.d.ts","sourceRoot":"","sources":["../../src/middleware/require-trusted-host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,cAAc,EAAY,MAAM,SAAS,CAAA;AAG9E,KAAK,yBAAyB,GAAG;IAC7B;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED;;;GAGG;AACH,QAAA,MAAM,qBAAqB,UAAsC,CAAA;AA4CjE;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkB3E;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,cAAc,CAyC9E;AAED,OAAO,EACH,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,yBAAyB,GACjC,CAAA"}
|
package/dist/tool-helpers.d.ts
CHANGED
|
@@ -71,6 +71,42 @@ export declare function toWildcardQuery(query: string): string;
|
|
|
71
71
|
* @returns Promise resolving to array of matching projects
|
|
72
72
|
*/
|
|
73
73
|
export declare function searchAllProjects(client: TodoistApi, query: string): Promise<Project[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Fetches all active (non-archived) projects across every page.
|
|
76
|
+
*
|
|
77
|
+
* @param client - The Todoist API client
|
|
78
|
+
* @returns Promise resolving to array of active projects
|
|
79
|
+
*/
|
|
80
|
+
export declare function fetchAllActiveProjects(client: TodoistApi): Promise<Project[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Fetches all archived projects across every page.
|
|
83
|
+
*
|
|
84
|
+
* The API has no server-side search for archived projects, so callers that need
|
|
85
|
+
* to filter by name should fetch all and filter client-side with
|
|
86
|
+
* {@link matchesWildcardQuery}.
|
|
87
|
+
*
|
|
88
|
+
* @param client - The Todoist API client
|
|
89
|
+
* @returns Promise resolving to array of archived projects
|
|
90
|
+
*/
|
|
91
|
+
export declare function fetchAllArchivedProjects(client: TodoistApi): Promise<Project[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Compiles a search query into a case-insensitive RegExp using the same wildcard
|
|
94
|
+
* semantics as server-side search (see {@link toWildcardQuery}): `*` matches any
|
|
95
|
+
* sequence, `\*` is a literal asterisk, and every other character (backslashes
|
|
96
|
+
* included) is matched literally. A query without an unescaped `*` matches as a
|
|
97
|
+
* substring; otherwise the whole name must match.
|
|
98
|
+
*
|
|
99
|
+
* Compile once and reuse the result when filtering many names (e.g. archived
|
|
100
|
+
* projects), rather than calling {@link matchesWildcardQuery} per item.
|
|
101
|
+
*/
|
|
102
|
+
export declare function compileWildcardQuery(query: string): RegExp;
|
|
103
|
+
/**
|
|
104
|
+
* Tests whether a name matches a search query using the same wildcard semantics
|
|
105
|
+
* as server-side search. Used for client-side filtering where the API exposes no
|
|
106
|
+
* search endpoint (e.g. archived projects). For bulk filtering, prefer
|
|
107
|
+
* {@link compileWildcardQuery} so the pattern is compiled only once.
|
|
108
|
+
*/
|
|
109
|
+
export declare function matchesWildcardQuery(name: string, query: string): boolean;
|
|
74
110
|
/**
|
|
75
111
|
* Searches labels by name and fetches all matching pages.
|
|
76
112
|
*
|
|
@@ -141,6 +177,7 @@ declare function mapProject(project: Project): {
|
|
|
141
177
|
workspaceId: string | undefined;
|
|
142
178
|
folderId: string | undefined;
|
|
143
179
|
childOrder: number;
|
|
180
|
+
isArchived: boolean;
|
|
144
181
|
};
|
|
145
182
|
/**
|
|
146
183
|
* Map a single Todoist comment to a more structured format, for LLM consumption.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../src/tool-helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../src/tool-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,6 +73,7 @@ declare const addProjects: {
|
|
|
73
73
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
74
74
|
folderId: z.ZodOptional<z.ZodString>;
|
|
75
75
|
childOrder: z.ZodNumber;
|
|
76
|
+
isArchived: z.ZodBoolean;
|
|
76
77
|
}, z.core.$strip>>;
|
|
77
78
|
totalCount: z.ZodNumber;
|
|
78
79
|
};
|
|
@@ -107,6 +108,7 @@ declare const addProjects: {
|
|
|
107
108
|
workspaceId: string | undefined;
|
|
108
109
|
folderId: string | undefined;
|
|
109
110
|
childOrder: number;
|
|
111
|
+
isArchived: boolean;
|
|
110
112
|
}[];
|
|
111
113
|
totalCount: number;
|
|
112
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-projects.d.ts","sourceRoot":"","sources":["../../src/tools/add-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA+CvB,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"add-projects.d.ts","sourceRoot":"","sources":["../../src/tools/add-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA+CvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC8C,CAAA;AAW/D,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -78,6 +78,7 @@ declare const fetchObject: {
|
|
|
78
78
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
79
79
|
folderId: z.ZodOptional<z.ZodString>;
|
|
80
80
|
childOrder: z.ZodNumber;
|
|
81
|
+
isArchived: z.ZodBoolean;
|
|
81
82
|
}, z.core.$strip>, z.ZodObject<{
|
|
82
83
|
id: z.ZodString;
|
|
83
84
|
taskId: z.ZodOptional<z.ZodString>;
|
|
@@ -172,6 +173,7 @@ declare const fetchObject: {
|
|
|
172
173
|
workspaceId: string | undefined;
|
|
173
174
|
folderId: string | undefined;
|
|
174
175
|
childOrder: number;
|
|
176
|
+
isArchived: boolean;
|
|
175
177
|
};
|
|
176
178
|
};
|
|
177
179
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-object.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA4BvB,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"fetch-object.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA4BvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwF8C,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -6,6 +6,11 @@ declare const findProjects: {
|
|
|
6
6
|
searchText: z.ZodOptional<z.ZodString>;
|
|
7
7
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
8
8
|
cursor: z.ZodOptional<z.ZodString>;
|
|
9
|
+
archivedStatus: z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
all: "all";
|
|
11
|
+
active: "active";
|
|
12
|
+
archived: "archived";
|
|
13
|
+
}>>;
|
|
9
14
|
};
|
|
10
15
|
outputSchema: {
|
|
11
16
|
projects: z.ZodArray<z.ZodObject<{
|
|
@@ -42,6 +47,7 @@ declare const findProjects: {
|
|
|
42
47
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
43
48
|
folderId: z.ZodOptional<z.ZodString>;
|
|
44
49
|
childOrder: z.ZodNumber;
|
|
50
|
+
isArchived: z.ZodBoolean;
|
|
45
51
|
}, z.core.$strip>>;
|
|
46
52
|
nextCursor: z.ZodOptional<z.ZodString>;
|
|
47
53
|
totalCount: z.ZodNumber;
|
|
@@ -57,6 +63,7 @@ declare const findProjects: {
|
|
|
57
63
|
limit: number;
|
|
58
64
|
searchText?: string | undefined;
|
|
59
65
|
cursor?: string | undefined;
|
|
66
|
+
archivedStatus?: "all" | "active" | "archived" | undefined;
|
|
60
67
|
}, client: import('@doist/todoist-sdk').TodoistApi): Promise<{
|
|
61
68
|
textContent: string;
|
|
62
69
|
structuredContent: {
|
|
@@ -73,6 +80,7 @@ declare const findProjects: {
|
|
|
73
80
|
workspaceId: string | undefined;
|
|
74
81
|
folderId: string | undefined;
|
|
75
82
|
childOrder: number;
|
|
83
|
+
isArchived: boolean;
|
|
76
84
|
}[];
|
|
77
85
|
nextCursor: string | undefined;
|
|
78
86
|
totalCount: number;
|
|
@@ -81,6 +89,7 @@ declare const findProjects: {
|
|
|
81
89
|
limit: number;
|
|
82
90
|
searchText?: string | undefined;
|
|
83
91
|
cursor?: string | undefined;
|
|
92
|
+
archivedStatus?: "all" | "active" | "archived" | undefined;
|
|
84
93
|
};
|
|
85
94
|
};
|
|
86
95
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-projects.d.ts","sourceRoot":"","sources":["../../src/tools/find-projects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-projects.d.ts","sourceRoot":"","sources":["../../src/tools/find-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA4DvB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4D6C,CAAA;AAkE/D,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -44,6 +44,7 @@ declare const projectManagement: {
|
|
|
44
44
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
45
45
|
folderId: z.ZodOptional<z.ZodString>;
|
|
46
46
|
childOrder: z.ZodNumber;
|
|
47
|
+
isArchived: z.ZodBoolean;
|
|
47
48
|
}, z.core.$strip>;
|
|
48
49
|
success: z.ZodBoolean;
|
|
49
50
|
};
|
|
@@ -71,6 +72,7 @@ declare const projectManagement: {
|
|
|
71
72
|
workspaceId: string | undefined;
|
|
72
73
|
folderId: string | undefined;
|
|
73
74
|
childOrder: number;
|
|
75
|
+
isArchived: boolean;
|
|
74
76
|
};
|
|
75
77
|
success: true;
|
|
76
78
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-management.d.ts","sourceRoot":"","sources":["../../src/tools/project-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB,QAAA,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"project-management.d.ts","sourceRoot":"","sources":["../../src/tools/project-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBwC,CAAA;AAE/D,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -51,6 +51,7 @@ declare const projectMove: {
|
|
|
51
51
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
52
52
|
folderId: z.ZodOptional<z.ZodString>;
|
|
53
53
|
childOrder: z.ZodNumber;
|
|
54
|
+
isArchived: z.ZodBoolean;
|
|
54
55
|
}, z.core.$strip>;
|
|
55
56
|
success: z.ZodBoolean;
|
|
56
57
|
};
|
|
@@ -81,6 +82,7 @@ declare const projectMove: {
|
|
|
81
82
|
workspaceId: string | undefined;
|
|
82
83
|
folderId: string | undefined;
|
|
83
84
|
childOrder: number;
|
|
85
|
+
isArchived: boolean;
|
|
84
86
|
};
|
|
85
87
|
success: true;
|
|
86
88
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-move.d.ts","sourceRoot":"","sources":["../../src/tools/project-move.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkCvB,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"project-move.d.ts","sourceRoot":"","sources":["../../src/tools/project-move.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkCvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C8C,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -72,6 +72,7 @@ declare const updateProjects: {
|
|
|
72
72
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
73
73
|
folderId: z.ZodOptional<z.ZodString>;
|
|
74
74
|
childOrder: z.ZodNumber;
|
|
75
|
+
isArchived: z.ZodBoolean;
|
|
75
76
|
}, z.core.$strip>>;
|
|
76
77
|
totalCount: z.ZodNumber;
|
|
77
78
|
updatedProjectIds: z.ZodArray<z.ZodString>;
|
|
@@ -110,6 +111,7 @@ declare const updateProjects: {
|
|
|
110
111
|
workspaceId: string | undefined;
|
|
111
112
|
folderId: string | undefined;
|
|
112
113
|
childOrder: number;
|
|
114
|
+
isArchived: boolean;
|
|
113
115
|
}[];
|
|
114
116
|
totalCount: number;
|
|
115
117
|
updatedProjectIds: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-projects.d.ts","sourceRoot":"","sources":["../../src/tools/update-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA+CvB,QAAA,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"update-projects.d.ts","sourceRoot":"","sources":["../../src/tools/update-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA+CvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8D2C,CAAA;AA0C/D,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Strip the surrounding brackets from a bracketed IPv6 literal, if present. */
|
|
2
|
+
declare function normalizeListenHost(host: string): string;
|
|
3
|
+
/** Whether `host` refers to a loopback interface (localhost / 127.0.0.0/8 / ::1). */
|
|
4
|
+
declare function isLoopbackHost(host: string): boolean;
|
|
5
|
+
export { isLoopbackHost, normalizeListenHost };
|
|
6
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/utils/host.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,iBAAS,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,qFAAqF;AACrF,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY7C;AAED,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -64,6 +64,7 @@ declare const ProjectSchema: z.ZodObject<{
|
|
|
64
64
|
workspaceId: z.ZodOptional<z.ZodString>;
|
|
65
65
|
folderId: z.ZodOptional<z.ZodString>;
|
|
66
66
|
childOrder: z.ZodNumber;
|
|
67
|
+
isArchived: z.ZodBoolean;
|
|
67
68
|
}, z.core.$strip>;
|
|
68
69
|
/**
|
|
69
70
|
* Schema for a section object returned by tools
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;iBA+Bd,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"output-schemas.d.ts","sourceRoot":"","sources":["../../src/utils/output-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;iBA+Bd,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBjB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;iBAOjB,CAAA;AAEF,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEnD;;;;;GAKG;AACH,iBAAS,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,GAAG,cAAc,CAE5E;AA0BD;;GAEG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;iBAQjB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAYvB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,kBAAkB;;;;iBAItB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMf,CAAA;AAaF;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBlB,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;iBAiBd,CAAA;AAEF;;GAEG;AACH,QAAA,MAAM,aAAa;;;;iBAIjB,CAAA;AAEF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,KAAK,cAAc,EACnB,UAAU,EACV,gBAAgB,GACnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-builders.d.ts","sourceRoot":"","sources":["../../src/utils/response-builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG/C;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAK7D;AAID,KAAK,QAAQ,GAAG;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,KAAK,WAAW,GAAG;IACf,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"response-builders.d.ts","sourceRoot":"","sources":["../../src/utils/response-builders.ts"],"names":[],"mappings":"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"}
|