@stackmemoryai/stackmemory 0.2.6 → 0.2.7

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 (203) hide show
  1. package/README.md +245 -83
  2. package/dist/scripts/cancel-duplicate-tasks.d.ts +7 -0
  3. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +1 -0
  4. package/dist/scripts/cancel-duplicate-tasks.js +171 -0
  5. package/dist/scripts/cancel-duplicate-tasks.js.map +1 -0
  6. package/dist/scripts/list-linear-tasks.d.ts +6 -0
  7. package/dist/scripts/list-linear-tasks.d.ts.map +1 -0
  8. package/dist/scripts/list-linear-tasks.js +122 -0
  9. package/dist/scripts/list-linear-tasks.js.map +1 -0
  10. package/dist/scripts/merge-linear-duplicates-safe.d.ts +7 -0
  11. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +1 -0
  12. package/dist/scripts/merge-linear-duplicates-safe.js +265 -0
  13. package/dist/scripts/merge-linear-duplicates-safe.js.map +1 -0
  14. package/dist/scripts/merge-linear-duplicates.d.ts +7 -0
  15. package/dist/scripts/merge-linear-duplicates.d.ts.map +1 -0
  16. package/dist/scripts/merge-linear-duplicates.js +126 -0
  17. package/dist/scripts/merge-linear-duplicates.js.map +1 -0
  18. package/dist/scripts/show-linear-summary.d.ts +6 -0
  19. package/dist/scripts/show-linear-summary.d.ts.map +1 -0
  20. package/dist/scripts/show-linear-summary.js +117 -0
  21. package/dist/scripts/show-linear-summary.js.map +1 -0
  22. package/dist/src/cli/__tests__/index.test.d.ts +5 -0
  23. package/dist/src/cli/__tests__/index.test.d.ts.map +1 -0
  24. package/dist/src/cli/__tests__/index.test.js +726 -0
  25. package/dist/src/cli/__tests__/index.test.js.map +1 -0
  26. package/dist/src/cli/auto-detect.d.ts +61 -0
  27. package/dist/src/cli/auto-detect.d.ts.map +1 -0
  28. package/dist/src/cli/auto-detect.js +350 -0
  29. package/dist/src/cli/auto-detect.js.map +1 -0
  30. package/dist/src/cli/claude-sm.d.ts +7 -0
  31. package/dist/src/cli/claude-sm.d.ts.map +1 -0
  32. package/dist/src/cli/claude-sm.js +357 -0
  33. package/dist/src/cli/claude-sm.js.map +1 -0
  34. package/dist/src/cli/commands/context.d.ts +7 -0
  35. package/dist/src/cli/commands/context.d.ts.map +1 -0
  36. package/dist/src/cli/commands/context.js +365 -0
  37. package/dist/src/cli/commands/context.js.map +1 -0
  38. package/dist/src/cli/commands/linear-test.d.ts +6 -0
  39. package/dist/src/cli/commands/linear-test.d.ts.map +1 -0
  40. package/dist/src/cli/commands/linear-test.js +123 -0
  41. package/dist/src/cli/commands/linear-test.js.map +1 -0
  42. package/dist/src/cli/commands/linear.d.ts +6 -0
  43. package/dist/src/cli/commands/linear.d.ts.map +1 -0
  44. package/dist/src/cli/commands/linear.js +317 -0
  45. package/dist/src/cli/commands/linear.js.map +1 -0
  46. package/dist/src/cli/commands/log.d.ts +7 -0
  47. package/dist/src/cli/commands/log.d.ts.map +1 -0
  48. package/dist/src/cli/commands/log.js +168 -0
  49. package/dist/src/cli/commands/log.js.map +1 -0
  50. package/dist/src/cli/commands/onboard.d.ts +8 -0
  51. package/dist/src/cli/commands/onboard.d.ts.map +1 -0
  52. package/dist/src/cli/commands/onboard.js +363 -0
  53. package/dist/src/cli/commands/onboard.js.map +1 -0
  54. package/dist/src/cli/commands/projects.js +1 -1
  55. package/dist/src/cli/commands/projects.js.map +1 -1
  56. package/dist/src/cli/commands/search.d.ts +7 -0
  57. package/dist/src/cli/commands/search.d.ts.map +1 -0
  58. package/dist/src/cli/commands/search.js +162 -0
  59. package/dist/src/cli/commands/search.js.map +1 -0
  60. package/dist/src/cli/commands/session.d.ts +7 -0
  61. package/dist/src/cli/commands/session.d.ts.map +1 -0
  62. package/dist/src/cli/commands/session.js +222 -0
  63. package/dist/src/cli/commands/session.js.map +1 -0
  64. package/dist/src/cli/commands/tasks.d.ts +7 -0
  65. package/dist/src/cli/commands/tasks.d.ts.map +1 -0
  66. package/dist/src/cli/commands/tasks.js +229 -0
  67. package/dist/src/cli/commands/tasks.js.map +1 -0
  68. package/dist/src/cli/commands/webhook.d.ts +3 -0
  69. package/dist/src/cli/commands/webhook.d.ts.map +1 -0
  70. package/dist/src/cli/commands/webhook.js +157 -0
  71. package/dist/src/cli/commands/webhook.js.map +1 -0
  72. package/dist/src/cli/commands/worktree.d.ts +8 -0
  73. package/dist/src/cli/commands/worktree.d.ts.map +1 -0
  74. package/dist/src/cli/commands/worktree.js +339 -0
  75. package/dist/src/cli/commands/worktree.js.map +1 -0
  76. package/dist/src/cli/index.d.ts +2 -1
  77. package/dist/src/cli/index.d.ts.map +1 -1
  78. package/dist/src/cli/index.js +290 -50
  79. package/dist/src/cli/index.js.map +1 -1
  80. package/dist/src/cli/utils/viewer.d.ts.map +1 -1
  81. package/dist/src/cli/utils/viewer.js +3 -1
  82. package/dist/src/cli/utils/viewer.js.map +1 -1
  83. package/dist/src/core/context/__tests__/frame-manager.test.d.ts +5 -0
  84. package/dist/src/core/context/__tests__/frame-manager.test.d.ts.map +1 -0
  85. package/dist/src/core/context/__tests__/frame-manager.test.js +892 -0
  86. package/dist/src/core/context/__tests__/frame-manager.test.js.map +1 -0
  87. package/dist/src/core/context/auto-context.d.ts +22 -0
  88. package/dist/src/core/context/auto-context.d.ts.map +1 -0
  89. package/dist/src/core/context/auto-context.js +77 -0
  90. package/dist/src/core/context/auto-context.js.map +1 -0
  91. package/dist/src/core/context/frame-manager.d.ts +4 -0
  92. package/dist/src/core/context/frame-manager.d.ts.map +1 -1
  93. package/dist/src/core/context/frame-manager.js +350 -144
  94. package/dist/src/core/context/frame-manager.js.map +1 -1
  95. package/dist/src/core/errors/__tests__/error-handling.test.d.ts +5 -0
  96. package/dist/src/core/errors/__tests__/error-handling.test.d.ts.map +1 -0
  97. package/dist/src/core/errors/__tests__/error-handling.test.js +239 -0
  98. package/dist/src/core/errors/__tests__/error-handling.test.js.map +1 -0
  99. package/dist/src/core/errors/index.d.ts +135 -0
  100. package/dist/src/core/errors/index.d.ts.map +1 -0
  101. package/dist/src/core/errors/index.js +274 -0
  102. package/dist/src/core/errors/index.js.map +1 -0
  103. package/dist/src/core/errors/recovery.d.ts +86 -0
  104. package/dist/src/core/errors/recovery.d.ts.map +1 -0
  105. package/dist/src/core/errors/recovery.js +274 -0
  106. package/dist/src/core/errors/recovery.js.map +1 -0
  107. package/dist/src/core/projects/project-manager.d.ts.map +1 -1
  108. package/dist/src/core/projects/project-manager.js +240 -122
  109. package/dist/src/core/projects/project-manager.js.map +1 -1
  110. package/dist/src/core/session/index.d.ts +2 -0
  111. package/dist/src/core/session/index.d.ts.map +1 -0
  112. package/dist/src/core/session/index.js +2 -0
  113. package/dist/src/core/session/index.js.map +1 -0
  114. package/dist/src/core/session/session-manager.d.ts +69 -0
  115. package/dist/src/core/session/session-manager.d.ts.map +1 -0
  116. package/dist/src/core/session/session-manager.js +311 -0
  117. package/dist/src/core/session/session-manager.js.map +1 -0
  118. package/dist/src/core/utils/update-checker.d.ts.map +1 -1
  119. package/dist/src/core/utils/update-checker.js +82 -25
  120. package/dist/src/core/utils/update-checker.js.map +1 -1
  121. package/dist/src/core/worktree/worktree-manager.d.ts +110 -0
  122. package/dist/src/core/worktree/worktree-manager.d.ts.map +1 -0
  123. package/dist/src/core/worktree/worktree-manager.js +456 -0
  124. package/dist/src/core/worktree/worktree-manager.js.map +1 -0
  125. package/dist/src/features/analytics/core/analytics-service.d.ts +6 -0
  126. package/dist/src/features/analytics/core/analytics-service.d.ts.map +1 -1
  127. package/dist/src/features/analytics/core/analytics-service.js +125 -10
  128. package/dist/src/features/analytics/core/analytics-service.js.map +1 -1
  129. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +1 -1
  130. package/dist/src/features/analytics/queries/metrics-queries.js +220 -163
  131. package/dist/src/features/analytics/queries/metrics-queries.js.map +1 -1
  132. package/dist/src/features/browser/browser-mcp.d.ts.map +1 -1
  133. package/dist/src/features/browser/browser-mcp.js +3 -0
  134. package/dist/src/features/browser/browser-mcp.js.map +1 -1
  135. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts +5 -0
  136. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts.map +1 -0
  137. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js +712 -0
  138. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js.map +1 -0
  139. package/dist/src/features/tasks/pebbles-task-store.d.ts +4 -0
  140. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +1 -1
  141. package/dist/src/features/tasks/pebbles-task-store.js +299 -141
  142. package/dist/src/features/tasks/pebbles-task-store.js.map +1 -1
  143. package/dist/src/integrations/linear/__tests__/auth.test.d.ts +5 -0
  144. package/dist/src/integrations/linear/__tests__/auth.test.d.ts.map +1 -0
  145. package/dist/src/integrations/linear/__tests__/auth.test.js +517 -0
  146. package/dist/src/integrations/linear/__tests__/auth.test.js.map +1 -0
  147. package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts +5 -0
  148. package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts.map +1 -0
  149. package/dist/src/integrations/linear/__tests__/sync-service.test.js +700 -0
  150. package/dist/src/integrations/linear/__tests__/sync-service.test.js.map +1 -0
  151. package/dist/src/integrations/linear/client.d.ts +28 -1
  152. package/dist/src/integrations/linear/client.d.ts.map +1 -1
  153. package/dist/src/integrations/linear/client.js +87 -0
  154. package/dist/src/integrations/linear/client.js.map +1 -1
  155. package/dist/src/integrations/linear/sync-service.d.ts +25 -0
  156. package/dist/src/integrations/linear/sync-service.d.ts.map +1 -0
  157. package/dist/src/integrations/linear/sync-service.js +198 -0
  158. package/dist/src/integrations/linear/sync-service.js.map +1 -0
  159. package/dist/src/integrations/linear/sync.d.ts +23 -1
  160. package/dist/src/integrations/linear/sync.d.ts.map +1 -1
  161. package/dist/src/integrations/linear/sync.js +156 -9
  162. package/dist/src/integrations/linear/sync.js.map +1 -1
  163. package/dist/src/integrations/linear/types.d.ts +75 -0
  164. package/dist/src/integrations/linear/types.d.ts.map +1 -0
  165. package/dist/src/integrations/linear/types.js +2 -0
  166. package/dist/src/integrations/linear/types.js.map +1 -0
  167. package/dist/src/integrations/linear/webhook-server.d.ts +32 -0
  168. package/dist/src/integrations/linear/webhook-server.d.ts.map +1 -0
  169. package/dist/src/integrations/linear/webhook-server.js +188 -0
  170. package/dist/src/integrations/linear/webhook-server.js.map +1 -0
  171. package/dist/src/integrations/linear/webhook.d.ts +95 -0
  172. package/dist/src/integrations/linear/webhook.d.ts.map +1 -0
  173. package/dist/src/integrations/linear/webhook.js +204 -0
  174. package/dist/src/integrations/linear/webhook.js.map +1 -0
  175. package/dist/src/integrations/mcp/__tests__/server.test.d.ts +5 -0
  176. package/dist/src/integrations/mcp/__tests__/server.test.d.ts.map +1 -0
  177. package/dist/src/integrations/mcp/__tests__/server.test.js +790 -0
  178. package/dist/src/integrations/mcp/__tests__/server.test.js.map +1 -0
  179. package/dist/src/integrations/mcp/server.d.ts +6 -0
  180. package/dist/src/integrations/mcp/server.d.ts.map +1 -1
  181. package/dist/src/integrations/mcp/server.js +490 -54
  182. package/dist/src/integrations/mcp/server.js.map +1 -1
  183. package/dist/src/servers/production/auth-middleware.d.ts +2 -2
  184. package/dist/src/servers/production/auth-middleware.d.ts.map +1 -1
  185. package/dist/src/servers/production/auth-middleware.js +1 -1
  186. package/dist/src/servers/production/auth-middleware.js.map +1 -1
  187. package/dist/src/services/config-service.d.ts +44 -0
  188. package/dist/src/services/config-service.d.ts.map +1 -0
  189. package/dist/src/services/config-service.js +61 -0
  190. package/dist/src/services/config-service.js.map +1 -0
  191. package/dist/src/services/context-service.d.ts +17 -0
  192. package/dist/src/services/context-service.d.ts.map +1 -0
  193. package/dist/src/services/context-service.js +88 -0
  194. package/dist/src/services/context-service.js.map +1 -0
  195. package/dist/src/types/task.d.ts +17 -0
  196. package/dist/src/types/task.d.ts.map +1 -0
  197. package/dist/src/types/task.js +2 -0
  198. package/dist/src/types/task.js.map +1 -0
  199. package/dist/src/utils/logger.d.ts +13 -0
  200. package/dist/src/utils/logger.d.ts.map +1 -0
  201. package/dist/src/utils/logger.js +52 -0
  202. package/dist/src/utils/logger.js.map +1 -0
  203. package/package.json +16 -3
@@ -8,6 +8,8 @@ import { join, basename, dirname } from 'path';
8
8
  import { homedir } from 'os';
9
9
  import Database from 'better-sqlite3';
10
10
  import { logger } from '../monitoring/logger.js';
11
+ import { DatabaseError, ProjectError, ErrorCode, createErrorHandler, } from '../errors/index.js';
12
+ import { retry } from '../errors/recovery.js';
11
13
  export class ProjectManager {
12
14
  static instance;
13
15
  db;
@@ -33,31 +35,56 @@ export class ProjectManager {
33
35
  */
34
36
  async detectProject(projectPath) {
35
37
  const path = projectPath || process.cwd();
36
- // Check cache first
37
- const cached = this.projectCache.get(path);
38
- if (cached && this.isCacheValid(cached)) {
39
- return cached;
40
- }
41
- const project = await this.analyzeProject(path);
42
- // Auto-categorize based on git origin
43
- if (project.gitRemote) {
44
- project.organization = this.extractOrganization(project.gitRemote);
45
- project.accountType = this.determineAccountType(project.gitRemote, project.organization);
46
- project.isPrivate = this.isPrivateRepo(project.gitRemote);
47
- }
48
- // Detect framework and language
49
- project.primaryLanguage = this.detectPrimaryLanguage(path);
50
- project.framework = this.detectFramework(path);
51
- // Store in database
52
- this.saveProject(project);
53
- this.projectCache.set(path, project);
54
- this.currentProject = project;
55
- logger.info('Project auto-detected', {
56
- id: project.id,
57
- org: project.organization,
58
- type: project.accountType,
38
+ const errorHandler = createErrorHandler({
39
+ operation: 'detectProject',
40
+ projectPath: path,
59
41
  });
60
- return project;
42
+ try {
43
+ // Check cache first
44
+ const cached = this.projectCache.get(path);
45
+ if (cached && this.isCacheValid(cached)) {
46
+ return cached;
47
+ }
48
+ const project = await this.analyzeProject(path);
49
+ // Auto-categorize based on git origin
50
+ if (project.gitRemote) {
51
+ project.organization = this.extractOrganization(project.gitRemote);
52
+ project.accountType = this.determineAccountType(project.gitRemote, project.organization);
53
+ project.isPrivate = this.isPrivateRepo(project.gitRemote);
54
+ }
55
+ // Detect framework and language
56
+ project.primaryLanguage = this.detectPrimaryLanguage(path);
57
+ project.framework = this.detectFramework(path);
58
+ // Store in database with retry logic
59
+ await retry(() => Promise.resolve(this.saveProject(project)), {
60
+ maxAttempts: 3,
61
+ initialDelay: 100,
62
+ onRetry: (attempt, error) => {
63
+ logger.warn(`Retrying project save (attempt ${attempt})`, {
64
+ projectId: project.id,
65
+ error: error instanceof Error ? error.message : String(error),
66
+ });
67
+ },
68
+ });
69
+ this.projectCache.set(path, project);
70
+ this.currentProject = project;
71
+ logger.info('Project auto-detected', {
72
+ id: project.id,
73
+ org: project.organization,
74
+ type: project.accountType,
75
+ });
76
+ return project;
77
+ }
78
+ catch (error) {
79
+ const wrappedError = errorHandler(error, {
80
+ projectPath: path,
81
+ operation: 'detectProject',
82
+ });
83
+ throw new ProjectError(`Failed to detect project at path: ${path}`, ErrorCode.PROJECT_INVALID_PATH, {
84
+ projectPath: path,
85
+ operation: 'detectProject',
86
+ });
87
+ }
61
88
  }
62
89
  /**
63
90
  * Analyze project directory
@@ -86,26 +113,34 @@ export class ProjectManager {
86
113
  */
87
114
  getGitInfo(projectPath) {
88
115
  const info = {};
116
+ const errorHandler = createErrorHandler({
117
+ operation: 'getGitInfo',
118
+ projectPath,
119
+ });
89
120
  try {
90
121
  // Get remote origin
91
122
  info.remote = execSync('git config --get remote.origin.url', {
92
123
  cwd: projectPath,
93
124
  encoding: 'utf-8',
125
+ timeout: 5000, // 5 second timeout
94
126
  }).trim();
95
127
  // Get current branch
96
128
  info.branch = execSync('git branch --show-current', {
97
129
  cwd: projectPath,
98
130
  encoding: 'utf-8',
131
+ timeout: 5000,
99
132
  }).trim();
100
133
  // Get last commit
101
134
  info.lastCommit = execSync('git log -1 --format=%H', {
102
135
  cwd: projectPath,
103
136
  encoding: 'utf-8',
137
+ timeout: 5000,
104
138
  }).trim();
105
139
  // Check if working tree is dirty
106
140
  const status = execSync('git status --porcelain', {
107
141
  cwd: projectPath,
108
142
  encoding: 'utf-8',
143
+ timeout: 5000,
109
144
  });
110
145
  info.isDirty = status.length > 0;
111
146
  // Extract project name from remote
@@ -114,6 +149,10 @@ export class ProjectManager {
114
149
  }
115
150
  catch (error) {
116
151
  // Not a git repository or git not available
152
+ logger.debug('Git info extraction failed, using directory name', {
153
+ projectPath,
154
+ error: error instanceof Error ? error.message : String(error),
155
+ });
117
156
  info.name = basename(projectPath);
118
157
  }
119
158
  return info;
@@ -308,58 +347,85 @@ export class ProjectManager {
308
347
  */
309
348
  initializeDatabase() {
310
349
  const dbPath = join(this.configPath, 'projects.db');
311
- this.db = new Database(dbPath);
312
- this.db.exec(`
313
- CREATE TABLE IF NOT EXISTS projects (
314
- id TEXT PRIMARY KEY,
315
- name TEXT NOT NULL,
316
- path TEXT NOT NULL UNIQUE,
317
- git_remote TEXT,
318
- organization TEXT,
319
- account_type TEXT,
320
- is_private BOOLEAN,
321
- primary_language TEXT,
322
- framework TEXT,
323
- last_accessed DATETIME,
324
- metadata JSON,
325
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
326
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
327
- );
350
+ const errorHandler = createErrorHandler({
351
+ operation: 'initializeDatabase',
352
+ dbPath,
353
+ });
354
+ try {
355
+ this.db = new Database(dbPath);
356
+ this.db.exec(`
357
+ CREATE TABLE IF NOT EXISTS projects (
358
+ id TEXT PRIMARY KEY,
359
+ name TEXT NOT NULL,
360
+ path TEXT NOT NULL UNIQUE,
361
+ git_remote TEXT,
362
+ organization TEXT,
363
+ account_type TEXT,
364
+ is_private BOOLEAN,
365
+ primary_language TEXT,
366
+ framework TEXT,
367
+ last_accessed DATETIME,
368
+ metadata JSON,
369
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
370
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
371
+ );
328
372
 
329
- CREATE TABLE IF NOT EXISTS organizations (
330
- name TEXT PRIMARY KEY,
331
- type TEXT,
332
- account_type TEXT,
333
- config JSON,
334
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP
335
- );
373
+ CREATE TABLE IF NOT EXISTS organizations (
374
+ name TEXT PRIMARY KEY,
375
+ type TEXT,
376
+ account_type TEXT,
377
+ config JSON,
378
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
379
+ );
336
380
 
337
- CREATE TABLE IF NOT EXISTS project_contexts (
338
- id INTEGER PRIMARY KEY AUTOINCREMENT,
339
- project_id TEXT NOT NULL,
340
- context_type TEXT,
341
- content TEXT,
342
- metadata JSON,
343
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
344
- FOREIGN KEY (project_id) REFERENCES projects(id)
345
- );
381
+ CREATE TABLE IF NOT EXISTS project_contexts (
382
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
383
+ project_id TEXT NOT NULL,
384
+ context_type TEXT,
385
+ content TEXT,
386
+ metadata JSON,
387
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
388
+ FOREIGN KEY (project_id) REFERENCES projects(id)
389
+ );
346
390
 
347
- CREATE INDEX IF NOT EXISTS idx_projects_org ON projects(organization);
348
- CREATE INDEX IF NOT EXISTS idx_projects_type ON projects(account_type);
349
- CREATE INDEX IF NOT EXISTS idx_contexts_project ON project_contexts(project_id);
350
- `);
391
+ CREATE INDEX IF NOT EXISTS idx_projects_org ON projects(organization);
392
+ CREATE INDEX IF NOT EXISTS idx_projects_type ON projects(account_type);
393
+ CREATE INDEX IF NOT EXISTS idx_contexts_project ON project_contexts(project_id);
394
+ `);
395
+ }
396
+ catch (error) {
397
+ const dbError = errorHandler(error, {
398
+ dbPath,
399
+ operation: 'initializeDatabase',
400
+ });
401
+ throw new DatabaseError('Failed to initialize projects database', ErrorCode.DB_MIGRATION_FAILED, {
402
+ dbPath,
403
+ configPath: this.configPath,
404
+ operation: 'initializeDatabase',
405
+ }, error instanceof Error ? error : undefined);
406
+ }
351
407
  }
352
408
  /**
353
409
  * Save project to database
354
410
  */
355
411
  saveProject(project) {
356
- const stmt = this.db.prepare(`
357
- INSERT OR REPLACE INTO projects
358
- (id, name, path, git_remote, organization, account_type, is_private,
359
- primary_language, framework, last_accessed, metadata, updated_at)
360
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
361
- `);
362
- stmt.run(project.id, project.name, project.path, project.gitRemote, project.organization, project.accountType, project.isPrivate ? 1 : 0, project.primaryLanguage, project.framework, project.lastAccessed.toISOString(), JSON.stringify(project.metadata));
412
+ try {
413
+ const stmt = this.db.prepare(`
414
+ INSERT OR REPLACE INTO projects
415
+ (id, name, path, git_remote, organization, account_type, is_private,
416
+ primary_language, framework, last_accessed, metadata, updated_at)
417
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
418
+ `);
419
+ stmt.run(project.id, project.name, project.path, project.gitRemote, project.organization, project.accountType, project.isPrivate ? 1 : 0, project.primaryLanguage, project.framework, project.lastAccessed.toISOString(), JSON.stringify(project.metadata));
420
+ }
421
+ catch (error) {
422
+ throw new DatabaseError(`Failed to save project: ${project.name}`, ErrorCode.DB_QUERY_FAILED, {
423
+ projectId: project.id,
424
+ projectName: project.name,
425
+ projectPath: project.path,
426
+ operation: 'saveProject',
427
+ }, error instanceof Error ? error : undefined);
428
+ }
363
429
  }
364
430
  /**
365
431
  * Load organizations configuration
@@ -374,7 +440,7 @@ export class ProjectManager {
374
440
  }
375
441
  }
376
442
  catch (error) {
377
- logger.error('Failed to load organizations config', error);
443
+ logger.error('Failed to load organizations config', error instanceof Error ? error : undefined);
378
444
  }
379
445
  }
380
446
  }
@@ -382,6 +448,9 @@ export class ProjectManager {
382
448
  * Auto-discover organizations from existing projects
383
449
  */
384
450
  autoDiscoverOrganizations() {
451
+ const errorHandler = createErrorHandler({
452
+ operation: 'autoDiscoverOrganizations',
453
+ });
385
454
  try {
386
455
  const stmt = this.db.prepare(`
387
456
  SELECT DISTINCT organization, account_type, COUNT(*) as project_count
@@ -405,7 +474,12 @@ export class ProjectManager {
405
474
  }
406
475
  }
407
476
  catch (error) {
408
- logger.error('Failed to auto-discover organizations', error);
477
+ const wrappedError = errorHandler(error, {
478
+ operation: 'autoDiscoverOrganizations',
479
+ });
480
+ logger.error('Failed to auto-discover organizations', error instanceof Error ? error : new Error(String(error)), {
481
+ operation: 'autoDiscoverOrganizations',
482
+ });
409
483
  }
410
484
  }
411
485
  /**
@@ -439,51 +513,74 @@ export class ProjectManager {
439
513
  * Get all projects
440
514
  */
441
515
  getAllProjects() {
442
- const stmt = this.db.prepare(`
443
- SELECT * FROM projects
444
- ORDER BY last_accessed DESC
445
- `);
446
- const projects = stmt.all();
447
- return projects.map((p) => ({
448
- ...p,
449
- isPrivate: p.is_private === 1,
450
- lastAccessed: new Date(p.last_accessed),
451
- metadata: JSON.parse(p.metadata || '{}'),
452
- }));
516
+ try {
517
+ const stmt = this.db.prepare(`
518
+ SELECT * FROM projects
519
+ ORDER BY last_accessed DESC
520
+ `);
521
+ const projects = stmt.all();
522
+ return projects.map((p) => ({
523
+ ...p,
524
+ isPrivate: p.is_private === 1,
525
+ lastAccessed: new Date(p.last_accessed),
526
+ metadata: JSON.parse(p.metadata || '{}'),
527
+ }));
528
+ }
529
+ catch (error) {
530
+ throw new DatabaseError('Failed to get all projects', ErrorCode.DB_QUERY_FAILED, {
531
+ operation: 'getAllProjects',
532
+ }, error instanceof Error ? error : undefined);
533
+ }
453
534
  }
454
535
  /**
455
536
  * Get projects by organization
456
537
  */
457
538
  getProjectsByOrganization(organization) {
458
- const stmt = this.db.prepare(`
459
- SELECT * FROM projects
460
- WHERE organization = ?
461
- ORDER BY last_accessed DESC
462
- `);
463
- const projects = stmt.all(organization);
464
- return projects.map((p) => ({
465
- ...p,
466
- isPrivate: p.is_private === 1,
467
- lastAccessed: new Date(p.last_accessed),
468
- metadata: JSON.parse(p.metadata || '{}'),
469
- }));
539
+ try {
540
+ const stmt = this.db.prepare(`
541
+ SELECT * FROM projects
542
+ WHERE organization = ?
543
+ ORDER BY last_accessed DESC
544
+ `);
545
+ const projects = stmt.all(organization);
546
+ return projects.map((p) => ({
547
+ ...p,
548
+ isPrivate: p.is_private === 1,
549
+ lastAccessed: new Date(p.last_accessed),
550
+ metadata: JSON.parse(p.metadata || '{}'),
551
+ }));
552
+ }
553
+ catch (error) {
554
+ throw new DatabaseError(`Failed to get projects by organization: ${organization}`, ErrorCode.DB_QUERY_FAILED, {
555
+ organization,
556
+ operation: 'getProjectsByOrganization',
557
+ }, error instanceof Error ? error : undefined);
558
+ }
470
559
  }
471
560
  /**
472
561
  * Get projects by account type
473
562
  */
474
563
  getProjectsByAccountType(accountType) {
475
- const stmt = this.db.prepare(`
476
- SELECT * FROM projects
477
- WHERE account_type = ?
478
- ORDER BY last_accessed DESC
479
- `);
480
- const projects = stmt.all(accountType);
481
- return projects.map((p) => ({
482
- ...p,
483
- isPrivate: p.is_private === 1,
484
- lastAccessed: new Date(p.last_accessed),
485
- metadata: JSON.parse(p.metadata || '{}'),
486
- }));
564
+ try {
565
+ const stmt = this.db.prepare(`
566
+ SELECT * FROM projects
567
+ WHERE account_type = ?
568
+ ORDER BY last_accessed DESC
569
+ `);
570
+ const projects = stmt.all(accountType);
571
+ return projects.map((p) => ({
572
+ ...p,
573
+ isPrivate: p.is_private === 1,
574
+ lastAccessed: new Date(p.last_accessed),
575
+ metadata: JSON.parse(p.metadata || '{}'),
576
+ }));
577
+ }
578
+ catch (error) {
579
+ throw new DatabaseError(`Failed to get projects by account type: ${accountType}`, ErrorCode.DB_QUERY_FAILED, {
580
+ accountType,
581
+ operation: 'getProjectsByAccountType',
582
+ }, error instanceof Error ? error : undefined);
583
+ }
487
584
  }
488
585
  /**
489
586
  * Get current project
@@ -498,19 +595,35 @@ export class ProjectManager {
498
595
  * Save organization config
499
596
  */
500
597
  saveOrganization(org) {
501
- this.organizations.set(org.name, org);
502
- // Save to file
503
- const configFile = join(this.configPath, 'organizations.json');
504
- const config = {
505
- organizations: Array.from(this.organizations.values()),
506
- };
507
- writeFileSync(configFile, JSON.stringify(config, null, 2));
508
- // Save to database
509
- const stmt = this.db.prepare(`
510
- INSERT OR REPLACE INTO organizations (name, type, account_type, config)
511
- VALUES (?, ?, ?, ?)
512
- `);
513
- stmt.run(org.name, org.type, org.accountType, JSON.stringify(org));
598
+ const errorHandler = createErrorHandler({
599
+ operation: 'saveOrganization',
600
+ orgName: org.name,
601
+ });
602
+ try {
603
+ this.organizations.set(org.name, org);
604
+ // Save to file
605
+ const configFile = join(this.configPath, 'organizations.json');
606
+ const config = {
607
+ organizations: Array.from(this.organizations.values()),
608
+ };
609
+ writeFileSync(configFile, JSON.stringify(config, null, 2));
610
+ // Save to database
611
+ const stmt = this.db.prepare(`
612
+ INSERT OR REPLACE INTO organizations (name, type, account_type, config)
613
+ VALUES (?, ?, ?, ?)
614
+ `);
615
+ stmt.run(org.name, org.type, org.accountType, JSON.stringify(org));
616
+ }
617
+ catch (error) {
618
+ const wrappedError = errorHandler(error, {
619
+ orgName: org.name,
620
+ operation: 'saveOrganization',
621
+ });
622
+ throw new DatabaseError(`Failed to save organization: ${org.name}`, ErrorCode.DB_QUERY_FAILED, {
623
+ orgName: org.name,
624
+ operation: 'saveOrganization',
625
+ }, error instanceof Error ? error : undefined);
626
+ }
514
627
  }
515
628
  /**
516
629
  * Auto-categorize all Git repositories in home directory
@@ -531,8 +644,9 @@ export class ProjectManager {
531
644
  if (!existsSync(basePath))
532
645
  continue;
533
646
  try {
534
- // Find all .git directories
535
- const gitDirs = execSync(`find ${basePath} -type d -name .git -maxdepth 4 2>/dev/null`, { encoding: 'utf-8' })
647
+ // Find all .git directories with timeout
648
+ const gitDirs = execSync(`find ${basePath} -type d -name .git -maxdepth 4 2>/dev/null`, { encoding: 'utf-8', timeout: 30000 } // 30 second timeout
649
+ )
536
650
  .trim()
537
651
  .split('\n')
538
652
  .filter(Boolean);
@@ -543,12 +657,16 @@ export class ProjectManager {
543
657
  logger.info(`Discovered project: ${projectPath}`);
544
658
  }
545
659
  catch (error) {
546
- logger.warn(`Failed to analyze project: ${projectPath}`, error);
660
+ logger.warn(`Failed to analyze project: ${projectPath}`, {
661
+ projectPath,
662
+ error: error instanceof Error ? error.message : String(error),
663
+ operation: 'scanAndCategorizeAllProjects',
664
+ });
547
665
  }
548
666
  }
549
667
  }
550
668
  catch (error) {
551
- logger.warn(`Failed to scan ${basePath}`, error);
669
+ logger.warn(`Failed to scan ${basePath}`, error instanceof Error ? { error } : undefined);
552
670
  }
553
671
  }
554
672
  logger.info(`Scan complete. Found ${this.projectCache.size} projects`);
@@ -1 +1 @@
1
- {"version":3,"file":"project-manager.js","sourceRoot":"","sources":["../../../../src/core/projects/project-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AA2BjD,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,QAAQ,CAAiB;IAChC,EAAE,CAAoB;IACtB,UAAU,CAAS;IACnB,aAAa,GAAoC,IAAI,GAAG,EAAE,CAAC;IAC3D,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAC;IACnD,cAAc,CAAe;IAErC;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC7B,cAAc,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,WAAoB;QACtC,MAAM,IAAI,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1C,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEhD,sCAAsC;QACtC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAC7C,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,YAAY,CACrB,CAAC;YACF,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;QAED,gCAAgC;QAChC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE/C,oBAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACnC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,YAAY;YACzB,IAAI,EAAE,OAAO,CAAC,WAAW;SAC1B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,WAAmB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE1D,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;YACzD,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,QAAQ,EAAE;gBACR,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,WAAmB;QACpC,MAAM,IAAI,GAAQ,EAAE,CAAC;QAErB,IAAI,CAAC;YACH,oBAAoB;YACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,oCAAoC,EAAE;gBAC3D,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;YAEV,qBAAqB;YACrB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,2BAA2B,EAAE;gBAClD,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;YAEV,kBAAkB;YAClB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,wBAAwB,EAAE;gBACnD,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;YAEV,iCAAiC;YACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE;gBAChD,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAEjC,mCAAmC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4CAA4C;YAC5C,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,SAAiB;QAC3C,qEAAqE;QACrE,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChE,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QAEvC,sCAAsC;QACtC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChE,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QAEvC,4CAA4C;QAC5C,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACtE,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;QAE7C,mDAAmD;QACnD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7D,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QAEvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,SAAiB,EACjB,YAAqB;QAErB,oCAAoC;QACpC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;gBAChD,OAAO,GAAG,CAAC,WAAW,CAAC;YACzB,CAAC;YAED,2CAA2C;YAC3C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,OAAO,GAAG,CAAC,WAAW,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,YAAY,EAAE,CAAC;YACjB,uBAAuB;YACvB,IACE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC7B,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC7B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,6BAA6B;YAC7B,IACE,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC/B,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACnC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACxC,CAAC;gBACD,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,mCAAmC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1C,IAAI,QAAQ,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtE,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,4BAA4B;YAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,IACE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC9B,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC9B,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACjC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC7B,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAiB;QACrC,iCAAiC;QACjC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sEAAsE;QACtE,6BAA6B;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,WAAmB;QAC/C,MAAM,MAAM,GAAG;YACb,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,uBAAuB,EAAE;YAC3D,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE;YACxC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;YACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAChD,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;YACrC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC1C,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE;SACnD,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,eAAe;gBACf,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,QAAQ,CACpB,QAAQ,WAAW,uBAAuB,KAAK,CAAC,IAAI,eAAe,EACnE;wBACE,QAAQ,EAAE,OAAO;qBAClB,CACF,CAAC;oBACF,IAAI,KAAK,CAAC,IAAI,EAAE;wBAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;iBAAM,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAC,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,WAAmB;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;gBAE7D,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,MAAM,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACnC,IAAI,IAAI,CAAC,OAAO,CAAC;oBAAE,OAAO,OAAO,CAAC;gBAClC,IAAI,IAAI,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC9B,IAAI,IAAI,CAAC,eAAe,CAAC;oBAAE,OAAO,SAAS,CAAC;gBAC5C,IAAI,IAAI,CAAC,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACtC,IAAI,IAAI,CAAC,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACtC,IAAI,IAAI,CAAC,cAAc,CAAC;oBAAE,OAAO,QAAQ,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,uCAAuC;QACvC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,OAAO,CAAC;YAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,QAAQ,CAAC;QAChD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,gCAAgC,EAAE;gBACvD,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;YAEV,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,UAAkB;QAC1C,iDAAiD;QACjD,MAAM,OAAO,GAAG,UAAU;aACvB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;aAC9B,WAAW,EAAE,CAAC;QAEjB,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,gBAAgB;IACjE,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAAoB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,EAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAE/D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC7D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;oBAC7C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,yBAAyB;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAK5B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAW,CAAC;YAEjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9C,kCAAkC;oBAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE;wBACvC,IAAI,EAAE,GAAG,CAAC,YAAY;wBACtB,IAAI,EAAE,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;wBAC1D,OAAO,EAAE,EAAE;wBACX,UAAU,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;wBAC9B,WAAW,EAAE,GAAG,CAAC,YAAY;wBAC7B,YAAY,EAAE,EAAE;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,MAAM,IAAI,GAAG;YACX,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;SAClC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAoB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7D,OAAO,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;IAC/C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAW,CAAC;QACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,CAAC;YACJ,SAAS,EAAE,CAAC,CAAC,UAAU,KAAK,CAAC;YAC7B,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;SACzC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,YAAoB;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAU,CAAC;QACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,CAAC;YACJ,SAAS,EAAE,CAAC,CAAC,UAAU,KAAK,CAAC;YAC7B,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;SACzC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,WAAmB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAU,CAAC;QAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,CAAC;YACJ,SAAS,EAAE,CAAC,CAAC,UAAU,KAAK,CAAC;YAC7B,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;SACzC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,GAAuB;QACtC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtC,eAAe;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG;YACb,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;SACvD,CAAC;QAEF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3D,mBAAmB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B,CAAC,SAAoB;QACrD,MAAM,KAAK,GAAG,SAAS,IAAI;YACzB,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;SACxB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAEhD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEpC,IAAI,CAAC;gBACH,4BAA4B;gBAC5B,MAAM,OAAO,GAAG,QAAQ,CACtB,QAAQ,QAAQ,6CAA6C,EAC7D,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB;qBACE,IAAI,EAAE;qBACN,KAAK,CAAC,IAAI,CAAC;qBACX,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBAEpC,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;wBACtC,MAAM,CAAC,IAAI,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;oBACpD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,CAAC,8BAA8B,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,aAAa,EAAE,EAA4B;YAC3C,cAAc,EAAE,EAA4B;YAC5C,UAAU,EAAE,EAA4B;YACxC,WAAW,EAAE,EAA4B;SAC1C,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,wBAAwB;YACxB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;gBACvC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAEvD,wBAAwB;YACxB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;oBACzC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,CAAC;YAED,oBAAoB;YACpB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;oBACxC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1D,CAAC;YAED,qBAAqB;YACrB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;oBACnC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"project-manager.js","sourceRoot":"","sources":["../../../../src/core/projects/project-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { SessionManager, sessionManager, type Session, type SessionOptions, FrameQueryMode } from './session-manager.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,cAAc,EACf,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SessionManager, sessionManager, FrameQueryMode } from './session-manager.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EAGd,cAAc,EACf,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Session Management for StackMemory
3
+ * Provides session persistence and recovery across CLI invocations
4
+ */
5
+ export interface Session {
6
+ sessionId: string;
7
+ runId: string;
8
+ projectId: string;
9
+ branch?: string;
10
+ startedAt: number;
11
+ lastActiveAt: number;
12
+ metadata: {
13
+ user?: string;
14
+ environment?: string;
15
+ tags?: string[];
16
+ cliVersion?: string;
17
+ };
18
+ state: 'active' | 'suspended' | 'closed';
19
+ }
20
+ export interface SessionOptions {
21
+ sessionId?: string;
22
+ projectPath?: string;
23
+ branch?: string;
24
+ metadata?: Session['metadata'];
25
+ }
26
+ export declare enum FrameQueryMode {
27
+ CURRENT_SESSION = "current",
28
+ PROJECT_ACTIVE = "project",
29
+ ALL_ACTIVE = "all",
30
+ HISTORICAL = "historical"
31
+ }
32
+ export declare class SessionManager {
33
+ private static instance;
34
+ private sessionsDir;
35
+ private currentSession;
36
+ private readonly STALE_THRESHOLD;
37
+ private constructor();
38
+ static getInstance(): SessionManager;
39
+ initialize(): Promise<void>;
40
+ getOrCreateSession(options?: SessionOptions): Promise<Session>;
41
+ createSession(params: {
42
+ projectId: string;
43
+ branch?: string;
44
+ metadata?: Session['metadata'];
45
+ }): Promise<Session>;
46
+ loadSession(sessionId: string): Promise<Session | null>;
47
+ saveSession(session: Session): Promise<void>;
48
+ suspendSession(sessionId?: string): Promise<void>;
49
+ resumeSession(sessionId: string): Promise<Session>;
50
+ closeSession(sessionId?: string): Promise<void>;
51
+ listSessions(filter?: {
52
+ projectId?: string;
53
+ state?: Session['state'];
54
+ branch?: string;
55
+ }): Promise<Session[]>;
56
+ mergeSessions(sourceId: string, targetId: string): Promise<Session>;
57
+ cleanupStaleSessions(maxAge?: number): Promise<number>;
58
+ getCurrentSession(): Session | null;
59
+ getSessionRunId(): string;
60
+ private getProjectHash;
61
+ private getGitBranch;
62
+ private findProjectBranchSession;
63
+ private findLastActiveSession;
64
+ private setProjectActiveSession;
65
+ private isSessionRecent;
66
+ private touchSession;
67
+ }
68
+ export declare const sessionManager: SessionManager;
69
+ //# sourceMappingURL=session-manager.d.ts.map