mcp-sunsama 0.3.0 → 0.5.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.
@@ -1,4 +1,5 @@
1
1
  {
2
+ "includeCoAuthoredBy": false,
2
3
  "permissions": {
3
4
  "allow": [
4
5
  "mcp__context7__resolve-library-id",
@@ -17,7 +18,8 @@
17
18
  "Bash(npm ls:*)",
18
19
  "Bash(cat:*)",
19
20
  "Bash(grep:*)",
20
- "Bash(mkdir:*)"
21
+ "Bash(mkdir:*)",
22
+ "mcp__fetch__fetch"
21
23
  ],
22
24
  "deny": []
23
25
  },
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # mcp-sunsama
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8478b69: Add get-archived-tasks tool with enhanced pagination
8
+
9
+ - Implement get-archived-tasks tool to access archived task history
10
+ - Add smart pagination with limit+1 pattern to determine if more results exist
11
+ - Include pagination metadata (hasMore flag, nextOffset, count) for LLM context
12
+ - Default limit set to 100 for optimal performance
13
+ - Response format includes TSV data with pagination header
14
+ - Update documentation in README.md and CLAUDE.md
15
+
16
+ ## 0.4.0
17
+
18
+ ### Minor Changes
19
+
20
+ - 8955a8f: Update the task integration response object and include the url if available
21
+ - 8955a8f: Add functional HTTP_ENDPOINT env variable
22
+
23
+ ### Patch Changes
24
+
25
+ - 8955a8f: Improve transport configuration type safety with discriminated union and template literal validation
26
+
3
27
  ## 0.3.0
4
28
 
5
29
  ### Minor Changes
package/CLAUDE.md CHANGED
@@ -52,6 +52,14 @@ Two-tier optimization for large datasets:
52
52
 
53
53
  Always apply filtering before trimming for efficiency.
54
54
 
55
+ ### Enhanced Pagination Pattern
56
+ The `get-archived-tasks` tool implements smart pagination:
57
+
58
+ - **Limit+1 Pattern**: Fetches `requestedLimit + 1` to determine if more results exist
59
+ - **Pagination Metadata**: Returns `hasMore` flag, `nextOffset`, and count information
60
+ - **LLM Context**: Provides clear guidance for AI assistants on whether to continue fetching
61
+ - **Response Format**: TSV data with pagination header for optimal processing
62
+
55
63
  ### Schema Architecture
56
64
  All tools use Zod schemas from `schemas.ts`:
57
65
  - Type-safe parameter validation
@@ -118,10 +126,10 @@ Optional:
118
126
 
119
127
  ### Task Operations
120
128
  Full CRUD support:
121
- - **Read**: `get-tasks-by-day`, `get-tasks-backlog`, `get-streams`
129
+ - **Read**: `get-tasks-by-day`, `get-tasks-backlog`, `get-archived-tasks`, `get-streams`
122
130
  - **Write**: `create-task`, `update-task-complete`, `delete-task`
123
131
 
124
- All task operations support completion filtering and response trimming.
132
+ Task read operations support response trimming. `get-tasks-by-day` includes completion filtering. `get-archived-tasks` includes enhanced pagination with hasMore flag for LLM decision-making.
125
133
 
126
134
  ### Testing Tools
127
135
  Use MCP Inspector for debugging: `bun run inspect`
@@ -140,4 +148,4 @@ When updating the version:
140
148
 
141
149
  **IMPORTANT**: Never commit the `dev/` directory or any of its files to git. This directory contains development data including sample API responses and testing data that should remain local only.
142
150
 
143
- **IMPORTANT**: Never include "Claude" in git commit messages. Keep commit messages professional and focused on the actual changes made.
151
+ **Branch Naming Convention**: Use the format `{type}/{short-name}` where `{type}` follows conventional commit naming convention (feat, fix, chore, refactor, docs, style, test, ci, etc.).
package/Dockerfile ADDED
@@ -0,0 +1,35 @@
1
+ # ----- Build Stage -----
2
+ FROM oven/bun:1-alpine AS builder
3
+ WORKDIR /app
4
+
5
+ # Copy package and configuration files
6
+ COPY package.json bun.lock* tsconfig.json ./
7
+
8
+ # Copy source code
9
+ COPY src ./src
10
+
11
+ # Install dependencies and build
12
+ RUN bun install && bun run build
13
+
14
+ # ----- Production Stage -----
15
+ FROM oven/bun:1-alpine
16
+ WORKDIR /app
17
+
18
+ # Copy built artifacts
19
+ COPY --from=builder /app/dist ./dist
20
+
21
+ # Copy package.json for production install
22
+ COPY package.json ./
23
+
24
+ # Install only production dependencies
25
+ RUN bun install --production --frozen-lockfile
26
+
27
+ # Set environment defaults for containerized deployment
28
+ ENV TRANSPORT_TYPE=httpStream
29
+ ENV PORT=3000
30
+
31
+ # Expose HTTP port
32
+ EXPOSE 3000
33
+
34
+ # Start the application
35
+ CMD ["bun", "dist/main.js"]
package/README.md CHANGED
@@ -6,7 +6,7 @@ A Model Context Protocol (MCP) server that provides comprehensive task managemen
6
6
 
7
7
  ### Task Management
8
8
  - **Create Tasks** - Create new tasks with notes, time estimates, due dates, and stream assignments
9
- - **Read Tasks** - Get tasks by day with completion filtering, access backlog tasks
9
+ - **Read Tasks** - Get tasks by day with completion filtering, access backlog tasks, retrieve archived task history
10
10
  - **Update Tasks** - Mark tasks as complete with custom timestamps, reschedule tasks or move to backlog
11
11
  - **Delete Tasks** - Permanently remove tasks from your workspace
12
12
 
@@ -91,6 +91,7 @@ Add this configuration to your Claude Desktop MCP settings:
91
91
  - `create-task` - Create new tasks with optional properties
92
92
  - `get-tasks-by-day` - Get tasks for a specific day with completion filtering
93
93
  - `get-tasks-backlog` - Get backlog tasks
94
+ - `get-archived-tasks` - Get archived tasks with pagination (includes hasMore flag for LLM context)
94
95
  - `update-task-complete` - Mark tasks as complete
95
96
  - `update-task-snooze-date` - Reschedule tasks to different dates or move to backlog
96
97
  - `delete-task` - Delete tasks permanently
package/TODO-0_5_0.md ADDED
@@ -0,0 +1,108 @@
1
+ # Sunsama MCP Server - Implementation Status & Future Plans
2
+
3
+ ## Current Status (⚠️ Update Required)
4
+
5
+ **Package Version**: sunsama-api v0.6.0 (updated 2025-06-20)
6
+
7
+ The MCP server currently implements **61.5% coverage** (8/13 methods) of available methods in the sunsama-api package.
8
+
9
+ **NEW METHODS AVAILABLE**: 5 additional methods are now available in sunsama-api v0.6.0 that need MCP tool implementation.
10
+
11
+ ### Implemented Tools
12
+
13
+ #### User Operations
14
+ - ✅ `get-user` → `SunsamaClient.getUser()`
15
+ - Returns user profile, timezone, and group information
16
+
17
+ #### Task Operations
18
+ - ✅ `get-tasks-by-day` → `SunsamaClient.getTasksByDay(day, timezone?)`
19
+ - Supports completion filtering (`all`, `incomplete`, `completed`)
20
+ - Includes task trimming for response optimization
21
+ - ✅ `get-tasks-backlog` → `SunsamaClient.getTasksBacklog()`
22
+ - Returns all backlog tasks with trimming optimization
23
+ - ✅ `create-task` → `SunsamaClient.createTask(text, options?)`
24
+ - Full parameter support: notes, timeEstimate, dueDate, streamIds, etc.
25
+ - ✅ `update-task-complete` → `SunsamaClient.updateTaskComplete(taskId, completeOn?, limitResponsePayload?)`
26
+ - Mark tasks as complete with optional timestamp
27
+ - ✅ `delete-task` → `SunsamaClient.deleteTask(taskId, limitResponsePayload?, wasTaskMerged?)`
28
+ - Permanent task deletion
29
+ - ✅ `update-task-snooze-date` → `SunsamaClient.updateTaskSnoozeDate(taskId, newDay, options?)`
30
+ - Reschedule tasks or move to backlog
31
+
32
+ #### Stream Operations
33
+ - ✅ `get-streams` → `SunsamaClient.getStreamsByGroupId()`
34
+ - Returns all available streams (channels) for the user's group
35
+
36
+ ## Future Enhancements
37
+
38
+ ### 1. Archived Tasks (Priority: Medium)
39
+ **Status**: Research needed - API exists but not in sunsama-api package
40
+
41
+ **Description**: Implement support for retrieving archived tasks
42
+ - **API Endpoint**: `/get-archived-tasks` (confirmed in dev/user-stories/)
43
+ - **Parameters**: `userId`, `groupId`, `offset`, `limit`, optional filters
44
+ - **Returns**: Archived tasks with `archivedAt` timestamps
45
+
46
+ **Implementation Steps**:
47
+ 1. **Upstream Work**: Add `getArchivedTasks()` method to sunsama-api package
48
+ 2. **MCP Tool**: Implement `get-archived-tasks` tool with:
49
+ - Pagination support (`offset`, `limit`)
50
+ - Date range filtering (`dateFrom`, `dateTo`)
51
+ - Stream filtering
52
+ - Response trimming optimization
53
+
54
+ ### 2. Enhanced Task Management (Priority: Low)
55
+ **Potential Extensions**:
56
+ - Task bulk operations (bulk delete, bulk complete)
57
+ - Task search/filtering by content
58
+ - Task time tracking integration
59
+ - Task dependency management
60
+
61
+ ### 3. Advanced Stream Operations (Priority: Low)
62
+ **Potential Extensions**:
63
+ - Stream creation/modification (if API supports)
64
+ - Stream-specific task queries
65
+ - Stream statistics/analytics
66
+
67
+ ### 4. Performance Optimizations (Priority: Low)
68
+ **Current Optimizations**:
69
+ - ✅ Task filtering before processing
70
+ - ✅ Response payload trimming (60-80% reduction)
71
+ - ✅ Dual transport support (stdio/HTTP)
72
+
73
+ **Future Optimizations**:
74
+ - Response caching for frequently accessed data
75
+ - Batch operations for multiple task updates
76
+ - Streaming responses for large datasets
77
+
78
+ ## Development Notes
79
+
80
+ ### Architecture Strengths
81
+ - Complete dual transport support (stdio + HTTP stream)
82
+ - Robust authentication handling per transport type
83
+ - Comprehensive error handling and validation
84
+ - Response optimization strategies
85
+ - Type-safe parameter validation with Zod schemas
86
+
87
+ ### Maintenance Tasks
88
+ - ✅ Version synchronization (package.json ↔ src/main.ts)
89
+ - Monitor sunsama-api updates for new methods
90
+ - Update dependencies regularly
91
+ - Maintain test coverage
92
+
93
+ ### Contributing Guidelines
94
+ - Follow existing patterns in `src/main.ts`
95
+ - Use Zod schemas for parameter validation
96
+ - Implement response trimming for large datasets
97
+ - Support both transport modes
98
+ - Add comprehensive tool descriptions
99
+
100
+ ## Conclusion
101
+
102
+ The current implementation provides complete coverage of the sunsama-api package with a robust, well-architected foundation. Future enhancements should focus on:
103
+
104
+ 1. **Upstream API Development**: Contributing archived tasks functionality to sunsama-api
105
+ 2. **Advanced Features**: Building on the solid foundation for enhanced productivity workflows
106
+ 3. **Performance**: Continuous optimization as usage scales
107
+
108
+ The codebase is well-positioned for extension and maintenance with clear patterns and comprehensive documentation.
package/TODO.md ADDED
@@ -0,0 +1,152 @@
1
+ # Sunsama MCP Server - v0.6.0 Implementation Plan
2
+
3
+ ## 📊 Status Overview
4
+ - **sunsama-api Version**: 0.6.0 (updated from 0.3.1)
5
+ - **Currently Implemented**: 8/13 methods (61.5% coverage)
6
+ - **New Methods Available**: 5 methods ready for implementation
7
+
8
+ ## 🚀 High Priority - Implement First
9
+
10
+ ### 1. `get-archived-tasks` Tool
11
+ **API Method**: `getArchivedTasks(offset?, limit?)`
12
+ - **Impact**: High - Access to archived task history
13
+ - **Complexity**: Low - Standard read operation with pagination
14
+ - **Sample Data**: Available at `/dev/sample-data/get-archived-tasks/`
15
+
16
+ **Implementation Tasks**:
17
+ - [ ] Add `getArchivedTasksSchema` to `src/schemas.ts`
18
+ - [ ] Implement tool in `src/main.ts`
19
+ - [ ] Apply task trimming optimization
20
+ - [ ] Use TSV output format
21
+ - [ ] Add pagination support (offset/limit)
22
+ - [ ] Test with MCP Inspector
23
+
24
+ **Schema**:
25
+ ```typescript
26
+ export const getArchivedTasksSchema = z.object({
27
+ offset: z.number().min(0).optional(),
28
+ limit: z.number().min(1).max(100).optional()
29
+ });
30
+ ```
31
+
32
+ ### 2. `get-task-by-id` Tool
33
+ **API Method**: `getTaskById(taskId)`
34
+ - **Impact**: High - Essential for task debugging and inspection
35
+ - **Complexity**: Low - Simple lookup operation
36
+ - **Returns**: Single Task object or null
37
+
38
+ **Implementation Tasks**:
39
+ - [ ] Add `getTaskByIdSchema` to `src/schemas.ts`
40
+ - [ ] Implement tool in `src/main.ts`
41
+ - [ ] Use JSON output format (single object)
42
+ - [ ] Handle null responses gracefully
43
+ - [ ] Add comprehensive error handling
44
+ - [ ] Test with valid and invalid task IDs
45
+
46
+ **Schema**:
47
+ ```typescript
48
+ export const getTaskByIdSchema = z.object({
49
+ taskId: z.string().min(1).describe("The ID of the task to retrieve")
50
+ });
51
+ ```
52
+
53
+ ## 🔧 Medium Priority - Implement After High Priority
54
+
55
+ ### 3. `update-task-notes` Tool
56
+ **API Method**: `updateTaskNotes(taskId, notes, notesMarkdown, options?)`
57
+ - **Impact**: Medium - Enhanced task content management
58
+ - **Complexity**: High - Requires CollabSnapshot handling
59
+ - **Research Needed**: CollabSnapshot format and usage
60
+
61
+ **Implementation Tasks**:
62
+ - [ ] Research CollabSnapshot parameter requirements
63
+ - [ ] Add `updateTaskNotesSchema` to `src/schemas.ts`
64
+ - [ ] Implement tool in `src/main.ts`
65
+ - [ ] Handle HTML and Markdown note formats
66
+ - [ ] Test with existing tasks that have notes
67
+ - [ ] Validate collaborative editing scenarios
68
+
69
+ ## 🛠️ Low Priority - Utility Functions
70
+
71
+ ### 4. `get-user-timezone` Tool
72
+ **API Method**: `getUserTimezone()`
73
+ - **Impact**: Low - Utility function (already used internally)
74
+ - **Complexity**: Low - Simple getter
75
+ - **Note**: Already called internally by `get-tasks-by-day`
76
+
77
+ **Implementation Tasks**:
78
+ - [ ] Add schema (no parameters)
79
+ - [ ] Implement standalone tool
80
+ - [ ] Return timezone string
81
+ - [ ] Test timezone format consistency
82
+
83
+ ### 5. `generate-task-id` Tool
84
+ **API Method**: `SunsamaClient.generateTaskId()` (static)
85
+ - **Impact**: Low - Developer convenience
86
+ - **Complexity**: Low - Static method call
87
+ - **Note**: No authentication required
88
+
89
+ **Implementation Tasks**:
90
+ - [ ] Add schema (no parameters)
91
+ - [ ] Implement tool using static method
92
+ - [ ] Return 24-character hex string
93
+ - [ ] Test ID format compatibility
94
+
95
+ ## 📋 Implementation Patterns
96
+
97
+ ### Standard Tool Structure
98
+ ```typescript
99
+ server.addTool({
100
+ name: "tool-name",
101
+ description: "Clear description of functionality",
102
+ parameters: toolSchema,
103
+ execute: async (args, {session, log}) => {
104
+ try {
105
+ log.info("Operation starting", { params });
106
+
107
+ const sunsamaClient = getSunsamaClient(session as SessionData | null);
108
+ const result = await sunsamaClient.methodName(args);
109
+
110
+ // Apply optimizations if needed
111
+ const optimizedResult = optimizeResponse(result);
112
+
113
+ log.info("Operation completed", { resultInfo });
114
+
115
+ return {
116
+ content: [{
117
+ type: "text",
118
+ text: formatOutput(optimizedResult)
119
+ }]
120
+ };
121
+ } catch (error) {
122
+ log.error("Operation failed", { error: error.message });
123
+ throw new Error(`Failed to [operation]: ${error.message}`);
124
+ }
125
+ }
126
+ });
127
+ ```
128
+
129
+ ### Response Format Guidelines
130
+ - **Arrays**: Use TSV format with `toTsv()` and apply `trimTasksForResponse()`
131
+ - **Single Objects**: Use JSON format with `JSON.stringify(obj, null, 2)`
132
+ - **Large Datasets**: Always apply trimming optimizations
133
+
134
+ ## 🎯 Success Criteria
135
+ - [ ] All 5 new methods have corresponding MCP tools
136
+ - [ ] 100% test coverage with MCP Inspector
137
+ - [ ] Response optimization applied consistently
138
+ - [ ] Error handling follows established patterns
139
+ - [ ] Documentation updated in server instructions
140
+ - [ ] Version bump in `src/main.ts` matches `package.json`
141
+
142
+ ## 🔄 Development Workflow
143
+ 1. **Implement High Priority tools first** (archived tasks, task by ID)
144
+ 2. **Test each tool individually** before proceeding
145
+ 3. **Update schemas and imports in batches**
146
+ 4. **Apply consistent patterns** from existing tools
147
+ 5. **Update server version** and documentation
148
+ 6. **Final integration testing** with full tool suite
149
+
150
+ ---
151
+ *Target: Complete implementation of all 5 new sunsama-api v0.6.0 methods*
152
+ *Goal: Achieve 100% coverage (13/13 methods implemented)*
package/bun.lock CHANGED
@@ -5,9 +5,9 @@
5
5
  "name": "mcp-sunsama",
6
6
  "dependencies": {
7
7
  "@types/papaparse": "^5.3.16",
8
- "fastmcp": "2.1.3",
8
+ "fastmcp": "3.3.1",
9
9
  "papaparse": "^5.5.3",
10
- "sunsama-api": "0.3.0",
10
+ "sunsama-api": "0.6.1",
11
11
  "zod": "3.24.4",
12
12
  },
13
13
  "devDependencies": {
@@ -90,7 +90,7 @@
90
90
 
91
91
  "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
92
92
 
93
- "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
93
+ "ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
94
94
 
95
95
  "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
96
96
 
@@ -114,11 +114,7 @@
114
114
 
115
115
  "ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="],
116
116
 
117
- "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
118
-
119
- "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
120
-
121
- "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
117
+ "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="],
122
118
 
123
119
  "content-disposition": ["content-disposition@1.0.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg=="],
124
120
 
@@ -144,7 +140,7 @@
144
140
 
145
141
  "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
146
142
 
147
- "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
143
+ "emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="],
148
144
 
149
145
  "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
150
146
 
@@ -184,7 +180,7 @@
184
180
 
185
181
  "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
186
182
 
187
- "fastmcp": ["fastmcp@2.1.3", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.10.2", "@standard-schema/spec": "^1.0.0", "execa": "^9.5.2", "file-type": "^20.4.1", "fuse.js": "^7.1.0", "mcp-proxy": "^3.0.3", "strict-event-emitter-types": "^2.0.0", "undici": "^7.8.0", "uri-templates": "^0.2.0", "xsschema": "0.3.0-beta.1", "yargs": "^17.7.2", "zod": "^3.25.12", "zod-to-json-schema": "^3.24.5" }, "bin": { "fastmcp": "dist/bin/fastmcp.js" } }, "sha512-T3KJAsgSVQC1bhMBLA6m0XcVbgZFcy5Ydw+tiAGwppAwbzYJ7UsIcwuRNS11xsZSB91rnWTucVX4p9wR909Eqg=="],
183
+ "fastmcp": ["fastmcp@3.3.1", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.12.1", "@standard-schema/spec": "^1.0.0", "execa": "^9.6.0", "file-type": "^21.0.0", "fuse.js": "^7.1.0", "mcp-proxy": "^5.0.0", "strict-event-emitter-types": "^2.0.0", "undici": "^7.10.0", "uri-templates": "^0.2.0", "xsschema": "0.3.0-beta.3", "yargs": "^18.0.0", "zod": "^3.25.56", "zod-to-json-schema": "^3.24.5" }, "bin": { "fastmcp": "dist/bin/fastmcp.js" } }, "sha512-08tcvSJoWUpimxEX0DBf9uGPDb//5BPNImfpScPIUGobcaA4CABnLzbJYvO5KPwozOyFk1Qi/9QSAHE/dzSHMw=="],
188
184
 
189
185
  "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="],
190
186
 
@@ -192,7 +188,7 @@
192
188
 
193
189
  "figures": ["figures@6.1.0", "", { "dependencies": { "is-unicode-supported": "^2.0.0" } }, "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg=="],
194
190
 
195
- "file-type": ["file-type@20.5.0", "", { "dependencies": { "@tokenizer/inflate": "^0.2.6", "strtok3": "^10.2.0", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" } }, "sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg=="],
191
+ "file-type": ["file-type@21.0.0", "", { "dependencies": { "@tokenizer/inflate": "^0.2.7", "strtok3": "^10.2.2", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" } }, "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg=="],
196
192
 
197
193
  "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
198
194
 
@@ -212,6 +208,8 @@
212
208
 
213
209
  "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
214
210
 
211
+ "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="],
212
+
215
213
  "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
216
214
 
217
215
  "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
@@ -252,8 +250,6 @@
252
250
 
253
251
  "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
254
252
 
255
- "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
256
-
257
253
  "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
258
254
 
259
255
  "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
@@ -272,19 +268,23 @@
272
268
 
273
269
  "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
274
270
 
271
+ "isomorphic.js": ["isomorphic.js@0.2.5", "", {}, "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw=="],
272
+
275
273
  "js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
276
274
 
277
275
  "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
278
276
 
279
277
  "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="],
280
278
 
279
+ "lib0": ["lib0@0.2.108", "", { "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { "0gentesthtml": "bin/gentesthtml.js", "0serve": "bin/0serve.js", "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js" } }, "sha512-+3eK/B0SqYoZiQu9fNk4VEc6EX8cb0Li96tPGKgugzoGj/OdRdREtuTLvUW+mtinoB2mFiJjSqOJBIaMkAGhxQ=="],
280
+
281
281
  "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="],
282
282
 
283
283
  "lodash.startcase": ["lodash.startcase@4.4.0", "", {}, "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg=="],
284
284
 
285
285
  "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
286
286
 
287
- "mcp-proxy": ["mcp-proxy@3.3.0", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.11.4", "eventsource": "^4.0.0", "yargs": "^17.7.2" }, "bin": { "mcp-proxy": "dist/bin/mcp-proxy.js" } }, "sha512-xyFKQEZ64HC7lxScBHjb5fxiPoyJjjkPhwH5hWUT0oL/ttCpMGZDJrYZRGFKVJiLLkrZPAkHnMGkI+WMlyD/cg=="],
287
+ "mcp-proxy": ["mcp-proxy@5.1.0", "", { "dependencies": { "@modelcontextprotocol/sdk": "^1.12.1", "eventsource": "^4.0.0", "yargs": "^18.0.0" }, "bin": { "mcp-proxy": "dist/bin/mcp-proxy.js" } }, "sha512-6pfAdXFOvfpqse9dMLuQo8WTSFdD0al8vhr0Nx5EWv+dR6aTAHphdQj9NUP2xej2bhaWzJ5p8BRwbvXufOjJHA=="],
288
288
 
289
289
  "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
290
290
 
@@ -372,8 +372,6 @@
372
372
 
373
373
  "read-yaml-file": ["read-yaml-file@1.1.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA=="],
374
374
 
375
- "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
376
-
377
375
  "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="],
378
376
 
379
377
  "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
@@ -418,7 +416,7 @@
418
416
 
419
417
  "strict-event-emitter-types": ["strict-event-emitter-types@2.0.0", "", {}, "sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA=="],
420
418
 
421
- "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
419
+ "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
422
420
 
423
421
  "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
424
422
 
@@ -428,7 +426,7 @@
428
426
 
429
427
  "strtok3": ["strtok3@10.3.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw=="],
430
428
 
431
- "sunsama-api": ["sunsama-api@0.3.0", "", { "dependencies": { "graphql": "^16.11.0", "graphql-tag": "^2.12.6", "tough-cookie": "^5.1.2", "tslib": "^2.8.1", "zod": "^3.25.64" } }, "sha512-xXgwm2WSVHpHU/0yhOK/3TUQlRSPtQS0UF/+q0liHJiZh1LjUJwgnmaK5rZcEvJ2s1rFVqWgm6GTMZ3t2r5ynw=="],
429
+ "sunsama-api": ["sunsama-api@0.6.1", "", { "dependencies": { "graphql": "^16.11.0", "graphql-tag": "^2.12.6", "tough-cookie": "^5.1.2", "tslib": "^2.8.1", "yjs": "^13.6.27", "zod": "^3.25.64" } }, "sha512-4GhOdrAMo99JIXv9GZg7+NQJu1uPRgGbmnKFWTCNzXYiSVicNPNv27vgqHa3kJtPo19x8sBf4gOYZYlw6b1Wgw=="],
432
430
 
433
431
  "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="],
434
432
 
@@ -472,17 +470,19 @@
472
470
 
473
471
  "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
474
472
 
475
- "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
473
+ "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="],
476
474
 
477
475
  "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
478
476
 
479
- "xsschema": ["xsschema@0.3.0-beta.1", "", { "peerDependencies": { "@valibot/to-json-schema": "^1.0.0", "arktype": "^2.1.16", "effect": "^3.14.5", "sury": "^10.0.0-rc", "zod": "^3.25.0", "zod-to-json-schema": "^3.24.5" }, "optionalPeers": ["@valibot/to-json-schema", "arktype", "effect", "sury", "zod", "zod-to-json-schema"] }, "sha512-Z7ZlPKLTc8iUKVfic0Lr66NB777wJqZl3JVLIy1vaNxx6NNTuylYm4wbK78Sgg7kHwaPRqFnuT4IliQM1sDxvg=="],
477
+ "xsschema": ["xsschema@0.3.0-beta.3", "", { "peerDependencies": { "@valibot/to-json-schema": "^1.0.0", "arktype": "^2.1.16", "effect": "^3.14.5", "sury": "^10.0.0-rc", "zod": "^3.25.0", "zod-to-json-schema": "^3.24.5" }, "optionalPeers": ["@valibot/to-json-schema", "arktype", "effect", "sury", "zod", "zod-to-json-schema"] }, "sha512-8fKI0Kqxs7npz3ElebNCeGdS0HDuS2qL3IqHK5O53yCdh419hcr3GQillwN39TNFasHjbMLQ+DjSwpY0NONdnQ=="],
480
478
 
481
479
  "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
482
480
 
483
- "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
481
+ "yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="],
484
482
 
485
- "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
483
+ "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="],
484
+
485
+ "yjs": ["yjs@13.6.27", "", { "dependencies": { "lib0": "^0.2.99" } }, "sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw=="],
486
486
 
487
487
  "yoctocolors": ["yoctocolors@2.1.1", "", {}, "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ=="],
488
488
 
@@ -502,7 +502,9 @@
502
502
 
503
503
  "body-parser/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
504
504
 
505
- "fastmcp/zod": ["zod@3.25.56", "", {}, "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ=="],
505
+ "cliui/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
506
+
507
+ "fastmcp/zod": ["zod@3.25.64", "", {}, "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g=="],
506
508
 
507
509
  "http-errors/statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
508
510
 
@@ -512,6 +514,16 @@
512
514
 
513
515
  "raw-body/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
514
516
 
517
+ "string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
518
+
515
519
  "sunsama-api/zod": ["zod@3.25.64", "", {}, "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g=="],
520
+
521
+ "wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
522
+
523
+ "cliui/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
524
+
525
+ "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
526
+
527
+ "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
516
528
  }
517
529
  }