@majkapp/majk-chat-sessions 1.0.53 → 1.0.81
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/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/blob.d.ts +22 -0
- package/dist/storage/blob.d.ts.map +1 -0
- package/dist/storage/blob.js +189 -0
- package/dist/storage/blob.js.map +1 -0
- package/dist/storage/filesystem.d.ts +6 -0
- package/dist/storage/filesystem.d.ts.map +1 -1
- package/dist/storage/filesystem.js +10 -0
- package/dist/storage/filesystem.js.map +1 -1
- package/dist/storage/registry-session-store.d.ts +37 -0
- package/dist/storage/registry-session-store.d.ts.map +1 -0
- package/dist/storage/registry-session-store.js +132 -0
- package/dist/storage/registry-session-store.js.map +1 -0
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { SessionManager } from './session-manager';
|
|
2
2
|
export { FileSystemSessionStorage } from './storage/filesystem';
|
|
3
|
+
export { BlobSessionStorage } from './storage/blob';
|
|
4
|
+
export { RegistrySessionStore } from './storage/registry-session-store';
|
|
3
5
|
export { SessionMetadata, SessionData, SessionListItem, SessionStorageConfig, SessionStorage } from './types/session';
|
|
4
6
|
export { SessionManagerConfig } from './session-manager';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FileSystemSessionStorage = exports.SessionManager = void 0;
|
|
3
|
+
exports.RegistrySessionStore = exports.BlobSessionStorage = exports.FileSystemSessionStorage = exports.SessionManager = void 0;
|
|
4
4
|
var session_manager_1 = require("./session-manager");
|
|
5
5
|
Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return session_manager_1.SessionManager; } });
|
|
6
6
|
var filesystem_1 = require("./storage/filesystem");
|
|
7
7
|
Object.defineProperty(exports, "FileSystemSessionStorage", { enumerable: true, get: function () { return filesystem_1.FileSystemSessionStorage; } });
|
|
8
|
+
var blob_1 = require("./storage/blob");
|
|
9
|
+
Object.defineProperty(exports, "BlobSessionStorage", { enumerable: true, get: function () { return blob_1.BlobSessionStorage; } });
|
|
10
|
+
var registry_session_store_1 = require("./storage/registry-session-store");
|
|
11
|
+
Object.defineProperty(exports, "RegistrySessionStore", { enumerable: true, get: function () { return registry_session_store_1.RegistrySessionStore; } });
|
|
8
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,mDAAgE;AAAvD,sHAAA,wBAAwB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,mDAAgE;AAAvD,sHAAA,wBAAwB,OAAA;AACjC,uCAAoD;AAA3C,0GAAA,kBAAkB,OAAA;AAC3B,2EAAwE;AAA/D,8HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BlobBackend, StorageProvider } from '@majkapp/majk-storage';
|
|
2
|
+
import { SessionStorage, SessionData, SessionListItem } from '../types/session';
|
|
3
|
+
export declare class BlobSessionStorage implements SessionStorage {
|
|
4
|
+
private readonly blobs;
|
|
5
|
+
private readonly maxSessions;
|
|
6
|
+
private readonly autoCleanup;
|
|
7
|
+
private readonly cleanupAfterDays;
|
|
8
|
+
constructor(blobs: BlobBackend, maxSessions?: number, autoCleanup?: boolean, cleanupAfterDays?: number);
|
|
9
|
+
static fromProvider(provider: StorageProvider): BlobSessionStorage;
|
|
10
|
+
private sanitizeDirectoryName;
|
|
11
|
+
private getBlobPath;
|
|
12
|
+
save(sessionData: SessionData): Promise<void>;
|
|
13
|
+
load(sessionId: string, workingDirectory: string): Promise<SessionData | null>;
|
|
14
|
+
exists(sessionId: string, workingDirectory: string): Promise<boolean>;
|
|
15
|
+
list(workingDirectory: string): Promise<SessionListItem[]>;
|
|
16
|
+
private extractLastMessageContent;
|
|
17
|
+
delete(sessionId: string, workingDirectory: string): Promise<boolean>;
|
|
18
|
+
getLatest(workingDirectory: string): Promise<SessionData | null>;
|
|
19
|
+
cleanup(workingDirectory?: string): Promise<number>;
|
|
20
|
+
private performCleanup;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=blob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/storage/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIhF,qBAAa,kBAAmB,YAAW,cAAc;IAErD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAHhB,KAAK,EAAE,WAAW,EAClB,WAAW,SAAO,EAClB,WAAW,UAAO,EAClB,gBAAgB,SAAK;IAGxC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,kBAAkB;IAIlE,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,WAAW;IAYb,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAU9E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAuChE,OAAO,CAAC,yBAAyB;IAkB3B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrE,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAMhE,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAQ3C,cAAc;CAuB7B"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.BlobSessionStorage = void 0;
|
|
37
|
+
const os = __importStar(require("os"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class BlobSessionStorage {
|
|
40
|
+
constructor(blobs, maxSessions = 1000, autoCleanup = true, cleanupAfterDays = 90) {
|
|
41
|
+
this.blobs = blobs;
|
|
42
|
+
this.maxSessions = maxSessions;
|
|
43
|
+
this.autoCleanup = autoCleanup;
|
|
44
|
+
this.cleanupAfterDays = cleanupAfterDays;
|
|
45
|
+
}
|
|
46
|
+
static fromProvider(provider) {
|
|
47
|
+
return new BlobSessionStorage(provider.blobs());
|
|
48
|
+
}
|
|
49
|
+
sanitizeDirectoryName(dirPath) {
|
|
50
|
+
return dirPath
|
|
51
|
+
.replace(/^\/+|\/+$/g, '')
|
|
52
|
+
.replace(/[^a-zA-Z0-9_\-]/g, '_')
|
|
53
|
+
.replace(/_+/g, '_')
|
|
54
|
+
.toLowerCase();
|
|
55
|
+
}
|
|
56
|
+
getBlobPath(sessionId, workingDirectory) {
|
|
57
|
+
const sanitizedName = this.sanitizeDirectoryName(workingDirectory);
|
|
58
|
+
let sessionDirName;
|
|
59
|
+
if (workingDirectory.startsWith(os.homedir())) {
|
|
60
|
+
const relativePath = path.relative(os.homedir(), workingDirectory);
|
|
61
|
+
sessionDirName = `home_${this.sanitizeDirectoryName(relativePath)}`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
sessionDirName = sanitizedName;
|
|
65
|
+
}
|
|
66
|
+
return `sessions/${sessionDirName}/${sessionId}.json`;
|
|
67
|
+
}
|
|
68
|
+
async save(sessionData) {
|
|
69
|
+
sessionData.metadata.updatedAt = new Date();
|
|
70
|
+
sessionData.metadata.totalMessages = sessionData.messages.length;
|
|
71
|
+
const blobPath = this.getBlobPath(sessionData.metadata.id, sessionData.metadata.workingDirectory);
|
|
72
|
+
await this.blobs.write(blobPath, JSON.stringify(sessionData, null, 2));
|
|
73
|
+
if (this.autoCleanup) {
|
|
74
|
+
await this.performCleanup(sessionData.metadata.workingDirectory);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async load(sessionId, workingDirectory) {
|
|
78
|
+
const blobPath = this.getBlobPath(sessionId, workingDirectory);
|
|
79
|
+
const data = await this.blobs.read(blobPath);
|
|
80
|
+
if (!data)
|
|
81
|
+
return null;
|
|
82
|
+
const parsed = JSON.parse(data.toString('utf-8'));
|
|
83
|
+
parsed.metadata.createdAt = new Date(parsed.metadata.createdAt);
|
|
84
|
+
parsed.metadata.updatedAt = new Date(parsed.metadata.updatedAt);
|
|
85
|
+
return parsed;
|
|
86
|
+
}
|
|
87
|
+
async exists(sessionId, workingDirectory) {
|
|
88
|
+
const blobPath = this.getBlobPath(sessionId, workingDirectory);
|
|
89
|
+
return this.blobs.exists(blobPath);
|
|
90
|
+
}
|
|
91
|
+
async list(workingDirectory) {
|
|
92
|
+
const sanitizedName = this.sanitizeDirectoryName(workingDirectory);
|
|
93
|
+
let sessionDirName;
|
|
94
|
+
if (workingDirectory.startsWith(os.homedir())) {
|
|
95
|
+
const relativePath = path.relative(os.homedir(), workingDirectory);
|
|
96
|
+
sessionDirName = `home_${this.sanitizeDirectoryName(relativePath)}`;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
sessionDirName = sanitizedName;
|
|
100
|
+
}
|
|
101
|
+
const prefix = `sessions/${sessionDirName}/`;
|
|
102
|
+
const paths = await this.blobs.list(prefix);
|
|
103
|
+
const jsonPaths = paths.filter(p => p.endsWith('.json'));
|
|
104
|
+
const sessions = [];
|
|
105
|
+
for (const blobPath of jsonPaths) {
|
|
106
|
+
try {
|
|
107
|
+
const data = await this.blobs.read(blobPath);
|
|
108
|
+
if (!data)
|
|
109
|
+
continue;
|
|
110
|
+
const parsed = JSON.parse(data.toString('utf-8'));
|
|
111
|
+
parsed.metadata.createdAt = new Date(parsed.metadata.createdAt);
|
|
112
|
+
parsed.metadata.updatedAt = new Date(parsed.metadata.updatedAt);
|
|
113
|
+
const lastMessage = parsed.messages.length > 0
|
|
114
|
+
? this.extractLastMessageContent(parsed.messages[parsed.messages.length - 1])
|
|
115
|
+
: undefined;
|
|
116
|
+
sessions.push({
|
|
117
|
+
id: parsed.metadata.id,
|
|
118
|
+
title: parsed.metadata.title,
|
|
119
|
+
createdAt: parsed.metadata.createdAt,
|
|
120
|
+
updatedAt: parsed.metadata.updatedAt,
|
|
121
|
+
totalMessages: parsed.metadata.totalMessages,
|
|
122
|
+
lastMessage
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// skip corrupted blobs
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return sessions.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
|
|
130
|
+
}
|
|
131
|
+
extractLastMessageContent(message) {
|
|
132
|
+
if (typeof message.content === 'string') {
|
|
133
|
+
return message.content.length > 100
|
|
134
|
+
? message.content.substring(0, 100) + '...'
|
|
135
|
+
: message.content;
|
|
136
|
+
}
|
|
137
|
+
if (Array.isArray(message.content)) {
|
|
138
|
+
const textBlocks = message.content.filter((block) => block.type === 'text');
|
|
139
|
+
if (textBlocks.length > 0) {
|
|
140
|
+
const text = textBlocks[0].text;
|
|
141
|
+
return text.length > 100 ? text.substring(0, 100) + '...' : text;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return '[Complex content]';
|
|
145
|
+
}
|
|
146
|
+
async delete(sessionId, workingDirectory) {
|
|
147
|
+
const blobPath = this.getBlobPath(sessionId, workingDirectory);
|
|
148
|
+
const existed = await this.blobs.exists(blobPath);
|
|
149
|
+
if (!existed)
|
|
150
|
+
return false;
|
|
151
|
+
await this.blobs.delete(blobPath);
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
async getLatest(workingDirectory) {
|
|
155
|
+
const sessions = await this.list(workingDirectory);
|
|
156
|
+
if (sessions.length === 0)
|
|
157
|
+
return null;
|
|
158
|
+
return this.load(sessions[0].id, workingDirectory);
|
|
159
|
+
}
|
|
160
|
+
async cleanup(workingDirectory) {
|
|
161
|
+
// If workingDirectory is provided, clean that dir; otherwise skip (no easy way to enumerate all dirs in blob backend without a root list)
|
|
162
|
+
if (workingDirectory) {
|
|
163
|
+
return this.performCleanup(workingDirectory);
|
|
164
|
+
}
|
|
165
|
+
return 0;
|
|
166
|
+
}
|
|
167
|
+
async performCleanup(workingDirectory) {
|
|
168
|
+
const cutoffDate = new Date();
|
|
169
|
+
cutoffDate.setDate(cutoffDate.getDate() - this.cleanupAfterDays);
|
|
170
|
+
const sessions = await this.list(workingDirectory);
|
|
171
|
+
let cleaned = 0;
|
|
172
|
+
const toDelete = sessions.filter(s => s.updatedAt < cutoffDate);
|
|
173
|
+
const sessionsToDelete = [...toDelete];
|
|
174
|
+
// Also remove excess sessions if we exceed maxSessions
|
|
175
|
+
if (sessions.length - toDelete.length > this.maxSessions) {
|
|
176
|
+
const excessSessions = sessions
|
|
177
|
+
.slice(this.maxSessions)
|
|
178
|
+
.filter(session => !toDelete.includes(session));
|
|
179
|
+
sessionsToDelete.push(...excessSessions);
|
|
180
|
+
}
|
|
181
|
+
for (const s of sessionsToDelete) {
|
|
182
|
+
if (await this.delete(s.id, workingDirectory))
|
|
183
|
+
cleaned++;
|
|
184
|
+
}
|
|
185
|
+
return cleaned;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.BlobSessionStorage = BlobSessionStorage;
|
|
189
|
+
//# sourceMappingURL=blob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/storage/blob.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { StorageProvider } from '@majkapp/majk-storage';
|
|
1
2
|
import { SessionStorage, SessionData, SessionListItem, SessionStorageConfig } from '../types/session';
|
|
2
3
|
export declare class FileSystemSessionStorage implements SessionStorage {
|
|
3
4
|
private baseDirectory;
|
|
@@ -5,6 +6,11 @@ export declare class FileSystemSessionStorage implements SessionStorage {
|
|
|
5
6
|
private autoCleanup;
|
|
6
7
|
private cleanupAfterDays;
|
|
7
8
|
constructor(config?: SessionStorageConfig);
|
|
9
|
+
/**
|
|
10
|
+
* Factory method to create a FileSystemSessionStorage from a StorageProvider.
|
|
11
|
+
* Uses the provider's resolved path to determine the sessions directory.
|
|
12
|
+
*/
|
|
13
|
+
static fromProvider(provider: StorageProvider): Promise<FileSystemSessionStorage>;
|
|
8
14
|
private sanitizeDirectoryName;
|
|
9
15
|
private getSessionDirectory;
|
|
10
16
|
private getSessionFilePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/storage/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEtG,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,GAAE,oBAAyB;IAO7C,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,kBAAkB;YAIZ,qBAAqB;YAQrB,eAAe;YAiBf,gBAAgB;IASxB,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+ChE,OAAO,CAAC,yBAAyB;IAkB3B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcrE,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAWhE,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAuB3C,cAAc;CA2B7B"}
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/storage/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEtG,qBAAa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,GAAE,oBAAyB;IAO7C;;;OAGG;WACU,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAOvF,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,kBAAkB;YAIZ,qBAAqB;YAQrB,eAAe;YAiBf,gBAAgB;IASxB,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+ChE,OAAO,CAAC,yBAAyB;IAkB3B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcrE,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAWhE,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAuB3C,cAAc;CA2B7B"}
|
|
@@ -44,6 +44,16 @@ class FileSystemSessionStorage {
|
|
|
44
44
|
this.autoCleanup = config.autoCleanup ?? true;
|
|
45
45
|
this.cleanupAfterDays = config.cleanupAfterDays || 90;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Factory method to create a FileSystemSessionStorage from a StorageProvider.
|
|
49
|
+
* Uses the provider's resolved path to determine the sessions directory.
|
|
50
|
+
*/
|
|
51
|
+
static async fromProvider(provider) {
|
|
52
|
+
const sessionsDir = await provider.resolvePath('sessions');
|
|
53
|
+
return new FileSystemSessionStorage({
|
|
54
|
+
baseDirectory: sessionsDir
|
|
55
|
+
});
|
|
56
|
+
}
|
|
47
57
|
sanitizeDirectoryName(dirPath) {
|
|
48
58
|
return dirPath
|
|
49
59
|
.replace(/^\/+|\/+$/g, '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/storage/filesystem.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,2CAA6B;AAC7B,uCAAyB;
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/storage/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Registry } from '@majkapp/majk-settings';
|
|
2
|
+
import { SessionStorage, SessionData, SessionListItem } from '../types/session';
|
|
3
|
+
/**
|
|
4
|
+
* Registry-based session storage implementation using majk-settings.
|
|
5
|
+
*
|
|
6
|
+
* Uses registry keys in the format: `${workingDirectory}::${sessionId}`
|
|
7
|
+
* This scopes sessions per project directory while storing them in a central registry.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RegistrySessionStore implements SessionStorage {
|
|
10
|
+
private registry;
|
|
11
|
+
private readonly sessionLens;
|
|
12
|
+
constructor(registry: Registry);
|
|
13
|
+
/**
|
|
14
|
+
* Creates a registry key scoped by working directory
|
|
15
|
+
*/
|
|
16
|
+
private createKey;
|
|
17
|
+
/**
|
|
18
|
+
* Extracts sessionId and workingDirectory from a registry key
|
|
19
|
+
*/
|
|
20
|
+
private parseKey;
|
|
21
|
+
/**
|
|
22
|
+
* Restores Date objects from JSON-serialized strings
|
|
23
|
+
*/
|
|
24
|
+
private restoreDates;
|
|
25
|
+
/**
|
|
26
|
+
* Extracts text content from a message for lastMessage display
|
|
27
|
+
*/
|
|
28
|
+
private extractMessageText;
|
|
29
|
+
save(sessionData: SessionData): Promise<void>;
|
|
30
|
+
load(sessionId: string, workingDirectory: string): Promise<SessionData | null>;
|
|
31
|
+
exists(sessionId: string, workingDirectory: string): Promise<boolean>;
|
|
32
|
+
list(workingDirectory: string): Promise<SessionListItem[]>;
|
|
33
|
+
delete(sessionId: string, workingDirectory: string): Promise<boolean>;
|
|
34
|
+
getLatest(workingDirectory: string): Promise<SessionData | null>;
|
|
35
|
+
cleanup(workingDirectory?: string): Promise<number>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=registry-session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-session-store.d.ts","sourceRoot":"","sources":["../../src/storage/registry-session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA8B,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhF;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAG7C,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;gBAEpC,QAAQ,EAAE,QAAQ;IAItC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAWhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAcpB,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAW9E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAsB1D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYrE,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAYhE,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB1D"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegistrySessionStore = void 0;
|
|
4
|
+
const majk_settings_1 = require("@majkapp/majk-settings");
|
|
5
|
+
/**
|
|
6
|
+
* Registry-based session storage implementation using majk-settings.
|
|
7
|
+
*
|
|
8
|
+
* Uses registry keys in the format: `${workingDirectory}::${sessionId}`
|
|
9
|
+
* This scopes sessions per project directory while storing them in a central registry.
|
|
10
|
+
*/
|
|
11
|
+
class RegistrySessionStore {
|
|
12
|
+
constructor(registry) {
|
|
13
|
+
this.registry = registry;
|
|
14
|
+
this.sessionLens = (0, majk_settings_1.registryLens)('sessions');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates a registry key scoped by working directory
|
|
18
|
+
*/
|
|
19
|
+
createKey(sessionId, workingDirectory) {
|
|
20
|
+
return `${workingDirectory}::${sessionId}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Extracts sessionId and workingDirectory from a registry key
|
|
24
|
+
*/
|
|
25
|
+
parseKey(key) {
|
|
26
|
+
const parts = key.split('::');
|
|
27
|
+
if (parts.length < 2)
|
|
28
|
+
return null;
|
|
29
|
+
// Handle case where workingDirectory contains "::" by rejoining all but last part
|
|
30
|
+
const sessionId = parts[parts.length - 1];
|
|
31
|
+
const workingDirectory = parts.slice(0, -1).join('::');
|
|
32
|
+
return { sessionId, workingDirectory };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Restores Date objects from JSON-serialized strings
|
|
36
|
+
*/
|
|
37
|
+
restoreDates(sessionData) {
|
|
38
|
+
return {
|
|
39
|
+
...sessionData,
|
|
40
|
+
metadata: {
|
|
41
|
+
...sessionData.metadata,
|
|
42
|
+
createdAt: new Date(sessionData.metadata.createdAt),
|
|
43
|
+
updatedAt: new Date(sessionData.metadata.updatedAt),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extracts text content from a message for lastMessage display
|
|
49
|
+
*/
|
|
50
|
+
extractMessageText(content) {
|
|
51
|
+
if (typeof content === 'string') {
|
|
52
|
+
return content;
|
|
53
|
+
}
|
|
54
|
+
if (Array.isArray(content)) {
|
|
55
|
+
// Find the first text block
|
|
56
|
+
const textBlock = content.find(block => block.type === 'text');
|
|
57
|
+
return textBlock?.text;
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
async save(sessionData) {
|
|
62
|
+
const key = this.createKey(sessionData.metadata.id, sessionData.metadata.workingDirectory);
|
|
63
|
+
await this.sessionLens.set(this.registry, key, sessionData);
|
|
64
|
+
}
|
|
65
|
+
async load(sessionId, workingDirectory) {
|
|
66
|
+
const key = this.createKey(sessionId, workingDirectory);
|
|
67
|
+
const sessionData = await this.sessionLens.get(this.registry, key);
|
|
68
|
+
if (!sessionData) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return this.restoreDates(sessionData);
|
|
72
|
+
}
|
|
73
|
+
async exists(sessionId, workingDirectory) {
|
|
74
|
+
const key = this.createKey(sessionId, workingDirectory);
|
|
75
|
+
return await this.sessionLens.has(this.registry, key);
|
|
76
|
+
}
|
|
77
|
+
async list(workingDirectory) {
|
|
78
|
+
const allSessions = await this.sessionLens.list(this.registry);
|
|
79
|
+
const prefix = `${workingDirectory}::`;
|
|
80
|
+
const filteredSessions = allSessions
|
|
81
|
+
.filter(([key]) => key.startsWith(prefix))
|
|
82
|
+
.map(([key, sessionData]) => {
|
|
83
|
+
const restored = this.restoreDates(sessionData);
|
|
84
|
+
return {
|
|
85
|
+
id: restored.metadata.id,
|
|
86
|
+
title: restored.metadata.title,
|
|
87
|
+
createdAt: restored.metadata.createdAt,
|
|
88
|
+
updatedAt: restored.metadata.updatedAt,
|
|
89
|
+
totalMessages: restored.metadata.totalMessages,
|
|
90
|
+
lastMessage: restored.messages.length > 0 ? this.extractMessageText(restored.messages[restored.messages.length - 1].content) : undefined,
|
|
91
|
+
};
|
|
92
|
+
})
|
|
93
|
+
.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime()); // Most recent first
|
|
94
|
+
return filteredSessions;
|
|
95
|
+
}
|
|
96
|
+
async delete(sessionId, workingDirectory) {
|
|
97
|
+
const key = this.createKey(sessionId, workingDirectory);
|
|
98
|
+
const exists = await this.sessionLens.has(this.registry, key);
|
|
99
|
+
if (exists) {
|
|
100
|
+
await this.sessionLens.delete(this.registry, key);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
async getLatest(workingDirectory) {
|
|
106
|
+
const sessions = await this.list(workingDirectory);
|
|
107
|
+
if (sessions.length === 0) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
// list() already sorts by updatedAt desc, so first item is latest
|
|
111
|
+
const latestSession = sessions[0];
|
|
112
|
+
return await this.load(latestSession.id, workingDirectory);
|
|
113
|
+
}
|
|
114
|
+
async cleanup(workingDirectory) {
|
|
115
|
+
if (!workingDirectory) {
|
|
116
|
+
// No workingDirectory specified, return 0 as requested
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
const allSessions = await this.sessionLens.list(this.registry);
|
|
120
|
+
const prefix = `${workingDirectory}::`;
|
|
121
|
+
let deletedCount = 0;
|
|
122
|
+
for (const [key] of allSessions) {
|
|
123
|
+
if (key.startsWith(prefix)) {
|
|
124
|
+
await this.sessionLens.delete(this.registry, key);
|
|
125
|
+
deletedCount++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return deletedCount;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.RegistrySessionStore = RegistrySessionStore;
|
|
132
|
+
//# sourceMappingURL=registry-session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-session-store.js","sourceRoot":"","sources":["../../src/storage/registry-session-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@majkapp/majk-chat-sessions",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.81",
|
|
4
4
|
"description": "Session management for Magic Chat conversations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
"author": "Jules White",
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@majkapp/majk-chat-core": "1.0.
|
|
23
|
+
"@majkapp/majk-chat-core": "1.0.81",
|
|
24
|
+
"@majkapp/majk-settings": "1.0.81",
|
|
25
|
+
"@majkapp/majk-storage": "1.0.81",
|
|
24
26
|
"uuid": "^9.0.0"
|
|
25
27
|
},
|
|
26
28
|
"devDependencies": {
|