dev-sessions 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/backends/backend.d.ts +1 -1
- package/dist/backends/claude-backend.d.ts +1 -1
- package/dist/backends/claude-backend.js +37 -22
- package/dist/backends/claude-backend.js.map +1 -1
- package/dist/session-manager.js +1 -1
- package/dist/session-manager.js.map +1 -1
- package/dist/session-store.d.ts +4 -0
- package/dist/session-store.js +99 -38
- package/dist/session-store.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -129,7 +129,7 @@ Sessions get human-readable IDs like `fizz-top`, `riven-jg` (League of Legends c
|
|
|
129
129
|
|
|
130
130
|
### Session Store
|
|
131
131
|
|
|
132
|
-
Persisted at `~/.dev-sessions/sessions.json`.
|
|
132
|
+
Persisted at `~/.dev-sessions/sessions.json`. All mutating operations use file-based locking (`mkdir` as atomic primitive) to serialize concurrent access.
|
|
133
133
|
|
|
134
134
|
---
|
|
135
135
|
|
|
@@ -201,7 +201,7 @@ Spawns Claude inside Docker via a `clauded` binary on the host. See [claude-ting
|
|
|
201
201
|
|
|
202
202
|
- **Codex ignores `--mode`**: Always runs with `approvalPolicy: never` / full access regardless of mode flag.
|
|
203
203
|
- **`docker` mode is Claude-only**: Codex + Docker not implemented.
|
|
204
|
-
- **Session store
|
|
204
|
+
- **Session store uses file locking**: Concurrent operations are serialized via lockfile. A crashed process holding the lock is auto-recovered after 30 seconds.
|
|
205
205
|
- **Gateway port conflict**: Default port 6767 can conflict with Docker. Use `DEV_SESSIONS_GATEWAY_PORT` to override.
|
|
206
206
|
- **No `respond` command**: No structured way to respond to `waiting_for_input` sessions. Only matters for non-native modes.
|
|
207
207
|
- **Claude permission prompts undetectable**: TUI-level prompts aren't written to JSONL — `status` reports `working` instead of `waiting_for_input`. Only affects `native` mode.
|
|
@@ -29,7 +29,7 @@ export interface Backend {
|
|
|
29
29
|
readonly deadSessionPolicy: 'prune' | 'deactivate';
|
|
30
30
|
isChampionIdTaken(championId: string): Promise<boolean>;
|
|
31
31
|
create(options: BackendCreateOptions): Promise<BackendCreateResult>;
|
|
32
|
-
preSendStoreFields(session: StoredSession, sendTime: string): Partial<StoredSession
|
|
32
|
+
preSendStoreFields(session: StoredSession, sendTime: string): Partial<StoredSession> | Promise<Partial<StoredSession>>;
|
|
33
33
|
send(session: StoredSession, message: string): Promise<Partial<StoredSession>>;
|
|
34
34
|
onSendError(session: StoredSession, error: Error): Partial<StoredSession>;
|
|
35
35
|
status(session: StoredSession): Promise<BackendStatusResult>;
|
|
@@ -8,7 +8,7 @@ export declare class ClaudeBackend implements Backend {
|
|
|
8
8
|
constructor(raw: ClaudeTmuxBackend);
|
|
9
9
|
isChampionIdTaken(championId: string): Promise<boolean>;
|
|
10
10
|
create(options: BackendCreateOptions): Promise<BackendCreateResult>;
|
|
11
|
-
preSendStoreFields(
|
|
11
|
+
preSendStoreFields(session: StoredSession, _sendTime: string): Promise<Partial<StoredSession>>;
|
|
12
12
|
send(session: StoredSession, message: string): Promise<Partial<StoredSession>>;
|
|
13
13
|
onSendError(_session: StoredSession, _error: Error): Partial<StoredSession>;
|
|
14
14
|
status(session: StoredSession): Promise<BackendStatusResult>;
|
|
@@ -22,8 +22,17 @@ class ClaudeBackend {
|
|
|
22
22
|
await this.raw.createSession(tmuxSessionName, options.workspacePath, mode, internalId);
|
|
23
23
|
return { internalId, mode };
|
|
24
24
|
}
|
|
25
|
-
preSendStoreFields(
|
|
26
|
-
|
|
25
|
+
async preSendStoreFields(session, _sendTime) {
|
|
26
|
+
// Snapshot the current system entry count so wait() knows the baseline
|
|
27
|
+
// even if it starts after the turn has already completed.
|
|
28
|
+
const transcriptPath = (0, claude_parser_1.getClaudeTranscriptPath)(session.path, session.internalId);
|
|
29
|
+
try {
|
|
30
|
+
const entries = await (0, claude_parser_1.readClaudeTranscript)(transcriptPath);
|
|
31
|
+
return { claudeSystemCountAtSend: (0, claude_parser_1.countSystemEntries)(entries) };
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return { claudeSystemCountAtSend: 0 };
|
|
35
|
+
}
|
|
27
36
|
}
|
|
28
37
|
async send(session, message) {
|
|
29
38
|
const tmuxSessionName = (0, champion_ids_1.toTmuxSessionName)(session.championId);
|
|
@@ -47,16 +56,31 @@ class ClaudeBackend {
|
|
|
47
56
|
}
|
|
48
57
|
async wait(session, timeoutMs, intervalMs) {
|
|
49
58
|
const transcriptPath = (0, claude_parser_1.getClaudeTranscriptPath)(session.path, session.internalId);
|
|
59
|
+
const tmuxSessionName = (0, champion_ids_1.toTmuxSessionName)(session.championId);
|
|
50
60
|
const startTime = Date.now();
|
|
51
61
|
const deadline = startTime + timeoutMs;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const baselineSystemCount =
|
|
55
|
-
const baselineFileHistoryCount = (0, claude_parser_1.countFileHistorySnapshots)(initialEntries);
|
|
62
|
+
// Use the system entry count snapshotted at send time as the baseline.
|
|
63
|
+
// This way wait() detects completion even if the turn finishes before wait starts.
|
|
64
|
+
const baselineSystemCount = session.claudeSystemCountAtSend ?? 0;
|
|
56
65
|
let lastMtimeMs = -1;
|
|
57
66
|
let shouldReadTranscript = false;
|
|
58
|
-
let cachedEntries =
|
|
67
|
+
let cachedEntries = [];
|
|
68
|
+
let pollCount = 0;
|
|
59
69
|
while (Date.now() <= deadline) {
|
|
70
|
+
// Periodically check if the tmux session is still alive (every 10th poll).
|
|
71
|
+
if (pollCount > 0 && pollCount % 10 === 0) {
|
|
72
|
+
const liveness = await this.raw.sessionExists(tmuxSessionName);
|
|
73
|
+
if (liveness === 'dead') {
|
|
74
|
+
return {
|
|
75
|
+
completed: false,
|
|
76
|
+
timedOut: false,
|
|
77
|
+
elapsedMs: Date.now() - startTime,
|
|
78
|
+
storeUpdate: { status: 'inactive', lastTurnError: 'tmux session died during wait' },
|
|
79
|
+
errorToThrow: new Error('tmux session died during wait')
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
pollCount++;
|
|
60
84
|
try {
|
|
61
85
|
const fileStat = await (0, promises_1.stat)(transcriptPath);
|
|
62
86
|
if (fileStat.mtimeMs !== lastMtimeMs) {
|
|
@@ -75,21 +99,12 @@ class ClaudeBackend {
|
|
|
75
99
|
cachedEntries = await (0, claude_parser_1.readClaudeTranscript)(transcriptPath);
|
|
76
100
|
shouldReadTranscript = false;
|
|
77
101
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
completed: true,
|
|
85
|
-
timedOut: false,
|
|
86
|
-
elapsedMs: Date.now() - startTime,
|
|
87
|
-
storeUpdate: { lastUsed: new Date().toISOString() }
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
// For turns that end without a system entry (e.g. long tool runs), Claude writes a
|
|
91
|
-
// file-history-snapshot at turn completion. Use that as the fallback signal.
|
|
92
|
-
if (hasNewFileHistorySnapshot && hasNewAssistant) {
|
|
102
|
+
// A system entry is the definitive turn-completion signal — Claude writes it only
|
|
103
|
+
// when the agent fully finishes (never mid-turn during tool calls).
|
|
104
|
+
// Compare against the baseline from send time so we detect completion even if
|
|
105
|
+
// the turn finishes before wait starts.
|
|
106
|
+
const currentSystemCount = (0, claude_parser_1.countSystemEntries)(cachedEntries);
|
|
107
|
+
if (currentSystemCount > baselineSystemCount) {
|
|
93
108
|
return {
|
|
94
109
|
completed: true,
|
|
95
110
|
timedOut: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-backend.js","sourceRoot":"","sources":["../../src/backends/claude-backend.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,+CAAwC;AACxC,kDAAoD;AACpD,+
|
|
1
|
+
{"version":3,"file":"claude-backend.js","sourceRoot":"","sources":["../../src/backends/claude-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/session-manager.js
CHANGED
|
@@ -67,7 +67,7 @@ class SessionManager {
|
|
|
67
67
|
const session = await this.requireSession(championId);
|
|
68
68
|
const backend = this.getBackend(session.cli);
|
|
69
69
|
const sendTime = new Date().toISOString();
|
|
70
|
-
const preSendFields = backend.preSendStoreFields(session, sendTime);
|
|
70
|
+
const preSendFields = await backend.preSendStoreFields(session, sendTime);
|
|
71
71
|
if (Object.keys(preSendFields).length > 0) {
|
|
72
72
|
await this.store.updateSession(championId, preSendFields);
|
|
73
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":";;;;;;AA+PA,wEAEC;AAED,kEAcC;AAjRD,0DAA6B;AAC7B,iDAAoD;AAEpD,8DAA0D;AAC1D,wDAA2D;AAC3D,4DAAwD;AACxD,gEAAmE;AACnE,6CAAgF;AAChF,mDAA0E;AAgB1E,MAAa,cAAc;IAIN;IAHF,QAAQ,CAA2B;IAEpD,YACmB,KAAmB,EACpC,aAAsB,EACtB,YAAqB;QAFJ,UAAK,GAAL,KAAK,CAAc;QAIpC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC;YACtB,CAAC,QAAQ,EAAE,aAAa,CAAC;YACzB,CAAC,OAAO,EAAE,YAAY,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,UAAU,CAAC,GAAe;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAClC,UAAU;YACV,aAAa;YACb,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAkB;YAC7B,UAAU;YACV,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;YACnD,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;SACpB,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE1C,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/session-store.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StoredSession } from './types';
|
|
2
2
|
export declare class SessionStore {
|
|
3
3
|
private readonly storePath;
|
|
4
|
+
private readonly lockPath;
|
|
4
5
|
constructor(storePath?: string);
|
|
5
6
|
get filePath(): string;
|
|
6
7
|
listSessions(): Promise<StoredSession[]>;
|
|
@@ -9,6 +10,9 @@ export declare class SessionStore {
|
|
|
9
10
|
updateSession(championId: string, partial: Partial<Omit<StoredSession, 'championId'>>): Promise<StoredSession | undefined>;
|
|
10
11
|
deleteSession(championId: string): Promise<boolean>;
|
|
11
12
|
pruneSessions(championIds: string[]): Promise<number>;
|
|
13
|
+
private withLock;
|
|
14
|
+
private acquireLock;
|
|
15
|
+
private releaseLock;
|
|
12
16
|
private readStore;
|
|
13
17
|
private writeStore;
|
|
14
18
|
}
|
package/dist/session-store.js
CHANGED
|
@@ -9,6 +9,9 @@ const promises_1 = require("node:fs/promises");
|
|
|
9
9
|
const node_os_1 = __importDefault(require("node:os"));
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
const CURRENT_VERSION = 1;
|
|
12
|
+
const LOCK_TIMEOUT_MS = 10_000;
|
|
13
|
+
const LOCK_RETRY_INTERVAL_MS = 20;
|
|
14
|
+
const LOCK_STALE_MS = 30_000;
|
|
12
15
|
function getDefaultStorePath() {
|
|
13
16
|
return node_path_1.default.join(node_os_1.default.homedir(), '.dev-sessions', 'sessions.json');
|
|
14
17
|
}
|
|
@@ -41,10 +44,15 @@ function isStoredSession(value) {
|
|
|
41
44
|
typeof candidate.createdAt === 'string' &&
|
|
42
45
|
typeof candidate.lastUsed === 'string');
|
|
43
46
|
}
|
|
47
|
+
function sleep(ms) {
|
|
48
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
49
|
+
}
|
|
44
50
|
class SessionStore {
|
|
45
51
|
storePath;
|
|
52
|
+
lockPath;
|
|
46
53
|
constructor(storePath = getDefaultStorePath()) {
|
|
47
54
|
this.storePath = storePath;
|
|
55
|
+
this.lockPath = `${storePath}.lock`;
|
|
48
56
|
}
|
|
49
57
|
get filePath() {
|
|
50
58
|
return this.storePath;
|
|
@@ -58,54 +66,107 @@ class SessionStore {
|
|
|
58
66
|
return store.sessions.find((session) => session.championId === championId);
|
|
59
67
|
}
|
|
60
68
|
async upsertSession(session) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
await this.withLock(async () => {
|
|
70
|
+
const store = await this.readStore();
|
|
71
|
+
const index = store.sessions.findIndex((candidate) => candidate.championId === session.championId);
|
|
72
|
+
if (index >= 0) {
|
|
73
|
+
store.sessions[index] = session;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
store.sessions.push(session);
|
|
77
|
+
}
|
|
78
|
+
await this.writeStore(store);
|
|
79
|
+
});
|
|
70
80
|
}
|
|
71
81
|
async updateSession(championId, partial) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
return this.withLock(async () => {
|
|
83
|
+
const store = await this.readStore();
|
|
84
|
+
const index = store.sessions.findIndex((candidate) => candidate.championId === championId);
|
|
85
|
+
if (index < 0) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const updatedSession = {
|
|
89
|
+
...store.sessions[index],
|
|
90
|
+
...partial,
|
|
91
|
+
championId: store.sessions[index].championId
|
|
92
|
+
};
|
|
93
|
+
store.sessions[index] = updatedSession;
|
|
94
|
+
await this.writeStore(store);
|
|
95
|
+
return updatedSession;
|
|
96
|
+
});
|
|
85
97
|
}
|
|
86
98
|
async deleteSession(championId) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
99
|
+
return this.withLock(async () => {
|
|
100
|
+
const store = await this.readStore();
|
|
101
|
+
const initialLength = store.sessions.length;
|
|
102
|
+
store.sessions = store.sessions.filter((candidate) => candidate.championId !== championId);
|
|
103
|
+
if (store.sessions.length === initialLength) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
await this.writeStore(store);
|
|
107
|
+
return true;
|
|
108
|
+
});
|
|
95
109
|
}
|
|
96
110
|
async pruneSessions(championIds) {
|
|
97
111
|
if (championIds.length === 0) {
|
|
98
112
|
return 0;
|
|
99
113
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
114
|
+
return this.withLock(async () => {
|
|
115
|
+
const ids = new Set(championIds);
|
|
116
|
+
const store = await this.readStore();
|
|
117
|
+
const initialLength = store.sessions.length;
|
|
118
|
+
store.sessions = store.sessions.filter((candidate) => !ids.has(candidate.championId));
|
|
119
|
+
const removed = initialLength - store.sessions.length;
|
|
120
|
+
if (removed > 0) {
|
|
121
|
+
await this.writeStore(store);
|
|
122
|
+
}
|
|
123
|
+
return removed;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
async withLock(fn) {
|
|
127
|
+
await this.acquireLock();
|
|
128
|
+
try {
|
|
129
|
+
return await fn();
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
await this.releaseLock();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async acquireLock() {
|
|
136
|
+
await (0, promises_1.mkdir)(node_path_1.default.dirname(this.storePath), { recursive: true });
|
|
137
|
+
const deadline = Date.now() + LOCK_TIMEOUT_MS;
|
|
138
|
+
while (true) {
|
|
139
|
+
try {
|
|
140
|
+
await (0, promises_1.mkdir)(this.lockPath);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
if (error.code !== 'EEXIST') {
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Check for stale lock (e.g. process crashed while holding it)
|
|
149
|
+
try {
|
|
150
|
+
const lockStat = await (0, promises_1.stat)(this.lockPath);
|
|
151
|
+
if (Date.now() - lockStat.mtimeMs > LOCK_STALE_MS) {
|
|
152
|
+
await (0, promises_1.rm)(this.lockPath, { recursive: true, force: true });
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Lock dir vanished between our check — retry acquire
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (Date.now() >= deadline) {
|
|
161
|
+
throw new Error(`Timed out waiting for session store lock at ${this.lockPath}`);
|
|
162
|
+
}
|
|
163
|
+
// Jittered retry to reduce contention
|
|
164
|
+
const jitter = Math.random() * LOCK_RETRY_INTERVAL_MS;
|
|
165
|
+
await sleep(LOCK_RETRY_INTERVAL_MS + jitter);
|
|
107
166
|
}
|
|
108
|
-
|
|
167
|
+
}
|
|
168
|
+
async releaseLock() {
|
|
169
|
+
await (0, promises_1.rm)(this.lockPath, { recursive: true, force: true });
|
|
109
170
|
}
|
|
110
171
|
async readStore() {
|
|
111
172
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED