@shin1ohno/sage 0.9.3 → 0.11.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.
Files changed (99) hide show
  1. package/dist/cli/mcp-handler.d.ts.map +1 -1
  2. package/dist/cli/mcp-handler.js +154 -6
  3. package/dist/cli/mcp-handler.js.map +1 -1
  4. package/dist/cli/signal-handler.d.ts +23 -0
  5. package/dist/cli/signal-handler.d.ts.map +1 -0
  6. package/dist/cli/signal-handler.js +51 -0
  7. package/dist/cli/signal-handler.js.map +1 -0
  8. package/dist/config/config-differ.d.ts +21 -0
  9. package/dist/config/config-differ.d.ts.map +1 -0
  10. package/dist/config/config-differ.js +194 -0
  11. package/dist/config/config-differ.js.map +1 -0
  12. package/dist/config/config-reload-service.d.ts +84 -0
  13. package/dist/config/config-reload-service.d.ts.map +1 -0
  14. package/dist/config/config-reload-service.js +234 -0
  15. package/dist/config/config-reload-service.js.map +1 -0
  16. package/dist/config/config-watcher.d.ts +78 -0
  17. package/dist/config/config-watcher.d.ts.map +1 -0
  18. package/dist/config/config-watcher.js +244 -0
  19. package/dist/config/config-watcher.js.map +1 -0
  20. package/dist/config/hot-reload-config.d.ts +16 -0
  21. package/dist/config/hot-reload-config.d.ts.map +1 -0
  22. package/dist/config/hot-reload-config.js +61 -0
  23. package/dist/config/hot-reload-config.js.map +1 -0
  24. package/dist/index.js +109 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/oauth/index.d.ts +2 -0
  27. package/dist/oauth/index.d.ts.map +1 -1
  28. package/dist/oauth/index.js +4 -0
  29. package/dist/oauth/index.js.map +1 -1
  30. package/dist/oauth/oauth-callback-server.d.ts +100 -0
  31. package/dist/oauth/oauth-callback-server.d.ts.map +1 -0
  32. package/dist/oauth/oauth-callback-server.js +276 -0
  33. package/dist/oauth/oauth-callback-server.js.map +1 -0
  34. package/dist/services/reloadable/calendar-source-manager-adapter.d.ts +45 -0
  35. package/dist/services/reloadable/calendar-source-manager-adapter.d.ts.map +1 -0
  36. package/dist/services/reloadable/calendar-source-manager-adapter.js +106 -0
  37. package/dist/services/reloadable/calendar-source-manager-adapter.js.map +1 -0
  38. package/dist/services/reloadable/index.d.ts +46 -0
  39. package/dist/services/reloadable/index.d.ts.map +1 -0
  40. package/dist/services/reloadable/index.js +88 -0
  41. package/dist/services/reloadable/index.js.map +1 -0
  42. package/dist/services/reloadable/notion-service-adapter.d.ts +45 -0
  43. package/dist/services/reloadable/notion-service-adapter.d.ts.map +1 -0
  44. package/dist/services/reloadable/notion-service-adapter.js +86 -0
  45. package/dist/services/reloadable/notion-service-adapter.js.map +1 -0
  46. package/dist/services/reloadable/priority-engine-adapter.d.ts +73 -0
  47. package/dist/services/reloadable/priority-engine-adapter.d.ts.map +1 -0
  48. package/dist/services/reloadable/priority-engine-adapter.js +105 -0
  49. package/dist/services/reloadable/priority-engine-adapter.js.map +1 -0
  50. package/dist/services/reloadable/reminder-manager-adapter.d.ts +45 -0
  51. package/dist/services/reloadable/reminder-manager-adapter.d.ts.map +1 -0
  52. package/dist/services/reloadable/reminder-manager-adapter.js +80 -0
  53. package/dist/services/reloadable/reminder-manager-adapter.js.map +1 -0
  54. package/dist/services/reloadable/todo-list-manager-adapter.d.ts +45 -0
  55. package/dist/services/reloadable/todo-list-manager-adapter.d.ts.map +1 -0
  56. package/dist/services/reloadable/todo-list-manager-adapter.js +80 -0
  57. package/dist/services/reloadable/todo-list-manager-adapter.js.map +1 -0
  58. package/dist/services/reloadable/working-cadence-adapter.d.ts +52 -0
  59. package/dist/services/reloadable/working-cadence-adapter.d.ts.map +1 -0
  60. package/dist/services/reloadable/working-cadence-adapter.js +77 -0
  61. package/dist/services/reloadable/working-cadence-adapter.js.map +1 -0
  62. package/dist/services/service-registry.d.ts +85 -0
  63. package/dist/services/service-registry.d.ts.map +1 -0
  64. package/dist/services/service-registry.js +166 -0
  65. package/dist/services/service-registry.js.map +1 -0
  66. package/dist/tools/config/index.d.ts +9 -0
  67. package/dist/tools/config/index.d.ts.map +1 -0
  68. package/dist/tools/config/index.js +8 -0
  69. package/dist/tools/config/index.js.map +1 -0
  70. package/dist/tools/config/reload-handler.d.ts +35 -0
  71. package/dist/tools/config/reload-handler.d.ts.map +1 -0
  72. package/dist/tools/config/reload-handler.js +63 -0
  73. package/dist/tools/config/reload-handler.js.map +1 -0
  74. package/dist/tools/integrations/handlers.d.ts +2 -0
  75. package/dist/tools/integrations/handlers.d.ts.map +1 -1
  76. package/dist/tools/integrations/handlers.js.map +1 -1
  77. package/dist/tools/oauth/authenticate-google.d.ts +54 -0
  78. package/dist/tools/oauth/authenticate-google.d.ts.map +1 -0
  79. package/dist/tools/oauth/authenticate-google.js +180 -0
  80. package/dist/tools/oauth/authenticate-google.js.map +1 -0
  81. package/dist/tools/oauth/index.d.ts +26 -0
  82. package/dist/tools/oauth/index.d.ts.map +1 -0
  83. package/dist/tools/oauth/index.js +9 -0
  84. package/dist/tools/oauth/index.js.map +1 -0
  85. package/dist/tools/setup/handlers.d.ts +2 -0
  86. package/dist/tools/setup/handlers.d.ts.map +1 -1
  87. package/dist/tools/setup/handlers.js +14 -0
  88. package/dist/tools/setup/handlers.js.map +1 -1
  89. package/dist/types/hot-reload.d.ts +131 -0
  90. package/dist/types/hot-reload.d.ts.map +1 -0
  91. package/dist/types/hot-reload.js +5 -0
  92. package/dist/types/hot-reload.js.map +1 -0
  93. package/dist/utils/browser-opener.d.ts +35 -0
  94. package/dist/utils/browser-opener.d.ts.map +1 -0
  95. package/dist/utils/browser-opener.js +71 -0
  96. package/dist/utils/browser-opener.js.map +1 -0
  97. package/dist/version.js +1 -1
  98. package/dist/version.js.map +1 -1
  99. package/package.json +1 -1
@@ -0,0 +1,180 @@
1
+ /**
2
+ * authenticate_google Tool Handler
3
+ * Requirements: FR-1 (authenticate_google MCP Tool)
4
+ *
5
+ * Orchestrates the complete Google OAuth flow:
6
+ * 1. Check for existing tokens
7
+ * 2. Start callback server
8
+ * 3. Generate authorization URL
9
+ * 4. Open browser
10
+ * 5. Wait for callback
11
+ * 6. Exchange code for tokens
12
+ * 7. Store tokens
13
+ */
14
+ import { z } from 'zod';
15
+ import { OAuthCallbackServer } from '../../oauth/oauth-callback-server.js';
16
+ import { GoogleOAuthHandler } from '../../oauth/google-oauth-handler.js';
17
+ import { openBrowser } from '../../utils/browser-opener.js';
18
+ import { oauthLogger } from '../../utils/logger.js';
19
+ /**
20
+ * Arguments for authenticate_google tool
21
+ */
22
+ export const AuthenticateGoogleArgsSchema = z.object({
23
+ /** Force re-authentication even if tokens exist */
24
+ force: z.boolean().optional().default(false),
25
+ /** Timeout in seconds (default: 300 = 5 minutes) */
26
+ timeout: z.number().optional().default(300),
27
+ });
28
+ /**
29
+ * Handle authenticate_google tool call
30
+ *
31
+ * Orchestrates the complete OAuth flow for Google Calendar authentication.
32
+ *
33
+ * @param args - Tool arguments
34
+ * @param context - OAuth tools context (unused, handler creates its own handler)
35
+ * @returns Authentication result
36
+ */
37
+ export async function handleAuthenticateGoogle(args, _context) {
38
+ // Validate arguments
39
+ const validatedArgs = AuthenticateGoogleArgsSchema.parse(args);
40
+ const { force, timeout } = validatedArgs;
41
+ // Check environment variables
42
+ const clientId = process.env.GOOGLE_CLIENT_ID;
43
+ const clientSecret = process.env.GOOGLE_CLIENT_SECRET;
44
+ if (!clientId || !clientSecret) {
45
+ return {
46
+ success: false,
47
+ message: 'Google OAuth設定が見つかりません。',
48
+ error: '環境変数 GOOGLE_CLIENT_ID と GOOGLE_CLIENT_SECRET を設定してください。\n' +
49
+ 'Google Cloud Console で OAuth クライアントを作成し、認証情報を取得してください。\n' +
50
+ 'https://console.cloud.google.com/apis/credentials',
51
+ };
52
+ }
53
+ // Create OAuth handler
54
+ const redirectUri = process.env.GOOGLE_REDIRECT_URI || 'http://127.0.0.1:3000/oauth/callback';
55
+ const oauthHandler = new GoogleOAuthHandler({
56
+ clientId,
57
+ clientSecret,
58
+ redirectUri,
59
+ });
60
+ // Check for existing tokens (unless force is true)
61
+ if (!force) {
62
+ try {
63
+ const existingTokens = await oauthHandler.getTokens();
64
+ if (existingTokens) {
65
+ const isValid = await oauthHandler.validateToken(existingTokens);
66
+ if (isValid) {
67
+ return {
68
+ success: true,
69
+ message: '既に Google Calendar で認証済みです。',
70
+ alreadyAuthenticated: true,
71
+ expiresAt: new Date(existingTokens.expiresAt).toISOString(),
72
+ scopes: existingTokens.scope,
73
+ };
74
+ }
75
+ // Token expired, try to refresh
76
+ try {
77
+ const refreshedTokens = await oauthHandler.refreshAccessToken(existingTokens.refreshToken);
78
+ await oauthHandler.storeTokens(refreshedTokens);
79
+ return {
80
+ success: true,
81
+ message: 'トークンを更新しました。',
82
+ alreadyAuthenticated: true,
83
+ expiresAt: new Date(refreshedTokens.expiresAt).toISOString(),
84
+ scopes: refreshedTokens.scope,
85
+ };
86
+ }
87
+ catch (refreshError) {
88
+ // Refresh failed, need to re-authenticate
89
+ oauthLogger.info('Token refresh failed, initiating re-authentication');
90
+ }
91
+ }
92
+ }
93
+ catch (error) {
94
+ // No tokens or error reading tokens, proceed with authentication
95
+ oauthLogger.debug({ error }, 'No existing tokens found');
96
+ }
97
+ }
98
+ // Start callback server
99
+ const callbackServer = new OAuthCallbackServer({
100
+ timeout: timeout * 1000, // Convert to milliseconds
101
+ });
102
+ let serverInfo;
103
+ try {
104
+ serverInfo = await callbackServer.start();
105
+ }
106
+ catch (error) {
107
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
108
+ return {
109
+ success: false,
110
+ message: 'コールバックサーバーの起動に失敗しました。',
111
+ error: `${errorMessage}\nポートが使用中の可能性があります。他のアプリケーションを終了してから再試行してください。`,
112
+ };
113
+ }
114
+ try {
115
+ // Generate authorization URL with the callback server's URL
116
+ // Update the redirect URI to use the actual callback URL
117
+ const oauthHandlerWithCallback = new GoogleOAuthHandler({
118
+ clientId,
119
+ clientSecret,
120
+ redirectUri: serverInfo.callbackUrl,
121
+ });
122
+ const authorizationUrl = await oauthHandlerWithCallback.getAuthorizationUrl(serverInfo.callbackUrl);
123
+ oauthLogger.info({ authorizationUrl: authorizationUrl.substring(0, 100) + '...' }, 'Generated authorization URL');
124
+ // Try to open browser
125
+ const browserResult = await openBrowser(authorizationUrl);
126
+ if (!browserResult.success) {
127
+ oauthLogger.warn({ error: browserResult.error }, 'Failed to open browser automatically');
128
+ // Return URL for manual opening
129
+ return {
130
+ success: false,
131
+ message: 'ブラウザを自動で開けませんでした。以下のURLを手動でブラウザに貼り付けてください。',
132
+ authorizationUrl,
133
+ error: browserResult.error,
134
+ };
135
+ }
136
+ oauthLogger.info('Browser opened, waiting for callback...');
137
+ // Wait for callback
138
+ const callbackResult = await callbackServer.waitForCallback();
139
+ if (!callbackResult.success) {
140
+ return {
141
+ success: false,
142
+ message: '認証がキャンセルされたか、エラーが発生しました。',
143
+ error: `${callbackResult.error}: ${callbackResult.errorDescription}`,
144
+ };
145
+ }
146
+ if (!callbackResult.code) {
147
+ return {
148
+ success: false,
149
+ message: '認証コードを取得できませんでした。',
150
+ error: 'Authorization code was not received',
151
+ };
152
+ }
153
+ // Exchange code for tokens
154
+ oauthLogger.info('Exchanging authorization code for tokens...');
155
+ const tokens = await oauthHandlerWithCallback.exchangeCodeForTokens(callbackResult.code, serverInfo.callbackUrl);
156
+ // Store tokens
157
+ await oauthHandlerWithCallback.storeTokens(tokens);
158
+ oauthLogger.info('OAuth tokens stored successfully');
159
+ return {
160
+ success: true,
161
+ message: 'Google Calendar の認証が完了しました!',
162
+ expiresAt: new Date(tokens.expiresAt).toISOString(),
163
+ scopes: tokens.scope,
164
+ };
165
+ }
166
+ catch (error) {
167
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
168
+ oauthLogger.error({ error }, 'OAuth flow failed');
169
+ return {
170
+ success: false,
171
+ message: '認証フローでエラーが発生しました。',
172
+ error: errorMessage,
173
+ };
174
+ }
175
+ finally {
176
+ // Always shutdown the server
177
+ await callbackServer.shutdown();
178
+ }
179
+ }
180
+ //# sourceMappingURL=authenticate-google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticate-google.js","sourceRoot":"","sources":["../../../src/tools/oauth/authenticate-google.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * OAuth Tools Module
3
+ * Requirements: FR-1 (authenticate_google MCP Tool)
4
+ *
5
+ * Exports OAuth-related MCP tool handlers and context.
6
+ */
7
+ import { GoogleOAuthHandler } from '../../oauth/google-oauth-handler.js';
8
+ /**
9
+ * OAuth Tools Context
10
+ *
11
+ * Provides access to OAuth-related services for tool handlers.
12
+ */
13
+ export interface OAuthToolsContext {
14
+ /**
15
+ * Get GoogleOAuthHandler instance
16
+ * Returns null if Google OAuth is not configured
17
+ */
18
+ getGoogleOAuthHandler: () => GoogleOAuthHandler | null;
19
+ /**
20
+ * Create a new GoogleOAuthHandler with the current config
21
+ */
22
+ createGoogleOAuthHandler: () => GoogleOAuthHandler | null;
23
+ }
24
+ export { handleAuthenticateGoogle } from './authenticate-google.js';
25
+ export type { AuthenticateGoogleArgs, AuthenticateGoogleResult } from './authenticate-google.js';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAEvD;;OAEG;IACH,wBAAwB,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC;CAC3D;AAGD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * OAuth Tools Module
3
+ * Requirements: FR-1 (authenticate_google MCP Tool)
4
+ *
5
+ * Exports OAuth-related MCP tool handlers and context.
6
+ */
7
+ // Export handler
8
+ export { handleAuthenticateGoogle } from './authenticate-google.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,iBAAiB;AACjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { SetupWizard } from '../../setup/wizard.js';
11
11
  import type { UserConfig } from '../../types/index.js';
12
+ import type { ConfigReloadService } from '../../config/config-reload-service.js';
12
13
  /**
13
14
  * Wizard session type (from SetupWizard)
14
15
  */
@@ -22,6 +23,7 @@ export interface SetupContext {
22
23
  getWizardSession: () => WizardSession | null;
23
24
  setWizardSession: (session: WizardSession | null) => void;
24
25
  initializeServices: (config: UserConfig) => void;
26
+ getConfigReloadService?: () => ConfigReloadService | null;
25
27
  }
26
28
  /**
27
29
  * check_setup_status handler
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/setup/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,YAAY;;;;;GAsC7D;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;GAyBlC;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE;;;;;GAoDxD;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE;;;;;GA2C3B"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/setup/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAGjF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,sBAAsB,CAAC,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,YAAY;;;;;GA0D7D;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;;;;;GAyBlC;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE;;;;;GAoDxD;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE;;;;;GA2C3B"}
@@ -36,6 +36,18 @@ export async function handleCheckSetupStatus(ctx) {
36
36
  nextAction: 'start_setup_wizard',
37
37
  });
38
38
  }
39
+ // Build hot reload status if service is available
40
+ let hotReload;
41
+ if (ctx.getConfigReloadService) {
42
+ const configReloadService = ctx.getConfigReloadService();
43
+ if (configReloadService) {
44
+ hotReload = {
45
+ enabled: configReloadService.isAutoReloadEnabled(),
46
+ watching: configReloadService.isAutoReloadEnabled(), // Watching when auto-reload is enabled
47
+ lastReload: configReloadService.getLastReloadResult(),
48
+ };
49
+ }
50
+ }
39
51
  return createToolResponse({
40
52
  setupComplete: true,
41
53
  configExists: true,
@@ -47,7 +59,9 @@ export async function handleCheckSetupStatus(ctx) {
47
59
  'find_available_slots',
48
60
  'sync_to_notion',
49
61
  'update_config',
62
+ 'reload_config',
50
63
  ],
64
+ ...(hotReload && { hotReload }),
51
65
  });
52
66
  }
53
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/setup/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/tools/setup/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Hot Reload type definitions
3
+ */
4
+ import type { UserConfig } from './config.js';
5
+ /**
6
+ * Result of a configuration reload operation
7
+ */
8
+ export interface ReloadResult {
9
+ /** Whether the reload was successful */
10
+ success: boolean;
11
+ /** List of config sections that were changed */
12
+ changedSections: string[];
13
+ /** List of services that were re-initialized */
14
+ reinitializedServices: string[];
15
+ /** Error message if reload failed */
16
+ error?: string;
17
+ /** ISO 8601 timestamp of the reload */
18
+ timestamp: string;
19
+ /** Duration of the reload operation in milliseconds */
20
+ durationMs: number;
21
+ }
22
+ /**
23
+ * State of the config file watcher
24
+ */
25
+ export interface WatcherState {
26
+ /** Whether the watcher is currently active */
27
+ isWatching: boolean;
28
+ /** List of file paths being watched */
29
+ watchedPaths: string[];
30
+ /** ISO 8601 timestamp of last detected change */
31
+ lastChangeDetected?: string;
32
+ /** Number of errors encountered during watching */
33
+ errorCount: number;
34
+ }
35
+ /**
36
+ * Hot reload status for MCP tool responses
37
+ */
38
+ export interface ReloadStatus {
39
+ /** Whether auto-reload is enabled */
40
+ autoReloadEnabled: boolean;
41
+ /** Current state of the file watcher */
42
+ watcherState: WatcherState;
43
+ /** Result of the last reload operation */
44
+ lastReloadResult: ReloadResult | null;
45
+ /** Summary of current config */
46
+ currentConfig: {
47
+ lastUpdated: string;
48
+ sections: string[];
49
+ };
50
+ }
51
+ /**
52
+ * Interface for services that can be reloaded without restart
53
+ */
54
+ export interface ReloadableService {
55
+ /** Unique name identifying this service */
56
+ readonly name: string;
57
+ /** Config sections this service depends on */
58
+ readonly dependsOnSections: readonly string[];
59
+ /**
60
+ * Re-initialize the service with new configuration
61
+ * @param config The new configuration to use
62
+ */
63
+ reinitialize(config: UserConfig): Promise<void>;
64
+ /**
65
+ * Gracefully shutdown the service before re-initialization
66
+ */
67
+ shutdown(): Promise<void>;
68
+ }
69
+ /**
70
+ * Options for ConfigWatcher
71
+ */
72
+ export interface ConfigWatcherOptions {
73
+ /** Debounce delay in milliseconds (default: 500) */
74
+ debounceMs?: number;
75
+ /** Config file paths to watch (defaults to user and remote config paths) */
76
+ configPaths?: string[];
77
+ }
78
+ /**
79
+ * Options for ConfigReloadService
80
+ */
81
+ export interface ConfigReloadServiceOptions {
82
+ /** ConfigWatcher instance to use */
83
+ watcher?: ConfigWatcher;
84
+ /** Whether to enable automatic reload on file changes (default: true) */
85
+ enableAutoReload?: boolean;
86
+ /** Callback invoked after each reload attempt */
87
+ onReload?: (result: ReloadResult) => void;
88
+ }
89
+ /**
90
+ * Hot reload configuration from environment variables
91
+ */
92
+ export interface HotReloadConfig {
93
+ /** Whether hot reload is disabled */
94
+ disabled: boolean;
95
+ /** Debounce delay in milliseconds */
96
+ debounceMs: number;
97
+ }
98
+ /**
99
+ * Result of config diff operation
100
+ */
101
+ export interface ConfigDiff {
102
+ /** Top-level sections that have changed */
103
+ changedSections: string[];
104
+ /** Keys that were added */
105
+ addedKeys: Record<string, unknown>;
106
+ /** Keys that were removed */
107
+ removedKeys: string[];
108
+ /** Keys that were modified with old and new values */
109
+ modifiedKeys: Record<string, {
110
+ old: unknown;
111
+ new: unknown;
112
+ }>;
113
+ }
114
+ /**
115
+ * ConfigWatcher event types
116
+ */
117
+ export interface ConfigWatcherEvents {
118
+ change: (path: string) => void;
119
+ error: (error: Error) => void;
120
+ }
121
+ /**
122
+ * Abstract interface for ConfigWatcher (for type reference in options)
123
+ */
124
+ export interface ConfigWatcher {
125
+ start(): Promise<void>;
126
+ stop(): void;
127
+ isWatching(): boolean;
128
+ on<K extends keyof ConfigWatcherEvents>(event: K, listener: ConfigWatcherEvents[K]): this;
129
+ off<K extends keyof ConfigWatcherEvents>(event: K, listener: ConfigWatcherEvents[K]): this;
130
+ }
131
+ //# sourceMappingURL=hot-reload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-reload.d.ts","sourceRoot":"","sources":["../../src/types/hot-reload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Hot Reload type definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=hot-reload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-reload.js","sourceRoot":"","sources":["../../src/types/hot-reload.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Browser Opener Utility
3
+ * Requirements: FR-3 (Browser Opening)
4
+ *
5
+ * Cross-platform utility to open URLs in the default browser.
6
+ */
7
+ /**
8
+ * Result of browser open operation
9
+ */
10
+ export interface BrowserOpenResult {
11
+ success: boolean;
12
+ error?: string;
13
+ }
14
+ /**
15
+ * Open URL in default browser
16
+ *
17
+ * Uses platform-appropriate command:
18
+ * - macOS: open
19
+ * - Linux: xdg-open
20
+ * - Windows: start
21
+ *
22
+ * @param url - URL to open
23
+ * @returns Result indicating success or failure
24
+ */
25
+ export declare function openBrowser(url: string): Promise<BrowserOpenResult>;
26
+ /**
27
+ * Get the command that would be used to open a URL
28
+ *
29
+ * Useful for testing and debugging.
30
+ *
31
+ * @param url - URL to open
32
+ * @returns Command string
33
+ */
34
+ export declare function getBrowserCommand(url: string): string;
35
+ //# sourceMappingURL=browser-opener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-opener.d.ts","sourceRoot":"","sources":["../../src/utils/browser-opener.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8BzE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYrD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Browser Opener Utility
3
+ * Requirements: FR-3 (Browser Opening)
4
+ *
5
+ * Cross-platform utility to open URLs in the default browser.
6
+ */
7
+ import { exec } from 'child_process';
8
+ import { promisify } from 'util';
9
+ const execAsync = promisify(exec);
10
+ /**
11
+ * Open URL in default browser
12
+ *
13
+ * Uses platform-appropriate command:
14
+ * - macOS: open
15
+ * - Linux: xdg-open
16
+ * - Windows: start
17
+ *
18
+ * @param url - URL to open
19
+ * @returns Result indicating success or failure
20
+ */
21
+ export async function openBrowser(url) {
22
+ const platform = process.platform;
23
+ let command;
24
+ switch (platform) {
25
+ case 'darwin':
26
+ // macOS
27
+ command = `open "${url}"`;
28
+ break;
29
+ case 'win32':
30
+ // Windows - use start with empty title
31
+ command = `start "" "${url}"`;
32
+ break;
33
+ case 'linux':
34
+ default:
35
+ // Linux and other Unix-like systems
36
+ command = `xdg-open "${url}"`;
37
+ break;
38
+ }
39
+ try {
40
+ await execAsync(command);
41
+ return { success: true };
42
+ }
43
+ catch (error) {
44
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
45
+ return {
46
+ success: false,
47
+ error: `Failed to open browser: ${errorMessage}`,
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Get the command that would be used to open a URL
53
+ *
54
+ * Useful for testing and debugging.
55
+ *
56
+ * @param url - URL to open
57
+ * @returns Command string
58
+ */
59
+ export function getBrowserCommand(url) {
60
+ const platform = process.platform;
61
+ switch (platform) {
62
+ case 'darwin':
63
+ return `open "${url}"`;
64
+ case 'win32':
65
+ return `start "" "${url}"`;
66
+ case 'linux':
67
+ default:
68
+ return `xdg-open "${url}"`;
69
+ }
70
+ }
71
+ //# sourceMappingURL=browser-opener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-opener.js","sourceRoot":"","sources":["../../src/utils/browser-opener.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAUlC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,OAAe,CAAC;IAEpB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,QAAQ;YACR,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;YAC1B,MAAM;QACR,KAAK,OAAO;YACV,uCAAuC;YACvC,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAC9B,MAAM;QACR,KAAK,OAAO,CAAC;QACb;YACE,oCAAoC;YACpC,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAC9B,MAAM;IACV,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B,YAAY,EAAE;SACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,SAAS,GAAG,GAAG,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,aAAa,GAAG,GAAG,CAAC;QAC7B,KAAK,OAAO,CAAC;QACb;YACE,OAAO,aAAa,GAAG,GAAG,CAAC;IAC/B,CAAC;AACH,CAAC"}
package/dist/version.js CHANGED
@@ -7,7 +7,7 @@
7
7
  import { readFileSync, existsSync } from 'fs';
8
8
  import { join } from 'path';
9
9
  // Fallback version - keep in sync with package.json
10
- const FALLBACK_VERSION = '0.9.2';
10
+ const FALLBACK_VERSION = '0.11.0';
11
11
  function getVersion() {
12
12
  // Try to find package.json from current working directory
13
13
  const pkgPath = join(process.cwd(), 'package.json');
@@ -1 +1 @@
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"}
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,QAAQ,CAAC;AAElC,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.9.3",
3
+ "version": "0.11.0",
4
4
  "description": "AI Task Management Assistant MCP Server for Claude Desktop and Claude Code",
5
5
  "main": "dist/index.js",
6
6
  "bin": {