diff --git a/apps/cli/tests/profiles/headless/tests/harness.ts b/apps/cli/tests/profiles/headless/tests/harness.ts index cf51dc23a6..43164c9d7b 100644 --- a/apps/cli/tests/profiles/headless/tests/harness.ts +++ b/apps/cli/tests/profiles/headless/tests/harness.ts @@ -11,7 +11,7 @@ import * as ToolTodo from '@deepseek-ai/dsh-tool-todo' import * as LlmDeepSeek from '@deepseek-ai/dsh-llm-deepseek-api-key' import TokenMeter from '@deepseek-ai/dsh-token-meter' import ToolResultPruner from '@deepseek-ai/dsh-compaction-tool-result-pruner' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as SessionCheckpointPolicy from '@deepseek-ai/dsh-session-checkpoint-policy' import { BasicCompactionEngine } from '@deepseek-ai/dsh-compaction-basic' import type { BasicCompactionConfig } from '@deepseek-ai/dsh-compaction-basic' diff --git a/apps/cli/tests/profiles/headless/tests/semantic-checkpoint.expected.e2e.ts b/apps/cli/tests/profiles/headless/tests/semantic-checkpoint.expected.e2e.ts index e2815248f0..6ef2b9b331 100644 --- a/apps/cli/tests/profiles/headless/tests/semantic-checkpoint.expected.e2e.ts +++ b/apps/cli/tests/profiles/headless/tests/semantic-checkpoint.expected.e2e.ts @@ -11,7 +11,7 @@ import { import { LOADER_SMOKE_TEST_TIMEOUT_MS, runLoaderSmoke } from '@deepseek-ai/dsh-loader-smoke' import { createUserMessage, ToolCallId, createMessage } from '@deepseek-ai/dsh-llm' import { SessionSeq, SESSION_FORMAT_VERSION, SessionId, type SessionEvent, type SessionHeader } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { logPath } from '../../../../../../packages/session/session-persistence-jsonl/src/format.ts' import { describe, expect, it } from 'vitest' diff --git a/apps/cli/tests/profiles/headless/tests/session-format-guard.expected.e2e.ts b/apps/cli/tests/profiles/headless/tests/session-format-guard.expected.e2e.ts index 1574c2cab1..e5a66ed914 100644 --- a/apps/cli/tests/profiles/headless/tests/session-format-guard.expected.e2e.ts +++ b/apps/cli/tests/profiles/headless/tests/session-format-guard.expected.e2e.ts @@ -17,7 +17,7 @@ import { type SessionEvent, type SessionHeader, } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { generationLogFilename, generationLogPath, diff --git a/apps/cli/tests/profiles/headless/tests/subagent-diagnostic.expected.e2e.ts b/apps/cli/tests/profiles/headless/tests/subagent-diagnostic.expected.e2e.ts index cec8642309..941d95c31d 100644 --- a/apps/cli/tests/profiles/headless/tests/subagent-diagnostic.expected.e2e.ts +++ b/apps/cli/tests/profiles/headless/tests/subagent-diagnostic.expected.e2e.ts @@ -16,7 +16,7 @@ import { import { LOADER_SMOKE_TEST_TIMEOUT_MS, runLoaderSmoke } from '@deepseek-ai/dsh-loader-smoke' import { createMessage, createUserMessage } from '@deepseek-ai/dsh-llm' import { SessionSeq, SESSION_FORMAT_VERSION, SessionId, type SessionEvent, type SessionHeader } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { describe, expect, it } from 'vitest' const fixtureDir = fileURLToPath(new URL('./expected/subagent-diagnostic', import.meta.url)) diff --git a/apps/cli/tests/profiles/headless/tests/subagent-inheritance.expected.e2e.ts b/apps/cli/tests/profiles/headless/tests/subagent-inheritance.expected.e2e.ts index 52df6db0d9..adaf678278 100644 --- a/apps/cli/tests/profiles/headless/tests/subagent-inheritance.expected.e2e.ts +++ b/apps/cli/tests/profiles/headless/tests/subagent-inheritance.expected.e2e.ts @@ -16,7 +16,7 @@ import { import { LOADER_SMOKE_TEST_TIMEOUT_MS, runLoaderSmoke } from '@deepseek-ai/dsh-loader-smoke' import { createMessage, createUserMessage, ReasoningEffortId } from '@deepseek-ai/dsh-llm' import { SessionSeq, SESSION_FORMAT_VERSION, SessionId, type SessionEvent, type SessionHeader } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { describe, expect, it } from 'vitest' const fixtureDir = fileURLToPath(new URL('./expected/subagent-inheritance', import.meta.url)) diff --git a/apps/cli/tests/profiles/headless/tests/workspace-context-resume.expected.e2e.ts b/apps/cli/tests/profiles/headless/tests/workspace-context-resume.expected.e2e.ts index aa6da3ad23..6dcc842cf9 100644 --- a/apps/cli/tests/profiles/headless/tests/workspace-context-resume.expected.e2e.ts +++ b/apps/cli/tests/profiles/headless/tests/workspace-context-resume.expected.e2e.ts @@ -23,7 +23,7 @@ import { type SessionEvent, type SessionHeader, } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { logPath } from '../../../../../../packages/session/session-persistence-jsonl/src/format.ts' import { renderAgentInstructions } from '@deepseek-ai/dsh-agent-instructions' import { resolveConfig, workspaceBaselineIdentity } from '@deepseek-ai/dsh-agent-instructions/src/config.ts' diff --git a/apps/web/tests/scaffold.ts b/apps/web/tests/scaffold.ts index 8009cf4453..ebd87bb814 100644 --- a/apps/web/tests/scaffold.ts +++ b/apps/web/tests/scaffold.ts @@ -78,7 +78,7 @@ import { type SessionEvent, type SessionHeader, } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' // Empty type imports carry the webServer/agents/sessionPersistence Context merges. import type {} from '@deepseek-ai/dsh-host-webserver' import type {} from '@deepseek-ai/dsh-agent' diff --git a/benchmarks/agent-continuation/agent-continuation.worker.ts b/benchmarks/agent-continuation/agent-continuation.worker.ts index 91faa5f347..b19cc2c43c 100644 --- a/benchmarks/agent-continuation/agent-continuation.worker.ts +++ b/benchmarks/agent-continuation/agent-continuation.worker.ts @@ -9,7 +9,7 @@ import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-test import { createUserMessage, LlmAdapter } from '@deepseek-ai/dsh-llm' import type { GenerateOptions, LlmResolvedModelInfo, StreamChunk } from '@deepseek-ai/dsh-llm' import { SESSION_FORMAT_VERSION } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { defineContentToolFixture } from '@deepseek-ai/dsh-tools' import { assertBuiltBenchmarkRuntime } from '../support/built-worker.ts' import { PARENT_ID, response, resultText, syntheticHistory, TIME_ZERO, WORKLOAD } from './workload.ts' diff --git a/benchmarks/agent-continuation/child-catalog.worker.ts b/benchmarks/agent-continuation/child-catalog.worker.ts index 52e64fabf5..aedb279937 100644 --- a/benchmarks/agent-continuation/child-catalog.worker.ts +++ b/benchmarks/agent-continuation/child-catalog.worker.ts @@ -5,7 +5,7 @@ import { Context } from '@deepseek-ai/cordis' import { provideWorkingDirectoryFixture } from '@deepseek-ai/dsh-agent-loop-testkit' import SessionStore, { SESSION_FORMAT_VERSION, SessionId, SessionLogOffset, SessionSeq } from '@deepseek-ai/dsh-session' import type { SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import SessionQueryEngine from '@deepseek-ai/dsh-session-query' import SubagentRuntime, { SUBAGENT_DESCRIPTOR_VERSION } from '@deepseek-ai/dsh-subagent' diff --git a/benchmarks/session-corpus/projection-list.worker.ts b/benchmarks/session-corpus/projection-list.worker.ts index 78a60b5c06..106c520be2 100644 --- a/benchmarks/session-corpus/projection-list.worker.ts +++ b/benchmarks/session-corpus/projection-list.worker.ts @@ -9,7 +9,7 @@ import { Context } from '@deepseek-ai/cordis' import AgentRegistry from '@deepseek-ai/dsh-agent' import SessionController from '@deepseek-ai/dsh-api-session-controller' import SessionStore, { SESSION_FORMAT_VERSION, SessionId, SessionLogOffset, type SessionHeader } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import SessionProjectionCache, { projectionCacheDomainSpec } from '@deepseek-ai/dsh-session-projection-cache' import SqliteSessionQueryEngine from '@deepseek-ai/dsh-session-query-sqlite' diff --git a/benchmarks/session-corpus/session-corpus.worker.ts b/benchmarks/session-corpus/session-corpus.worker.ts index 8dabac10ca..c533852fa1 100644 --- a/benchmarks/session-corpus/session-corpus.worker.ts +++ b/benchmarks/session-corpus/session-corpus.worker.ts @@ -12,7 +12,7 @@ import SessionController from '@deepseek-ai/dsh-api-session-controller' import { currentSessionMessageProjections } from '@deepseek-ai/dsh-session-format-catalog/message-projections' import { Session, SessionLogOffset } from '@deepseek-ai/dsh-session' import type { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionProjectionCache, { checkpointRecord, projectionCacheDomainSpec } from '@deepseek-ai/dsh-session-projection-cache' import type { CheckpointRecord } from '@deepseek-ai/dsh-session-projection-cache' import SqliteSessionQueryEngine from '@deepseek-ai/dsh-session-query-sqlite' diff --git a/benchmarks/session-open/session-open.bench.ts b/benchmarks/session-open/session-open.bench.ts index 9868384c0a..9595ab6c89 100644 --- a/benchmarks/session-open/session-open.bench.ts +++ b/benchmarks/session-open/session-open.bench.ts @@ -6,7 +6,7 @@ import { join } from 'node:path' import { afterAll, beforeAll, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' import { Session, SessionId, SESSION_FORMAT_VERSION } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { runBuiltBenchmarkWorker, type BuiltBenchmarkWorkerRun, diff --git a/benchmarks/session-open/session-open.worker.ts b/benchmarks/session-open/session-open.worker.ts index b1e2bfec1d..2b6d644960 100644 --- a/benchmarks/session-open/session-open.worker.ts +++ b/benchmarks/session-open/session-open.worker.ts @@ -13,7 +13,7 @@ import SessionStore, { SessionPreparation, } from '@deepseek-ai/dsh-session' import type { AgentHandle } from '@deepseek-ai/dsh-agent' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import SessionQueryEngine from '@deepseek-ai/dsh-session-query' import type { diff --git a/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.i18n.yaml b/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.i18n.yaml index 864026a341..57d0ff470e 100644 --- a/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.i18n.yaml +++ b/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.i18n.yaml @@ -3,14 +3,14 @@ # After editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md /: - en: 88b687538d1f2b66 - zh: b8b233fc2711af64 + en: eff30513d0de970b + zh: c16a32f374bd07e1 /mount-jsonl-persistence-through-its-plugin: en: ae3ff407a497cf5c zh: 1b71e651967b8255 /mount-jsonl-persistence-through-its-plugin/change: - en: b2748e1990b95fc3 - zh: c274bcb571a8fc8c + en: ea5defddc1a9b989 + zh: 97902f22a4196b12 /mount-jsonl-persistence-through-its-plugin/migration: - en: fcc0bf0faa908d24 - zh: 0fddf19c4ad6c60b + en: 93d9f202c59303e9 + zh: c5ced26ed819d7c5 diff --git a/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md b/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md index 613cbc0125..a05bdef3eb 100644 --- a/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md +++ b/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md @@ -1,6 +1,6 @@ --- kind: upgrade-guide -description: "The JSONL persistence default export is a plugin object; direct service-class construction and class type annotations must use the persistence service instead." +description: "JSONL persistence uses a namespace plugin import; direct service-class construction and class type annotations must use the persistence service instead." --- # Mount JSONL persistence through its plugin @@ -9,10 +9,10 @@ English | [中文](guide.zh.md) ## Change -The default export of `@deepseek-ai/dsh-session-persistence-jsonl` is a plugin object rather than the service class. Existing default imports and `ctx.plugin(JsonlSessionPersistence, config)` calls remain valid. Direct construction, subclassing, `instanceof`, and class type annotations are affected. The plugin retains listeners and handles through the consumer unloads triggered by removing this provider; concurrent root disposal remains unordered. The `sessionPersistence` service API, YAML configuration, and stored files remain unchanged. +`@deepseek-ai/dsh-session-persistence-jsonl` exports a function plugin through named `name`, `Config`, and `apply` exports, with no default export. Default imports, direct construction, subclassing, `instanceof`, and class type annotations are affected. The plugin retains listeners and handles through the consumer unloads triggered by removing this provider; concurrent root disposal remains unordered. The `sessionPersistence` service API, YAML configuration, and stored files remain unchanged. ## Migration -1. Replace direct construction with `ctx.plugin(JsonlSessionPersistence, config)`, using the existing default import. Consumers declare `inject: ['sessionPersistence']` and access `ctx.sessionPersistence`. +1. Replace the default import with `import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl'`. Existing `ctx.plugin(JsonlSessionPersistence, config)` calls remain valid; replace direct construction with this mounting call. For dynamic imports, use the module namespace returned by `await import(...)` instead of its `.default`. Consumers declare `inject: ['sessionPersistence']` and access `ctx.sessionPersistence`. 2. Use the `SessionPersistence` type from `@deepseek-ai/dsh-session-persistence` for service annotations. Replace concrete-class `instanceof` checks and subclasses with consumers of that service; the concrete JSONL class is private. 3. Await plugin startup and confirm a session can be created, flushed, and reopened. Register asynchronous consumer cleanup in the scope that injects `sessionPersistence` so backend unloading waits for it. diff --git a/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md b/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md index 80b4cd0327..0cf8323713 100644 --- a/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md +++ b/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md @@ -1,6 +1,6 @@ --- kind: upgrade-guide -description: "JSONL 持久化的默认导出是插件对象;直接构造服务类和类类型标注需要改用持久化服务。" +description: "JSONL 持久化使用插件命名空间导入;直接构造服务类和类类型标注需要改用持久化服务。" --- # 通过插件挂载 JSONL 持久化 @@ -9,10 +9,10 @@ description: "JSONL 持久化的默认导出是插件对象;直接构造服务 ## 变更 -`@deepseek-ai/dsh-session-persistence-jsonl` 的默认导出是插件对象,不再是服务类。现有的默认导入和 `ctx.plugin(JsonlSessionPersistence, config)` 调用仍然有效。直接构造、继承、`instanceof` 和类类型标注会受到影响。插件会保留监听器和句柄,直到移除该提供者所触发的消费者卸载完成;根作用域的并发卸载仍不保证顺序。`sessionPersistence` 服务 API、YAML 配置和存储文件保持不变。 +`@deepseek-ai/dsh-session-persistence-jsonl` 通过命名导出的 `name`、`Config` 和 `apply` 提供函数插件,没有默认导出。默认导入、直接构造、继承、`instanceof` 和类类型标注会受到影响。插件会保留监听器和句柄,直到移除该提供者所触发的消费者卸载完成;根作用域的并发卸载仍不保证顺序。`sessionPersistence` 服务 API、YAML 配置和存储文件保持不变。 ## 迁移 -1. 将直接构造改为 `ctx.plugin(JsonlSessionPersistence, config)`,保留现有默认导入。消费者声明 `inject: ['sessionPersistence']` 并访问 `ctx.sessionPersistence`。 +1. 将默认导入替换为 `import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl'`。现有的 `ctx.plugin(JsonlSessionPersistence, config)` 调用仍然有效;将直接构造改为该挂载调用。动态导入直接使用 `await import(...)` 返回的模块命名空间,不再取其 `.default`。消费者声明 `inject: ['sessionPersistence']` 并访问 `ctx.sessionPersistence`。 2. 服务类型标注使用 `@deepseek-ai/dsh-session-persistence` 的 `SessionPersistence` 类型。将针对具体类的 `instanceof` 检查和子类改为消费该服务;具体 JSONL 类是私有的。 3. 等待插件启动完成,确认能够创建、flush 并重新打开会话。将消费者的异步清理注册到注入 `sessionPersistence` 的作用域中,以便后端卸载时等待它完成。 diff --git a/packages/acp/acp/tests/harness.ts b/packages/acp/acp/tests/harness.ts index 51d89dab25..12ee80b95b 100644 --- a/packages/acp/acp/tests/harness.ts +++ b/packages/acp/acp/tests/harness.ts @@ -23,7 +23,7 @@ import type { ImageAttachmentLimits, ImageAttachmentRef, SaveImageAttachment, St import { type GenerateOptions, LlmAdapter, ReasoningEffortId, type LlmResolvedModelInfo, type StreamChunk } from '@deepseek-ai/dsh-llm' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import TokenMeter from '@deepseek-ai/dsh-token-meter' import * as AcpPlugin from '../src/index.ts' import type { AcpConfig } from '../src/index.ts' diff --git a/packages/api/session-controller/tests/projection-discovery.host.spec.ts b/packages/api/session-controller/tests/projection-discovery.host.spec.ts index 0a14c90f0a..fcfe1a4820 100644 --- a/packages/api/session-controller/tests/projection-discovery.host.spec.ts +++ b/packages/api/session-controller/tests/projection-discovery.host.spec.ts @@ -9,7 +9,7 @@ import AgentRegistry from '@deepseek-ai/dsh-agent' import SessionStore, { SESSION_FORMAT_VERSION, SessionId, SessionLogOffset, SessionSeq } from '@deepseek-ai/dsh-session' import type { SessionHeader } from '@deepseek-ai/dsh-session' import type { SessionPersistenceSnapshot } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import SessionProjectionCache, { checkpointRecord, diff --git a/packages/core/agent-loop/tests/config-session-id.spec.ts b/packages/core/agent-loop/tests/config-session-id.spec.ts index 8d3f5fcd4b..0d73ab4ba7 100644 --- a/packages/core/agent-loop/tests/config-session-id.spec.ts +++ b/packages/core/agent-loop/tests/config-session-id.spec.ts @@ -13,7 +13,7 @@ import ToolRuntime from '@deepseek-ai/dsh-tools' import AgentRegistry, { type Agent } from '@deepseek-ai/dsh-agent' import type { SessionHandle } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import AgentLoop, { CONFIGURED_AGENT_IDENTITIES_KEY } from '@deepseek-ai/dsh-agent-loop' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import { MockAdapter, textResponse } from './mock-adapter.ts' diff --git a/packages/core/agent-loop/tests/resource-lifecycle.spec.ts b/packages/core/agent-loop/tests/resource-lifecycle.spec.ts index 4ed14d48a4..8a0a66df12 100644 --- a/packages/core/agent-loop/tests/resource-lifecycle.spec.ts +++ b/packages/core/agent-loop/tests/resource-lifecycle.spec.ts @@ -8,7 +8,7 @@ import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { createUserMessage, ToolCallId } from '@deepseek-ai/dsh-llm' import SubagentRuntime from '@deepseek-ai/dsh-subagent' import LocalJobRegistry from '@deepseek-ai/dsh-jobs-local' diff --git a/packages/core/agent-loop/tests/resume.spec.ts b/packages/core/agent-loop/tests/resume.spec.ts index 8600daf2d8..287593936e 100644 --- a/packages/core/agent-loop/tests/resume.spec.ts +++ b/packages/core/agent-loop/tests/resume.spec.ts @@ -13,7 +13,7 @@ import ToolRuntime, { defineContentToolFixture, TOOL_RUNTIME_SCHEDULER } from '@ import AgentRegistry, { type Agent } from '@deepseek-ai/dsh-agent' import type { SessionHandle } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import { MockAdapter, textResponse } from './mock-adapter.ts' diff --git a/packages/core/agent-loop/tests/serial-listener-review.spec.ts b/packages/core/agent-loop/tests/serial-listener-review.spec.ts index 5246d2cab4..ad08e9802d 100644 --- a/packages/core/agent-loop/tests/serial-listener-review.spec.ts +++ b/packages/core/agent-loop/tests/serial-listener-review.spec.ts @@ -5,7 +5,7 @@ import { tmpdir } from 'node:os' import { join } from 'node:path' import { Context } from '@deepseek-ai/cordis' import AgentLoop from '@deepseek-ai/dsh-agent-loop' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { SessionId } from '@deepseek-ai/dsh-session' import { defineContentToolFixture } from '@deepseek-ai/dsh-tools' diff --git a/packages/core/agent-loop/tests/shutdown-drain.spec.ts b/packages/core/agent-loop/tests/shutdown-drain.spec.ts index 977aced841..d89928395b 100644 --- a/packages/core/agent-loop/tests/shutdown-drain.spec.ts +++ b/packages/core/agent-loop/tests/shutdown-drain.spec.ts @@ -12,7 +12,7 @@ import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import SystemPrompt from '@deepseek-ai/dsh-system-prompt' import ToolRuntime from '@deepseek-ai/dsh-tools' import AgentRegistry, { type Agent } from '@deepseek-ai/dsh-agent' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { MockAdapter, textResponse } from './mock-adapter.ts' diff --git a/packages/experimental/agent-team/tests/persistence.spec.ts b/packages/experimental/agent-team/tests/persistence.spec.ts index db3d1f9ca1..a0cbf244e4 100644 --- a/packages/experimental/agent-team/tests/persistence.spec.ts +++ b/packages/experimental/agent-team/tests/persistence.spec.ts @@ -9,7 +9,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { createUserMessage } from '@deepseek-ai/dsh-llm' import { SessionId, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SubagentService, { snapshotSubagentDescriptor } from '@deepseek-ai/dsh-subagent' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' import { MockAdapter, textResponse } from '../../../core/agent-loop/tests/mock-adapter.ts' diff --git a/packages/experimental/agent-team/tests/team.spec.ts b/packages/experimental/agent-team/tests/team.spec.ts index ec79684726..34a9a25afd 100644 --- a/packages/experimental/agent-team/tests/team.spec.ts +++ b/packages/experimental/agent-team/tests/team.spec.ts @@ -8,7 +8,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { createUserMessage } from '@deepseek-ai/dsh-llm' import { SessionLogOffset, SessionId, type Session, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SubagentService from '@deepseek-ai/dsh-subagent' import { deliverSubagentPrompt, type HostPromptDeliverer } from '@deepseek-ai/dsh-subagent/internal' import * as SubagentFork from '@deepseek-ai/dsh-subagent-fork-in-process' diff --git a/packages/experimental/browser-use-runtime/tests/mcp.spec.ts b/packages/experimental/browser-use-runtime/tests/mcp.spec.ts index a0a4d1b5cc..d9c4465447 100644 --- a/packages/experimental/browser-use-runtime/tests/mcp.spec.ts +++ b/packages/experimental/browser-use-runtime/tests/mcp.spec.ts @@ -14,7 +14,7 @@ import { PtcRuntime } from '@deepseek-ai/dsh-ptc-runtime' import Llm, { LlmAdapter, ToolCallId, createUserMessage } from '@deepseek-ai/dsh-llm' import type { GenerateOptions, LlmResolvedModelInfo, StreamChunk } from '@deepseek-ai/dsh-llm' import Sessions, { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import Agents from '@deepseek-ai/dsh-agent' import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' diff --git a/packages/experimental/claude-code-mods/tests/directory-resume.spec.ts b/packages/experimental/claude-code-mods/tests/directory-resume.spec.ts index 2fe573c178..4eaca147ea 100644 --- a/packages/experimental/claude-code-mods/tests/directory-resume.spec.ts +++ b/packages/experimental/claude-code-mods/tests/directory-resume.spec.ts @@ -8,7 +8,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import LocalFileSystem from '@deepseek-ai/dsh-fs-local' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import WorkingDirectory from '@deepseek-ai/dsh-working-directory' import ClaudeCodeMods, { defineMod } from '../src/index.ts' diff --git a/packages/experimental/client-ui-cot-translation/tests/activation.host.spec.ts b/packages/experimental/client-ui-cot-translation/tests/activation.host.spec.ts index 534d6d3408..715e149dd8 100644 --- a/packages/experimental/client-ui-cot-translation/tests/activation.host.spec.ts +++ b/packages/experimental/client-ui-cot-translation/tests/activation.host.spec.ts @@ -9,7 +9,7 @@ import { mountAgentLoopTestDependencies, mountAgentLoopTestHarness } from '@deep import SessionController from '@deepseek-ai/dsh-api-session-controller' import Translator from '@deepseek-ai/dsh-experimental-translator' import { SESSION_FORMAT_VERSION, SessionId, SessionSeq } from '@deepseek-ai/dsh-session' -import JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionQuery from '@deepseek-ai/dsh-session-query' import TypertRegistry from '@deepseek-ai/dsh-typert-registry' import { RemoteError } from '@deepseek-ai/dsh-typert-protocol' diff --git a/packages/experimental/hooks-claude-code/tests/coverage-cases.ts b/packages/experimental/hooks-claude-code/tests/coverage-cases.ts index b77aa85c96..82ea12294f 100644 --- a/packages/experimental/hooks-claude-code/tests/coverage-cases.ts +++ b/packages/experimental/hooks-claude-code/tests/coverage-cases.ts @@ -7,7 +7,7 @@ import { tmpdir } from 'node:os' import { join } from 'node:path' import { Context } from '@deepseek-ai/cordis' import { SessionId, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { defineContentToolFixture } from '@deepseek-ai/dsh-tools' import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' diff --git a/packages/experimental/hooks-codex/tests/coverage-cases.ts b/packages/experimental/hooks-codex/tests/coverage-cases.ts index 499a4a8fc1..f3458daeab 100644 --- a/packages/experimental/hooks-codex/tests/coverage-cases.ts +++ b/packages/experimental/hooks-codex/tests/coverage-cases.ts @@ -7,7 +7,7 @@ import { tmpdir } from 'node:os' import { join } from 'node:path' import { Context } from '@deepseek-ai/cordis' import { SessionId, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { defineContentToolFixture } from '@deepseek-ai/dsh-tools' import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' diff --git a/packages/experimental/tool-agent-team/tests/tool-team.spec.ts b/packages/experimental/tool-agent-team/tests/tool-team.spec.ts index ec4c795c01..83c082a82d 100644 --- a/packages/experimental/tool-agent-team/tests/tool-team.spec.ts +++ b/packages/experimental/tool-agent-team/tests/tool-team.spec.ts @@ -9,7 +9,7 @@ import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-test import { ToolCallId, createUserMessage } from '@deepseek-ai/dsh-llm' import { scopeOf } from '@deepseek-ai/dsh-scope' import { SessionId, SessionLogOffset } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionQueryEngine from '@deepseek-ai/dsh-session-query' import SubagentService from '@deepseek-ai/dsh-subagent' import * as SubagentFork from '@deepseek-ai/dsh-subagent-fork-in-process' diff --git a/packages/experimental/tool-ralph/tests/integration.spec.ts b/packages/experimental/tool-ralph/tests/integration.spec.ts index 457b1270a1..a12a52ddf6 100644 --- a/packages/experimental/tool-ralph/tests/integration.spec.ts +++ b/packages/experimental/tool-ralph/tests/integration.spec.ts @@ -10,7 +10,7 @@ import { createUserMessage, ToolCallId } from '@deepseek-ai/dsh-llm' import { SessionId } from '@deepseek-ai/dsh-session' import SubagentRuntime from '@deepseek-ai/dsh-subagent' import { STRUCTURED_OUTPUT_TOOL } from '@deepseek-ai/dsh-subagent' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as spawn from '@deepseek-ai/dsh-subagent-spawn-in-process' import PtcWorkflowEngine from '@deepseek-ai/dsh-workflow-ptc' import { MockAdapter, maxTokensResponse, textResponse, toolCallResponse } from '../../../core/agent-loop/tests/mock-adapter.ts' diff --git a/packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts b/packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts index ed6402865f..566e34478a 100644 --- a/packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts +++ b/packages/experimental/tool-session-query/tests/sqlite-integration.spec.ts @@ -13,7 +13,7 @@ import SessionStore, { } from '@deepseek-ai/dsh-session' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import { turnBoundaryProjectionDefinition } from '@deepseek-ai/dsh-agent-loop' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SqliteSessionQueryEngine from '@deepseek-ai/dsh-session-query-sqlite' import SystemPrompt from '@deepseek-ai/dsh-system-prompt' import ToolRuntime from '@deepseek-ai/dsh-tools' diff --git a/packages/experimental/translator/tests/audit.spec.ts b/packages/experimental/translator/tests/audit.spec.ts index b0be4945a3..89f863fca9 100644 --- a/packages/experimental/translator/tests/audit.spec.ts +++ b/packages/experimental/translator/tests/audit.spec.ts @@ -41,6 +41,7 @@ describe('common paid translation persistence', () => { it.each(['caller cancellation', 'provider deadline'] as const)( 'keeps a pending result ahead of an immediate retry after %s without billing again', async (interruption) => { const b = await paidFixture(cleanups, { translator: { deepseekTimeoutMs: 60_000 } }), backend = b.ctx.sessionPersistence as SessionPersistence & Pick + expect(typeof backend.persistBatch).toBe('function') const entered = Promise.withResolvers(), release = Promise.withResolvers() cleanups.push(async () => { release.resolve(undefined) }) const persist = backend.persistBatch.bind(backend) diff --git a/packages/experimental/translator/tests/deepseek.e2e.ts b/packages/experimental/translator/tests/deepseek.e2e.ts index 1d8515d400..d36d0af614 100644 --- a/packages/experimental/translator/tests/deepseek.e2e.ts +++ b/packages/experimental/translator/tests/deepseek.e2e.ts @@ -3,7 +3,7 @@ import type { ModuleLoaderV2 } from '@deepseek-ai/cordis-plugin-loader' import { boot } from '@deepseek-ai/dsh-app-boot' import LlmRuntime from '@deepseek-ai/dsh-llm' import SessionStore, { SessionId } from '@deepseek-ai/dsh-session' -import JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as Official from '@deepseek-ai/dsh-llm-deepseek-api-key' import { mkdtemp, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/experimental/translator/tests/paid-fixture.ts b/packages/experimental/translator/tests/paid-fixture.ts index f6ea7d6577..d5d0f744d2 100644 --- a/packages/experimental/translator/tests/paid-fixture.ts +++ b/packages/experimental/translator/tests/paid-fixture.ts @@ -3,7 +3,7 @@ import type { ModuleLoaderV2 } from '@deepseek-ai/cordis-plugin-loader' import { boot } from '@deepseek-ai/dsh-app-boot' import LlmRuntime from '@deepseek-ai/dsh-llm' import SessionStore, { SESSION_FORMAT_VERSION, SessionId, SessionSeq, type Session, type SessionEvent, type SessionHeader } from '@deepseek-ai/dsh-session' -import JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SqliteSessionQuery from '@deepseek-ai/dsh-session-query-sqlite' import * as Official from '@deepseek-ai/dsh-llm-deepseek-api-key' import * as Account from '@deepseek-ai/dsh-llm-deepseek-account' diff --git a/packages/experimental/translator/tests/storage-fixture.ts b/packages/experimental/translator/tests/storage-fixture.ts index f6424d8acc..5ef422c9cc 100644 --- a/packages/experimental/translator/tests/storage-fixture.ts +++ b/packages/experimental/translator/tests/storage-fixture.ts @@ -5,7 +5,7 @@ import { boot } from '@deepseek-ai/dsh-app-boot' import { createAssistantMessage, createUserMessage } from '@deepseek-ai/dsh-llm' import SessionStore, { SESSION_FORMAT_VERSION, SessionId, SessionSeq, type Session, type SessionEvent, type SessionHeader } from '@deepseek-ai/dsh-session' import type { SessionHandle } from '@deepseek-ai/dsh-session-persistence' -import JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { once } from 'node:events' import { mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises' import { createServer, type IncomingMessage, type ServerResponse } from 'node:http' diff --git a/packages/feedback/message-feedback/tests/loader-composition.spec.ts b/packages/feedback/message-feedback/tests/loader-composition.spec.ts index 21cfa4fe44..96220114bd 100644 --- a/packages/feedback/message-feedback/tests/loader-composition.spec.ts +++ b/packages/feedback/message-feedback/tests/loader-composition.spec.ts @@ -7,7 +7,7 @@ import { Context } from '@deepseek-ai/cordis' import Include from '@deepseek-ai/cordis-plugin-include' import Loader from '@deepseek-ai/cordis-plugin-loader' import SessionStore, { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { remoteMethods } from '@deepseek-ai/dsh-typert-protocol' import MessageFeedbackService from '../src/index.ts' import { appendMessageFixture } from './helpers.ts' diff --git a/packages/llm/llm-retry/tests/persistence.spec.ts b/packages/llm/llm-retry/tests/persistence.spec.ts index c4b9e8bec2..213b60c201 100644 --- a/packages/llm/llm-retry/tests/persistence.spec.ts +++ b/packages/llm/llm-retry/tests/persistence.spec.ts @@ -4,7 +4,7 @@ import { join } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' import SessionStore, { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { RetryId } from '@deepseek-ai/dsh-llm-retry' import type {} from '../src/index.ts' diff --git a/packages/schedule/schedule/tests/serial-delivery.spec.ts b/packages/schedule/schedule/tests/serial-delivery.spec.ts index 77504bd554..bb229e52b2 100644 --- a/packages/schedule/schedule/tests/serial-delivery.spec.ts +++ b/packages/schedule/schedule/tests/serial-delivery.spec.ts @@ -9,7 +9,7 @@ import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import Storage from '@deepseek-ai/dsh-storage' import * as StorageDomain from '@deepseek-ai/dsh-storage-domain' import * as StorageJson from '@deepseek-ai/dsh-storage-json' diff --git a/packages/sdk/server/tests/built-scope-carrier.e2e.ts b/packages/sdk/server/tests/built-scope-carrier.e2e.ts index a169d9a99f..e5eb8585a1 100644 --- a/packages/sdk/server/tests/built-scope-carrier.e2e.ts +++ b/packages/sdk/server/tests/built-scope-carrier.e2e.ts @@ -29,7 +29,7 @@ const [ { default: AgentLoop }, { mountAgentLoopTestDependencies }, { default: SubagentRuntime }, - { default: JsonlSessionPersistence }, + JsonlSessionPersistence, { HarnessSdkJsonRpcServer }, { SessionId }, ] = await Promise.all([ diff --git a/packages/sdk/server/tests/plugin-apply.spec.ts b/packages/sdk/server/tests/plugin-apply.spec.ts index 230314355c..9236dfcf26 100644 --- a/packages/sdk/server/tests/plugin-apply.spec.ts +++ b/packages/sdk/server/tests/plugin-apply.spec.ts @@ -13,7 +13,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { LlmAdapter } from '@deepseek-ai/dsh-llm' import type { GenerateOptions, StreamChunk } from '@deepseek-ai/dsh-llm' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as jsonrpc from '../src/index.ts' /** diff --git a/packages/sdk/server/tests/server.spec.ts b/packages/sdk/server/tests/server.spec.ts index 4eee2a2d82..df2a28403e 100644 --- a/packages/sdk/server/tests/server.spec.ts +++ b/packages/sdk/server/tests/server.spec.ts @@ -17,7 +17,7 @@ import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-test import { MockAdapter, textResponse } from '../../../core/agent-loop/tests/mock-adapter.ts' import SessionStore, { SessionId, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as LlmDeepSeek from '@deepseek-ai/dsh-llm-deepseek-api-key' import SubagentRuntime, { SubagentRunId, type SubagentStartRequest, type SubagentRun, type SubagentResult, type SubagentRunEndInfo } from '@deepseek-ai/dsh-subagent' import type { JsonRpcTransportPeer } from '@deepseek-ai/dsh-sdk-protocol' diff --git a/packages/sdk/server/tests/wait.spec.ts b/packages/sdk/server/tests/wait.spec.ts index 02d202b367..7da1b35f21 100644 --- a/packages/sdk/server/tests/wait.spec.ts +++ b/packages/sdk/server/tests/wait.spec.ts @@ -9,7 +9,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { createUserMessage } from '@deepseek-ai/dsh-llm' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SubagentRuntime, { NO_START_CAPABILITIES } from '@deepseek-ai/dsh-subagent' import { MockAdapter, textResponse } from '../../../core/agent-loop/tests/mock-adapter.ts' import { HarnessSdkJsonRpcServer } from '../src/server.ts' diff --git a/packages/session-query/session-query-sqlite/tests/load-path.e2e.ts b/packages/session-query/session-query-sqlite/tests/load-path.e2e.ts index 2c5bae0cf0..4fbc5f836b 100644 --- a/packages/session-query/session-query-sqlite/tests/load-path.e2e.ts +++ b/packages/session-query/session-query-sqlite/tests/load-path.e2e.ts @@ -10,7 +10,7 @@ import { Context } from '@deepseek-ai/cordis' import Loader from '@deepseek-ai/cordis-plugin-loader' import SessionStore, { SessionSeq, SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SqliteSessionQueryEngine, * as queryModule from '@deepseek-ai/dsh-session-query-sqlite' import { mkdtemp, rm } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/session-query/session-query-sqlite/tests/sqlite.spec.ts b/packages/session-query/session-query-sqlite/tests/sqlite.spec.ts index dd1fb10489..122dc363da 100644 --- a/packages/session-query/session-query-sqlite/tests/sqlite.spec.ts +++ b/packages/session-query/session-query-sqlite/tests/sqlite.spec.ts @@ -22,7 +22,7 @@ import type { SessionPersistenceListOptions, SessionPersistenceSnapshot, } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SqliteSessionQueryEngine, { SESSION_QUERY_SQLITE_SCHEMA_VERSION, } from '@deepseek-ai/dsh-session-query-sqlite' diff --git a/packages/session/session-checkpoint-policy/tests/crash-recovery.e2e.ts b/packages/session/session-checkpoint-policy/tests/crash-recovery.e2e.ts index eee1f54536..06850e8869 100644 --- a/packages/session/session-checkpoint-policy/tests/crash-recovery.e2e.ts +++ b/packages/session/session-checkpoint-policy/tests/crash-recovery.e2e.ts @@ -9,7 +9,7 @@ import SessionStore, { SessionId, TOOL_OUTCOME_UNKNOWN, interruptedTurnClosers, type SessionEvent, } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' const repoRoot = fileURLToPath(new URL('../../../../', import.meta.url)) const childScript = fileURLToPath(new URL('./fixtures/crash-child.ts', import.meta.url)) diff --git a/packages/session/session-checkpoint-policy/tests/fixtures/crash-child.ts b/packages/session/session-checkpoint-policy/tests/fixtures/crash-child.ts index 83826090dd..7d3469787a 100644 --- a/packages/session/session-checkpoint-policy/tests/fixtures/crash-child.ts +++ b/packages/session/session-checkpoint-policy/tests/fixtures/crash-child.ts @@ -4,7 +4,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { createUserMessage, ToolCallId, type GenerateOptions, LlmAdapter, type StreamChunk } from '@deepseek-ai/dsh-llm' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as checkpointPolicy from '../../src/index.ts' function waitForCrash(): Promise { diff --git a/packages/session/session-log-deepseek/tests/feedback-composition.spec.ts b/packages/session/session-log-deepseek/tests/feedback-composition.spec.ts index 7dc716b41f..939591f15d 100644 --- a/packages/session/session-log-deepseek/tests/feedback-composition.spec.ts +++ b/packages/session/session-log-deepseek/tests/feedback-composition.spec.ts @@ -7,7 +7,7 @@ import { Context } from '@deepseek-ai/cordis' import Loader from '@deepseek-ai/cordis-plugin-loader' import Include from '@deepseek-ai/cordis-plugin-include' import SessionStore, { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import MessageFeedback from '@deepseek-ai/dsh-message-feedback' import { recordFeedback } from '@deepseek-ai/dsh-command-feedback' import LlmRuntime, { createAssistantMessage, createUserMessage } from '@deepseek-ai/dsh-llm' diff --git a/packages/session/session-persistence-jsonl/README.i18n.yaml b/packages/session/session-persistence-jsonl/README.i18n.yaml index ec248c9303..8821bbf6cb 100644 --- a/packages/session/session-persistence-jsonl/README.i18n.yaml +++ b/packages/session/session-persistence-jsonl/README.i18n.yaml @@ -27,8 +27,8 @@ en: e20cf32540d7c785 zh: 67e182529e9211ca /deepseek-ai-dsh-session-persistence-jsonl/use-this-package/durability-and-crash-semantics: - en: 53c2750ed8a5ebd5 - zh: a77f4fcc244ceaa0 + en: 96498792672f6d50 + zh: d767a9c69dced889 /deepseek-ai-dsh-session-persistence-jsonl/use-this-package/reading-the-logs: en: 3e53fc90a486d373 zh: 00e6c6e65c56629e diff --git a/packages/session/session-persistence-jsonl/README.md b/packages/session/session-persistence-jsonl/README.md index 0c7b8b4e85..b26e59a89f 100644 --- a/packages/session/session-persistence-jsonl/README.md +++ b/packages/session/session-persistence-jsonl/README.md @@ -77,7 +77,7 @@ A session is materialized lazily: `create(header)` writes nothing and returns th The current-generation scanner applies the current codec owner’s structural admission checks before recoverable-tail handling. Retired required PTC tags and `request/header.header.system` refuse the file even after an earlier malformed row; recovery never truncates them as ordinary damaged tail data. -Unloading the backend waits for the consumer unloads it triggers through `sessionPersistence` injection before removing live-event listeners and draining and closing remaining handles. Consumers must register cleanup in that injecting scope; unrelated scopes and explicit Session or handle closure have their own lifetimes. Programmatic mounting uses the default plugin export (`import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl'`) with `ctx.plugin`; access storage through `ctx.sessionPersistence`. +Unloading the backend waits for the consumer unloads it triggers through `sessionPersistence` injection before removing live-event listeners and draining and closing remaining handles. Consumers must register cleanup in that injecting scope; unrelated scopes and explicit Session or handle closure have their own lifetimes. Programmatic mounting uses the plugin namespace (`import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl'`) with `ctx.plugin`; access storage through `ctx.sessionPersistence`. ### Reading the logs diff --git a/packages/session/session-persistence-jsonl/README.zh.md b/packages/session/session-persistence-jsonl/README.zh.md index 1cff9d158c..fe87a1cbc3 100644 --- a/packages/session/session-persistence-jsonl/README.zh.md +++ b/packages/session/session-persistence-jsonl/README.zh.md @@ -77,7 +77,7 @@ kind: "package-reference" 当前代际扫描器在处理可恢复尾部之前,执行当前编解码器所有者的结构准入检查。已退役的必需 PTC 标签与 `request/header.header.system` 即使出现在较早的畸形行之后也会导致文件被拒绝;恢复绝不将它们作为普通损坏尾部数据截断。 -卸载后端时,会先等待经由 `sessionPersistence` 注入所触发的消费者卸载,再移除实时事件监听器、排空并关闭剩余句柄。消费者必须在该注入作用域中注册清理;无依赖关系的作用域,以及显式关闭的 Session 或句柄,各自遵循其生命周期。通过代码挂载时,使用默认插件导出(`import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl'`)调用 `ctx.plugin`,并通过 `ctx.sessionPersistence` 访问存储。 +卸载后端时,会先等待经由 `sessionPersistence` 注入所触发的消费者卸载,再移除实时事件监听器、排空并关闭剩余句柄。消费者必须在该注入作用域中注册清理;无依赖关系的作用域,以及显式关闭的 Session 或句柄,各自遵循其生命周期。通过代码挂载时,使用插件命名空间(`import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl'`)调用 `ctx.plugin`,并通过 `ctx.sessionPersistence` 访问存储。 ### 读取日志 diff --git a/packages/session/session-persistence-jsonl/src/index.ts b/packages/session/session-persistence-jsonl/src/index.ts index 78802a32c2..bc918a2d1b 100644 --- a/packages/session/session-persistence-jsonl/src/index.ts +++ b/packages/session/session-persistence-jsonl/src/index.ts @@ -1738,7 +1738,7 @@ export const Config: z = z.object({ */ export async function apply(ctx: Context, config: Config): Promise { let service!: Fiber - // An async generator awaits these thenable disposers, changing their registered identity. + // Keep this generator synchronous so thenable disposers are registered as functions, not awaited. ctx.effect(function* () { const tracker = new JsonlBackendTracker(name) yield tracker.install(ctx) @@ -1749,9 +1749,6 @@ export async function apply(ctx: Context, config: Config): Promise { }, }) yield service.dispose - }) + }, 'session-persistence-jsonl resources') await service.await() } - -/** JSONL persistence plugin, including its Loader configuration schema. */ -export default { name, Config, apply } diff --git a/packages/session/session-persistence-jsonl/tests/built-migration-worker.e2e.ts b/packages/session/session-persistence-jsonl/tests/built-migration-worker.e2e.ts index f7661d03b3..9b83326846 100644 --- a/packages/session/session-persistence-jsonl/tests/built-migration-worker.e2e.ts +++ b/packages/session/session-persistence-jsonl/tests/built-migration-worker.e2e.ts @@ -18,7 +18,7 @@ describe.skipIf(!built)('built migration verifier (plain node)', () => { import { Worker } from 'node:worker_threads' import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION } from '@deepseek-ai/dsh-session' - import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' + import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' const terminate = Worker.prototype.terminate let terminations = 0 diff --git a/packages/session/session-persistence-jsonl/tests/catalog-migration.perf.ts b/packages/session/session-persistence-jsonl/tests/catalog-migration.perf.ts index a866354449..761234c120 100644 --- a/packages/session/session-persistence-jsonl/tests/catalog-migration.perf.ts +++ b/packages/session/session-persistence-jsonl/tests/catalog-migration.perf.ts @@ -2,7 +2,7 @@ import { Context } from '@deepseek-ai/cordis' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { spawnSync } from 'node:child_process' import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/session/session-persistence-jsonl/tests/catalog-migration.spec.ts b/packages/session/session-persistence-jsonl/tests/catalog-migration.spec.ts index 6abb14c0db..610be06478 100644 --- a/packages/session/session-persistence-jsonl/tests/catalog-migration.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/catalog-migration.spec.ts @@ -1,7 +1,7 @@ import { Context } from '@deepseek-ai/cordis' import { SessionId, type SessionHeader } from '@deepseek-ai/dsh-session' import { SessionFormatUnsupportedError, SessionPersistenceCorruptionError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { afterEach, describe, expect, it, vi } from 'vitest' import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/session/session-persistence-jsonl/tests/content-admission.spec.ts b/packages/session/session-persistence-jsonl/tests/content-admission.spec.ts index e8e088220c..fd1d17df68 100644 --- a/packages/session/session-persistence-jsonl/tests/content-admission.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/content-admission.spec.ts @@ -4,7 +4,7 @@ import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session' import type { SessionFormatJsonObject } from '@deepseek-ai/dsh-session-format' import { SessionFormatUnsupportedError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { basename, dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/current-event-admission.spec.ts b/packages/session/session-persistence-jsonl/tests/current-event-admission.spec.ts index b7cbb7e6ee..ac57369d55 100644 --- a/packages/session/session-persistence-jsonl/tests/current-event-admission.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/current-event-admission.spec.ts @@ -1,6 +1,6 @@ import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION, SessionId, SessionSeq } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mkdir, mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/fixtures/lease-holder.mjs b/packages/session/session-persistence-jsonl/tests/fixtures/lease-holder.mjs index 613f06fa8e..bfb2638533 100644 --- a/packages/session/session-persistence-jsonl/tests/fixtures/lease-holder.mjs +++ b/packages/session/session-persistence-jsonl/tests/fixtures/lease-holder.mjs @@ -7,7 +7,7 @@ import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' const [root, sessionId] = process.argv.slice(2) const ctx = new Context() diff --git a/packages/session/session-persistence-jsonl/tests/jsonl.spec.ts b/packages/session/session-persistence-jsonl/tests/jsonl.spec.ts index ac55f88fdb..fb0da7bc9b 100644 --- a/packages/session/session-persistence-jsonl/tests/jsonl.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/jsonl.spec.ts @@ -8,7 +8,7 @@ import { scheduler } from 'node:timers/promises' import { SESSION_FORMAT_VERSION, SessionLogOffset, SessionSeq, SessionId } from '@deepseek-ai/dsh-session' import type { SessionEvent, SessionHeader } from '@deepseek-ai/dsh-session' import type { SessionPersistence } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { assertNoRetiredHeaderFields, encodeSegment, eventLines, generationLogFilename, generationLogPath, logPath, parseGenerationLogFilename, projectDir, projectKey, scanLog, sessionDir, SessionLogScanner, diff --git a/packages/session/session-persistence-jsonl/tests/lease.spec.ts b/packages/session/session-persistence-jsonl/tests/lease.spec.ts index f43af72681..f05f87e6f4 100644 --- a/packages/session/session-persistence-jsonl/tests/lease.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/lease.spec.ts @@ -25,7 +25,7 @@ import { SessionPersistenceNotFoundError, } from '@deepseek-ai/dsh-session-persistence' import type { SessionPersistence } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '../src/index.ts' +import * as JsonlSessionPersistence from '../src/index.ts' import { LEASE_FILENAME, SessionWriteLease } from '../src/lease.ts' import type { JsonlSessionHandle } from '../src/storage.ts' import { sessionDir } from '../src/format.ts' diff --git a/packages/session/session-persistence-jsonl/tests/lease.two-process.e2e.ts b/packages/session/session-persistence-jsonl/tests/lease.two-process.e2e.ts index 2cf0865787..625d5f0a38 100644 --- a/packages/session/session-persistence-jsonl/tests/lease.two-process.e2e.ts +++ b/packages/session/session-persistence-jsonl/tests/lease.two-process.e2e.ts @@ -16,7 +16,7 @@ import { afterEach, describe, expect, it } from 'vitest' import { Context } from '@deepseek-ai/cordis' import { SessionId, SessionSeq } from '@deepseek-ai/dsh-session' import { SessionAlreadyOwnedError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' const SESSION = 'two-process-lease' diff --git a/packages/session/session-persistence-jsonl/tests/load-path.spec.ts b/packages/session/session-persistence-jsonl/tests/load-path.spec.ts new file mode 100644 index 0000000000..ab265aa649 --- /dev/null +++ b/packages/session/session-persistence-jsonl/tests/load-path.spec.ts @@ -0,0 +1,15 @@ +/** JSONL plugin metadata must survive the Loader's module normalization. */ +import { expect, it } from 'vitest' +import Loader from '@deepseek-ai/cordis-plugin-loader' +import * as JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' + +it('retains the JSONL namespace and configuration through the Loader', () => { + expect('default' in JsonlPersistence).toBe(false) + const loader = Object.create(Loader.prototype) as Loader + const plugin = loader.unwrapExports(JsonlPersistence) as typeof JsonlPersistence + expect(plugin).toBe(JsonlPersistence) + expect(plugin.name).toBe('session-persistence-jsonl') + expect(plugin.Config).toBeDefined() + expect(plugin.Config).toBe(JsonlPersistence.Config) + expect(typeof plugin.apply).toBe('function') +}) diff --git a/packages/session/session-persistence-jsonl/tests/migration-refusal.spec.ts b/packages/session/session-persistence-jsonl/tests/migration-refusal.spec.ts index 36ecf12c72..8910993e07 100644 --- a/packages/session/session-persistence-jsonl/tests/migration-refusal.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/migration-refusal.spec.ts @@ -6,7 +6,7 @@ import { createSessionFormatCatalogWithChildren } from '@deepseek-ai/dsh-session import type { SessionEvent } from '@deepseek-ai/dsh-session' import type { SessionFormatJsonObject } from '@deepseek-ai/dsh-session-format' import { SessionFormatUnsupportedError, SessionPersistenceCorruptionError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { createHash } from 'node:crypto' import { mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/session/session-persistence-jsonl/tests/multi-edge-publication.spec.ts b/packages/session/session-persistence-jsonl/tests/multi-edge-publication.spec.ts index b081b39d73..162395fdef 100644 --- a/packages/session/session-persistence-jsonl/tests/multi-edge-publication.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/multi-edge-publication.spec.ts @@ -10,7 +10,7 @@ import { restoreReleasedV2Artifact, sessionFormatV1ToV2, } from '@deepseek-ai/dsh-session-format-v1-to-v2' import { SessionFormatUnsupportedError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { appendFile, mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { basename, dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/native-developer-admission.spec.ts b/packages/session/session-persistence-jsonl/tests/native-developer-admission.spec.ts index a067941a8f..3a5e456d2d 100644 --- a/packages/session/session-persistence-jsonl/tests/native-developer-admission.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/native-developer-admission.spec.ts @@ -2,7 +2,7 @@ import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session' import { SessionPersistenceCorruptionError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/native-source-admission.spec.ts b/packages/session/session-persistence-jsonl/tests/native-source-admission.spec.ts index 4e9cf2c22b..8ee9bf727a 100644 --- a/packages/session/session-persistence-jsonl/tests/native-source-admission.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/native-source-admission.spec.ts @@ -1,7 +1,7 @@ import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session' import { SessionPersistenceCorruptionError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/retired-content-admission.spec.ts b/packages/session/session-persistence-jsonl/tests/retired-content-admission.spec.ts index d46b759df3..1d10cb2fde 100644 --- a/packages/session/session-persistence-jsonl/tests/retired-content-admission.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/retired-content-admission.spec.ts @@ -2,7 +2,7 @@ import { Context } from '@deepseek-ai/cordis' import { SessionId } from '@deepseek-ai/dsh-session' import { SessionFormatUnsupportedError, SessionPersistenceCorruptionError } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { basename, dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/v2-ptc-migration.spec.ts b/packages/session/session-persistence-jsonl/tests/v2-ptc-migration.spec.ts index 773d4754df..756e0638e9 100644 --- a/packages/session/session-persistence-jsonl/tests/v2-ptc-migration.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/v2-ptc-migration.spec.ts @@ -3,7 +3,7 @@ import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION, Session, SessionId } from '@deepseek-ai/dsh-session' import type { SessionFormatEvent } from '@deepseek-ai/dsh-session-format' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { createHash } from 'node:crypto' import { mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/session/session-persistence-jsonl/tests/v2-system-migration.spec.ts b/packages/session/session-persistence-jsonl/tests/v2-system-migration.spec.ts index 416f04e3eb..4c4a870cc0 100644 --- a/packages/session/session-persistence-jsonl/tests/v2-system-migration.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/v2-system-migration.spec.ts @@ -4,7 +4,7 @@ import { SESSION_FORMAT_VERSION, Session, SessionId, SessionLogOffset, SessionSe import type { SessionEvent } from '@deepseek-ai/dsh-session' import { SessionFormatUnsupportedError } from '@deepseek-ai/dsh-session-persistence' import type { SessionHandle } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { dirname, join } from 'node:path' diff --git a/packages/session/session-persistence-jsonl/tests/v3-restart-migration.spec.ts b/packages/session/session-persistence-jsonl/tests/v3-restart-migration.spec.ts index 2385cad3e4..941175498c 100644 --- a/packages/session/session-persistence-jsonl/tests/v3-restart-migration.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/v3-restart-migration.spec.ts @@ -1,6 +1,6 @@ import { Context } from '@deepseek-ai/cordis' import { SessionId, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { afterEach, describe, expect, it } from 'vitest' import { mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' diff --git a/packages/session/session-persistence-jsonl/tests/zstd.spec.ts b/packages/session/session-persistence-jsonl/tests/zstd.spec.ts index 97323aff64..91cea44e31 100644 --- a/packages/session/session-persistence-jsonl/tests/zstd.spec.ts +++ b/packages/session/session-persistence-jsonl/tests/zstd.spec.ts @@ -8,7 +8,7 @@ import { performance } from 'node:perf_hooks' import { SessionSeq, SessionId } from '@deepseek-ai/dsh-session' import type { SessionEvent, SessionHeader } from '@deepseek-ai/dsh-session' import type { SessionPersistence } from '@deepseek-ai/dsh-session-persistence' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { generationLogPath, logPath, scanLog, sessionDir, toHeaderLine, type JsonlCompression, } from '../src/format.ts' diff --git a/packages/session/session-telemetry-otel/tests/otel.spec.ts b/packages/session/session-telemetry-otel/tests/otel.spec.ts index 86082a026b..0d152bc089 100644 --- a/packages/session/session-telemetry-otel/tests/otel.spec.ts +++ b/packages/session/session-telemetry-otel/tests/otel.spec.ts @@ -20,7 +20,7 @@ import { recordFeedback } from '@deepseek-ai/dsh-command-feedback' import { createAssistantMessage } from '@deepseek-ai/dsh-llm' import SessionStore, { SESSION_FORMAT_VERSION, Session, SessionId, SessionLogOffset, SessionSeq } from '@deepseek-ai/dsh-session' import MessageFeedbackService from '@deepseek-ai/dsh-message-feedback' -import JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import OpenTelemetrySessionBackend, { Config, DEFAULT_TELEMETRY_MODE, SessionTelemetryMode } from '../src/index.ts' interface Capture { diff --git a/packages/session/session-title/tests/persistence.spec.ts b/packages/session/session-title/tests/persistence.spec.ts index ef164362d7..dd85dd1376 100644 --- a/packages/session/session-title/tests/persistence.spec.ts +++ b/packages/session/session-title/tests/persistence.spec.ts @@ -6,7 +6,7 @@ import { tmpdir } from 'node:os' import { join } from 'node:path' import SessionStore, { SessionId } from '@deepseek-ai/dsh-session' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SessionTitleService, { foldSessionTitle } from '@deepseek-ai/dsh-session-title' const CONFIG = { diff --git a/packages/shell/tool-bash/tests/integration.spec.ts b/packages/shell/tool-bash/tests/integration.spec.ts index 645525ff54..59d9cc419e 100644 --- a/packages/shell/tool-bash/tests/integration.spec.ts +++ b/packages/shell/tool-bash/tests/integration.spec.ts @@ -5,7 +5,7 @@ import { mkdirSync, mkdtempSync, realpathSync, rmSync, writeFileSync } from 'nod import { tmpdir } from 'node:os' import { join } from 'node:path' import { SessionId, type SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { PtcRuntime, type PtcRunRequest, type PtcRunResult, type PtcRunSpec } from '@deepseek-ai/dsh-ptc-runtime' diff --git a/packages/subagent/subagent-spawn-in-process/tests/harness.ts b/packages/subagent/subagent-spawn-in-process/tests/harness.ts index 9ed25b2fc3..e29fdb7bf7 100644 --- a/packages/subagent/subagent-spawn-in-process/tests/harness.ts +++ b/packages/subagent/subagent-spawn-in-process/tests/harness.ts @@ -1,6 +1,6 @@ import { mountWorkingDirectoryFixture } from '../../subagent/tests/working-directory-fixture.ts' import { join } from 'node:path' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { Context } from '@deepseek-ai/cordis' import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' diff --git a/packages/subagent/subagent/tests/continuation-inheritance.spec.ts b/packages/subagent/subagent/tests/continuation-inheritance.spec.ts index e44c170dae..df8542f988 100644 --- a/packages/subagent/subagent/tests/continuation-inheritance.spec.ts +++ b/packages/subagent/subagent/tests/continuation-inheritance.spec.ts @@ -19,7 +19,7 @@ import { createUserMessage } from '@deepseek-ai/dsh-llm' import SandboxPolicyService, { setSandboxMode } from '@deepseek-ai/dsh-sandbox-policy' import { Session, SessionId } from '@deepseek-ai/dsh-session' import type { SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { queueHostSubagentPrompt } from '@deepseek-ai/dsh-subagent/internal' import * as SubagentFork from '@deepseek-ai/dsh-subagent-fork-in-process' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' diff --git a/packages/subagent/subagent/tests/continuation-messages-adapter.spec.ts b/packages/subagent/subagent/tests/continuation-messages-adapter.spec.ts index c980e9f937..7d4a5a266c 100644 --- a/packages/subagent/subagent/tests/continuation-messages-adapter.spec.ts +++ b/packages/subagent/subagent/tests/continuation-messages-adapter.spec.ts @@ -10,7 +10,7 @@ import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-test import { createUserMessage } from '@deepseek-ai/dsh-llm' import { DeepSeekAdapter, resolveAdapterOptions } from '@deepseek-ai/dsh-llm-deepseek' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' import { end, MODEL, server, sse, start } from '../../../llm/llm-deepseek/tests/helpers.ts' import SubagentRuntime, { type SubagentRunEndInfo } from '../src/index.ts' diff --git a/packages/subagent/subagent/tests/continuation.spec.ts b/packages/subagent/subagent/tests/continuation.spec.ts index e4ee8e6c89..c0d2cc91bc 100644 --- a/packages/subagent/subagent/tests/continuation.spec.ts +++ b/packages/subagent/subagent/tests/continuation.spec.ts @@ -11,7 +11,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { SessionId } from '@deepseek-ai/dsh-session' import type { SessionEvent, SessionEventMap } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' import * as SubagentFork from '@deepseek-ai/dsh-subagent-fork-in-process' import * as SubagentControl from '@deepseek-ai/dsh-tool-subagent-control' diff --git a/packages/subagent/subagent/tests/list-children.spec.ts b/packages/subagent/subagent/tests/list-children.spec.ts index dd5cf76799..053bcdf7dc 100644 --- a/packages/subagent/subagent/tests/list-children.spec.ts +++ b/packages/subagent/subagent/tests/list-children.spec.ts @@ -9,7 +9,7 @@ import type { Agent } from '@deepseek-ai/dsh-agent' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import SessionStore, { SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session' import type { Session } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { generationLogPath } from '../../../session/session-persistence-jsonl/src/format.ts' import SessionProjectionRegistry from '@deepseek-ai/dsh-session-projection' import SubagentRuntime from '@deepseek-ai/dsh-subagent' diff --git a/packages/subagent/subagent/tests/local-activation.ts b/packages/subagent/subagent/tests/local-activation.ts index dbad40f5eb..5f3523fcae 100644 --- a/packages/subagent/subagent/tests/local-activation.ts +++ b/packages/subagent/subagent/tests/local-activation.ts @@ -5,7 +5,7 @@ import { mkdtemp, rm } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' import type { Context } from '@deepseek-ai/cordis' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { type ContinuableCreateSpec, type SubagentStartRequest } from '@deepseek-ai/dsh-subagent' import { onTestFinished } from 'vitest' diff --git a/packages/subagent/subagent/tests/schedule-tools.spec.ts b/packages/subagent/subagent/tests/schedule-tools.spec.ts index 78cfc1b291..11c44b9707 100644 --- a/packages/subagent/subagent/tests/schedule-tools.spec.ts +++ b/packages/subagent/subagent/tests/schedule-tools.spec.ts @@ -19,7 +19,7 @@ import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-test import AgentPresets from '@deepseek-ai/dsh-agent-preset-registry' import { SessionId } from '@deepseek-ai/dsh-session' import type { SessionEvent } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '../../../session/session-persistence-jsonl/src/index.ts' +import * as JsonlSessionPersistence from '../../../session/session-persistence-jsonl/src/index.ts' import SubagentRuntime from '@deepseek-ai/dsh-subagent' import * as Spawn from '@deepseek-ai/dsh-subagent-spawn-in-process' import { MockAdapter, textResponse, toolCallResponse } from '../../../core/agent-loop/tests/mock-adapter.ts' diff --git a/packages/subagent/subagent/tests/working-directory.spec.ts b/packages/subagent/subagent/tests/working-directory.spec.ts index c049e1b186..bd8e680cd8 100644 --- a/packages/subagent/subagent/tests/working-directory.spec.ts +++ b/packages/subagent/subagent/tests/working-directory.spec.ts @@ -9,7 +9,7 @@ import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { createUserMessage } from '@deepseek-ai/dsh-llm' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import * as Spawn from '@deepseek-ai/dsh-subagent-spawn-in-process' import * as Fork from '@deepseek-ai/dsh-subagent-fork-in-process' import { MockAdapter, textResponse } from '../../../core/agent-loop/tests/mock-adapter.ts' diff --git a/packages/subagent/tool-subagent-control/tests/list-agents.spec.ts b/packages/subagent/tool-subagent-control/tests/list-agents.spec.ts index a981c6d7e8..7e4a21399a 100644 --- a/packages/subagent/tool-subagent-control/tests/list-agents.spec.ts +++ b/packages/subagent/tool-subagent-control/tests/list-agents.spec.ts @@ -8,7 +8,7 @@ import { ToolCallId } from '@deepseek-ai/dsh-llm' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SubagentRuntime from '@deepseek-ai/dsh-subagent' import type { SubagentCatalogEntry } from '@deepseek-ai/dsh-subagent' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' diff --git a/packages/subagent/tool-subagent-control/tests/tool-subagent-control.spec.ts b/packages/subagent/tool-subagent-control/tests/tool-subagent-control.spec.ts index d5c1b5b5c6..50bb2431e7 100644 --- a/packages/subagent/tool-subagent-control/tests/tool-subagent-control.spec.ts +++ b/packages/subagent/tool-subagent-control/tests/tool-subagent-control.spec.ts @@ -9,7 +9,7 @@ import { ToolCallId, createUserMessage } from '@deepseek-ai/dsh-llm' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' import { SessionId } from '@deepseek-ai/dsh-session' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SubagentRuntime from '@deepseek-ai/dsh-subagent' import * as SubagentFork from '@deepseek-ai/dsh-subagent-fork-in-process' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' diff --git a/packages/subagent/tool-subagent/tests/tool-subagent.spec.ts b/packages/subagent/tool-subagent/tests/tool-subagent.spec.ts index ea090fa0a3..d5d438f219 100644 --- a/packages/subagent/tool-subagent/tests/tool-subagent.spec.ts +++ b/packages/subagent/tool-subagent/tests/tool-subagent.spec.ts @@ -11,7 +11,7 @@ import { assembleContextFor } from '@deepseek-ai/dsh-agent' import type { Agent } from '@deepseek-ai/dsh-agent' import AgentLoop from '@deepseek-ai/dsh-agent-loop' import { mountAgentLoopTestDependencies } from '@deepseek-ai/dsh-agent-loop-testkit' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import SubagentRuntime from '@deepseek-ai/dsh-subagent' import type { SubagentStartRequest } from '@deepseek-ai/dsh-subagent' import * as SubagentSpawn from '@deepseek-ai/dsh-subagent-spawn-in-process' diff --git a/packages/workflow/workflow-ptc/tests/setup.ts b/packages/workflow/workflow-ptc/tests/setup.ts index 4b610433f3..c4f3643dc4 100644 --- a/packages/workflow/workflow-ptc/tests/setup.ts +++ b/packages/workflow/workflow-ptc/tests/setup.ts @@ -7,7 +7,7 @@ import type { Agent } from '@deepseek-ai/dsh-agent' import AgentRegistry from '@deepseek-ai/dsh-agent' import SessionStore from '@deepseek-ai/dsh-session' import SessionProjections from '@deepseek-ai/dsh-session-projection' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import FileSystem from '@deepseek-ai/dsh-fs-local' import Subprocess from '@deepseek-ai/dsh-subprocess-local' import Sandbox from '@deepseek-ai/dsh-sandbox-local' diff --git a/scripts/migrate-sessions-to-v4.spec.ts b/scripts/migrate-sessions-to-v4.spec.ts index 5cb119df8a..78fd5a9cf9 100644 --- a/scripts/migrate-sessions-to-v4.spec.ts +++ b/scripts/migrate-sessions-to-v4.spec.ts @@ -334,7 +334,7 @@ describe('one-time V4 migration command', () => { const backendUrl = pathToFileURL(join(repository, 'packages/session/session-persistence-jsonl/src/index.ts')).href const generationUrl = pathToFileURL(join(repository, 'packages/session/session-persistence-jsonl/src/generation.ts')).href await writeFile(entrypoint, ` - const { default: Backend } = await import(${JSON.stringify(backendUrl)}); + const Backend = await import(${JSON.stringify(backendUrl)}); const { Context } = await import(${JSON.stringify(pathToFileURL(join(repository, 'vendor/cordis/src/index.ts')).href)}); const { JsonlGenerationSourceChangedError } = await import(${JSON.stringify(generationUrl)}); const ctx = new Context(); diff --git a/scripts/migrate-sessions-to-v4.ts b/scripts/migrate-sessions-to-v4.ts index ee264158f7..4da68ba0ca 100644 --- a/scripts/migrate-sessions-to-v4.ts +++ b/scripts/migrate-sessions-to-v4.ts @@ -10,7 +10,7 @@ import { inspect, parseArgs } from 'node:util' import { Context } from '@deepseek-ai/cordis' import { SESSION_FORMAT_VERSION, SessionId } from '@deepseek-ai/dsh-session' import { sessionFormatCatalog } from '@deepseek-ai/dsh-session-format-catalog' -import JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' +import * as JsonlSessionPersistence from '@deepseek-ai/dsh-session-persistence-jsonl' import { encodeSegment, generationLogFilename, parseGenerationLogFilename, type JsonlCompression } from '../packages/session/session-persistence-jsonl/src/format.ts' import { JsonlGenerationSourceChangedError } from '../packages/session/session-persistence-jsonl/src/generation.ts' import { classifyMigrationFailure, type MigrationFailureDiagnostic } from './migration-failure-summary.ts'