@strands-agents/sdk 1.9.0 → 1.11.0
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 +1 -1
- package/dist/src/agent/agent.d.ts +22 -42
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +73 -426
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +2 -2
- package/dist/src/errors.d.ts +15 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +18 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/events.d.ts +5 -4
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +3 -3
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.d.ts.map +1 -1
- package/dist/src/index.node.js +2 -6
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/middleware/interrupt.d.ts +18 -0
- package/dist/src/middleware/interrupt.d.ts.map +1 -0
- package/dist/src/middleware/interrupt.js +33 -0
- package/dist/src/middleware/interrupt.js.map +1 -0
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +23 -1
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/openai/errors.d.ts.map +1 -1
- package/dist/src/models/openai/errors.js +1 -0
- package/dist/src/models/openai/errors.js.map +1 -1
- package/dist/src/models/openai/mantle.d.ts +8 -3
- package/dist/src/models/openai/mantle.d.ts.map +1 -1
- package/dist/src/models/openai/mantle.js +41 -6
- package/dist/src/models/openai/mantle.js.map +1 -1
- package/dist/src/models/openai/model.d.ts.map +1 -1
- package/dist/src/models/openai/model.js +4 -3
- package/dist/src/models/openai/model.js.map +1 -1
- package/dist/src/models/openai/responses-adapter.d.ts.map +1 -1
- package/dist/src/models/openai/responses-adapter.js +41 -9
- package/dist/src/models/openai/responses-adapter.js.map +1 -1
- package/dist/src/models/vercel.d.ts.map +1 -1
- package/dist/src/models/vercel.js +28 -1
- package/dist/src/models/vercel.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts.map +1 -1
- package/dist/src/multiagent/graph.js +1 -1
- package/dist/src/multiagent/graph.js.map +1 -1
- package/dist/src/{multiagent/queue.d.ts → queue.d.ts} +12 -27
- package/dist/src/queue.d.ts.map +1 -0
- package/dist/src/{multiagent/queue.js → queue.js} +4 -2
- package/dist/src/queue.js.map +1 -0
- package/dist/src/register-node-defaults.d.ts +3 -0
- package/dist/src/register-node-defaults.d.ts.map +1 -0
- package/dist/src/register-node-defaults.js +10 -0
- package/dist/src/register-node-defaults.js.map +1 -0
- package/dist/src/sandbox/register-node-defaults.d.ts +3 -0
- package/dist/src/sandbox/register-node-defaults.d.ts.map +1 -0
- package/dist/src/sandbox/register-node-defaults.js +8 -0
- package/dist/src/sandbox/register-node-defaults.js.map +1 -0
- package/dist/src/session/file-storage.d.ts +3 -0
- package/dist/src/session/file-storage.d.ts.map +1 -1
- package/dist/src/session/file-storage.js +3 -0
- package/dist/src/session/file-storage.js.map +1 -1
- package/dist/src/session/s3-storage.d.ts +3 -0
- package/dist/src/session/s3-storage.d.ts.map +1 -1
- package/dist/src/session/s3-storage.js +3 -0
- package/dist/src/session/s3-storage.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +11 -2
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +19 -8
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session/snapshot-storage-adapter.d.ts +93 -0
- package/dist/src/session/snapshot-storage-adapter.d.ts.map +1 -0
- package/dist/src/session/snapshot-storage-adapter.js +157 -0
- package/dist/src/session/snapshot-storage-adapter.js.map +1 -0
- package/dist/src/session/storage.d.ts +3 -6
- package/dist/src/session/storage.d.ts.map +1 -1
- package/dist/src/storage/in-memory-storage.d.ts +64 -0
- package/dist/src/storage/in-memory-storage.d.ts.map +1 -0
- package/dist/src/storage/in-memory-storage.js +85 -0
- package/dist/src/storage/in-memory-storage.js.map +1 -0
- package/dist/src/storage/index.d.ts +20 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +18 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/local-file-storage.d.ts +81 -0
- package/dist/src/storage/local-file-storage.d.ts.map +1 -0
- package/dist/src/storage/local-file-storage.js +244 -0
- package/dist/src/storage/local-file-storage.js.map +1 -0
- package/dist/src/storage/s3-storage.d.ts +73 -0
- package/dist/src/storage/s3-storage.d.ts.map +1 -0
- package/dist/src/storage/s3-storage.js +146 -0
- package/dist/src/storage/s3-storage.js.map +1 -0
- package/dist/src/storage/storage.d.ts +102 -0
- package/dist/src/storage/storage.d.ts.map +1 -0
- package/dist/src/storage/storage.js +68 -0
- package/dist/src/storage/storage.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +18 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +31 -11
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/tools/executors/concurrent.d.ts +32 -0
- package/dist/src/tools/executors/concurrent.d.ts.map +1 -0
- package/dist/src/tools/executors/concurrent.js +128 -0
- package/dist/src/tools/executors/concurrent.js.map +1 -0
- package/dist/src/tools/executors/executor.d.ts +61 -0
- package/dist/src/tools/executors/executor.d.ts.map +1 -0
- package/dist/src/tools/executors/executor.js +190 -0
- package/dist/src/tools/executors/executor.js.map +1 -0
- package/dist/src/tools/executors/sequential.d.ts +30 -0
- package/dist/src/tools/executors/sequential.d.ts.map +1 -0
- package/dist/src/tools/executors/sequential.js +67 -0
- package/dist/src/tools/executors/sequential.js.map +1 -0
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/agent.d.ts +5 -4
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/vended-memory-stores/test-memory-store/store.d.ts +32 -24
- package/dist/src/vended-memory-stores/test-memory-store/store.d.ts.map +1 -1
- package/dist/src/vended-memory-stores/test-memory-store/store.js +84 -91
- package/dist/src/vended-memory-stores/test-memory-store/store.js.map +1 -1
- package/dist/src/vended-plugins/context-offloader/plugin.d.ts +37 -5
- package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
- package/dist/src/vended-plugins/context-offloader/plugin.js +116 -17
- package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
- package/dist/src/vended-plugins/context-offloader/storage.d.ts +23 -9
- package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
- package/dist/src/vended-plugins/context-offloader/storage.js +21 -6
- package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
- package/dist/src/vended-tools/index.d.ts +3 -1
- package/dist/src/vended-tools/index.d.ts.map +1 -1
- package/dist/src/vended-tools/index.js +3 -1
- package/dist/src/vended-tools/index.js.map +1 -1
- package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
- package/dist/src/vended-tools/sleep/index.d.ts +9 -0
- package/dist/src/vended-tools/sleep/index.d.ts.map +1 -0
- package/dist/src/vended-tools/sleep/index.js +7 -0
- package/dist/src/vended-tools/sleep/index.js.map +1 -0
- package/dist/src/vended-tools/sleep/make-sleep.d.ts +48 -0
- package/dist/src/vended-tools/sleep/make-sleep.d.ts.map +1 -0
- package/dist/src/vended-tools/sleep/make-sleep.js +81 -0
- package/dist/src/vended-tools/sleep/make-sleep.js.map +1 -0
- package/dist/src/vended-tools/sleep/sleep.d.ts +19 -0
- package/dist/src/vended-tools/sleep/sleep.d.ts.map +1 -0
- package/dist/src/vended-tools/sleep/sleep.js +20 -0
- package/dist/src/vended-tools/sleep/sleep.js.map +1 -0
- package/dist/src/vended-tools/sleep/types.d.ts +31 -0
- package/dist/src/vended-tools/sleep/types.d.ts.map +1 -0
- package/dist/src/vended-tools/sleep/types.js +22 -0
- package/dist/src/vended-tools/sleep/types.js.map +1 -0
- package/dist/src/vended-tools/stop/index.d.ts +8 -0
- package/dist/src/vended-tools/stop/index.d.ts.map +1 -0
- package/dist/src/vended-tools/stop/index.js +6 -0
- package/dist/src/vended-tools/stop/index.js.map +1 -0
- package/dist/src/vended-tools/stop/stop.d.ts +47 -0
- package/dist/src/vended-tools/stop/stop.d.ts.map +1 -0
- package/dist/src/vended-tools/stop/stop.js +85 -0
- package/dist/src/vended-tools/stop/stop.js.map +1 -0
- package/dist/src/vended-tools/stop/types.d.ts +54 -0
- package/dist/src/vended-tools/stop/types.d.ts.map +1 -0
- package/dist/src/vended-tools/stop/types.js +58 -0
- package/dist/src/vended-tools/stop/types.js.map +1 -0
- package/package.json +13 -2
- package/dist/src/conversation-manager/index.d.ts +0 -10
- package/dist/src/conversation-manager/index.d.ts.map +0 -1
- package/dist/src/conversation-manager/index.js +0 -10
- package/dist/src/conversation-manager/index.js.map +0 -1
- package/dist/src/multiagent/queue.d.ts.map +0 -1
- package/dist/src/multiagent/queue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-storage.js","sourceRoot":"","sources":["../../../src/session/s3-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEpE,MAAM,QAAQ,GAAG,eAAe,CAAA;AAChC,MAAM,eAAe,GAAG,sBAAsB,CAAA;AAC9C,MAAM,iBAAiB,GAAG,oBAAoB,CAAA;AAC9C,MAAM,cAAc,GAAG,KAAK,CAAA;AAC5B,MAAM,cAAc,GAAG,0BAA0B,CAAA;AACjD,MAAM,YAAY,GAAG,IAAI,CAAA;AAgBzB
|
|
1
|
+
{"version":3,"file":"s3-storage.js","sourceRoot":"","sources":["../../../src/session/s3-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SnapshotStorage } from './storage.js';
|
|
2
|
+
import type { Storage } from '../storage/storage.js';
|
|
2
3
|
import type { SnapshotTriggerCallback } from './types.js';
|
|
3
4
|
import type { Plugin } from '../plugins/plugin.js';
|
|
4
5
|
import type { LocalAgent } from '../types/agent.js';
|
|
@@ -37,8 +38,14 @@ export type SaveLatestStrategy = 'message' | 'invocation' | 'trigger';
|
|
|
37
38
|
*/
|
|
38
39
|
export type MultiAgentSaveLatestStrategy = 'node' | 'invocation';
|
|
39
40
|
export interface SessionManagerConfig {
|
|
40
|
-
/**
|
|
41
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Storage backend for snapshot persistence.
|
|
43
|
+
*
|
|
44
|
+
* Accepts either:
|
|
45
|
+
* - A unified {@link Storage} instance (recommended) — wrapped internally with {@link SnapshotStorageAdapter}
|
|
46
|
+
* - A legacy `{ snapshot: SnapshotStorage }` object
|
|
47
|
+
*/
|
|
48
|
+
storage: Storage | {
|
|
42
49
|
snapshot: SnapshotStorage;
|
|
43
50
|
};
|
|
44
51
|
/** Unique session identifier. Defaults to `'default-session'`. */
|
|
@@ -84,6 +91,8 @@ export declare class SessionManager implements Plugin, MultiAgentPlugin {
|
|
|
84
91
|
*/
|
|
85
92
|
get name(): string;
|
|
86
93
|
constructor(config: SessionManagerConfig);
|
|
94
|
+
private get _snapshotStorage();
|
|
95
|
+
private _resolveSnapshotStorage;
|
|
87
96
|
/** Initializes the plugin by registering lifecycle hook callbacks. */
|
|
88
97
|
initAgent(agent: LocalAgent): void;
|
|
89
98
|
private _location;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/session/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { NAMESPACED, namespace } from '../storage/storage.js';
|
|
2
|
+
import { SnapshotStorageAdapter } from './snapshot-storage-adapter.js';
|
|
1
3
|
import { validateIdentifier } from './validation.js';
|
|
2
4
|
import { AfterInvocationEvent, AfterModelCallEvent, InitializedEvent, MessageAddedEvent } from '../hooks/events.js';
|
|
3
5
|
import { v7 as uuidV7 } from 'uuid';
|
|
@@ -38,11 +40,20 @@ export class SessionManager {
|
|
|
38
40
|
}
|
|
39
41
|
constructor(config) {
|
|
40
42
|
this._sessionId = validateIdentifier(config.sessionId ?? 'default-session');
|
|
41
|
-
this._storage = { snapshot: config.storage
|
|
43
|
+
this._storage = { snapshot: this._resolveSnapshotStorage(config.storage) };
|
|
42
44
|
this._saveLatestOn = config.saveLatestOn ?? 'invocation';
|
|
43
45
|
this._multiAgentSaveLatestOn = config.multiAgentSaveLatestOn ?? 'node';
|
|
44
46
|
this._snapshotTrigger = config.snapshotTrigger;
|
|
45
47
|
}
|
|
48
|
+
get _snapshotStorage() {
|
|
49
|
+
return this._storage.snapshot;
|
|
50
|
+
}
|
|
51
|
+
_resolveSnapshotStorage(storage) {
|
|
52
|
+
if ('snapshot' in storage)
|
|
53
|
+
return storage.snapshot;
|
|
54
|
+
const scoped = NAMESPACED in storage ? storage : namespace(storage, 'session');
|
|
55
|
+
return new SnapshotStorageAdapter(scoped);
|
|
56
|
+
}
|
|
46
57
|
/** Initializes the plugin by registering lifecycle hook callbacks. */
|
|
47
58
|
initAgent(agent) {
|
|
48
59
|
agent.addHook(InitializedEvent, async (event) => {
|
|
@@ -77,15 +88,15 @@ export class SessionManager {
|
|
|
77
88
|
const location = isAgent
|
|
78
89
|
? this._location(params.target)
|
|
79
90
|
: this._multiAgentLocation(params.target);
|
|
80
|
-
await this.
|
|
91
|
+
await this._snapshotStorage.saveSnapshot({ location, snapshotId, isLatest: params.isLatest, snapshot });
|
|
81
92
|
}
|
|
82
93
|
/** Deletes all snapshots and manifests for this session from storage. */
|
|
83
94
|
async deleteSession() {
|
|
84
|
-
await this.
|
|
95
|
+
await this._snapshotStorage.deleteSession({ sessionId: this._sessionId });
|
|
85
96
|
}
|
|
86
97
|
/** Lists all available immutable snapshot IDs for the given agent target. */
|
|
87
98
|
async listSnapshotIds(params) {
|
|
88
|
-
return this.
|
|
99
|
+
return this._snapshotStorage.listSnapshotIds({
|
|
89
100
|
location: this._location(params.target),
|
|
90
101
|
...(params.limit !== undefined && { limit: params.limit }),
|
|
91
102
|
...(params.startAfter !== undefined && { startAfter: params.startAfter }),
|
|
@@ -96,7 +107,7 @@ export class SessionManager {
|
|
|
96
107
|
const location = isAgent
|
|
97
108
|
? this._location(params.target)
|
|
98
109
|
: this._multiAgentLocation(params.target);
|
|
99
|
-
const snapshot = await this.
|
|
110
|
+
const snapshot = await this._snapshotStorage.loadSnapshot({
|
|
100
111
|
location,
|
|
101
112
|
...(params.snapshotId !== undefined && { snapshotId: params.snapshotId }),
|
|
102
113
|
});
|
|
@@ -155,8 +166,8 @@ export class SessionManager {
|
|
|
155
166
|
const snapshot = agent.takeSnapshot({ preset: 'session' });
|
|
156
167
|
const snapshotId = uuidV7();
|
|
157
168
|
await Promise.all([
|
|
158
|
-
this.
|
|
159
|
-
this.
|
|
169
|
+
this._snapshotStorage.saveSnapshot({ location: this._location(agent), snapshotId, isLatest: false, snapshot }),
|
|
170
|
+
this._snapshotStorage.saveSnapshot({
|
|
160
171
|
location: this._location(agent),
|
|
161
172
|
snapshotId: 'latest',
|
|
162
173
|
isLatest: true,
|
|
@@ -190,7 +201,7 @@ export class SessionManager {
|
|
|
190
201
|
return;
|
|
191
202
|
this._multiAgentRestoredIds.add(event.orchestrator.id);
|
|
192
203
|
const location = this._multiAgentLocation(event.orchestrator);
|
|
193
|
-
const snapshot = await this.
|
|
204
|
+
const snapshot = await this._snapshotStorage.loadSnapshot({ location });
|
|
194
205
|
if (!snapshot)
|
|
195
206
|
return;
|
|
196
207
|
loadMultiAgentSnapshot(event.orchestrator, snapshot, event.state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/session/session-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/session/session-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAIpD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EACL,YAAY,IAAI,sBAAsB,EACtC,YAAY,IAAI,sBAAsB,GACvC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,yBAAyB,CAAA;AA2DhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,cAAc;IACR,UAAU,CAAQ;IAClB,QAAQ,CAA+B;IACvC,aAAa,CAAoB;IACjC,gBAAgB,CAAsC;IACtD,uBAAuB,CAA8B;IAC9D,sBAAsB,GAAG,IAAI,GAAG,EAAU,CAAA;IAElD;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,yBAAyB,CAAA;IAClC,CAAC;IAED,YAAY,MAA4B;QACtC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAA;QAC3E,IAAI,CAAC,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;QAC1E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAA;QACxD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAA;QACtE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAA;IAChD,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;IAC/B,CAAC;IAEO,uBAAuB,CAAC,OAAgD;QAC9E,IAAI,UAAU,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAA;QAClD,MAAM,MAAM,GAAG,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC9E,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,sEAAsE;IAC/D,SAAS,CAAC,KAAiB;QAChC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9C,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC/C,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YACnC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,qEAAqE;QACrE,oFAAoF;QACpF,0BAA0B;QAC1B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACjD,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAClD,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,SAAS,CAAC,KAAiB;QACjC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAA;IAC1E,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,MAIlB;QACC,MAAM,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,MAAM,CAAA;QAC3C,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAE,MAAM,CAAC,MAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACnE,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QACxD,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAoB,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAoB,CAAC,CAAA;QACzD,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IACzG,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,eAAe,CAAC,MAAmE;QACvF,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAC3C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC1E,CAAC,CAAA;IACJ,CAAC;IASD,KAAK,CAAC,eAAe,CAAC,MAIrB;QACC,MAAM,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,MAAM,CAAA;QAC3C,MAAM,QAAQ,GAAG,OAAO;YACtB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAoB,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAoB,CAAC,CAAA;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACxD,QAAQ;YACR,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC1E,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAE3B,IAAI,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC,MAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QACvD,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,MAAM,CAAC,MAAuB,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAChF,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sDAAsD;IAC9C,KAAK,CAAC,mBAAmB,CAAC,KAAuB;QACvD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAEpE,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,aAAa,KAAK,CAAC,KAAK,CAAC,EAAE,kBAAkB,IAAI,CAAC,UAAU,0EAA0E,CACvI,CAAA;QACH,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,wEAAwE;QACxE,kEAAkE;QAClE,MAAM,aAAa,GAAI,KAAK,CAAC,KAA4C,CAAC,KAAK,EAAE,QAAQ,CAAA;QACzF,IAAI,QAAQ,IAAI,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,KAAK,CACV,aAAa,KAAK,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,qDAAqD,CACjI,CAAA;YACD,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,+EAA+E;IACvE,KAAK,CAAC,uBAAuB,CAAC,KAA2B;QAC/D,IAAI,IAAI,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAwB;QACpD,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAClE,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,KAA0B;QACxD,qCAAqC;QACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAED,yFAAyF;IACjF,KAAK,CAAC,uBAAuB,CAAC,KAAiB;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,MAAM,EAAE,CAAA;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC9G,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;gBACjC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC/B,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,IAAI;gBACd,QAAQ;aACT,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;IAED,8EAA8E;IAC9E,cAAc;IACd,8EAA8E;IAE9E,sFAAsF;IAC/E,cAAc,CAAC,YAAwB;QAC5C,YAAY,CAAC,OAAO,CAAC,+BAA+B,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpE,MAAM,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,uBAAuB,KAAK,MAAM,EAAE,CAAC;YAC5C,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,8BAA8B,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACnE,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,mBAAmB,CAAC,YAAwB;QAClD,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,CAAA;IACtF,CAAC;IAED,wHAAwH;IAChH,KAAK,CAAC,6BAA6B,CAAC,KAAsC;QAChF,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAAE,OAAM;QAClE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,sBAAsB,CAAC,KAAK,CAAC,YAA6B,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,oEAAoE;IAC5D,KAAK,CAAC,gBAAgB,CAAC,KAAyB;QACtD,MAAM,IAAI,CAAC,YAAY,CAAC;YACtB,MAAM,EAAE,KAAK,CAAC,YAA6B;YAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IAC7D,KAAK,CAAC,4BAA4B,CAAC,KAAqC;QAC9E,MAAM,IAAI,CAAC,YAAY,CAAC;YACtB,MAAM,EAAE,KAAK,CAAC,YAA6B;YAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter that implements {@link SnapshotStorage} on top of the unified {@link Storage} interface.
|
|
3
|
+
*
|
|
4
|
+
* Allows the session manager to accept a unified Storage instance in addition to
|
|
5
|
+
* a legacy SnapshotStorage, bridging the two interfaces without breaking changes.
|
|
6
|
+
*/
|
|
7
|
+
import type { Storage } from '../storage/storage.js';
|
|
8
|
+
import type { SnapshotStorage, SnapshotLocation } from './storage.js';
|
|
9
|
+
import type { Snapshot, SnapshotManifest } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Adapts a unified {@link Storage} instance into the {@link SnapshotStorage} interface
|
|
12
|
+
* expected by the session manager.
|
|
13
|
+
*
|
|
14
|
+
* Keys are written directly into the provided storage:
|
|
15
|
+
* `<sessionId>/scopes/<scope>/<scopeId>/snapshots/...`
|
|
16
|
+
*
|
|
17
|
+
* Callers control namespacing by passing a scoped storage — e.g.
|
|
18
|
+
* `storage.namespace('session')` produces keys like
|
|
19
|
+
* `session/<sessionId>/scopes/...`.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
* @param storage - The unified Storage backend to delegate to
|
|
23
|
+
*/
|
|
24
|
+
export declare class SnapshotStorageAdapter implements SnapshotStorage {
|
|
25
|
+
private readonly _storage;
|
|
26
|
+
constructor(storage: Storage);
|
|
27
|
+
/**
|
|
28
|
+
* Persists a snapshot to storage.
|
|
29
|
+
*
|
|
30
|
+
* @param params - Snapshot location, ID, latest flag, and snapshot data
|
|
31
|
+
*/
|
|
32
|
+
saveSnapshot(params: {
|
|
33
|
+
location: SnapshotLocation;
|
|
34
|
+
snapshotId: string;
|
|
35
|
+
isLatest: boolean;
|
|
36
|
+
snapshot: Snapshot;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Loads a snapshot from storage.
|
|
40
|
+
*
|
|
41
|
+
* @param params - Snapshot location and optional snapshot ID
|
|
42
|
+
* @returns The snapshot, or null if not found
|
|
43
|
+
*/
|
|
44
|
+
loadSnapshot(params: {
|
|
45
|
+
location: SnapshotLocation;
|
|
46
|
+
snapshotId?: string;
|
|
47
|
+
}): Promise<Snapshot | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Lists immutable snapshot IDs for a scope, sorted chronologically.
|
|
50
|
+
*
|
|
51
|
+
* @param params - Location, optional limit and cursor
|
|
52
|
+
* @returns Array of snapshot IDs
|
|
53
|
+
*/
|
|
54
|
+
listSnapshotIds(params: {
|
|
55
|
+
location: SnapshotLocation;
|
|
56
|
+
limit?: number;
|
|
57
|
+
startAfter?: string;
|
|
58
|
+
}): Promise<string[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Deletes all snapshots and data belonging to the session ID.
|
|
61
|
+
*
|
|
62
|
+
* @param params - Session ID to delete
|
|
63
|
+
*/
|
|
64
|
+
deleteSession(params: {
|
|
65
|
+
sessionId: string;
|
|
66
|
+
}): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Loads the snapshot manifest for a scope.
|
|
69
|
+
*
|
|
70
|
+
* @param params - Snapshot location
|
|
71
|
+
* @returns The manifest, or a default if none exists
|
|
72
|
+
*/
|
|
73
|
+
loadManifest(params: {
|
|
74
|
+
location: SnapshotLocation;
|
|
75
|
+
}): Promise<SnapshotManifest>;
|
|
76
|
+
/**
|
|
77
|
+
* Persists the snapshot manifest for a scope.
|
|
78
|
+
*
|
|
79
|
+
* @param params - Location and manifest data
|
|
80
|
+
*/
|
|
81
|
+
saveManifest(params: {
|
|
82
|
+
location: SnapshotLocation;
|
|
83
|
+
manifest: SnapshotManifest;
|
|
84
|
+
}): Promise<void>;
|
|
85
|
+
private _scopePrefix;
|
|
86
|
+
private _latestKey;
|
|
87
|
+
private _historyKey;
|
|
88
|
+
private _historyPrefix;
|
|
89
|
+
private _manifestKey;
|
|
90
|
+
private _writeJSON;
|
|
91
|
+
private _readJSON;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=snapshot-storage-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/session/snapshot-storage-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAQ5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,EAAE,OAAO;IAI5B;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE;QACzB,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,QAAQ,CAAA;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjB;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQzG;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBrB;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWrF;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrG,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;YAIN,UAAU;YASV,SAAS;CAaxB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter that implements {@link SnapshotStorage} on top of the unified {@link Storage} interface.
|
|
3
|
+
*
|
|
4
|
+
* Allows the session manager to accept a unified Storage instance in addition to
|
|
5
|
+
* a legacy SnapshotStorage, bridging the two interfaces without breaking changes.
|
|
6
|
+
*/
|
|
7
|
+
import { SessionError } from '../errors.js';
|
|
8
|
+
import { validateIdentifier, validateUuidV7 } from './validation.js';
|
|
9
|
+
const SCHEMA_VERSION = '1.0';
|
|
10
|
+
const SNAPSHOT_REGEX = /snapshot_([\w-]+)\.json$/;
|
|
11
|
+
/**
|
|
12
|
+
* Adapts a unified {@link Storage} instance into the {@link SnapshotStorage} interface
|
|
13
|
+
* expected by the session manager.
|
|
14
|
+
*
|
|
15
|
+
* Keys are written directly into the provided storage:
|
|
16
|
+
* `<sessionId>/scopes/<scope>/<scopeId>/snapshots/...`
|
|
17
|
+
*
|
|
18
|
+
* Callers control namespacing by passing a scoped storage — e.g.
|
|
19
|
+
* `storage.namespace('session')` produces keys like
|
|
20
|
+
* `session/<sessionId>/scopes/...`.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
* @param storage - The unified Storage backend to delegate to
|
|
24
|
+
*/
|
|
25
|
+
export class SnapshotStorageAdapter {
|
|
26
|
+
_storage;
|
|
27
|
+
constructor(storage) {
|
|
28
|
+
this._storage = storage;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Persists a snapshot to storage.
|
|
32
|
+
*
|
|
33
|
+
* @param params - Snapshot location, ID, latest flag, and snapshot data
|
|
34
|
+
*/
|
|
35
|
+
async saveSnapshot(params) {
|
|
36
|
+
const key = params.isLatest
|
|
37
|
+
? this._latestKey(params.location)
|
|
38
|
+
: this._historyKey(params.location, params.snapshotId);
|
|
39
|
+
await this._writeJSON(key, params.snapshot);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Loads a snapshot from storage.
|
|
43
|
+
*
|
|
44
|
+
* @param params - Snapshot location and optional snapshot ID
|
|
45
|
+
* @returns The snapshot, or null if not found
|
|
46
|
+
*/
|
|
47
|
+
async loadSnapshot(params) {
|
|
48
|
+
const key = params.snapshotId === undefined
|
|
49
|
+
? this._latestKey(params.location)
|
|
50
|
+
: this._historyKey(params.location, params.snapshotId);
|
|
51
|
+
return this._readJSON(key);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Lists immutable snapshot IDs for a scope, sorted chronologically.
|
|
55
|
+
*
|
|
56
|
+
* @param params - Location, optional limit and cursor
|
|
57
|
+
* @returns Array of snapshot IDs
|
|
58
|
+
*/
|
|
59
|
+
async listSnapshotIds(params) {
|
|
60
|
+
if (params.limit !== undefined && params.limit <= 0)
|
|
61
|
+
return [];
|
|
62
|
+
if (params.startAfter)
|
|
63
|
+
validateUuidV7(params.startAfter);
|
|
64
|
+
const prefix = this._historyPrefix(params.location);
|
|
65
|
+
const keys = await this._storage.list(prefix);
|
|
66
|
+
let ids = keys
|
|
67
|
+
.map((key) => key.match(SNAPSHOT_REGEX)?.[1])
|
|
68
|
+
.filter((id) => id !== undefined)
|
|
69
|
+
.sort();
|
|
70
|
+
if (params.startAfter) {
|
|
71
|
+
ids = ids.filter((id) => id > params.startAfter);
|
|
72
|
+
}
|
|
73
|
+
if (params.limit !== undefined) {
|
|
74
|
+
ids = ids.slice(0, params.limit);
|
|
75
|
+
}
|
|
76
|
+
return ids;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Deletes all snapshots and data belonging to the session ID.
|
|
80
|
+
*
|
|
81
|
+
* @param params - Session ID to delete
|
|
82
|
+
*/
|
|
83
|
+
async deleteSession(params) {
|
|
84
|
+
validateIdentifier(params.sessionId);
|
|
85
|
+
const prefix = `${params.sessionId}/`;
|
|
86
|
+
const keys = await this._storage.list(prefix);
|
|
87
|
+
const BATCH_SIZE = 100;
|
|
88
|
+
for (let i = 0; i < keys.length; i += BATCH_SIZE) {
|
|
89
|
+
await Promise.all(keys.slice(i, i + BATCH_SIZE).map((key) => this._storage.delete(key)));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Loads the snapshot manifest for a scope.
|
|
94
|
+
*
|
|
95
|
+
* @param params - Snapshot location
|
|
96
|
+
* @returns The manifest, or a default if none exists
|
|
97
|
+
*/
|
|
98
|
+
async loadManifest(params) {
|
|
99
|
+
const key = this._manifestKey(params.location);
|
|
100
|
+
const manifest = await this._readJSON(key);
|
|
101
|
+
return (manifest ?? {
|
|
102
|
+
schemaVersion: SCHEMA_VERSION,
|
|
103
|
+
updatedAt: new Date().toISOString(),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Persists the snapshot manifest for a scope.
|
|
108
|
+
*
|
|
109
|
+
* @param params - Location and manifest data
|
|
110
|
+
*/
|
|
111
|
+
async saveManifest(params) {
|
|
112
|
+
const key = this._manifestKey(params.location);
|
|
113
|
+
await this._writeJSON(key, params.manifest);
|
|
114
|
+
}
|
|
115
|
+
_scopePrefix(location) {
|
|
116
|
+
validateIdentifier(location.sessionId);
|
|
117
|
+
validateIdentifier(location.scopeId);
|
|
118
|
+
return `${location.sessionId}/scopes/${location.scope}/${location.scopeId}/snapshots`;
|
|
119
|
+
}
|
|
120
|
+
_latestKey(location) {
|
|
121
|
+
return `${this._scopePrefix(location)}/snapshot_latest.json`;
|
|
122
|
+
}
|
|
123
|
+
_historyKey(location, snapshotId) {
|
|
124
|
+
return `${this._scopePrefix(location)}/immutable_history/snapshot_${snapshotId}.json`;
|
|
125
|
+
}
|
|
126
|
+
_historyPrefix(location) {
|
|
127
|
+
return `${this._scopePrefix(location)}/immutable_history/`;
|
|
128
|
+
}
|
|
129
|
+
_manifestKey(location) {
|
|
130
|
+
return `${this._scopePrefix(location)}/manifest.json`;
|
|
131
|
+
}
|
|
132
|
+
async _writeJSON(key, data) {
|
|
133
|
+
try {
|
|
134
|
+
const bytes = new TextEncoder().encode(JSON.stringify(data));
|
|
135
|
+
await this._storage.write(key, bytes);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
throw new SessionError(`Failed to write '${key}' to storage`, { cause: error });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async _readJSON(key) {
|
|
142
|
+
try {
|
|
143
|
+
const bytes = await this._storage.read(key);
|
|
144
|
+
if (bytes === null)
|
|
145
|
+
return null;
|
|
146
|
+
const text = new TextDecoder().decode(bytes);
|
|
147
|
+
return JSON.parse(text);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
if (error instanceof SyntaxError) {
|
|
151
|
+
throw new SessionError(`Corrupted JSON at '${key}'`, { cause: error });
|
|
152
|
+
}
|
|
153
|
+
throw new SessionError(`Failed to read '${key}' from storage`, { cause: error });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=snapshot-storage-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-storage-adapter.js","sourceRoot":"","sources":["../../../src/session/snapshot-storage-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,7 @@ export type SnapshotLocation = {
|
|
|
14
14
|
* SessionStorage configuration for pluggable storage backends.
|
|
15
15
|
* Allows users to configure snapshot and transcript storage independently.
|
|
16
16
|
*
|
|
17
|
-
* @
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const storage: SessionStorage = {
|
|
20
|
-
* snapshot: new S3Storage({ bucket: 'my-bucket' })
|
|
21
|
-
* }
|
|
22
|
-
* ```
|
|
17
|
+
* @deprecated Prefer passing a unified `Storage` directly to `SessionManagerConfig.storage`.
|
|
23
18
|
*/
|
|
24
19
|
export type SessionStorage = {
|
|
25
20
|
snapshot: SnapshotStorage;
|
|
@@ -28,6 +23,8 @@ export type SessionStorage = {
|
|
|
28
23
|
* Interface for snapshot persistence.
|
|
29
24
|
* Implementations provide storage backends (S3, filesystem, etc.).
|
|
30
25
|
*
|
|
26
|
+
* @deprecated Prefer passing a unified `Storage` to `SessionManagerConfig.storage` instead of implementing this directly.
|
|
27
|
+
*
|
|
31
28
|
* File layout convention:
|
|
32
29
|
* ```
|
|
33
30
|
* sessions/<session_id>/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/session/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEnE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,KAAK,EAAE,KAAK,CAAA;IACZ,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/session/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEnE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,KAAK,EAAE,KAAK,CAAA;IACZ,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,eAAe,CAAA;CAE1B,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QACnB,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,OAAO,CAAA;QACjB,QAAQ,EAAE,QAAQ,CAAA;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAEnG;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAE/G;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3D;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE/E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChG"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Storage } from './storage.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory {@link Storage} backend backed by a `Map`.
|
|
4
|
+
*
|
|
5
|
+
* Useful for testing and for serverless environments where disk access is unavailable.
|
|
6
|
+
* Content does not survive process restarts — for persistence use {@link LocalFileStorage}
|
|
7
|
+
* or {@link S3Storage}.
|
|
8
|
+
*
|
|
9
|
+
* This is a plain unbounded store with no eviction. Consumers that need eviction
|
|
10
|
+
* (e.g. the ContextOffloader plugin) manage it themselves.
|
|
11
|
+
*
|
|
12
|
+
* Keys are normalized identically to {@link LocalFileStorage}: slash runs are collapsed,
|
|
13
|
+
* leading/trailing slashes are stripped, and `..` segments are rejected.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const storage = new InMemoryStorage()
|
|
18
|
+
* await storage.write('memory/notes.json', new TextEncoder().encode('[]'))
|
|
19
|
+
* const bytes = await storage.read('memory/notes.json')
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class InMemoryStorage implements Storage {
|
|
23
|
+
private readonly _store;
|
|
24
|
+
/**
|
|
25
|
+
* Stores `data` under `key`, overwriting any existing value.
|
|
26
|
+
* Bytes are copied on write to prevent aliasing with the caller's buffer.
|
|
27
|
+
*
|
|
28
|
+
* @param key - Opaque, `/`-separated key identifying the value
|
|
29
|
+
* @param data - Raw bytes to persist
|
|
30
|
+
* @throws {@link StorageError} if the key is empty or contains `..` segments
|
|
31
|
+
*/
|
|
32
|
+
write(key: string, data: Uint8Array): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves the bytes previously stored under `key`.
|
|
35
|
+
* Returns a copy to prevent aliasing with the internal buffer.
|
|
36
|
+
*
|
|
37
|
+
* @param key - The key to read
|
|
38
|
+
* @returns The stored bytes, or `null` if no value exists for `key`
|
|
39
|
+
* @throws {@link StorageError} if the key is empty or contains `..` segments
|
|
40
|
+
*/
|
|
41
|
+
read(key: string): Promise<Uint8Array | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Deletes the value stored under `key`. A no-op if the key does not exist.
|
|
44
|
+
*
|
|
45
|
+
* @param key - The key to delete
|
|
46
|
+
* @throws {@link StorageError} if the key is empty or contains `..` segments
|
|
47
|
+
*/
|
|
48
|
+
delete(key: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Lists the keys whose names begin with `prefix`, sorted lexicographically.
|
|
51
|
+
*
|
|
52
|
+
* @param prefix - Key prefix to match. An empty string matches all keys.
|
|
53
|
+
* @returns The matching keys, sorted ascending
|
|
54
|
+
* @throws {@link StorageError} if the prefix contains `..` segments
|
|
55
|
+
*/
|
|
56
|
+
list(prefix: string): Promise<string[]>;
|
|
57
|
+
/** Returns a prefixed view of this storage without mutating the original. */
|
|
58
|
+
namespace(prefix: string): Storage;
|
|
59
|
+
/**
|
|
60
|
+
* Removes all stored entries. Useful for resetting state between tests.
|
|
61
|
+
*/
|
|
62
|
+
clear(): void;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=in-memory-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/in-memory-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAI3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IAEvD;;;;;;;OAOG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;;;;;;OAOG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMnD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS7C,6EAA6E;IAC7E,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { namespace, normalizeKey, normalizePrefix } from './storage.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory {@link Storage} backend backed by a `Map`.
|
|
4
|
+
*
|
|
5
|
+
* Useful for testing and for serverless environments where disk access is unavailable.
|
|
6
|
+
* Content does not survive process restarts — for persistence use {@link LocalFileStorage}
|
|
7
|
+
* or {@link S3Storage}.
|
|
8
|
+
*
|
|
9
|
+
* This is a plain unbounded store with no eviction. Consumers that need eviction
|
|
10
|
+
* (e.g. the ContextOffloader plugin) manage it themselves.
|
|
11
|
+
*
|
|
12
|
+
* Keys are normalized identically to {@link LocalFileStorage}: slash runs are collapsed,
|
|
13
|
+
* leading/trailing slashes are stripped, and `..` segments are rejected.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const storage = new InMemoryStorage()
|
|
18
|
+
* await storage.write('memory/notes.json', new TextEncoder().encode('[]'))
|
|
19
|
+
* const bytes = await storage.read('memory/notes.json')
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export class InMemoryStorage {
|
|
23
|
+
_store = new Map();
|
|
24
|
+
/**
|
|
25
|
+
* Stores `data` under `key`, overwriting any existing value.
|
|
26
|
+
* Bytes are copied on write to prevent aliasing with the caller's buffer.
|
|
27
|
+
*
|
|
28
|
+
* @param key - Opaque, `/`-separated key identifying the value
|
|
29
|
+
* @param data - Raw bytes to persist
|
|
30
|
+
* @throws {@link StorageError} if the key is empty or contains `..` segments
|
|
31
|
+
*/
|
|
32
|
+
async write(key, data) {
|
|
33
|
+
this._store.set(normalizeKey(key), data.slice());
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves the bytes previously stored under `key`.
|
|
37
|
+
* Returns a copy to prevent aliasing with the internal buffer.
|
|
38
|
+
*
|
|
39
|
+
* @param key - The key to read
|
|
40
|
+
* @returns The stored bytes, or `null` if no value exists for `key`
|
|
41
|
+
* @throws {@link StorageError} if the key is empty or contains `..` segments
|
|
42
|
+
*/
|
|
43
|
+
async read(key) {
|
|
44
|
+
const value = this._store.get(normalizeKey(key));
|
|
45
|
+
if (value === undefined)
|
|
46
|
+
return null;
|
|
47
|
+
return value.slice();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Deletes the value stored under `key`. A no-op if the key does not exist.
|
|
51
|
+
*
|
|
52
|
+
* @param key - The key to delete
|
|
53
|
+
* @throws {@link StorageError} if the key is empty or contains `..` segments
|
|
54
|
+
*/
|
|
55
|
+
async delete(key) {
|
|
56
|
+
this._store.delete(normalizeKey(key));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Lists the keys whose names begin with `prefix`, sorted lexicographically.
|
|
60
|
+
*
|
|
61
|
+
* @param prefix - Key prefix to match. An empty string matches all keys.
|
|
62
|
+
* @returns The matching keys, sorted ascending
|
|
63
|
+
* @throws {@link StorageError} if the prefix contains `..` segments
|
|
64
|
+
*/
|
|
65
|
+
async list(prefix) {
|
|
66
|
+
const normalized = normalizePrefix(prefix);
|
|
67
|
+
const keys = [];
|
|
68
|
+
for (const key of this._store.keys()) {
|
|
69
|
+
if (key.startsWith(normalized))
|
|
70
|
+
keys.push(key);
|
|
71
|
+
}
|
|
72
|
+
return keys.sort();
|
|
73
|
+
}
|
|
74
|
+
/** Returns a prefixed view of this storage without mutating the original. */
|
|
75
|
+
namespace(prefix) {
|
|
76
|
+
return namespace(this, prefix);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Removes all stored entries. Useful for resetting state between tests.
|
|
80
|
+
*/
|
|
81
|
+
clear() {
|
|
82
|
+
this._store.clear();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=in-memory-storage.js.map
|