cursor-history 0.6.0 → 0.9.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.
Files changed (101) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +371 -9
  3. package/dist/cli/commands/backup.d.ts +9 -0
  4. package/dist/cli/commands/backup.d.ts.map +1 -0
  5. package/dist/cli/commands/backup.js +168 -0
  6. package/dist/cli/commands/backup.js.map +1 -0
  7. package/dist/cli/commands/export.d.ts.map +1 -1
  8. package/dist/cli/commands/export.js +38 -6
  9. package/dist/cli/commands/export.js.map +1 -1
  10. package/dist/cli/commands/list-backups.d.ts +9 -0
  11. package/dist/cli/commands/list-backups.d.ts.map +1 -0
  12. package/dist/cli/commands/list-backups.js +166 -0
  13. package/dist/cli/commands/list-backups.js.map +1 -0
  14. package/dist/cli/commands/list.d.ts.map +1 -1
  15. package/dist/cli/commands/list.js +44 -9
  16. package/dist/cli/commands/list.js.map +1 -1
  17. package/dist/cli/commands/migrate-session.d.ts +12 -0
  18. package/dist/cli/commands/migrate-session.d.ts.map +1 -0
  19. package/dist/cli/commands/migrate-session.js +125 -0
  20. package/dist/cli/commands/migrate-session.js.map +1 -0
  21. package/dist/cli/commands/migrate.d.ts +13 -0
  22. package/dist/cli/commands/migrate.d.ts.map +1 -0
  23. package/dist/cli/commands/migrate.js +122 -0
  24. package/dist/cli/commands/migrate.js.map +1 -0
  25. package/dist/cli/commands/restore.d.ts +9 -0
  26. package/dist/cli/commands/restore.d.ts.map +1 -0
  27. package/dist/cli/commands/restore.js +192 -0
  28. package/dist/cli/commands/restore.js.map +1 -0
  29. package/dist/cli/commands/search.d.ts.map +1 -1
  30. package/dist/cli/commands/search.js +30 -2
  31. package/dist/cli/commands/search.js.map +1 -1
  32. package/dist/cli/commands/show.d.ts.map +1 -1
  33. package/dist/cli/commands/show.js +31 -3
  34. package/dist/cli/commands/show.js.map +1 -1
  35. package/dist/cli/index.js +10 -0
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/core/backup.d.ts +86 -0
  38. package/dist/core/backup.d.ts.map +1 -0
  39. package/dist/core/backup.js +727 -0
  40. package/dist/core/backup.js.map +1 -0
  41. package/dist/core/database/debug.d.ts +12 -0
  42. package/dist/core/database/debug.d.ts.map +1 -0
  43. package/dist/core/database/debug.js +16 -0
  44. package/dist/core/database/debug.js.map +1 -0
  45. package/dist/core/database/drivers/better-sqlite3.d.ts +11 -0
  46. package/dist/core/database/drivers/better-sqlite3.d.ts.map +1 -0
  47. package/dist/core/database/drivers/better-sqlite3.js +93 -0
  48. package/dist/core/database/drivers/better-sqlite3.js.map +1 -0
  49. package/dist/core/database/drivers/node-sqlite.d.ts +15 -0
  50. package/dist/core/database/drivers/node-sqlite.d.ts.map +1 -0
  51. package/dist/core/database/drivers/node-sqlite.js +135 -0
  52. package/dist/core/database/drivers/node-sqlite.js.map +1 -0
  53. package/dist/core/database/errors.d.ts +24 -0
  54. package/dist/core/database/errors.d.ts.map +1 -0
  55. package/dist/core/database/errors.js +38 -0
  56. package/dist/core/database/errors.js.map +1 -0
  57. package/dist/core/database/index.d.ts +98 -0
  58. package/dist/core/database/index.d.ts.map +1 -0
  59. package/dist/core/database/index.js +125 -0
  60. package/dist/core/database/index.js.map +1 -0
  61. package/dist/core/database/registry.d.ts +81 -0
  62. package/dist/core/database/registry.d.ts.map +1 -0
  63. package/dist/core/database/registry.js +171 -0
  64. package/dist/core/database/registry.js.map +1 -0
  65. package/dist/core/database/types.d.ts +115 -0
  66. package/dist/core/database/types.d.ts.map +1 -0
  67. package/dist/core/database/types.js +8 -0
  68. package/dist/core/database/types.js.map +1 -0
  69. package/dist/core/migrate.d.ts +40 -0
  70. package/dist/core/migrate.d.ts.map +1 -0
  71. package/dist/core/migrate.js +586 -0
  72. package/dist/core/migrate.js.map +1 -0
  73. package/dist/core/storage.d.ts +84 -10
  74. package/dist/core/storage.d.ts.map +1 -1
  75. package/dist/core/storage.js +319 -33
  76. package/dist/core/storage.js.map +1 -1
  77. package/dist/core/types.d.ts +252 -0
  78. package/dist/core/types.d.ts.map +1 -1
  79. package/dist/lib/backup.d.ts +98 -0
  80. package/dist/lib/backup.d.ts.map +1 -0
  81. package/dist/lib/backup.js +108 -0
  82. package/dist/lib/backup.js.map +1 -0
  83. package/dist/lib/config.d.ts +3 -1
  84. package/dist/lib/config.d.ts.map +1 -1
  85. package/dist/lib/config.js +10 -0
  86. package/dist/lib/config.js.map +1 -1
  87. package/dist/lib/errors.d.ts +229 -0
  88. package/dist/lib/errors.d.ts.map +1 -1
  89. package/dist/lib/errors.js +361 -0
  90. package/dist/lib/errors.js.map +1 -1
  91. package/dist/lib/index.d.ts +133 -24
  92. package/dist/lib/index.d.ts.map +1 -1
  93. package/dist/lib/index.js +212 -49
  94. package/dist/lib/index.js.map +1 -1
  95. package/dist/lib/platform.d.ts +11 -0
  96. package/dist/lib/platform.d.ts.map +1 -1
  97. package/dist/lib/platform.js +32 -0
  98. package/dist/lib/platform.js.map +1 -1
  99. package/dist/lib/types.d.ts +267 -0
  100. package/dist/lib/types.d.ts.map +1 -1
  101. package/package.json +23 -3
@@ -5,10 +5,10 @@
5
5
  * projects, NOT a network/REST API. Functions are imported directly:
6
6
  * `import { listSessions, getSession, searchSessions } from 'cursor-history'`
7
7
  */
8
- export type { Session, Message, ToolCall, SearchResult, LibraryConfig, PaginatedResult, } from './types.js';
9
- export { DatabaseLockedError, DatabaseNotFoundError, InvalidConfigError, isDatabaseLockedError, isDatabaseNotFoundError, isInvalidConfigError, } from './errors.js';
8
+ export type { Session, Message, ToolCall, SearchResult, LibraryConfig, PaginatedResult, MigrationMode, MigrateSessionConfig, MigrateWorkspaceConfig, SessionMigrationResult, WorkspaceMigrationResult, BackupManifest, BackupFileEntry, BackupStats, BackupConfig, BackupProgress, BackupResult, RestoreConfig, RestoreProgress, RestoreResult, BackupValidation, BackupInfo, SqliteDriverName, } from './types.js';
9
+ export { DatabaseLockedError, DatabaseNotFoundError, InvalidConfigError, SessionNotFoundError, WorkspaceNotFoundError, SameWorkspaceError, NoSessionsFoundError, DestinationHasSessionsError, BackupError, NoDataError, FileExistsError, InsufficientSpaceError, RestoreError, BackupNotFoundError, InvalidBackupError, TargetExistsError, IntegrityError, isDatabaseLockedError, isDatabaseNotFoundError, isInvalidConfigError, isSessionNotFoundError, isWorkspaceNotFoundError, isSameWorkspaceError, isNoSessionsFoundError, isDestinationHasSessionsError, isBackupError, isNoDataError, isFileExistsError, isInsufficientSpaceError, isRestoreError, isBackupNotFoundError, isInvalidBackupError, isTargetExistsError, isIntegrityError, } from './errors.js';
10
10
  export { getDefaultDataPath } from './utils.js';
11
- import type { LibraryConfig, PaginatedResult, Session, SearchResult } from './types.js';
11
+ import type { LibraryConfig, PaginatedResult, Session, SearchResult, MigrateSessionConfig, MigrateWorkspaceConfig, SessionMigrationResult, WorkspaceMigrationResult, SqliteDriverName } from './types.js';
12
12
  /**
13
13
  * List all chat sessions, optionally filtered and paginated.
14
14
  *
@@ -20,19 +20,19 @@ import type { LibraryConfig, PaginatedResult, Session, SearchResult } from './ty
20
20
  *
21
21
  * @example
22
22
  * // List all sessions
23
- * const result = listSessions();
23
+ * const result = await listSessions();
24
24
  * console.log(result.data); // Session[]
25
25
  *
26
26
  * @example
27
27
  * // List sessions with pagination
28
- * const page1 = listSessions({ limit: 10, offset: 0 });
29
- * const page2 = listSessions({ limit: 10, offset: 10 });
28
+ * const page1 = await listSessions({ limit: 10, offset: 0 });
29
+ * const page2 = await listSessions({ limit: 10, offset: 10 });
30
30
  *
31
31
  * @example
32
32
  * // List sessions for specific workspace
33
- * const result = listSessions({ workspace: '/path/to/project' });
33
+ * const result = await listSessions({ workspace: '/path/to/project' });
34
34
  */
35
- export declare function listSessions(config?: LibraryConfig): PaginatedResult<Session>;
35
+ export declare function listSessions(config?: LibraryConfig): Promise<PaginatedResult<Session>>;
36
36
  /**
37
37
  * Get a specific session by index.
38
38
  *
@@ -44,14 +44,14 @@ export declare function listSessions(config?: LibraryConfig): PaginatedResult<Se
44
44
  * @throws {InvalidConfigError} If index is out of bounds
45
45
  *
46
46
  * @example
47
- * const session = getSession(0);
47
+ * const session = await getSession(0);
48
48
  * console.log(session.messages); // Message[]
49
49
  *
50
50
  * @example
51
51
  * // Get session from custom data path
52
- * const session = getSession(5, { dataPath: '/custom/cursor/data' });
52
+ * const session = await getSession(5, { dataPath: '/custom/cursor/data' });
53
53
  */
54
- export declare function getSession(index: number, config?: LibraryConfig): Session;
54
+ export declare function getSession(index: number, config?: LibraryConfig): Promise<Session>;
55
55
  /**
56
56
  * Search across all sessions for matching content.
57
57
  *
@@ -63,11 +63,11 @@ export declare function getSession(index: number, config?: LibraryConfig): Sessi
63
63
  *
64
64
  * @example
65
65
  * // Basic search
66
- * const results = searchSessions('authentication');
66
+ * const results = await searchSessions('authentication');
67
67
  *
68
68
  * @example
69
69
  * // Search with context lines
70
- * const results = searchSessions('error', { context: 2 });
70
+ * const results = await searchSessions('error', { context: 2 });
71
71
  * results.forEach(r => {
72
72
  * console.log(r.contextBefore); // 2 lines before match
73
73
  * console.log(r.match); // matched line
@@ -76,9 +76,9 @@ export declare function getSession(index: number, config?: LibraryConfig): Sessi
76
76
  *
77
77
  * @example
78
78
  * // Search within specific workspace
79
- * const results = searchSessions('bug', { workspace: '/path/to/project' });
79
+ * const results = await searchSessions('bug', { workspace: '/path/to/project' });
80
80
  */
81
- export declare function searchSessions(query: string, config?: LibraryConfig): SearchResult[];
81
+ export declare function searchSessions(query: string, config?: LibraryConfig): Promise<SearchResult[]>;
82
82
  /**
83
83
  * Export a session to JSON format.
84
84
  *
@@ -90,10 +90,10 @@ export declare function searchSessions(query: string, config?: LibraryConfig): S
90
90
  * @throws {InvalidConfigError} If index is out of bounds
91
91
  *
92
92
  * @example
93
- * const json = exportSessionToJson(0);
93
+ * const json = await exportSessionToJson(0);
94
94
  * fs.writeFileSync('session.json', json);
95
95
  */
96
- export declare function exportSessionToJson(index: number, config?: LibraryConfig): string;
96
+ export declare function exportSessionToJson(index: number, config?: LibraryConfig): Promise<string>;
97
97
  /**
98
98
  * Export a session to Markdown format.
99
99
  *
@@ -105,10 +105,10 @@ export declare function exportSessionToJson(index: number, config?: LibraryConfi
105
105
  * @throws {InvalidConfigError} If index is out of bounds
106
106
  *
107
107
  * @example
108
- * const markdown = exportSessionToMarkdown(0);
108
+ * const markdown = await exportSessionToMarkdown(0);
109
109
  * fs.writeFileSync('session.md', markdown);
110
110
  */
111
- export declare function exportSessionToMarkdown(index: number, config?: LibraryConfig): string;
111
+ export declare function exportSessionToMarkdown(index: number, config?: LibraryConfig): Promise<string>;
112
112
  /**
113
113
  * Export all sessions to JSON format.
114
114
  *
@@ -118,14 +118,14 @@ export declare function exportSessionToMarkdown(index: number, config?: LibraryC
118
118
  * @throws {DatabaseNotFoundError} If database path does not exist
119
119
  *
120
120
  * @example
121
- * const json = exportAllSessionsToJson();
121
+ * const json = await exportAllSessionsToJson();
122
122
  * fs.writeFileSync('all-sessions.json', json);
123
123
  *
124
124
  * @example
125
125
  * // Export sessions from specific workspace
126
- * const json = exportAllSessionsToJson({ workspace: '/path/to/project' });
126
+ * const json = await exportAllSessionsToJson({ workspace: '/path/to/project' });
127
127
  */
128
- export declare function exportAllSessionsToJson(config?: LibraryConfig): string;
128
+ export declare function exportAllSessionsToJson(config?: LibraryConfig): Promise<string>;
129
129
  /**
130
130
  * Export all sessions to Markdown format.
131
131
  *
@@ -135,8 +135,117 @@ export declare function exportAllSessionsToJson(config?: LibraryConfig): string;
135
135
  * @throws {DatabaseNotFoundError} If database path does not exist
136
136
  *
137
137
  * @example
138
- * const markdown = exportAllSessionsToMarkdown();
138
+ * const markdown = await exportAllSessionsToMarkdown();
139
139
  * fs.writeFileSync('all-sessions.md', markdown);
140
140
  */
141
- export declare function exportAllSessionsToMarkdown(config?: LibraryConfig): string;
141
+ export declare function exportAllSessionsToMarkdown(config?: LibraryConfig): Promise<string>;
142
+ /**
143
+ * Migrate one or more sessions to a different workspace.
144
+ *
145
+ * This is the primary migration function for session-level operations.
146
+ * Supports moving (removing from source) or copying (keeping source intact).
147
+ *
148
+ * @param config - Migration configuration
149
+ * @returns Array of results for each session migrated
150
+ * @throws {SessionNotFoundError} If a session cannot be found
151
+ * @throws {WorkspaceNotFoundError} If destination workspace doesn't exist
152
+ * @throws {SameWorkspaceError} If source and destination are the same
153
+ * @throws {DatabaseLockedError} If database is locked by Cursor
154
+ *
155
+ * @example
156
+ * // Move a single session by index
157
+ * const results = await migrateSession({
158
+ * sessions: 3,
159
+ * destination: '/path/to/new/project'
160
+ * });
161
+ *
162
+ * @example
163
+ * // Copy multiple sessions
164
+ * const results = await migrateSession({
165
+ * sessions: [1, 3, 5],
166
+ * destination: '/path/to/project',
167
+ * mode: 'copy'
168
+ * });
169
+ *
170
+ * @example
171
+ * // Dry run to preview what would happen
172
+ * const results = await migrateSession({
173
+ * sessions: '1,3,5',
174
+ * destination: '/path/to/project',
175
+ * dryRun: true
176
+ * });
177
+ */
178
+ export declare function migrateSession(config: MigrateSessionConfig): Promise<SessionMigrationResult[]>;
179
+ /**
180
+ * Migrate all sessions from one workspace to another.
181
+ *
182
+ * This is a convenience function for workspace-level migration.
183
+ * Uses migrateSession internally for each session in the source workspace.
184
+ *
185
+ * @param config - Workspace migration configuration
186
+ * @returns Aggregate result with per-session details
187
+ * @throws {WorkspaceNotFoundError} If source or destination workspace doesn't exist
188
+ * @throws {SameWorkspaceError} If source and destination are the same
189
+ * @throws {NoSessionsFoundError} If source workspace has no sessions
190
+ * @throws {DestinationHasSessionsError} If destination has sessions and force not set
191
+ * @throws {DatabaseLockedError} If database is locked by Cursor
192
+ *
193
+ * @example
194
+ * // Move all sessions from old to new project
195
+ * const result = await migrateWorkspace({
196
+ * source: '/old/project',
197
+ * destination: '/new/project'
198
+ * });
199
+ * console.log(`Migrated ${result.successCount} sessions`);
200
+ *
201
+ * @example
202
+ * // Create backup copy of all sessions
203
+ * const result = await migrateWorkspace({
204
+ * source: '/project',
205
+ * destination: '/backup/project',
206
+ * mode: 'copy'
207
+ * });
208
+ *
209
+ * @example
210
+ * // Force merge with existing destination sessions
211
+ * const result = await migrateWorkspace({
212
+ * source: '/old/project',
213
+ * destination: '/existing/project',
214
+ * force: true
215
+ * });
216
+ */
217
+ export declare function migrateWorkspace(config: MigrateWorkspaceConfig): Promise<WorkspaceMigrationResult>;
218
+ export { createBackup, restoreBackup, validateBackup, listBackups, getDefaultBackupDir, } from './backup.js';
219
+ /**
220
+ * Set the SQLite driver to use for database operations.
221
+ *
222
+ * This allows explicit control over which SQLite driver is used.
223
+ * By default, the library auto-detects: tries node:sqlite first (Node.js 22.5+),
224
+ * then falls back to better-sqlite3.
225
+ *
226
+ * @param name - Driver name: 'better-sqlite3' or 'node:sqlite'
227
+ * @throws {Error} If the specified driver is not available
228
+ *
229
+ * @example
230
+ * // Force use of better-sqlite3
231
+ * setDriver('better-sqlite3');
232
+ *
233
+ * @example
234
+ * // Force use of Node.js built-in sqlite
235
+ * setDriver('node:sqlite');
236
+ */
237
+ export declare function setDriver(name: SqliteDriverName): void;
238
+ /**
239
+ * Get the name of the currently active SQLite driver.
240
+ *
241
+ * Returns undefined if no driver has been selected yet (auto-selection
242
+ * happens on first database operation).
243
+ *
244
+ * @returns Current driver name or undefined
245
+ *
246
+ * @example
247
+ * const driver = getActiveDriver();
248
+ * console.log(`Using ${driver ?? 'auto-detect'}`);
249
+ */
250
+ export declare function getActiveDriver(): SqliteDriverName | undefined;
142
251
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8BxF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,CAyD7E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CA6BzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE,CAmFpF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAiBjF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAiBrF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CA4BtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAgC1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}