@shin1ohno/sage 0.11.1 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -103,6 +103,45 @@ sage now supports multiple calendar sources:
103
103
 
104
104
  **Setup**: See [Configuration Guide](docs/CONFIGURATION.md#google-calendar-integration) for Google OAuth setup instructions.
105
105
 
106
+ ### Remote Server Google OAuth Setup
107
+
108
+ When running sage as a remote MCP server (e.g., on a VPS or cloud instance), you can use Google Calendar by setting up a Web Application OAuth client:
109
+
110
+ **1. Create OAuth Client in Google Cloud Console**
111
+
112
+ 1. Go to [Google Cloud Console](https://console.cloud.google.com/)
113
+ 2. Navigate to "APIs & Services" → "Credentials" → "Create Credentials" → "OAuth client ID"
114
+ 3. Application type: **Web application**
115
+ 4. Authorized redirect URIs:
116
+ - Local development: `http://localhost:3000/oauth/callback`
117
+ - Production server: `https://mcp.example.com/oauth/google/callback`
118
+
119
+ **2. Configure Environment Variables**
120
+
121
+ ```bash
122
+ export GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
123
+ export GOOGLE_CLIENT_SECRET="your-client-secret"
124
+ export GOOGLE_REDIRECT_URI="https://mcp.example.com/oauth/google/callback"
125
+ ```
126
+
127
+ **3. Authenticate**
128
+
129
+ From Claude, run the `authenticate_google` tool:
130
+
131
+ 1. The tool returns an authorization URL
132
+ 2. Open the URL in your browser
133
+ 3. Complete Google authentication
134
+ 4. The server receives the callback automatically
135
+ 5. A success page is displayed - close the window and return to Claude
136
+
137
+ **Troubleshooting**
138
+
139
+ | Issue | Solution |
140
+ |-------|----------|
141
+ | `redirect_uri_mismatch` | Ensure the redirect URI in Google Cloud Console exactly matches `GOOGLE_REDIRECT_URI` |
142
+ | Session expired | Complete authentication within 10 minutes |
143
+ | 503 from callback | Verify `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` are set |
144
+
106
145
  ### Smart Reminder Routing
107
146
 
108
147
  Tasks are automatically routed to the appropriate system:
@@ -1 +1 @@
1
- {"version":3,"file":"http-server-with-config.d.ts","sourceRoot":"","sources":["../../src/cli/http-server-with-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAEL,YAAY,EAGb,MAAM,2BAA2B,CAAC;AAMnC;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,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,OAAO,CAAC;IACzB,SAAS,IAAI,YAAY,CAAC;CAC3B;AA6nBD;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAU/B"}
1
+ {"version":3,"file":"http-server-with-config.d.ts","sourceRoot":"","sources":["../../src/cli/http-server-with-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAEL,YAAY,EAGb,MAAM,2BAA2B,CAAC;AAanC;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,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,OAAO,CAAC;IACzB,SAAS,IAAI,YAAY,CAAC;CAC3B;AA8qBD;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAU/B"}
@@ -10,7 +10,8 @@ import { VERSION } from '../version.js';
10
10
  import { loadRemoteConfig, DEFAULT_REMOTE_CONFIG_PATH, } from './remote-config-loader.js';
11
11
  import { createSecretAuthenticator } from './secret-auth.js';
12
12
  import { createMCPHandler } from './mcp-handler.js';
13
- import { OAuthServer, OAuthHandler } from '../oauth/index.js';
13
+ import { OAuthServer, OAuthHandler, PendingGoogleAuthStore, GoogleOAuthCallbackHandler, GoogleOAuthHandler, } from '../oauth/index.js';
14
+ import { setSharedPendingAuthStore } from '../tools/oauth/authenticate-google.js';
14
15
  import { cliLogger } from '../utils/logger.js';
15
16
  /**
16
17
  * Cookie name for session token
@@ -54,6 +55,9 @@ class HTTPServerWithConfigImpl {
54
55
  oauthServer = null;
55
56
  oauthHandler = null;
56
57
  debug = false;
58
+ // Google OAuth remote mode handlers
59
+ pendingGoogleAuthStore = null;
60
+ googleOAuthCallbackHandler = null;
57
61
  constructor(config, options) {
58
62
  this.config = config;
59
63
  this.debug = options.debug ?? false;
@@ -103,6 +107,27 @@ class HTTPServerWithConfigImpl {
103
107
  }
104
108
  // Initialize MCP handler
105
109
  this.mcpHandler = await createMCPHandler();
110
+ // Initialize Google OAuth callback handler for remote mode
111
+ if (process.env.GOOGLE_CLIENT_ID && process.env.GOOGLE_CLIENT_SECRET) {
112
+ const redirectUri = process.env.GOOGLE_REDIRECT_URI;
113
+ // Only enable remote mode if redirect URI is not localhost
114
+ if (redirectUri && !redirectUri.toLowerCase().includes('localhost') && !redirectUri.toLowerCase().includes('127.0.0.1')) {
115
+ this.pendingGoogleAuthStore = new PendingGoogleAuthStore();
116
+ await this.pendingGoogleAuthStore.initialize();
117
+ // Share the store with authenticate_google tool
118
+ setSharedPendingAuthStore(this.pendingGoogleAuthStore);
119
+ const googleOAuthHandler = new GoogleOAuthHandler({
120
+ clientId: process.env.GOOGLE_CLIENT_ID,
121
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET,
122
+ redirectUri,
123
+ });
124
+ this.googleOAuthCallbackHandler = new GoogleOAuthCallbackHandler({
125
+ pendingAuthStore: this.pendingGoogleAuthStore,
126
+ googleOAuthHandler,
127
+ });
128
+ cliLogger.info({ redirectUri }, 'Google OAuth remote mode enabled');
129
+ }
130
+ }
106
131
  // Initialize OAuth if configured (Requirements 21-31)
107
132
  if (this.config.remote.auth.type === 'oauth2') {
108
133
  const oauthConfig = this.config.remote.auth;
@@ -166,6 +191,10 @@ class HTTPServerWithConfigImpl {
166
191
  cliLogger.info('Shutting down, flushing OAuth data...');
167
192
  await this.oauthServer.shutdown();
168
193
  }
194
+ // Shutdown Google OAuth pending auth store
195
+ if (this.pendingGoogleAuthStore) {
196
+ await this.pendingGoogleAuthStore.shutdown();
197
+ }
169
198
  return new Promise((resolve) => {
170
199
  this.server.close(() => {
171
200
  this.running = false;
@@ -229,6 +258,21 @@ class HTTPServerWithConfigImpl {
229
258
  this.handleOAuthHealthCheck(res);
230
259
  return;
231
260
  }
261
+ // Google OAuth callback endpoint (no auth required - receives redirect from Google)
262
+ if (path === '/oauth/google/callback' && method === 'GET') {
263
+ if (this.googleOAuthCallbackHandler) {
264
+ this.googleOAuthCallbackHandler.handleCallback(req, res).catch((error) => {
265
+ cliLogger.error({ err: error }, 'Google OAuth callback failed');
266
+ res.writeHead(500, { 'Content-Type': 'text/html; charset=utf-8' });
267
+ res.end('<h1>Internal Server Error</h1>');
268
+ });
269
+ }
270
+ else {
271
+ res.writeHead(503, { 'Content-Type': 'application/json' });
272
+ res.end(JSON.stringify({ error: 'Google OAuth not configured' }));
273
+ }
274
+ return;
275
+ }
232
276
  // OAuth endpoints (Requirements 21-31)
233
277
  if (this.oauthHandler) {
234
278
  const oauthPaths = [
@@ -1 +1 @@
1
- {"version":3,"file":"http-server-with-config.js","sourceRoot":"","sources":["../../src/cli/http-server-with-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-server-with-config.js","sourceRoot":"","sources":["../../src/cli/http-server-with-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Google OAuth Callback Handler
3
+ * Requirements: FR-1 (OAuth Callback Endpoint), FR-4 (Token Exchange)
4
+ *
5
+ * Handles HTTP callbacks from Google OAuth for remote server mode.
6
+ * Processes authorization codes, exchanges for tokens, and renders
7
+ * success/error pages to the browser.
8
+ */
9
+ import type { IncomingMessage, ServerResponse } from 'http';
10
+ import { PendingGoogleAuthStore } from './pending-google-auth-store.js';
11
+ import { GoogleOAuthHandler } from './google-oauth-handler.js';
12
+ /**
13
+ * Options for GoogleOAuthCallbackHandler
14
+ */
15
+ export interface GoogleOAuthCallbackHandlerOptions {
16
+ pendingAuthStore: PendingGoogleAuthStore;
17
+ googleOAuthHandler: GoogleOAuthHandler;
18
+ }
19
+ /**
20
+ * Google OAuth Callback Handler
21
+ *
22
+ * Processes OAuth callbacks from Google and exchanges
23
+ * authorization codes for tokens.
24
+ */
25
+ export declare class GoogleOAuthCallbackHandler {
26
+ private readonly pendingAuthStore;
27
+ private readonly googleOAuthHandler;
28
+ constructor(options: GoogleOAuthCallbackHandlerOptions);
29
+ /**
30
+ * Handle OAuth callback request
31
+ *
32
+ * @param req - HTTP request
33
+ * @param res - HTTP response
34
+ */
35
+ handleCallback(req: IncomingMessage, res: ServerResponse): Promise<void>;
36
+ /**
37
+ * Parse callback parameters from URL
38
+ */
39
+ private parseCallbackParams;
40
+ /**
41
+ * Exchange authorization code for tokens
42
+ */
43
+ private exchangeCodeForTokens;
44
+ /**
45
+ * Render success HTML page
46
+ */
47
+ private renderSuccessPage;
48
+ /**
49
+ * Render error HTML page
50
+ */
51
+ private renderErrorPage;
52
+ /**
53
+ * Escape HTML special characters
54
+ */
55
+ private escapeHtml;
56
+ }
57
+ //# sourceMappingURL=google-oauth-callback-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-oauth-callback-handler.d.ts","sourceRoot":"","sources":["../../src/oauth/google-oauth-callback-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAqB,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAYD;;;;;GAKG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;gBAE5C,OAAO,EAAE,iCAAiC;IAKtD;;;;;OAKG;IACG,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwD9E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;YACW,qBAAqB;IAmCnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyEzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAyFvB;;OAEG;IACH,OAAO,CAAC,UAAU;CAQnB"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Google OAuth Callback Handler
3
+ * Requirements: FR-1 (OAuth Callback Endpoint), FR-4 (Token Exchange)
4
+ *
5
+ * Handles HTTP callbacks from Google OAuth for remote server mode.
6
+ * Processes authorization codes, exchanges for tokens, and renders
7
+ * success/error pages to the browser.
8
+ */
9
+ import { URL } from 'url';
10
+ import { oauthLogger } from '../utils/logger.js';
11
+ /**
12
+ * Google OAuth Callback Handler
13
+ *
14
+ * Processes OAuth callbacks from Google and exchanges
15
+ * authorization codes for tokens.
16
+ */
17
+ export class GoogleOAuthCallbackHandler {
18
+ pendingAuthStore;
19
+ googleOAuthHandler;
20
+ constructor(options) {
21
+ this.pendingAuthStore = options.pendingAuthStore;
22
+ this.googleOAuthHandler = options.googleOAuthHandler;
23
+ }
24
+ /**
25
+ * Handle OAuth callback request
26
+ *
27
+ * @param req - HTTP request
28
+ * @param res - HTTP response
29
+ */
30
+ async handleCallback(req, res) {
31
+ try {
32
+ const params = this.parseCallbackParams(req.url || '');
33
+ oauthLogger.info({ state: params.state, hasCode: !!params.code, error: params.error }, 'Processing OAuth callback');
34
+ // Check for OAuth error
35
+ if (params.error) {
36
+ const errorMessage = params.error === 'access_denied'
37
+ ? '認証が拒否されました。'
38
+ : `OAuth エラー: ${params.error}`;
39
+ this.renderErrorPage(res, errorMessage, params.errorDescription);
40
+ return;
41
+ }
42
+ // Validate required parameters
43
+ if (!params.state) {
44
+ this.renderErrorPage(res, '認証セッションが見つかりません。', 'state パラメータがありません。');
45
+ return;
46
+ }
47
+ if (!params.code) {
48
+ this.renderErrorPage(res, '認証コードが見つかりません。', 'code パラメータがありません。');
49
+ return;
50
+ }
51
+ // Find pending session
52
+ const session = this.pendingAuthStore.findByState(params.state);
53
+ if (!session) {
54
+ this.renderErrorPage(res, '認証セッションが見つかりません。', 'セッションが期限切れか、無効な state です。再度認証を開始してください。');
55
+ return;
56
+ }
57
+ // Exchange code for tokens
58
+ await this.exchangeCodeForTokens(params.code, session);
59
+ // Remove session after successful exchange
60
+ this.pendingAuthStore.remove(params.state);
61
+ // Render success page
62
+ this.renderSuccessPage(res);
63
+ oauthLogger.info({ state: params.state }, 'OAuth callback completed successfully');
64
+ }
65
+ catch (error) {
66
+ oauthLogger.error({ err: error }, 'OAuth callback failed');
67
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
68
+ this.renderErrorPage(res, '認証に失敗しました。', errorMessage);
69
+ }
70
+ }
71
+ /**
72
+ * Parse callback parameters from URL
73
+ */
74
+ parseCallbackParams(urlString) {
75
+ try {
76
+ // Handle relative URLs by adding a base
77
+ const url = new URL(urlString, 'http://localhost');
78
+ const searchParams = url.searchParams;
79
+ return {
80
+ code: searchParams.get('code') || undefined,
81
+ state: searchParams.get('state') || undefined,
82
+ error: searchParams.get('error') || undefined,
83
+ errorDescription: searchParams.get('error_description') || undefined,
84
+ };
85
+ }
86
+ catch (error) {
87
+ oauthLogger.error({ err: error, url: urlString }, 'Failed to parse callback URL');
88
+ return {};
89
+ }
90
+ }
91
+ /**
92
+ * Exchange authorization code for tokens
93
+ */
94
+ async exchangeCodeForTokens(code, session) {
95
+ // Use googleapis directly for token exchange since we have the code_verifier
96
+ // stored in the session (GoogleOAuthHandler requires calling getAuthorizationUrl()
97
+ // first to set its internal codeVerifier, which doesn't work for remote mode)
98
+ const { google } = await import('googleapis');
99
+ const oauth2Client = new google.auth.OAuth2(process.env.GOOGLE_CLIENT_ID, process.env.GOOGLE_CLIENT_SECRET, session.redirectUri);
100
+ const { tokens } = await oauth2Client.getToken({
101
+ code,
102
+ codeVerifier: session.codeVerifier,
103
+ });
104
+ if (!tokens.access_token || !tokens.refresh_token) {
105
+ throw new Error('トークンの取得に失敗しました。access_token または refresh_token がありません。');
106
+ }
107
+ // Store tokens using the GoogleOAuthHandler
108
+ await this.googleOAuthHandler.storeTokens({
109
+ accessToken: tokens.access_token,
110
+ refreshToken: tokens.refresh_token,
111
+ expiresAt: tokens.expiry_date || Date.now() + 3600 * 1000,
112
+ scope: tokens.scope ? tokens.scope.split(' ') : ['https://www.googleapis.com/auth/calendar'],
113
+ });
114
+ oauthLogger.info('Tokens exchanged and stored successfully');
115
+ }
116
+ /**
117
+ * Render success HTML page
118
+ */
119
+ renderSuccessPage(res) {
120
+ const html = `<!DOCTYPE html>
121
+ <html lang="ja">
122
+ <head>
123
+ <title>sage - Google Calendar 認証完了</title>
124
+ <meta charset="utf-8">
125
+ <meta name="viewport" content="width=device-width, initial-scale=1">
126
+ <style>
127
+ * { box-sizing: border-box; margin: 0; padding: 0; }
128
+ body {
129
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
130
+ text-align: center;
131
+ padding: 50px 20px;
132
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
133
+ min-height: 100vh;
134
+ display: flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ }
138
+ .container {
139
+ max-width: 400px;
140
+ background: white;
141
+ padding: 40px;
142
+ border-radius: 16px;
143
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
144
+ }
145
+ .success-icon {
146
+ width: 80px;
147
+ height: 80px;
148
+ background: #22c55e;
149
+ border-radius: 50%;
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ margin: 0 auto 24px;
154
+ }
155
+ .success-icon svg {
156
+ width: 40px;
157
+ height: 40px;
158
+ stroke: white;
159
+ stroke-width: 3;
160
+ fill: none;
161
+ }
162
+ h1 {
163
+ color: #111827;
164
+ font-size: 24px;
165
+ margin-bottom: 12px;
166
+ }
167
+ p {
168
+ color: #6b7280;
169
+ font-size: 16px;
170
+ line-height: 1.5;
171
+ }
172
+ </style>
173
+ </head>
174
+ <body>
175
+ <div class="container">
176
+ <div class="success-icon">
177
+ <svg viewBox="0 0 24 24"><polyline points="20 6 9 17 4 12"></polyline></svg>
178
+ </div>
179
+ <h1>認証が完了しました</h1>
180
+ <p>このウィンドウを閉じて、Claude に戻ってください。</p>
181
+ </div>
182
+ </body>
183
+ </html>`;
184
+ res.writeHead(200, {
185
+ 'Content-Type': 'text/html; charset=utf-8',
186
+ 'Cache-Control': 'no-store',
187
+ });
188
+ res.end(html);
189
+ }
190
+ /**
191
+ * Render error HTML page
192
+ */
193
+ renderErrorPage(res, error, detail) {
194
+ const detailHtml = detail
195
+ ? `<div class="error-detail">${this.escapeHtml(detail)}</div>`
196
+ : '';
197
+ const html = `<!DOCTYPE html>
198
+ <html lang="ja">
199
+ <head>
200
+ <title>sage - Google Calendar 認証エラー</title>
201
+ <meta charset="utf-8">
202
+ <meta name="viewport" content="width=device-width, initial-scale=1">
203
+ <style>
204
+ * { box-sizing: border-box; margin: 0; padding: 0; }
205
+ body {
206
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
207
+ text-align: center;
208
+ padding: 50px 20px;
209
+ background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);
210
+ min-height: 100vh;
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: center;
214
+ }
215
+ .container {
216
+ max-width: 400px;
217
+ background: white;
218
+ padding: 40px;
219
+ border-radius: 16px;
220
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
221
+ }
222
+ .error-icon {
223
+ width: 80px;
224
+ height: 80px;
225
+ background: #ef4444;
226
+ border-radius: 50%;
227
+ display: flex;
228
+ align-items: center;
229
+ justify-content: center;
230
+ margin: 0 auto 24px;
231
+ }
232
+ .error-icon svg {
233
+ width: 40px;
234
+ height: 40px;
235
+ stroke: white;
236
+ stroke-width: 3;
237
+ fill: none;
238
+ }
239
+ h1 {
240
+ color: #111827;
241
+ font-size: 24px;
242
+ margin-bottom: 12px;
243
+ }
244
+ p {
245
+ color: #6b7280;
246
+ font-size: 16px;
247
+ line-height: 1.5;
248
+ margin-bottom: 16px;
249
+ }
250
+ .error-detail {
251
+ background: #fef2f2;
252
+ color: #991b1b;
253
+ padding: 12px 16px;
254
+ border-radius: 8px;
255
+ font-size: 14px;
256
+ text-align: left;
257
+ word-break: break-word;
258
+ }
259
+ </style>
260
+ </head>
261
+ <body>
262
+ <div class="container">
263
+ <div class="error-icon">
264
+ <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
265
+ </div>
266
+ <h1>認証に失敗しました</h1>
267
+ <p>${this.escapeHtml(error)}</p>
268
+ ${detailHtml}
269
+ <p style="margin-top: 16px;">Claude に戻って再試行してください。</p>
270
+ </div>
271
+ </body>
272
+ </html>`;
273
+ res.writeHead(200, {
274
+ 'Content-Type': 'text/html; charset=utf-8',
275
+ 'Cache-Control': 'no-store',
276
+ });
277
+ res.end(html);
278
+ }
279
+ /**
280
+ * Escape HTML special characters
281
+ */
282
+ escapeHtml(text) {
283
+ return text
284
+ .replace(/&/g, '&amp;')
285
+ .replace(/</g, '&lt;')
286
+ .replace(/>/g, '&gt;')
287
+ .replace(/"/g, '&quot;')
288
+ .replace(/'/g, '&#039;');
289
+ }
290
+ }
291
+ //# sourceMappingURL=google-oauth-callback-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-oauth-callback-handler.js","sourceRoot":"","sources":["../../src/oauth/google-oauth-callback-handler.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,6 @@ export { OAuthHandler, createOAuthHandler, OAuthHandlerConfig } from './oauth-ha
13
13
  export { FileMutex, FileMutexMetrics } from './file-mutex.js';
14
14
  export { OAuthCallbackServer, OAuthCallbackServerOptions, CallbackResult, } from './oauth-callback-server.js';
15
15
  export { GoogleOAuthHandler, GoogleOAuthConfig, GoogleOAuthTokens } from './google-oauth-handler.js';
16
+ export { PendingGoogleAuthStore, PendingGoogleAuth, CreatePendingAuthResult, } from './pending-google-auth-store.js';
17
+ export { GoogleOAuthCallbackHandler, GoogleOAuthCallbackHandlerOptions, } from './google-oauth-callback-handler.js';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGxI,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG1F,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,cAAc,GACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGxI,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG1F,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,cAAc,GACf,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGrG,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,oCAAoC,CAAC"}
@@ -24,4 +24,8 @@ export { FileMutex } from './file-mutex.js';
24
24
  export { OAuthCallbackServer, } from './oauth-callback-server.js';
25
25
  // Google OAuth Handler
26
26
  export { GoogleOAuthHandler } from './google-oauth-handler.js';
27
+ // Pending Google Auth Store (for remote OAuth mode)
28
+ export { PendingGoogleAuthStore, } from './pending-google-auth-store.js';
29
+ // Google OAuth Callback Handler (for remote OAuth mode)
30
+ export { GoogleOAuthCallbackHandler, } from './google-oauth-callback-handler.js';
27
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,OAAO;AACP,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAExI,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AAEvF,2BAA2B;AAC3B,OAAO,EAAE,4BAA4B,EAA0B,MAAM,iBAAiB,CAAC;AAEvF,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAqB,MAAM,0BAA0B,CAAC;AAEtF,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAe,MAAM,mBAAmB,CAAC;AAEnE,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAqB,MAAM,mBAAmB,CAAC;AAEtF,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,oBAAoB,CAAC;AAE1F,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAE9D,gDAAgD;AAChD,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAwC,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,OAAO;AACP,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAExI,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AAEvF,2BAA2B;AAC3B,OAAO,EAAE,4BAA4B,EAA0B,MAAM,iBAAiB,CAAC;AAEvF,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAqB,MAAM,0BAA0B,CAAC;AAEtF,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAe,MAAM,mBAAmB,CAAC;AAEnE,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAqB,MAAM,mBAAmB,CAAC;AAEtF,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,oBAAoB,CAAC;AAE1F,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAE9D,gDAAgD;AAChD,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAwC,MAAM,2BAA2B,CAAC;AAErG,oDAAoD;AACpD,OAAO,EACL,sBAAsB,GAGvB,MAAM,gCAAgC,CAAC;AAExC,wDAAwD;AACxD,OAAO,EACL,0BAA0B,GAE3B,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Pending Google Auth Store
3
+ * Requirements: FR-3 (Pending Auth Session Management)
4
+ *
5
+ * Manages pending Google OAuth authentication sessions for remote mode.
6
+ * Sessions are stored encrypted and expire after a configurable timeout.
7
+ */
8
+ /**
9
+ * Pending Google Auth Session
10
+ */
11
+ export interface PendingGoogleAuth {
12
+ state: string;
13
+ codeVerifier: string;
14
+ redirectUri: string;
15
+ createdAt: number;
16
+ expiresAt: number;
17
+ }
18
+ /**
19
+ * Result of creating a new pending auth session
20
+ */
21
+ export interface CreatePendingAuthResult {
22
+ state: string;
23
+ codeVerifier: string;
24
+ codeChallenge: string;
25
+ }
26
+ /**
27
+ * Pending Google Auth Store
28
+ *
29
+ * Manages pending OAuth sessions with encrypted persistence.
30
+ */
31
+ export declare class PendingGoogleAuthStore {
32
+ private sessions;
33
+ private readonly storagePath;
34
+ private readonly encryptionService;
35
+ private readonly sessionTimeoutMs;
36
+ private cleanupTimer;
37
+ private initialized;
38
+ constructor(encryptionKey?: string);
39
+ /**
40
+ * Initialize the store and start cleanup timer
41
+ */
42
+ initialize(): Promise<void>;
43
+ /**
44
+ * Create a new pending auth session
45
+ *
46
+ * @param redirectUri - The OAuth callback URL
47
+ * @returns Session state, code_verifier, and code_challenge
48
+ */
49
+ create(redirectUri: string): CreatePendingAuthResult;
50
+ /**
51
+ * Find a session by state
52
+ *
53
+ * @param state - The session state (UUID)
54
+ * @returns The session or null if not found/expired
55
+ */
56
+ findByState(state: string): PendingGoogleAuth | null;
57
+ /**
58
+ * Remove a session by state
59
+ *
60
+ * @param state - The session state to remove
61
+ */
62
+ remove(state: string): void;
63
+ /**
64
+ * Clean up expired sessions
65
+ */
66
+ cleanupExpired(): void;
67
+ /**
68
+ * Get session timeout in seconds
69
+ */
70
+ getSessionTimeoutSeconds(): number;
71
+ /**
72
+ * Persist sessions to encrypted file
73
+ */
74
+ persist(): Promise<void>;
75
+ /**
76
+ * Load sessions from encrypted file
77
+ */
78
+ load(): Promise<void>;
79
+ /**
80
+ * Shutdown the store and stop cleanup timer
81
+ */
82
+ shutdown(): Promise<void>;
83
+ /**
84
+ * Get the number of active sessions
85
+ */
86
+ getSessionCount(): number;
87
+ }
88
+ //# sourceMappingURL=pending-google-auth-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-google-auth-store.d.ts","sourceRoot":"","sources":["../../src/oauth/pending-google-auth-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAUD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAYD;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,WAAW,CAAkB;gBAEzB,aAAa,CAAC,EAAE,MAAM;IAalC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;;;;OAKG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB;IA8BpD;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAiBpD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAa3B;;OAEG;IACH,cAAc,IAAI,IAAI;IAqBtB;;OAEG;IACH,wBAAwB,IAAI,MAAM;IAIlC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Pending Google Auth Store
3
+ * Requirements: FR-3 (Pending Auth Session Management)
4
+ *
5
+ * Manages pending Google OAuth authentication sessions for remote mode.
6
+ * Sessions are stored encrypted and expire after a configurable timeout.
7
+ */
8
+ import { randomUUID } from 'crypto';
9
+ import { join } from 'path';
10
+ import { homedir } from 'os';
11
+ import { generateCodeVerifier, generateCodeChallenge } from './pkce.js';
12
+ import { EncryptionService } from './encryption-service.js';
13
+ import { oauthLogger } from '../utils/logger.js';
14
+ /**
15
+ * Default session timeout (10 minutes)
16
+ */
17
+ const DEFAULT_SESSION_TIMEOUT_MS = 10 * 60 * 1000;
18
+ /**
19
+ * Cleanup interval (5 minutes)
20
+ */
21
+ const CLEANUP_INTERVAL_MS = 5 * 60 * 1000;
22
+ /**
23
+ * Pending Google Auth Store
24
+ *
25
+ * Manages pending OAuth sessions with encrypted persistence.
26
+ */
27
+ export class PendingGoogleAuthStore {
28
+ sessions = new Map();
29
+ storagePath;
30
+ encryptionService;
31
+ sessionTimeoutMs;
32
+ cleanupTimer = null;
33
+ initialized = false;
34
+ constructor(encryptionKey) {
35
+ this.storagePath = join(homedir(), '.sage', 'google_pending_auth.enc');
36
+ this.encryptionService = new EncryptionService({
37
+ encryptionKey: encryptionKey || process.env.SAGE_ENCRYPTION_KEY,
38
+ });
39
+ // Parse session timeout from environment or use default
40
+ const timeoutEnv = process.env.GOOGLE_AUTH_SESSION_TIMEOUT;
41
+ this.sessionTimeoutMs = timeoutEnv
42
+ ? parseInt(timeoutEnv, 10) * 1000
43
+ : DEFAULT_SESSION_TIMEOUT_MS;
44
+ }
45
+ /**
46
+ * Initialize the store and start cleanup timer
47
+ */
48
+ async initialize() {
49
+ if (this.initialized) {
50
+ return;
51
+ }
52
+ await this.encryptionService.initialize();
53
+ await this.load();
54
+ // Start periodic cleanup
55
+ this.cleanupTimer = setInterval(() => {
56
+ this.cleanupExpired();
57
+ }, CLEANUP_INTERVAL_MS);
58
+ // Don't prevent process exit
59
+ this.cleanupTimer.unref();
60
+ this.initialized = true;
61
+ oauthLogger.info('PendingGoogleAuthStore initialized');
62
+ }
63
+ /**
64
+ * Create a new pending auth session
65
+ *
66
+ * @param redirectUri - The OAuth callback URL
67
+ * @returns Session state, code_verifier, and code_challenge
68
+ */
69
+ create(redirectUri) {
70
+ const state = randomUUID();
71
+ const codeVerifier = generateCodeVerifier();
72
+ const codeChallenge = generateCodeChallenge(codeVerifier);
73
+ const now = Date.now();
74
+ const session = {
75
+ state,
76
+ codeVerifier,
77
+ redirectUri,
78
+ createdAt: now,
79
+ expiresAt: now + this.sessionTimeoutMs,
80
+ };
81
+ this.sessions.set(state, session);
82
+ // Persist asynchronously (don't block)
83
+ this.persist().catch(err => {
84
+ oauthLogger.error({ err }, 'Failed to persist pending auth session');
85
+ });
86
+ oauthLogger.info({ state }, 'Created pending auth session');
87
+ return {
88
+ state,
89
+ codeVerifier,
90
+ codeChallenge,
91
+ };
92
+ }
93
+ /**
94
+ * Find a session by state
95
+ *
96
+ * @param state - The session state (UUID)
97
+ * @returns The session or null if not found/expired
98
+ */
99
+ findByState(state) {
100
+ const session = this.sessions.get(state);
101
+ if (!session) {
102
+ return null;
103
+ }
104
+ // Check expiration
105
+ if (Date.now() > session.expiresAt) {
106
+ this.sessions.delete(state);
107
+ oauthLogger.info({ state }, 'Session expired');
108
+ return null;
109
+ }
110
+ return session;
111
+ }
112
+ /**
113
+ * Remove a session by state
114
+ *
115
+ * @param state - The session state to remove
116
+ */
117
+ remove(state) {
118
+ const existed = this.sessions.delete(state);
119
+ if (existed) {
120
+ oauthLogger.info({ state }, 'Removed pending auth session');
121
+ // Persist asynchronously
122
+ this.persist().catch(err => {
123
+ oauthLogger.error({ err }, 'Failed to persist after session removal');
124
+ });
125
+ }
126
+ }
127
+ /**
128
+ * Clean up expired sessions
129
+ */
130
+ cleanupExpired() {
131
+ const now = Date.now();
132
+ let removedCount = 0;
133
+ for (const [state, session] of this.sessions.entries()) {
134
+ if (now > session.expiresAt) {
135
+ this.sessions.delete(state);
136
+ removedCount++;
137
+ }
138
+ }
139
+ if (removedCount > 0) {
140
+ oauthLogger.info({ removedCount }, 'Cleaned up expired sessions');
141
+ // Persist asynchronously
142
+ this.persist().catch(err => {
143
+ oauthLogger.error({ err }, 'Failed to persist after cleanup');
144
+ });
145
+ }
146
+ }
147
+ /**
148
+ * Get session timeout in seconds
149
+ */
150
+ getSessionTimeoutSeconds() {
151
+ return Math.floor(this.sessionTimeoutMs / 1000);
152
+ }
153
+ /**
154
+ * Persist sessions to encrypted file
155
+ */
156
+ async persist() {
157
+ try {
158
+ const storage = {
159
+ version: 1,
160
+ sessions: Array.from(this.sessions.values()),
161
+ };
162
+ await this.encryptionService.encryptToFile(JSON.stringify(storage), this.storagePath);
163
+ oauthLogger.debug({ sessionCount: this.sessions.size }, 'Persisted pending auth sessions');
164
+ }
165
+ catch (error) {
166
+ oauthLogger.error({ err: error }, 'Failed to persist pending auth sessions');
167
+ throw error;
168
+ }
169
+ }
170
+ /**
171
+ * Load sessions from encrypted file
172
+ */
173
+ async load() {
174
+ try {
175
+ const data = await this.encryptionService.decryptFromFile(this.storagePath);
176
+ if (data === null) {
177
+ oauthLogger.debug('No existing pending auth sessions found');
178
+ return;
179
+ }
180
+ const storage = JSON.parse(data);
181
+ if (storage.version !== 1) {
182
+ oauthLogger.warn({ version: storage.version }, 'Unknown storage version, ignoring');
183
+ return;
184
+ }
185
+ // Load sessions and filter out expired ones
186
+ const now = Date.now();
187
+ for (const session of storage.sessions) {
188
+ if (now < session.expiresAt) {
189
+ this.sessions.set(session.state, session);
190
+ }
191
+ }
192
+ oauthLogger.info({ sessionCount: this.sessions.size }, 'Loaded pending auth sessions');
193
+ }
194
+ catch (error) {
195
+ oauthLogger.error({ err: error }, 'Failed to load pending auth sessions');
196
+ // Don't throw - start with empty sessions
197
+ }
198
+ }
199
+ /**
200
+ * Shutdown the store and stop cleanup timer
201
+ */
202
+ async shutdown() {
203
+ if (this.cleanupTimer) {
204
+ clearInterval(this.cleanupTimer);
205
+ this.cleanupTimer = null;
206
+ }
207
+ // Final persist
208
+ await this.persist();
209
+ oauthLogger.info('PendingGoogleAuthStore shutdown');
210
+ }
211
+ /**
212
+ * Get the number of active sessions
213
+ */
214
+ getSessionCount() {
215
+ return this.sessions.size;
216
+ }
217
+ }
218
+ //# sourceMappingURL=pending-google-auth-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-google-auth-store.js","sourceRoot":"","sources":["../../src/oauth/pending-google-auth-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA8BjD;;GAEG;AACH,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1C;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IACzB,QAAQ,GAAmC,IAAI,GAAG,EAAE,CAAC;IAC5C,WAAW,CAAS;IACpB,iBAAiB,CAAoB;IACrC,gBAAgB,CAAS;IAClC,YAAY,GAA0B,IAAI,CAAC;IAC3C,WAAW,GAAY,KAAK,CAAC;IAErC,YAAY,aAAsB;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC7C,aAAa,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB;SAChE,CAAC,CAAC;QAEH,wDAAwD;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,UAAU;YAChC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,IAAI;YACjC,CAAC,CAAC,0BAA0B,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,yBAAyB;QACzB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAExB,6BAA6B;QAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,WAAW,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAmB;QACxB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAsB;YACjC,KAAK;YACL,YAAY;YACZ,WAAW;YACX,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,gBAAgB;SACvC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAElC,uCAAuC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzB,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAE5D,OAAO;YACL,KAAK;YACL,YAAY;YACZ,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,KAAa;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAa;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAE5D,yBAAyB;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACzB,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yCAAyC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,6BAA6B,CAAC,CAAC;YAElE,yBAAyB;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACzB,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,iCAAiC,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAA6B;gBACxC,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aAC7C,CAAC;YAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,IAAI,CAAC,WAAW,CACjB,CAAC;YAEF,WAAW,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,iCAAiC,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,yCAAyC,CAAC,CAAC;YAC7E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,WAAW,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAA6B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE3D,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBAC1B,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YAED,4CAA4C;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACvC,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,8BAA8B,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,sCAAsC,CAAC,CAAC;YAC1E,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF"}
@@ -3,15 +3,15 @@
3
3
  * Requirements: FR-1 (authenticate_google MCP Tool)
4
4
  *
5
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
6
+ * - Local mode: Start callback server, open browser, wait for callback
7
+ * - Remote mode: Return authorization URL for user to open manually
8
+ *
9
+ * Mode is determined by GOOGLE_REDIRECT_URI:
10
+ * - Contains 'localhost' or '127.0.0.1' -> Local mode
11
+ * - Otherwise -> Remote mode (server receives callback directly)
13
12
  */
14
13
  import { z } from 'zod';
14
+ import { PendingGoogleAuthStore } from '../../oauth/pending-google-auth-store.js';
15
15
  import type { OAuthToolsContext } from './index.js';
16
16
  /**
17
17
  * Arguments for authenticate_google tool
@@ -40,7 +40,18 @@ export interface AuthenticateGoogleResult {
40
40
  scopes?: string[];
41
41
  authorizationUrl?: string;
42
42
  error?: string;
43
+ state?: string;
44
+ pendingAuth?: boolean;
45
+ expiresIn?: number;
43
46
  }
47
+ /**
48
+ * Export the pending auth store for use by HTTP server
49
+ */
50
+ export declare function getSharedPendingAuthStore(): PendingGoogleAuthStore | null;
51
+ /**
52
+ * Set the shared pending auth store (called by HTTP server)
53
+ */
54
+ export declare function setSharedPendingAuthStore(store: PendingGoogleAuthStore): void;
44
55
  /**
45
56
  * Handle authenticate_google tool call
46
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate-google.d.ts","sourceRoot":"","sources":["../../../src/tools/oauth/authenticate-google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,4BAA4B;IACvC,mDAAmD;;IAEnD,oDAAoD;;;;;;;;EAEpD,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,wBAAwB,CAAC,CAsKnC"}
1
+ {"version":3,"file":"authenticate-google.d.ts","sourceRoot":"","sources":["../../../src/tools/oauth/authenticate-google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAGlF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,4BAA4B;IACvC,mDAAmD;;IAEnD,oDAAoD;;;;;;;;EAEpD,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,GAAG,IAAI,CAEzE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAE7E;AAkBD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,wBAAwB,CAAC,CA2KnC"}
@@ -3,17 +3,17 @@
3
3
  * Requirements: FR-1 (authenticate_google MCP Tool)
4
4
  *
5
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
6
+ * - Local mode: Start callback server, open browser, wait for callback
7
+ * - Remote mode: Return authorization URL for user to open manually
8
+ *
9
+ * Mode is determined by GOOGLE_REDIRECT_URI:
10
+ * - Contains 'localhost' or '127.0.0.1' -> Local mode
11
+ * - Otherwise -> Remote mode (server receives callback directly)
13
12
  */
14
13
  import { z } from 'zod';
15
14
  import { OAuthCallbackServer } from '../../oauth/oauth-callback-server.js';
16
- import { GoogleOAuthHandler } from '../../oauth/google-oauth-handler.js';
15
+ import { GoogleOAuthHandler, GOOGLE_CALENDAR_SCOPES } from '../../oauth/google-oauth-handler.js';
16
+ import { PendingGoogleAuthStore } from '../../oauth/pending-google-auth-store.js';
17
17
  import { openBrowser } from '../../utils/browser-opener.js';
18
18
  import { oauthLogger } from '../../utils/logger.js';
19
19
  /**
@@ -25,6 +25,46 @@ export const AuthenticateGoogleArgsSchema = z.object({
25
25
  /** Timeout in seconds (default: 300 = 5 minutes) */
26
26
  timeout: z.number().optional().default(300),
27
27
  });
28
+ /**
29
+ * Singleton instance of PendingGoogleAuthStore for remote mode
30
+ */
31
+ let pendingAuthStore = null;
32
+ /**
33
+ * Get or create the pending auth store
34
+ */
35
+ async function getPendingAuthStore() {
36
+ if (!pendingAuthStore) {
37
+ pendingAuthStore = new PendingGoogleAuthStore();
38
+ await pendingAuthStore.initialize();
39
+ }
40
+ return pendingAuthStore;
41
+ }
42
+ /**
43
+ * Export the pending auth store for use by HTTP server
44
+ */
45
+ export function getSharedPendingAuthStore() {
46
+ return pendingAuthStore;
47
+ }
48
+ /**
49
+ * Set the shared pending auth store (called by HTTP server)
50
+ */
51
+ export function setSharedPendingAuthStore(store) {
52
+ pendingAuthStore = store;
53
+ }
54
+ /**
55
+ * Check if running in remote mode
56
+ *
57
+ * Remote mode is enabled when GOOGLE_REDIRECT_URI is set and
58
+ * does not point to localhost/127.0.0.1.
59
+ */
60
+ function isRemoteMode() {
61
+ const redirectUri = process.env.GOOGLE_REDIRECT_URI;
62
+ if (!redirectUri) {
63
+ return false;
64
+ }
65
+ const lowerUri = redirectUri.toLowerCase();
66
+ return !lowerUri.includes('localhost') && !lowerUri.includes('127.0.0.1');
67
+ }
28
68
  /**
29
69
  * Handle authenticate_google tool call
30
70
  *
@@ -95,7 +135,11 @@ export async function handleAuthenticateGoogle(args, _context) {
95
135
  oauthLogger.debug({ error }, 'No existing tokens found');
96
136
  }
97
137
  }
98
- // Start callback server
138
+ // Remote mode: return authorization URL for user to open manually
139
+ if (isRemoteMode()) {
140
+ return handleRemoteModeAuth(oauthHandler, redirectUri);
141
+ }
142
+ // Local mode: Start callback server
99
143
  const callbackServer = new OAuthCallbackServer({
100
144
  timeout: timeout * 1000, // Convert to milliseconds
101
145
  });
@@ -177,4 +221,46 @@ export async function handleAuthenticateGoogle(args, _context) {
177
221
  await callbackServer.shutdown();
178
222
  }
179
223
  }
224
+ /**
225
+ * Handle remote mode authentication
226
+ *
227
+ * In remote mode, we return the authorization URL for the user to open
228
+ * manually in their browser. The server will receive the callback directly.
229
+ */
230
+ async function handleRemoteModeAuth(_oauthHandler, redirectUri) {
231
+ try {
232
+ const store = await getPendingAuthStore();
233
+ // Create pending auth session (codeVerifier is stored in the session for later use)
234
+ const { state, codeChallenge } = store.create(redirectUri);
235
+ // Generate authorization URL with PKCE
236
+ const { google } = await import('googleapis');
237
+ const oauth2Client = new google.auth.OAuth2(process.env.GOOGLE_CLIENT_ID, process.env.GOOGLE_CLIENT_SECRET, redirectUri);
238
+ const authorizationUrl = oauth2Client.generateAuthUrl({
239
+ access_type: 'offline',
240
+ scope: GOOGLE_CALENDAR_SCOPES,
241
+ code_challenge: codeChallenge,
242
+ code_challenge_method: 'S256',
243
+ prompt: 'consent',
244
+ state,
245
+ });
246
+ oauthLogger.info({ state, redirectUri }, 'Generated remote mode authorization URL');
247
+ return {
248
+ success: true,
249
+ message: '以下のURLをブラウザで開いてGoogle認証を完了してください。',
250
+ authorizationUrl,
251
+ state,
252
+ pendingAuth: true,
253
+ expiresIn: store.getSessionTimeoutSeconds(),
254
+ };
255
+ }
256
+ catch (error) {
257
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
258
+ oauthLogger.error({ error }, 'Remote mode auth failed');
259
+ return {
260
+ success: false,
261
+ message: '認証URLの生成に失敗しました。',
262
+ error: errorMessage,
263
+ };
264
+ }
265
+ }
180
266
  //# sourceMappingURL=authenticate-google.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate-google.js","sourceRoot":"","sources":["../../../src/tools/oauth/authenticate-google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authenticate-google.js","sourceRoot":"","sources":["../../../src/tools/oauth/authenticate-google.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shin1ohno/sage",
3
- "version": "0.11.1",
3
+ "version": "0.12.1",
4
4
  "description": "AI Task Management Assistant MCP Server for Claude Desktop and Claude Code",
5
5
  "main": "dist/index.js",
6
6
  "bin": {