/** * center prompts 消费投影腿([ref]④/[ref]③ 分工:web 承存储+covering 解析+下发,server 承本模块; * [ref] 下发形定稿 / [ref] registry-core 0.10.16 schema / [ref]⑤「server 零新义务=逐字透传」)。 * * 链路:center(sema-web-admin,2026-08-26 由 sema-web 改名)把 covering 走完的**基线终形**经 `GET /api/config/effective` 的 additive * `prompts` key 下发 → 本模块按任务 scenario 选包(`scenarioOverrides[s] ?? sections`,整包替换非增量, * [ref]①c)→ 声明数组**逐字**(含 opt-in `contentHash`,core 1.315 校验+manifest 透传)喂 core 既有 * typed `stableBlocks` 钩子。守卫全在 core(id 规范/slot 闭集/core/ 命名空间拒绝/identity 三锚 * pass-through/锁定槽不可写)——server 不做语义复检([ref]①f:identity 完整角色层由 center 编辑面把关)。 * * 仅有的一层「形校验」不是语义复检,是**防炸底线**(详见其现居所 `src/prompts-domain-validate.ts`—— * 判形半场已下沉到该中立叶子,本文件 re-export 保兼容;[ref] S6,lens2 §G):core 对坏形声明的 * 守卫是 THROW(assemble 期),server 在采用前做结构判形,坏形=拒绝采用该候选的 prompts 面。 * * 生效语义(两段史):1.222 时 core 1.315 的 epoch 是 bundled-only(声明不进 descriptor),热换=resume * 三失真,故临时 restart-to-apply;core 1.316([ref] 裁 a/[ref]d)把声明以 (id,slot,chars,contentHash?) * 纳入 artifactDigest——声明变=digest 变=**下任务边界自动重 pin**(既有 legacy_migration 机制接手), * 进行中会话 epoch pin 保稳。自此恢复**热采用**(main.ts boot+refresh 双点 adopt),与 center * 「发布=新任务生效」产品语义对齐([ref]②b)。字节级检测只认 opt-in contentHash(文本不进 digest, * 防会话可导出面字典预映)——center 链路恒逐 section 铸([ref]),本投影逐字透传即全强度。 */ import { type PromptProvider, type PublishedPromptArtifactEnvelope } from "@sema-agent/core"; import { type EffectiveCenterPrompts, type PromptsDomainFaces } from "../prompts-domain-validate.js"; /** 判形半场(validateCenterPrompts/validatePromptsDomain/CORE_ENGINE_VERSION 及两 interface)已下沉到 * 中立叶子 `src/prompts-domain-validate.ts`([ref] S6);消费者直引真源([ref] 兼容面全清, * 此处兼容 re-export 已删)。 */ /** [ref]b / [ref] — §9.4 by-digest 补拉组合店:local miss ⇒ fetchRaw(digest) 从 center 拉 envelope ⇒ * core verifyPromptArtifact 全管线 + **回验「拿到的=要的」digest 逐位**(center 答非所问=丢弃)⇒ * best-effort 回写 inner(下次直命中)。任何失败=undefined(诚实缺席,fail-loud 归 core 的 * prompt_snapshot_unavailable——绝不拼杂交)。 */ export declare function withPromptArtifactBackfill(inner: { get(d: string, o: { engineVersion: string; }): Promise; put(e: PublishedPromptArtifactEnvelope): Promise; }, fetchRaw: (artifactDigest: string) => Promise, log: { info: (msg: string, meta?: Record) => void; warn: (msg: string, meta?: Record) => void; }): typeof inner; /** e/b 接线([ref]① seam/[ref]e):catalog 轴的两态过渡推进 core 的 CenterPromptSource—— * present(且身份变)⇒ applySnapshot(core 重验+落盘+原子换 candidate;validate 已过 core verify, * 此处失败=磁盘/状态写问题,warn 不挡 declaration 轴);absent-after-present / prompts 键整体消失 * ⇒ applyDisabled(闸关=显式撤下语义的 catalog 轴半场,离线重启不复活)。幂等安全:同 envelope * 重放=同 digest 覆盖写。 */ export declare function applyCatalogToSource(source: { applySnapshot(raw: unknown): Promise<{ ok: true; artifactDigest: string; } | { ok: false; code: string; reason: string; }>; applyDisabled(sourceRevision: string): Promise; /** codex-2 F2(restart-owed disable):撤下写盘失败后重启,内存 prev 丢了但持久态还 active—— * 以 source 自身的 live candidate 为准判「欠 disable」,不是只看内存 prev。 */ current?(): unknown; }, next: PromptsDomainFaces | undefined, prev: PromptsDomainFaces | undefined, log: { info: (msg: string, meta?: Record) => void; warn: (msg: string, meta?: Record) => void; }, phase: string): Promise; /** * 选包+投影:该 scenario 的终形声明数组(`scenarioOverrides[s] ?? sections`)→ typed `stableBlocks` * 钩子(声明**逐字**透传,含 contentHash——core 1.315 校验后进 manifest)。空数组在 validate 已拒 * (F4:空替换集非 v1 语义),所以这里恒有非空声明——恒返回 provider(center-wins 无死分支)。 */ export declare function centerPromptProvider(prompts: EffectiveCenterPrompts, scenarioName: string): PromptProvider; /** codex R3(appendSystemPrompt 案):该 scenario 的终形 center 声明里是否有「已组装 identity」——core 的 * M9 迁移卫在 provider.stableBlocks 的 identity 声明上探同三锚,命中即走 pass-through 臂(其保留集无 * `core/role.append`,任何 append rider/outputStyle 会被静默丢)。选包与 {@link centerPromptProvider} * 同式(`overrides[s] ?? sections`);锚谓词由调用方注入(task-settings `hasConstitutionAnchors` 单真源)。 * [ref]①f 的「server 不做语义复检」不动:这不是复检语义,是为 capabilities.appendSystemPrompt 的诚实面 * 探 core 会走哪条臂。 */ export declare function centerIdentityAssembled(prompts: EffectiveCenterPrompts, scenarioName: string, isAssembled: (text: unknown) => boolean): boolean; //# sourceMappingURL=center-prompts.d.ts.map