@open-sunsama/mcp 1.0.0 → 1.3.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/README.md +52 -14
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -18
- package/build/index.js.map +1 -1
- package/build/lib/api-client.d.ts +168 -26
- package/build/lib/api-client.d.ts.map +1 -1
- package/build/lib/api-client.js +81 -4
- package/build/lib/api-client.js.map +1 -1
- package/build/lib/define-tool.d.ts +17 -0
- package/build/lib/define-tool.d.ts.map +1 -0
- package/build/lib/define-tool.js +101 -0
- package/build/lib/define-tool.js.map +1 -0
- package/build/server.d.ts +19 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +40 -0
- package/build/server.js.map +1 -0
- package/build/tools/calendar-events.d.ts +28 -0
- package/build/tools/calendar-events.d.ts.map +1 -0
- package/build/tools/calendar-events.js +209 -0
- package/build/tools/calendar-events.js.map +1 -0
- package/build/tools/ideas.d.ts +5 -0
- package/build/tools/ideas.d.ts.map +1 -0
- package/build/tools/ideas.js +106 -0
- package/build/tools/ideas.js.map +1 -0
- package/build/tools/subtasks.d.ts.map +1 -1
- package/build/tools/subtasks.js +6 -5
- package/build/tools/subtasks.js.map +1 -1
- package/build/tools/tasks.d.ts.map +1 -1
- package/build/tools/tasks.js +24 -12
- package/build/tools/tasks.js.map +1 -1
- package/build/tools/time-blocks.d.ts.map +1 -1
- package/build/tools/time-blocks.js +44 -28
- package/build/tools/time-blocks.js.map +1 -1
- package/build/tools/user.d.ts.map +1 -1
- package/build/tools/user.js +3 -2
- package/build/tools/user.js.map +1 -1
- package/package.json +16 -8
package/README.md
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
# Open Sunsama MCP Server
|
|
2
2
|
|
|
3
|
-
An MCP (Model Context Protocol) server that enables AI agents like Claude, Cursor, and other AI assistants to manage your tasks, time blocks, and
|
|
3
|
+
An MCP (Model Context Protocol) server that enables AI agents like Claude, ChatGPT, Cursor, and other AI assistants to manage your tasks, time blocks, calendar, and Ideas through the Open Sunsama API.
|
|
4
|
+
|
|
5
|
+
> **Most people don't need this package.** Open Sunsama hosts the same server at
|
|
6
|
+
> **`https://api.opensunsama.com/mcp`** with OAuth sign-in. Add that URL to Claude
|
|
7
|
+
> (Settings → Customize → Connectors), ChatGPT (Developer mode → Plugins), Claude Code, or
|
|
8
|
+
> Cursor, then sign in and allow access. There's no API key. See the
|
|
9
|
+
> [setup guides](https://opensunsama.com/docs/mcp/overview).
|
|
10
|
+
>
|
|
11
|
+
> Use this npm package (the local stdio server + API key) for clients without OAuth
|
|
12
|
+
> support, scripts, CI, or self-hosted instances that aren't reachable from the internet.
|
|
4
13
|
|
|
5
14
|
## Features
|
|
6
15
|
|
|
7
16
|
- **Task Management**: Create, update, complete, delete, and schedule tasks
|
|
8
17
|
- **Time Blocking**: Schedule focused work sessions on your calendar
|
|
9
18
|
- **Subtasks**: Break down tasks into smaller actionable items
|
|
19
|
+
- **Ideas**: Manage boards, columns, cards, and checklists, and promote ideas to tasks
|
|
10
20
|
- **User Profile**: Access and update user preferences
|
|
11
21
|
- **Full CRUD Operations**: Complete API coverage for AI-assisted productivity
|
|
12
22
|
|
|
@@ -18,9 +28,9 @@ An MCP (Model Context Protocol) server that enables AI agents like Claude, Curso
|
|
|
18
28
|
|
|
19
29
|
## Installation
|
|
20
30
|
|
|
21
|
-
### Quick Start (
|
|
31
|
+
### Quick Start (local server)
|
|
22
32
|
|
|
23
|
-
No installation required
|
|
33
|
+
No installation required. Use `npx` to run it directly:
|
|
24
34
|
|
|
25
35
|
```json
|
|
26
36
|
{
|
|
@@ -39,25 +49,32 @@ No installation required! Use `npx` to run directly:
|
|
|
39
49
|
### From Source (Development)
|
|
40
50
|
|
|
41
51
|
```bash
|
|
42
|
-
# Clone the repository
|
|
52
|
+
# Clone the repository (the mcp package is a workspace of the monorepo)
|
|
43
53
|
git clone https://github.com/ShadowWalker2014/open-sunsama.git
|
|
44
|
-
cd open-sunsama
|
|
45
|
-
|
|
46
|
-
# Install dependencies
|
|
54
|
+
cd open-sunsama
|
|
47
55
|
bun install
|
|
48
56
|
|
|
49
57
|
# Build
|
|
50
|
-
bun run build
|
|
58
|
+
bun run --filter=@open-sunsama/mcp build
|
|
51
59
|
```
|
|
52
60
|
|
|
61
|
+
The tools live in `src/tools/` and are shared with the hosted server: the API imports
|
|
62
|
+
`createOpenSunsamaMcpServer` from `@open-sunsama/mcp/server` and serves it at `/mcp`.
|
|
63
|
+
|
|
53
64
|
### Getting an API Key
|
|
54
65
|
|
|
66
|
+
The fastest way: in the web app, open **Settings → MCP**, expand **Use an API key instead**, and click **Generate key**. The configs are filled in for you.
|
|
67
|
+
|
|
68
|
+
Or create one with custom scopes:
|
|
69
|
+
|
|
55
70
|
1. Open the Open Sunsama web app
|
|
56
71
|
2. Go to **Settings** → **API Keys**
|
|
57
72
|
3. Click **"Generate New Key"**
|
|
58
73
|
4. Select scopes:
|
|
59
74
|
- `tasks:read` and `tasks:write` for task management
|
|
60
|
-
- `time-blocks:read` and `time-blocks:write` for
|
|
75
|
+
- `time-blocks:read` and `time-blocks:write` for time blocks
|
|
76
|
+
- `calendar:read` for events from connected Google, Outlook and iCloud calendars
|
|
77
|
+
- `ideas:read` and `ideas:write` for idea boards, columns, cards, and checklists
|
|
61
78
|
- `user:read` and `user:write` for profile access
|
|
62
79
|
5. Copy the key (it's only shown once!)
|
|
63
80
|
|
|
@@ -221,7 +238,13 @@ If you prefer Bun over Node.js:
|
|
|
221
238
|
| `update_time_block` | Update time block details |
|
|
222
239
|
| `delete_time_block` | Remove a time block |
|
|
223
240
|
| `link_task_to_time_block` | Link/unlink a task to a time block |
|
|
224
|
-
| `get_schedule_for_day` | Get
|
|
241
|
+
| `get_schedule_for_day` | Get a day's calendar events and time blocks in one view |
|
|
242
|
+
|
|
243
|
+
### Calendar Events (read-only)
|
|
244
|
+
|
|
245
|
+
| Tool | Description |
|
|
246
|
+
|------|-------------|
|
|
247
|
+
| `list_calendar_events` | List events from connected Google, Outlook and iCloud calendars for a day or range |
|
|
225
248
|
|
|
226
249
|
### User Profile
|
|
227
250
|
|
|
@@ -253,7 +276,8 @@ Once configured, you can ask your AI assistant things like:
|
|
|
253
276
|
- "What subtasks are left on my project task?"
|
|
254
277
|
|
|
255
278
|
### Planning
|
|
256
|
-
- "Help me plan my day - I need to do code review
|
|
279
|
+
- "Help me plan my day around my meetings - I need to do code review and write docs"
|
|
280
|
+
- "When am I free tomorrow afternoon?"
|
|
257
281
|
- "Schedule my tasks for this week based on priority"
|
|
258
282
|
|
|
259
283
|
## Testing
|
|
@@ -264,8 +288,8 @@ Run the test suite to verify your setup:
|
|
|
264
288
|
# Set your API key
|
|
265
289
|
export OPENSUNSAMA_API_KEY=os_your-api-key-here
|
|
266
290
|
|
|
267
|
-
# Run all tests
|
|
268
|
-
bun run test
|
|
291
|
+
# Run all tests against the live API
|
|
292
|
+
bun run test:live
|
|
269
293
|
|
|
270
294
|
# Or run individual test suites
|
|
271
295
|
bun run test:tasks
|
|
@@ -273,6 +297,16 @@ bun run test:time-blocks
|
|
|
273
297
|
bun run test:subtasks
|
|
274
298
|
```
|
|
275
299
|
|
|
300
|
+
### Hosted server OAuth flow
|
|
301
|
+
|
|
302
|
+
`tests/oauth-e2e.ts` drives the full OAuth connector flow (discovery, registration, PKCE,
|
|
303
|
+
consent, token refresh, revocation, CIMD clients, API keys) with the official MCP SDK
|
|
304
|
+
client. Point it at a local API, since it creates a throwaway account:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
MCP_E2E_API_URL=http://localhost:3001 bun run tests/oauth-e2e.ts
|
|
308
|
+
```
|
|
309
|
+
|
|
276
310
|
### Using MCP Inspector
|
|
277
311
|
|
|
278
312
|
For interactive testing and debugging:
|
|
@@ -308,7 +342,7 @@ Make sure you've set the API key in your MCP configuration:
|
|
|
308
342
|
|
|
309
343
|
1. Restart your AI assistant after changing the configuration
|
|
310
344
|
2. Check the configuration file path is correct
|
|
311
|
-
3. Verify
|
|
345
|
+
3. Verify `npx` is available in your PATH (try running `npx -v` in terminal)
|
|
312
346
|
|
|
313
347
|
### "Authentication required" or 401 Errors
|
|
314
348
|
|
|
@@ -330,6 +364,7 @@ mcp/
|
|
|
330
364
|
│ ├── tasks.ts # Task management tools
|
|
331
365
|
│ ├── time-blocks.ts# Time block tools
|
|
332
366
|
│ ├── subtasks.ts # Subtask tools
|
|
367
|
+
│ ├── calendar-events.ts # Calendar event tools (read-only)
|
|
333
368
|
│ └── user.ts # User profile tools
|
|
334
369
|
├── tests/
|
|
335
370
|
│ └── test-all.ts # Comprehensive test suite
|
|
@@ -361,6 +396,9 @@ bun run dev # Watch mode for development
|
|
|
361
396
|
| `tasks:write` | Create, update, delete tasks |
|
|
362
397
|
| `time-blocks:read` | List and view time blocks |
|
|
363
398
|
| `time-blocks:write` | Create, update, delete time blocks |
|
|
399
|
+
| `calendar:read` | List events from connected calendars |
|
|
400
|
+
| `ideas:read` | List idea boards, columns, cards, and checklists |
|
|
401
|
+
| `ideas:write` | Create, update, delete, and reorder ideas |
|
|
364
402
|
| `user:read` | View user profile |
|
|
365
403
|
| `user:write` | Update user profile |
|
|
366
404
|
|
package/build/index.d.ts
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
* A Model Context Protocol server that enables AI agents to manage tasks,
|
|
6
6
|
* time blocks, and calendars through the Open Sunsama API.
|
|
7
7
|
*
|
|
8
|
+
* Most users should connect the hosted server instead — no API key needed:
|
|
9
|
+
* https://api.opensunsama.com/mcp (OAuth; see https://opensunsama.com/docs/mcp/overview)
|
|
10
|
+
*
|
|
8
11
|
* Usage:
|
|
9
12
|
* OPENSUNSAMA_API_KEY=os_xxx open-sunsama-mcp
|
|
10
13
|
* OPENSUNSAMA_API_KEY=os_xxx OPENSUNSAMA_API_URL=http://localhost:3001 open-sunsama-mcp (for self-hosted/local)
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
|
package/build/index.js
CHANGED
|
@@ -5,17 +5,15 @@
|
|
|
5
5
|
* A Model Context Protocol server that enables AI agents to manage tasks,
|
|
6
6
|
* time blocks, and calendars through the Open Sunsama API.
|
|
7
7
|
*
|
|
8
|
+
* Most users should connect the hosted server instead — no API key needed:
|
|
9
|
+
* https://api.opensunsama.com/mcp (OAuth; see https://opensunsama.com/docs/mcp/overview)
|
|
10
|
+
*
|
|
8
11
|
* Usage:
|
|
9
12
|
* OPENSUNSAMA_API_KEY=os_xxx open-sunsama-mcp
|
|
10
13
|
* OPENSUNSAMA_API_KEY=os_xxx OPENSUNSAMA_API_URL=http://localhost:3001 open-sunsama-mcp (for self-hosted/local)
|
|
11
14
|
*/
|
|
12
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
13
15
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
|
-
import {
|
|
15
|
-
import { registerTaskTools } from "./tools/tasks.js";
|
|
16
|
-
import { registerTimeBlockTools } from "./tools/time-blocks.js";
|
|
17
|
-
import { registerSubtaskTools } from "./tools/subtasks.js";
|
|
18
|
-
import { registerUserTools } from "./tools/user.js";
|
|
16
|
+
import { createOpenSunsamaMcpServer } from "./server.js";
|
|
19
17
|
// Configuration from environment variables
|
|
20
18
|
const API_KEY = process.env.OPENSUNSAMA_API_KEY;
|
|
21
19
|
const API_URL = process.env.OPENSUNSAMA_API_URL || "https://api.opensunsama.com";
|
|
@@ -30,21 +28,10 @@ if (!API_KEY) {
|
|
|
30
28
|
console.error(" Settings → API Keys → Generate New Key");
|
|
31
29
|
process.exit(1);
|
|
32
30
|
}
|
|
33
|
-
|
|
34
|
-
const server = new McpServer({
|
|
35
|
-
name: "open-sunsama",
|
|
36
|
-
version: "1.0.0",
|
|
37
|
-
});
|
|
38
|
-
// Create the API client
|
|
39
|
-
const apiClient = new ApiClient({
|
|
31
|
+
const server = createOpenSunsamaMcpServer({
|
|
40
32
|
baseUrl: API_URL,
|
|
41
33
|
apiKey: API_KEY,
|
|
42
34
|
});
|
|
43
|
-
// Register all tools
|
|
44
|
-
registerTaskTools(server, apiClient);
|
|
45
|
-
registerTimeBlockTools(server, apiClient);
|
|
46
|
-
registerSubtaskTools(server, apiClient);
|
|
47
|
-
registerUserTools(server, apiClient);
|
|
48
35
|
// Log to stderr (safe for stdio transport)
|
|
49
36
|
console.error(`Open Sunsama MCP Server starting...`);
|
|
50
37
|
console.error(`API URL: ${API_URL}`);
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,2CAA2C;AAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;AAEjF,kCAAkC;AAClC,IAAI,CAAC,OAAO,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,0BAA0B,CAAC;IACxC,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,OAAO;CAChB,CAAC,CAAC;AAEH,2CAA2C;AAC3C,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACrD,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;AACrC,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAEzD,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,2BAA2B;AAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -4,9 +4,14 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export interface ApiClientConfig {
|
|
6
6
|
baseUrl: string;
|
|
7
|
-
|
|
7
|
+
/** API key sent as `X-API-Key` (the stdio CLI). */
|
|
8
|
+
apiKey?: string;
|
|
9
|
+
/** Extra headers, e.g. `Authorization: Bearer <oauth token>` (remote MCP). */
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
/** Custom fetch, e.g. the API's in-process `app.fetch` for the remote MCP. */
|
|
12
|
+
fetch?: typeof globalThis.fetch;
|
|
8
13
|
}
|
|
9
|
-
export interface ApiResponse<T> {
|
|
14
|
+
export interface ApiResponse<T, M = PaginationMeta> {
|
|
10
15
|
success: boolean;
|
|
11
16
|
data?: T;
|
|
12
17
|
error?: {
|
|
@@ -15,17 +20,19 @@ export interface ApiResponse<T> {
|
|
|
15
20
|
statusCode: number;
|
|
16
21
|
errors?: Record<string, string[]>;
|
|
17
22
|
};
|
|
18
|
-
meta?:
|
|
19
|
-
page: number;
|
|
20
|
-
limit: number;
|
|
21
|
-
total: number;
|
|
22
|
-
totalPages: number;
|
|
23
|
-
};
|
|
23
|
+
meta?: M;
|
|
24
24
|
message?: string;
|
|
25
25
|
}
|
|
26
|
+
export interface PaginationMeta {
|
|
27
|
+
page: number;
|
|
28
|
+
limit: number;
|
|
29
|
+
total: number;
|
|
30
|
+
totalPages: number;
|
|
31
|
+
}
|
|
26
32
|
export declare class ApiClient {
|
|
27
33
|
private baseUrl;
|
|
28
|
-
private
|
|
34
|
+
private authHeaders;
|
|
35
|
+
private fetchImpl;
|
|
29
36
|
constructor(config: ApiClientConfig);
|
|
30
37
|
private request;
|
|
31
38
|
listTasks(params?: {
|
|
@@ -37,20 +44,50 @@ export declare class ApiClient {
|
|
|
37
44
|
sortBy?: "priority" | "position" | "createdAt";
|
|
38
45
|
page?: number;
|
|
39
46
|
limit?: number;
|
|
40
|
-
}): Promise<ApiResponse<Task[]>>;
|
|
41
|
-
getTask(id: string): Promise<ApiResponse<Task>>;
|
|
42
|
-
createTask(data: CreateTaskInput): Promise<ApiResponse<Task>>;
|
|
43
|
-
updateTask(id: string, data: UpdateTaskInput): Promise<ApiResponse<Task>>;
|
|
47
|
+
}): Promise<ApiResponse<Task[], PaginationMeta>>;
|
|
48
|
+
getTask(id: string): Promise<ApiResponse<Task, PaginationMeta>>;
|
|
49
|
+
createTask(data: CreateTaskInput): Promise<ApiResponse<Task, PaginationMeta>>;
|
|
50
|
+
updateTask(id: string, data: UpdateTaskInput): Promise<ApiResponse<Task, PaginationMeta>>;
|
|
44
51
|
deleteTask(id: string): Promise<ApiResponse<{
|
|
45
52
|
message: string;
|
|
46
|
-
}>>;
|
|
47
|
-
reorderTasks(date: string | "backlog", taskIds: string[]): Promise<ApiResponse<Task[]>>;
|
|
48
|
-
listSubtasks(taskId: string): Promise<ApiResponse<Subtask[]>>;
|
|
49
|
-
createSubtask(taskId: string, data: CreateSubtaskInput): Promise<ApiResponse<Subtask>>;
|
|
50
|
-
updateSubtask(taskId: string, subtaskId: string, data: UpdateSubtaskInput): Promise<ApiResponse<Subtask>>;
|
|
53
|
+
}, PaginationMeta>>;
|
|
54
|
+
reorderTasks(date: string | "backlog", taskIds: string[]): Promise<ApiResponse<Task[], PaginationMeta>>;
|
|
55
|
+
listSubtasks(taskId: string): Promise<ApiResponse<Subtask[], PaginationMeta>>;
|
|
56
|
+
createSubtask(taskId: string, data: CreateSubtaskInput): Promise<ApiResponse<Subtask, PaginationMeta>>;
|
|
57
|
+
updateSubtask(taskId: string, subtaskId: string, data: UpdateSubtaskInput): Promise<ApiResponse<Subtask, PaginationMeta>>;
|
|
51
58
|
deleteSubtask(taskId: string, subtaskId: string): Promise<ApiResponse<{
|
|
52
59
|
message: string;
|
|
53
|
-
}>>;
|
|
60
|
+
}, PaginationMeta>>;
|
|
61
|
+
listIdeaBoards(): Promise<ApiResponse<IdeaBoard[], PaginationMeta>>;
|
|
62
|
+
createIdeaBoard(data: CreateIdeaBoardInput): Promise<ApiResponse<IdeaBoard & {
|
|
63
|
+
columns: IdeaColumn[];
|
|
64
|
+
}, PaginationMeta>>;
|
|
65
|
+
updateIdeaBoard(id: string, data: Partial<CreateIdeaBoardInput>): Promise<ApiResponse<IdeaBoard, PaginationMeta>>;
|
|
66
|
+
deleteIdeaBoard(id: string): Promise<ApiResponse<never, PaginationMeta>>;
|
|
67
|
+
reorderIdeaBoards(boardIds: string[]): Promise<ApiResponse<IdeaBoard[], PaginationMeta>>;
|
|
68
|
+
listIdeaColumns(boardId: string): Promise<ApiResponse<IdeaColumn[], PaginationMeta>>;
|
|
69
|
+
createIdeaColumn(data: CreateIdeaColumnInput): Promise<ApiResponse<IdeaColumn, PaginationMeta>>;
|
|
70
|
+
updateIdeaColumn(id: string, data: Partial<Pick<IdeaColumn, "name" | "position">>): Promise<ApiResponse<IdeaColumn, PaginationMeta>>;
|
|
71
|
+
deleteIdeaColumn(id: string): Promise<ApiResponse<never, PaginationMeta>>;
|
|
72
|
+
reorderIdeaColumns(boardId: string, columnIds: string[]): Promise<ApiResponse<IdeaColumn[], PaginationMeta>>;
|
|
73
|
+
listIdeas(filters: {
|
|
74
|
+
boardId?: string;
|
|
75
|
+
columnId?: string;
|
|
76
|
+
completed?: boolean;
|
|
77
|
+
}): Promise<ApiResponse<Idea[], PaginationMeta>>;
|
|
78
|
+
createIdea(data: CreateIdeaInput): Promise<ApiResponse<Idea, PaginationMeta>>;
|
|
79
|
+
updateIdea(id: string, data: UpdateIdeaInput): Promise<ApiResponse<Idea, PaginationMeta>>;
|
|
80
|
+
deleteIdea(id: string): Promise<ApiResponse<never, PaginationMeta>>;
|
|
81
|
+
reorderIdeas(columnId: string, ideaIds: string[]): Promise<ApiResponse<Idea[], PaginationMeta>>;
|
|
82
|
+
promoteIdea(id: string, scheduledDate?: string | null): Promise<ApiResponse<{
|
|
83
|
+
idea: Idea;
|
|
84
|
+
task: Task;
|
|
85
|
+
}, PaginationMeta>>;
|
|
86
|
+
listIdeaSubtasks(ideaId: string): Promise<ApiResponse<IdeaSubtask[], PaginationMeta>>;
|
|
87
|
+
createIdeaSubtask(ideaId: string, data: CreateIdeaSubtaskInput): Promise<ApiResponse<IdeaSubtask, PaginationMeta>>;
|
|
88
|
+
updateIdeaSubtask(ideaId: string, id: string, data: UpdateIdeaSubtaskInput): Promise<ApiResponse<IdeaSubtask, PaginationMeta>>;
|
|
89
|
+
deleteIdeaSubtask(ideaId: string, id: string): Promise<ApiResponse<never, PaginationMeta>>;
|
|
90
|
+
reorderIdeaSubtasks(ideaId: string, subtaskIds: string[]): Promise<ApiResponse<IdeaSubtask[], PaginationMeta>>;
|
|
54
91
|
listTimeBlocks(params?: {
|
|
55
92
|
date?: string;
|
|
56
93
|
from?: string;
|
|
@@ -58,17 +95,94 @@ export declare class ApiClient {
|
|
|
58
95
|
taskId?: string;
|
|
59
96
|
page?: number;
|
|
60
97
|
limit?: number;
|
|
61
|
-
}): Promise<ApiResponse<TimeBlock[]>>;
|
|
62
|
-
getTimeBlock(id: string): Promise<ApiResponse<TimeBlock>>;
|
|
63
|
-
createTimeBlock(data: CreateTimeBlockInput): Promise<ApiResponse<TimeBlock>>;
|
|
64
|
-
updateTimeBlock(id: string, data: UpdateTimeBlockInput): Promise<ApiResponse<TimeBlock>>;
|
|
98
|
+
}): Promise<ApiResponse<TimeBlock[], PaginationMeta>>;
|
|
99
|
+
getTimeBlock(id: string): Promise<ApiResponse<TimeBlock, PaginationMeta>>;
|
|
100
|
+
createTimeBlock(data: CreateTimeBlockInput): Promise<ApiResponse<TimeBlock, PaginationMeta>>;
|
|
101
|
+
updateTimeBlock(id: string, data: UpdateTimeBlockInput): Promise<ApiResponse<TimeBlock, PaginationMeta>>;
|
|
65
102
|
deleteTimeBlock(id: string): Promise<ApiResponse<{
|
|
66
103
|
message: string;
|
|
67
|
-
}>>;
|
|
68
|
-
|
|
69
|
-
|
|
104
|
+
}, PaginationMeta>>;
|
|
105
|
+
listCalendarEvents(params: {
|
|
106
|
+
date?: string;
|
|
107
|
+
from?: string;
|
|
108
|
+
to?: string;
|
|
109
|
+
}): Promise<ApiResponse<CalendarEvent[], CalendarEventsMeta>>;
|
|
110
|
+
getMe(): Promise<ApiResponse<User, PaginationMeta>>;
|
|
111
|
+
updateMe(data: UpdateUserInput): Promise<ApiResponse<User, PaginationMeta>>;
|
|
70
112
|
}
|
|
71
113
|
export type TaskPriority = "P0" | "P1" | "P2" | "P3";
|
|
114
|
+
export interface IdeaBoard {
|
|
115
|
+
id: string;
|
|
116
|
+
name: string;
|
|
117
|
+
icon: string;
|
|
118
|
+
color: string;
|
|
119
|
+
position: number;
|
|
120
|
+
}
|
|
121
|
+
export interface IdeaColumn {
|
|
122
|
+
id: string;
|
|
123
|
+
boardId: string;
|
|
124
|
+
name: string;
|
|
125
|
+
position: number;
|
|
126
|
+
}
|
|
127
|
+
export interface Idea {
|
|
128
|
+
id: string;
|
|
129
|
+
boardId: string;
|
|
130
|
+
columnId: string;
|
|
131
|
+
title: string;
|
|
132
|
+
notes: string | null;
|
|
133
|
+
estimatedMins: number | null;
|
|
134
|
+
priority: TaskPriority;
|
|
135
|
+
position: number;
|
|
136
|
+
completedAt: string | null;
|
|
137
|
+
promotedTaskId: string | null;
|
|
138
|
+
subtaskCount?: number;
|
|
139
|
+
subtaskDoneCount?: number;
|
|
140
|
+
}
|
|
141
|
+
export interface IdeaSubtask {
|
|
142
|
+
id: string;
|
|
143
|
+
ideaId: string;
|
|
144
|
+
title: string;
|
|
145
|
+
completed: boolean;
|
|
146
|
+
position: number;
|
|
147
|
+
}
|
|
148
|
+
export interface CreateIdeaBoardInput {
|
|
149
|
+
name: string;
|
|
150
|
+
icon?: string;
|
|
151
|
+
color?: string;
|
|
152
|
+
position?: number;
|
|
153
|
+
}
|
|
154
|
+
export interface CreateIdeaColumnInput {
|
|
155
|
+
boardId: string;
|
|
156
|
+
name: string;
|
|
157
|
+
position?: number;
|
|
158
|
+
}
|
|
159
|
+
export interface CreateIdeaInput {
|
|
160
|
+
boardId: string;
|
|
161
|
+
columnId: string;
|
|
162
|
+
title: string;
|
|
163
|
+
notes?: string | null;
|
|
164
|
+
estimatedMins?: number | null;
|
|
165
|
+
priority?: TaskPriority;
|
|
166
|
+
position?: number;
|
|
167
|
+
}
|
|
168
|
+
export interface UpdateIdeaInput {
|
|
169
|
+
title?: string;
|
|
170
|
+
notes?: string | null;
|
|
171
|
+
estimatedMins?: number | null;
|
|
172
|
+
priority?: TaskPriority;
|
|
173
|
+
columnId?: string;
|
|
174
|
+
position?: number;
|
|
175
|
+
completedAt?: string | null;
|
|
176
|
+
}
|
|
177
|
+
export interface CreateIdeaSubtaskInput {
|
|
178
|
+
title: string;
|
|
179
|
+
position?: number;
|
|
180
|
+
}
|
|
181
|
+
export interface UpdateIdeaSubtaskInput {
|
|
182
|
+
title?: string;
|
|
183
|
+
completed?: boolean;
|
|
184
|
+
position?: number;
|
|
185
|
+
}
|
|
72
186
|
export interface Task {
|
|
73
187
|
id: string;
|
|
74
188
|
userId: string;
|
|
@@ -76,6 +190,7 @@ export interface Task {
|
|
|
76
190
|
notes: string | null;
|
|
77
191
|
scheduledDate: string | null;
|
|
78
192
|
estimatedMins: number | null;
|
|
193
|
+
actualMins: number | null;
|
|
79
194
|
priority: TaskPriority;
|
|
80
195
|
completedAt: string | null;
|
|
81
196
|
position: number;
|
|
@@ -95,6 +210,7 @@ export interface UpdateTaskInput {
|
|
|
95
210
|
notes?: string | null;
|
|
96
211
|
scheduledDate?: string | null;
|
|
97
212
|
estimatedMins?: number | null;
|
|
213
|
+
actualMins?: number | null;
|
|
98
214
|
priority?: TaskPriority;
|
|
99
215
|
completedAt?: string | null;
|
|
100
216
|
position?: number;
|
|
@@ -153,6 +269,32 @@ export interface UpdateTimeBlockInput {
|
|
|
153
269
|
color?: string | null;
|
|
154
270
|
position?: number;
|
|
155
271
|
}
|
|
272
|
+
export interface CalendarEvent {
|
|
273
|
+
id: string;
|
|
274
|
+
calendarId: string;
|
|
275
|
+
title: string;
|
|
276
|
+
description: string | null;
|
|
277
|
+
location: string | null;
|
|
278
|
+
/** ISO instant. All-day events start at UTC midnight of their date. */
|
|
279
|
+
startTime: string;
|
|
280
|
+
/** ISO instant. All-day events end at UTC midnight after their last date. */
|
|
281
|
+
endTime: string;
|
|
282
|
+
isAllDay: boolean;
|
|
283
|
+
status: "confirmed" | "tentative" | "cancelled" | null;
|
|
284
|
+
responseStatus: "accepted" | "declined" | "tentative" | "needsAction" | null;
|
|
285
|
+
calendar: {
|
|
286
|
+
id: string;
|
|
287
|
+
name: string;
|
|
288
|
+
color: string | null;
|
|
289
|
+
} | null;
|
|
290
|
+
}
|
|
291
|
+
export interface CalendarEventsMeta {
|
|
292
|
+
total: number;
|
|
293
|
+
/** The user's timezone, which date-only ranges were interpreted in. */
|
|
294
|
+
timezone: string;
|
|
295
|
+
fromDate?: string;
|
|
296
|
+
toDate?: string;
|
|
297
|
+
}
|
|
156
298
|
export interface User {
|
|
157
299
|
id: string;
|
|
158
300
|
email: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
package/build/lib/api-client.js
CHANGED
|
@@ -4,10 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export class ApiClient {
|
|
6
6
|
baseUrl;
|
|
7
|
-
|
|
7
|
+
authHeaders;
|
|
8
|
+
fetchImpl;
|
|
8
9
|
constructor(config) {
|
|
9
10
|
this.baseUrl = config.baseUrl.replace(/\/$/, ""); // Remove trailing slash
|
|
10
|
-
this.
|
|
11
|
+
this.authHeaders = {
|
|
12
|
+
...(config.apiKey ? { "X-API-Key": config.apiKey } : {}),
|
|
13
|
+
...config.headers,
|
|
14
|
+
};
|
|
15
|
+
this.fetchImpl = config.fetch ?? globalThis.fetch;
|
|
11
16
|
}
|
|
12
17
|
async request(method, path, body, query) {
|
|
13
18
|
let url = `${this.baseUrl}${path}`;
|
|
@@ -25,7 +30,7 @@ export class ApiClient {
|
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
const headers = {
|
|
28
|
-
|
|
33
|
+
...this.authHeaders,
|
|
29
34
|
"Content-Type": "application/json",
|
|
30
35
|
};
|
|
31
36
|
const options = {
|
|
@@ -36,7 +41,7 @@ export class ApiClient {
|
|
|
36
41
|
options.body = JSON.stringify(body);
|
|
37
42
|
}
|
|
38
43
|
try {
|
|
39
|
-
const response = await
|
|
44
|
+
const response = await this.fetchImpl(url, options);
|
|
40
45
|
const data = await response.json();
|
|
41
46
|
return data;
|
|
42
47
|
}
|
|
@@ -92,6 +97,70 @@ export class ApiClient {
|
|
|
92
97
|
async deleteSubtask(taskId, subtaskId) {
|
|
93
98
|
return this.request("DELETE", `/tasks/${taskId}/subtasks/${subtaskId}`);
|
|
94
99
|
}
|
|
100
|
+
// Ideas
|
|
101
|
+
async listIdeaBoards() {
|
|
102
|
+
return this.request("GET", "/ideas/boards");
|
|
103
|
+
}
|
|
104
|
+
async createIdeaBoard(data) {
|
|
105
|
+
return this.request("POST", "/ideas/boards", data);
|
|
106
|
+
}
|
|
107
|
+
async updateIdeaBoard(id, data) {
|
|
108
|
+
return this.request("PATCH", `/ideas/boards/${id}`, data);
|
|
109
|
+
}
|
|
110
|
+
async deleteIdeaBoard(id) {
|
|
111
|
+
return this.request("DELETE", `/ideas/boards/${id}`);
|
|
112
|
+
}
|
|
113
|
+
async reorderIdeaBoards(boardIds) {
|
|
114
|
+
return this.request("POST", "/ideas/boards/reorder", { boardIds });
|
|
115
|
+
}
|
|
116
|
+
async listIdeaColumns(boardId) {
|
|
117
|
+
return this.request("GET", "/ideas/columns", undefined, { boardId });
|
|
118
|
+
}
|
|
119
|
+
async createIdeaColumn(data) {
|
|
120
|
+
return this.request("POST", "/ideas/columns", data);
|
|
121
|
+
}
|
|
122
|
+
async updateIdeaColumn(id, data) {
|
|
123
|
+
return this.request("PATCH", `/ideas/columns/${id}`, data);
|
|
124
|
+
}
|
|
125
|
+
async deleteIdeaColumn(id) {
|
|
126
|
+
return this.request("DELETE", `/ideas/columns/${id}`);
|
|
127
|
+
}
|
|
128
|
+
async reorderIdeaColumns(boardId, columnIds) {
|
|
129
|
+
return this.request("POST", "/ideas/columns/reorder", { boardId, columnIds });
|
|
130
|
+
}
|
|
131
|
+
async listIdeas(filters) {
|
|
132
|
+
return this.request("GET", "/ideas", undefined, filters);
|
|
133
|
+
}
|
|
134
|
+
async createIdea(data) {
|
|
135
|
+
return this.request("POST", "/ideas", data);
|
|
136
|
+
}
|
|
137
|
+
async updateIdea(id, data) {
|
|
138
|
+
return this.request("PATCH", `/ideas/${id}`, data);
|
|
139
|
+
}
|
|
140
|
+
async deleteIdea(id) {
|
|
141
|
+
return this.request("DELETE", `/ideas/${id}`);
|
|
142
|
+
}
|
|
143
|
+
async reorderIdeas(columnId, ideaIds) {
|
|
144
|
+
return this.request("POST", "/ideas/reorder", { columnId, ideaIds });
|
|
145
|
+
}
|
|
146
|
+
async promoteIdea(id, scheduledDate) {
|
|
147
|
+
return this.request("POST", `/ideas/${id}/promote`, { scheduledDate });
|
|
148
|
+
}
|
|
149
|
+
async listIdeaSubtasks(ideaId) {
|
|
150
|
+
return this.request("GET", `/ideas/${ideaId}/subtasks`);
|
|
151
|
+
}
|
|
152
|
+
async createIdeaSubtask(ideaId, data) {
|
|
153
|
+
return this.request("POST", `/ideas/${ideaId}/subtasks`, data);
|
|
154
|
+
}
|
|
155
|
+
async updateIdeaSubtask(ideaId, id, data) {
|
|
156
|
+
return this.request("PATCH", `/ideas/${ideaId}/subtasks/${id}`, data);
|
|
157
|
+
}
|
|
158
|
+
async deleteIdeaSubtask(ideaId, id) {
|
|
159
|
+
return this.request("DELETE", `/ideas/${ideaId}/subtasks/${id}`);
|
|
160
|
+
}
|
|
161
|
+
async reorderIdeaSubtasks(ideaId, subtaskIds) {
|
|
162
|
+
return this.request("POST", `/ideas/${ideaId}/subtasks/reorder`, { subtaskIds });
|
|
163
|
+
}
|
|
95
164
|
// Time Blocks
|
|
96
165
|
async listTimeBlocks(params) {
|
|
97
166
|
return this.request("GET", "/time-blocks", undefined, {
|
|
@@ -115,6 +184,14 @@ export class ApiClient {
|
|
|
115
184
|
async deleteTimeBlock(id) {
|
|
116
185
|
return this.request("DELETE", `/time-blocks/${id}`);
|
|
117
186
|
}
|
|
187
|
+
// Calendar events (synced from Google, Outlook, iCloud; read-only)
|
|
188
|
+
async listCalendarEvents(params) {
|
|
189
|
+
return this.request("GET", "/calendar-events", undefined, {
|
|
190
|
+
date: params.date,
|
|
191
|
+
from: params.from,
|
|
192
|
+
to: params.to,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
118
195
|
// User
|
|
119
196
|
async getMe() {
|
|
120
197
|
return this.request("GET", "/auth/me");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|