gsd-agent 1.0.7 → 1.0.9

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/bin/cli.js CHANGED
@@ -23,7 +23,7 @@ const __dirname = dirname(__filename);
23
23
  const AGENT_DIST = join(__dirname, '..', 'dist', 'index.js');
24
24
  const CREDENTIALS_PATH = join(process.env.HOME || '', '.gsd-agent', 'credentials.json');
25
25
  const LOG_FILE = join(process.env.HOME || '', '.gsd-agent', 'logs', 'agent.log');
26
- const VERSION = '1.0.5';
26
+ const VERSION = '1.0.9';
27
27
 
28
28
  /**
29
29
  * Check if agent is authenticated
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqEH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyM1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqP1C"}
package/dist/index.js CHANGED
@@ -20,54 +20,16 @@ import { CommandQueue } from './command-queue.js';
20
20
  import { createClient } from '@supabase/supabase-js';
21
21
  import os from 'os';
22
22
  import path from 'path';
23
- /**
24
- * Check if agent is authenticated
25
- */
26
- function isAuthenticated() {
27
- try {
28
- const configDir = path.join(os.homedir(), '.gsd-agent');
29
- const credentialsPath = path.join(configDir, 'credentials.json');
30
- console.log('[DEBUG] Checking authentication...');
31
- console.log('[DEBUG] Credentials path:', credentialsPath);
32
- if (!require('fs').existsSync(credentialsPath)) {
33
- console.log('[DEBUG] Credentials file does not exist');
34
- return false;
35
- }
36
- const credentials = JSON.parse(require('fs').readFileSync(credentialsPath, 'utf-8'));
37
- console.log('[DEBUG] Credentials loaded:', {
38
- has_access_token: !!credentials.access_token,
39
- has_user_id: !!credentials.user_id,
40
- has_supabase_url: !!credentials.supabase_url,
41
- expires_at: credentials.expires_at
42
- });
43
- if (!credentials.access_token || !credentials.user_id) {
44
- console.log('[DEBUG] Missing access_token or user_id');
45
- return false;
46
- }
47
- // Check if token is expired
48
- const expiresAt = new Date(credentials.expires_at);
49
- const now = new Date();
50
- console.log('[DEBUG] Token expires at:', expiresAt.toISOString());
51
- console.log('[DEBUG] Current time:', now.toISOString());
52
- console.log('[DEBUG] Is expired?', expiresAt < now);
53
- if (expiresAt < now) {
54
- console.log('[DEBUG] Token is expired');
55
- return false;
56
- }
57
- console.log('[DEBUG] Authentication check passed!');
58
- return true;
59
- }
60
- catch (error) {
61
- console.log('[DEBUG] Authentication check error:', error);
62
- return false;
63
- }
64
- }
23
+ import fs from 'fs';
24
+ import { createTokenManager } from './token-manager.js';
65
25
  /**
66
26
  * Main function - initializes and runs the agent daemon
67
27
  */
68
28
  export async function main() {
69
- // Check authentication first
70
- if (!isAuthenticated()) {
29
+ // Check authentication and refresh token if needed
30
+ const tokenManager = createTokenManager();
31
+ const isAuth = await tokenManager.isAuthenticated();
32
+ if (!isAuth) {
71
33
  console.error('GSD Agent not authenticated.');
72
34
  console.error('Run: gsd-agent auth');
73
35
  console.error('Before starting the agent daemon.');
@@ -95,23 +57,43 @@ export async function main() {
95
57
  logger.warn('No workspaces found. Create a GSD project with /gsd:new-project');
96
58
  // Continue running to detect new workspaces
97
59
  }
98
- // 5. Connect to Supabase with user credentials
60
+ // 5. Connect to Supabase with user credentials (get fresh token)
99
61
  logger.info('Connecting to Supabase');
100
62
  const credentialsPath = path.join(configDir, 'credentials.json');
101
- const credentials = JSON.parse(require('fs').readFileSync(credentialsPath, 'utf-8'));
102
- const supabaseJsClient = createClient(config.supabase_url, credentials.access_token, {
63
+ const credentials = JSON.parse(fs.readFileSync(credentialsPath, 'utf-8'));
64
+ // Get valid token (will refresh if needed)
65
+ const validToken = await tokenManager.getValidToken();
66
+ if (!validToken) {
67
+ logger.error('Failed to get valid access token');
68
+ process.exit(1);
69
+ }
70
+ // Use hardcoded production Supabase URL and anon key
71
+ const supabaseUrl = credentials.supabase_url || 'https://jatlexitfuguudjlqvow.supabase.co';
72
+ const anonKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImphdGxleGl0ZnVndXVkamxxdm93Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzQ1NDgxMzgsImV4cCI6MjA5MDEyNDEzOH0.NBh6CFrrRW3BlP3UsxekAoxOuYy7rQywUmx-VTL4zs0';
73
+ const supabaseJsClient = createClient(supabaseUrl, anonKey, {
103
74
  auth: {
104
75
  persistSession: false,
105
76
  autoRefreshToken: false
106
77
  },
107
78
  db: {
108
79
  schema: 'public'
80
+ },
81
+ global: {
82
+ headers: {
83
+ Authorization: `Bearer ${validToken}`
84
+ }
109
85
  }
110
86
  });
111
87
  // 6. Create StorageClient
112
88
  const storageClient = createStorageClient(supabaseJsClient, logger);
113
89
  // 7. Create SupabaseClient with StorageClient
114
- const supabase = createSupabaseClient(config, logger, storageClient, credentials.user_id);
90
+ // Override config with correct Supabase URL
91
+ const configWithUrl = {
92
+ ...config,
93
+ supabase_url: supabaseUrl,
94
+ supabase_key: anonKey
95
+ };
96
+ const supabase = createSupabaseClient(configWithUrl, logger, storageClient, credentials.user_id);
115
97
  const connectResult = await supabase.connect();
116
98
  if (!connectResult.success) {
117
99
  logger.error('Failed to connect to Supabase', { error: connectResult.error });
@@ -181,10 +163,23 @@ export async function main() {
181
163
  const commandQueue = new CommandQueue(supabaseJsClient);
182
164
  commandQueue.start();
183
165
  logger.info('Command execution enabled');
166
+ // 21. Set up periodic token refresh (every 30 minutes)
167
+ const tokenRefreshInterval = setInterval(async () => {
168
+ logger.info('Performing periodic token refresh check');
169
+ const freshToken = await tokenManager.getValidToken();
170
+ if (!freshToken) {
171
+ logger.error('Failed to refresh token, agent may lose access');
172
+ }
173
+ else {
174
+ logger.info('Token refresh check completed');
175
+ }
176
+ }, 30 * 60 * 1000); // 30 minutes
184
177
  logger.info('Agent running', { workspaces: syncedWorkspaces.length });
185
- // 20. Handle graceful shutdown
178
+ // 22. Handle graceful shutdown
186
179
  const shutdown = async (signal) => {
187
180
  logger.info(`Received ${signal}, shutting down gracefully`);
181
+ // Clear token refresh interval
182
+ clearInterval(tokenRefreshInterval);
188
183
  // Stop CommandQueue
189
184
  commandQueue.stop();
190
185
  logger.info('Command queue stopped');
@@ -210,7 +205,12 @@ export async function main() {
210
205
  await new Promise(() => { }); // Never resolves
211
206
  }
212
207
  catch (error) {
213
- logger.error('Agent failed to start', { error });
208
+ logger.error('Agent failed to start', {
209
+ error,
210
+ message: error instanceof Error ? error.message : String(error),
211
+ stack: error instanceof Error ? error.stack : undefined
212
+ });
213
+ console.error('Full error:', error);
214
214
  process.exit(1);
215
215
  }
216
216
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Token Manager - Handles token refresh and validation
3
+ *
4
+ * Automatically refreshes access tokens using refresh tokens when they expire.
5
+ */
6
+ export declare class TokenManager {
7
+ private credentialsPath;
8
+ private supabaseUrl;
9
+ private supabaseAnonKey;
10
+ constructor();
11
+ /**
12
+ * Get valid access token, refreshing if necessary
13
+ */
14
+ getValidToken(): Promise<string | null>;
15
+ /**
16
+ * Refresh access token using refresh token
17
+ */
18
+ private refreshToken;
19
+ /**
20
+ * Check if credentials exist and are valid
21
+ */
22
+ isAuthenticated(): Promise<boolean>;
23
+ }
24
+ /**
25
+ * Factory function to create TokenManager
26
+ */
27
+ export declare function createTokenManager(): TokenManager;
28
+ //# sourceMappingURL=token-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../src/token-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,qBAAa,YAAY;IACvB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,eAAe,CAAQ;;IAQ/B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmC7C;;OAEG;YACW,YAAY;IAoD1B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;CAI1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Token Manager - Handles token refresh and validation
3
+ *
4
+ * Automatically refreshes access tokens using refresh tokens when they expire.
5
+ */
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import os from 'os';
9
+ import { createClient } from '@supabase/supabase-js';
10
+ export class TokenManager {
11
+ credentialsPath;
12
+ supabaseUrl;
13
+ supabaseAnonKey;
14
+ constructor() {
15
+ this.credentialsPath = path.join(os.homedir(), '.gsd-agent', 'credentials.json');
16
+ this.supabaseUrl = 'https://jatlexitfuguudjlqvow.supabase.co';
17
+ this.supabaseAnonKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImphdGxleGl0ZnVndXVkamxxdm93Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzQ1NDgxMzgsImV4cCI6MjA5MDEyNDEzOH0.NBh6CFrrRW3BlP3UsxekAoxOuYy7rQywUmx-VTL4zs0';
18
+ }
19
+ /**
20
+ * Get valid access token, refreshing if necessary
21
+ */
22
+ async getValidToken() {
23
+ try {
24
+ if (!fs.existsSync(this.credentialsPath)) {
25
+ console.error('[TokenManager] Credentials file not found');
26
+ return null;
27
+ }
28
+ const credentials = JSON.parse(fs.readFileSync(this.credentialsPath, 'utf-8'));
29
+ // Check if token is expired or will expire in the next 5 minutes
30
+ const expiresAt = new Date(credentials.expires_at);
31
+ const now = new Date();
32
+ const fiveMinutesFromNow = new Date(now.getTime() + 5 * 60 * 1000);
33
+ console.log('[TokenManager] Token check:', {
34
+ expires_at: expiresAt.toISOString(),
35
+ current_time: now.toISOString(),
36
+ needs_refresh: expiresAt < fiveMinutesFromNow
37
+ });
38
+ if (expiresAt < fiveMinutesFromNow) {
39
+ console.log('[TokenManager] Token expired or expiring soon, refreshing...');
40
+ return await this.refreshToken(credentials);
41
+ }
42
+ console.log('[TokenManager] Token is valid');
43
+ return credentials.access_token;
44
+ }
45
+ catch (error) {
46
+ console.error('[TokenManager] Error getting valid token:', error);
47
+ return null;
48
+ }
49
+ }
50
+ /**
51
+ * Refresh access token using refresh token
52
+ */
53
+ async refreshToken(credentials) {
54
+ try {
55
+ const supabase = createClient(this.supabaseUrl, this.supabaseAnonKey, {
56
+ auth: {
57
+ autoRefreshToken: false,
58
+ persistSession: false
59
+ }
60
+ });
61
+ console.log('[TokenManager] Calling Supabase refreshSession...');
62
+ // Use Supabase's built-in refresh mechanism
63
+ const { data, error } = await supabase.auth.refreshSession({
64
+ refresh_token: credentials.refresh_token
65
+ });
66
+ if (error) {
67
+ console.error('[TokenManager] Failed to refresh token:', error.message);
68
+ return null;
69
+ }
70
+ if (!data.session) {
71
+ console.error('[TokenManager] No session returned from refresh');
72
+ return null;
73
+ }
74
+ console.log('[TokenManager] Token refreshed successfully');
75
+ // Update stored credentials
76
+ const newCredentials = {
77
+ user_id: credentials.user_id,
78
+ access_token: data.session.access_token,
79
+ refresh_token: data.session.refresh_token,
80
+ expires_at: new Date(data.session.expires_at * 1000).toISOString(),
81
+ supabase_url: credentials.supabase_url
82
+ };
83
+ fs.writeFileSync(this.credentialsPath, JSON.stringify(newCredentials, null, 2), { mode: 0o600 });
84
+ console.log('[TokenManager] New token expires at:', newCredentials.expires_at);
85
+ return newCredentials.access_token;
86
+ }
87
+ catch (error) {
88
+ console.error('[TokenManager] Error refreshing token:', error);
89
+ return null;
90
+ }
91
+ }
92
+ /**
93
+ * Check if credentials exist and are valid
94
+ */
95
+ async isAuthenticated() {
96
+ const token = await this.getValidToken();
97
+ return token !== null;
98
+ }
99
+ }
100
+ /**
101
+ * Factory function to create TokenManager
102
+ */
103
+ export function createTokenManager() {
104
+ return new TokenManager();
105
+ }
106
+ //# sourceMappingURL=token-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../src/token-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-agent",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Local filesystem sync daemon for GSD projects - Connect your local .planning/ directories to the GSD cloud",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",