Merge worktree/schedule-explicit-at into worktree/schedule-fixed-rate

This commit is contained in:
Tianyi Cui
2026-08-11 19:23:20 +08:00
3663 changed files with 86658 additions and 37212 deletions

View File

@@ -9,7 +9,7 @@
英文源文件根据源码生成(`scripts/gen-persistence-catalog.ts`),并由 `pnpm run verify-persistence-catalog``doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。声明块保留源码声明和嵌套属性的 JSDoc只移除其所在接口模块带来的缩进并使用 `ts persistence-catalog` 围栏doc-typecheck 会跳过这些围栏因为声明引用了其所属模块中的类型。payload 中的类型名称会链接到记录该类型的页面。参见 [persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md)。
以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time``data`,以及条件字段 `surfaceOp``sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM大语言模型消息并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行),整个格式固定为 `SESSION_FORMAT_VERSION = 0`:这是预发布格式,不暗示任何兼容性(参见[版本立场](subsystems/persistence.md))。范围仅限本仓库中的包;下游插件可以继续合并其他事件类型,而这些类型按设计不属于本目录。
以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time``data`、可选的未知类型跳过标记 `ignorable`,以及条件字段 `surfaceOp``sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM大语言模型消息并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行),整个格式固定为 `SESSION_FORMAT_VERSION = 0`:这是预发布格式,不暗示任何兼容性(参见[版本立场](subsystems/persistence.md))。范围仅限本仓库中的包;下游插件可以继续合并其他事件类型,而这些类型按设计不属于本目录。
## 事件信封
@@ -65,6 +65,17 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
/** Unix epoch milliseconds. */
time: number
data: SessionEventMap[K]
/**
* Marks an event a reader may safely skip when it does not recognize
* `type`. Absent means required: a reader meeting an unrecognized type
* without this marker MUST refuse to reconstruct the session instead of
* silently dropping the event, because an unrecognized required event may
* change how the rest of the log is interpreted. A writer sets `true` only
* on purely informational records whose loss cannot affect reconstruction;
* defaulting to required means a forgotten marker over-refuses (an
* inconvenience) rather than silently resuming a gutted session.
*/
ignorable?: true
} & (K extends SurfaceEventType ? {
/**
* Seq numbers of earlier events that this event cites as sources
@@ -81,7 +92,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
}[T]
```
来源:[`packages/core/session/src/types.ts:308`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:315`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:344`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:376`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:316`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:323`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:352`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:384`](../packages/core/session/src/types.ts)
## 事件
@@ -106,6 +117,22 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
来源:[`packages/core/agent/src/types.ts:19`](../packages/core/agent/src/types.ts)
### `agent-preset/*`
#### `agent-preset/selected` — log-only
```ts persistence-catalog
/**
* The session's agent preset was chosen after creation, while the session
* was still blank. Log-only: it records the composition later turns ran
* under, so a resumed or forked session rebuilds the same one instead of
* the header's creation-time value.
*/
'agent-preset/selected': { agentPreset: string }
```
来源:[`packages/preset/agent-presets/src/session.ts:26`](../packages/preset/agent-presets/src/session.ts)
### `approval/*`
#### `approval/asked` — log-only
@@ -178,7 +205,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[StreamChunk](subsystems/llm-streaming.md)
来源:[`packages/core/session/src/types.ts:238`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:246`](../packages/core/session/src/types.ts)
#### `assistant/message` — surface
@@ -194,7 +221,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TokenUsage](subsystems/llm-streaming.md)
来源:[`packages/core/session/src/types.ts:245`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:253`](../packages/core/session/src/types.ts)
### `command/*`
@@ -345,12 +372,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
```ts persistence-catalog
/**
* One recorded human remark about this session. Log-only and independent
* of its trigger; it never enters the model surface or derived history.
* of its trigger; it never enters model context or derived history.
*/
'feedback/record': { text: string }
```
来源:[`packages/feedback/command-feedback/src/index.ts:24`](../packages/feedback/command-feedback/src/index.ts)
来源:[`packages/feedback/command-feedback/src/index.ts:25`](../packages/feedback/command-feedback/src/index.ts)
### `goal/*`
@@ -460,7 +487,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'plan/mode': { active: boolean }
```
来源:[`packages/plan/plan-mode/src/index.ts:52`](../packages/plan/plan-mode/src/index.ts)
来源:[`packages/plan/plan-mode/src/index.ts:53`](../packages/plan/plan-mode/src/index.ts)
### `request/*`
@@ -474,7 +501,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'request/context': RequestContext
```
来源:[`packages/core/session/src/types.ts:281`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:289`](../packages/core/session/src/types.ts)
#### `request/header` — log-only
@@ -486,7 +513,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'request/header': { header: EpochHeader; reason: RequestHeaderReason }
```
来源:[`packages/core/session/src/types.ts:276`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:284`](../packages/core/session/src/types.ts)
### `sandbox/*`
@@ -555,7 +582,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'session/end-seed': Record<string, never>
```
来源:[`packages/core/session/src/types.ts:304`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:312`](../packages/core/session/src/types.ts)
#### `session/title` — log-only
@@ -591,7 +618,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'step/end': { turn: number; step: number }
```
来源:[`packages/core/session/src/types.ts:228`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:236`](../packages/core/session/src/types.ts)
#### `step/start` — log-only
@@ -600,7 +627,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'step/start': { turn: number; step: number }
```
来源:[`packages/core/session/src/types.ts:226`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:234`](../packages/core/session/src/types.ts)
### `subagent/*`
@@ -630,7 +657,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TodoItem](subsystems/session.md)
来源:[`packages/core/session/src/types.ts:271`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:279`](../packages/core/session/src/types.ts)
### `tool/*`
@@ -647,7 +674,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[CallId](subsystems/core.md)
来源:[`packages/core/session/src/types.ts:251`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:259`](../packages/core/session/src/types.ts)
#### `tool/code-dispatch` — log-only
@@ -716,7 +743,57 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
}
```
来源:[`packages/core/session/src/types.ts:263`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:271`](../packages/core/session/src/types.ts)
### `tool-workflow/*`
#### `tool-workflow/agent-end` — log-only
```ts persistence-catalog
/**
* Records one member settlement.
* @param data - run identity, paired member sequence, and outcome.
*/
'tool-workflow/agent-end': ToolWorkflowAgentEndData
```
来源:[`packages/workflow/tool-workflow/src/types.ts:57`](../packages/workflow/tool-workflow/src/types.ts)
#### `tool-workflow/agent-start` — log-only
```ts persistence-catalog
/**
* Records one published workflow member.
* @param data - run identity, member sequence, display identity, and child Session.
*/
'tool-workflow/agent-start': ToolWorkflowAgentStartData
```
来源:[`packages/workflow/tool-workflow/src/types.ts:52`](../packages/workflow/tool-workflow/src/types.ts)
#### `tool-workflow/run-end` — log-only
```ts persistence-catalog
/**
* Closes one workflow record after cleanup.
* @param data - stable run identity and terminal reason.
*/
'tool-workflow/run-end': ToolWorkflowRunEndData
```
来源:[`packages/workflow/tool-workflow/src/types.ts:62`](../packages/workflow/tool-workflow/src/types.ts)
#### `tool-workflow/run-start` — log-only
```ts persistence-catalog
/**
* Opens one top-level workflow record.
* @param data - stable run identity and display name.
*/
'tool-workflow/run-start': ToolWorkflowRunStartData
```
来源:[`packages/workflow/tool-workflow/src/types.ts:47`](../packages/workflow/tool-workflow/src/types.ts)
### `turn/*`
@@ -736,7 +813,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
类型:[TurnEndReason](subsystems/session.md)
来源:[`packages/core/session/src/types.ts:224`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:232`](../packages/core/session/src/types.ts)
#### `turn/start` — log-only
@@ -750,7 +827,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'turn/start': { turn: number }
```
来源:[`packages/core/session/src/types.ts:215`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:223`](../packages/core/session/src/types.ts)
### `user/*`
@@ -767,7 +844,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
'user/message': UserMessage
```
来源:[`packages/core/session/src/types.ts:236`](../packages/core/session/src/types.ts)
来源:[`packages/core/session/src/types.ts:244`](../packages/core/session/src/types.ts)
### `web/*`