mcp-sunsama 0.11.0 → 0.12.1
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/CHANGELOG.md +36 -0
- package/CLAUDE.md +1 -1
- package/README.md +2 -0
- package/bun.lock +2 -2
- package/dev/prd-update-task-stream.md +112 -0
- package/dist/main.js +120 -4
- package/dist/schemas.d.ts +37 -6
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +14 -1
- package/dist/schemas.test.js +153 -1
- package/package.json +2 -2
- package/src/main.ts +146 -4
- package/src/schemas.test.ts +218 -0
- package/src/schemas.ts +18 -1
- package/dev/prd-update-task-due-date.md +0 -128
- package/dev/update-task-text-response.json +0 -11
- package/dev/update-task-text.sh +0 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# mcp-sunsama
|
|
2
2
|
|
|
3
|
+
## 0.12.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Update update-task-stream tool to use sunsama-api updateTaskStream method
|
|
8
|
+
|
|
9
|
+
- Replaced direct GraphQL implementation with sunsama-api updateTaskStream method
|
|
10
|
+
- Changed parameter from `streamIds` array to single `streamId` for API compatibility
|
|
11
|
+
- Updated schema validation and tests to match new single stream parameter
|
|
12
|
+
- Removed `recommendedStreamId` parameter as it's not supported by the API method
|
|
13
|
+
- Improved error handling and logging consistency
|
|
14
|
+
|
|
15
|
+
## 0.12.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 763b5b4: feat: add update-task-stream tool for task stream/channel assignment
|
|
20
|
+
|
|
21
|
+
Add new `update-task-stream` tool that allows updating the stream/channel assignment for existing Sunsama tasks. This tool provides the ability to:
|
|
22
|
+
|
|
23
|
+
- Assign tasks to one or more streams/channels
|
|
24
|
+
- Clear stream assignments by providing an empty array
|
|
25
|
+
- Set a recommended stream ID for the task
|
|
26
|
+
- Control response payload size with limitResponsePayload option
|
|
27
|
+
|
|
28
|
+
The tool follows the established patterns for parameter validation, error handling, and response formatting. Includes comprehensive test coverage and updated documentation.
|
|
29
|
+
|
|
30
|
+
- cde6e75: Add update-task-text tool for updating task titles/text
|
|
31
|
+
|
|
32
|
+
Implement new `update-task-text` MCP tool that allows updating the text/title of tasks using the Sunsama API. This tool follows the established patterns for task mutation operations and includes:
|
|
33
|
+
|
|
34
|
+
- Zod schema validation with comprehensive parameter documentation
|
|
35
|
+
- Support for optional recommended stream ID and response payload limiting
|
|
36
|
+
- Full test coverage with edge case validation
|
|
37
|
+
- Updated API documentation and README
|
|
38
|
+
|
|
3
39
|
## 0.11.0
|
|
4
40
|
|
|
5
41
|
### Minor Changes
|
package/CLAUDE.md
CHANGED
|
@@ -130,7 +130,7 @@ Optional:
|
|
|
130
130
|
### Task Operations
|
|
131
131
|
Full CRUD support:
|
|
132
132
|
- **Read**: `get-tasks-by-day`, `get-tasks-backlog`, `get-archived-tasks`, `get-task-by-id`, `get-streams`
|
|
133
|
-
- **Write**: `create-task`, `update-task-complete`, `update-task-planned-time`, `update-task-notes`, `update-task-snooze-date`, `update-task-backlog`, `delete-task`
|
|
133
|
+
- **Write**: `create-task`, `update-task-complete`, `update-task-planned-time`, `update-task-notes`, `update-task-snooze-date`, `update-task-backlog`, `update-task-stream`, `delete-task`
|
|
134
134
|
|
|
135
135
|
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.
|
|
136
136
|
|
package/README.md
CHANGED
|
@@ -97,6 +97,8 @@ Add this configuration to your Claude Desktop MCP settings:
|
|
|
97
97
|
- `update-task-planned-time` - Update the planned time (time estimate) for tasks
|
|
98
98
|
- `update-task-notes` - Update task notes content (requires either `html` or `markdown` parameter, mutually exclusive)
|
|
99
99
|
- `update-task-due-date` - Update the due date for tasks (set or clear due dates)
|
|
100
|
+
- `update-task-text` - Update the text/title of tasks
|
|
101
|
+
- `update-task-stream` - Update the stream/channel assignment for tasks
|
|
100
102
|
- `update-task-snooze-date` - Reschedule tasks to different dates
|
|
101
103
|
- `update-task-backlog` - Move tasks to the backlog
|
|
102
104
|
- `delete-task` - Delete tasks permanently
|
package/bun.lock
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"@types/papaparse": "^5.3.16",
|
|
8
8
|
"fastmcp": "3.3.1",
|
|
9
9
|
"papaparse": "^5.5.3",
|
|
10
|
-
"sunsama-api": "0.
|
|
10
|
+
"sunsama-api": "0.11.0",
|
|
11
11
|
"zod": "3.24.4",
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
@@ -430,7 +430,7 @@
|
|
|
430
430
|
|
|
431
431
|
"strtok3": ["strtok3@10.3.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw=="],
|
|
432
432
|
|
|
433
|
-
"sunsama-api": ["sunsama-api@0.
|
|
433
|
+
"sunsama-api": ["sunsama-api@0.11.0", "", { "dependencies": { "graphql": "^16.11.0", "graphql-tag": "^2.12.6", "marked": "^14.1.3", "tough-cookie": "^5.1.2", "tslib": "^2.8.1", "turndown": "^7.2.0", "yjs": "^13.6.27", "zod": "^3.25.64" } }, "sha512-dfY6oDReWXnUF5TfMxkWLgebGVoZkru4und17+vq2m0AG3Maxyg9NvdC2DL2TTQpChVOz6xpu7AEgndL3s3Qqg=="],
|
|
434
434
|
|
|
435
435
|
"term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="],
|
|
436
436
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Product Requirement Document: update-task-stream Tool
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Implement a new MCP tool `update-task-stream` that allows updating the stream/channel assignment for existing Sunsama tasks.
|
|
5
|
+
|
|
6
|
+
## Research Findings
|
|
7
|
+
|
|
8
|
+
### Current Sunsama API Analysis
|
|
9
|
+
- Tasks have two stream-related fields:
|
|
10
|
+
- `streamIds`: Array of stream IDs that the task is assigned to
|
|
11
|
+
- `recommendedStreamId`: A single recommended stream ID for the task
|
|
12
|
+
- Existing mutations in sunsama-api library do not include an `updateTaskStream` mutation
|
|
13
|
+
- Tasks can be created with stream assignments using the `createTask` mutation with `streamIds` option
|
|
14
|
+
- Streams are accessible via `getStreamsByGroupId()` method
|
|
15
|
+
|
|
16
|
+
### Implementation Decision
|
|
17
|
+
Since the sunsama-api library does not expose an `updateTaskStream` mutation, we need to:
|
|
18
|
+
1. Create a new GraphQL mutation following the existing pattern
|
|
19
|
+
2. Add the mutation to our local queries/mutations
|
|
20
|
+
3. Implement the client method to handle stream updates
|
|
21
|
+
4. Follow the same patterns as other update tools (text, notes, due date, etc.)
|
|
22
|
+
|
|
23
|
+
## Requirements
|
|
24
|
+
|
|
25
|
+
### Tool Name
|
|
26
|
+
`update-task-stream`
|
|
27
|
+
|
|
28
|
+
### Description
|
|
29
|
+
"Update the stream/channel assignment for a task"
|
|
30
|
+
|
|
31
|
+
### Parameters
|
|
32
|
+
- `taskId` (required): The ID of the task to update
|
|
33
|
+
- `streamIds` (required): Array of stream IDs to assign to the task
|
|
34
|
+
- `recommendedStreamId` (optional): Recommended stream ID for the task
|
|
35
|
+
- `limitResponsePayload` (optional): Whether to limit response size (defaults to true)
|
|
36
|
+
|
|
37
|
+
### Implementation Strategy
|
|
38
|
+
|
|
39
|
+
#### 1. GraphQL Mutation
|
|
40
|
+
Create a new mutation following the pattern of other update mutations:
|
|
41
|
+
```graphql
|
|
42
|
+
mutation updateTaskStream($input: UpdateTaskStreamInput!) {
|
|
43
|
+
updateTaskStream(input: $input) {
|
|
44
|
+
...UpdateTaskPayload
|
|
45
|
+
__typename
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### 2. Client Method
|
|
51
|
+
Add a new method `updateTaskStream` to the SunsamaClient class that:
|
|
52
|
+
- Validates taskId and streamIds parameters
|
|
53
|
+
- Calls the GraphQL mutation
|
|
54
|
+
- Returns the standard update result format
|
|
55
|
+
|
|
56
|
+
#### 3. MCP Tool Implementation
|
|
57
|
+
Follow the standard tool pattern:
|
|
58
|
+
- Zod schema for parameter validation
|
|
59
|
+
- Client resolution via `getSunsamaClient()`
|
|
60
|
+
- Error handling and logging
|
|
61
|
+
- JSON response format
|
|
62
|
+
|
|
63
|
+
### Validation Rules
|
|
64
|
+
- `taskId`: Required string, minimum length 1
|
|
65
|
+
- `streamIds`: Required array of strings, minimum 0 items (allows clearing streams)
|
|
66
|
+
- `recommendedStreamId`: Optional string or null
|
|
67
|
+
- `limitResponsePayload`: Optional boolean, defaults to true
|
|
68
|
+
|
|
69
|
+
### Response Format
|
|
70
|
+
JSON object with:
|
|
71
|
+
- `success`: Boolean indicating operation success
|
|
72
|
+
- `taskId`: The ID of the updated task
|
|
73
|
+
- `streamIds`: The new stream IDs assigned
|
|
74
|
+
- `recommendedStreamId`: The new recommended stream ID (if provided)
|
|
75
|
+
- `updatedFields`: Partial task object with updated fields (if not limited)
|
|
76
|
+
|
|
77
|
+
### Integration Points
|
|
78
|
+
|
|
79
|
+
#### Schema Addition
|
|
80
|
+
Add `updateTaskStreamSchema` to `src/schemas.ts` with proper validation.
|
|
81
|
+
|
|
82
|
+
#### Tool Registration
|
|
83
|
+
Add tool to `src/main.ts` following existing patterns with:
|
|
84
|
+
- Parameter extraction and validation
|
|
85
|
+
- Client resolution
|
|
86
|
+
- API call execution
|
|
87
|
+
- Response formatting
|
|
88
|
+
- Error handling and logging
|
|
89
|
+
|
|
90
|
+
#### Documentation Updates
|
|
91
|
+
- Update API documentation resource in main.ts
|
|
92
|
+
- Update README.md with new tool information
|
|
93
|
+
- Add comprehensive test coverage
|
|
94
|
+
|
|
95
|
+
### Testing Requirements
|
|
96
|
+
- Schema validation tests for all parameter combinations
|
|
97
|
+
- Edge cases: empty streamIds array, null recommendedStreamId
|
|
98
|
+
- Invalid parameter formats
|
|
99
|
+
- Required parameter validation
|
|
100
|
+
|
|
101
|
+
### Migration Considerations
|
|
102
|
+
- This is a new tool, no backward compatibility concerns
|
|
103
|
+
- Follows established patterns for easy adoption
|
|
104
|
+
- No breaking changes to existing functionality
|
|
105
|
+
|
|
106
|
+
## Success Criteria
|
|
107
|
+
1. Tool successfully updates task stream assignments
|
|
108
|
+
2. Proper validation of all parameters
|
|
109
|
+
3. Consistent error handling and logging
|
|
110
|
+
4. Comprehensive test coverage
|
|
111
|
+
5. Documentation properly updated
|
|
112
|
+
6. Follows existing code patterns and conventions
|
package/dist/main.js
CHANGED
|
@@ -3,7 +3,7 @@ import { FastMCP } from "fastmcp";
|
|
|
3
3
|
import { httpStreamAuthenticator } from "./auth/http.js";
|
|
4
4
|
import { initializeStdioAuth } from "./auth/stdio.js";
|
|
5
5
|
import { getTransportConfig } from "./config/transport.js";
|
|
6
|
-
import { createTaskSchema, deleteTaskSchema, getArchivedTasksSchema, getStreamsSchema, getTaskByIdSchema, getTasksBacklogSchema, getTasksByDaySchema, getUserSchema, updateTaskBacklogSchema, updateTaskCompleteSchema, updateTaskDueDateSchema, updateTaskNotesSchema, updateTaskPlannedTimeSchema, updateTaskSnoozeDateSchema } from "./schemas.js";
|
|
6
|
+
import { createTaskSchema, deleteTaskSchema, getArchivedTasksSchema, getStreamsSchema, getTaskByIdSchema, getTasksBacklogSchema, getTasksByDaySchema, getUserSchema, updateTaskBacklogSchema, updateTaskCompleteSchema, updateTaskDueDateSchema, updateTaskNotesSchema, updateTaskPlannedTimeSchema, updateTaskSnoozeDateSchema, updateTaskStreamSchema, updateTaskTextSchema } from "./schemas.js";
|
|
7
7
|
import { getSunsamaClient } from "./utils/client-resolver.js";
|
|
8
8
|
import { filterTasksByCompletion } from "./utils/task-filters.js";
|
|
9
9
|
import { trimTasksForResponse } from "./utils/task-trimmer.js";
|
|
@@ -16,7 +16,7 @@ if (transportConfig.transportType === "stdio") {
|
|
|
16
16
|
}
|
|
17
17
|
const server = new FastMCP({
|
|
18
18
|
name: "Sunsama API Server",
|
|
19
|
-
version: "0.
|
|
19
|
+
version: "0.12.1",
|
|
20
20
|
instructions: `
|
|
21
21
|
This MCP server provides access to the Sunsama API for task and project management.
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ Available tools:
|
|
|
24
24
|
- Authentication: login, logout, check authentication status
|
|
25
25
|
- User operations: get current user information
|
|
26
26
|
- Task operations: get tasks by day, get backlog tasks, get archived tasks, get task by ID
|
|
27
|
-
- Task mutations: create tasks, mark complete, delete tasks, reschedule tasks, update planned time, update task notes, update task due date
|
|
27
|
+
- Task mutations: create tasks, mark complete, delete tasks, reschedule tasks, update planned time, update task notes, update task due date, update task text, update task stream assignment
|
|
28
28
|
- Stream operations: get streams/channels for the user's group
|
|
29
29
|
|
|
30
30
|
Authentication is required for all operations. You can either:
|
|
@@ -672,6 +672,107 @@ server.addTool({
|
|
|
672
672
|
}
|
|
673
673
|
}
|
|
674
674
|
});
|
|
675
|
+
server.addTool({
|
|
676
|
+
name: "update-task-text",
|
|
677
|
+
description: "Update the text/title of a task",
|
|
678
|
+
parameters: updateTaskTextSchema,
|
|
679
|
+
execute: async (args, { session, log }) => {
|
|
680
|
+
try {
|
|
681
|
+
// Extract parameters
|
|
682
|
+
const { taskId, text, recommendedStreamId, limitResponsePayload } = args;
|
|
683
|
+
log.info("Updating task text", {
|
|
684
|
+
taskId: taskId,
|
|
685
|
+
text: text,
|
|
686
|
+
recommendedStreamId: recommendedStreamId,
|
|
687
|
+
limitResponsePayload: limitResponsePayload
|
|
688
|
+
});
|
|
689
|
+
// Get the appropriate client based on transport type
|
|
690
|
+
const sunsamaClient = getSunsamaClient(session);
|
|
691
|
+
// Build options object
|
|
692
|
+
const options = {};
|
|
693
|
+
if (recommendedStreamId !== undefined)
|
|
694
|
+
options.recommendedStreamId = recommendedStreamId;
|
|
695
|
+
if (limitResponsePayload !== undefined)
|
|
696
|
+
options.limitResponsePayload = limitResponsePayload;
|
|
697
|
+
// Call sunsamaClient.updateTaskText(taskId, text, options)
|
|
698
|
+
const result = await sunsamaClient.updateTaskText(taskId, text, options);
|
|
699
|
+
log.info("Successfully updated task text", {
|
|
700
|
+
taskId: taskId,
|
|
701
|
+
text: text,
|
|
702
|
+
success: result.success
|
|
703
|
+
});
|
|
704
|
+
return {
|
|
705
|
+
content: [
|
|
706
|
+
{
|
|
707
|
+
type: "text",
|
|
708
|
+
text: JSON.stringify({
|
|
709
|
+
success: result.success,
|
|
710
|
+
taskId: taskId,
|
|
711
|
+
text: text,
|
|
712
|
+
textUpdated: true,
|
|
713
|
+
updatedFields: result.updatedFields
|
|
714
|
+
})
|
|
715
|
+
}
|
|
716
|
+
]
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
catch (error) {
|
|
720
|
+
log.error("Failed to update task text", {
|
|
721
|
+
taskId: args.taskId,
|
|
722
|
+
text: args.text,
|
|
723
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
724
|
+
});
|
|
725
|
+
throw new Error(`Failed to update task text: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
});
|
|
729
|
+
server.addTool({
|
|
730
|
+
name: "update-task-stream",
|
|
731
|
+
description: "Update the stream/channel assignment for a task",
|
|
732
|
+
parameters: updateTaskStreamSchema,
|
|
733
|
+
execute: async (args, { session, log }) => {
|
|
734
|
+
try {
|
|
735
|
+
// Extract parameters
|
|
736
|
+
const { taskId, streamId, limitResponsePayload } = args;
|
|
737
|
+
log.info("Updating task stream assignment", {
|
|
738
|
+
taskId: taskId,
|
|
739
|
+
streamId: streamId,
|
|
740
|
+
limitResponsePayload: limitResponsePayload
|
|
741
|
+
});
|
|
742
|
+
// Get the appropriate client based on transport type
|
|
743
|
+
const sunsamaClient = getSunsamaClient(session);
|
|
744
|
+
// Call the sunsama-api updateTaskStream method
|
|
745
|
+
const result = await sunsamaClient.updateTaskStream(taskId, streamId, limitResponsePayload !== undefined ? limitResponsePayload : true);
|
|
746
|
+
log.info("Successfully updated task stream assignment", {
|
|
747
|
+
taskId: taskId,
|
|
748
|
+
streamId: streamId,
|
|
749
|
+
success: result.success
|
|
750
|
+
});
|
|
751
|
+
return {
|
|
752
|
+
content: [
|
|
753
|
+
{
|
|
754
|
+
type: "text",
|
|
755
|
+
text: JSON.stringify({
|
|
756
|
+
success: result.success,
|
|
757
|
+
taskId: taskId,
|
|
758
|
+
streamId: streamId,
|
|
759
|
+
streamUpdated: true,
|
|
760
|
+
updatedFields: result.updatedFields
|
|
761
|
+
})
|
|
762
|
+
}
|
|
763
|
+
]
|
|
764
|
+
};
|
|
765
|
+
}
|
|
766
|
+
catch (error) {
|
|
767
|
+
log.error("Failed to update task stream assignment", {
|
|
768
|
+
taskId: args.taskId,
|
|
769
|
+
streamId: args.streamId,
|
|
770
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
771
|
+
});
|
|
772
|
+
throw new Error(`Failed to update task stream assignment: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
});
|
|
675
776
|
// Stream Operations
|
|
676
777
|
server.addTool({
|
|
677
778
|
name: "get-streams",
|
|
@@ -775,7 +876,7 @@ Uses HTTP Basic Auth headers (per-request authentication):
|
|
|
775
876
|
- \`streamIds\` (optional): Array of stream IDs to associate with task
|
|
776
877
|
- \`timeEstimate\` (optional): Time estimate in minutes
|
|
777
878
|
- \`dueDate\` (optional): Due date string (ISO format)
|
|
778
|
-
- \`snoozeUntil\` (optional): Snooze until date string (ISO format)
|
|
879
|
+
- \`snoozeUntil\` (optional): Snooze until date string (ISO format) - the date the task is scheduled for
|
|
779
880
|
- \`private\` (optional): Whether the task is private
|
|
780
881
|
- \`taskId\` (optional): Custom task ID
|
|
781
882
|
- Returns: JSON with task creation result
|
|
@@ -818,6 +919,21 @@ Uses HTTP Basic Auth headers (per-request authentication):
|
|
|
818
919
|
- \`limitResponsePayload\` (optional): Whether to limit response size
|
|
819
920
|
- Returns: JSON with update result
|
|
820
921
|
|
|
922
|
+
- **update-task-text**: Update the text/title of a task
|
|
923
|
+
- Parameters:
|
|
924
|
+
- \`taskId\` (required): The ID of the task to update
|
|
925
|
+
- \`text\` (required): The new text/title for the task
|
|
926
|
+
- \`recommendedStreamId\` (optional): Recommended stream ID
|
|
927
|
+
- \`limitResponsePayload\` (optional): Whether to limit response size
|
|
928
|
+
- Returns: JSON with update result
|
|
929
|
+
|
|
930
|
+
- **update-task-stream**: Update the stream/channel assignment for a task
|
|
931
|
+
- Parameters:
|
|
932
|
+
- \`taskId\` (required): The ID of the task to update stream assignment for
|
|
933
|
+
- \`streamId\` (required): Stream ID to assign to the task
|
|
934
|
+
- \`limitResponsePayload\` (optional): Whether to limit response size
|
|
935
|
+
- Returns: JSON with update result
|
|
936
|
+
|
|
821
937
|
### Stream Operations
|
|
822
938
|
- **get-streams**: Get streams for the user's group
|
|
823
939
|
- Parameters: none
|
package/dist/schemas.d.ts
CHANGED
|
@@ -184,6 +184,35 @@ export declare const updateTaskDueDateSchema: z.ZodObject<{
|
|
|
184
184
|
dueDate: string | null;
|
|
185
185
|
limitResponsePayload?: boolean | undefined;
|
|
186
186
|
}>;
|
|
187
|
+
export declare const updateTaskTextSchema: z.ZodObject<{
|
|
188
|
+
taskId: z.ZodString;
|
|
189
|
+
text: z.ZodString;
|
|
190
|
+
recommendedStreamId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
191
|
+
limitResponsePayload: z.ZodOptional<z.ZodBoolean>;
|
|
192
|
+
}, "strip", z.ZodTypeAny, {
|
|
193
|
+
taskId: string;
|
|
194
|
+
text: string;
|
|
195
|
+
limitResponsePayload?: boolean | undefined;
|
|
196
|
+
recommendedStreamId?: string | null | undefined;
|
|
197
|
+
}, {
|
|
198
|
+
taskId: string;
|
|
199
|
+
text: string;
|
|
200
|
+
limitResponsePayload?: boolean | undefined;
|
|
201
|
+
recommendedStreamId?: string | null | undefined;
|
|
202
|
+
}>;
|
|
203
|
+
export declare const updateTaskStreamSchema: z.ZodObject<{
|
|
204
|
+
taskId: z.ZodString;
|
|
205
|
+
streamId: z.ZodString;
|
|
206
|
+
limitResponsePayload: z.ZodOptional<z.ZodBoolean>;
|
|
207
|
+
}, "strip", z.ZodTypeAny, {
|
|
208
|
+
taskId: string;
|
|
209
|
+
streamId: string;
|
|
210
|
+
limitResponsePayload?: boolean | undefined;
|
|
211
|
+
}, {
|
|
212
|
+
taskId: string;
|
|
213
|
+
streamId: string;
|
|
214
|
+
limitResponsePayload?: boolean | undefined;
|
|
215
|
+
}>;
|
|
187
216
|
/**
|
|
188
217
|
* Response Type Schemas (for validation and documentation)
|
|
189
218
|
*/
|
|
@@ -313,10 +342,10 @@ export declare const taskSchema: z.ZodObject<{
|
|
|
313
342
|
createdAt: string;
|
|
314
343
|
updatedAt: string;
|
|
315
344
|
userId: string;
|
|
345
|
+
streamId?: string | undefined;
|
|
316
346
|
description?: string | undefined;
|
|
317
347
|
scheduledDate?: string | undefined;
|
|
318
348
|
completedAt?: string | undefined;
|
|
319
|
-
streamId?: string | undefined;
|
|
320
349
|
}, {
|
|
321
350
|
status: string;
|
|
322
351
|
_id: string;
|
|
@@ -325,10 +354,10 @@ export declare const taskSchema: z.ZodObject<{
|
|
|
325
354
|
createdAt: string;
|
|
326
355
|
updatedAt: string;
|
|
327
356
|
userId: string;
|
|
357
|
+
streamId?: string | undefined;
|
|
328
358
|
description?: string | undefined;
|
|
329
359
|
scheduledDate?: string | undefined;
|
|
330
360
|
completedAt?: string | undefined;
|
|
331
|
-
streamId?: string | undefined;
|
|
332
361
|
}>;
|
|
333
362
|
export declare const streamSchema: z.ZodObject<{
|
|
334
363
|
_id: z.ZodString;
|
|
@@ -488,10 +517,10 @@ export declare const tasksResponseSchema: z.ZodObject<{
|
|
|
488
517
|
createdAt: string;
|
|
489
518
|
updatedAt: string;
|
|
490
519
|
userId: string;
|
|
520
|
+
streamId?: string | undefined;
|
|
491
521
|
description?: string | undefined;
|
|
492
522
|
scheduledDate?: string | undefined;
|
|
493
523
|
completedAt?: string | undefined;
|
|
494
|
-
streamId?: string | undefined;
|
|
495
524
|
}, {
|
|
496
525
|
status: string;
|
|
497
526
|
_id: string;
|
|
@@ -500,10 +529,10 @@ export declare const tasksResponseSchema: z.ZodObject<{
|
|
|
500
529
|
createdAt: string;
|
|
501
530
|
updatedAt: string;
|
|
502
531
|
userId: string;
|
|
532
|
+
streamId?: string | undefined;
|
|
503
533
|
description?: string | undefined;
|
|
504
534
|
scheduledDate?: string | undefined;
|
|
505
535
|
completedAt?: string | undefined;
|
|
506
|
-
streamId?: string | undefined;
|
|
507
536
|
}>, "many">;
|
|
508
537
|
count: z.ZodNumber;
|
|
509
538
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -515,10 +544,10 @@ export declare const tasksResponseSchema: z.ZodObject<{
|
|
|
515
544
|
createdAt: string;
|
|
516
545
|
updatedAt: string;
|
|
517
546
|
userId: string;
|
|
547
|
+
streamId?: string | undefined;
|
|
518
548
|
description?: string | undefined;
|
|
519
549
|
scheduledDate?: string | undefined;
|
|
520
550
|
completedAt?: string | undefined;
|
|
521
|
-
streamId?: string | undefined;
|
|
522
551
|
}[];
|
|
523
552
|
count: number;
|
|
524
553
|
}, {
|
|
@@ -530,10 +559,10 @@ export declare const tasksResponseSchema: z.ZodObject<{
|
|
|
530
559
|
createdAt: string;
|
|
531
560
|
updatedAt: string;
|
|
532
561
|
userId: string;
|
|
562
|
+
streamId?: string | undefined;
|
|
533
563
|
description?: string | undefined;
|
|
534
564
|
scheduledDate?: string | undefined;
|
|
535
565
|
completedAt?: string | undefined;
|
|
536
|
-
streamId?: string | undefined;
|
|
537
566
|
}[];
|
|
538
567
|
count: number;
|
|
539
568
|
}>;
|
|
@@ -620,6 +649,8 @@ export type UpdateTaskSnoozeDateInput = z.infer<typeof updateTaskSnoozeDateSchem
|
|
|
620
649
|
export type UpdateTaskPlannedTimeInput = z.infer<typeof updateTaskPlannedTimeSchema>;
|
|
621
650
|
export type UpdateTaskNotesInput = z.infer<typeof updateTaskNotesSchema>;
|
|
622
651
|
export type UpdateTaskDueDateInput = z.infer<typeof updateTaskDueDateSchema>;
|
|
652
|
+
export type UpdateTaskTextInput = z.infer<typeof updateTaskTextSchema>;
|
|
653
|
+
export type UpdateTaskStreamInput = z.infer<typeof updateTaskStreamSchema>;
|
|
623
654
|
export type User = z.infer<typeof userSchema>;
|
|
624
655
|
export type Task = z.infer<typeof taskSchema>;
|
|
625
656
|
export type Stream = z.infer<typeof streamSchema>;
|
package/dist/schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas.js
CHANGED
|
@@ -53,7 +53,7 @@ export const createTaskSchema = z.object({
|
|
|
53
53
|
streamIds: z.array(z.string()).optional().describe("Array of stream IDs to associate with the task"),
|
|
54
54
|
timeEstimate: z.number().int().positive().optional().describe("Time estimate in minutes"),
|
|
55
55
|
dueDate: z.string().optional().describe("Due date string (ISO format)"),
|
|
56
|
-
snoozeUntil: z.string().optional().describe("Snooze until date string (ISO format)"),
|
|
56
|
+
snoozeUntil: z.string().optional().describe("Snooze until date string (ISO format) - the date the task is scheduled for"),
|
|
57
57
|
private: z.boolean().optional().describe("Whether the task is private"),
|
|
58
58
|
taskId: z.string().optional().describe("Custom task ID (auto-generated if not provided)"),
|
|
59
59
|
});
|
|
@@ -112,6 +112,19 @@ export const updateTaskDueDateSchema = z.object({
|
|
|
112
112
|
]).describe("Due date in ISO format (YYYY-MM-DDTHH:mm:ssZ) or null to clear the due date"),
|
|
113
113
|
limitResponsePayload: z.boolean().optional().describe("Whether to limit the response payload size"),
|
|
114
114
|
});
|
|
115
|
+
// Update task text parameters
|
|
116
|
+
export const updateTaskTextSchema = z.object({
|
|
117
|
+
taskId: z.string().min(1, "Task ID is required").describe("The ID of the task to update"),
|
|
118
|
+
text: z.string().min(1, "Task text is required").describe("The new text/title for the task"),
|
|
119
|
+
recommendedStreamId: z.string().nullable().optional().describe("Recommended stream ID (optional)"),
|
|
120
|
+
limitResponsePayload: z.boolean().optional().describe("Whether to limit the response payload size"),
|
|
121
|
+
});
|
|
122
|
+
// Update task stream parameters
|
|
123
|
+
export const updateTaskStreamSchema = z.object({
|
|
124
|
+
taskId: z.string().min(1, "Task ID is required").describe("The ID of the task to update stream assignment for"),
|
|
125
|
+
streamId: z.string().min(1, "Stream ID is required").describe("Stream ID to assign to the task"),
|
|
126
|
+
limitResponsePayload: z.boolean().optional().describe("Whether to limit the response payload size"),
|
|
127
|
+
});
|
|
115
128
|
/**
|
|
116
129
|
* Response Type Schemas (for validation and documentation)
|
|
117
130
|
*/
|