@shin1ohno/sage 0.7.9 → 0.8.6
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 +26 -8
- package/dist/cli/mcp-handler.d.ts.map +1 -1
- package/dist/cli/mcp-handler.js +141 -987
- package/dist/cli/mcp-handler.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +30 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/update-validation.d.ts +52 -0
- package/dist/config/update-validation.d.ts.map +1 -0
- package/dist/config/update-validation.js +133 -0
- package/dist/config/update-validation.js.map +1 -0
- package/dist/config/validation.d.ts +130 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +53 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/index.js +443 -1632
- package/dist/index.js.map +1 -1
- package/dist/integrations/calendar-event-creator.d.ts +2 -3
- package/dist/integrations/calendar-event-creator.d.ts.map +1 -1
- package/dist/integrations/calendar-event-creator.js +3 -4
- package/dist/integrations/calendar-event-creator.js.map +1 -1
- package/dist/integrations/calendar-event-deleter.d.ts +2 -3
- package/dist/integrations/calendar-event-deleter.d.ts.map +1 -1
- package/dist/integrations/calendar-event-deleter.js +3 -4
- package/dist/integrations/calendar-event-deleter.js.map +1 -1
- package/dist/integrations/calendar-event-response.d.ts +4 -17
- package/dist/integrations/calendar-event-response.d.ts.map +1 -1
- package/dist/integrations/calendar-event-response.js +3 -4
- package/dist/integrations/calendar-event-response.js.map +1 -1
- package/dist/integrations/calendar-service.d.ts +6 -3
- package/dist/integrations/calendar-service.d.ts.map +1 -1
- package/dist/integrations/calendar-service.js +26 -4
- package/dist/integrations/calendar-service.js.map +1 -1
- package/dist/integrations/calendar-source-manager.d.ts +302 -0
- package/dist/integrations/calendar-source-manager.d.ts.map +1 -0
- package/dist/integrations/calendar-source-manager.js +862 -0
- package/dist/integrations/calendar-source-manager.js.map +1 -0
- package/dist/integrations/google-calendar-service.d.ts +176 -0
- package/dist/integrations/google-calendar-service.d.ts.map +1 -0
- package/dist/integrations/google-calendar-service.js +745 -0
- package/dist/integrations/google-calendar-service.js.map +1 -0
- package/dist/integrations/notion-mcp.d.ts +28 -3
- package/dist/integrations/notion-mcp.d.ts.map +1 -1
- package/dist/integrations/notion-mcp.js +21 -5
- package/dist/integrations/notion-mcp.js.map +1 -1
- package/dist/integrations/reminder-manager.d.ts.map +1 -1
- package/dist/integrations/reminder-manager.js +2 -0
- package/dist/integrations/reminder-manager.js.map +1 -1
- package/dist/oauth/google-oauth-handler.d.ts +149 -0
- package/dist/oauth/google-oauth-handler.d.ts.map +1 -0
- package/dist/oauth/google-oauth-handler.js +365 -0
- package/dist/oauth/google-oauth-handler.js.map +1 -0
- package/dist/services/container.d.ts +56 -0
- package/dist/services/container.d.ts.map +1 -0
- package/dist/services/container.js +76 -0
- package/dist/services/container.js.map +1 -0
- package/dist/tools/calendar/handlers.d.ts +186 -0
- package/dist/tools/calendar/handlers.d.ts.map +1 -0
- package/dist/tools/calendar/handlers.js +525 -0
- package/dist/tools/calendar/handlers.js.map +1 -0
- package/dist/tools/calendar/index.d.ts +11 -0
- package/dist/tools/calendar/index.d.ts.map +1 -0
- package/dist/tools/calendar/index.js +10 -0
- package/dist/tools/calendar/index.js.map +1 -0
- package/dist/tools/index.d.ts +23 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +24 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integrations/handlers.d.ts +57 -0
- package/dist/tools/integrations/handlers.d.ts.map +1 -0
- package/dist/tools/integrations/handlers.js +159 -0
- package/dist/tools/integrations/handlers.js.map +1 -0
- package/dist/tools/integrations/index.d.ts +11 -0
- package/dist/tools/integrations/index.d.ts.map +1 -0
- package/dist/tools/integrations/index.js +10 -0
- package/dist/tools/integrations/index.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +10 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/reminders/handlers.d.ts +61 -0
- package/dist/tools/reminders/handlers.d.ts.map +1 -0
- package/dist/tools/reminders/handlers.js +148 -0
- package/dist/tools/reminders/handlers.js.map +1 -0
- package/dist/tools/reminders/index.d.ts +11 -0
- package/dist/tools/reminders/index.d.ts.map +1 -0
- package/dist/tools/reminders/index.js +10 -0
- package/dist/tools/reminders/index.js.map +1 -0
- package/dist/tools/setup/handlers.d.ts +81 -0
- package/dist/tools/setup/handlers.d.ts.map +1 -0
- package/dist/tools/setup/handlers.js +172 -0
- package/dist/tools/setup/handlers.js.map +1 -0
- package/dist/tools/setup/index.d.ts +11 -0
- package/dist/tools/setup/index.d.ts.map +1 -0
- package/dist/tools/setup/index.js +10 -0
- package/dist/tools/setup/index.js.map +1 -0
- package/dist/tools/tasks/handlers.d.ts +95 -0
- package/dist/tools/tasks/handlers.d.ts.map +1 -0
- package/dist/tools/tasks/handlers.js +197 -0
- package/dist/tools/tasks/handlers.js.map +1 -0
- package/dist/tools/tasks/index.d.ts +11 -0
- package/dist/tools/tasks/index.d.ts.map +1 -0
- package/dist/tools/tasks/index.js +10 -0
- package/dist/tools/tasks/index.js.map +1 -0
- package/dist/tools/types.d.ts +54 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +9 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/calendar.d.ts +41 -0
- package/dist/types/calendar.d.ts.map +1 -0
- package/dist/types/calendar.js +18 -0
- package/dist/types/calendar.js.map +1 -0
- package/dist/types/config.d.ts +15 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +21 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/google-calendar-types.d.ts +139 -0
- package/dist/types/google-calendar-types.d.ts.map +1 -0
- package/dist/types/google-calendar-types.js +46 -0
- package/dist/types/google-calendar-types.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/estimation.d.ts +34 -0
- package/dist/utils/estimation.d.ts.map +1 -1
- package/dist/utils/estimation.js +38 -1
- package/dist/utils/estimation.js.map +1 -1
- package/dist/utils/mcp-response.d.ts +89 -0
- package/dist/utils/mcp-response.d.ts.map +1 -0
- package/dist/utils/mcp-response.js +103 -0
- package/dist/utils/mcp-response.js.map +1 -0
- package/dist/utils/task-splitter.d.ts +65 -4
- package/dist/utils/task-splitter.d.ts.map +1 -1
- package/dist/utils/task-splitter.js +69 -5
- package/dist/utils/task-splitter.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +22 -4
- package/dist/version.js.map +1 -1
- package/package.json +4 -3
- package/dist/cli/http-server.d.ts +0 -74
- package/dist/cli/http-server.d.ts.map +0 -1
- package/dist/cli/http-server.js +0 -407
- package/dist/cli/http-server.js.map +0 -1
- package/dist/remote/remote-mcp-server.d.ts +0 -244
- package/dist/remote/remote-mcp-server.d.ts.map +0 -1
- package/dist/remote/remote-mcp-server.js +0 -507
- package/dist/remote/remote-mcp-server.js.map +0 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Response Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides standardized response formatting for MCP tools.
|
|
5
|
+
* Reduces boilerplate and ensures consistent response structure.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Formats data as JSON with consistent indentation
|
|
9
|
+
*/
|
|
10
|
+
function formatJson(data) {
|
|
11
|
+
return JSON.stringify(data, null, 2);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Creates a standardized MCP tool response
|
|
15
|
+
*
|
|
16
|
+
* @param data - Response data to serialize
|
|
17
|
+
* @returns MCP tool response object
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* return createResponse({ status: 'ok', items: [] });
|
|
21
|
+
*/
|
|
22
|
+
export function createResponse(data) {
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: formatJson(data),
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates an error response for MCP tools
|
|
34
|
+
*
|
|
35
|
+
* @param message - Error message to display
|
|
36
|
+
* @param additionalData - Optional additional data to include
|
|
37
|
+
* @returns MCP tool response with error flag
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* return createErrorResponse('Configuration not found');
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* return createErrorResponse('Validation failed', { field: 'email', code: 'INVALID' });
|
|
44
|
+
*/
|
|
45
|
+
export function createErrorResponse(message, additionalData) {
|
|
46
|
+
return createResponse({
|
|
47
|
+
error: true,
|
|
48
|
+
message,
|
|
49
|
+
...additionalData,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Creates a success response for MCP tools
|
|
54
|
+
*
|
|
55
|
+
* @param data - Response data
|
|
56
|
+
* @returns MCP tool response
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* return createSuccessResponse({ tasks: [], count: 0 });
|
|
60
|
+
*/
|
|
61
|
+
export function createSuccessResponse(data) {
|
|
62
|
+
return createResponse(data);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Extracts error message from unknown error type
|
|
66
|
+
*
|
|
67
|
+
* @param error - Error object or unknown value
|
|
68
|
+
* @returns Error message string
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* catch (error) {
|
|
72
|
+
* return createErrorResponse(`Operation failed: ${getErrorMessage(error)}`);
|
|
73
|
+
* }
|
|
74
|
+
*/
|
|
75
|
+
export function getErrorMessage(error) {
|
|
76
|
+
if (error instanceof Error) {
|
|
77
|
+
return error.message;
|
|
78
|
+
}
|
|
79
|
+
if (typeof error === 'string') {
|
|
80
|
+
return error;
|
|
81
|
+
}
|
|
82
|
+
return 'Unknown error';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates an error response from a caught error
|
|
86
|
+
*
|
|
87
|
+
* Convenience function that combines getErrorMessage and createErrorResponse.
|
|
88
|
+
*
|
|
89
|
+
* @param prefix - Message prefix (e.g., "Failed to save config")
|
|
90
|
+
* @param error - Caught error
|
|
91
|
+
* @param additionalData - Optional additional data
|
|
92
|
+
* @returns MCP tool response with error
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* catch (error) {
|
|
96
|
+
* return createErrorFromCatch('Failed to analyze task', error);
|
|
97
|
+
* }
|
|
98
|
+
*/
|
|
99
|
+
export function createErrorFromCatch(prefix, error, additionalData) {
|
|
100
|
+
const message = `${prefix}: ${getErrorMessage(error)}`;
|
|
101
|
+
return createErrorResponse(message, additionalData);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=mcp-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-response.js","sourceRoot":"","sources":["../../src/utils/mcp-response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;aACvB;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,cAAwC;IAExC,OAAO,cAAc,CAAC;QACpB,KAAK,EAAE,IAAI;QACX,OAAO;QACP,GAAG,cAAc;KAClB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,KAAc,EACd,cAAwC;IAExC,MAAM,OAAO,GAAG,GAAG,MAAM,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;IACvD,OAAO,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -4,6 +4,44 @@
|
|
|
4
4
|
* Requirements: 11.1-11.6
|
|
5
5
|
*/
|
|
6
6
|
import type { Task, SplitResult, ComplexityAnalysis } from '../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* TaskSplitter - Decomposes complex tasks into manageable units
|
|
9
|
+
*
|
|
10
|
+
* ## Algorithm Overview
|
|
11
|
+
*
|
|
12
|
+
* The splitter uses a multi-pass approach:
|
|
13
|
+
*
|
|
14
|
+
* 1. **Line Detection**: Parses input for list items (bullets, numbers)
|
|
15
|
+
* 2. **Conjunction Splitting**: Falls back to splitting on conjunctions
|
|
16
|
+
* (そして, また, and then, also, etc.)
|
|
17
|
+
* 3. **Complexity Analysis**: For single tasks, analyzes keywords to
|
|
18
|
+
* determine if the task should be split into phases
|
|
19
|
+
* 4. **Dependency Inference**: Detects task relationships using
|
|
20
|
+
* keywords like "after", "requires", "次に"
|
|
21
|
+
* 5. **Order Calculation**: Performs topological sort based on dependencies
|
|
22
|
+
*
|
|
23
|
+
* ## Complexity Levels
|
|
24
|
+
*
|
|
25
|
+
* Tasks are classified into four complexity levels:
|
|
26
|
+
* - **simple**: Quick tasks (confirm, review, check)
|
|
27
|
+
* - **medium**: Standard development tasks (fix, update, create)
|
|
28
|
+
* - **complex**: Multi-step tasks (refactor, integrate, migrate)
|
|
29
|
+
* - **project**: Large-scale work (system, architecture, build)
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // Split a complex task
|
|
33
|
+
* const result = TaskSplitter.splitTasks('システム設計を行う');
|
|
34
|
+
* // Returns suggested phases: 要件定義, 設計, 実装, テスト, デプロイ
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // Split multiple tasks from bullet list
|
|
38
|
+
* const result = TaskSplitter.splitTasks(`
|
|
39
|
+
* - メール確認
|
|
40
|
+
* - レポート作成
|
|
41
|
+
* - 会議参加
|
|
42
|
+
* `);
|
|
43
|
+
* // Returns 3 separate tasks with sequential dependencies
|
|
44
|
+
*/
|
|
7
45
|
export declare class TaskSplitter {
|
|
8
46
|
/**
|
|
9
47
|
* Split input text into individual tasks
|
|
@@ -32,13 +70,36 @@ export declare class TaskSplitter {
|
|
|
32
70
|
*/
|
|
33
71
|
private static suggestComplexSplits;
|
|
34
72
|
/**
|
|
35
|
-
* Infer dependencies between tasks
|
|
36
|
-
*
|
|
73
|
+
* Infer dependencies between tasks from their text content
|
|
74
|
+
*
|
|
75
|
+
* Uses keyword detection to find task relationships:
|
|
76
|
+
* - "after" keywords (後に, 次に, then) → depends on previous task
|
|
77
|
+
* - "requires" keywords (必要, 依存) → scans for title references
|
|
78
|
+
*
|
|
79
|
+
* If no explicit dependencies found, assumes sequential ordering
|
|
80
|
+
* (task N depends on task N-1) to ensure predictable execution.
|
|
81
|
+
*
|
|
82
|
+
* Note: Only references previous tasks (j < i), preventing cycles.
|
|
83
|
+
*
|
|
84
|
+
* @param tasks - Array of tasks to analyze
|
|
85
|
+
* @returns Dependency graph as array of TaskDependency objects
|
|
37
86
|
*/
|
|
38
87
|
private static inferDependencies;
|
|
39
88
|
/**
|
|
40
|
-
* Calculate recommended execution order
|
|
41
|
-
*
|
|
89
|
+
* Calculate recommended execution order via topological sort
|
|
90
|
+
*
|
|
91
|
+
* Implements Kahn's algorithm variant:
|
|
92
|
+
* 1. Find all tasks with satisfied dependencies (or no dependencies)
|
|
93
|
+
* 2. Add them to the execution order
|
|
94
|
+
* 3. Mark as completed
|
|
95
|
+
* 4. Repeat until all tasks are ordered
|
|
96
|
+
*
|
|
97
|
+
* Guarantees: No circular dependencies possible since inferDependencies
|
|
98
|
+
* only creates forward references (task i depends on tasks < i).
|
|
99
|
+
*
|
|
100
|
+
* @param tasks - Array of tasks to order
|
|
101
|
+
* @param dependencies - Dependency graph from inferDependencies
|
|
102
|
+
* @returns Array of task indices in recommended execution order
|
|
42
103
|
*/
|
|
43
104
|
private static calculateRecommendedOrder;
|
|
44
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-splitter.d.ts","sourceRoot":"","sources":["../../src/utils/task-splitter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,IAAI,EAEJ,WAAW,EACX,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-splitter.d.ts","sourceRoot":"","sources":["../../src/utils/task-splitter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,IAAI,EAEJ,WAAW,EACX,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAgF3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IA4D7C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAwCxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA4E7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA8BnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAoBnC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkDhC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;CAuBzC"}
|
|
@@ -69,12 +69,53 @@ const COMPLEXITY_KEYWORDS = {
|
|
|
69
69
|
'送信',
|
|
70
70
|
],
|
|
71
71
|
};
|
|
72
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Dependency indicator keywords for detecting task relationships.
|
|
74
|
+
* Used by inferDependencies to detect sequential task ordering.
|
|
75
|
+
*/
|
|
73
76
|
const DEPENDENCY_KEYWORDS = {
|
|
74
77
|
before: ['前に', '先に', 'まず', 'before', 'first', 'prior to'],
|
|
75
78
|
after: ['後に', '次に', 'その後', 'after', 'then', 'following'],
|
|
76
79
|
requires: ['必要', '依存', 'requires', 'depends on', 'needs'],
|
|
77
80
|
};
|
|
81
|
+
/**
|
|
82
|
+
* TaskSplitter - Decomposes complex tasks into manageable units
|
|
83
|
+
*
|
|
84
|
+
* ## Algorithm Overview
|
|
85
|
+
*
|
|
86
|
+
* The splitter uses a multi-pass approach:
|
|
87
|
+
*
|
|
88
|
+
* 1. **Line Detection**: Parses input for list items (bullets, numbers)
|
|
89
|
+
* 2. **Conjunction Splitting**: Falls back to splitting on conjunctions
|
|
90
|
+
* (そして, また, and then, also, etc.)
|
|
91
|
+
* 3. **Complexity Analysis**: For single tasks, analyzes keywords to
|
|
92
|
+
* determine if the task should be split into phases
|
|
93
|
+
* 4. **Dependency Inference**: Detects task relationships using
|
|
94
|
+
* keywords like "after", "requires", "次に"
|
|
95
|
+
* 5. **Order Calculation**: Performs topological sort based on dependencies
|
|
96
|
+
*
|
|
97
|
+
* ## Complexity Levels
|
|
98
|
+
*
|
|
99
|
+
* Tasks are classified into four complexity levels:
|
|
100
|
+
* - **simple**: Quick tasks (confirm, review, check)
|
|
101
|
+
* - **medium**: Standard development tasks (fix, update, create)
|
|
102
|
+
* - **complex**: Multi-step tasks (refactor, integrate, migrate)
|
|
103
|
+
* - **project**: Large-scale work (system, architecture, build)
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* // Split a complex task
|
|
107
|
+
* const result = TaskSplitter.splitTasks('システム設計を行う');
|
|
108
|
+
* // Returns suggested phases: 要件定義, 設計, 実装, テスト, デプロイ
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* // Split multiple tasks from bullet list
|
|
112
|
+
* const result = TaskSplitter.splitTasks(`
|
|
113
|
+
* - メール確認
|
|
114
|
+
* - レポート作成
|
|
115
|
+
* - 会議参加
|
|
116
|
+
* `);
|
|
117
|
+
* // Returns 3 separate tasks with sequential dependencies
|
|
118
|
+
*/
|
|
78
119
|
export class TaskSplitter {
|
|
79
120
|
/**
|
|
80
121
|
* Split input text into individual tasks
|
|
@@ -300,8 +341,19 @@ export class TaskSplitter {
|
|
|
300
341
|
];
|
|
301
342
|
}
|
|
302
343
|
/**
|
|
303
|
-
* Infer dependencies between tasks
|
|
304
|
-
*
|
|
344
|
+
* Infer dependencies between tasks from their text content
|
|
345
|
+
*
|
|
346
|
+
* Uses keyword detection to find task relationships:
|
|
347
|
+
* - "after" keywords (後に, 次に, then) → depends on previous task
|
|
348
|
+
* - "requires" keywords (必要, 依存) → scans for title references
|
|
349
|
+
*
|
|
350
|
+
* If no explicit dependencies found, assumes sequential ordering
|
|
351
|
+
* (task N depends on task N-1) to ensure predictable execution.
|
|
352
|
+
*
|
|
353
|
+
* Note: Only references previous tasks (j < i), preventing cycles.
|
|
354
|
+
*
|
|
355
|
+
* @param tasks - Array of tasks to analyze
|
|
356
|
+
* @returns Dependency graph as array of TaskDependency objects
|
|
305
357
|
*/
|
|
306
358
|
static inferDependencies(tasks) {
|
|
307
359
|
const dependencies = [];
|
|
@@ -347,8 +399,20 @@ export class TaskSplitter {
|
|
|
347
399
|
return dependencies;
|
|
348
400
|
}
|
|
349
401
|
/**
|
|
350
|
-
* Calculate recommended execution order
|
|
351
|
-
*
|
|
402
|
+
* Calculate recommended execution order via topological sort
|
|
403
|
+
*
|
|
404
|
+
* Implements Kahn's algorithm variant:
|
|
405
|
+
* 1. Find all tasks with satisfied dependencies (or no dependencies)
|
|
406
|
+
* 2. Add them to the execution order
|
|
407
|
+
* 3. Mark as completed
|
|
408
|
+
* 4. Repeat until all tasks are ordered
|
|
409
|
+
*
|
|
410
|
+
* Guarantees: No circular dependencies possible since inferDependencies
|
|
411
|
+
* only creates forward references (task i depends on tasks < i).
|
|
412
|
+
*
|
|
413
|
+
* @param tasks - Array of tasks to order
|
|
414
|
+
* @param dependencies - Dependency graph from inferDependencies
|
|
415
|
+
* @returns Array of task indices in recommended execution order
|
|
352
416
|
*/
|
|
353
417
|
static calculateRecommendedOrder(tasks, dependencies) {
|
|
354
418
|
const order = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-splitter.js","sourceRoot":"","sources":["../../src/utils/task-splitter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,wCAAwC;AACxC,MAAM,mBAAmB,GAAG;IAC1B,sBAAsB,EAAE,gBAAgB;IACxC,wBAAwB,EAAE,iBAAiB;IAC3C,0BAA0B,EAAE,wBAAwB;IACpD,uDAAuD,EAAE,uBAAuB;IAChF,wBAAwB,EAAE,wCAAwC;CACnE,CAAC;AAEF,oCAAoC;AACpC,MAAM,mBAAmB,GAAG;IAC1B,OAAO,EAAE;QACP,MAAM;QACN,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,QAAQ;QACR,OAAO;QACP,SAAS;QACT,SAAS;QACT,IAAI;KACL;IACD,OAAO,EAAE;QACP,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,KAAK;QACL,UAAU;QACV,WAAW;QACX,SAAS;QACT,WAAW;QACX,UAAU;QACV,WAAW;QACX,IAAI;KACL;IACD,MAAM,EAAE;QACN,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,QAAQ;KACT;IACD,MAAM,EAAE;QACN,IAAI;QACJ,MAAM;QACN,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,SAAS;QACT,QAAQ;QACR,OAAO;QACP,MAAM;QACN,OAAO;QACP,MAAM;QACN,IAAI;KACL;CACF,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"task-splitter.js","sourceRoot":"","sources":["../../src/utils/task-splitter.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Version information for sage
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Reads version from package.json at runtime.
|
|
5
5
|
* Import this instead of hardcoding version strings.
|
|
6
6
|
*/
|
|
7
|
-
export declare const VERSION
|
|
7
|
+
export declare const VERSION: string;
|
|
8
8
|
export declare const SERVER_NAME = "sage";
|
|
9
9
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH,eAAO,MAAM,OAAO,QAAe,CAAC;AACpC,eAAO,MAAM,WAAW,SAAS,CAAC"}
|
package/dist/version.js
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Version information for sage
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Reads version from package.json at runtime.
|
|
5
5
|
* Import this instead of hardcoding version strings.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import { readFileSync, existsSync } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
// Fallback version - keep in sync with package.json
|
|
10
|
+
const FALLBACK_VERSION = '0.8.6';
|
|
11
|
+
function getVersion() {
|
|
12
|
+
// Try to find package.json from current working directory
|
|
13
|
+
const pkgPath = join(process.cwd(), 'package.json');
|
|
14
|
+
try {
|
|
15
|
+
if (existsSync(pkgPath)) {
|
|
16
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
17
|
+
if (pkg.name === '@shin1ohno/sage') {
|
|
18
|
+
return pkg.version;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// Fall through to default
|
|
24
|
+
}
|
|
25
|
+
return FALLBACK_VERSION;
|
|
26
|
+
}
|
|
27
|
+
export const VERSION = getVersion();
|
|
10
28
|
export const SERVER_NAME = 'sage';
|
|
11
29
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,oDAAoD;AACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,SAAS,UAAU;IACjB,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBACnC,OAAO,GAAG,CAAC,OAAO,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shin1ohno/sage",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "AI Task Management Assistant MCP Server for Claude Desktop and Claude Code",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"build": "tsc",
|
|
12
12
|
"start": "node dist/index.js",
|
|
13
13
|
"dev": "tsx src/index.ts",
|
|
14
|
-
"test": "jest",
|
|
15
|
-
"test:coverage": "jest --coverage",
|
|
14
|
+
"test": "jest --forceExit",
|
|
15
|
+
"test:coverage": "jest --coverage --forceExit",
|
|
16
16
|
"lint": "eslint src/**/*.ts",
|
|
17
17
|
"clean": "rm -rf dist",
|
|
18
18
|
"prepublishOnly": "npm run build"
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"homepage": "https://github.com/shin1ohno/sage#readme",
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
50
|
+
"googleapis": "^134.0.0",
|
|
50
51
|
"run-applescript": "^7.1.0",
|
|
51
52
|
"zod": "^3.23.8"
|
|
52
53
|
},
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Server Mode for sage
|
|
3
|
-
* Requirements: 14.1, 14.9, 14.10, 13.1
|
|
4
|
-
*
|
|
5
|
-
* Provides HTTP server functionality for Remote MCP access.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* HTTP Server Configuration
|
|
9
|
-
*/
|
|
10
|
-
export interface HTTPServerConfig {
|
|
11
|
-
/** HTTP server port */
|
|
12
|
-
port: number;
|
|
13
|
-
/** HTTP server host address */
|
|
14
|
-
host: string;
|
|
15
|
-
/** Path to configuration file */
|
|
16
|
-
configPath?: string;
|
|
17
|
-
/** SSL configuration for HTTPS */
|
|
18
|
-
ssl?: {
|
|
19
|
-
cert: string;
|
|
20
|
-
key: string;
|
|
21
|
-
ca?: string;
|
|
22
|
-
};
|
|
23
|
-
/** Authentication configuration */
|
|
24
|
-
auth?: {
|
|
25
|
-
enabled: boolean;
|
|
26
|
-
jwtSecret?: string;
|
|
27
|
-
apiKeys?: string[];
|
|
28
|
-
ipWhitelist?: string[];
|
|
29
|
-
tokenExpiry?: number;
|
|
30
|
-
};
|
|
31
|
-
/** CORS configuration */
|
|
32
|
-
cors?: {
|
|
33
|
-
allowedOrigins?: string[];
|
|
34
|
-
allowedMethods?: string[];
|
|
35
|
-
allowedHeaders?: string[];
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Server information
|
|
40
|
-
*/
|
|
41
|
-
export interface ServerInfo {
|
|
42
|
-
port: number;
|
|
43
|
-
host: string;
|
|
44
|
-
ssl: boolean;
|
|
45
|
-
authEnabled: boolean;
|
|
46
|
-
startTime?: Date;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Health check response
|
|
50
|
-
*/
|
|
51
|
-
export interface HealthCheckResponse {
|
|
52
|
-
status: 'ok' | 'error';
|
|
53
|
-
uptime: number;
|
|
54
|
-
version: string;
|
|
55
|
-
timestamp: string;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* HTTP Server Instance interface
|
|
59
|
-
*/
|
|
60
|
-
export interface HTTPServerInstance {
|
|
61
|
-
start(): Promise<void>;
|
|
62
|
-
stop(): Promise<void>;
|
|
63
|
-
isRunning(): boolean;
|
|
64
|
-
getPort(): number;
|
|
65
|
-
getHost(): string;
|
|
66
|
-
getServerInfo(): ServerInfo;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Create and start an HTTP server
|
|
70
|
-
* @param config - Server configuration
|
|
71
|
-
* @returns Running HTTP server instance
|
|
72
|
-
*/
|
|
73
|
-
export declare function createHTTPServer(config: HTTPServerConfig): Promise<HTTPServerInstance>;
|
|
74
|
-
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../src/cli/http-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,GAAG,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,mCAAmC;IACnC,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,yBAAyB;IACzB,IAAI,CAAC,EAAE;QACL,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC;IACrB,OAAO,IAAI,MAAM,CAAC;IAClB,OAAO,IAAI,MAAM,CAAC;IAClB,aAAa,IAAI,UAAU,CAAC;CAC7B;AAsdD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI5F"}
|