diff --git a/docs/persistence-catalog.i18n.yaml b/docs/persistence-catalog.i18n.yaml index c4161b2c5b..0e5675948a 100644 --- a/docs/persistence-catalog.i18n.yaml +++ b/docs/persistence-catalog.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/persistence-catalog.md -persistence-catalog.md: 99bd075eeabde138bcf258340a42380995bff5cb -persistence-catalog.zh.md: a2ed30012e3ed70c1190ed3a64cdc9639a24109b +persistence-catalog.md: 4f8f9cee3d7139bd829eb155628d727e6451c772 +persistence-catalog.zh.md: 49417f7247dcf86172cc64a8dc4ff6539c43e906 diff --git a/docs/persistence-catalog.md b/docs/persistence-catalog.md index 99bd075eea..4f8f9cee3d 100644 --- a/docs/persistence-catalog.md +++ b/docs/persistence-catalog.md @@ -3128,7 +3128,7 @@ Sources: [`packages/session/session-title/src/types.ts:30`](../packages/session/ | Property | Presence | Type | |---|---|---| | `kind` | required | `"provider"` | -| `model` | optional | [`packages/session/session-title/src/types.ts#SessionTitleModelProvenance`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelprovenance) | +| `model` | optional | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | | `provider` | required | `string` | @@ -3260,7 +3260,7 @@ Sources: [`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../ SHA-256: `ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec` -Array of [`packages/session/session-title/src/types.ts#SessionTitleModelProvenance`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelprovenance). +Array of [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity). @@ -5528,7 +5528,7 @@ Sources: [`packages/session/session-title-llm/src/index.ts:27`](../packages/sess | `maxTokens` | required | `number` | | `messageSeqs` | required | [`SessionEventEnvelope[38].sourceEventSeqs`](#persistence-type-sessioneventenvelope38sourceeventseqs) | | `messages` | required | [`event:session/title-llm-request.data.messages`](#persistence-type-eventsessiontitle-llm-requestdatamessages) | -| `route` | required | [`packages/session/session-title/src/types.ts#SessionTitleModelProvenance`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelprovenance) | +| `route` | required | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | | `system` | required | `string` | | `titleProvider` | required | `string` | @@ -5546,9 +5546,9 @@ Sources: [`packages/session/session-title/src/types.ts:41`](../packages/session/ | `source` | required | [`packages/session/session-title/src/types.ts#SessionTitleSource`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlesource) | | `title` | required | `string` | - + -### `packages/session/session-title/src/types.ts#SessionTitleModelProvenance` +### `packages/session/session-title/src/types.ts#SessionTitleModelIdentity` SHA-256: `07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235` diff --git a/docs/persistence-catalog.zh.md b/docs/persistence-catalog.zh.md index a2ed30012e..49417f7247 100644 --- a/docs/persistence-catalog.zh.md +++ b/docs/persistence-catalog.zh.md @@ -3130,7 +3130,7 @@ SHA-256: `b81e9de81a481b24e1e1f9adf038bfc59e57b4f35ce62f8f1e45284186f4f812` | 属性 | 存在性 | 类型 | |---|---|---| | `kind` | 必需 | `"provider"` | -| `model` | 可选 | [`packages/session/session-title/src/types.ts#SessionTitleModelProvenance`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelprovenance) | +| `model` | 可选 | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | | `provider` | 必需 | `string` | @@ -3262,7 +3262,7 @@ SHA-256: `0d47a8f3d847243c4488e755ad4cab7a04ac5d4621b9c81865524cf3f4d8536f` SHA-256: `ba77b58995e36f14bb13886b0493d0a1a63d5db10b1a6cd9f6ac65a72cf832ec` -[`packages/session/session-title/src/types.ts#SessionTitleModelProvenance`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelprovenance) 的数组。 +[`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) 的数组。 @@ -5530,7 +5530,7 @@ SHA-256: `08936f7648f573f7539800e1ec2852fbbcba05e1a20487a1e5acf2a0fce1e2de` | `maxTokens` | 必需 | `number` | | `messageSeqs` | 必需 | [`SessionEventEnvelope[38].sourceEventSeqs`](#persistence-type-sessioneventenvelope38sourceeventseqs) | | `messages` | 必需 | [`event:session/title-llm-request.data.messages`](#persistence-type-eventsessiontitle-llm-requestdatamessages) | -| `route` | 必需 | [`packages/session/session-title/src/types.ts#SessionTitleModelProvenance`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelprovenance) | +| `route` | 必需 | [`packages/session/session-title/src/types.ts#SessionTitleModelIdentity`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlemodelidentity) | | `system` | 必需 | `string` | | `titleProvider` | 必需 | `string` | @@ -5548,9 +5548,9 @@ SHA-256: `b56f6a885da3dc394c69a3e3cc5c0cfc4da15601b63fda4989eee8f40efc5be4` | `source` | 必需 | [`packages/session/session-title/src/types.ts#SessionTitleSource`](#persistence-type-packagessessionsession-titlesrctypestssessiontitlesource) | | `title` | 必需 | `string` | - + -### `packages/session/session-title/src/types.ts#SessionTitleModelProvenance` +### `packages/session/session-title/src/types.ts#SessionTitleModelIdentity` SHA-256: `07e1a58c58b593f507b8e7f25723bb0aa42baae6e00f5ecfddf28cb1e64d3235` diff --git a/docs/persistence-schema.json b/docs/persistence-schema.json index e31f4b5865..4d502ac415 100644 --- a/docs/persistence-schema.json +++ b/docs/persistence-schema.json @@ -13686,7 +13686,7 @@ ] }, "names": [ - "packages/session/session-title/src/types.ts#SessionTitleModelProvenance", + "packages/session/session-title/src/types.ts#SessionTitleModelIdentity", "packages/subagent/tool-subagent/src/model-selection.ts#AllowedModelRoute" ], "sources": [ diff --git a/scripts/persistence-schema-model.ts b/scripts/persistence-schema-model.ts index a674a0f039..f12213b9f1 100644 --- a/scripts/persistence-schema-model.ts +++ b/scripts/persistence-schema-model.ts @@ -45,7 +45,7 @@ export interface PersistenceRoot { readonly schema: CanonicalSchema } -/** One reachable structural type and its non-fingerprinted source provenance. */ +/** One reachable structural type and its non-fingerprinted source declaration metadata. */ export interface PersistenceType { readonly digest: string readonly schema: CanonicalSchema diff --git a/scripts/persistence-schema.spec.ts b/scripts/persistence-schema.spec.ts index 3c26622e4e..7f81efe18c 100644 --- a/scripts/persistence-schema.spec.ts +++ b/scripts/persistence-schema.spec.ts @@ -185,7 +185,7 @@ interface SessionEventMap { expect(detail?.sources).toEqual(['packages/domain/payload/src/detail.ts:2']) }) - it('keeps shared scalar provenance at real aliases and omits plain property references', () => { + it('keeps shared scalar declaration metadata at real aliases and omits plain property references', () => { const root = fixture([ 'type Label = string', "type Done = 'done'", diff --git a/scripts/persistence-schema.ts b/scripts/persistence-schema.ts index 95db5dce0e..2120b0874c 100644 --- a/scripts/persistence-schema.ts +++ b/scripts/persistence-schema.ts @@ -15,7 +15,7 @@ import { type SchemaProperty, } from './persistence-schema-model.ts' -interface Provenance { +interface DeclarationMetadata { readonly names: Set readonly sources: Set } @@ -204,7 +204,7 @@ function validateReachableDeclarations( class SchemaExtractor { readonly nodes: SchemaNode[] = [] private readonly cache = new Map() - private readonly provenance = new Map() + private readonly declarationMetadata = new Map() private readonly checker: ts.TypeChecker @@ -387,11 +387,11 @@ class SchemaExtractor { const schema = canonicalizeSchema(this.nodes, id) const digest = schemaDigest(schema) const item = types.get(digest) ?? { schema, names: new Set(), sources: new Set() } - const provenance = this.provenance.get(id) - for (const name of provenance?.names ?? []) item.names.add(name) - for (const source of provenance?.sources ?? []) item.sources.add(source) + const declarationMetadata = this.declarationMetadata.get(id) + for (const name of declarationMetadata?.names ?? []) item.names.add(name) + for (const source of declarationMetadata?.sources ?? []) item.sources.add(source) const kind = schema.nodes[0]?.kind - if (kind !== 'primitive' && kind !== 'literal' && (provenance === undefined || provenance.names.size === 0)) { + if (kind !== 'primitive' && kind !== 'literal' && (declarationMetadata === undefined || declarationMetadata.names.size === 0)) { for (const path of paths.get(id) ?? []) item.names.add(path) } types.set(digest, item) @@ -409,7 +409,7 @@ class SchemaExtractor { } private record(id: number, type: ts.Type): void { - const item = this.provenance.get(id) ?? { names: new Set(), sources: new Set() } + const item = this.declarationMetadata.get(id) ?? { names: new Set(), sources: new Set() } const declarations = new Set([ ...this.declarationSources.get(type) ?? [], ...type.aliasSymbol?.declarations ?? [], @@ -424,7 +424,7 @@ class SchemaExtractor { const position = source.getLineAndCharacterOfPosition(declaration.getStart()) item.sources.add(`${file}:${String(position.line + 1)}`) } - this.provenance.set(id, item) + this.declarationMetadata.set(id, item) } private fail(type: ts.Type, site: ts.Node, reason: string): never { diff --git a/scripts/render-persistence-schema.ts b/scripts/render-persistence-schema.ts index 02f872bdd0..62bf5a4b78 100644 --- a/scripts/render-persistence-schema.ts +++ b/scripts/render-persistence-schema.ts @@ -144,7 +144,7 @@ function definition(entry: TypeDisplay, entries: ReadonlyMap