diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml new file mode 100644 index 0000000000..0efe5d0ca3 --- /dev/null +++ b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# 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 .agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md +2026-08-20-explicit-web-index-paths.md: 6ff08c3c2a18ffd79ef7a048f563a91e41a504da +2026-08-20-explicit-web-index-paths.zh.md: 7b419b9f4c8b4b0de20660b3f70d12e67ab264ff diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md new file mode 100644 index 0000000000..6ff08c3c2a --- /dev/null +++ b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md @@ -0,0 +1,27 @@ +# Agent Note: Explicit Web index paths and 404 static misses + +Status: implemented + +English | [中文](2026-08-20-explicit-web-index-paths.zh.md) + +## Problem + +An unconditional SPA fallback makes every unmatched GET or HEAD request look successful. A broken ordinary link and a missing JavaScript, stylesheet, source map, or manifest then receive the HTML shell with status 200, so browsers, caches, and monitoring cannot distinguish a valid page entry from an absent resource. + +## Decision + +`dsh-host-frontend-static` renders `index.html` only when the normalized target is the dist root or the configured index path. The current Web client has no History API pathname routes; query strings do not change pathname matching, and URL fragments never reach the server. Existing files are served normally, while `ENOENT`, `EISDIR`, and `ENOTDIR` reads produce an empty 404 response with no content type. Other filesystem failures are rethrown to the webserver's request-failure handling instead of being mislabeled as absence. + +GET and HEAD use the same status and content type for index entries, files, and misses. Named routes still match before the fallback, traversal outside the dist root remains 403, and non-GET/HEAD requests reaching the fallback remain 405. + +## Alternatives considered + +**Infer page routes from the absence of a file extension.** A file extension does not declare a client route: this would still turn unknown ordinary paths into successful pages, reject any future dotted client route, and mishandle extensionless static files when they are absent. + +**Use an `Accept: text/html` request header as the fallback rule.** The header expresses representation preference, not whether the pathname is a declared client route. Browser fetches, bots, and monitors may request HTML for an invalid path, so the same false-success behavior remains. + +**Add a configurable pathname allowlist now.** No current client route consumes such configuration. A future History API router can add an explicit server rule or configuration field together with the route that requires it, without preserving a speculative public option today. + +## Consequences + +Broken links and missing assets have distinct HTTP state that caches and monitoring can observe, and an asset loader cannot execute the HTML shell as JavaScript. A future pathname-based client route returns 404 until its server entry rule and real-composition coverage land in the same change. The frontend-static real Loader test pins GET/HEAD parity for index entries, existing assets, ordinary misses, and resource misses; it also covers API-like paths, traversal, malformed targets, unsupported methods, and fallback disposal. diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.zh.md b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.zh.md new file mode 100644 index 0000000000..7b419b9f4c --- /dev/null +++ b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.zh.md @@ -0,0 +1,27 @@ +# Agent Note: 显式 Web index 路径与静态资源未命中的 404 + +Status: implemented + +[English](2026-08-20-explicit-web-index-paths.md) | 中文 + +## 问题 + +无条件 SPA 回退会让每个未匹配的 GET 或 HEAD 请求看起来都成功。失效的普通链接,以及缺失的 JavaScript、样式表、source map 或 manifest,都会收到状态码为 200 的 HTML 外壳,导致浏览器、缓存与监控无法区分有效页面入口和缺失资源。 + +## 决策 + +`dsh-host-frontend-static` 只在规范化目标为 dist 根目录或配置的 index 路径时渲染 `index.html`。当前 Web 客户端没有 History API pathname 路由;查询字符串不会改变 pathname 匹配,URL 片段也不会到达服务器。现有文件照常提供,而 `ENOENT`、`EISDIR` 和 `ENOTDIR` 读取产生不带内容类型的空 404 响应。其他文件系统失败会重新抛给 webserver 的请求失败处理,不会被错误标记为缺失。 + +GET 与 HEAD 对 index 入口、文件和未命中项使用相同的状态码与内容类型。具名路由仍先于回退匹配,越出 dist 根目录的遍历仍返回 403,到达回退的非 GET/HEAD 请求仍返回 405。 + +## 曾考虑的替代方案 + +**根据路径没有文件扩展名来推断页面路由。** 文件扩展名不会声明客户端路由:这种做法仍会把未知普通路径变成成功页面,会拒绝未来任何带点号的客户端路由,也会在缺少无扩展名静态文件时错误处理该请求。 + +**把 `Accept: text/html` 请求头作为回退规则。** 该请求头表达的是内容表示偏好,而不是 pathname 是否为已声明的客户端路由。浏览器 fetch、机器人和监控都可能为无效路径请求 HTML,因此仍会产生同样的假成功行为。 + +**立即添加可配置的 pathname 允许列表。** 当前没有客户端路由消费这项配置。未来的 History API 路由可以在引入所需路由时,同时添加显式服务器规则或配置字段,无需现在保留推测性的公开选项。 + +## 后果 + +失效链接与缺失资源具有可供缓存和监控观察的独立 HTTP 状态,资源加载器也不会把 HTML 外壳当作 JavaScript 执行。未来基于 pathname 的客户端路由会保持 404,直到同一项变更同时加入服务器入口规则与真实组合测试。frontend-static 的真实 Loader 测试固定了 index 入口、现有资源、普通未命中和资源未命中的 GET/HEAD 状态一致性,并覆盖类似 API 的路径、路径遍历、畸形目标、不支持的方法和回退释放。 diff --git a/docs/subsystems/agent-team.i18n.yaml b/docs/subsystems/agent-team.i18n.yaml index 0345dcdcdc..21c926c520 100644 --- a/docs/subsystems/agent-team.i18n.yaml +++ b/docs/subsystems/agent-team.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/subsystems/agent-team.md -agent-team.md: 60d826e8688a735ed7ac191ba838d243796d15eb -agent-team.zh.md: e578c4bce3a33bb947b93a2df840d3c94416f722 +agent-team.md: d3cca68124bfa199c4a81d6c67c6305ce7f65b6c +agent-team.zh.md: 773e734a55cf5282fc9507a754d2d4dff8cb5978 diff --git a/docs/subsystems/agent-team.md b/docs/subsystems/agent-team.md index 60d826e868..d3cca68124 100644 --- a/docs/subsystems/agent-team.md +++ b/docs/subsystems/agent-team.md @@ -179,5 +179,5 @@ tryMembership(agent: Agent): TeamMembership | undefined Types: [Agent](core.md) -Source: [`packages/experimental/agent-team/src/index.ts:56`](../../packages/experimental/agent-team/src/index.ts) +Source: [`packages/experimental/agent-team/src/index.ts`](../../packages/experimental/agent-team/src/index.ts) diff --git a/docs/subsystems/agent-team.zh.md b/docs/subsystems/agent-team.zh.md index e578c4bce3..773e734a55 100644 --- a/docs/subsystems/agent-team.zh.md +++ b/docs/subsystems/agent-team.zh.md @@ -179,5 +179,5 @@ tryMembership(agent: Agent): TeamMembership | undefined Types: [Agent](core.zh.md) -Source: [`packages/experimental/agent-team/src/index.ts:56`](../../packages/experimental/agent-team/src/index.ts) +Source: [`packages/experimental/agent-team/src/index.ts`](../../packages/experimental/agent-team/src/index.ts) diff --git a/docs/subsystems/approval.i18n.yaml b/docs/subsystems/approval.i18n.yaml index ee7a94728d..0fa3e7df83 100644 --- a/docs/subsystems/approval.i18n.yaml +++ b/docs/subsystems/approval.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/subsystems/approval.md -approval.md: ae598c7f9fd8a7a71b51b6725f3f1b807045dd23 -approval.zh.md: 9f3cdddfb66fc0ae1fbcfc3cc61610eb46425191 +approval.md: 7d3d09314f8fbb151cc8a00dbbee5e2cc14e2c9a +approval.zh.md: 22d0b0ec4242fcb2ad6fb82c29893a5914369238 diff --git a/docs/subsystems/approval.md b/docs/subsystems/approval.md index ae598c7f9f..7d3d09314f 100644 --- a/docs/subsystems/approval.md +++ b/docs/subsystems/approval.md @@ -141,7 +141,7 @@ overrideOf(session: Session): ApprovalPolicy | undefined Types: [Agent](core.md) · [Session](session.md) -Source: [`packages/interaction/user-approval/src/index.ts:192`](../../packages/interaction/user-approval/src/index.ts) +Source: [`packages/interaction/user-approval/src/index.ts`](../../packages/interaction/user-approval/src/index.ts) @@ -166,5 +166,5 @@ Ask composed answerers for one decision. Return an outcome to claim the request Types: [Scoped](scope.md) -Source: [`packages/interaction/user-approval/src/index.ts:30`](../../packages/interaction/user-approval/src/index.ts) +Source: [`packages/interaction/user-approval/src/index.ts`](../../packages/interaction/user-approval/src/index.ts) diff --git a/docs/subsystems/approval.zh.md b/docs/subsystems/approval.zh.md index 9f3cdddfb6..22d0b0ec42 100644 --- a/docs/subsystems/approval.zh.md +++ b/docs/subsystems/approval.zh.md @@ -141,7 +141,7 @@ overrideOf(session: Session): ApprovalPolicy | undefined Types: [Agent](core.zh.md) · [Session](session.zh.md) -Source: [`packages/interaction/user-approval/src/index.ts:192`](../../packages/interaction/user-approval/src/index.ts) +Source: [`packages/interaction/user-approval/src/index.ts`](../../packages/interaction/user-approval/src/index.ts) @@ -166,5 +166,5 @@ Ask composed answerers for one decision. Return an outcome to claim the request Types: [Scoped](scope.zh.md) -Source: [`packages/interaction/user-approval/src/index.ts:30`](../../packages/interaction/user-approval/src/index.ts) +Source: [`packages/interaction/user-approval/src/index.ts`](../../packages/interaction/user-approval/src/index.ts) diff --git a/docs/subsystems/attachment.i18n.yaml b/docs/subsystems/attachment.i18n.yaml index 9293e857ff..11f7369862 100644 --- a/docs/subsystems/attachment.i18n.yaml +++ b/docs/subsystems/attachment.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/subsystems/attachment.md -attachment.md: 8463fcd5d9326253aae741aaddc17da1adce723c -attachment.zh.md: a96f5748850030384b4da1e7efafa39cf56ed947 +attachment.md: 180b7e06f0461dd4136779917e0732921704803b +attachment.zh.md: 35aa24ec5957b41e12a543fd76ea20604894cd18 diff --git a/docs/subsystems/attachment.md b/docs/subsystems/attachment.md index 8463fcd5d9..180b7e06f0 100644 --- a/docs/subsystems/attachment.md +++ b/docs/subsystems/attachment.md @@ -135,5 +135,5 @@ abstract saveImage(input: SaveImageAttachment): Promise abstract readImage(ref: ImageAttachmentRef, signal?: AbortSignal): Promise ``` -Source: [`packages/attachment/attachment/src/index.ts:33`](../../packages/attachment/attachment/src/index.ts) +Source: [`packages/attachment/attachment/src/index.ts`](../../packages/attachment/attachment/src/index.ts) diff --git a/docs/subsystems/attachment.zh.md b/docs/subsystems/attachment.zh.md index a96f574885..35aa24ec59 100644 --- a/docs/subsystems/attachment.zh.md +++ b/docs/subsystems/attachment.zh.md @@ -135,5 +135,5 @@ abstract saveImage(input: SaveImageAttachment): Promise abstract readImage(ref: ImageAttachmentRef, signal?: AbortSignal): Promise ``` -Source: [`packages/attachment/attachment/src/index.ts:33`](../../packages/attachment/attachment/src/index.ts) +Source: [`packages/attachment/attachment/src/index.ts`](../../packages/attachment/attachment/src/index.ts) diff --git a/docs/subsystems/client-modules.i18n.yaml b/docs/subsystems/client-modules.i18n.yaml index a4a1d2e022..9e4e1a9dd7 100644 --- a/docs/subsystems/client-modules.i18n.yaml +++ b/docs/subsystems/client-modules.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/subsystems/client-modules.md -client-modules.md: 58564efd675369e1aab05f10f1519d56538e24cc -client-modules.zh.md: 22313864693bf124a286cbe15003a0a43dfba32f +client-modules.md: ae767c6a098cb1b7188c06e61efd2798eb93ff66 +client-modules.zh.md: 710453e3e10c298ed8c2b87bbab6e8e9eb154a87 diff --git a/docs/subsystems/client-modules.md b/docs/subsystems/client-modules.md index 58564efd67..ae767c6a09 100644 --- a/docs/subsystems/client-modules.md +++ b/docs/subsystems/client-modules.md @@ -62,7 +62,7 @@ Package metadata — including the negative "not a client package" verdict — i ## The bundle route and index injection -`GET`/`HEAD /plugins//client.js` serves the registered bundle from disk with `no-cache` (the rev query, not HTTP caching, anchors consistency); other methods are 405. An unknown id — or a registered row whose bundle is unreadable because it has not been built yet — answers a loud 404 rather than letting the carrier's SPA fallback ship HTML as JavaScript. The injection rows carry the current graph on every index render, so a reload always boots against the live composition. +`GET`/`HEAD /plugins//client.js` serves the registered bundle from disk with `no-cache` (the rev query, not HTTP caching, anchors consistency); other methods are 405. An unknown id — or a registered row whose bundle is unreadable because it has not been built yet — answers a loud 404, so no unreadable bundle appears as a successful JavaScript response. The injection rows carry the current graph on every index render, so a reload always boots against the live composition. ## The service @@ -122,5 +122,5 @@ onRebuilt(listener: (id: string, rev: string) => void): () => void onGraphChanged(listener: () => void): () => void ``` -Source: [`packages/client/modules/src/index.ts:282`](../../packages/client/modules/src/index.ts) +Source: [`packages/client/modules/src/index.ts`](../../packages/client/modules/src/index.ts) diff --git a/docs/subsystems/client-modules.zh.md b/docs/subsystems/client-modules.zh.md index 2231386469..710453e3e1 100644 --- a/docs/subsystems/client-modules.zh.md +++ b/docs/subsystems/client-modules.zh.md @@ -62,7 +62,7 @@ interface WebBootGraph { ## bundle 路由与 index 注入 -`GET`/`HEAD /plugins//client.js` 以 `no-cache` 从磁盘提供已注册的 bundle(锚定一致性的是 rev 查询参数,而非 HTTP 缓存);其他方法返回 405。未知 id——或已注册、但 bundle 因尚未构建而不可读的行——回应一个大声的 404,而不是让载体的 SPA 回退把 HTML 当作 JavaScript 发出。注入行在每次 index 渲染时携带当前图,因此刷新页面总是针对实时组合启动。 +`GET`/`HEAD /plugins//client.js` 以 `no-cache` 从磁盘提供已注册的 bundle(锚定一致性的是 rev 查询参数,而非 HTTP 缓存);其他方法返回 405。未知 id——或已注册、但 bundle 因尚未构建而不可读的行——回应一个大声的 404,因此不可读 bundle 不会表现为成功的 JavaScript 响应。注入行在每次 index 渲染时携带当前图,因此刷新页面总是针对实时组合启动。 ## 服务 @@ -122,5 +122,5 @@ onRebuilt(listener: (id: string, rev: string) => void): () => void onGraphChanged(listener: () => void): () => void ``` -Source: [`packages/client/modules/src/index.ts:282`](../../packages/client/modules/src/index.ts) +Source: [`packages/client/modules/src/index.ts`](../../packages/client/modules/src/index.ts) diff --git a/docs/subsystems/code-runtime.i18n.yaml b/docs/subsystems/code-runtime.i18n.yaml index aa9e49f6ba..97886685e5 100644 --- a/docs/subsystems/code-runtime.i18n.yaml +++ b/docs/subsystems/code-runtime.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/subsystems/code-runtime.md -code-runtime.md: 6dca7271469f0e1536b30ad21503c559f981f0e8 -code-runtime.zh.md: 5f833d91bb1adbcdc7336eeda50a55ecb46c7e97 +code-runtime.md: ae760487eff19f6a0b91620b92007d0a86eb1589 +code-runtime.zh.md: b48e1a01b2817d9dafb25ac96673d00cf7d9ed08 diff --git a/docs/subsystems/code-runtime.md b/docs/subsystems/code-runtime.md index 6dca727146..ae760487ef 100644 --- a/docs/subsystems/code-runtime.md +++ b/docs/subsystems/code-runtime.md @@ -187,5 +187,5 @@ Registers one `ctx.codeRuntime` implementation. Program, budget, abort, and subs abstract run(request: CodeRunRequest): Promise ``` -Source: [`packages/code-runtime/code-runtime/src/index.ts:102`](../../packages/code-runtime/code-runtime/src/index.ts) +Source: [`packages/code-runtime/code-runtime/src/index.ts`](../../packages/code-runtime/code-runtime/src/index.ts) diff --git a/docs/subsystems/code-runtime.zh.md b/docs/subsystems/code-runtime.zh.md index 5f833d91bb..b48e1a01b2 100644 --- a/docs/subsystems/code-runtime.zh.md +++ b/docs/subsystems/code-runtime.zh.md @@ -187,5 +187,5 @@ Registers one `ctx.codeRuntime` implementation. Program, budget, abort, and subs abstract run(request: CodeRunRequest): Promise ``` -Source: [`packages/code-runtime/code-runtime/src/index.ts:102`](../../packages/code-runtime/code-runtime/src/index.ts) +Source: [`packages/code-runtime/code-runtime/src/index.ts`](../../packages/code-runtime/code-runtime/src/index.ts) diff --git a/docs/subsystems/commands.i18n.yaml b/docs/subsystems/commands.i18n.yaml index 16661364d3..17bf825901 100644 --- a/docs/subsystems/commands.i18n.yaml +++ b/docs/subsystems/commands.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/subsystems/commands.md -commands.md: ae39ec095bb7dd01d4c0ad0cca62a95cdcf9aa56 -commands.zh.md: 2085f1b5a5173cf4822ee0b30ca7f6b9fdadc460 +commands.md: f3760558b04253701915a240375f13e096bc0c51 +commands.zh.md: 2b4377b76b55203d84a956f66879ab2c50a9fd23 diff --git a/docs/subsystems/commands.md b/docs/subsystems/commands.md index ae39ec095b..f3760558b0 100644 --- a/docs/subsystems/commands.md +++ b/docs/subsystems/commands.md @@ -184,7 +184,7 @@ find(agent: Agent, name: string): CommandDefinition | undefined Types: [Agent](core.md) · [EncodedImageAttachment](attachment.md) -Source: [`packages/interaction/commands/src/index.ts:250`](../../packages/interaction/commands/src/index.ts) +Source: [`packages/interaction/commands/src/index.ts`](../../packages/interaction/commands/src/index.ts) @@ -206,5 +206,5 @@ A command was registered or unregistered. This is an unfiltered registry notific 'commands/change'(): void ``` -Source: [`packages/interaction/commands/src/types.ts:80`](../../packages/interaction/commands/src/types.ts) +Source: [`packages/interaction/commands/src/types.ts`](../../packages/interaction/commands/src/types.ts) diff --git a/docs/subsystems/commands.zh.md b/docs/subsystems/commands.zh.md index 2085f1b5a5..2b4377b76b 100644 --- a/docs/subsystems/commands.zh.md +++ b/docs/subsystems/commands.zh.md @@ -184,7 +184,7 @@ find(agent: Agent, name: string): CommandDefinition | undefined Types: [Agent](core.zh.md) · [EncodedImageAttachment](attachment.zh.md) -Source: [`packages/interaction/commands/src/index.ts:250`](../../packages/interaction/commands/src/index.ts) +Source: [`packages/interaction/commands/src/index.ts`](../../packages/interaction/commands/src/index.ts) @@ -206,5 +206,5 @@ A command was registered or unregistered. This is an unfiltered registry notific 'commands/change'(): void ``` -Source: [`packages/interaction/commands/src/types.ts:80`](../../packages/interaction/commands/src/types.ts) +Source: [`packages/interaction/commands/src/types.ts`](../../packages/interaction/commands/src/types.ts) diff --git a/docs/subsystems/compaction.i18n.yaml b/docs/subsystems/compaction.i18n.yaml index 93ca267465..6ddba3abd7 100644 --- a/docs/subsystems/compaction.i18n.yaml +++ b/docs/subsystems/compaction.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/subsystems/compaction.md -compaction.md: 7f0f65f7d12c52a812538212576cca212990aed2 -compaction.zh.md: 8521696e081543a93aab171e75433544f5356660 +compaction.md: 4b6e9dee81cb30d42bb6194776457e354102b529 +compaction.zh.md: a9c57b64798be1d0361125eac68d589b3e0f1c66 diff --git a/docs/subsystems/compaction.md b/docs/subsystems/compaction.md index 7f0f65f7d1..4b6e9dee81 100644 --- a/docs/subsystems/compaction.md +++ b/docs/subsystems/compaction.md @@ -192,7 +192,7 @@ abstract compactRegion( start: number, end: number, agent: CompactionAgentContex Types: [CommandId](commands.md) -Source: [`packages/compaction/compaction/src/index.ts:96`](../../packages/compaction/compaction/src/index.ts) +Source: [`packages/compaction/compaction/src/index.ts`](../../packages/compaction/compaction/src/index.ts) @@ -234,5 +234,5 @@ pruneSession(session: Session): PruneResult Types: [ContentBlock](llm-streaming.md) · [Session](session.md) -Source: [`packages/compaction/compaction-tool-result-pruner/src/index.ts:44`](../../packages/compaction/compaction-tool-result-pruner/src/index.ts) +Source: [`packages/compaction/compaction-tool-result-pruner/src/index.ts`](../../packages/compaction/compaction-tool-result-pruner/src/index.ts) diff --git a/docs/subsystems/compaction.zh.md b/docs/subsystems/compaction.zh.md index 8521696e08..a9c57b6479 100644 --- a/docs/subsystems/compaction.zh.md +++ b/docs/subsystems/compaction.zh.md @@ -192,7 +192,7 @@ abstract compactRegion( start: number, end: number, agent: CompactionAgentContex Types: [CommandId](commands.zh.md) -Source: [`packages/compaction/compaction/src/index.ts:96`](../../packages/compaction/compaction/src/index.ts) +Source: [`packages/compaction/compaction/src/index.ts`](../../packages/compaction/compaction/src/index.ts) @@ -234,5 +234,5 @@ pruneSession(session: Session): PruneResult Types: [ContentBlock](llm-streaming.zh.md) · [Session](session.zh.md) -Source: [`packages/compaction/compaction-tool-result-pruner/src/index.ts:44`](../../packages/compaction/compaction-tool-result-pruner/src/index.ts) +Source: [`packages/compaction/compaction-tool-result-pruner/src/index.ts`](../../packages/compaction/compaction-tool-result-pruner/src/index.ts) diff --git a/docs/subsystems/core.i18n.yaml b/docs/subsystems/core.i18n.yaml index d4d97561c6..62f63c4e31 100644 --- a/docs/subsystems/core.i18n.yaml +++ b/docs/subsystems/core.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/subsystems/core.md -core.md: 506d3ef06bc5e57ff04f471733e43631fdbe89fb -core.zh.md: 56ed7966b19d66f4c2db714b1cd8a67533ead060 +core.md: 18057c9a9a308e439bb6a08f598f51f158243496 +core.zh.md: dfb1d8ad482b2cf9c6de94bde04c4dbff83a0082 diff --git a/docs/subsystems/core.md b/docs/subsystems/core.md index 506d3ef06b..18057c9a9a 100644 --- a/docs/subsystems/core.md +++ b/docs/subsystems/core.md @@ -338,7 +338,7 @@ currentSelection(): ModelSelection async saveSelection(next: ModelSelection): Promise ``` -Source: [`packages/core/agent-default-model/src/index.ts:64`](../../packages/core/agent-default-model/src/index.ts) +Source: [`packages/core/agent-default-model/src/index.ts`](../../packages/core/agent-default-model/src/index.ts) @@ -377,7 +377,7 @@ async resume(ownerCtx: Context, options: ResumeAgentOptions): Promise @@ -548,7 +548,7 @@ async standingKeyFor(id?: string): Promise Types: [ScopeKey](scope.md) -Source: [`packages/preset/agent-presets/src/index.ts:82`](../../packages/preset/agent-presets/src/index.ts) +Source: [`packages/preset/agent-presets/src/index.ts`](../../packages/preset/agent-presets/src/index.ts) @@ -720,7 +720,7 @@ list(): Agent[] roots(): Agent[] ``` -Source: [`packages/core/agent/src/index.ts:256`](../../packages/core/agent/src/index.ts) +Source: [`packages/core/agent/src/index.ts`](../../packages/core/agent/src/index.ts) @@ -748,7 +748,7 @@ A fully configured agent and live session were published. Setup is composition-o Types: [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:159`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -770,7 +770,7 @@ An agent left the registry; AgentLoop emits this after driver quiescence and sco Types: [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:168`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -794,7 +794,7 @@ A step or turn errored. The machine reports a failure here even when the error h Types: [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:290`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -818,7 +818,7 @@ One message left the inbox inside its open turn. If the proposed step is rejecte Types: [Scoped](scope.md) · [UserMessage](session.md) -Source: [`packages/core/agent/src/runtime-types.ts:197`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -839,7 +839,7 @@ One message was discarded from the live inbox. Types: [Scoped](scope.md) · [UserMessage](session.md) -Source: [`packages/core/agent/src/runtime-types.ts:205`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -860,7 +860,7 @@ One message entered the live inbox. Types: [Scoped](scope.md) · [UserMessage](session.md) -Source: [`packages/core/agent/src/runtime-types.ts:186`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -885,7 +885,7 @@ Reject a proposed step or replace the messages that enter it. Calling `next()` p Types: [Scoped](scope.md) · [UserMessage](session.md) -Source: [`packages/core/agent/src/runtime-types.ts:231`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -911,7 +911,7 @@ Replace the frozen call configuration. `await next()` yields the config the mach Types: [LlmCallConfig](llm-streaming.md) · [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:244`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -940,7 +940,7 @@ Handle one failed model-request attempt before the loop retries or closes its st Types: [LlmFailure](llm-streaming.md) · [ResolvedRetryPolicy](llm-streaming.md) · [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:260`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -964,7 +964,7 @@ The session lifecycle began, once before the first turn. Use `agent.inject()` to Types: [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:217`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -987,7 +987,7 @@ Agent status changed (`idle` ⇄ `running`). A waking delivery enters `running` Types: [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:178`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -1018,7 +1018,7 @@ The turn is about to close: the model owes no response (no live tool calls, no f Types: [Scoped](scope.md) -Source: [`packages/core/agent/src/runtime-types.ts:278`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -1043,7 +1043,7 @@ A declarative agent entry failed before it could publish a live agent. Consumers 'agent-loop/config-start-failed'(payload: { sessionId: SessionId; error: unknown }): void ``` -Source: [`packages/core/agent-loop/src/index.ts:183`](../../packages/core/agent-loop/src/index.ts) +Source: [`packages/core/agent-loop/src/index.ts`](../../packages/core/agent-loop/src/index.ts) @@ -1066,5 +1066,5 @@ One session committed a different agent preset to its durable log. Consumers inv 'agent-preset/selected'(sessionId: SessionId, agentPreset: string): void ``` -Source: [`packages/preset/agent-presets/src/types.ts:13`](../../packages/preset/agent-presets/src/types.ts) +Source: [`packages/preset/agent-presets/src/types.ts`](../../packages/preset/agent-presets/src/types.ts) diff --git a/docs/subsystems/core.zh.md b/docs/subsystems/core.zh.md index 56ed7966b1..dfb1d8ad48 100644 --- a/docs/subsystems/core.zh.md +++ b/docs/subsystems/core.zh.md @@ -348,7 +348,7 @@ currentSelection(): ModelSelection async saveSelection(next: ModelSelection): Promise ``` -Source: [`packages/core/agent-default-model/src/index.ts:64`](../../packages/core/agent-default-model/src/index.ts) +Source: [`packages/core/agent-default-model/src/index.ts`](../../packages/core/agent-default-model/src/index.ts) @@ -387,7 +387,7 @@ async resume(ownerCtx: Context, options: ResumeAgentOptions): Promise @@ -558,7 +558,7 @@ async standingKeyFor(id?: string): Promise Types: [ScopeKey](scope.zh.md) -Source: [`packages/preset/agent-presets/src/index.ts:82`](../../packages/preset/agent-presets/src/index.ts) +Source: [`packages/preset/agent-presets/src/index.ts`](../../packages/preset/agent-presets/src/index.ts) @@ -730,7 +730,7 @@ list(): Agent[] roots(): Agent[] ``` -Source: [`packages/core/agent/src/index.ts:256`](../../packages/core/agent/src/index.ts) +Source: [`packages/core/agent/src/index.ts`](../../packages/core/agent/src/index.ts) @@ -758,7 +758,7 @@ A fully configured agent and live session were published. Setup is composition-o Types: [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:159`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -780,7 +780,7 @@ An agent left the registry; AgentLoop emits this after driver quiescence and sco Types: [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:168`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -804,7 +804,7 @@ A step or turn errored. The machine reports a failure here even when the error h Types: [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:290`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -828,7 +828,7 @@ One message left the inbox inside its open turn. If the proposed step is rejecte Types: [Scoped](scope.zh.md) · [UserMessage](session.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:197`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -849,7 +849,7 @@ One message was discarded from the live inbox. Types: [Scoped](scope.zh.md) · [UserMessage](session.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:205`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -870,7 +870,7 @@ One message entered the live inbox. Types: [Scoped](scope.zh.md) · [UserMessage](session.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:186`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -895,7 +895,7 @@ Reject a proposed step or replace the messages that enter it. Calling `next()` p Types: [Scoped](scope.zh.md) · [UserMessage](session.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:231`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -921,7 +921,7 @@ Replace the frozen call configuration. `await next()` yields the config the mach Types: [LlmCallConfig](llm-streaming.zh.md) · [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:244`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -950,7 +950,7 @@ Handle one failed model-request attempt before the loop retries or closes its st Types: [LlmFailure](llm-streaming.zh.md) · [ResolvedRetryPolicy](llm-streaming.zh.md) · [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:260`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -974,7 +974,7 @@ The session lifecycle began, once before the first turn. Use `agent.inject()` to Types: [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:217`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -997,7 +997,7 @@ Agent status changed (`idle` ⇄ `running`). A waking delivery enters `running` Types: [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:178`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -1028,7 +1028,7 @@ The turn is about to close: the model owes no response (no live tool calls, no f Types: [Scoped](scope.zh.md) -Source: [`packages/core/agent/src/runtime-types.ts:278`](../../packages/core/agent/src/runtime-types.ts) +Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts) @@ -1053,7 +1053,7 @@ A declarative agent entry failed before it could publish a live agent. Consumers 'agent-loop/config-start-failed'(payload: { sessionId: SessionId; error: unknown }): void ``` -Source: [`packages/core/agent-loop/src/index.ts:183`](../../packages/core/agent-loop/src/index.ts) +Source: [`packages/core/agent-loop/src/index.ts`](../../packages/core/agent-loop/src/index.ts) @@ -1076,5 +1076,5 @@ One session committed a different agent preset to its durable log. Consumers inv 'agent-preset/selected'(sessionId: SessionId, agentPreset: string): void ``` -Source: [`packages/preset/agent-presets/src/types.ts:13`](../../packages/preset/agent-presets/src/types.ts) +Source: [`packages/preset/agent-presets/src/types.ts`](../../packages/preset/agent-presets/src/types.ts) diff --git a/docs/subsystems/credentials.i18n.yaml b/docs/subsystems/credentials.i18n.yaml index afdba08b7c..41c7b34cc4 100644 --- a/docs/subsystems/credentials.i18n.yaml +++ b/docs/subsystems/credentials.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/subsystems/credentials.md -credentials.md: 9807ff595fdfc5fa812acd3caf48234d4eb94bc0 -credentials.zh.md: f621364840f8d894937bec61ac0b60c291f9e28e +credentials.md: 9955f3ae6c6991ba5abbbec593ca5ccd12ef8773 +credentials.zh.md: 5565fe89431da42cd50fabca48bcc53e0810c800 diff --git a/docs/subsystems/credentials.md b/docs/subsystems/credentials.md index 9807ff595f..9955f3ae6c 100644 --- a/docs/subsystems/credentials.md +++ b/docs/subsystems/credentials.md @@ -116,7 +116,7 @@ cancel(key: CredentialKey): void async begin(request: AuthorizationRequest): Promise ``` -Source: [`packages/credentials/authorization/src/index.ts:182`](../../packages/credentials/authorization/src/index.ts) +Source: [`packages/credentials/authorization/src/index.ts`](../../packages/credentials/authorization/src/index.ts) @@ -210,7 +210,7 @@ abstract modifyRecord( key: CredentialKey, mutate: (current: CredentialRecord | abstract deleteRecord(key: CredentialKey): Promise ``` -Source: [`packages/credentials/credentials/src/index.ts:177`](../../packages/credentials/credentials/src/index.ts) +Source: [`packages/credentials/credentials/src/index.ts`](../../packages/credentials/credentials/src/index.ts) @@ -234,7 +234,7 @@ One authorization attempt has finished and released its key. Fires for every ter 'authorization/settled'(key: CredentialKey, settlement: AuthorizationSettlement): void ``` -Source: [`packages/credentials/authorization/src/index.ts:57`](../../packages/credentials/authorization/src/index.ts) +Source: [`packages/credentials/authorization/src/index.ts`](../../packages/credentials/authorization/src/index.ts) @@ -260,7 +260,7 @@ Committed change to a stored credential record: a `modifyRecord` that wrote, a ` 'credentials/record-updated'(key: CredentialKey): void ``` -Source: [`packages/credentials/credentials/src/types.ts:87`](../../packages/credentials/credentials/src/types.ts) +Source: [`packages/credentials/credentials/src/types.ts`](../../packages/credentials/credentials/src/types.ts) @@ -284,5 +284,5 @@ Committed change to a provider-managed credential source: a `set`, an `unset`, o 'credentials/reference-updated'(ref: CredentialRef): void ``` -Source: [`packages/credentials/credentials/src/types.ts:75`](../../packages/credentials/credentials/src/types.ts) +Source: [`packages/credentials/credentials/src/types.ts`](../../packages/credentials/credentials/src/types.ts) diff --git a/docs/subsystems/credentials.zh.md b/docs/subsystems/credentials.zh.md index f621364840..5565fe8943 100644 --- a/docs/subsystems/credentials.zh.md +++ b/docs/subsystems/credentials.zh.md @@ -116,7 +116,7 @@ cancel(key: CredentialKey): void async begin(request: AuthorizationRequest): Promise ``` -Source: [`packages/credentials/authorization/src/index.ts:182`](../../packages/credentials/authorization/src/index.ts) +Source: [`packages/credentials/authorization/src/index.ts`](../../packages/credentials/authorization/src/index.ts) @@ -210,7 +210,7 @@ abstract modifyRecord( key: CredentialKey, mutate: (current: CredentialRecord | abstract deleteRecord(key: CredentialKey): Promise ``` -Source: [`packages/credentials/credentials/src/index.ts:177`](../../packages/credentials/credentials/src/index.ts) +Source: [`packages/credentials/credentials/src/index.ts`](../../packages/credentials/credentials/src/index.ts) @@ -234,7 +234,7 @@ One authorization attempt has finished and released its key. Fires for every ter 'authorization/settled'(key: CredentialKey, settlement: AuthorizationSettlement): void ``` -Source: [`packages/credentials/authorization/src/index.ts:57`](../../packages/credentials/authorization/src/index.ts) +Source: [`packages/credentials/authorization/src/index.ts`](../../packages/credentials/authorization/src/index.ts) @@ -260,7 +260,7 @@ Committed change to a stored credential record: a `modifyRecord` that wrote, a ` 'credentials/record-updated'(key: CredentialKey): void ``` -Source: [`packages/credentials/credentials/src/types.ts:87`](../../packages/credentials/credentials/src/types.ts) +Source: [`packages/credentials/credentials/src/types.ts`](../../packages/credentials/credentials/src/types.ts) @@ -284,5 +284,5 @@ Committed change to a provider-managed credential source: a `set`, an `unset`, o 'credentials/reference-updated'(ref: CredentialRef): void ``` -Source: [`packages/credentials/credentials/src/types.ts:75`](../../packages/credentials/credentials/src/types.ts) +Source: [`packages/credentials/credentials/src/types.ts`](../../packages/credentials/credentials/src/types.ts) diff --git a/docs/subsystems/extensions.i18n.yaml b/docs/subsystems/extensions.i18n.yaml index dcdf4bf2d7..e3a18d04d7 100644 --- a/docs/subsystems/extensions.i18n.yaml +++ b/docs/subsystems/extensions.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/subsystems/extensions.md -extensions.md: 4f31a528e63e7849657e11a8a7456499faefdf9b -extensions.zh.md: 7ff99125ccac936c8b07791fd384932dc2ca8923 +extensions.md: 0418afc7f1b6b6cd892deb618a4f346f6cde720d +extensions.zh.md: f2d86add9f1b62913fcc1b89abf1fc1a1d2a178f diff --git a/docs/subsystems/extensions.md b/docs/subsystems/extensions.md index 4f31a528e6..0418afc7f1 100644 --- a/docs/subsystems/extensions.md +++ b/docs/subsystems/extensions.md @@ -62,7 +62,7 @@ resolveClientQuery( agent: Agent, requestId: CordisInspectRequestId, resolution: Types: [Agent](core.md) -Source: [`packages/extensions/cordis-host-runner/src/inspect-registry.ts:46`](../../packages/extensions/cordis-host-runner/src/inspect-registry.ts) +Source: [`packages/extensions/cordis-host-runner/src/inspect-registry.ts`](../../packages/extensions/cordis-host-runner/src/inspect-registry.ts) @@ -254,7 +254,7 @@ inspectPackage( agent: Agent, pluginId: CordisDynamicPluginId, packageId: Cordis Types: [Agent](core.md) -Source: [`packages/extensions/cordis-host-runner/src/index.ts:124`](../../packages/extensions/cordis-host-runner/src/index.ts) +Source: [`packages/extensions/cordis-host-runner/src/index.ts`](../../packages/extensions/cordis-host-runner/src/index.ts) @@ -275,7 +275,7 @@ One exact Plugin/Package activation is now live in the Host. 'cordis/dynamic-package'(pkg: DynamicCordisPackage): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:379`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -292,7 +292,7 @@ One exact activation was withdrawn. 'cordis/dynamic-retract'(retracted: DynamicCordisRetracted): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:385`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -309,7 +309,7 @@ Request a live read-only query from the Client inspect registry. 'cordis/inspect-query'(request: CordisInspectQueryRequest): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:391`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -326,7 +326,7 @@ Notify every Client that an inspect query has settled or been cancelled. 'cordis/inspect-query-resolved'(resolved: CordisInspectQueryResolved): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:397`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -343,7 +343,7 @@ A Client-bearing activation needs a browser page, and may require a user decisio 'cordis/request-run'(request: DynamicCordisRunRequest): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:367`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -360,5 +360,5 @@ A pending Client activation request left the answerable state. 'cordis/request-run-resolved'(resolved: DynamicCordisRequestResolved): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:373`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) diff --git a/docs/subsystems/extensions.zh.md b/docs/subsystems/extensions.zh.md index 7ff99125cc..f2d86add9f 100644 --- a/docs/subsystems/extensions.zh.md +++ b/docs/subsystems/extensions.zh.md @@ -62,7 +62,7 @@ resolveClientQuery( agent: Agent, requestId: CordisInspectRequestId, resolution: Types: [Agent](core.zh.md) -Source: [`packages/extensions/cordis-host-runner/src/inspect-registry.ts:46`](../../packages/extensions/cordis-host-runner/src/inspect-registry.ts) +Source: [`packages/extensions/cordis-host-runner/src/inspect-registry.ts`](../../packages/extensions/cordis-host-runner/src/inspect-registry.ts) @@ -254,7 +254,7 @@ inspectPackage( agent: Agent, pluginId: CordisDynamicPluginId, packageId: Cordis Types: [Agent](core.zh.md) -Source: [`packages/extensions/cordis-host-runner/src/index.ts:124`](../../packages/extensions/cordis-host-runner/src/index.ts) +Source: [`packages/extensions/cordis-host-runner/src/index.ts`](../../packages/extensions/cordis-host-runner/src/index.ts) @@ -275,7 +275,7 @@ One exact Plugin/Package activation is now live in the Host. 'cordis/dynamic-package'(pkg: DynamicCordisPackage): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:379`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -292,7 +292,7 @@ One exact activation was withdrawn. 'cordis/dynamic-retract'(retracted: DynamicCordisRetracted): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:385`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -309,7 +309,7 @@ Request a live read-only query from the Client inspect registry. 'cordis/inspect-query'(request: CordisInspectQueryRequest): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:391`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -326,7 +326,7 @@ Notify every Client that an inspect query has settled or been cancelled. 'cordis/inspect-query-resolved'(resolved: CordisInspectQueryResolved): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:397`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -343,7 +343,7 @@ A Client-bearing activation needs a browser page, and may require a user decisio 'cordis/request-run'(request: DynamicCordisRunRequest): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:367`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) @@ -360,5 +360,5 @@ A pending Client activation request left the answerable state. 'cordis/request-run-resolved'(resolved: DynamicCordisRequestResolved): void ``` -Source: [`packages/extensions/cordis-host-runner/src/types.ts:373`](../../packages/extensions/cordis-host-runner/src/types.ts) +Source: [`packages/extensions/cordis-host-runner/src/types.ts`](../../packages/extensions/cordis-host-runner/src/types.ts) diff --git a/docs/subsystems/feedback.i18n.yaml b/docs/subsystems/feedback.i18n.yaml index d81e0dbcd2..1058f22630 100644 --- a/docs/subsystems/feedback.i18n.yaml +++ b/docs/subsystems/feedback.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/subsystems/feedback.md -feedback.md: 87ce7f3ed50cea6b3f646f645525afafb23c8e75 -feedback.zh.md: 389101186f1fa2aa42038b34de08b303dcb9d4fd +feedback.md: e8f9e6737b553ebf09c3f8570b6f6716f308b371 +feedback.zh.md: df772cfaabfd1965138c950022a768e1a8ed2ce9 diff --git a/docs/subsystems/feedback.md b/docs/subsystems/feedback.md index 87ce7f3ed5..e8f9e6737b 100644 --- a/docs/subsystems/feedback.md +++ b/docs/subsystems/feedback.md @@ -262,5 +262,5 @@ Storage-domain sidecar service. It inspects persisted Session history and never @Remote('delete') delete(request: MessageFeedbackDeleteRequest): Promise ``` -Source: [`packages/feedback/message-feedback/src/index.ts:150`](../../packages/feedback/message-feedback/src/index.ts) +Source: [`packages/feedback/message-feedback/src/index.ts`](../../packages/feedback/message-feedback/src/index.ts) diff --git a/docs/subsystems/feedback.zh.md b/docs/subsystems/feedback.zh.md index 389101186f..df772cfaab 100644 --- a/docs/subsystems/feedback.zh.md +++ b/docs/subsystems/feedback.zh.md @@ -262,5 +262,5 @@ Storage-domain sidecar service. It inspects persisted Session history and never @Remote('delete') delete(request: MessageFeedbackDeleteRequest): Promise ``` -Source: [`packages/feedback/message-feedback/src/index.ts:150`](../../packages/feedback/message-feedback/src/index.ts) +Source: [`packages/feedback/message-feedback/src/index.ts`](../../packages/feedback/message-feedback/src/index.ts) diff --git a/docs/subsystems/filesystem.i18n.yaml b/docs/subsystems/filesystem.i18n.yaml index f88b966057..94fe570a6f 100644 --- a/docs/subsystems/filesystem.i18n.yaml +++ b/docs/subsystems/filesystem.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/subsystems/filesystem.md -filesystem.md: 18a106542e69a96d3411ddfed77492acab7abcf5 -filesystem.zh.md: 63c49ac9178b1d9ac0b6dba59d51cc5d06288dd2 +filesystem.md: c95c430c39f15f9cea7435b5d18c0caf9ddb964e +filesystem.zh.md: ecbb9e83cf428cb5d17d814f299c7c008fffc4d4 diff --git a/docs/subsystems/filesystem.md b/docs/subsystems/filesystem.md index 18a106542e..c95c430c39 100644 --- a/docs/subsystems/filesystem.md +++ b/docs/subsystems/filesystem.md @@ -427,7 +427,7 @@ abstract editText( target: FsTarget, edit: FsEditRequest, expected?: { version: Types: [SandboxExecutionPolicy](sandbox.md) -Source: [`packages/fs/fs/src/index.ts:86`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) @@ -450,7 +450,7 @@ Single-slot decision for the next FileSystem.editText. Calling `next()` yields a 'fs/edit-intent'(target: FsTarget, actor: object | undefined, next: () => { version: FsVersion } | undefined | Promise<{ version: FsVersion } | undefined>): Promise<{ version: FsVersion } | undefined> ``` -Source: [`packages/fs/fs/src/index.ts:66`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) @@ -471,7 +471,7 @@ Record an authoritative positive or negative observation. Listeners must be sync 'fs/observed'(target: FsTarget, observation: FsObservation, actor: object | undefined): void ``` -Source: [`packages/fs/fs/src/index.ts:76`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) @@ -491,5 +491,5 @@ Single-slot decision for the next FileSystem.writeText. Calling `next()` yields 'fs/write-intent'(target: FsTarget, actor: object | undefined, next: () => FsWriteIntent | undefined | Promise): Promise ``` -Source: [`packages/fs/fs/src/index.ts:58`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) diff --git a/docs/subsystems/filesystem.zh.md b/docs/subsystems/filesystem.zh.md index 63c49ac917..ecbb9e83cf 100644 --- a/docs/subsystems/filesystem.zh.md +++ b/docs/subsystems/filesystem.zh.md @@ -427,7 +427,7 @@ abstract editText( target: FsTarget, edit: FsEditRequest, expected?: { version: Types: [SandboxExecutionPolicy](sandbox.zh.md) -Source: [`packages/fs/fs/src/index.ts:86`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) @@ -450,7 +450,7 @@ Single-slot decision for the next FileSystem.editText. Calling `next()` yields a 'fs/edit-intent'(target: FsTarget, actor: object | undefined, next: () => { version: FsVersion } | undefined | Promise<{ version: FsVersion } | undefined>): Promise<{ version: FsVersion } | undefined> ``` -Source: [`packages/fs/fs/src/index.ts:66`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) @@ -471,7 +471,7 @@ Record an authoritative positive or negative observation. Listeners must be sync 'fs/observed'(target: FsTarget, observation: FsObservation, actor: object | undefined): void ``` -Source: [`packages/fs/fs/src/index.ts:76`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) @@ -491,5 +491,5 @@ Single-slot decision for the next FileSystem.writeText. Calling `next()` yields 'fs/write-intent'(target: FsTarget, actor: object | undefined, next: () => FsWriteIntent | undefined | Promise): Promise ``` -Source: [`packages/fs/fs/src/index.ts:58`](../../packages/fs/fs/src/index.ts) +Source: [`packages/fs/fs/src/index.ts`](../../packages/fs/fs/src/index.ts) diff --git a/docs/subsystems/goal.i18n.yaml b/docs/subsystems/goal.i18n.yaml index 66729162ea..2a3eed35c1 100644 --- a/docs/subsystems/goal.i18n.yaml +++ b/docs/subsystems/goal.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/subsystems/goal.md -goal.md: 1052db661f1151b57b59ccd202bd76a9147487dc -goal.zh.md: f0e5045541b926df5fd67169306f98aeb8262742 +goal.md: 858d0f073f570185ff101f0d64ac701693e5e866 +goal.zh.md: 4e3687c3dddc4fda738f71fec8ded39d3b7c3e92 diff --git a/docs/subsystems/goal.md b/docs/subsystems/goal.md index 1052db661f..858d0f073f 100644 --- a/docs/subsystems/goal.md +++ b/docs/subsystems/goal.md @@ -247,7 +247,7 @@ block(agent: Agent, ref: GoalRef, reason: GoalBlockReason): GoalView Types: [Agent](core.md) -Source: [`packages/goal/goal/src/index.ts:183`](../../packages/goal/goal/src/index.ts) +Source: [`packages/goal/goal/src/index.ts`](../../packages/goal/goal/src/index.ts) @@ -273,5 +273,5 @@ Goal mutation accepted by one live agent. The matching `goal/change` session eve Types: [Agent](core.md) · [Scoped](scope.md) -Source: [`packages/goal/goal/src/domain.ts:114`](../../packages/goal/goal/src/domain.ts) +Source: [`packages/goal/goal/src/domain.ts`](../../packages/goal/goal/src/domain.ts) diff --git a/docs/subsystems/goal.zh.md b/docs/subsystems/goal.zh.md index f0e5045541..4e3687c3dd 100644 --- a/docs/subsystems/goal.zh.md +++ b/docs/subsystems/goal.zh.md @@ -247,7 +247,7 @@ block(agent: Agent, ref: GoalRef, reason: GoalBlockReason): GoalView Types: [Agent](core.zh.md) -Source: [`packages/goal/goal/src/index.ts:183`](../../packages/goal/goal/src/index.ts) +Source: [`packages/goal/goal/src/index.ts`](../../packages/goal/goal/src/index.ts) @@ -273,5 +273,5 @@ Goal mutation accepted by one live agent. The matching `goal/change` session eve Types: [Agent](core.zh.md) · [Scoped](scope.zh.md) -Source: [`packages/goal/goal/src/domain.ts:114`](../../packages/goal/goal/src/domain.ts) +Source: [`packages/goal/goal/src/domain.ts`](../../packages/goal/goal/src/domain.ts) diff --git a/docs/subsystems/invariants.i18n.yaml b/docs/subsystems/invariants.i18n.yaml index 904ec3f559..e7113fd035 100644 --- a/docs/subsystems/invariants.i18n.yaml +++ b/docs/subsystems/invariants.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/subsystems/invariants.md -invariants.md: 4ddae507a0f4d0b1e46eeea5e4426f0c9c294cda -invariants.zh.md: bd29bb01debfd3c0955954a8ca77652c61566e6d +invariants.md: 9d0de847a7b7170365e06431be79f7feb1e2ef4d +invariants.zh.md: 972b0b17730a8d261a7ea837dd771f05b14614f2 diff --git a/docs/subsystems/invariants.md b/docs/subsystems/invariants.md index 4ddae507a0..9d0de847a7 100644 --- a/docs/subsystems/invariants.md +++ b/docs/subsystems/invariants.md @@ -84,5 +84,5 @@ Package-owned invariant registry with global and regex-based selection. register(packageName: string, installer: InvariantInstaller): () => void ``` -Source: [`packages/runtime-diagnostics/invariants/src/index.ts:94`](../../packages/runtime-diagnostics/invariants/src/index.ts) +Source: [`packages/runtime-diagnostics/invariants/src/index.ts`](../../packages/runtime-diagnostics/invariants/src/index.ts) diff --git a/docs/subsystems/invariants.zh.md b/docs/subsystems/invariants.zh.md index bd29bb01de..972b0b1773 100644 --- a/docs/subsystems/invariants.zh.md +++ b/docs/subsystems/invariants.zh.md @@ -84,5 +84,5 @@ Package-owned invariant registry with global and regex-based selection. register(packageName: string, installer: InvariantInstaller): () => void ``` -Source: [`packages/runtime-diagnostics/invariants/src/index.ts:94`](../../packages/runtime-diagnostics/invariants/src/index.ts) +Source: [`packages/runtime-diagnostics/invariants/src/index.ts`](../../packages/runtime-diagnostics/invariants/src/index.ts) diff --git a/docs/subsystems/jobs.i18n.yaml b/docs/subsystems/jobs.i18n.yaml index 0d71a7cec7..ac7311524c 100644 --- a/docs/subsystems/jobs.i18n.yaml +++ b/docs/subsystems/jobs.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/subsystems/jobs.md -jobs.md: 8263758a11c88144cbc695ffd133e2d97c780f0a -jobs.zh.md: 87f85035d66a181016d54edbc56fdeca71e0254b +jobs.md: 65e92a122b4870c7de295e33d115243b4da8f4d8 +jobs.zh.md: 115370b4ddef03b091e7c5b1d6bc4f65e5fce097 diff --git a/docs/subsystems/jobs.md b/docs/subsystems/jobs.md index 8263758a11..65e92a122b 100644 --- a/docs/subsystems/jobs.md +++ b/docs/subsystems/jobs.md @@ -286,5 +286,5 @@ abstract attachController(name: string): () => void Types: [Agent](core.md) -Source: [`packages/jobs/jobs/src/index.ts:62`](../../packages/jobs/jobs/src/index.ts) +Source: [`packages/jobs/jobs/src/index.ts`](../../packages/jobs/jobs/src/index.ts) diff --git a/docs/subsystems/jobs.zh.md b/docs/subsystems/jobs.zh.md index 87f85035d6..115370b4dd 100644 --- a/docs/subsystems/jobs.zh.md +++ b/docs/subsystems/jobs.zh.md @@ -286,5 +286,5 @@ abstract attachController(name: string): () => void Types: [Agent](core.zh.md) -Source: [`packages/jobs/jobs/src/index.ts:62`](../../packages/jobs/jobs/src/index.ts) +Source: [`packages/jobs/jobs/src/index.ts`](../../packages/jobs/jobs/src/index.ts) diff --git a/docs/subsystems/llm-streaming.i18n.yaml b/docs/subsystems/llm-streaming.i18n.yaml index 994cb55e40..5c118e9782 100644 --- a/docs/subsystems/llm-streaming.i18n.yaml +++ b/docs/subsystems/llm-streaming.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/subsystems/llm-streaming.md -llm-streaming.md: b4f4a704ba49b0ad4ce327b35a49a855a1ba84b2 -llm-streaming.zh.md: dc9b69b9b9519c94983b71900bb1347311c62f77 +llm-streaming.md: 4f322ca1024b9d74a4906e34f93fc6f8e4082cbf +llm-streaming.zh.md: c74cabe27c1f5fdd44711ac0aae7cd6b0a7ba7dd diff --git a/docs/subsystems/llm-streaming.md b/docs/subsystems/llm-streaming.md index b4f4a704ba..4f322ca102 100644 --- a/docs/subsystems/llm-streaming.md +++ b/docs/subsystems/llm-streaming.md @@ -873,7 +873,7 @@ async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise ``` -Source: [`packages/llm/llm/src/index.ts:284`](../../packages/llm/llm/src/index.ts) +Source: [`packages/llm/llm/src/index.ts`](../../packages/llm/llm/src/index.ts) @@ -898,7 +898,7 @@ The provider topology changed: an adapter registered or unregistered routes, or 'llm/adapters-updated'(): void ``` -Source: [`packages/llm/llm/src/types.ts:23`](../../packages/llm/llm/src/types.ts) +Source: [`packages/llm/llm/src/types.ts`](../../packages/llm/llm/src/types.ts) @@ -922,5 +922,5 @@ Waterfall around every streaming model call (retry, replay, routing). Bound to t 'llm/stream'(this: LlmRuntime, options: GenerateOptions, next: () => AsyncIterable): AsyncIterable ``` -Source: [`packages/llm/llm/src/index.ts:64`](../../packages/llm/llm/src/index.ts) +Source: [`packages/llm/llm/src/index.ts`](../../packages/llm/llm/src/index.ts) diff --git a/docs/subsystems/llm-streaming.zh.md b/docs/subsystems/llm-streaming.zh.md index dc9b69b9b9..c74cabe27c 100644 --- a/docs/subsystems/llm-streaming.zh.md +++ b/docs/subsystems/llm-streaming.zh.md @@ -879,7 +879,7 @@ async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise ``` -Source: [`packages/llm/llm/src/index.ts:284`](../../packages/llm/llm/src/index.ts) +Source: [`packages/llm/llm/src/index.ts`](../../packages/llm/llm/src/index.ts) @@ -904,7 +904,7 @@ The provider topology changed: an adapter registered or unregistered routes, or 'llm/adapters-updated'(): void ``` -Source: [`packages/llm/llm/src/types.ts:23`](../../packages/llm/llm/src/types.ts) +Source: [`packages/llm/llm/src/types.ts`](../../packages/llm/llm/src/types.ts) @@ -928,5 +928,5 @@ Waterfall around every streaming model call (retry, replay, routing). Bound to t 'llm/stream'(this: LlmRuntime, options: GenerateOptions, next: () => AsyncIterable): AsyncIterable ``` -Source: [`packages/llm/llm/src/index.ts:64`](../../packages/llm/llm/src/index.ts) +Source: [`packages/llm/llm/src/index.ts`](../../packages/llm/llm/src/index.ts) diff --git a/docs/subsystems/lsp.i18n.yaml b/docs/subsystems/lsp.i18n.yaml index 4e848f20a8..aa407f434a 100644 --- a/docs/subsystems/lsp.i18n.yaml +++ b/docs/subsystems/lsp.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/subsystems/lsp.md -lsp.md: 8796b30caf9c1e8721c4ef2aad45b91598b8be24 -lsp.zh.md: da1d648c8fc35347faa06cb28a8431cf6213bc20 +lsp.md: 8f0b12cdbc4d81a9317b8f360fb7b76a03fbeb2b +lsp.zh.md: e88218f549b5f12ac1f6681085380347818a478d diff --git a/docs/subsystems/lsp.md b/docs/subsystems/lsp.md index 8796b30caf..8f0b12cdbc 100644 --- a/docs/subsystems/lsp.md +++ b/docs/subsystems/lsp.md @@ -198,5 +198,5 @@ registerProvider(provider: LspProvider): () => void query(request: LspQueryRequest, signal?: AbortSignal): Promise ``` -Source: [`packages/lsp/lsp/src/types.ts:113`](../../packages/lsp/lsp/src/types.ts) +Source: [`packages/lsp/lsp/src/types.ts`](../../packages/lsp/lsp/src/types.ts) diff --git a/docs/subsystems/lsp.zh.md b/docs/subsystems/lsp.zh.md index da1d648c8f..e88218f549 100644 --- a/docs/subsystems/lsp.zh.md +++ b/docs/subsystems/lsp.zh.md @@ -198,5 +198,5 @@ registerProvider(provider: LspProvider): () => void query(request: LspQueryRequest, signal?: AbortSignal): Promise ``` -Source: [`packages/lsp/lsp/src/types.ts:113`](../../packages/lsp/lsp/src/types.ts) +Source: [`packages/lsp/lsp/src/types.ts`](../../packages/lsp/lsp/src/types.ts) diff --git a/docs/subsystems/permission-presets.i18n.yaml b/docs/subsystems/permission-presets.i18n.yaml index 97448670ed..31fbe4ceec 100644 --- a/docs/subsystems/permission-presets.i18n.yaml +++ b/docs/subsystems/permission-presets.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/subsystems/permission-presets.md -permission-presets.md: e48a8d5641f73ab756b02004e143d97317468986 -permission-presets.zh.md: 7375a71c5c45e51a7f03428fd6652b33f40968e7 +permission-presets.md: fd32572cc6f17c30ea5db8f0fdacdb14cec286ab +permission-presets.zh.md: 0a74303766aeebc0aa55bbdd3098f0bb764e72c2 diff --git a/docs/subsystems/permission-presets.md b/docs/subsystems/permission-presets.md index e48a8d5641..fd32572cc6 100644 --- a/docs/subsystems/permission-presets.md +++ b/docs/subsystems/permission-presets.md @@ -139,5 +139,5 @@ set(session: Session, name: string): void Types: [Session](session.md) · [SessionEvent](session.md) -Source: [`packages/interaction/permission-presets/src/index.ts:188`](../../packages/interaction/permission-presets/src/index.ts) +Source: [`packages/interaction/permission-presets/src/index.ts`](../../packages/interaction/permission-presets/src/index.ts) diff --git a/docs/subsystems/permission-presets.zh.md b/docs/subsystems/permission-presets.zh.md index 7375a71c5c..0a74303766 100644 --- a/docs/subsystems/permission-presets.zh.md +++ b/docs/subsystems/permission-presets.zh.md @@ -139,5 +139,5 @@ set(session: Session, name: string): void Types: [Session](session.zh.md) · [SessionEvent](session.zh.md) -Source: [`packages/interaction/permission-presets/src/index.ts:188`](../../packages/interaction/permission-presets/src/index.ts) +Source: [`packages/interaction/permission-presets/src/index.ts`](../../packages/interaction/permission-presets/src/index.ts) diff --git a/docs/subsystems/persistence.i18n.yaml b/docs/subsystems/persistence.i18n.yaml index fae7a9826f..886f483490 100644 --- a/docs/subsystems/persistence.i18n.yaml +++ b/docs/subsystems/persistence.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/subsystems/persistence.md -persistence.md: 74543949696575cf001909000356354806928139 -persistence.zh.md: c0a82a9b71da8017ff34be72a9a8cc5b596222b3 +persistence.md: 1480780b343e2d55544e441362abde58ffdffb2b +persistence.zh.md: 67bd8900fbcd0d006adb80da13fa8dbb2b6dd3e0 diff --git a/docs/subsystems/persistence.md b/docs/subsystems/persistence.md index 7454394969..1480780b34 100644 --- a/docs/subsystems/persistence.md +++ b/docs/subsystems/persistence.md @@ -381,5 +381,5 @@ abstract listSnapshots(signal?: AbortSignal): Promise diff --git a/docs/subsystems/persistence.zh.md b/docs/subsystems/persistence.zh.md index c0a82a9b71..67bd8900fb 100644 --- a/docs/subsystems/persistence.zh.md +++ b/docs/subsystems/persistence.zh.md @@ -381,5 +381,5 @@ abstract listSnapshots(signal?: AbortSignal): Promise diff --git a/docs/subsystems/plan.i18n.yaml b/docs/subsystems/plan.i18n.yaml index 6c16dd05e8..339cd581de 100644 --- a/docs/subsystems/plan.i18n.yaml +++ b/docs/subsystems/plan.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/subsystems/plan.md -plan.md: 0bb29022857175ab3c17399af205c20dbb9b14f9 -plan.zh.md: 032a96abb398d05413b1dea48a9cdd1c5aebdd81 +plan.md: a4332ba97667f125b0996f305e7e2a2a36005ddf +plan.zh.md: e8536d873e92f9afa0482a1268a66e5379f65453 diff --git a/docs/subsystems/plan.md b/docs/subsystems/plan.md index 0bb2902285..a4332ba976 100644 --- a/docs/subsystems/plan.md +++ b/docs/subsystems/plan.md @@ -83,5 +83,5 @@ set(agent: Agent, active: boolean): 'committed' | 'queued' | 'cancelled' | 'noop Types: [Agent](core.md) -Source: [`packages/plan/plan-mode/src/index.ts:202`](../../packages/plan/plan-mode/src/index.ts) +Source: [`packages/plan/plan-mode/src/index.ts`](../../packages/plan/plan-mode/src/index.ts) diff --git a/docs/subsystems/plan.zh.md b/docs/subsystems/plan.zh.md index 032a96abb3..e8536d873e 100644 --- a/docs/subsystems/plan.zh.md +++ b/docs/subsystems/plan.zh.md @@ -83,5 +83,5 @@ set(agent: Agent, active: boolean): 'committed' | 'queued' | 'cancelled' | 'noop Types: [Agent](core.zh.md) -Source: [`packages/plan/plan-mode/src/index.ts:202`](../../packages/plan/plan-mode/src/index.ts) +Source: [`packages/plan/plan-mode/src/index.ts`](../../packages/plan/plan-mode/src/index.ts) diff --git a/docs/subsystems/sandbox.i18n.yaml b/docs/subsystems/sandbox.i18n.yaml index 50ad8aab39..445c0198ed 100644 --- a/docs/subsystems/sandbox.i18n.yaml +++ b/docs/subsystems/sandbox.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/subsystems/sandbox.md -sandbox.md: d02ad021c4535991687eca22efc3fe1d851541b6 -sandbox.zh.md: 21d41c45699124da9d8bd0165edb1cf691a8b322 +sandbox.md: 765b33e2aca437735163a0203ec17bfe35b485d8 +sandbox.zh.md: 6d2b10d63a0e180bc0fe39cc47930e66dee72466 diff --git a/docs/subsystems/sandbox.md b/docs/subsystems/sandbox.md index d02ad021c4..765b33e2ac 100644 --- a/docs/subsystems/sandbox.md +++ b/docs/subsystems/sandbox.md @@ -184,7 +184,7 @@ Abstract process-sandbox service. confine must return enforcing argv or fail clo abstract confine(argv: readonly string[], policy: SandboxPolicy): ConfinedArgv ``` -Source: [`packages/sandbox/sandbox/src/index.ts:158`](../../packages/sandbox/sandbox/src/index.ts) +Source: [`packages/sandbox/sandbox/src/index.ts`](../../packages/sandbox/sandbox/src/index.ts) @@ -214,5 +214,5 @@ overrideOf(session: Session): SandboxMode | undefined Types: [Session](session.md) -Source: [`packages/sandbox/sandbox-policy/src/index.ts:91`](../../packages/sandbox/sandbox-policy/src/index.ts) +Source: [`packages/sandbox/sandbox-policy/src/index.ts`](../../packages/sandbox/sandbox-policy/src/index.ts) diff --git a/docs/subsystems/sandbox.zh.md b/docs/subsystems/sandbox.zh.md index 21d41c4569..6d2b10d63a 100644 --- a/docs/subsystems/sandbox.zh.md +++ b/docs/subsystems/sandbox.zh.md @@ -186,7 +186,7 @@ Abstract process-sandbox service. confine must return enforcing argv or fail clo abstract confine(argv: readonly string[], policy: SandboxPolicy): ConfinedArgv ``` -Source: [`packages/sandbox/sandbox/src/index.ts:158`](../../packages/sandbox/sandbox/src/index.ts) +Source: [`packages/sandbox/sandbox/src/index.ts`](../../packages/sandbox/sandbox/src/index.ts) @@ -216,5 +216,5 @@ overrideOf(session: Session): SandboxMode | undefined Types: [Session](session.zh.md) -Source: [`packages/sandbox/sandbox-policy/src/index.ts:91`](../../packages/sandbox/sandbox-policy/src/index.ts) +Source: [`packages/sandbox/sandbox-policy/src/index.ts`](../../packages/sandbox/sandbox-policy/src/index.ts) diff --git a/docs/subsystems/session-projection.i18n.yaml b/docs/subsystems/session-projection.i18n.yaml index a40e9310f1..03991ac2d1 100644 --- a/docs/subsystems/session-projection.i18n.yaml +++ b/docs/subsystems/session-projection.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/subsystems/session-projection.md -session-projection.md: 0258900a591ebfcce8d4ac88640d9d9aaf60b00c -session-projection.zh.md: 949a9e7dd7fad05eba31b60a114fbae6e8a83044 +session-projection.md: ccd4b0305c6253f7a00930ca0f0f2e5ffd5195b9 +session-projection.zh.md: 6b62f8898dfae7dc1d382e2c5466c5e8c3e725e9 diff --git a/docs/subsystems/session-projection.md b/docs/subsystems/session-projection.md index 0258900a59..ccd4b0305c 100644 --- a/docs/subsystems/session-projection.md +++ b/docs/subsystems/session-projection.md @@ -156,7 +156,7 @@ async coldSnapshot(id: SessionId, signal?: AbortSignal): Promise @@ -283,5 +283,5 @@ restore( checkpoint: ProjectionCheckpoint, events: readonly SessionEvent[], base Types: [Session](session.md) · [SessionEvent](session.md) -Source: [`packages/session/session-projection/src/index.ts:180`](../../packages/session/session-projection/src/index.ts) +Source: [`packages/session/session-projection/src/index.ts`](../../packages/session/session-projection/src/index.ts) diff --git a/docs/subsystems/session-projection.zh.md b/docs/subsystems/session-projection.zh.md index 949a9e7dd7..6b62f8898d 100644 --- a/docs/subsystems/session-projection.zh.md +++ b/docs/subsystems/session-projection.zh.md @@ -156,7 +156,7 @@ async coldSnapshot(id: SessionId, signal?: AbortSignal): Promise @@ -283,5 +283,5 @@ restore( checkpoint: ProjectionCheckpoint, events: readonly SessionEvent[], base Types: [Session](session.zh.md) · [SessionEvent](session.zh.md) -Source: [`packages/session/session-projection/src/index.ts:180`](../../packages/session/session-projection/src/index.ts) +Source: [`packages/session/session-projection/src/index.ts`](../../packages/session/session-projection/src/index.ts) diff --git a/docs/subsystems/session-query.i18n.yaml b/docs/subsystems/session-query.i18n.yaml index 43736ffe10..ced2ada4d3 100644 --- a/docs/subsystems/session-query.i18n.yaml +++ b/docs/subsystems/session-query.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/subsystems/session-query.md -session-query.md: d3f85a0325fe77b24b4293c6ae36009904b4e18f -session-query.zh.md: c640059758ff1d98434f533d42af45ded7fd2423 +session-query.md: 40dbd63cb8f0b6922130cb855cc313ebee73150a +session-query.zh.md: 7ccda38af1117b3ab9d2f55fde910c6d338c31f2 diff --git a/docs/subsystems/session-query.md b/docs/subsystems/session-query.md index d3f85a0325..40dbd63cb8 100644 --- a/docs/subsystems/session-query.md +++ b/docs/subsystems/session-query.md @@ -491,5 +491,5 @@ async readEvent(request: SessionEventReadRequest, signal?: AbortSignal): Promise Types: [SessionId](core.md) · [SessionTitleSnapshot](session-title.md) -Source: [`packages/session-query/session-query/src/index.ts:81`](../../packages/session-query/session-query/src/index.ts) +Source: [`packages/session-query/session-query/src/index.ts`](../../packages/session-query/session-query/src/index.ts) diff --git a/docs/subsystems/session-query.zh.md b/docs/subsystems/session-query.zh.md index c640059758..7ccda38af1 100644 --- a/docs/subsystems/session-query.zh.md +++ b/docs/subsystems/session-query.zh.md @@ -491,5 +491,5 @@ async readEvent(request: SessionEventReadRequest, signal?: AbortSignal): Promise Types: [SessionId](core.zh.md) · [SessionTitleSnapshot](session-title.zh.md) -Source: [`packages/session-query/session-query/src/index.ts:81`](../../packages/session-query/session-query/src/index.ts) +Source: [`packages/session-query/session-query/src/index.ts`](../../packages/session-query/session-query/src/index.ts) diff --git a/docs/subsystems/session-reference.i18n.yaml b/docs/subsystems/session-reference.i18n.yaml index fba0e302c2..886a442517 100644 --- a/docs/subsystems/session-reference.i18n.yaml +++ b/docs/subsystems/session-reference.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/subsystems/session-reference.md -session-reference.md: 38fdaef898b91ff357d9fbee53ba43bb88025c1c -session-reference.zh.md: fb8fdce5447312c149cac0402361c6cc81352414 +session-reference.md: 17c0d14485bd5a0eea97781c8f5fe1c4b3bda886 +session-reference.zh.md: 31a94bf94442a3778763457869bf916e18964a5c diff --git a/docs/subsystems/session-reference.md b/docs/subsystems/session-reference.md index 38fdaef898..17c0d14485 100644 --- a/docs/subsystems/session-reference.md +++ b/docs/subsystems/session-reference.md @@ -127,7 +127,7 @@ abstract list( agent: Agent, query: string, signal: AbortSignal, ): Promise @@ -170,5 +170,5 @@ async prepare( agent: Agent, content: ContentBlock[], references: SessionReferen Types: [Agent](core.md) · [ContentBlock](llm-streaming.md) -Source: [`packages/context/session-reference/src/index.ts:75`](../../packages/context/session-reference/src/index.ts) +Source: [`packages/context/session-reference/src/index.ts`](../../packages/context/session-reference/src/index.ts) diff --git a/docs/subsystems/session-reference.zh.md b/docs/subsystems/session-reference.zh.md index fb8fdce544..31a94bf944 100644 --- a/docs/subsystems/session-reference.zh.md +++ b/docs/subsystems/session-reference.zh.md @@ -127,7 +127,7 @@ abstract list( agent: Agent, query: string, signal: AbortSignal, ): Promise @@ -170,5 +170,5 @@ async prepare( agent: Agent, content: ContentBlock[], references: SessionReferen Types: [Agent](core.zh.md) · [ContentBlock](llm-streaming.zh.md) -Source: [`packages/context/session-reference/src/index.ts:75`](../../packages/context/session-reference/src/index.ts) +Source: [`packages/context/session-reference/src/index.ts`](../../packages/context/session-reference/src/index.ts) diff --git a/docs/subsystems/session-telemetry.i18n.yaml b/docs/subsystems/session-telemetry.i18n.yaml index 0cddd93e1b..8624d3c10d 100644 --- a/docs/subsystems/session-telemetry.i18n.yaml +++ b/docs/subsystems/session-telemetry.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/subsystems/session-telemetry.md -session-telemetry.md: e5311ab40b58d6196d8f479b2c1fb412430b6d83 -session-telemetry.zh.md: c6f474195020cc2fe2a3f485c832fa65a81dc0d3 +session-telemetry.md: 1158171c30228389317f708a35114bf4495a4e34 +session-telemetry.zh.md: f6c2d1dccf5ef5e6dad8e6e11ea843310a53f2d1 diff --git a/docs/subsystems/session-telemetry.md b/docs/subsystems/session-telemetry.md index e5311ab40b..1158171c30 100644 --- a/docs/subsystems/session-telemetry.md +++ b/docs/subsystems/session-telemetry.md @@ -156,7 +156,7 @@ flush?(): void abstract shutdown(): Promise ``` -Source: [`packages/session/session-telemetry/src/index.ts:148`](../../packages/session/session-telemetry/src/index.ts) +Source: [`packages/session/session-telemetry/src/index.ts`](../../packages/session/session-telemetry/src/index.ts) @@ -190,5 +190,5 @@ Transform one outbound record before it reaches the backend. This waterfall is t 'session-telemetry/record'(record: SessionTelemetryRecord, next: () => SessionTelemetryRecord): SessionTelemetryRecord ``` -Source: [`packages/session/session-telemetry/src/index.ts:43`](../../packages/session/session-telemetry/src/index.ts) +Source: [`packages/session/session-telemetry/src/index.ts`](../../packages/session/session-telemetry/src/index.ts) diff --git a/docs/subsystems/session-telemetry.zh.md b/docs/subsystems/session-telemetry.zh.md index c6f4741950..f6c2d1dccf 100644 --- a/docs/subsystems/session-telemetry.zh.md +++ b/docs/subsystems/session-telemetry.zh.md @@ -156,7 +156,7 @@ flush?(): void abstract shutdown(): Promise ``` -Source: [`packages/session/session-telemetry/src/index.ts:148`](../../packages/session/session-telemetry/src/index.ts) +Source: [`packages/session/session-telemetry/src/index.ts`](../../packages/session/session-telemetry/src/index.ts) @@ -190,5 +190,5 @@ Transform one outbound record before it reaches the backend. This waterfall is t 'session-telemetry/record'(record: SessionTelemetryRecord, next: () => SessionTelemetryRecord): SessionTelemetryRecord ``` -Source: [`packages/session/session-telemetry/src/index.ts:43`](../../packages/session/session-telemetry/src/index.ts) +Source: [`packages/session/session-telemetry/src/index.ts`](../../packages/session/session-telemetry/src/index.ts) diff --git a/docs/subsystems/session-title.i18n.yaml b/docs/subsystems/session-title.i18n.yaml index 110ab4bba1..c163c1109c 100644 --- a/docs/subsystems/session-title.i18n.yaml +++ b/docs/subsystems/session-title.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/subsystems/session-title.md -session-title.md: 0c1ea7c60eac1d45b4f23c4338a801e7c9b78a7a -session-title.zh.md: bb445f8af713ca1256f027a39b569834727f4929 +session-title.md: 13991f8e9d4e765fdc99ade077d928cb05d1ccaf +session-title.zh.md: 365876a50de3a04d11ddc8a6d7a69d0a74cf2353 diff --git a/docs/subsystems/session-title.md b/docs/subsystems/session-title.md index 0c1ea7c60e..13991f8e9d 100644 --- a/docs/subsystems/session-title.md +++ b/docs/subsystems/session-title.md @@ -200,5 +200,5 @@ register(provider: SessionTitleProvider): () => Promise Types: [Session](session.md) -Source: [`packages/session/session-title/src/index.ts:261`](../../packages/session/session-title/src/index.ts) +Source: [`packages/session/session-title/src/index.ts`](../../packages/session/session-title/src/index.ts) diff --git a/docs/subsystems/session-title.zh.md b/docs/subsystems/session-title.zh.md index bb445f8af7..365876a50d 100644 --- a/docs/subsystems/session-title.zh.md +++ b/docs/subsystems/session-title.zh.md @@ -200,5 +200,5 @@ register(provider: SessionTitleProvider): () => Promise Types: [Session](session.zh.md) -Source: [`packages/session/session-title/src/index.ts:261`](../../packages/session/session-title/src/index.ts) +Source: [`packages/session/session-title/src/index.ts`](../../packages/session/session-title/src/index.ts) diff --git a/docs/subsystems/session.i18n.yaml b/docs/subsystems/session.i18n.yaml index 770e8c4c98..814f019958 100644 --- a/docs/subsystems/session.i18n.yaml +++ b/docs/subsystems/session.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/subsystems/session.md -session.md: 28deb848807f51a4e426a7b8fd7e9eec19022b9a -session.zh.md: d8b415ef5b1397a3c56a31ad800bb296c053005a +session.md: 96520c72b83bf713b7fe09563f7d6e44c0386bcf +session.zh.md: 28a259226b8149dbe26c7650bc574de4aa43a740 diff --git a/docs/subsystems/session.md b/docs/subsystems/session.md index 28deb84880..96520c72b8 100644 --- a/docs/subsystems/session.md +++ b/docs/subsystems/session.md @@ -750,7 +750,7 @@ fork(source: SessionForkSource, boundary?: number, childSessionId?: SessionId): Types: [CreateSessionOptions](persistence.md) · [PrepareSessionOptions](persistence.md) · [SessionId](core.md) -Source: [`packages/core/session/src/index.ts:792`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -779,7 +779,7 @@ Creation announcement during session publication. A synchronous throw vetoes and Types: [Scoped](scope.md) -Source: [`packages/core/session/src/index.ts:54`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -802,7 +802,7 @@ Emitted once when an announced session leaves the store, including publication r Types: [Scoped](scope.md) -Source: [`packages/core/session/src/index.ts:64`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -827,7 +827,7 @@ Post-commit, fire-and-forget append feed. The listener snapshot resolves before Types: [Scoped](scope.md) -Source: [`packages/core/session/src/index.ts:76`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -849,5 +849,5 @@ Awaited parallel durability checkpoint: every listener runs and the caller await Types: [Scoped](scope.md) -Source: [`packages/core/session/src/index.ts:85`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) diff --git a/docs/subsystems/session.zh.md b/docs/subsystems/session.zh.md index d8b415ef5b..28a259226b 100644 --- a/docs/subsystems/session.zh.md +++ b/docs/subsystems/session.zh.md @@ -754,7 +754,7 @@ fork(source: SessionForkSource, boundary?: number, childSessionId?: SessionId): Types: [CreateSessionOptions](persistence.zh.md) · [PrepareSessionOptions](persistence.zh.md) · [SessionId](core.zh.md) -Source: [`packages/core/session/src/index.ts:792`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -783,7 +783,7 @@ Creation announcement during session publication. A synchronous throw vetoes and Types: [Scoped](scope.zh.md) -Source: [`packages/core/session/src/index.ts:54`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -806,7 +806,7 @@ Emitted once when an announced session leaves the store, including publication r Types: [Scoped](scope.zh.md) -Source: [`packages/core/session/src/index.ts:64`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -831,7 +831,7 @@ Post-commit, fire-and-forget append feed. The listener snapshot resolves before Types: [Scoped](scope.zh.md) -Source: [`packages/core/session/src/index.ts:76`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) @@ -853,5 +853,5 @@ Awaited parallel durability checkpoint: every listener runs and the caller await Types: [Scoped](scope.zh.md) -Source: [`packages/core/session/src/index.ts:85`](../../packages/core/session/src/index.ts) +Source: [`packages/core/session/src/index.ts`](../../packages/core/session/src/index.ts) diff --git a/docs/subsystems/settings.i18n.yaml b/docs/subsystems/settings.i18n.yaml index 27b54e2aab..7ece3a5715 100644 --- a/docs/subsystems/settings.i18n.yaml +++ b/docs/subsystems/settings.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/subsystems/settings.md -settings.md: 19ccf3ba9d977c85ca059b5f65d7694651e99b5b -settings.zh.md: 31a1733003a3d19a1f8d6c6dead1009d38db4a4c +settings.md: e408f32f67d71e49f5376d6c693be432344d3e07 +settings.zh.md: c09d0dbd576f3f2f68b45719f71b5445b31fc46a diff --git a/docs/subsystems/settings.md b/docs/subsystems/settings.md index 19ccf3ba9d..e408f32f67 100644 --- a/docs/subsystems/settings.md +++ b/docs/subsystems/settings.md @@ -252,7 +252,7 @@ async replace(ns: SettingsNamespace, section: object, expectedRevision?: number) async mutate(ns: SettingsNamespace, ops: readonly SettingsPathOp[], expectedRevision?: number): Promise ``` -Source: [`packages/settings/settings/src/index.ts:350`](../../packages/settings/settings/src/index.ts) +Source: [`packages/settings/settings/src/index.ts`](../../packages/settings/settings/src/index.ts) @@ -279,7 +279,7 @@ One registered namespace's RAW user section changed, whether or not the resolved 'settings/document-updated'(ns: SettingsNamespace, revision: number): void ``` -Source: [`packages/settings/settings/src/types.ts:48`](../../packages/settings/settings/src/types.ts) +Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts) @@ -306,5 +306,5 @@ Committed change to one registered namespace's resolved value. Emitted after the 'settings/updated'(ns: SettingsNamespace, next: unknown, prev: unknown, source: SettingsUpdateSource): void ``` -Source: [`packages/settings/settings/src/types.ts:35`](../../packages/settings/settings/src/types.ts) +Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts) diff --git a/docs/subsystems/settings.zh.md b/docs/subsystems/settings.zh.md index 31a1733003..c09d0dbd57 100644 --- a/docs/subsystems/settings.zh.md +++ b/docs/subsystems/settings.zh.md @@ -252,7 +252,7 @@ async replace(ns: SettingsNamespace, section: object, expectedRevision?: number) async mutate(ns: SettingsNamespace, ops: readonly SettingsPathOp[], expectedRevision?: number): Promise ``` -Source: [`packages/settings/settings/src/index.ts:350`](../../packages/settings/settings/src/index.ts) +Source: [`packages/settings/settings/src/index.ts`](../../packages/settings/settings/src/index.ts) @@ -279,7 +279,7 @@ One registered namespace's RAW user section changed, whether or not the resolved 'settings/document-updated'(ns: SettingsNamespace, revision: number): void ``` -Source: [`packages/settings/settings/src/types.ts:48`](../../packages/settings/settings/src/types.ts) +Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts) @@ -306,5 +306,5 @@ Committed change to one registered namespace's resolved value. Emitted after the 'settings/updated'(ns: SettingsNamespace, next: unknown, prev: unknown, source: SettingsUpdateSource): void ``` -Source: [`packages/settings/settings/src/types.ts:35`](../../packages/settings/settings/src/types.ts) +Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts) diff --git a/docs/subsystems/shell.i18n.yaml b/docs/subsystems/shell.i18n.yaml index eb0ef1208e..1515b4ed7b 100644 --- a/docs/subsystems/shell.i18n.yaml +++ b/docs/subsystems/shell.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/subsystems/shell.md -shell.md: 07e849085f3ad2fb7db566be352648ceacfa4d2d -shell.zh.md: f9c4521c1eed231bbf5718b8b67448b9e908e4ed +shell.md: 554adcfb1b37a5e2fe787a78dbb61a1206f80cf9 +shell.zh.md: f15b57cc0050bb8f38d2652ddb9ad0e250568663 diff --git a/docs/subsystems/shell.md b/docs/subsystems/shell.md index 07e849085f..554adcfb1b 100644 --- a/docs/subsystems/shell.md +++ b/docs/subsystems/shell.md @@ -266,7 +266,7 @@ abstract run(spec: ShellExecSpec): Promise abstract start(spec: ShellExecSpec): ShellProcess ``` -Source: [`packages/shell/shell/src/index.ts:65`](../../packages/shell/shell/src/index.ts) +Source: [`packages/shell/shell/src/index.ts`](../../packages/shell/shell/src/index.ts) @@ -299,5 +299,5 @@ list(): BashEnvVariableInfo[] Types: [DshEnvironment](subprocess.md) · [ToolExecution](tools.md) -Source: [`packages/shell/shell-env/src/index.ts:89`](../../packages/shell/shell-env/src/index.ts) +Source: [`packages/shell/shell-env/src/index.ts`](../../packages/shell/shell-env/src/index.ts) diff --git a/docs/subsystems/shell.zh.md b/docs/subsystems/shell.zh.md index f9c4521c1e..f15b57cc00 100644 --- a/docs/subsystems/shell.zh.md +++ b/docs/subsystems/shell.zh.md @@ -266,7 +266,7 @@ abstract run(spec: ShellExecSpec): Promise abstract start(spec: ShellExecSpec): ShellProcess ``` -Source: [`packages/shell/shell/src/index.ts:65`](../../packages/shell/shell/src/index.ts) +Source: [`packages/shell/shell/src/index.ts`](../../packages/shell/shell/src/index.ts) @@ -299,5 +299,5 @@ list(): BashEnvVariableInfo[] Types: [DshEnvironment](subprocess.zh.md) · [ToolExecution](tools.zh.md) -Source: [`packages/shell/shell-env/src/index.ts:89`](../../packages/shell/shell-env/src/index.ts) +Source: [`packages/shell/shell-env/src/index.ts`](../../packages/shell/shell-env/src/index.ts) diff --git a/docs/subsystems/skills.i18n.yaml b/docs/subsystems/skills.i18n.yaml index 984f4cae4e..93efc1068d 100644 --- a/docs/subsystems/skills.i18n.yaml +++ b/docs/subsystems/skills.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/subsystems/skills.md -skills.md: 839534993b26d0fe42d8000ddd2d96c235c41976 -skills.zh.md: 5f3196cc9a0d70a9c8e4865927c163a9b3d15378 +skills.md: 5abfa84356dc947f8b3359ad5f0fc5c42a99553a +skills.zh.md: 87759b5ab5bdfc5e9ab10cf9a86147c16893efd3 diff --git a/docs/subsystems/skills.md b/docs/subsystems/skills.md index 839534993b..5abfa84356 100644 --- a/docs/subsystems/skills.md +++ b/docs/subsystems/skills.md @@ -304,7 +304,7 @@ async snapshot(options: SkillViewOptions = {}): Promise async get(name: string, options: SkillViewOptions = {}): Promise ``` -Source: [`packages/skill/skill/src/index.ts:357`](../../packages/skill/skill/src/index.ts) +Source: [`packages/skill/skill/src/index.ts`](../../packages/skill/skill/src/index.ts) @@ -327,5 +327,5 @@ A skill provider, runtime contribution, or provider-backed catalog may have chan 'skills/change'(): void ``` -Source: [`packages/skill/skill/src/index.ts:297`](../../packages/skill/skill/src/index.ts) +Source: [`packages/skill/skill/src/index.ts`](../../packages/skill/skill/src/index.ts) diff --git a/docs/subsystems/skills.zh.md b/docs/subsystems/skills.zh.md index 5f3196cc9a..87759b5ab5 100644 --- a/docs/subsystems/skills.zh.md +++ b/docs/subsystems/skills.zh.md @@ -304,7 +304,7 @@ async snapshot(options: SkillViewOptions = {}): Promise async get(name: string, options: SkillViewOptions = {}): Promise ``` -Source: [`packages/skill/skill/src/index.ts:357`](../../packages/skill/skill/src/index.ts) +Source: [`packages/skill/skill/src/index.ts`](../../packages/skill/skill/src/index.ts) @@ -327,5 +327,5 @@ A skill provider, runtime contribution, or provider-backed catalog may have chan 'skills/change'(): void ``` -Source: [`packages/skill/skill/src/index.ts:297`](../../packages/skill/skill/src/index.ts) +Source: [`packages/skill/skill/src/index.ts`](../../packages/skill/skill/src/index.ts) diff --git a/docs/subsystems/spill.i18n.yaml b/docs/subsystems/spill.i18n.yaml index 5fa54cbc50..700683c015 100644 --- a/docs/subsystems/spill.i18n.yaml +++ b/docs/subsystems/spill.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/subsystems/spill.md -spill.md: 268dcdf458810f72f4fb2d54e372f0ce4bdf8d94 -spill.zh.md: be83cc124818ad3f6e612df6e8c415a8b5317a11 +spill.md: 8356fc45f8581c6776238f212592c4ea2841a96a +spill.zh.md: 353c5fea63ff6284c922a9bbf7d6d07f124fb9bd diff --git a/docs/subsystems/spill.md b/docs/subsystems/spill.md index 268dcdf458..8356fc45f8 100644 --- a/docs/subsystems/spill.md +++ b/docs/subsystems/spill.md @@ -113,5 +113,5 @@ Semantics every implementation must honor: abstract saveText(input: SaveTextSpill): Promise ``` -Source: [`packages/spill/spill/src/index.ts:45`](../../packages/spill/spill/src/index.ts) +Source: [`packages/spill/spill/src/index.ts`](../../packages/spill/spill/src/index.ts) diff --git a/docs/subsystems/spill.zh.md b/docs/subsystems/spill.zh.md index be83cc1248..353c5fea63 100644 --- a/docs/subsystems/spill.zh.md +++ b/docs/subsystems/spill.zh.md @@ -113,5 +113,5 @@ Semantics every implementation must honor: abstract saveText(input: SaveTextSpill): Promise ``` -Source: [`packages/spill/spill/src/index.ts:45`](../../packages/spill/spill/src/index.ts) +Source: [`packages/spill/spill/src/index.ts`](../../packages/spill/spill/src/index.ts) diff --git a/docs/subsystems/storage.i18n.yaml b/docs/subsystems/storage.i18n.yaml index 8e796445ed..c5b5807bcb 100644 --- a/docs/subsystems/storage.i18n.yaml +++ b/docs/subsystems/storage.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/subsystems/storage.md -storage.md: 6c31566af48ecac42974730dbb795ee8fb9d85b3 -storage.zh.md: 099b5037a7bad30aaffeb739629886c5e6825715 +storage.md: f64a8036c60e92f4c77f40e40e822059ce273472 +storage.zh.md: 84e446a9d3a554e9811841c38db65ed43772e31d diff --git a/docs/subsystems/storage.md b/docs/subsystems/storage.md index 6c31566af4..f64a8036c6 100644 --- a/docs/subsystems/storage.md +++ b/docs/subsystems/storage.md @@ -156,7 +156,7 @@ mount(form: K, facility: StorageForms[K]): () => v form(form: K): StorageForms[K] ``` -Source: [`packages/storage/storage/src/index.ts:47`](../../packages/storage/storage/src/index.ts) +Source: [`packages/storage/storage/src/index.ts`](../../packages/storage/storage/src/index.ts) @@ -201,7 +201,7 @@ get(name: string): DomainImpl | undefined async closeAll(): Promise ``` -Source: [`packages/storage/storage-domain/src/index.ts:69`](../../packages/storage/storage-domain/src/index.ts) +Source: [`packages/storage/storage-domain/src/index.ts`](../../packages/storage/storage-domain/src/index.ts) @@ -225,5 +225,5 @@ A domain record or the global singleton changed, emitted once per write strictly 'domain/changed'(change: DomainChanged): void ``` -Source: [`packages/storage/storage-domain/src/events.ts:46`](../../packages/storage/storage-domain/src/events.ts) +Source: [`packages/storage/storage-domain/src/events.ts`](../../packages/storage/storage-domain/src/events.ts) diff --git a/docs/subsystems/storage.zh.md b/docs/subsystems/storage.zh.md index 099b5037a7..84e446a9d3 100644 --- a/docs/subsystems/storage.zh.md +++ b/docs/subsystems/storage.zh.md @@ -156,7 +156,7 @@ mount(form: K, facility: StorageForms[K]): () => v form(form: K): StorageForms[K] ``` -Source: [`packages/storage/storage/src/index.ts:47`](../../packages/storage/storage/src/index.ts) +Source: [`packages/storage/storage/src/index.ts`](../../packages/storage/storage/src/index.ts) @@ -201,7 +201,7 @@ get(name: string): DomainImpl | undefined async closeAll(): Promise ``` -Source: [`packages/storage/storage-domain/src/index.ts:69`](../../packages/storage/storage-domain/src/index.ts) +Source: [`packages/storage/storage-domain/src/index.ts`](../../packages/storage/storage-domain/src/index.ts) @@ -225,5 +225,5 @@ A domain record or the global singleton changed, emitted once per write strictly 'domain/changed'(change: DomainChanged): void ``` -Source: [`packages/storage/storage-domain/src/events.ts:46`](../../packages/storage/storage-domain/src/events.ts) +Source: [`packages/storage/storage-domain/src/events.ts`](../../packages/storage/storage-domain/src/events.ts) diff --git a/docs/subsystems/subagent.i18n.yaml b/docs/subsystems/subagent.i18n.yaml index 4f2ad53432..6182d3112a 100644 --- a/docs/subsystems/subagent.i18n.yaml +++ b/docs/subsystems/subagent.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/subsystems/subagent.md -subagent.md: 4e2d4e22c15fe4d7e994cc394b2f06c78c512c49 -subagent.zh.md: e264a5c4ca6c36242e687ef8433ce9170777b1f5 +subagent.md: e08c2bd1caa021504be66f70d8b7006c923e4d6f +subagent.zh.md: 3ce5267cbd0b9d85e85f6376b5baa54b395d4786 diff --git a/docs/subsystems/subagent.md b/docs/subsystems/subagent.md index 4e2d4e22c1..e08c2bd1ca 100644 --- a/docs/subsystems/subagent.md +++ b/docs/subsystems/subagent.md @@ -665,7 +665,7 @@ async start(name: string, request: SubagentStartRequest): Promise Types: [Agent](core.md) · [ContentBlock](llm-streaming.md) · [MessageId](llm-streaming.md) · [SessionId](core.md) -Source: [`packages/subagent/subagent/src/index.ts:171`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -691,7 +691,7 @@ A published child settled. Scope-filtered dispatch uses the same delegating pare Types: [Scoped](scope.md) -Source: [`packages/subagent/subagent/src/index.ts:166`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -708,7 +708,7 @@ A provider became resolvable in the registry. 'subagent/provider-added'(provider: SubagentProvider): void ``` -Source: [`packages/subagent/subagent/src/index.ts:140`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -725,7 +725,7 @@ A provider left the registry. Accepted runs remain holder-owned. 'subagent/provider-removed'(name: string): void ``` -Source: [`packages/subagent/subagent/src/index.ts:146`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -749,5 +749,5 @@ A provider established a published child. For in-process providers, `ctx.agents. Types: [Scoped](scope.md) -Source: [`packages/subagent/subagent/src/index.ts:157`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) diff --git a/docs/subsystems/subagent.zh.md b/docs/subsystems/subagent.zh.md index e264a5c4ca..3ce5267cbd 100644 --- a/docs/subsystems/subagent.zh.md +++ b/docs/subsystems/subagent.zh.md @@ -669,7 +669,7 @@ async start(name: string, request: SubagentStartRequest): Promise Types: [Agent](core.zh.md) · [ContentBlock](llm-streaming.zh.md) · [MessageId](llm-streaming.zh.md) · [SessionId](core.zh.md) -Source: [`packages/subagent/subagent/src/index.ts:171`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -695,7 +695,7 @@ A published child settled. Scope-filtered dispatch uses the same delegating pare Types: [Scoped](scope.zh.md) -Source: [`packages/subagent/subagent/src/index.ts:166`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -712,7 +712,7 @@ A provider became resolvable in the registry. 'subagent/provider-added'(provider: SubagentProvider): void ``` -Source: [`packages/subagent/subagent/src/index.ts:140`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -729,7 +729,7 @@ A provider left the registry. Accepted runs remain holder-owned. 'subagent/provider-removed'(name: string): void ``` -Source: [`packages/subagent/subagent/src/index.ts:146`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) @@ -753,5 +753,5 @@ A provider established a published child. For in-process providers, `ctx.agents. Types: [Scoped](scope.zh.md) -Source: [`packages/subagent/subagent/src/index.ts:157`](../../packages/subagent/subagent/src/index.ts) +Source: [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts) diff --git a/docs/subsystems/subprocess.i18n.yaml b/docs/subsystems/subprocess.i18n.yaml index ac7f73111a..a0852f4fb6 100644 --- a/docs/subsystems/subprocess.i18n.yaml +++ b/docs/subsystems/subprocess.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/subsystems/subprocess.md -subprocess.md: 1ab8df8e1baf0fd22763e156ae46aeb03dd3144c -subprocess.zh.md: 63c7de02935f3386fa016b6c4f4e1e7a69afcc5e +subprocess.md: 918c44c723d880a813837fcde47289cca8746fb4 +subprocess.zh.md: e94b6b0e96e22aa67419a7b08acb9dfe20524eb9 diff --git a/docs/subsystems/subprocess.md b/docs/subsystems/subprocess.md index 1ab8df8e1b..918c44c723 100644 --- a/docs/subsystems/subprocess.md +++ b/docs/subsystems/subprocess.md @@ -270,7 +270,7 @@ Creates one lazily consumable E2B SDK handle and deletes the sandbox at timeout async getSandbox(): Promise ``` -Source: [`packages/e2b/e2b/src/index.ts:74`](../../packages/e2b/e2b/src/index.ts) +Source: [`packages/e2b/e2b/src/index.ts`](../../packages/e2b/e2b/src/index.ts) @@ -319,5 +319,5 @@ abstract spawn(spec: SubprocessSpawnSpec): SubprocessHandle abstract spawnTerminal(spec: SubprocessTerminalSpawnSpec): Promise ``` -Source: [`packages/subprocess/subprocess/src/index.ts:102`](../../packages/subprocess/subprocess/src/index.ts) +Source: [`packages/subprocess/subprocess/src/index.ts`](../../packages/subprocess/subprocess/src/index.ts) diff --git a/docs/subsystems/subprocess.zh.md b/docs/subsystems/subprocess.zh.md index 63c7de0293..e94b6b0e96 100644 --- a/docs/subsystems/subprocess.zh.md +++ b/docs/subsystems/subprocess.zh.md @@ -270,7 +270,7 @@ Creates one lazily consumable E2B SDK handle and deletes the sandbox at timeout async getSandbox(): Promise ``` -Source: [`packages/e2b/e2b/src/index.ts:74`](../../packages/e2b/e2b/src/index.ts) +Source: [`packages/e2b/e2b/src/index.ts`](../../packages/e2b/e2b/src/index.ts) @@ -319,5 +319,5 @@ abstract spawn(spec: SubprocessSpawnSpec): SubprocessHandle abstract spawnTerminal(spec: SubprocessTerminalSpawnSpec): Promise ``` -Source: [`packages/subprocess/subprocess/src/index.ts:102`](../../packages/subprocess/subprocess/src/index.ts) +Source: [`packages/subprocess/subprocess/src/index.ts`](../../packages/subprocess/subprocess/src/index.ts) diff --git a/docs/subsystems/system-prompt.i18n.yaml b/docs/subsystems/system-prompt.i18n.yaml index 262f4447f0..1d1e9e3528 100644 --- a/docs/subsystems/system-prompt.i18n.yaml +++ b/docs/subsystems/system-prompt.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/subsystems/system-prompt.md -system-prompt.md: 34cd0a0a208aa40ccd04c77e21675c0819ca34d0 -system-prompt.zh.md: 7379ce7332d338635657791656029edb45f7a1aa +system-prompt.md: f4cdf40703ac4f4a6f87d525efb6010e45f4480b +system-prompt.zh.md: d3eddc3c5e0df72546f80d953e7123fa0f795816 diff --git a/docs/subsystems/system-prompt.md b/docs/subsystems/system-prompt.md index 34cd0a0a20..f4cdf40703 100644 --- a/docs/subsystems/system-prompt.md +++ b/docs/subsystems/system-prompt.md @@ -156,7 +156,7 @@ variable(name: string, provider: (context: AssembleContext) => string | undefine async assemble(context: AssembleContext = {}): Promise ``` -Source: [`packages/core/system-prompt/src/index.ts:338`](../../packages/core/system-prompt/src/index.ts) +Source: [`packages/core/system-prompt/src/index.ts`](../../packages/core/system-prompt/src/index.ts) @@ -186,7 +186,7 @@ Expert waterfall over the assembled sections, contexts, tools, and variables. Sc Types: [Scoped](scope.md) -Source: [`packages/core/system-prompt/src/index.ts:31`](../../packages/core/system-prompt/src/index.ts) +Source: [`packages/core/system-prompt/src/index.ts`](../../packages/core/system-prompt/src/index.ts) @@ -203,5 +203,5 @@ Emitted when any prompt provider changes. This registry notification is unfilter 'system-prompt/change'(): void ``` -Source: [`packages/core/system-prompt/src/index.ts:37`](../../packages/core/system-prompt/src/index.ts) +Source: [`packages/core/system-prompt/src/index.ts`](../../packages/core/system-prompt/src/index.ts) diff --git a/docs/subsystems/system-prompt.zh.md b/docs/subsystems/system-prompt.zh.md index 7379ce7332..d3eddc3c5e 100644 --- a/docs/subsystems/system-prompt.zh.md +++ b/docs/subsystems/system-prompt.zh.md @@ -156,7 +156,7 @@ variable(name: string, provider: (context: AssembleContext) => string | undefine async assemble(context: AssembleContext = {}): Promise ``` -Source: [`packages/core/system-prompt/src/index.ts:338`](../../packages/core/system-prompt/src/index.ts) +Source: [`packages/core/system-prompt/src/index.ts`](../../packages/core/system-prompt/src/index.ts) @@ -186,7 +186,7 @@ Expert waterfall over the assembled sections, contexts, tools, and variables. Sc Types: [Scoped](scope.zh.md) -Source: [`packages/core/system-prompt/src/index.ts:31`](../../packages/core/system-prompt/src/index.ts) +Source: [`packages/core/system-prompt/src/index.ts`](../../packages/core/system-prompt/src/index.ts) @@ -203,5 +203,5 @@ Emitted when any prompt provider changes. This registry notification is unfilter 'system-prompt/change'(): void ``` -Source: [`packages/core/system-prompt/src/index.ts:37`](../../packages/core/system-prompt/src/index.ts) +Source: [`packages/core/system-prompt/src/index.ts`](../../packages/core/system-prompt/src/index.ts) diff --git a/docs/subsystems/terminal.i18n.yaml b/docs/subsystems/terminal.i18n.yaml index a383474aab..851d92fdb1 100644 --- a/docs/subsystems/terminal.i18n.yaml +++ b/docs/subsystems/terminal.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/subsystems/terminal.md -terminal.md: fc084cc78e14a9bf9c08841a2f458f83a810b7ab -terminal.zh.md: a22c54f9799b10600c8e6d99e604048f6a28bef5 +terminal.md: c1c78963e48f51014678e778bbdc5da530f453c6 +terminal.zh.md: e97e5771f5681ce98024394752405dca012b0a5e diff --git a/docs/subsystems/terminal.md b/docs/subsystems/terminal.md index fc084cc78e..c1c78963e4 100644 --- a/docs/subsystems/terminal.md +++ b/docs/subsystems/terminal.md @@ -180,5 +180,5 @@ list(owner: Agent): TerminalSessionSnapshot[] Types: [Agent](core.md) -Source: [`packages/terminal/terminal/src/index.ts:105`](../../packages/terminal/terminal/src/index.ts) +Source: [`packages/terminal/terminal/src/index.ts`](../../packages/terminal/terminal/src/index.ts) diff --git a/docs/subsystems/terminal.zh.md b/docs/subsystems/terminal.zh.md index a22c54f979..e97e5771f5 100644 --- a/docs/subsystems/terminal.zh.md +++ b/docs/subsystems/terminal.zh.md @@ -180,5 +180,5 @@ list(owner: Agent): TerminalSessionSnapshot[] Types: [Agent](core.zh.md) -Source: [`packages/terminal/terminal/src/index.ts:105`](../../packages/terminal/terminal/src/index.ts) +Source: [`packages/terminal/terminal/src/index.ts`](../../packages/terminal/terminal/src/index.ts) diff --git a/docs/subsystems/token-meter.i18n.yaml b/docs/subsystems/token-meter.i18n.yaml index 5a7670b2f9..cf11f53b13 100644 --- a/docs/subsystems/token-meter.i18n.yaml +++ b/docs/subsystems/token-meter.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/subsystems/token-meter.md -token-meter.md: 3b8ece335aaa580619b5bea8df2546444d5b21af -token-meter.zh.md: 520054bcfde21936bc66e2acbf4a68cb138b774d +token-meter.md: b8b2add194cbafafc250c6fc15b23e246d87d9c1 +token-meter.zh.md: a1366d0d1d113c0a7df77b5b3bc53c9121fe9ae3 diff --git a/docs/subsystems/token-meter.md b/docs/subsystems/token-meter.md index 3b8ece335a..b8b2add194 100644 --- a/docs/subsystems/token-meter.md +++ b/docs/subsystems/token-meter.md @@ -86,5 +86,5 @@ estimateMessage(message: Message): number Types: [EpochHeader](session.md) · [Message](llm-streaming.md) · [Session](session.md) -Source: [`packages/llm/token-meter/src/index.ts:74`](../../packages/llm/token-meter/src/index.ts) +Source: [`packages/llm/token-meter/src/index.ts`](../../packages/llm/token-meter/src/index.ts) diff --git a/docs/subsystems/token-meter.zh.md b/docs/subsystems/token-meter.zh.md index 520054bcfd..a1366d0d1d 100644 --- a/docs/subsystems/token-meter.zh.md +++ b/docs/subsystems/token-meter.zh.md @@ -86,5 +86,5 @@ estimateMessage(message: Message): number Types: [EpochHeader](session.zh.md) · [Message](llm-streaming.zh.md) · [Session](session.zh.md) -Source: [`packages/llm/token-meter/src/index.ts:74`](../../packages/llm/token-meter/src/index.ts) +Source: [`packages/llm/token-meter/src/index.ts`](../../packages/llm/token-meter/src/index.ts) diff --git a/docs/subsystems/tools.i18n.yaml b/docs/subsystems/tools.i18n.yaml index 3a1058c7fc..ed327e53ce 100644 --- a/docs/subsystems/tools.i18n.yaml +++ b/docs/subsystems/tools.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/subsystems/tools.md -tools.md: a532563e2ecd3118eaf05e67c37948cae633b9cb -tools.zh.md: b82db445cd09ff7015db6f879304ce2018d2abc9 +tools.md: dd89d40c1401732dd5e6d8dfb5ccb08a89c58405 +tools.zh.md: 0d3e59bc222527e66dd5bd626203f4e1bb6aad9a diff --git a/docs/subsystems/tools.md b/docs/subsystems/tools.md index a532563e2e..dd89d40c14 100644 --- a/docs/subsystems/tools.md +++ b/docs/subsystems/tools.md @@ -571,7 +571,7 @@ async execute(exec: ToolExecutionInput): Promise Types: [ScopeKey](scope.md) -Source: [`packages/core/tools/src/index.ts:787`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -596,7 +596,7 @@ A tool was registered or unregistered, or a scoped restriction changed (the avai 'tools/change'(): void ``` -Source: [`packages/core/tools/src/index.ts:207`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -623,7 +623,7 @@ Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` su Types: [ContentBlock](llm-streaming.md) · [Scoped](scope.md) -Source: [`packages/core/tools/src/index.ts:189`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -647,7 +647,7 @@ Around-dispatch waterfall for timeout, retry, or metrics. `next()` returns a nor Types: [Scoped](scope.md) -Source: [`packages/core/tools/src/index.ts:163`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -672,7 +672,7 @@ Accept, replace, enrich, or block a normalized dispatch result. `next()` accepts Types: [Scoped](scope.md) -Source: [`packages/core/tools/src/index.ts:175`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -695,7 +695,7 @@ Allow, deny, or ask before dispatch. `next()` delegates to allow; missing approv Types: [Scoped](scope.md) -Source: [`packages/core/tools/src/index.ts:152`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -716,5 +716,5 @@ Observe the frozen, lossless-JSON final outcome. Listener failures are contained Types: [Scoped](scope.md) -Source: [`packages/core/tools/src/index.ts:197`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) diff --git a/docs/subsystems/tools.zh.md b/docs/subsystems/tools.zh.md index b82db445cd..0d3e59bc22 100644 --- a/docs/subsystems/tools.zh.md +++ b/docs/subsystems/tools.zh.md @@ -571,7 +571,7 @@ async execute(exec: ToolExecutionInput): Promise Types: [ScopeKey](scope.zh.md) -Source: [`packages/core/tools/src/index.ts:787`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -596,7 +596,7 @@ A tool was registered or unregistered, or a scoped restriction changed (the avai 'tools/change'(): void ``` -Source: [`packages/core/tools/src/index.ts:207`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -623,7 +623,7 @@ Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` su Types: [ContentBlock](llm-streaming.zh.md) · [Scoped](scope.zh.md) -Source: [`packages/core/tools/src/index.ts:189`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -647,7 +647,7 @@ Around-dispatch waterfall for timeout, retry, or metrics. `next()` returns a nor Types: [Scoped](scope.zh.md) -Source: [`packages/core/tools/src/index.ts:163`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -672,7 +672,7 @@ Accept, replace, enrich, or block a normalized dispatch result. `next()` accepts Types: [Scoped](scope.zh.md) -Source: [`packages/core/tools/src/index.ts:175`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -695,7 +695,7 @@ Allow, deny, or ask before dispatch. `next()` delegates to allow; missing approv Types: [Scoped](scope.zh.md) -Source: [`packages/core/tools/src/index.ts:152`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) @@ -716,5 +716,5 @@ Observe the frozen, lossless-JSON final outcome. Listener failures are contained Types: [Scoped](scope.zh.md) -Source: [`packages/core/tools/src/index.ts:197`](../../packages/core/tools/src/index.ts) +Source: [`packages/core/tools/src/index.ts`](../../packages/core/tools/src/index.ts) diff --git a/docs/subsystems/typert.i18n.yaml b/docs/subsystems/typert.i18n.yaml index 47432ec301..f3135fdb93 100644 --- a/docs/subsystems/typert.i18n.yaml +++ b/docs/subsystems/typert.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/subsystems/typert.md -typert.md: 2651496e8b77fc1fba64decb078c9c97f9c285e3 -typert.zh.md: d57bc4313f133b7c4bb27ab752d51a1dff5c4f73 +typert.md: 46d9e7c7ef5e5366b165f4dc9217ca9fc02712ab +typert.zh.md: ff92d94f31c9fe1d2e5469cb237751c3f742598e diff --git a/docs/subsystems/typert.md b/docs/subsystems/typert.md index 2651496e8b..46d9e7c7ef 100644 --- a/docs/subsystems/typert.md +++ b/docs/subsystems/typert.md @@ -248,7 +248,7 @@ Root interface of the unified API. New client-request domain = one new file pair respond(message: ClientResponse): Promise ``` -Source: [`packages/host/apiproxy/src/api/index.ts:22`](../../packages/host/apiproxy/src/api/index.ts) +Source: [`packages/host/apiproxy/src/api/index.ts`](../../packages/host/apiproxy/src/api/index.ts) @@ -314,7 +314,7 @@ toJSONSchema(key: string, params?: z.core.ToJSONSchemaParams): z.core.JSONSchema Types: [TypertContribution](invariants.md) · [TypertFace](invariants.md) · [TypertPackageFilter](invariants.md) · [TypertPackageRecord](invariants.md) · [TypertSchemaFilter](invariants.md) · [TypertSchemaRecord](invariants.md) -Source: [`packages/typert/registry/src/service.ts:446`](../../packages/typert/registry/src/service.ts) +Source: [`packages/typert/registry/src/service.ts`](../../packages/typert/registry/src/service.ts) @@ -332,5 +332,5 @@ Resolve strict generated definitions or conservative SRC markers against current async invoke(request: InvokeRemoteRequest): Promise ``` -Source: [`packages/api/gateway/src/index.ts:90`](../../packages/api/gateway/src/index.ts) +Source: [`packages/api/gateway/src/index.ts`](../../packages/api/gateway/src/index.ts) diff --git a/docs/subsystems/typert.zh.md b/docs/subsystems/typert.zh.md index d57bc4313f..ff92d94f31 100644 --- a/docs/subsystems/typert.zh.md +++ b/docs/subsystems/typert.zh.md @@ -248,7 +248,7 @@ Root interface of the unified API. New client-request domain = one new file pair respond(message: ClientResponse): Promise ``` -Source: [`packages/host/apiproxy/src/api/index.ts:22`](../../packages/host/apiproxy/src/api/index.ts) +Source: [`packages/host/apiproxy/src/api/index.ts`](../../packages/host/apiproxy/src/api/index.ts) @@ -314,7 +314,7 @@ toJSONSchema(key: string, params?: z.core.ToJSONSchemaParams): z.core.JSONSchema Types: [TypertContribution](invariants.zh.md) · [TypertFace](invariants.zh.md) · [TypertPackageFilter](invariants.zh.md) · [TypertPackageRecord](invariants.zh.md) · [TypertSchemaFilter](invariants.zh.md) · [TypertSchemaRecord](invariants.zh.md) -Source: [`packages/typert/registry/src/service.ts:446`](../../packages/typert/registry/src/service.ts) +Source: [`packages/typert/registry/src/service.ts`](../../packages/typert/registry/src/service.ts) @@ -332,5 +332,5 @@ Resolve strict generated definitions or conservative SRC markers against current async invoke(request: InvokeRemoteRequest): Promise ``` -Source: [`packages/api/gateway/src/index.ts:90`](../../packages/api/gateway/src/index.ts) +Source: [`packages/api/gateway/src/index.ts`](../../packages/api/gateway/src/index.ts) diff --git a/docs/subsystems/user-questions.i18n.yaml b/docs/subsystems/user-questions.i18n.yaml index 307a736418..56142c7aef 100644 --- a/docs/subsystems/user-questions.i18n.yaml +++ b/docs/subsystems/user-questions.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/subsystems/user-questions.md -user-questions.md: ac5d24c6c875d27894dbcd7bed17253ec2d1a579 -user-questions.zh.md: 5308a4199e463b2931e7e0ebe455f46ad10d97a4 +user-questions.md: f6a8fe611caf9f51c9a233a96be25d69a839e3f3 +user-questions.zh.md: c7fc7f911261b8a7c3c3490a2ca059a2ecdca120 diff --git a/docs/subsystems/user-questions.md b/docs/subsystems/user-questions.md index ac5d24c6c8..f6a8fe611c 100644 --- a/docs/subsystems/user-questions.md +++ b/docs/subsystems/user-questions.md @@ -174,5 +174,5 @@ registerProvider(provider: UserQuestionProvider): () => void async ask(request: AskUserQuestionRequest): Promise ``` -Source: [`packages/interaction/user-questions/src/index.ts:51`](../../packages/interaction/user-questions/src/index.ts) +Source: [`packages/interaction/user-questions/src/index.ts`](../../packages/interaction/user-questions/src/index.ts) diff --git a/docs/subsystems/user-questions.zh.md b/docs/subsystems/user-questions.zh.md index 5308a4199e..c7fc7f9112 100644 --- a/docs/subsystems/user-questions.zh.md +++ b/docs/subsystems/user-questions.zh.md @@ -174,5 +174,5 @@ registerProvider(provider: UserQuestionProvider): () => void async ask(request: AskUserQuestionRequest): Promise ``` -Source: [`packages/interaction/user-questions/src/index.ts:51`](../../packages/interaction/user-questions/src/index.ts) +Source: [`packages/interaction/user-questions/src/index.ts`](../../packages/interaction/user-questions/src/index.ts) diff --git a/docs/subsystems/web-server.i18n.yaml b/docs/subsystems/web-server.i18n.yaml index 9340bea6bd..9434d236d4 100644 --- a/docs/subsystems/web-server.i18n.yaml +++ b/docs/subsystems/web-server.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/subsystems/web-server.md -web-server.md: 900e8d1ce9fc4528c3570cc36b845332272357cf -web-server.zh.md: 7a1e78bf2df0a6cc21eb825d4e856437da211e9f +web-server.md: c23a48cd57aeb2127107c0487cb46c9202d11605 +web-server.zh.md: 4097e26ce826067a92de7ba3ec65f790dd6ad1dd diff --git a/docs/subsystems/web-server.md b/docs/subsystems/web-server.md index 900e8d1ce9..c23a48cd57 100644 --- a/docs/subsystems/web-server.md +++ b/docs/subsystems/web-server.md @@ -24,7 +24,7 @@ interface WebRoute { } ``` -Match order is fixed: exact table first, then longest matching prefix, then the registered fallback. Registration order carries no request-facing semantics — named routes are composed to be disjoint, and the fallback seat answers anything no named route claims; one owner only, a second registration throws. The shipped Web composition claims the seat with [`dsh-host-frontend-static`](../../packages/host/frontend-static/src/index.ts), the SPA dist server with locked semantics: non-GET/HEAD is 405, traversal outside the dist root is 403, any miss falls back to `index.html` with HTTP 200 (SPA routing), and unknown extensions ship as octet-stream. +Match order is fixed: exact table first, then longest matching prefix, then the registered fallback. Registration order carries no request-facing semantics — named routes are composed to be disjoint, and the fallback seat answers anything no named route claims; one owner only, a second registration throws. The shipped Web composition claims the seat with [`dsh-host-frontend-static`](../../packages/host/frontend-static/src/index.ts), the SPA dist server with locked semantics: non-GET/HEAD is 405, traversal outside the dist root is 403, a readable index renders at the dist root and configured index path, existing files are served directly, absent or non-file targets are empty 404 responses, and unknown extensions ship as octet-stream. ## Config @@ -42,7 +42,7 @@ interface Config { ## The service -`WebServer` (`ctx.webServer`) listens immediately on activation; a listen failure (EADDRINUSE…) rejects initialization, and the boot process reports the failed fiber. `register(route)` adds one named route and returns its disposer; a duplicate `(kind, path)` throws because route patterns are a composition-level contract and a collision is a misconfiguration. `collectIndexInjections()` gathers structured `IndexInjection` rows over one `webserver/index-inject` emit, and `renderIndex(html)` renders them into every index response — `/` and each SPA fallback — before applying the raw `tapIndex(transform)` escape-hatch transforms in registration order; [dsh-client-modules](../../packages/client/modules) answers the event with the boot manifest rows. `port` reads the listening port, including the port assigned by the OS when `config.port` is 0. +`WebServer` (`ctx.webServer`) listens immediately on activation; a listen failure (EADDRINUSE…) rejects initialization, and the boot process reports the failed fiber. `register(route)` adds one named route and returns its disposer; a duplicate `(kind, path)` throws because route patterns are a composition-level contract and a collision is a misconfiguration. `collectIndexInjections()` gathers structured `IndexInjection` rows over one `webserver/index-inject` emit, and `renderIndex(html)` renders them into successful root and configured index responses before applying the raw `tapIndex(transform)` escape-hatch transforms in registration order; [dsh-client-modules](../../packages/client/modules) answers the event with the boot manifest rows. `port` reads the listening port, including the port assigned by the OS when `config.port` is 0. A request whose handling throws (a malformed %-escape hitting `decodeURIComponent`, a client dropping mid-body) is logged as a warning and answered 400 — or the socket destroyed when headers are already out — never a process exit. Disposal pairs `close()` with `closeAllConnections()` because a handler may hold its response open (SSE) and such connections never end on their own; without the force-close, teardown would hang. The package never prints: the URL line belongs to the shell. Per-package operational detail, including the dev-mode bundle watch pipeline, stays in the [README](../../packages/host/webserver/README.md). @@ -121,7 +121,7 @@ collectIndexInjections(): IndexInjection[] renderIndex(html: string): string ``` -Source: [`packages/host/webserver/src/index.ts:73`](../../packages/host/webserver/src/index.ts) +Source: [`packages/host/webserver/src/index.ts`](../../packages/host/webserver/src/index.ts) @@ -144,5 +144,5 @@ Collect the structured index injection table. Emitted on every index render and 'webserver/index-inject'(table: IndexInjection[]): void ``` -Source: [`packages/host/webserver/src/index.ts:34`](../../packages/host/webserver/src/index.ts) +Source: [`packages/host/webserver/src/index.ts`](../../packages/host/webserver/src/index.ts) diff --git a/docs/subsystems/web-server.zh.md b/docs/subsystems/web-server.zh.md index 7a1e78bf2d..4097e26ce8 100644 --- a/docs/subsystems/web-server.zh.md +++ b/docs/subsystems/web-server.zh.md @@ -24,7 +24,7 @@ interface WebRoute { } ``` -匹配顺序固定:先查 exact 表,再取最长匹配前缀,最后落到已注册的回退。注册顺序不携带任何面向请求的语义:具名路由在组合上互不相交,任何未被具名路由认领的请求都由回退席位应答;席位只有一个所有者,第二次注册会抛出异常。发布的 Web 组合用 [`dsh-host-frontend-static`](../../packages/host/frontend-static/src/index.ts) 认领席位,即遵循固定语义的 SPA dist 服务器:非 GET/HEAD 返回 405,越出 dist 根目录的遍历返回 403,任何未命中都以 HTTP 200 回退到 `index.html`(SPA 路由),未知扩展名按 octet-stream 发送。 +匹配顺序固定:先查 exact 表,再取最长匹配前缀,最后落到已注册的回退。注册顺序不携带任何面向请求的语义:具名路由在组合上互不相交,任何未被具名路由认领的请求都由回退席位应答;席位只有一个所有者,第二次注册会抛出异常。发布的 Web 组合用 [`dsh-host-frontend-static`](../../packages/host/frontend-static/src/index.ts) 认领席位,即遵循固定语义的 SPA dist 服务器:非 GET/HEAD 返回 405,越出 dist 根目录的遍历返回 403,可读的 index 在 dist 根目录和配置的 index 路径渲染,现有文件直接提供,缺失或不是文件的目标返回空的 404,未知扩展名按 octet-stream 发送。 ## 配置 @@ -42,7 +42,7 @@ interface Config { ## 服务 -`WebServer`(`ctx.webServer`)在激活时立即监听;监听失败(EADDRINUSE 等)会使初始化被拒绝,启动进程会报告失败的 fiber。`register(route)` 添加一条具名路由并返回其 disposer;重复的 `(kind, path)` 抛出异常,因为路由模式是组合层约定,冲突即配置错误。`collectIndexInjections()` 经一次 `webserver/index-inject` emit 收集结构化 `IndexInjection` 行,`renderIndex(html)` 把它们渲染进每个 index 响应(`/` 和每次 SPA 回退),随后再按注册顺序应用原始的 `tapIndex(transform)` 逃生口转换;[dsh-client-modules](../../packages/client/modules) 以启动 manifest(元数据清单)行回应该事件。`port` 读取监听端口,包括 `config.port` 为 0 时操作系统分配的端口。 +`WebServer`(`ctx.webServer`)在激活时立即监听;监听失败(EADDRINUSE 等)会使初始化被拒绝,启动进程会报告失败的 fiber。`register(route)` 添加一条具名路由并返回其 disposer;重复的 `(kind, path)` 抛出异常,因为路由模式是组合层约定,冲突即配置错误。`collectIndexInjections()` 经一次 `webserver/index-inject` emit 收集结构化 `IndexInjection` 行,`renderIndex(html)` 把它们渲染进成功的根路径和配置 index 响应,随后再按注册顺序应用原始的 `tapIndex(transform)` 逃生口转换;[dsh-client-modules](../../packages/client/modules) 以启动 manifest(元数据清单)行回应该事件。`port` 读取监听端口,包括 `config.port` 为 0 时操作系统分配的端口。 处理过程中抛出异常的请求(畸形的 % 转义撞上 `decodeURIComponent`、客户端在请求体中途断开)会记录为警告并应答 400(响应头已发出时则销毁 socket),绝不导致进程退出。dispose(资源释放)把 `close()` 与 `closeAllConnections()` 配对使用,因为处理器可能像 SSE(Server-Sent Events)那样保持响应打开,而这类连接永远不会自行结束;没有强制关闭,拆卸就会挂起。该包从不打印输出:URL 行归 shell 所有。逐包运维细节(含开发模式的 bundle 监视流水线)留在 [README](../../packages/host/webserver/README.zh.md) 中。 @@ -121,7 +121,7 @@ collectIndexInjections(): IndexInjection[] renderIndex(html: string): string ``` -Source: [`packages/host/webserver/src/index.ts:73`](../../packages/host/webserver/src/index.ts) +Source: [`packages/host/webserver/src/index.ts`](../../packages/host/webserver/src/index.ts) @@ -144,5 +144,5 @@ Collect the structured index injection table. Emitted on every index render and 'webserver/index-inject'(table: IndexInjection[]): void ``` -Source: [`packages/host/webserver/src/index.ts:34`](../../packages/host/webserver/src/index.ts) +Source: [`packages/host/webserver/src/index.ts`](../../packages/host/webserver/src/index.ts) diff --git a/docs/subsystems/web.i18n.yaml b/docs/subsystems/web.i18n.yaml index a4d98ef2d9..dd16cb1790 100644 --- a/docs/subsystems/web.i18n.yaml +++ b/docs/subsystems/web.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/subsystems/web.md -web.md: e2be8b076676cb76f54cbf02965641d9daf27a55 -web.zh.md: 1efbf7331515e45d3df9c159d0d32fa181270920 +web.md: 4acab9273b3b2753409c680bd41e93fb3a627843 +web.zh.md: 0133b78d0080ab16c14ac7f42628cc705bb4bc9c diff --git a/docs/subsystems/web.md b/docs/subsystems/web.md index e2be8b0766..4acab9273b 100644 --- a/docs/subsystems/web.md +++ b/docs/subsystems/web.md @@ -196,5 +196,5 @@ async search(request: WebSearchRequest, signal?: AbortSignal): Promise ``` -Source: [`packages/web/web/src/index.ts:74`](../../packages/web/web/src/index.ts) +Source: [`packages/web/web/src/index.ts`](../../packages/web/web/src/index.ts) diff --git a/docs/subsystems/web.zh.md b/docs/subsystems/web.zh.md index 1efbf73315..0133b78d00 100644 --- a/docs/subsystems/web.zh.md +++ b/docs/subsystems/web.zh.md @@ -196,5 +196,5 @@ async search(request: WebSearchRequest, signal?: AbortSignal): Promise ``` -Source: [`packages/web/web/src/index.ts:74`](../../packages/web/web/src/index.ts) +Source: [`packages/web/web/src/index.ts`](../../packages/web/web/src/index.ts) diff --git a/docs/subsystems/workflow.i18n.yaml b/docs/subsystems/workflow.i18n.yaml index cd5de586a0..f13f113634 100644 --- a/docs/subsystems/workflow.i18n.yaml +++ b/docs/subsystems/workflow.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/subsystems/workflow.md -workflow.md: df3bbc89b5b52eb3b24e6d4df850cd5cef1700bd -workflow.zh.md: 9106afceb0f99c88135f3e75175cf6457e54effd +workflow.md: b608efab2300b20b06a3aa09041c3419fbc2145b +workflow.zh.md: 47186df724b10138f277302384b3e96a0667be46 diff --git a/docs/subsystems/workflow.md b/docs/subsystems/workflow.md index df3bbc89b5..b608efab23 100644 --- a/docs/subsystems/workflow.md +++ b/docs/subsystems/workflow.md @@ -151,7 +151,7 @@ Workflow Service Definition contract. Invalid requests throw before publication; abstract start(request: WorkflowStartRequest): WorkflowRun ``` -Source: [`packages/workflow/workflow/src/index.ts:157`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -177,7 +177,7 @@ One `agent()` call settled (clean result, child failure, or run cancellation). P 'workflow/agent-end'(info: WorkflowRunInfo, agent: WorkflowAgentEndInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:79`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -198,7 +198,7 @@ One `agent()` call established a published child run. Paired with Events['workfl 'workflow/agent-start'(info: WorkflowRunInfo, agent: WorkflowAgentInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:68`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -219,7 +219,7 @@ A workflow run settled (any stop reason). Fired when WorkflowRun.result resolves 'workflow/end'(info: WorkflowRunInfo, result: WorkflowResultInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:89`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -237,7 +237,7 @@ The script emitted a narration line (a `log(message)` call). 'workflow/log'(info: WorkflowRunInfo, message: string): void ``` -Source: [`packages/workflow/workflow/src/index.ts:58`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -256,7 +256,7 @@ The script entered a phase (a `phase(title)` call) — progress grouping for obs 'workflow/phase'(info: WorkflowRunInfo, title: string): void ``` -Source: [`packages/workflow/workflow/src/index.ts:51`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -274,5 +274,5 @@ A workflow run started — the script's meta block validated, the body about to 'workflow/start'(info: WorkflowRunInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:43`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) diff --git a/docs/subsystems/workflow.zh.md b/docs/subsystems/workflow.zh.md index 9106afceb0..47186df724 100644 --- a/docs/subsystems/workflow.zh.md +++ b/docs/subsystems/workflow.zh.md @@ -151,7 +151,7 @@ Workflow Service Definition contract. Invalid requests throw before publication; abstract start(request: WorkflowStartRequest): WorkflowRun ``` -Source: [`packages/workflow/workflow/src/index.ts:157`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -177,7 +177,7 @@ One `agent()` call settled (clean result, child failure, or run cancellation). P 'workflow/agent-end'(info: WorkflowRunInfo, agent: WorkflowAgentEndInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:79`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -198,7 +198,7 @@ One `agent()` call established a published child run. Paired with Events['workfl 'workflow/agent-start'(info: WorkflowRunInfo, agent: WorkflowAgentInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:68`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -219,7 +219,7 @@ A workflow run settled (any stop reason). Fired when WorkflowRun.result resolves 'workflow/end'(info: WorkflowRunInfo, result: WorkflowResultInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:89`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -237,7 +237,7 @@ The script emitted a narration line (a `log(message)` call). 'workflow/log'(info: WorkflowRunInfo, message: string): void ``` -Source: [`packages/workflow/workflow/src/index.ts:58`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -256,7 +256,7 @@ The script entered a phase (a `phase(title)` call) — progress grouping for obs 'workflow/phase'(info: WorkflowRunInfo, title: string): void ``` -Source: [`packages/workflow/workflow/src/index.ts:51`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) @@ -274,5 +274,5 @@ A workflow run started — the script's meta block validated, the body about to 'workflow/start'(info: WorkflowRunInfo): void ``` -Source: [`packages/workflow/workflow/src/index.ts:43`](../../packages/workflow/workflow/src/index.ts) +Source: [`packages/workflow/workflow/src/index.ts`](../../packages/workflow/workflow/src/index.ts) diff --git a/docs/subsystems/workspace.i18n.yaml b/docs/subsystems/workspace.i18n.yaml index 29c439de00..e9a309e576 100644 --- a/docs/subsystems/workspace.i18n.yaml +++ b/docs/subsystems/workspace.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/subsystems/workspace.md -workspace.md: c56f3b7f99213e611a875a359cad27183b4b53fa -workspace.zh.md: c433025cf260819aa6fe0acf7ab0609903396354 +workspace.md: 7706a326154c375afe316b640d48003345f4bef5 +workspace.zh.md: d621baf15487138aa837a4ad366a8d451f0886cc diff --git a/docs/subsystems/workspace.md b/docs/subsystems/workspace.md index c56f3b7f99..7706a32615 100644 --- a/docs/subsystems/workspace.md +++ b/docs/subsystems/workspace.md @@ -147,7 +147,7 @@ Abstract directory-picking service. Subclass, implement `capability()`, and load abstract capability(): DirectoryPickerCapability ``` -Source: [`packages/host/directory-picker/src/index.ts:131`](../../packages/host/directory-picker/src/index.ts) +Source: [`packages/host/directory-picker/src/index.ts`](../../packages/host/directory-picker/src/index.ts) @@ -224,5 +224,5 @@ async resolveByPath(path: string): Promise Types: [SessionId](core.md) -Source: [`packages/workspace/workspace/src/index.ts:92`](../../packages/workspace/workspace/src/index.ts) +Source: [`packages/workspace/workspace/src/index.ts`](../../packages/workspace/workspace/src/index.ts) diff --git a/docs/subsystems/workspace.zh.md b/docs/subsystems/workspace.zh.md index c433025cf2..d621baf154 100644 --- a/docs/subsystems/workspace.zh.md +++ b/docs/subsystems/workspace.zh.md @@ -147,7 +147,7 @@ Abstract directory-picking service. Subclass, implement `capability()`, and load abstract capability(): DirectoryPickerCapability ``` -Source: [`packages/host/directory-picker/src/index.ts:131`](../../packages/host/directory-picker/src/index.ts) +Source: [`packages/host/directory-picker/src/index.ts`](../../packages/host/directory-picker/src/index.ts) @@ -224,5 +224,5 @@ async resolveByPath(path: string): Promise Types: [SessionId](core.zh.md) -Source: [`packages/workspace/workspace/src/index.ts:92`](../../packages/workspace/workspace/src/index.ts) +Source: [`packages/workspace/workspace/src/index.ts`](../../packages/workspace/workspace/src/index.ts) diff --git a/packages/host/frontend-static/README.i18n.yaml b/packages/host/frontend-static/README.i18n.yaml index 22b23d33bf..771455e06a 100644 --- a/packages/host/frontend-static/README.i18n.yaml +++ b/packages/host/frontend-static/README.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 packages/host/frontend-static/README.md -README.md: fb9ab0c9fea6fdaffdc08ecb63b17ffff9ff1e16 -README.zh.md: 53955c1f43f9404d3a0f58117649c4b79e2cf692 +README.md: e4f3765a0471566dfb2f6780b1072d3e79788dc5 +README.zh.md: 7672478480f07b760634fef0c8640fcbdc0e6e7e diff --git a/packages/host/frontend-static/README.md b/packages/host/frontend-static/README.md index fb9ab0c9fe..e4f3765a04 100644 --- a/packages/host/frontend-static/README.md +++ b/packages/host/frontend-static/README.md @@ -2,7 +2,7 @@ English | [中文](README.zh.md) -SPA dist server for the Web shell: a function plugin (config `{distIndex}`) that claims the [webserver](../webserver/README.md)'s single fallback seat and serves the built frontend directory with the shell's locked semantics — traversal outside the dist root is 403, any miss falls back to `index.html` with HTTP 200 (SPA routing), unknown extensions ship as `application/octet-stream`, and non-GET/HEAD without a matching named route is 405. Every index response is rendered through the webserver's `renderIndex` — structured injection rows first, then the raw index taps — which is how the boot manifest reaches the page. `distIndex` is an assembly fact of the composing application: [`dsh-web-app`](../../bundle/web-app/README.md) resolves it through the frontend package's exports and mounts this plugin; a deployment never hardcodes it. +SPA dist server for the Web shell: a function plugin (config `{distIndex}`) that claims the [webserver](../webserver/README.md)'s single fallback seat and serves the built frontend directory with explicit index entry points. While `distIndex` is readable, the dist root and configured index path render `index.html` with HTTP 200; other existing files are served directly. An absent or non-file target inside the dist root, including a missing configured index, returns an empty 404; traversal outside the dist root returns 403, unknown extensions ship as `application/octet-stream`, and non-GET/HEAD without a matching named route returns 405. Every successful index response is rendered through the webserver's `renderIndex` — structured injection rows first, then the raw index taps — which is how the boot manifest reaches the page. `distIndex` is an assembly fact of the composing application: [`dsh-web-app`](../../bundle/web-app/README.md) resolves it through the frontend package's exports and mounts this plugin; a deployment never hardcodes it. The fallback seat is single-owner (a second claim throws) and effect-scoped: disposing the plugin's fiber releases the seat, after which the unclaimed webserver answers 404. @@ -17,3 +17,4 @@ None; this package neither assembles nor sends a provider request. ## Known Limitations and Deferred Work - **The starter MIME table is minimal** — it covers the Vite-emitted asset set plus the shipped PWA manifest; other extensions fall back to `application/octet-stream` until an asset class actually ships. +- **Pathname routing is explicit** — the current client enters through the root or configured index path and has no History API pathname routes. Adding one requires an explicit server rule and real-composition coverage rather than a broad fallback for every miss. diff --git a/packages/host/frontend-static/README.zh.md b/packages/host/frontend-static/README.zh.md index 53955c1f43..7672478480 100644 --- a/packages/host/frontend-static/README.zh.md +++ b/packages/host/frontend-static/README.zh.md @@ -2,7 +2,7 @@ [English](README.md) | 中文 -Web 壳的 SPA dist 服务器:一个函数插件(配置为 `{distIndex}`),占据 [webserver](../webserver/README.zh.md) 的唯一回退席位,并按壳层锁定的语义服务已构建的前端目录——越出 dist 根目录的遍历返回 403,任何未命中项都以 HTTP 200 回退到 `index.html`(SPA 路由),未知扩展名按 `application/octet-stream` 提供,GET/HEAD 之外的方法在没有匹配的具名路由时返回 405。每个 index 响应都经 webserver 的 `renderIndex` 渲染——先结构化注入行、后原始 index 转换器——启动 manifest(元数据清单)就是经这条路径送达页面的。`distIndex` 是组合应用的组装事实:[`dsh-web-app`](../../bundle/web-app/README.zh.md) 通过前端包的 exports 解析它并挂载本插件;部署绝不硬编码它。 +Web 壳的 SPA dist 服务器:一个函数插件(配置为 `{distIndex}`),占据 [webserver](../webserver/README.zh.md) 的唯一回退席位,并通过显式 index 入口服务已构建的前端目录。`distIndex` 可读时,dist 根目录和配置的 index 路径以 HTTP 200 渲染 `index.html`;其他现有文件直接提供。dist 根目录内缺失或不是文件的目标——包括缺失的配置 index——返回空的 404;越出 dist 根目录的遍历返回 403,未知扩展名按 `application/octet-stream` 提供,GET/HEAD 之外的方法在没有匹配的具名路由时返回 405。每个成功的 index 响应都经 webserver 的 `renderIndex` 渲染——先结构化注入行、后原始 index 转换器——启动 manifest(元数据清单)就是经这条路径送达页面的。`distIndex` 是组合应用的组装事实:[`dsh-web-app`](../../bundle/web-app/README.zh.md) 通过前端包的 exports 解析它并挂载本插件;部署绝不硬编码它。 回退席位只有单一所有者(第二次占据会抛错),并受 effect 作用域约束:dispose(资源释放)插件的 fiber 会释放席位,此后无人占据的 webserver 回答 404。 @@ -17,3 +17,4 @@ Web 壳的 SPA dist 服务器:一个函数插件(配置为 `{distIndex}`) ## 已知限制与延期工作 - **初始 MIME 表很精简**:它覆盖 Vite 输出的资产集合及实际交付的 PWA manifest;其他扩展名在相应资产类别实际发布前都会回退到 `application/octet-stream`。 +- **pathname 路由是显式的**:当前客户端只从根路径或配置的 index 路径进入,没有 History API pathname 路由。添加这类路由时必须同时添加显式服务器规则和真实组合测试,不得为每个未命中项启用宽泛回退。 diff --git a/packages/host/frontend-static/package.json b/packages/host/frontend-static/package.json index 07b44df96b..c938a923de 100644 --- a/packages/host/frontend-static/package.json +++ b/packages/host/frontend-static/package.json @@ -1,6 +1,6 @@ { "name": "@deepseek-ai/dsh-host-frontend-static", - "description": "SPA dist server for the Web shell: owns the webserver fallback seat, serving the built frontend with index-tap injection, traversal rejection, and SPA index fallback", + "description": "SPA dist server for the Web shell: owns the webserver fallback seat, serving explicit index entries and static assets with traversal rejection and 404 misses", "version": "0.1.0-rc.8", "publishConfig": { "access": "public" diff --git a/packages/host/frontend-static/src/index.ts b/packages/host/frontend-static/src/index.ts index ad516f1c79..1afd319906 100644 --- a/packages/host/frontend-static/src/index.ts +++ b/packages/host/frontend-static/src/index.ts @@ -1,13 +1,13 @@ /** * @deepseek-ai/dsh-host-frontend-static — SPA dist server over the webserver - * fallback seat: serves the built frontend directory with the semantics the - * Web shell locked at step1 — traversal outside the dist root is 403, any - * miss falls back to index.html with HTTP 200 (SPA routing), unknown - * extensions ship as octet-stream, non-GET/HEAD is 405. Every index response - * runs through the webserver's index render (structured injection rows, then - * raw taps). The dist location is workspace knowledge of the composing - * application, so `distIndex` is typically supplied through a `!!js` - * expression, never hardcoded by a deployment. + * fallback seat: serves the built frontend directory with explicit index + * entry points. A readable index renders at the dist root and configured index + * path; missing paths return 404, traversal outside the dist root is 403, + * unknown extensions ship as octet-stream, and non-GET/HEAD is 405. Every + * index response runs through the webserver's index render (structured + * injection rows, then raw taps). The dist location is workspace knowledge of + * the composing application, so `distIndex` is typically supplied through a + * `!!js` expression, never hardcoded by a deployment. * @module @deepseek-ai/dsh-host-frontend-static */ @@ -34,8 +34,10 @@ export const Config: z = z.object({ distIndex: z.string().required(), }) +const HTML_MIME = 'text/html; charset=utf-8' + const MIME: Record = { - '.html': 'text/html; charset=utf-8', + '.html': HTML_MIME, '.js': 'text/javascript; charset=utf-8', '.css': 'text/css; charset=utf-8', '.svg': 'image/svg+xml', @@ -44,14 +46,20 @@ const MIME: Record = { '.webmanifest': 'application/manifest+json', } +const STATIC_MISS_CODES: ReadonlySet = new Set([ + 'ENOENT', + 'EISDIR', + 'ENOTDIR', +]) + /** * Serve one GET/HEAD static request from the dist root. * @param pathname - decoded URL pathname of the request. * @param res - the node:http response to write. * @param distRoot - absolute dist root directory (resolved by the caller). * @param distIndex - absolute path of index.html inside distRoot. - * @param renderIndex - produces the index.html body (injection rendering) for - * `/` and every SPA fallback. + * @param renderIndex - produces the index.html body (structured injection + * rendering) for the dist root and configured index path. */ export async function serveStatic( pathname: string, res: ServerResponse, distRoot: string, distIndex: string, @@ -66,23 +74,26 @@ export async function serveStatic( res.end() return } - const serveIndex = async (): Promise => { - const body = await renderIndex() - res.writeHead(200, { 'content-type': MIME['.html'] }) - res.end(body) - } - if (target === distRoot || target === distIndex) { - await serveIndex() + let body: string | Buffer + let type: string + try { + if (target === distRoot || target === distIndex) { + body = await renderIndex() + type = HTML_MIME + } else { + body = await readFile(target) + type = MIME[extname(target)] ?? 'application/octet-stream' + } + } catch (error) { + // Only absent or non-file targets are 404; other filesystem failures reach + // the webserver's request-failure handling. + if (!STATIC_MISS_CODES.has((error as NodeJS.ErrnoException).code)) throw error + res.writeHead(404) + res.end() return } - try { - const body = await readFile(target) - res.writeHead(200, { 'content-type': MIME[extname(target)] ?? 'application/octet-stream' }) - res.end(body) - } catch { - // Miss (ENOENT/EISDIR) falls back to index.html with 200 (SPA routing). - await serveIndex() - } + res.writeHead(200, { 'content-type': type }) + res.end(body) } /** diff --git a/packages/host/frontend-static/tests/frontend-static.spec.ts b/packages/host/frontend-static/tests/frontend-static.spec.ts index 1b9fc9c65c..fda9dcbc3e 100644 --- a/packages/host/frontend-static/tests/frontend-static.spec.ts +++ b/packages/host/frontend-static/tests/frontend-static.spec.ts @@ -1,9 +1,9 @@ /** * REAL-composition coverage: a test-only cordis.yml booted through the * vendored Loader mounts the webserver and frontend-static rows, and every - * assertion observes the served HTTP surface — asset serving, MIME fallback, - * SPA index fallback with index taps, traversal rejection, 405 on non-GET/ - * HEAD, and seat release on fiber disposal (HMR safety). + * assertion observes the served HTTP surface — asset serving, explicit index + * entry points with index taps, 404 misses, traversal rejection, 405 on non- + * GET/HEAD, and seat release on fiber disposal (HMR safety). */ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises' @@ -37,6 +37,7 @@ async function loadComposition(): Promise { await writeFile(join(dist, 'app.js'), 'export {}') await writeFile(join(dist, 'blob.bin'), 'BLOB') await writeFile(join(dist, 'manifest.webmanifest'), '{}') + await mkdir(join(dist, 'empty')) const configPath = join(root, 'cordis.yml') await writeFile(configPath, [ "- name: '@deepseek-ai/dsh-host-webserver'", @@ -84,7 +85,7 @@ async function request(port: number, path: string, init?: RequestInit): Promise< } describe('real Loader composition', () => { - it('serves the dist with SPA fallback, taps, traversal rejection, and method gating', { timeout: 60_000 }, async () => { + it('serves explicit index entries and files while preserving HTTP error semantics', { timeout: 60_000 }, async () => { const loaded = await loadComposition() const unloaded = [...loaded.loader.entries()] .filter(entry => entry.fiber === undefined && !entry.disabled) @@ -100,27 +101,67 @@ describe('real Loader composition', () => { type: 'application/manifest+json', body: '{}', }) + expect(await request(port, '/app.js', { method: 'HEAD' })).toEqual({ + status: 200, + type: 'text/javascript; charset=utf-8', + body: '', + }) await writeFile(join(root!, 'dist', 'app.js'), 'export const rebuilt = true') expect(await request(port, '/app.js')).toMatchObject({ status: 200, body: 'export const rebuilt = true' }) // Unknown extension ships as octet-stream. expect(await request(port, '/blob.bin')).toMatchObject({ status: 200, type: 'application/octet-stream', body: 'BLOB' }) - // `/`, the index path, and any miss all render index.html (SPA routing) - // through the registered index taps. + // Only the root and index path render index.html through registered taps. const untap = server.tapIndex(html => html.replace('', '')) - for (const path of ['/', '/index.html', '/no/such/route']) { + for (const path of ['/', '/index.html', '/?fixture']) { const got = await request(port, path) expect(got.status).toBe(200) + expect(got.type).toBe('text/html; charset=utf-8') expect(got.body).toContain('__T__') expect(got.body).toContain('shell') } + expect(await request(port, '/', { method: 'HEAD' })).toEqual({ + status: 200, + type: 'text/html; charset=utf-8', + body: '', + }) untap() expect((await request(port, '/')).body).not.toContain('__T__') - // Traversal outside the dist root is 403; non-GET/HEAD is 405. + // A missing configured index follows the same empty-404 contract for both + // of its public entry paths and for both supported methods. + await rm(join(root!, 'dist', 'index.html')) + for (const path of ['/', '/index.html']) { + const get = await request(port, path) + const head = await request(port, path, { method: 'HEAD' }) + expect(get).toEqual({ status: 404, type: null, body: '' }) + expect(head).toEqual(get) + } + + // Ordinary unknown paths and static-resource misses are empty 404s for + // both GET and HEAD; neither class can be mistaken for the HTML shell. + const ordinaryMisses = ['/no/such/route', '/api/no/such/route', '/empty', '/app.js/child'] + const assetMisses = [ + '/missing.js', + '/missing.css', + '/missing.mjs', + '/missing.js.map', + '/missing.webmanifest', + '/missing.manifest', + ] + for (const path of [...ordinaryMisses, ...assetMisses]) { + const get = await request(port, path) + const head = await request(port, path, { method: 'HEAD' }) + expect(get).toEqual({ status: 404, type: null, body: '' }) + expect(head).toEqual(get) + } + + // Traversal outside the dist root is 403, non-GET/HEAD is 405, and a + // malformed filesystem target still reaches the webserver's 400 guard. expect((await request(port, '/..%2f..%2fetc%2fpasswd')).status).toBe(403) - expect((await request(port, '/nowhere', { method: 'POST' })).status).toBe(405) + expect((await request(port, '/app.js', { method: 'POST' })).status).toBe(405) + expect((await request(port, '/bad%00path')).status).toBe(400) // HMR safety: disposing the frontend row releases the fallback seat (the // unclaimed webserver answers 404) and the seat is claimable again. diff --git a/packages/typert/generator/src/cordis-catalog.ts b/packages/typert/generator/src/cordis-catalog.ts index 14a80f29ea..8ce666b96c 100644 --- a/packages/typert/generator/src/cordis-catalog.ts +++ b/packages/typert/generator/src/cordis-catalog.ts @@ -951,6 +951,12 @@ function anchorFor(headingText: string): string[] { return [``, ''] } +/** Render a subsystem `file:line` source pointer as a file-only link. */ +function sourceLink(source: string): string { + const file = source.split(':')[0] + return `[\`${file}\`](../../${file})` +} + /** Render one harness event entry onto its owning page, nested under its scope heading. */ function renderEvent(e: EventEntry, onPage: string, linkedTypePages: Readonly>): string[] { const out = [...anchorFor(`${e.name} — ${e.mode}`), `#### \`${e.name}\` — ${e.mode}`, ''] @@ -958,7 +964,7 @@ function renderEvent(e: EventEntry, onPage: string, linkedTypePages: Readonly method.signature).join('\n'), onPage, linkedTypePages) if (links) out.push(links, '') } - out.push(`Source: [\`${s.source}\`](../../${s.source.split(':')[0]})`, '') + out.push(`Source: ${sourceLink(s.source)}`, '') return out } diff --git a/packages/typert/generator/tests/cordis-catalog.spec.ts b/packages/typert/generator/tests/cordis-catalog.spec.ts index 640a93169a..ab62291aed 100644 --- a/packages/typert/generator/tests/cordis-catalog.spec.ts +++ b/packages/typert/generator/tests/cordis-catalog.spec.ts @@ -5,6 +5,7 @@ import { projectCordisCatalog, renderInheritedPage, renderPageRegion, + type CordisCatalogPolicy, } from '../src/cordis-catalog.ts' import { CORDIS_CATALOG_POLICY, @@ -22,7 +23,40 @@ let cached: ReturnType | undefined const projection = (): ReturnType => (cached ??= projectCordisCatalog(workspaceRoot, CORDIS_CATALOG_POLICY)) +const SOURCE_LINK_POLICY: CordisCatalogPolicy = { + linkedTypePages: {}, + foundationTypeNames: new Set(), + typeLinkExemptions: {}, + inheritedEvents: [{ name: 'ready', summary: 'Ready.', source: 'vendor/cordis/src/events.ts:9' }], + inheritedServices: [{ name: 'ctx.root', summary: 'Root.', source: 'vendor/cordis/src/context.ts:12' }], +} + describe('Typert-backed Cordis catalog', () => { + it('omits subsystem source lines while preserving inherited Cordis source lines', () => { + const page = renderPageRegion('fixture.md', [{ + key: 'fixture', + type: 'Fixture', + abstract: false, + doc: 'Fixture.', + methods: [], + source: 'packages/fixture/service.ts:24', + }], [{ + name: 'fixture/ready', + scope: 'fixture', + signature: "'fixture/ready'(): void", + jsDoc: '/** Ready. */', + mode: 'emit', + doc: 'Ready.', + source: 'packages/fixture/events.ts:42', + }], SOURCE_LINK_POLICY) + const inherited = renderInheritedPage(SOURCE_LINK_POLICY) + + expect(page).toContain('Source: [`packages/fixture/events.ts`](../../packages/fixture/events.ts)') + expect(page).toContain('Source: [`packages/fixture/service.ts`](../../packages/fixture/service.ts)') + expect(inherited).toContain('([`vendor/cordis/src/events.ts:9`](../../vendor/cordis/src/events.ts))') + expect(inherited).toContain('([`vendor/cordis/src/context.ts:12`](../../vendor/cordis/src/context.ts))') + }) + it('reproduces every committed catalog artifact byte for byte', { timeout: 480_000 }, () => { const { projector, model } = projection() const expected = (path: string): string => readFileSync(join(workspaceRoot, path), 'utf8')