refactor(session): fold the session family into packages/session/

git mv the 12 packages from session-persistence/, session-projection/,
session-title/, and telemetry/ into one session/ group per the
regrouping RFC; merge the four group READMEs into one bilingual
triplet; rewrite the group segment in tsconfig references (intra-group
references shorten to ../<pkg>), tsconfig.base.json paths/globs,
knip.json keys, vitest include, gate scripts, and authored doc/note
citations; regenerate module graph, doc graphs, catalogs, and the
lockfile importer keys. No npm names change.

Full unit suite: 8779 passed; the 18 reported failures reproduce as
env flakes (ambient-proxy IPv6 tunneling, watched-dir inotify
timeouts under parallel load) — each passes in isolation with
NO_PROXY set, matching their known pre-existing behavior on master.
This commit is contained in:
Tianyi Cui
2026-07-30 01:52:06 +08:00
parent 645fcf5713
commit 7e445c3a67
220 changed files with 258 additions and 286 deletions

View File

@@ -270,11 +270,11 @@ export const TYPE_LINK_EXEMPTIONS: Readonly<Record<string, string>> = {
DomainSpec: 'domain declaration contract is owned by packages/storage/storage-domain/README.md',
StorageBackend: 'backend contract is owned by packages/storage/storage/src/backend.ts',
StorageForms: 'merge-extensible form map is owned by packages/storage/storage/src/index.ts',
ProjectionDefinition: 'projection unit contract is owned by packages/session-projection/session-projection/README.md',
SessionProjectionMap: 'merge-extensible projection key map is owned by packages/session-projection/session-projection/src/types.ts',
ProjectionChangeListener: 'change-feed listener contract is owned by packages/session-projection/session-projection/src/index.ts',
ProjectionSnapshot: 'watermark snapshot shape is owned by packages/session-projection/session-projection/src/index.ts',
ProjectionCheckpoint: 'persisted checkpoint row map is owned by packages/session-projection/session-projection/src/index.ts',
ProjectionDefinition: 'projection unit contract is owned by packages/session/session-projection/README.md',
SessionProjectionMap: 'merge-extensible projection key map is owned by packages/session/session-projection/src/types.ts',
ProjectionChangeListener: 'change-feed listener contract is owned by packages/session/session-projection/src/index.ts',
ProjectionSnapshot: 'watermark snapshot shape is owned by packages/session/session-projection/src/index.ts',
ProjectionCheckpoint: 'persisted checkpoint row map is owned by packages/session/session-projection/src/index.ts',
CommandExecution: 'executor return contract is owned by packages/ui/commands/src/index.ts',
TypertContribution: 'registry contribution contract is owned by packages/typert/registry/README.md',
TypertFace: 'registry face identity is owned by packages/typert/registry/README.md',
@@ -305,7 +305,7 @@ export const TYPE_LINK_EXEMPTIONS: Readonly<Record<string, string>> = {
SessionForkSource: 'service-local fork input is owned by packages/core/session/src/index.ts',
SubagentRunEndInfo: 'event payload contract is owned by packages/subagent/subagent/src/types.ts',
SubagentRunInfo: 'event payload contract is owned by packages/subagent/subagent/src/types.ts',
TelemetryRecord: 'seam-local record contract is owned by packages/telemetry/session-telemetry/src/index.ts',
TelemetryRecord: 'seam-local record contract is owned by packages/session/session-telemetry/src/index.ts',
WorkflowAgentEndInfo: 'event-local snapshot is owned by packages/workflow/workflow/src/index.ts',
WorkflowAgentInfo: 'event-local snapshot is owned by packages/workflow/workflow/src/index.ts',
WorkflowResultInfo: 'event-local snapshot is owned by packages/workflow/workflow/src/index.ts',

View File

@@ -312,7 +312,7 @@ function nodeCompatSmokeGates(options: { cliSmoke?: boolean } = {}): Gate[] {
pnpmExec('jsonl-zstd-smoke', [
'vitest',
'run',
'packages/session-persistence/session-persistence-jsonl/tests/zstd.compat.spec.ts',
'packages/session/session-persistence-jsonl/tests/zstd.compat.spec.ts',
], { label: 'JSONL Zstandard smoke' }),
pnpmExec('dsh-source-launch-smoke', [
'vitest',

View File

@@ -448,7 +448,7 @@
{
"doc": "docs/core-data-structures/persistence.md",
"symbol": "SessionLocation",
"source": "packages/session-persistence/session-persistence/src/index.ts"
"source": "packages/session/session-persistence/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-query.md",
@@ -528,57 +528,57 @@
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleProviderId",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleModelProvenance",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleSource",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleEventData",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleSnapshot",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleLlmRequestEventData",
"source": "packages/session-title/session-title-llm/src/index.ts"
"source": "packages/session/session-title-llm/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleUserMessage",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleAutomaticMode",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleProviderRequest",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleProviderResult",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-title.md",
"symbol": "SessionTitleProvider",
"source": "packages/session-title/session-title/src/index.ts"
"source": "packages/session/session-title/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-reference.md",
@@ -1323,12 +1323,12 @@
{
"doc": "docs/core-data-structures/persistence.md",
"symbol": "SessionPersistenceRevision",
"source": "packages/session-persistence/session-persistence/src/revision.ts"
"source": "packages/session/session-persistence/src/revision.ts"
},
{
"doc": "docs/core-data-structures/persistence.md",
"symbol": "SessionPersistenceSnapshot",
"source": "packages/session-persistence/session-persistence/src/index.ts"
"source": "packages/session/session-persistence/src/index.ts"
},
{
"doc": "docs/core-data-structures/session-query.md",

View File

@@ -109,8 +109,8 @@ const SENTENCE_MODEL_EXPERIENCE: Readonly<Record<string, SentenceContract>> = {
'packages/sdk/sdk-client': { kind: 'none', reason: 'Client-process library; the model surface lives in the spawned runtime\'s composed plugins.' },
'packages/sdk/sdk-protocol': { kind: 'none', reason: 'Client-facing wire library; the runtime plugins behind the serving entry own the model surface.' },
'packages/sdk/telemetry': { kind: 'none', reason: 'The launcher-side reporter sends developer-cycle telemetry and registers no live agent or model surface.' },
'packages/session-projection/session-projection': { kind: 'none', reason: 'The projection registry serves client-facing read models of already-logged session state and registers no model surface.' },
'packages/session-projection/session-projection-cache': { kind: 'none', reason: 'The persisted cache accelerates host-side cold reads of projection state and registers no model surface.' },
'packages/session/session-projection': { kind: 'none', reason: 'The projection registry serves client-facing read models of already-logged session state and registers no model surface.' },
'packages/session/session-projection-cache': { kind: 'none', reason: 'The persisted cache accelerates host-side cold reads of projection state and registers no model surface.' },
'packages/session-query/session-query': { kind: 'none', reason: 'The trusted query service exposes cloned records only to callers and registers no model surface.' },
'packages/session-query/session-query-sqlite': { kind: 'none', reason: 'The search backend returns hits only to callers and registers no model surface.' },
'packages/settings/settings': { kind: 'indirect', reason: 'The seam stores and resolves user settings; consumer plugins own any model surface a value feeds.' },
@@ -118,8 +118,8 @@ const SENTENCE_MODEL_EXPERIENCE: Readonly<Record<string, SentenceContract>> = {
'packages/credentials/credentials': { kind: 'indirect', reason: 'The seam resolves credential references; the consuming adapter owns every model surface a value authorizes.' },
'packages/credentials/credentials-local': { kind: 'indirect', reason: 'The file/environment provider stores credential values; consumers of ctx.credentials own any model surface.' },
'packages/util/atomic-write': { kind: 'none', reason: 'Pure filesystem write primitive; registers no model surface.' },
'packages/telemetry/session-telemetry': { kind: 'none', reason: 'The seam observes the session stream and hands redacted copies outward; it registers no model surface.' },
'packages/telemetry/session-telemetry-otel': { kind: 'none', reason: 'The backend forwards seam records into the OTel SDK pipeline and registers no model surface.' },
'packages/session/session-telemetry': { kind: 'none', reason: 'The seam observes the session stream and hands redacted copies outward; it registers no model surface.' },
'packages/session/session-telemetry-otel': { kind: 'none', reason: 'The backend forwards seam records into the OTel SDK pipeline and registers no model surface.' },
'packages/skill/skill': { kind: 'indirect', reason: 'The provider registry delegates model rendering to dsh-tool-skill.' },
'packages/skill/skill-badge': { kind: 'indirect', reason: 'The bundled provider delegates model rendering to dsh-tool-skill.' },
'packages/skill/skill-local': { kind: 'indirect', reason: 'The provider backend delegates model rendering to dsh-tool-skill.' },