@shin1ohno/sage 0.1.0 → 0.2.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/README.md +79 -114
- package/dist/config/storage/storage-factory.d.ts +5 -1
- package/dist/config/storage/storage-factory.d.ts.map +1 -1
- package/dist/config/storage/storage-factory.js +12 -19
- package/dist/config/storage/storage-factory.js.map +1 -1
- package/dist/core/sage-core.d.ts +10 -5
- package/dist/core/sage-core.d.ts.map +1 -1
- package/dist/core/sage-core.js +28 -51
- package/dist/core/sage-core.js.map +1 -1
- package/dist/index.js +335 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/apple-reminders.d.ts +49 -0
- package/dist/integrations/apple-reminders.d.ts.map +1 -1
- package/dist/integrations/apple-reminders.js +229 -0
- package/dist/integrations/apple-reminders.js.map +1 -1
- package/dist/integrations/notion-mcp.d.ts +136 -1
- package/dist/integrations/notion-mcp.d.ts.map +1 -1
- package/dist/integrations/notion-mcp.js +449 -1
- package/dist/integrations/notion-mcp.js.map +1 -1
- package/dist/integrations/task-synchronizer.d.ts +124 -0
- package/dist/integrations/task-synchronizer.d.ts.map +1 -0
- package/dist/integrations/task-synchronizer.js +363 -0
- package/dist/integrations/task-synchronizer.js.map +1 -0
- package/dist/integrations/todo-list-manager.d.ts +185 -0
- package/dist/integrations/todo-list-manager.d.ts.map +1 -0
- package/dist/integrations/todo-list-manager.js +581 -0
- package/dist/integrations/todo-list-manager.js.map +1 -0
- package/dist/platform/adapter-factory.d.ts.map +1 -1
- package/dist/platform/adapter-factory.js +4 -8
- package/dist/platform/adapter-factory.js.map +1 -1
- package/dist/platform/adapters/mcp-adapter.js +1 -1
- package/dist/platform/adapters/mcp-adapter.js.map +1 -1
- package/dist/platform/adapters/remote-mcp-adapter.d.ts +34 -0
- package/dist/platform/adapters/remote-mcp-adapter.d.ts.map +1 -0
- package/dist/platform/adapters/remote-mcp-adapter.js +54 -0
- package/dist/platform/adapters/remote-mcp-adapter.js.map +1 -0
- package/dist/platform/detector.d.ts +5 -16
- package/dist/platform/detector.d.ts.map +1 -1
- package/dist/platform/detector.js +52 -108
- package/dist/platform/detector.js.map +1 -1
- package/dist/platform/index.d.ts +0 -2
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/platform/index.js +0 -2
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/types.d.ts +20 -62
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/platform/types.js +6 -11
- package/dist/platform/types.js.map +1 -1
- package/dist/remote/cloud-config.d.ts +139 -0
- package/dist/remote/cloud-config.d.ts.map +1 -0
- package/dist/remote/cloud-config.js +229 -0
- package/dist/remote/cloud-config.js.map +1 -0
- package/dist/remote/hybrid-integration.d.ts +109 -0
- package/dist/remote/hybrid-integration.d.ts.map +1 -0
- package/dist/remote/hybrid-integration.js +230 -0
- package/dist/remote/hybrid-integration.js.map +1 -0
- package/dist/remote/remote-mcp-server.d.ts +244 -0
- package/dist/remote/remote-mcp-server.d.ts.map +1 -0
- package/dist/remote/remote-mcp-server.js +507 -0
- package/dist/remote/remote-mcp-server.js.map +1 -0
- package/dist/utils/priority.d.ts.map +1 -1
- package/dist/utils/priority.js +18 -5
- package/dist/utils/priority.js.map +1 -1
- package/dist/utils/stakeholders.d.ts +4 -0
- package/dist/utils/stakeholders.d.ts.map +1 -1
- package/dist/utils/stakeholders.js +45 -4
- package/dist/utils/stakeholders.js.map +1 -1
- package/dist/utils/task-splitter.d.ts.map +1 -1
- package/dist/utils/task-splitter.js +62 -11
- package/dist/utils/task-splitter.js.map +1 -1
- package/manifest.json +74 -0
- package/package.json +2 -1
|
@@ -16,6 +16,396 @@ const RETRY_OPTIONS = {
|
|
|
16
16
|
maxDelay: 10000,
|
|
17
17
|
shouldRetry: isRetryableError,
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Notion MCP Client
|
|
21
|
+
* Handles actual communication with Notion MCP server
|
|
22
|
+
* Enforces database ID restrictions for security
|
|
23
|
+
*/
|
|
24
|
+
export class NotionMCPClient {
|
|
25
|
+
config;
|
|
26
|
+
mcpClient = null;
|
|
27
|
+
connected = false;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.config = config;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if a database ID is in the allowed list
|
|
33
|
+
*/
|
|
34
|
+
isValidDatabaseId(databaseId) {
|
|
35
|
+
if (!databaseId || databaseId.trim() === '') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return this.config.allowedDatabaseIds.includes(databaseId);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validate database ID and throw if not allowed
|
|
42
|
+
*/
|
|
43
|
+
validateDatabaseId(databaseId) {
|
|
44
|
+
if (!this.isValidDatabaseId(databaseId)) {
|
|
45
|
+
throw new Error(`Database ID ${databaseId} is not in the allowed list`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Connect to the Notion MCP server
|
|
50
|
+
*/
|
|
51
|
+
async connect() {
|
|
52
|
+
if (this.connected) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
// Dynamic import to avoid issues in environments without MCP SDK
|
|
57
|
+
const { Client } = await import('@modelcontextprotocol/sdk/client/index.js');
|
|
58
|
+
this.mcpClient = new Client({
|
|
59
|
+
name: 'sage-notion-client',
|
|
60
|
+
version: '1.0.0',
|
|
61
|
+
}, {
|
|
62
|
+
capabilities: {},
|
|
63
|
+
});
|
|
64
|
+
// Note: In a real implementation, we would use StdioClientTransport
|
|
65
|
+
// to connect to the Notion MCP server process.
|
|
66
|
+
// For now, we assume the MCP client is already connected via the
|
|
67
|
+
// MCP host (Claude Desktop/Code) which handles the connection.
|
|
68
|
+
if (this.mcpClient.connect) {
|
|
69
|
+
await this.mcpClient.connect();
|
|
70
|
+
}
|
|
71
|
+
this.connected = true;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
75
|
+
throw new Error(`Failed to connect to Notion MCP server: ${message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Disconnect from the Notion MCP server
|
|
80
|
+
*/
|
|
81
|
+
async disconnect() {
|
|
82
|
+
if (!this.connected || !this.mcpClient) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
if (this.mcpClient.close) {
|
|
87
|
+
await this.mcpClient.close();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
this.connected = false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check if connected
|
|
96
|
+
*/
|
|
97
|
+
isConnected() {
|
|
98
|
+
return this.connected;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create a page in Notion via MCP
|
|
102
|
+
*/
|
|
103
|
+
async createPage(request) {
|
|
104
|
+
// Validate database ID first
|
|
105
|
+
this.validateDatabaseId(request.databaseId);
|
|
106
|
+
if (!this.connected || !this.mcpClient) {
|
|
107
|
+
return {
|
|
108
|
+
success: false,
|
|
109
|
+
method: 'mcp',
|
|
110
|
+
error: 'MCP client not connected. Call connect() first.',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const result = await retryWithBackoff(async () => {
|
|
115
|
+
const mcpRequest = this.buildCreatePageRequest(request);
|
|
116
|
+
const response = await this.mcpClient.request(mcpRequest);
|
|
117
|
+
return this.parseCreatePageResponse(response);
|
|
118
|
+
}, {
|
|
119
|
+
...RETRY_OPTIONS,
|
|
120
|
+
onRetry: (error, attempt) => {
|
|
121
|
+
console.error(`Notion MCP createPage retry attempt ${attempt}: ${error.message}`);
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
method: 'mcp',
|
|
131
|
+
error: `Notion MCP error: ${message}`,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Query a Notion database via MCP
|
|
137
|
+
*/
|
|
138
|
+
async queryDatabase(query) {
|
|
139
|
+
// Validate database ID first
|
|
140
|
+
this.validateDatabaseId(query.databaseId);
|
|
141
|
+
if (!this.connected || !this.mcpClient) {
|
|
142
|
+
return {
|
|
143
|
+
success: false,
|
|
144
|
+
error: 'MCP client not connected. Call connect() first.',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const result = await retryWithBackoff(async () => {
|
|
149
|
+
const mcpRequest = this.buildQueryDatabaseRequest(query);
|
|
150
|
+
const response = await this.mcpClient.request(mcpRequest);
|
|
151
|
+
return this.parseQueryDatabaseResponse(response);
|
|
152
|
+
}, {
|
|
153
|
+
...RETRY_OPTIONS,
|
|
154
|
+
onRetry: (error, attempt) => {
|
|
155
|
+
console.error(`Notion MCP queryDatabase retry attempt ${attempt}: ${error.message}`);
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
162
|
+
return {
|
|
163
|
+
success: false,
|
|
164
|
+
error: `Notion MCP query error: ${message}`,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Update a Notion page via MCP
|
|
170
|
+
* Requirement: 12.5
|
|
171
|
+
*/
|
|
172
|
+
async updatePage(pageId, properties) {
|
|
173
|
+
if (!this.connected || !this.mcpClient) {
|
|
174
|
+
return {
|
|
175
|
+
success: false,
|
|
176
|
+
error: 'MCP client not connected. Call connect() first.',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const result = await retryWithBackoff(async () => {
|
|
181
|
+
const mcpRequest = this.buildUpdatePageRequest(pageId, properties);
|
|
182
|
+
const response = await this.mcpClient.request(mcpRequest);
|
|
183
|
+
return this.parseUpdatePageResponse(response);
|
|
184
|
+
}, {
|
|
185
|
+
...RETRY_OPTIONS,
|
|
186
|
+
onRetry: (error, attempt) => {
|
|
187
|
+
console.error(`Notion MCP updatePage retry attempt ${attempt}: ${error.message}`);
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
194
|
+
return {
|
|
195
|
+
success: false,
|
|
196
|
+
error: `Notion MCP update error: ${message}`,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Build MCP request for updating a page
|
|
202
|
+
*/
|
|
203
|
+
buildUpdatePageRequest(pageId, properties) {
|
|
204
|
+
return {
|
|
205
|
+
method: 'tools/call',
|
|
206
|
+
params: {
|
|
207
|
+
name: 'notion-update-page',
|
|
208
|
+
arguments: {
|
|
209
|
+
data: {
|
|
210
|
+
page_id: pageId,
|
|
211
|
+
command: 'update_properties',
|
|
212
|
+
properties,
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Parse response from updatePage MCP call
|
|
220
|
+
*/
|
|
221
|
+
parseUpdatePageResponse(response) {
|
|
222
|
+
try {
|
|
223
|
+
const textContent = response.content?.find((c) => c.type === 'text');
|
|
224
|
+
if (!textContent) {
|
|
225
|
+
return {
|
|
226
|
+
success: false,
|
|
227
|
+
error: 'No text content in MCP response',
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// If we got a response, consider it successful
|
|
231
|
+
return { success: true };
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
return {
|
|
235
|
+
success: false,
|
|
236
|
+
error: `Failed to parse MCP response: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Build MCP request for creating a page
|
|
242
|
+
*/
|
|
243
|
+
buildCreatePageRequest(request) {
|
|
244
|
+
const children = request.content?.map((block) => this.buildNotionBlock(block)) || [];
|
|
245
|
+
return {
|
|
246
|
+
method: 'tools/call',
|
|
247
|
+
params: {
|
|
248
|
+
name: 'notion-create-pages',
|
|
249
|
+
arguments: {
|
|
250
|
+
parent: {
|
|
251
|
+
type: 'database_id',
|
|
252
|
+
database_id: request.databaseId,
|
|
253
|
+
},
|
|
254
|
+
pages: [
|
|
255
|
+
{
|
|
256
|
+
properties: {
|
|
257
|
+
title: request.title,
|
|
258
|
+
...request.properties,
|
|
259
|
+
},
|
|
260
|
+
content: children.length > 0 ? this.formatContentForNotion(children) : undefined,
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Format content blocks for Notion markdown format
|
|
269
|
+
*/
|
|
270
|
+
formatContentForNotion(blocks) {
|
|
271
|
+
return blocks
|
|
272
|
+
.map((block) => {
|
|
273
|
+
if (block.type === 'paragraph') {
|
|
274
|
+
return block.paragraph?.rich_text?.[0]?.text?.content || '';
|
|
275
|
+
}
|
|
276
|
+
else if (block.type === 'heading_2') {
|
|
277
|
+
return `## ${block.heading_2?.rich_text?.[0]?.text?.content || ''}`;
|
|
278
|
+
}
|
|
279
|
+
else if (block.type === 'bulleted_list_item') {
|
|
280
|
+
return `- ${block.bulleted_list_item?.rich_text?.[0]?.text?.content || ''}`;
|
|
281
|
+
}
|
|
282
|
+
return '';
|
|
283
|
+
})
|
|
284
|
+
.join('\n');
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Build MCP request for querying a database
|
|
288
|
+
*/
|
|
289
|
+
buildQueryDatabaseRequest(query) {
|
|
290
|
+
return {
|
|
291
|
+
method: 'tools/call',
|
|
292
|
+
params: {
|
|
293
|
+
name: 'notion-query-data-sources',
|
|
294
|
+
arguments: {
|
|
295
|
+
data: {
|
|
296
|
+
mode: 'sql',
|
|
297
|
+
data_source_urls: [`collection://${query.databaseId}`],
|
|
298
|
+
query: `SELECT * FROM "collection://${query.databaseId}" LIMIT ${query.pageSize || 100}`,
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Parse response from createPage MCP call
|
|
306
|
+
*/
|
|
307
|
+
parseCreatePageResponse(response) {
|
|
308
|
+
try {
|
|
309
|
+
const textContent = response.content?.find((c) => c.type === 'text');
|
|
310
|
+
if (!textContent) {
|
|
311
|
+
return {
|
|
312
|
+
success: false,
|
|
313
|
+
method: 'mcp',
|
|
314
|
+
error: 'No text content in MCP response',
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
const data = JSON.parse(textContent.text);
|
|
318
|
+
return {
|
|
319
|
+
success: true,
|
|
320
|
+
method: 'mcp',
|
|
321
|
+
pageId: data.id || data.pageId,
|
|
322
|
+
pageUrl: data.url || data.pageUrl,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
return {
|
|
327
|
+
success: false,
|
|
328
|
+
method: 'mcp',
|
|
329
|
+
error: `Failed to parse MCP response: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Parse response from queryDatabase MCP call
|
|
335
|
+
*/
|
|
336
|
+
parseQueryDatabaseResponse(response) {
|
|
337
|
+
try {
|
|
338
|
+
const textContent = response.content?.find((c) => c.type === 'text');
|
|
339
|
+
if (!textContent) {
|
|
340
|
+
return {
|
|
341
|
+
success: false,
|
|
342
|
+
error: 'No text content in MCP response',
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
const data = JSON.parse(textContent.text);
|
|
346
|
+
// Parse results from SQL query response
|
|
347
|
+
const results = (data.results || data.rows || []).map((row) => ({
|
|
348
|
+
id: row.id || row._id,
|
|
349
|
+
title: row.title || row.Name || row.name || '',
|
|
350
|
+
properties: row,
|
|
351
|
+
url: row.url || `https://notion.so/${row.id}`,
|
|
352
|
+
createdTime: row.created_time || row.createdTime || '',
|
|
353
|
+
lastEditedTime: row.last_edited_time || row.lastEditedTime || '',
|
|
354
|
+
}));
|
|
355
|
+
return {
|
|
356
|
+
success: true,
|
|
357
|
+
results,
|
|
358
|
+
hasMore: data.has_more || false,
|
|
359
|
+
nextCursor: data.next_cursor,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
return {
|
|
364
|
+
success: false,
|
|
365
|
+
error: `Failed to parse MCP response: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Build Notion block format
|
|
371
|
+
*/
|
|
372
|
+
buildNotionBlock(block) {
|
|
373
|
+
switch (block.type) {
|
|
374
|
+
case 'paragraph':
|
|
375
|
+
return {
|
|
376
|
+
object: 'block',
|
|
377
|
+
type: 'paragraph',
|
|
378
|
+
paragraph: {
|
|
379
|
+
rich_text: [{ type: 'text', text: { content: block.content } }],
|
|
380
|
+
},
|
|
381
|
+
};
|
|
382
|
+
case 'heading':
|
|
383
|
+
return {
|
|
384
|
+
object: 'block',
|
|
385
|
+
type: 'heading_2',
|
|
386
|
+
heading_2: {
|
|
387
|
+
rich_text: [{ type: 'text', text: { content: block.content } }],
|
|
388
|
+
},
|
|
389
|
+
};
|
|
390
|
+
case 'bulleted_list_item':
|
|
391
|
+
return {
|
|
392
|
+
object: 'block',
|
|
393
|
+
type: 'bulleted_list_item',
|
|
394
|
+
bulleted_list_item: {
|
|
395
|
+
rich_text: [{ type: 'text', text: { content: block.content } }],
|
|
396
|
+
},
|
|
397
|
+
};
|
|
398
|
+
default:
|
|
399
|
+
return {
|
|
400
|
+
object: 'block',
|
|
401
|
+
type: 'paragraph',
|
|
402
|
+
paragraph: {
|
|
403
|
+
rich_text: [{ type: 'text', text: { content: block.content } }],
|
|
404
|
+
},
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
19
409
|
/**
|
|
20
410
|
* Notion MCP Service
|
|
21
411
|
* Provides platform-adaptive Notion integration
|
|
@@ -24,6 +414,19 @@ const RETRY_OPTIONS = {
|
|
|
24
414
|
* - Web: フォールバック
|
|
25
415
|
*/
|
|
26
416
|
export class NotionMCPService {
|
|
417
|
+
mcpClient = null;
|
|
418
|
+
/**
|
|
419
|
+
* Set the MCP client for Notion integration
|
|
420
|
+
*/
|
|
421
|
+
setMCPClient(client) {
|
|
422
|
+
this.mcpClient = client;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Get the MCP client
|
|
426
|
+
*/
|
|
427
|
+
getMCPClient() {
|
|
428
|
+
return this.mcpClient;
|
|
429
|
+
}
|
|
27
430
|
/**
|
|
28
431
|
* Detect the current platform for Notion integration
|
|
29
432
|
*/
|
|
@@ -64,6 +467,24 @@ export class NotionMCPService {
|
|
|
64
467
|
* Requirement: 8.1, 8.2, 8.3
|
|
65
468
|
*/
|
|
66
469
|
async createPage(request) {
|
|
470
|
+
// If MCP client is configured, use it
|
|
471
|
+
if (this.mcpClient) {
|
|
472
|
+
try {
|
|
473
|
+
return await this.mcpClient.createPage(request);
|
|
474
|
+
}
|
|
475
|
+
catch (error) {
|
|
476
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
477
|
+
return {
|
|
478
|
+
success: false,
|
|
479
|
+
method: 'mcp',
|
|
480
|
+
error: message,
|
|
481
|
+
fallbackText: this.generateFallbackTemplate({
|
|
482
|
+
title: request.title,
|
|
483
|
+
...request.properties,
|
|
484
|
+
}),
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
}
|
|
67
488
|
const platform = await this.detectPlatform();
|
|
68
489
|
switch (platform.method) {
|
|
69
490
|
case 'mcp':
|
|
@@ -83,6 +504,28 @@ export class NotionMCPService {
|
|
|
83
504
|
};
|
|
84
505
|
}
|
|
85
506
|
}
|
|
507
|
+
/**
|
|
508
|
+
* Query Notion database
|
|
509
|
+
* Only queries the configured database ID
|
|
510
|
+
*/
|
|
511
|
+
async queryDatabase(query) {
|
|
512
|
+
if (this.mcpClient) {
|
|
513
|
+
try {
|
|
514
|
+
return await this.mcpClient.queryDatabase(query);
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
518
|
+
return {
|
|
519
|
+
success: false,
|
|
520
|
+
error: message,
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
return {
|
|
525
|
+
success: false,
|
|
526
|
+
error: 'Notion MCP client not configured',
|
|
527
|
+
};
|
|
528
|
+
}
|
|
86
529
|
/**
|
|
87
530
|
* Create page via MCP (Desktop/Code)
|
|
88
531
|
*/
|
|
@@ -266,8 +709,13 @@ export class NotionMCPService {
|
|
|
266
709
|
/**
|
|
267
710
|
* Determine if a task should be synced to Notion based on deadline
|
|
268
711
|
* Requirement: 8.1 (8日以上先のタスク)
|
|
712
|
+
* Now also validates that database ID is configured
|
|
269
713
|
*/
|
|
270
|
-
shouldSyncToNotion(deadline, thresholdDays = 8) {
|
|
714
|
+
shouldSyncToNotion(deadline, thresholdDays = 8, configuredDatabaseId) {
|
|
715
|
+
// Require a configured database ID
|
|
716
|
+
if (!configuredDatabaseId || configuredDatabaseId.trim() === '') {
|
|
717
|
+
return false;
|
|
718
|
+
}
|
|
271
719
|
if (!deadline) {
|
|
272
720
|
return false;
|
|
273
721
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notion-mcp.js","sourceRoot":"","sources":["../../src/integrations/notion-mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notion-mcp.js","sourceRoot":"","sources":["../../src/integrations/notion-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskSynchronizer
|
|
3
|
+
* Multi-source task synchronization and conflict resolution
|
|
4
|
+
* Requirement: 12.5, 12.6
|
|
5
|
+
*/
|
|
6
|
+
import { TodoItem, TaskSource, TaskConflict } from './todo-list-manager.js';
|
|
7
|
+
/**
|
|
8
|
+
* Duplicate task detection result
|
|
9
|
+
*/
|
|
10
|
+
export interface DuplicateTask {
|
|
11
|
+
tasks: TodoItem[];
|
|
12
|
+
similarity: number;
|
|
13
|
+
suggestedMerge: TodoItem;
|
|
14
|
+
confidence: 'high' | 'medium' | 'low';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Merge result
|
|
18
|
+
*/
|
|
19
|
+
export interface MergeResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
mergedTask: TodoItem;
|
|
22
|
+
removedTasks: string[];
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sync all result
|
|
27
|
+
*/
|
|
28
|
+
export interface SyncAllResult {
|
|
29
|
+
totalTasks: number;
|
|
30
|
+
syncedTasks: number;
|
|
31
|
+
conflicts: TaskConflict[];
|
|
32
|
+
errors: SyncError[];
|
|
33
|
+
duration: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Sync error
|
|
37
|
+
*/
|
|
38
|
+
export interface SyncError {
|
|
39
|
+
taskId: string;
|
|
40
|
+
source: TaskSource;
|
|
41
|
+
error: string;
|
|
42
|
+
recoverable: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Conflict resolution result
|
|
46
|
+
*/
|
|
47
|
+
export interface ConflictResolution {
|
|
48
|
+
field: string;
|
|
49
|
+
appleRemindersValue: unknown;
|
|
50
|
+
notionValue: unknown;
|
|
51
|
+
resolvedValue: unknown;
|
|
52
|
+
resolution: 'apple_reminders' | 'notion' | 'manual';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* TaskSynchronizer
|
|
56
|
+
* Handles synchronization of tasks between Apple Reminders and Notion
|
|
57
|
+
*/
|
|
58
|
+
export declare class TaskSynchronizer {
|
|
59
|
+
private todoManager;
|
|
60
|
+
private similarityThreshold;
|
|
61
|
+
constructor();
|
|
62
|
+
/**
|
|
63
|
+
* Sync all tasks across all sources
|
|
64
|
+
* Requirement: 12.6
|
|
65
|
+
*/
|
|
66
|
+
syncAllTasks(): Promise<SyncAllResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Detect duplicates in a list of tasks
|
|
69
|
+
* Requirement: 12.5
|
|
70
|
+
*/
|
|
71
|
+
detectDuplicatesInList(tasks: TodoItem[]): DuplicateTask[];
|
|
72
|
+
/**
|
|
73
|
+
* Detect duplicates across all sources
|
|
74
|
+
*/
|
|
75
|
+
detectDuplicates(): Promise<DuplicateTask[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Calculate similarity between two strings
|
|
78
|
+
* Uses Levenshtein distance normalized to 0-1 range
|
|
79
|
+
*/
|
|
80
|
+
calculateSimilarity(str1: string, str2: string): number;
|
|
81
|
+
/**
|
|
82
|
+
* Calculate Levenshtein distance between two strings
|
|
83
|
+
*/
|
|
84
|
+
private levenshteinDistance;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate average similarity for a group of tasks
|
|
87
|
+
*/
|
|
88
|
+
private calculateGroupSimilarity;
|
|
89
|
+
/**
|
|
90
|
+
* Determine confidence level based on similarity
|
|
91
|
+
*/
|
|
92
|
+
private determineConfidence;
|
|
93
|
+
/**
|
|
94
|
+
* Create a suggested merge from multiple tasks
|
|
95
|
+
*/
|
|
96
|
+
createSuggestedMerge(tasks: TodoItem[]): TodoItem;
|
|
97
|
+
/**
|
|
98
|
+
* Merge duplicate tasks
|
|
99
|
+
* Requirement: 12.5
|
|
100
|
+
*/
|
|
101
|
+
mergeDuplicates(duplicates: DuplicateTask[]): Promise<MergeResult>;
|
|
102
|
+
/**
|
|
103
|
+
* Detect conflicts between tasks
|
|
104
|
+
*/
|
|
105
|
+
private detectConflicts;
|
|
106
|
+
/**
|
|
107
|
+
* Resolve status conflict (use most recently updated)
|
|
108
|
+
*/
|
|
109
|
+
private resolveStatusConflict;
|
|
110
|
+
/**
|
|
111
|
+
* Resolve priority conflict (use highest priority)
|
|
112
|
+
*/
|
|
113
|
+
private resolvePriorityConflict;
|
|
114
|
+
/**
|
|
115
|
+
* Determine which source wins for conflict resolution
|
|
116
|
+
*/
|
|
117
|
+
private determineResolution;
|
|
118
|
+
/**
|
|
119
|
+
* Resolve conflicts
|
|
120
|
+
* Requirement: 12.6
|
|
121
|
+
*/
|
|
122
|
+
resolveConflicts(conflicts: TaskConflict[]): Promise<ConflictResolution[]>;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=task-synchronizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-synchronizer.d.ts","sourceRoot":"","sources":["../../src/integrations/task-synchronizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,QAAQ,EAER,UAAU,EAEV,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,QAAQ,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,QAAQ,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACrD;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,mBAAmB,CAAgB;;IAM3C;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IAgE5C;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE;IAwC1D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKlD;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAavD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ;IA0DjD;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAmCxE;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAsCjF"}
|