@namzu/sdk 0.2.0 → 0.3.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/CHANGELOG.md +53 -2
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +3 -2
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +5 -2
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/bridge/a2a/index.d.ts +1 -1
- package/dist/bridge/a2a/index.d.ts.map +1 -1
- package/dist/bridge/a2a/index.js +1 -1
- package/dist/bridge/a2a/index.js.map +1 -1
- package/dist/bridge/a2a/message.d.ts +0 -2
- package/dist/bridge/a2a/message.d.ts.map +1 -1
- package/dist/bridge/a2a/message.js +0 -26
- package/dist/bridge/a2a/message.js.map +1 -1
- package/dist/bridge/a2a/task.d.ts +4 -3
- package/dist/bridge/a2a/task.d.ts.map +1 -1
- package/dist/bridge/a2a/task.js +4 -4
- package/dist/bridge/a2a/task.js.map +1 -1
- package/dist/contracts/api.d.ts +6 -38
- package/dist/contracts/api.d.ts.map +1 -1
- package/dist/contracts/ids.d.ts +1 -1
- package/dist/contracts/ids.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +3 -5
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/schemas.d.ts +1 -31
- package/dist/contracts/schemas.d.ts.map +1 -1
- package/dist/contracts/schemas.js +1 -7
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/manager/agent/__tests__/lifecycle.test.js +27 -13
- package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts +9 -0
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +93 -31
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/index.d.ts +2 -0
- package/dist/manager/index.d.ts.map +1 -1
- package/dist/manager/index.js +1 -0
- package/dist/manager/index.js.map +1 -1
- package/dist/manager/run/persistence.d.ts +3 -1
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +5 -0
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/manager/thread/__tests__/lifecycle.test.d.ts +2 -0
- package/dist/manager/thread/__tests__/lifecycle.test.d.ts.map +1 -0
- package/dist/manager/thread/__tests__/lifecycle.test.js +216 -0
- package/dist/manager/thread/__tests__/lifecycle.test.js.map +1 -0
- package/dist/manager/thread/lifecycle.d.ts +105 -0
- package/dist/manager/thread/lifecycle.d.ts.map +1 -0
- package/dist/manager/thread/lifecycle.js +186 -0
- package/dist/manager/thread/lifecycle.js.map +1 -0
- package/dist/rag/retriever.js +2 -2
- package/dist/runtime/query/__tests__/context.test.js +8 -7
- package/dist/runtime/query/__tests__/context.test.js.map +1 -1
- package/dist/runtime/query/context-cache.d.ts +3 -3
- package/dist/runtime/query/context-cache.d.ts.map +1 -1
- package/dist/runtime/query/context-cache.js +2 -2
- package/dist/runtime/query/context-cache.js.map +1 -1
- package/dist/runtime/query/context.d.ts +12 -21
- package/dist/runtime/query/context.d.ts.map +1 -1
- package/dist/runtime/query/context.js +3 -1
- package/dist/runtime/query/context.js.map +1 -1
- package/dist/runtime/query/index.d.ts +13 -15
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +1 -0
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/session/__tests__/integration/_fixtures.d.ts +11 -4
- package/dist/session/__tests__/integration/_fixtures.d.ts.map +1 -1
- package/dist/session/__tests__/integration/_fixtures.js +23 -6
- package/dist/session/__tests__/integration/_fixtures.js.map +1 -1
- package/dist/session/__tests__/integration/archive-gate.test.d.ts +15 -0
- package/dist/session/__tests__/integration/archive-gate.test.d.ts.map +1 -0
- package/dist/session/__tests__/integration/archive-gate.test.js +214 -0
- package/dist/session/__tests__/integration/archive-gate.test.js.map +1 -0
- package/dist/session/__tests__/integration/capacity-caps.test.js +13 -6
- package/dist/session/__tests__/integration/capacity-caps.test.js.map +1 -1
- package/dist/session/__tests__/integration/e2e-spawn.test.js +14 -2
- package/dist/session/__tests__/integration/e2e-spawn.test.js.map +1 -1
- package/dist/session/__tests__/integration/event-stream-ordering.test.js +14 -7
- package/dist/session/__tests__/integration/event-stream-ordering.test.js.map +1 -1
- package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js +26 -14
- package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js.map +1 -1
- package/dist/session/__tests__/integration/handoff-illegal-transition.test.js +30 -20
- package/dist/session/__tests__/integration/handoff-illegal-transition.test.js.map +1 -1
- package/dist/session/__tests__/integration/handoff-single-e2e.test.js +25 -9
- package/dist/session/__tests__/integration/handoff-single-e2e.test.js.map +1 -1
- package/dist/session/__tests__/integration/hierarchy-lifecycle.test.js +11 -10
- package/dist/session/__tests__/integration/hierarchy-lifecycle.test.js.map +1 -1
- package/dist/session/__tests__/integration/prev-artifact-dag.test.js +5 -4
- package/dist/session/__tests__/integration/prev-artifact-dag.test.js.map +1 -1
- package/dist/session/__tests__/integration/retention-archive.test.js +3 -2
- package/dist/session/__tests__/integration/retention-archive.test.js.map +1 -1
- package/dist/session/__tests__/integration/spawn-rollback.test.d.ts +26 -0
- package/dist/session/__tests__/integration/spawn-rollback.test.d.ts.map +1 -0
- package/dist/session/__tests__/integration/spawn-rollback.test.js +236 -0
- package/dist/session/__tests__/integration/spawn-rollback.test.js.map +1 -0
- package/dist/session/__tests__/integration/summary-materialization-e2e.test.js +2 -1
- package/dist/session/__tests__/integration/summary-materialization-e2e.test.js.map +1 -1
- package/dist/session/__tests__/integration/tenant-isolation.test.js +14 -5
- package/dist/session/__tests__/integration/tenant-isolation.test.js.map +1 -1
- package/dist/session/errors.d.ts +79 -0
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/errors.js +57 -0
- package/dist/session/errors.js.map +1 -1
- package/dist/session/handoff/__tests__/broadcast.test.js +49 -31
- package/dist/session/handoff/__tests__/broadcast.test.js.map +1 -1
- package/dist/session/handoff/__tests__/capacity.test.js +21 -18
- package/dist/session/handoff/__tests__/capacity.test.js.map +1 -1
- package/dist/session/handoff/__tests__/single.test.js +39 -30
- package/dist/session/handoff/__tests__/single.test.js.map +1 -1
- package/dist/session/handoff/assignment.d.ts +13 -1
- package/dist/session/handoff/assignment.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.d.ts +7 -0
- package/dist/session/handoff/broadcast.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.js +16 -1
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/handoff/single.d.ts +7 -0
- package/dist/session/handoff/single.d.ts.map +1 -1
- package/dist/session/handoff/single.js +13 -1
- package/dist/session/handoff/single.js.map +1 -1
- package/dist/session/hierarchy/__tests__/session.test.js +2 -0
- package/dist/session/hierarchy/__tests__/session.test.js.map +1 -1
- package/dist/session/hierarchy/index.d.ts +1 -0
- package/dist/session/hierarchy/index.d.ts.map +1 -1
- package/dist/session/hierarchy/index.js.map +1 -1
- package/dist/session/hierarchy/session.d.ts +15 -3
- package/dist/session/hierarchy/session.d.ts.map +1 -1
- package/dist/session/hierarchy/session.js.map +1 -1
- package/dist/session/hierarchy/thread.d.ts +54 -0
- package/dist/session/hierarchy/thread.d.ts.map +1 -0
- package/dist/session/hierarchy/thread.js +2 -0
- package/dist/session/hierarchy/thread.js.map +1 -0
- package/dist/session/migration/id-prefix.d.ts +8 -13
- package/dist/session/migration/id-prefix.d.ts.map +1 -1
- package/dist/session/migration/id-prefix.js +8 -13
- package/dist/session/migration/id-prefix.js.map +1 -1
- package/dist/session/retention/__tests__/archive.test.js +3 -2
- package/dist/session/retention/__tests__/archive.test.js.map +1 -1
- package/dist/session/summary/__tests__/materialize.test.js +4 -3
- package/dist/session/summary/__tests__/materialize.test.js.map +1 -1
- package/dist/store/index.d.ts +0 -2
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +0 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/session/__tests__/disk.test.js +32 -5
- package/dist/store/session/__tests__/disk.test.js.map +1 -1
- package/dist/store/session/__tests__/memory.test.js +50 -9
- package/dist/store/session/__tests__/memory.test.js.map +1 -1
- package/dist/store/session/disk.d.ts +2 -1
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +61 -0
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/index.d.ts.map +1 -1
- package/dist/store/session/index.js +3 -4
- package/dist/store/session/index.js.map +1 -1
- package/dist/store/session/memory.d.ts +2 -1
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +13 -0
- package/dist/store/session/memory.js.map +1 -1
- package/dist/store/thread/disk.d.ts +41 -0
- package/dist/store/thread/disk.d.ts.map +1 -0
- package/dist/store/thread/disk.js +229 -0
- package/dist/store/thread/disk.js.map +1 -0
- package/dist/store/thread/index.d.ts +4 -0
- package/dist/store/thread/index.d.ts.map +1 -0
- package/dist/store/thread/index.js +6 -0
- package/dist/store/thread/index.js.map +1 -0
- package/dist/store/thread/memory.d.ts +23 -0
- package/dist/store/thread/memory.d.ts.map +1 -0
- package/dist/store/thread/memory.js +90 -0
- package/dist/store/thread/memory.js.map +1 -0
- package/dist/types/agent/base.d.ts +17 -21
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/factory.d.ts +8 -2
- package/dist/types/agent/factory.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +18 -11
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/ids/index.d.ts +5 -9
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/ids/index.js +4 -4
- package/dist/types/ids/index.js.map +1 -1
- package/dist/types/rag/retrieval.d.ts +4 -3
- package/dist/types/rag/retrieval.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +6 -5
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/metadata.d.ts +5 -18
- package/dist/types/run/metadata.d.ts.map +1 -1
- package/dist/types/session/ids.d.ts +4 -13
- package/dist/types/session/ids.d.ts.map +1 -1
- package/dist/types/session/ids.js +3 -6
- package/dist/types/session/ids.js.map +1 -1
- package/dist/types/session/index.d.ts +1 -1
- package/dist/types/session/index.d.ts.map +1 -1
- package/dist/types/session/store.d.ts +32 -10
- package/dist/types/session/store.d.ts.map +1 -1
- package/dist/types/session/store.js +3 -8
- package/dist/types/session/store.js.map +1 -1
- package/dist/types/thread/index.d.ts +2 -0
- package/dist/types/thread/index.d.ts.map +1 -0
- package/dist/types/thread/index.js +5 -0
- package/dist/types/thread/index.js.map +1 -0
- package/dist/types/thread/store.d.ts +86 -0
- package/dist/types/thread/store.d.ts.map +1 -0
- package/dist/types/thread/store.js +22 -0
- package/dist/types/thread/store.js.map +1 -0
- package/dist/utils/id.d.ts +1 -12
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +3 -23
- package/dist/utils/id.js.map +1 -1
- package/package.json +6 -11
- package/src/agents/ReactiveAgent.ts +3 -2
- package/src/agents/SupervisorAgent.ts +5 -2
- package/src/bridge/a2a/index.ts +0 -1
- package/src/bridge/a2a/message.ts +0 -32
- package/src/bridge/a2a/task.ts +8 -7
- package/src/contracts/api.ts +6 -42
- package/src/contracts/ids.ts +1 -1
- package/src/contracts/index.ts +2 -8
- package/src/contracts/schemas.ts +1 -8
- package/src/index.ts +0 -4
- package/src/manager/agent/__tests__/lifecycle.test.ts +34 -13
- package/src/manager/agent/lifecycle.ts +114 -35
- package/src/manager/index.ts +3 -0
- package/src/manager/run/persistence.ts +7 -1
- package/src/manager/thread/__tests__/lifecycle.test.ts +286 -0
- package/src/manager/thread/lifecycle.ts +217 -0
- package/src/rag/retriever.ts +2 -2
- package/src/runtime/query/__tests__/context.test.ts +9 -8
- package/src/runtime/query/context-cache.ts +4 -4
- package/src/runtime/query/context.ts +15 -22
- package/src/runtime/query/index.ts +15 -16
- package/src/session/__tests__/integration/_fixtures.ts +36 -8
- package/src/session/__tests__/integration/archive-gate.test.ts +288 -0
- package/src/session/__tests__/integration/capacity-caps.test.ts +13 -6
- package/src/session/__tests__/integration/e2e-spawn.test.ts +20 -2
- package/src/session/__tests__/integration/event-stream-ordering.test.ts +14 -7
- package/src/session/__tests__/integration/handoff-broadcast-e2e.test.ts +39 -13
- package/src/session/__tests__/integration/handoff-illegal-transition.test.ts +54 -19
- package/src/session/__tests__/integration/handoff-single-e2e.test.ts +40 -9
- package/src/session/__tests__/integration/hierarchy-lifecycle.test.ts +13 -10
- package/src/session/__tests__/integration/prev-artifact-dag.test.ts +12 -5
- package/src/session/__tests__/integration/retention-archive.test.ts +5 -3
- package/src/session/__tests__/integration/spawn-rollback.test.ts +313 -0
- package/src/session/__tests__/integration/summary-materialization-e2e.test.ts +4 -2
- package/src/session/__tests__/integration/tenant-isolation.test.ts +16 -6
- package/src/session/errors.ts +89 -0
- package/src/session/handoff/__tests__/broadcast.test.ts +56 -28
- package/src/session/handoff/__tests__/capacity.test.ts +26 -20
- package/src/session/handoff/__tests__/single.test.ts +45 -28
- package/src/session/handoff/assignment.ts +13 -1
- package/src/session/handoff/broadcast.ts +26 -1
- package/src/session/handoff/single.ts +23 -1
- package/src/session/hierarchy/__tests__/session.test.ts +9 -1
- package/src/session/hierarchy/index.ts +1 -0
- package/src/session/hierarchy/session.ts +15 -3
- package/src/session/hierarchy/thread.ts +55 -0
- package/src/session/migration/id-prefix.ts +8 -13
- package/src/session/retention/__tests__/archive.test.ts +5 -3
- package/src/session/summary/__tests__/materialize.test.ts +6 -4
- package/src/store/index.ts +0 -3
- package/src/store/session/__tests__/disk.test.ts +57 -6
- package/src/store/session/__tests__/memory.test.ts +84 -9
- package/src/store/session/disk.ts +57 -1
- package/src/store/session/index.ts +3 -4
- package/src/store/session/memory.ts +13 -1
- package/src/store/thread/disk.ts +261 -0
- package/src/store/thread/index.ts +7 -0
- package/src/store/thread/memory.ts +104 -0
- package/src/types/agent/base.ts +17 -21
- package/src/types/agent/factory.ts +8 -3
- package/src/types/agent/task.ts +19 -11
- package/src/types/ids/index.ts +8 -15
- package/src/types/rag/retrieval.ts +4 -3
- package/src/types/run/config.ts +6 -5
- package/src/types/run/metadata.ts +5 -18
- package/src/types/session/ids.ts +4 -15
- package/src/types/session/index.ts +1 -2
- package/src/types/session/store.ts +34 -11
- package/src/types/thread/index.ts +5 -0
- package/src/types/thread/store.ts +92 -0
- package/src/utils/id.ts +3 -24
- package/dist/store/conversation/memory.d.ts +0 -43
- package/dist/store/conversation/memory.d.ts.map +0 -1
- package/dist/store/conversation/memory.js +0 -108
- package/dist/store/conversation/memory.js.map +0 -1
- package/dist/types/conversation/index.d.ts +0 -14
- package/dist/types/conversation/index.d.ts.map +0 -1
- package/dist/types/conversation/index.js +0 -2
- package/dist/types/conversation/index.js.map +0 -1
- package/src/store/conversation/memory.ts +0 -144
- package/src/types/conversation/index.ts +0 -15
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @deprecated Use `InMemorySessionStore` from
|
|
3
|
-
* `@namzu/sdk/store/session`. This class implements the deprecated
|
|
4
|
-
* `ConversationStore` contract (thread-scoped, no tenantId) and is kept
|
|
5
|
-
* for one migration window per session-hierarchy.md §13.1; it will be
|
|
6
|
-
* removed in 0.3.0.
|
|
7
|
-
*
|
|
8
|
-
* INTERPRETATION (Phase 3): the old class exposes helpers
|
|
9
|
-
* (`addUserMessage`, `createThread`, `hasThread`, `deleteThread`,
|
|
10
|
-
* `messageCount`, `clear`) that are not part of `ConversationStore` and
|
|
11
|
-
* whose signatures rely on `ThreadId` + `Message` without `TenantId`.
|
|
12
|
-
* Those signatures are structurally incompatible with the new
|
|
13
|
-
* `SessionStore` surface, so a strict alias re-export would lose API
|
|
14
|
-
* (roadmap §2 Phase 3 option (a)). We pick option (b) — retain the
|
|
15
|
-
* original class body verbatim with a deprecation banner — to preserve
|
|
16
|
-
* existing consumers during the migration window without polluting the
|
|
17
|
-
* new `InMemorySessionStore` with thread-scoped helpers.
|
|
18
|
-
*/
|
|
19
|
-
import type { ConversationStore } from '../../types/conversation/index.js';
|
|
20
|
-
import type { MessageId, RunId, ThreadId } from '../../types/ids/index.js';
|
|
21
|
-
import { type Message } from '../../types/message/index.js';
|
|
22
|
-
export interface InMemoryConversationStoreConfig {
|
|
23
|
-
readonly maxMessages?: number;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* @deprecated See module banner. Use `InMemorySessionStore` from
|
|
27
|
-
* `@namzu/sdk/store/session`.
|
|
28
|
-
*/
|
|
29
|
-
export declare class InMemoryConversationStore implements ConversationStore {
|
|
30
|
-
private readonly threads;
|
|
31
|
-
private readonly maxMessages;
|
|
32
|
-
constructor(config?: InMemoryConversationStoreConfig);
|
|
33
|
-
loadMessages(threadId: ThreadId): Message[];
|
|
34
|
-
persistRunResult(threadId: ThreadId, runId: RunId, messages: Message[]): void;
|
|
35
|
-
addUserMessage(threadId: ThreadId, content: string): MessageId;
|
|
36
|
-
hasThread(threadId: ThreadId): boolean;
|
|
37
|
-
createThread(threadId: ThreadId): boolean;
|
|
38
|
-
deleteThread(threadId: ThreadId): boolean;
|
|
39
|
-
messageCount(threadId: ThreadId): number;
|
|
40
|
-
clear(): void;
|
|
41
|
-
private ensureThread;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/store/conversation/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAC1E,OAAO,EACN,KAAK,OAAO,EAGZ,MAAM,8BAA8B,CAAA;AAkBrC,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;gBAExB,MAAM,GAAE,+BAAoC;IAIxD,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,EAAE;IA4B3C,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAe7E,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAa9D,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAItC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAMzC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIzC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAIxC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,YAAY;CAKpB"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @deprecated Use `InMemorySessionStore` from
|
|
3
|
-
* `@namzu/sdk/store/session`. This class implements the deprecated
|
|
4
|
-
* `ConversationStore` contract (thread-scoped, no tenantId) and is kept
|
|
5
|
-
* for one migration window per session-hierarchy.md §13.1; it will be
|
|
6
|
-
* removed in 0.3.0.
|
|
7
|
-
*
|
|
8
|
-
* INTERPRETATION (Phase 3): the old class exposes helpers
|
|
9
|
-
* (`addUserMessage`, `createThread`, `hasThread`, `deleteThread`,
|
|
10
|
-
* `messageCount`, `clear`) that are not part of `ConversationStore` and
|
|
11
|
-
* whose signatures rely on `ThreadId` + `Message` without `TenantId`.
|
|
12
|
-
* Those signatures are structurally incompatible with the new
|
|
13
|
-
* `SessionStore` surface, so a strict alias re-export would lose API
|
|
14
|
-
* (roadmap §2 Phase 3 option (a)). We pick option (b) — retain the
|
|
15
|
-
* original class body verbatim with a deprecation banner — to preserve
|
|
16
|
-
* existing consumers during the migration window without polluting the
|
|
17
|
-
* new `InMemorySessionStore` with thread-scoped helpers.
|
|
18
|
-
*/
|
|
19
|
-
import { findSafeTrimIndex } from '../../compaction/dangling.js';
|
|
20
|
-
import { createAssistantMessage, createUserMessage, } from '../../types/message/index.js';
|
|
21
|
-
import { extractFinalResponse } from '../../utils/conversation.js';
|
|
22
|
-
import { generateMessageId } from '../../utils/id.js';
|
|
23
|
-
/**
|
|
24
|
-
* @deprecated See module banner. Use `InMemorySessionStore` from
|
|
25
|
-
* `@namzu/sdk/store/session`.
|
|
26
|
-
*/
|
|
27
|
-
export class InMemoryConversationStore {
|
|
28
|
-
threads = new Map();
|
|
29
|
-
maxMessages;
|
|
30
|
-
constructor(config = {}) {
|
|
31
|
-
this.maxMessages = config.maxMessages ?? 100;
|
|
32
|
-
}
|
|
33
|
-
loadMessages(threadId) {
|
|
34
|
-
const messages = this.threads.get(threadId);
|
|
35
|
-
if (!messages)
|
|
36
|
-
return [];
|
|
37
|
-
// Convert to Message type for trim safety check
|
|
38
|
-
const convertedMessages = messages.map((m) => {
|
|
39
|
-
switch (m.role) {
|
|
40
|
-
case 'user':
|
|
41
|
-
return createUserMessage(m.content);
|
|
42
|
-
case 'assistant':
|
|
43
|
-
return createAssistantMessage(m.content);
|
|
44
|
-
default: {
|
|
45
|
-
const _exhaustive = m.role;
|
|
46
|
-
throw new Error(`Unhandled message role: ${_exhaustive}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
// Apply safe trimming to preserve tool call/result atomicity
|
|
51
|
-
let trimStartIdx = 0;
|
|
52
|
-
if (convertedMessages.length > this.maxMessages) {
|
|
53
|
-
const desiredTrimPoint = convertedMessages.length - this.maxMessages;
|
|
54
|
-
trimStartIdx = findSafeTrimIndex(convertedMessages, desiredTrimPoint);
|
|
55
|
-
}
|
|
56
|
-
return convertedMessages.slice(trimStartIdx);
|
|
57
|
-
}
|
|
58
|
-
persistRunResult(threadId, runId, messages) {
|
|
59
|
-
const finalAssistant = extractFinalResponse(messages);
|
|
60
|
-
if (!finalAssistant || !finalAssistant.content)
|
|
61
|
-
return;
|
|
62
|
-
this.ensureThread(threadId);
|
|
63
|
-
this.threads.get(threadId)?.push({
|
|
64
|
-
id: generateMessageId(),
|
|
65
|
-
threadId,
|
|
66
|
-
role: 'assistant',
|
|
67
|
-
content: finalAssistant.content,
|
|
68
|
-
runId,
|
|
69
|
-
createdAt: new Date().toISOString(),
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
addUserMessage(threadId, content) {
|
|
73
|
-
this.ensureThread(threadId);
|
|
74
|
-
const id = generateMessageId();
|
|
75
|
-
this.threads.get(threadId)?.push({
|
|
76
|
-
id,
|
|
77
|
-
threadId,
|
|
78
|
-
role: 'user',
|
|
79
|
-
content,
|
|
80
|
-
createdAt: new Date().toISOString(),
|
|
81
|
-
});
|
|
82
|
-
return id;
|
|
83
|
-
}
|
|
84
|
-
hasThread(threadId) {
|
|
85
|
-
return this.threads.has(threadId);
|
|
86
|
-
}
|
|
87
|
-
createThread(threadId) {
|
|
88
|
-
if (this.threads.has(threadId))
|
|
89
|
-
return false;
|
|
90
|
-
this.threads.set(threadId, []);
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
deleteThread(threadId) {
|
|
94
|
-
return this.threads.delete(threadId);
|
|
95
|
-
}
|
|
96
|
-
messageCount(threadId) {
|
|
97
|
-
return this.threads.get(threadId)?.length ?? 0;
|
|
98
|
-
}
|
|
99
|
-
clear() {
|
|
100
|
-
this.threads.clear();
|
|
101
|
-
}
|
|
102
|
-
ensureThread(threadId) {
|
|
103
|
-
if (!this.threads.has(threadId)) {
|
|
104
|
-
this.threads.set(threadId, []);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/store/conversation/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { RunId, ThreadId } from '../ids/index.js';
|
|
2
|
-
import type { Message } from '../message/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated Use `SessionStore` from `@namzu/sdk` (import via
|
|
5
|
-
* `types/session/store.ts` or the root barrel). `ConversationStore` is
|
|
6
|
-
* thread-scoped and does not carry the `tenantId` required by
|
|
7
|
-
* session-hierarchy.md §12.1. Scheduled for removal in 0.3.0; the one-
|
|
8
|
-
* version migration window follows session-hierarchy.md §13.1.
|
|
9
|
-
*/
|
|
10
|
-
export interface ConversationStore {
|
|
11
|
-
loadMessages(threadId: ThreadId): Message[];
|
|
12
|
-
persistRunResult(threadId: ThreadId, runId: RunId, messages: Message[]): void;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAA;IAE3C,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CAC7E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/conversation/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @deprecated Use `InMemorySessionStore` from
|
|
3
|
-
* `@namzu/sdk/store/session`. This class implements the deprecated
|
|
4
|
-
* `ConversationStore` contract (thread-scoped, no tenantId) and is kept
|
|
5
|
-
* for one migration window per session-hierarchy.md §13.1; it will be
|
|
6
|
-
* removed in 0.3.0.
|
|
7
|
-
*
|
|
8
|
-
* INTERPRETATION (Phase 3): the old class exposes helpers
|
|
9
|
-
* (`addUserMessage`, `createThread`, `hasThread`, `deleteThread`,
|
|
10
|
-
* `messageCount`, `clear`) that are not part of `ConversationStore` and
|
|
11
|
-
* whose signatures rely on `ThreadId` + `Message` without `TenantId`.
|
|
12
|
-
* Those signatures are structurally incompatible with the new
|
|
13
|
-
* `SessionStore` surface, so a strict alias re-export would lose API
|
|
14
|
-
* (roadmap §2 Phase 3 option (a)). We pick option (b) — retain the
|
|
15
|
-
* original class body verbatim with a deprecation banner — to preserve
|
|
16
|
-
* existing consumers during the migration window without polluting the
|
|
17
|
-
* new `InMemorySessionStore` with thread-scoped helpers.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import { findSafeTrimIndex } from '../../compaction/dangling.js'
|
|
21
|
-
import type { ConversationStore } from '../../types/conversation/index.js'
|
|
22
|
-
import type { MessageId, RunId, ThreadId } from '../../types/ids/index.js'
|
|
23
|
-
import {
|
|
24
|
-
type Message,
|
|
25
|
-
createAssistantMessage,
|
|
26
|
-
createUserMessage,
|
|
27
|
-
} from '../../types/message/index.js'
|
|
28
|
-
import { extractFinalResponse } from '../../utils/conversation.js'
|
|
29
|
-
import { generateMessageId } from '../../utils/id.js'
|
|
30
|
-
|
|
31
|
-
interface ConversationMessage {
|
|
32
|
-
readonly id: MessageId
|
|
33
|
-
|
|
34
|
-
readonly threadId: ThreadId
|
|
35
|
-
|
|
36
|
-
readonly role: 'user' | 'assistant'
|
|
37
|
-
|
|
38
|
-
readonly content: string
|
|
39
|
-
|
|
40
|
-
readonly runId?: RunId
|
|
41
|
-
|
|
42
|
-
readonly createdAt: string
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export interface InMemoryConversationStoreConfig {
|
|
46
|
-
readonly maxMessages?: number
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @deprecated See module banner. Use `InMemorySessionStore` from
|
|
51
|
-
* `@namzu/sdk/store/session`.
|
|
52
|
-
*/
|
|
53
|
-
export class InMemoryConversationStore implements ConversationStore {
|
|
54
|
-
private readonly threads = new Map<ThreadId, ConversationMessage[]>()
|
|
55
|
-
private readonly maxMessages: number
|
|
56
|
-
|
|
57
|
-
constructor(config: InMemoryConversationStoreConfig = {}) {
|
|
58
|
-
this.maxMessages = config.maxMessages ?? 100
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
loadMessages(threadId: ThreadId): Message[] {
|
|
62
|
-
const messages = this.threads.get(threadId)
|
|
63
|
-
if (!messages) return []
|
|
64
|
-
|
|
65
|
-
// Convert to Message type for trim safety check
|
|
66
|
-
const convertedMessages: Message[] = messages.map((m) => {
|
|
67
|
-
switch (m.role) {
|
|
68
|
-
case 'user':
|
|
69
|
-
return createUserMessage(m.content)
|
|
70
|
-
case 'assistant':
|
|
71
|
-
return createAssistantMessage(m.content)
|
|
72
|
-
default: {
|
|
73
|
-
const _exhaustive: never = m.role
|
|
74
|
-
throw new Error(`Unhandled message role: ${_exhaustive}`)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
// Apply safe trimming to preserve tool call/result atomicity
|
|
80
|
-
let trimStartIdx = 0
|
|
81
|
-
if (convertedMessages.length > this.maxMessages) {
|
|
82
|
-
const desiredTrimPoint = convertedMessages.length - this.maxMessages
|
|
83
|
-
trimStartIdx = findSafeTrimIndex(convertedMessages, desiredTrimPoint)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return convertedMessages.slice(trimStartIdx)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
persistRunResult(threadId: ThreadId, runId: RunId, messages: Message[]): void {
|
|
90
|
-
const finalAssistant = extractFinalResponse(messages)
|
|
91
|
-
if (!finalAssistant || !finalAssistant.content) return
|
|
92
|
-
|
|
93
|
-
this.ensureThread(threadId)
|
|
94
|
-
this.threads.get(threadId)?.push({
|
|
95
|
-
id: generateMessageId(),
|
|
96
|
-
threadId,
|
|
97
|
-
role: 'assistant',
|
|
98
|
-
content: finalAssistant.content,
|
|
99
|
-
runId,
|
|
100
|
-
createdAt: new Date().toISOString(),
|
|
101
|
-
})
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
addUserMessage(threadId: ThreadId, content: string): MessageId {
|
|
105
|
-
this.ensureThread(threadId)
|
|
106
|
-
const id = generateMessageId()
|
|
107
|
-
this.threads.get(threadId)?.push({
|
|
108
|
-
id,
|
|
109
|
-
threadId,
|
|
110
|
-
role: 'user',
|
|
111
|
-
content,
|
|
112
|
-
createdAt: new Date().toISOString(),
|
|
113
|
-
})
|
|
114
|
-
return id
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
hasThread(threadId: ThreadId): boolean {
|
|
118
|
-
return this.threads.has(threadId)
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
createThread(threadId: ThreadId): boolean {
|
|
122
|
-
if (this.threads.has(threadId)) return false
|
|
123
|
-
this.threads.set(threadId, [])
|
|
124
|
-
return true
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
deleteThread(threadId: ThreadId): boolean {
|
|
128
|
-
return this.threads.delete(threadId)
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
messageCount(threadId: ThreadId): number {
|
|
132
|
-
return this.threads.get(threadId)?.length ?? 0
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
clear(): void {
|
|
136
|
-
this.threads.clear()
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
private ensureThread(threadId: ThreadId): void {
|
|
140
|
-
if (!this.threads.has(threadId)) {
|
|
141
|
-
this.threads.set(threadId, [])
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { RunId, ThreadId } from '../ids/index.js'
|
|
2
|
-
import type { Message } from '../message/index.js'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated Use `SessionStore` from `@namzu/sdk` (import via
|
|
6
|
-
* `types/session/store.ts` or the root barrel). `ConversationStore` is
|
|
7
|
-
* thread-scoped and does not carry the `tenantId` required by
|
|
8
|
-
* session-hierarchy.md §12.1. Scheduled for removal in 0.3.0; the one-
|
|
9
|
-
* version migration window follows session-hierarchy.md §13.1.
|
|
10
|
-
*/
|
|
11
|
-
export interface ConversationStore {
|
|
12
|
-
loadMessages(threadId: ThreadId): Message[]
|
|
13
|
-
|
|
14
|
-
persistRunResult(threadId: ThreadId, runId: RunId, messages: Message[]): void
|
|
15
|
-
}
|