@morlay/session-rdb 0.0.14 → 0.0.16-alpha.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.
Files changed (65) hide show
  1. package/README.md +11 -13
  2. package/dist/artifact.d.mts +6 -16
  3. package/dist/artifact.mjs +3 -3
  4. package/dist/{import-B-tf5vQn.mjs → import-CKrzjXVB.mjs} +73 -83
  5. package/dist/import.d.mts +2 -3
  6. package/dist/import.mjs +2 -2
  7. package/dist/index-CgGDHQSK.d.mts +225 -0
  8. package/dist/index.d.mts +3 -3
  9. package/dist/index.mjs +694 -169
  10. package/dist/log-DTJsxMud.mjs +314 -0
  11. package/dist/{schema-CFXZURX7.d.mts → schema-COK7-wRV.d.mts} +3 -15
  12. package/dist/sqlite-DCy4VTD8.mjs +698 -0
  13. package/dist/storage.d.mts +2 -7
  14. package/dist/storage.mjs +2 -3
  15. package/dist/testing.d.mts +30 -1
  16. package/dist/testing.mjs +676 -1991
  17. package/drizzle/postgres/20260908072805_v2_initial/migration.sql +58 -0
  18. package/drizzle/postgres/20260908072805_v2_initial/snapshot.json +686 -0
  19. package/drizzle/postgres/20260908072806_v3_drop_original_seq/migration.sql +1 -0
  20. package/drizzle/postgres/20260908072806_v3_drop_original_seq/snapshot.json +673 -0
  21. package/drizzle/sqlite/20260908072751_v2_initial/migration.sql +53 -0
  22. package/drizzle/sqlite/20260908072751_v2_initial/snapshot.json +492 -0
  23. package/drizzle/sqlite/20260908072752_v3_drop_original_seq/migration.sql +6 -0
  24. package/drizzle/sqlite/20260908072752_v3_drop_original_seq/snapshot.json +513 -0
  25. package/package.json +17 -12
  26. package/src/adapters/index.ts +10 -2
  27. package/src/adapters/to-postgres.ts +19 -15
  28. package/src/adapters/to-sqlite.ts +20 -14
  29. package/src/{entities → adapters}/types.ts +7 -8
  30. package/src/backend.ts +0 -7
  31. package/src/branch.ts +29 -110
  32. package/src/drizzle/postgres-v2.ts +11 -0
  33. package/src/drizzle/postgres-v3.ts +11 -0
  34. package/src/drizzle/sqlite-v2.ts +10 -0
  35. package/src/drizzle/sqlite-v3.ts +11 -0
  36. package/src/entities/index.ts +2 -30
  37. package/src/entities/v2/index.ts +20 -0
  38. package/src/entities/v2/session-events.ts +11 -0
  39. package/src/entities/v3/events.ts +27 -0
  40. package/src/entities/v3/index.ts +27 -0
  41. package/src/entities/v3/persistence-state.ts +10 -0
  42. package/src/entities/v3/schema-meta.ts +9 -0
  43. package/src/entities/v3/session-events.ts +26 -0
  44. package/src/entities/v3/sessions.ts +20 -0
  45. package/src/import.ts +65 -57
  46. package/src/index.ts +868 -223
  47. package/src/invariant.ts +0 -2
  48. package/src/legacy.ts +67 -0
  49. package/src/log.ts +41 -81
  50. package/src/postgres.ts +75 -93
  51. package/src/schema.ts +3 -14
  52. package/src/sqlite.ts +59 -46
  53. package/src/testing/contract.ts +460 -375
  54. package/src/testing/coordinator-contract.ts +108 -1374
  55. package/src/testing.ts +1 -6
  56. package/dist/index-uUvn6gYp.d.mts +0 -111
  57. package/dist/schema-BfPVmr1X.mjs +0 -875
  58. package/dist/sqlite-BUWnS0so.mjs +0 -356
  59. package/src/adapters/ddl.ts +0 -77
  60. package/src/entities/events.ts +0 -27
  61. package/src/entities/persistence-state.ts +0 -10
  62. package/src/entities/schema-meta.ts +0 -9
  63. package/src/entities/session-events.ts +0 -29
  64. package/src/entities/sessions.ts +0 -20
  65. package/src/migrate.ts +0 -137
package/src/testing.ts CHANGED
@@ -2,11 +2,6 @@
2
2
  // 仅供 vitest 测试引用;不进入运行时 bundle。
3
3
  export { EmptySettings } from "./testing/helpers.ts";
4
4
  export type { ContractBackend } from "./testing/contract.ts";
5
- export {
6
- appendLog,
7
- meta,
8
- oneTurnLog,
9
- runPersistenceContract,
10
- } from "./testing/contract.ts";
5
+ export { appendLog, meta, oneTurnLog, runPersistenceContract } from "./testing/contract.ts";
11
6
  export type { CoordinatorFixture } from "./testing/coordinator-contract.ts";
12
7
  export { runCoordinatorContract } from "./testing/coordinator-contract.ts";
@@ -1,111 +0,0 @@
1
- import { _ as WriteGuard, o as JournalMode, v as Backend } from "./schema-CFXZURX7.mjs";
2
- import z from "@deepseek-ai/schemastery";
3
- import { PersistenceBackend, SessionLocation, SessionPersistence, SessionPersistenceRevision, SessionPersistenceSnapshot, SessionStorageMetadata, StoredPrefix, StoredSuffix } from "@deepseek-ai/dsh-session-persistence";
4
- import { Session, SessionEvent, SessionHeader, SessionId } from "@deepseek-ai/dsh-session";
5
- import { BranchAnchorMode, BranchBoundary, ForkFromOptions, SessionBranch, SessionBranchProvider } from "@morlay/session-branch";
6
- import { Context } from "@deepseek-ai/cordis";
7
- //#region src/branch.d.ts
8
- declare function locateTurnEnd(events: readonly SessionEvent[], atSeq?: number, mode?: BranchAnchorMode): number;
9
- interface LiveSessionHooks {
10
- getSession(id: SessionId): Session | undefined;
11
- getAgent(id: SessionId): LiveAgentLike | undefined;
12
- flush(session: Session): Promise<boolean>;
13
- setCoordinatorCursor(id: SessionId, cursor: number): void;
14
- setCoordinatorState(id: SessionId, cursor: number, meta: SessionHeader): void;
15
- setCoordinatorSeedLength(id: SessionId, seedLength: number): void;
16
- }
17
- interface LiveAgentLike {
18
- session: Session;
19
- requestHeaderLogged?: boolean;
20
- }
21
- declare class SessionBranchRdbProvider implements SessionBranchProvider {
22
- private readonly persistence;
23
- private readonly live;
24
- readonly name = "session-rdb";
25
- constructor(persistence: SessionPersistenceRdb, live?: LiveSessionHooks);
26
- readBranchPrefix(id: SessionId, atSeq?: number, mode?: BranchAnchorMode, signal?: AbortSignal): Promise<BranchBoundary>;
27
- readRawEvents(id: SessionId, signal?: AbortSignal): Promise<{
28
- meta: SessionHeader;
29
- events: readonly SessionEvent[];
30
- }>;
31
- forkFrom(sourceId: SessionId, options?: ForkFromOptions, signal?: AbortSignal): Promise<SessionId>;
32
- rewind(id: SessionId, toBoundary: number, signal?: AbortSignal): Promise<SessionPersistenceSnapshot>;
33
- }
34
- declare class SessionBranchRdb extends SessionBranch {
35
- static inject: string[];
36
- constructor(ctx: import("@deepseek-ai/cordis").Context);
37
- private readonly provider;
38
- readBranchPrefix(id: SessionId, atSeq?: number, mode?: BranchAnchorMode, signal?: AbortSignal): Promise<BranchBoundary>;
39
- readRawEvents(id: SessionId, signal?: AbortSignal): Promise<{
40
- meta: SessionHeader;
41
- events: readonly SessionEvent[];
42
- }>;
43
- forkFrom(sourceId: SessionId, options?: ForkFromOptions, signal?: AbortSignal): Promise<SessionId>;
44
- rewind(id: SessionId, toBoundary: number, signal?: AbortSignal): Promise<SessionPersistenceSnapshot>;
45
- syncLiveCursor(sessionId: SessionId): void;
46
- timeline(sessionId: SessionId, signal?: AbortSignal): Promise<import("@morlay/session-branch").BranchTimeline>;
47
- }
48
- //#endregion
49
- //#region src/index.d.ts
50
- interface SessionPersistenceRdbInternals {
51
- readonly backend: Backend;
52
- readonly writeGuard: WriteGuard;
53
- create(meta: SessionHeader, inheritedEventCount?: number): Promise<void>;
54
- append(id: SessionId, events: readonly SessionEvent[]): Promise<void>;
55
- load(id: SessionId): Promise<import("@deepseek-ai/dsh-session-persistence").SessionInspection>;
56
- inspect(id: SessionId, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").SessionInspection>;
57
- readFrom(id: SessionId, fromSeq: number, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").SessionEventSuffix>;
58
- listSnapshots(signal?: AbortSignal): Promise<SessionPersistenceSnapshot[]>;
59
- readStoredRevision(id: SessionId, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").SessionPersistenceRevision | undefined>;
60
- registerReuseEventIds(childId: SessionId, map: ReadonlyMap<number, string>): void;
61
- }
62
- type Config = {
63
- type: "sqlite";
64
- path: string;
65
- journalMode?: JournalMode;
66
- busyTimeout?: number;
67
- } | {
68
- type: "postgres";
69
- connectionString: string;
70
- schema?: string;
71
- };
72
- declare class SessionPersistenceRdb extends SessionPersistence implements PersistenceBackend<number> {
73
- config: Config;
74
- static inject: string[];
75
- static Config: z<Config>;
76
- static readonly settingsNs = "session-rdb";
77
- readonly name = "session-rdb";
78
- readonly supportsRawArtifacts = true;
79
- readRaw(id: SessionId, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").SessionRawArtifact | undefined>;
80
- private readonly backend;
81
- private storeIdentity;
82
- private readonly ready;
83
- private readonly coordinator;
84
- private readonly writeGuard;
85
- private readonly reuseEventIds;
86
- constructor(ctx: Context, config: Config, injectedBackend?: Backend);
87
- private init;
88
- locate(_meta: SessionHeader): SessionLocation | undefined;
89
- create(meta: SessionHeader, inheritedEventCount?: number): Promise<void>;
90
- append(id: SessionId, events: readonly SessionEvent[]): Promise<void>;
91
- load(id: SessionId): Promise<import("@deepseek-ai/dsh-session-persistence").SessionInspection>;
92
- inspect(id: SessionId, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").SessionInspection>;
93
- readFrom(id: SessionId, fromSeq: number, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").SessionEventSuffix>;
94
- borrowSession(id: SessionId, signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-session-persistence").BorrowedSessionSource>;
95
- loadStored(id: SessionId, signal?: AbortSignal): Promise<StoredPrefix<number> | undefined>;
96
- loadStoredFrom(id: SessionId, fromSeq: number, signal?: AbortSignal): Promise<StoredSuffix | undefined>;
97
- private readPrefix;
98
- readStoredRevision(id: SessionId, signal?: AbortSignal): Promise<SessionPersistenceRevision | undefined>;
99
- private readLog;
100
- appendBatch(storage: SessionStorageMetadata, events: readonly SessionEvent[], _isMaterialized: boolean): Promise<void>;
101
- commitRepair(storage: SessionStorageMetadata, tornMarker: number | undefined, closers: readonly SessionEvent[]): Promise<void>;
102
- list(signal?: AbortSignal): Promise<SessionHeader[]>;
103
- listSnapshots(signal?: AbortSignal): Promise<Array<SessionPersistenceSnapshot & {
104
- inheritedEventCount: number;
105
- }>>;
106
- close(): Promise<void>;
107
- registerReuseEventIds(childId: SessionId, map: ReadonlyMap<number, string>): void;
108
- internals(): SessionPersistenceRdbInternals;
109
- }
110
- //#endregion
111
- export { SessionBranchRdbProvider as a, SessionBranchRdb as i, SessionPersistenceRdb as n, locateTurnEnd as o, SessionPersistenceRdbInternals as r, Config as t };