@ntdgy/dsh-remote-bridge-plugin 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/relay/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * RPC 分发器 —— 窄白名单的核心执行点。
3
+ *
4
+ * 纪律:未知 method 一律拒绝并计数,绝不设置任何兜底转发。
5
+ * 见 docs/decisions/ADR-002-no-http-fallback.md。
6
+ */
7
+ import type { Context } from '@deepseek-ai/cordis';
8
+ import { type RpcRequest } from '@ntdgy/dsh-remote-proto';
9
+ import type { FollowRegistry } from './follow.ts';
10
+ export declare class Dispatcher {
11
+ private readonly ctx;
12
+ private readonly instanceId;
13
+ /** 由插件生命周期持有;ctx 卸载即 abort,防止在途请求泄漏到已卸载的插件。 */
14
+ private readonly signal;
15
+ /** 帧流注册表(D1/D4):订阅与 cursor 解析都经它,dispatcher 不自己持有流。 */
16
+ private readonly follows;
17
+ /** 建立订阅的唯一入口,由插件装配层提供(负责把 frame-end 送到浏览器)。 */
18
+ private readonly subscribe;
19
+ /** subscriptionId → 会话 id,供网关的 sub-control 精确定位订阅(不持有流句柄)。 */
20
+ private readonly subscriptions;
21
+ constructor(ctx: Context, instanceId: string, signal: AbortSignal, follows: FollowRegistry, subscribe: (sessionId: string, subscriptionId: string) => void);
22
+ handle(req: RpcRequest): Promise<unknown>;
23
+ private heartbeat;
24
+ /**
25
+ * 取 sessionController。
26
+ *
27
+ * 不再用 as unknown as 掩盖「服务可能不在」:拿不到就抛一条能指认位置的错误,
28
+ * 而不是让 undefined 流到下游变成 "Cannot read properties of ..."(T14 的教训)。
29
+ */
30
+ private sessionController;
31
+ private sessionList;
32
+ private sessionHistory;
33
+ /**
34
+ * 发送消息。
35
+ *
36
+ * D3:prompt() 要求会话已 resume,冷会话必须先 resolveAgent()。
37
+ * resolveAgent 内部已对并发 resume 去重,因此不需要插件侧再加锁。
38
+ *
39
+ * 注意:这一步会**真正激活 Agent**,所以只能出现在 prompt 路径上,
40
+ * 绝不允许进入 list/history。
41
+ */
42
+ private sessionPrompt;
43
+ /**
44
+ * 建立一次订阅。
45
+ *
46
+ * 只做三件事:派生 subscriptionId、交给 FollowRegistry、记下归属。
47
+ * 帧的泵送与结束信号全部在注册表内部完成,这里不回传任何帧——
48
+ * 帧只能走 client.sendFrame(ADR-004 纪律 1)。
49
+ *
50
+ * @returns 订阅受理回执。帧会在回执之后陆续到达,也可能先于回执到达,
51
+ * 因为网关在转发 follow 请求**之前**就已建好订阅映射(gateway.ts:70)。
52
+ */
53
+ private sessionFollow;
54
+ /**
55
+ * 网关的退订指令(控制帧,非业务 RPC)。
56
+ *
57
+ * 用订阅表定位而不是盲信入参:网关只在它自己的订阅表里查得到时才发,
58
+ * 但实例侧仍要防"取消一个不存在的订阅"被当成成功。
59
+ *
60
+ * @returns 是否真的有订阅被终止。
61
+ */
62
+ cancelSubscription(subscriptionId: string, _reason: string): boolean;
63
+ /** 插件卸载 / 连接断开:终止全部订阅,交给注册表统一收口。 */
64
+ abortAllSubscriptions(): void;
65
+ /**
66
+ * 解析 history 的 throughSeq(D4)。
67
+ *
68
+ * peekCursor 区分两种失败:拿到 cursor / 流结束但没给快照帧。
69
+ * "没给快照帧"是异常而不是空结果,必须报错而不是让 history 静默返回空页。
70
+ */
71
+ private resolveThroughSeq;
72
+ /** 合并插件生命周期信号与单条 RPC 超时;任一触发即取消 DSH 侧调用。 */
73
+ private withSignal;
74
+ }
@@ -0,0 +1,192 @@
1
+ import { isRpcMethod, } from '@ntdgy/dsh-remote-proto';
2
+ import { normalizeSessionList } from "../local/sessions.js";
3
+ import { RpcError, toRpcError } from "./errors.js";
4
+ /** 已核实正确的 DSH 服务名(dsh 0.2.1-rc.2:lib/index.js:2952 / :710)。 */
5
+ const SESSION_CONTROLLER = 'sessionController';
6
+ /** 单条 RPC 的执行预算。避免断连后仍长期占用 DSH 侧资源。 */
7
+ const RPC_TIMEOUT_MS = 30_000;
8
+ export class Dispatcher {
9
+ ctx;
10
+ instanceId;
11
+ /** 由插件生命周期持有;ctx 卸载即 abort,防止在途请求泄漏到已卸载的插件。 */
12
+ signal;
13
+ /** 帧流注册表(D1/D4):订阅与 cursor 解析都经它,dispatcher 不自己持有流。 */
14
+ follows;
15
+ /** 建立订阅的唯一入口,由插件装配层提供(负责把 frame-end 送到浏览器)。 */
16
+ subscribe;
17
+ /** subscriptionId → 会话 id,供网关的 sub-control 精确定位订阅(不持有流句柄)。 */
18
+ subscriptions = new Map();
19
+ constructor(ctx, instanceId, signal, follows, subscribe) {
20
+ this.ctx = ctx;
21
+ this.instanceId = instanceId;
22
+ this.signal = signal;
23
+ this.follows = follows;
24
+ this.subscribe = subscribe;
25
+ }
26
+ async handle(req) {
27
+ if (!isRpcMethod(req.method)) {
28
+ throw new RpcError('unknown_method', `method not allowed: ${String(req.method)}`);
29
+ }
30
+ switch (req.method) {
31
+ case 'heartbeat':
32
+ return this.heartbeat();
33
+ case 'session.list':
34
+ return this.sessionList();
35
+ case 'session.history':
36
+ return this.sessionHistory(req.params);
37
+ case 'session.prompt':
38
+ return this.sessionPrompt(req.params);
39
+ case 'session.follow':
40
+ // 白名单条目表示"允许订阅",而不是允许 request/response 承载帧。
41
+ // follow 请求在这里只登记订阅并立即回执;帧随后由 FollowRegistry
42
+ // 经 client.sendFrame 推送,终止走 RpcFrameEnd(ADR-004)。
43
+ return this.sessionFollow(req);
44
+ default:
45
+ throw new RpcError('unknown_method', `unhandled method: ${req.method}`);
46
+ }
47
+ }
48
+ heartbeat() {
49
+ return { ts: Date.now() };
50
+ }
51
+ /**
52
+ * 取 sessionController。
53
+ *
54
+ * 不再用 as unknown as 掩盖「服务可能不在」:拿不到就抛一条能指认位置的错误,
55
+ * 而不是让 undefined 流到下游变成 "Cannot read properties of ..."(T14 的教训)。
56
+ */
57
+ sessionController() {
58
+ const candidate = this.ctx.get(SESSION_CONTROLLER);
59
+ if (candidate === undefined || typeof candidate.list !== 'function') {
60
+ throw new RpcError('internal', `${SESSION_CONTROLLER} is unavailable in the current context`);
61
+ }
62
+ return candidate;
63
+ }
64
+ async sessionList() {
65
+ // list 是 cold-safe:不激活 Agent,不打扰正在运行的会话。
66
+ const value = await this.withSignal((signal) => this.sessionController().list({}, signal));
67
+ return { items: normalizeSessionList(value.items) };
68
+ }
69
+ async sessionHistory(params) {
70
+ // D4:throughSeq 缺省 = 由插件解析。peekCursor 内部自带短超时且
71
+ // "拿到首帧 cursor 立即退订",因此这里**不再**套 withSignal 二次包裹。
72
+ const throughSeq = params.throughSeq ?? (await this.resolveThroughSeq(params.sessionId));
73
+ const page = await this.withSignal((signal) => this.sessionController().page({
74
+ address: { kind: 'session', sessionId: params.sessionId },
75
+ throughSeq,
76
+ beforeSeq: params.beforeSeq,
77
+ maxMessages: params.maxMessages,
78
+ }, signal));
79
+ return { records: page.records, hasMore: page.hasMore };
80
+ }
81
+ /**
82
+ * 发送消息。
83
+ *
84
+ * D3:prompt() 要求会话已 resume,冷会话必须先 resolveAgent()。
85
+ * resolveAgent 内部已对并发 resume 去重,因此不需要插件侧再加锁。
86
+ *
87
+ * 注意:这一步会**真正激活 Agent**,所以只能出现在 prompt 路径上,
88
+ * 绝不允许进入 list/history。
89
+ */
90
+ async sessionPrompt(params) {
91
+ const sc = this.sessionController();
92
+ const resolved = (await this.withSignal((signal) => sc.resolveAgent(params.sessionId, signal)));
93
+ if ('error' in resolved)
94
+ throw toRpcError(resolved.error);
95
+ const value = await this.withSignal((signal) => sc.prompt({
96
+ requestId: params.requestId,
97
+ sessionId: params.sessionId,
98
+ mode: params.mode,
99
+ content: params.content,
100
+ }, signal));
101
+ return { accepted: value.accepted };
102
+ }
103
+ /**
104
+ * 建立一次订阅。
105
+ *
106
+ * 只做三件事:派生 subscriptionId、交给 FollowRegistry、记下归属。
107
+ * 帧的泵送与结束信号全部在注册表内部完成,这里不回传任何帧——
108
+ * 帧只能走 client.sendFrame(ADR-004 纪律 1)。
109
+ *
110
+ * @returns 订阅受理回执。帧会在回执之后陆续到达,也可能先于回执到达,
111
+ * 因为网关在转发 follow 请求**之前**就已建好订阅映射(gateway.ts:70)。
112
+ */
113
+ sessionFollow(req) {
114
+ const params = req.params;
115
+ if (typeof params?.sessionId !== 'string' || params.sessionId === '') {
116
+ throw new RpcError('bad_request', 'session.follow requires params.sessionId');
117
+ }
118
+ const sessionId = params.sessionId;
119
+ // 订阅号唯一口径(lead 裁决):网关权威定义,值 = 发起 follow 的 RpcRequest.id。
120
+ // 不读 params.subscriptionId(浏览器传什么一律忽略),也不加 "#attempt" 后缀——
121
+ // 网关的订阅表按这个 id 建、按这个 id 查,带后缀的号它查不到,帧会被当孤儿丢弃。
122
+ // 同一 id 重开订阅:网关已先关旧再开新(gateway.ts:70),插件侧同样先收口旧的。
123
+ const subscriptionId = req.id;
124
+ if (this.subscriptions.has(subscriptionId)) {
125
+ // 同号重入:让旧订阅自行了断,再开新的,而不是两个泵同时写同一条流。
126
+ this.follows.abortSubscription(subscriptionId, 'aborted');
127
+ this.subscriptions.delete(subscriptionId);
128
+ }
129
+ this.subscriptions.set(subscriptionId, sessionId);
130
+ // 终止信号由装配层经 client.sendFrameEnd 投递,这里只做簿记收口。
131
+ this.subscribe(sessionId, subscriptionId);
132
+ return { subscriptionId, sessionId };
133
+ }
134
+ /**
135
+ * 网关的退订指令(控制帧,非业务 RPC)。
136
+ *
137
+ * 用订阅表定位而不是盲信入参:网关只在它自己的订阅表里查得到时才发,
138
+ * 但实例侧仍要防"取消一个不存在的订阅"被当成成功。
139
+ *
140
+ * @returns 是否真的有订阅被终止。
141
+ */
142
+ cancelSubscription(subscriptionId, _reason) {
143
+ const sessionId = this.subscriptions.get(subscriptionId);
144
+ if (sessionId === undefined)
145
+ return false;
146
+ // 只终止这一条订阅:abort DSH 侧 for-await,由其自身收口并发出一条
147
+ // reason:'aborted' 的 RpcFrameEnd。不在这里代发帧(帧只能出自注册表)。
148
+ this.follows.abortSubscription(subscriptionId, 'aborted');
149
+ this.subscriptions.delete(subscriptionId);
150
+ return true;
151
+ }
152
+ /** 插件卸载 / 连接断开:终止全部订阅,交给注册表统一收口。 */
153
+ abortAllSubscriptions() {
154
+ this.subscriptions.clear();
155
+ this.follows.abortAll('aborted');
156
+ }
157
+ /**
158
+ * 解析 history 的 throughSeq(D4)。
159
+ *
160
+ * peekCursor 区分两种失败:拿到 cursor / 流结束但没给快照帧。
161
+ * "没给快照帧"是异常而不是空结果,必须报错而不是让 history 静默返回空页。
162
+ */
163
+ async resolveThroughSeq(sessionId) {
164
+ let peeked;
165
+ try {
166
+ peeked = await this.follows.peekCursor(sessionId, this.signal);
167
+ }
168
+ catch (cause) {
169
+ // DSH 侧失败(会话不存在等)经统一映射,不折叠成 undefined。
170
+ throw toRpcError(cause);
171
+ }
172
+ if ('missing' in peeked) {
173
+ throw new RpcError('internal', `follow stream ended without a snapshot frame: ${sessionId}`);
174
+ }
175
+ return peeked.cursor;
176
+ }
177
+ /** 合并插件生命周期信号与单条 RPC 超时;任一触发即取消 DSH 侧调用。 */
178
+ async withSignal(run) {
179
+ const timeout = AbortSignal.timeout(RPC_TIMEOUT_MS);
180
+ const signal = AbortSignal.any([this.signal, timeout]);
181
+ try {
182
+ return await run(signal);
183
+ }
184
+ catch (cause) {
185
+ if (timeout.aborted && !this.signal.aborted) {
186
+ throw new RpcError('timeout', `rpc exceeded ${RPC_TIMEOUT_MS}ms`, { cause });
187
+ }
188
+ throw toRpcError(cause);
189
+ }
190
+ }
191
+ }
192
+ //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/relay/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * RPC 错误映射 —— 把插件内部/DSH 侧失败收敛成 proto 的 RpcErrorCode。
3
+ *
4
+ * 纪律:错误码是双端契约的一部分,任何新增 code 必须先落到 proto 白名单,
5
+ * 不允许插件侧自造字符串直接上线(否则网关与前端无法判别)。
6
+ */
7
+ import type { RpcErrorCode } from '@ntdgy/dsh-remote-proto';
8
+ /**
9
+ * 插件侧统一失败类型。
10
+ *
11
+ * `code` 直接是 proto 的 RpcErrorCode(不是 string),
12
+ * 这样 client.ts 封响应时不需要再做一次运行时映射。
13
+ */
14
+ export declare class RpcError extends Error {
15
+ readonly code: RpcErrorCode;
16
+ constructor(code: RpcErrorCode, message: string, options?: ErrorOptions);
17
+ }
18
+ /** 把任意 code 收敛到白名单内,未知一律降级为 internal 并保留原文。 */
19
+ export declare function toRpcErrorCode(value: unknown): RpcErrorCode;
20
+ /**
21
+ * DSH 会话域错误的 code → RPC 码。
22
+ *
23
+ * 依据 docs/design-revision.md D3(`resolveAgent` 的已知错误面):
24
+ * session/not-found → bad_request (会话不存在,重试无意义)
25
+ * session/writer-held → agent_rejected (别的写者持有,属于“被拒绝”而非“不存在”)
26
+ * session/agent-busy → agent_rejected (同一会话并发写)
27
+ * gateway/internal → internal (resume 失败)
28
+ * 其余未知 DSH 错误保守映射为 internal,绝不猜测成成功路径。
29
+ */
30
+ export declare function mapDshSessionErrorCode(code: string): RpcErrorCode;
31
+ /**
32
+ * `resolveAgent()` 的失败分支({`error`} 形状,不是抛出)转成 RpcError。
33
+ *
34
+ * DSH 的 RemoteError 带 `code`/`message`/`isDSHRemoteError` 标记;
35
+ * 这里只按 code 判别,不依赖 instanceof(跨 realm 拷贝不成立)。
36
+ */
37
+ export declare function toRpcError(cause: unknown): RpcError;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * 插件侧统一失败类型。
3
+ *
4
+ * `code` 直接是 proto 的 RpcErrorCode(不是 string),
5
+ * 这样 client.ts 封响应时不需要再做一次运行时映射。
6
+ */
7
+ export class RpcError extends Error {
8
+ code;
9
+ constructor(code, message, options) {
10
+ super(message, options);
11
+ this.name = 'RpcError';
12
+ this.code = code;
13
+ }
14
+ }
15
+ const ALLOWED_CODES = [
16
+ 'instance_offline',
17
+ 'unknown_method',
18
+ 'unauthenticated',
19
+ 'agent_rejected',
20
+ 'timeout',
21
+ 'bad_request',
22
+ 'internal',
23
+ ];
24
+ /** 把任意 code 收敛到白名单内,未知一律降级为 internal 并保留原文。 */
25
+ export function toRpcErrorCode(value) {
26
+ return typeof value === 'string' && ALLOWED_CODES.includes(value)
27
+ ? value
28
+ : 'internal';
29
+ }
30
+ /**
31
+ * DSH 会话域错误的 code → RPC 码。
32
+ *
33
+ * 依据 docs/design-revision.md D3(`resolveAgent` 的已知错误面):
34
+ * session/not-found → bad_request (会话不存在,重试无意义)
35
+ * session/writer-held → agent_rejected (别的写者持有,属于“被拒绝”而非“不存在”)
36
+ * session/agent-busy → agent_rejected (同一会话并发写)
37
+ * gateway/internal → internal (resume 失败)
38
+ * 其余未知 DSH 错误保守映射为 internal,绝不猜测成成功路径。
39
+ */
40
+ export function mapDshSessionErrorCode(code) {
41
+ switch (code) {
42
+ case 'session/not-found':
43
+ return 'bad_request';
44
+ case 'session/writer-held':
45
+ case 'session/agent-busy':
46
+ return 'agent_rejected';
47
+ case 'gateway/internal':
48
+ return 'internal';
49
+ default:
50
+ return 'internal';
51
+ }
52
+ }
53
+ /**
54
+ * `resolveAgent()` 的失败分支({`error`} 形状,不是抛出)转成 RpcError。
55
+ *
56
+ * DSH 的 RemoteError 带 `code`/`message`/`isDSHRemoteError` 标记;
57
+ * 这里只按 code 判别,不依赖 instanceof(跨 realm 拷贝不成立)。
58
+ */
59
+ export function toRpcError(cause) {
60
+ if (cause instanceof RpcError)
61
+ return cause;
62
+ if (typeof cause === 'object' && cause !== null) {
63
+ const candidate = cause;
64
+ if (typeof candidate.code === 'string') {
65
+ const message = typeof candidate.message === 'string' ? candidate.message : candidate.code;
66
+ return new RpcError(mapDshSessionErrorCode(candidate.code), message, { cause });
67
+ }
68
+ }
69
+ return new RpcError('internal', cause instanceof Error ? cause.message : String(cause), { cause });
70
+ }
71
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/relay/errors.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAc;IAE3B,YAAY,IAAkB,EAAE,OAAe,EAAE,OAAsB;QACrE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,aAAa,GAA4B;IAC7C,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,SAAS;IACT,aAAa;IACb,UAAU;CACX,CAAA;AAED,+CAA+C;AAC/C,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtF,CAAC,CAAE,KAAsB;QACzB,CAAC,CAAC,UAAU,CAAA;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,mBAAmB;YACtB,OAAO,aAAa,CAAA;QACtB,KAAK,qBAAqB,CAAC;QAC3B,KAAK,oBAAoB;YACvB,OAAO,gBAAgB,CAAA;QACzB,KAAK,kBAAkB;YACrB,OAAO,UAAU,CAAA;QACnB;YACE,OAAO,UAAU,CAAA;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,KAA8C,CAAA;QAChE,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAA;YAC1F,OAAO,IAAI,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACpG,CAAC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * 服务器主动帧的插件侧出口 —— session.follow 的消费与有界订阅管理。
3
+ *
4
+ * 依据:docs/decisions/ADR-004-push-frame-envelope.md、docs/design-revision.md(D1/D4)。
5
+ *
6
+ * 本文件只负责三件事:
7
+ * 1. 把 DSH `sessionController.follow()` 的 AsyncIterable 泵成帧;
8
+ * 2. 每个订阅绑定一个 AbortController,并给出可证明的结束条件;
9
+ * 3. 维护 `sessionId → cursor` 缓存,供 session.history 解析 throughSeq(D4)。
10
+ *
11
+ * 纪律(ADR-004):
12
+ * - 帧只由实例发往浏览器,本文件从不接受入站帧;
13
+ * - 订阅必须有界:`end()` / 所属连接断开 / 空闲超时 / 插件卸载,任一即 abort;
14
+ * - 帧不参与 RPC 超时:frame-end 是帧流唯一的终止信号。
15
+ *
16
+ * 这里**没有**任何 HTTP/透传语义:订阅的输入是会话 id,
17
+ * 输出是 DSH 自己的 follow 帧,中间不做任何转发解释。
18
+ */
19
+ import type { RpcFrame, RpcFrameEnd } from '@ntdgy/dsh-remote-proto';
20
+ /**
21
+ * 单条帧流的时间预算。
22
+ *
23
+ * 空闲超时(收到上一条帧之后多久没有新帧)与生存上限(一个订阅最长活多久)
24
+ * 是两件事,必须分开:前者防僵尸订阅,后者防会话长期被一个订阅钉住。
25
+ * 取值都远大于一次正常 turn 的时长,误杀风险留给 frame-end 的 reason 体现。
26
+ */
27
+ export declare const FOLLOW_IDLE_TIMEOUT_MS: number;
28
+ export declare const FOLLOW_MAX_LIFETIME_MS: number;
29
+ /** cursor 缓存上限与 TTL(D4:避免无限增长)。 */
30
+ export declare const CURSOR_CACHE_MAX_ENTRIES = 512;
31
+ export declare const CURSOR_CACHE_TTL_MS: number;
32
+ /** 订阅的终止原因,直接映射到 RpcFrameEnd.reason。 */
33
+ type FollowEndReason = RpcFrameEnd['reason'];
34
+ /** 一帧已经就绪的输出,对应 proto 的 RpcFrame。 */
35
+ type OutboundFrame = RpcFrame;
36
+ /** DSH follow 流的最小形状(只取本文件用到的成员)。 */
37
+ interface DshFollowStream extends AsyncIterable<DshFollowFrame> {
38
+ }
39
+ /**
40
+ * DSH `SessionFollowFrame` 的三个分支(dsh-api-session-controller/lib/types/types.d.ts:539-550):
41
+ * - `{ type: 'snapshot', cursor, ... }`
42
+ * - `SessionEventEntry`:`{ type: 'event', event }`
43
+ * - `{ type: 'assistant-stream', frame }`
44
+ * 这里按判别字段收窄,而不是原样透传 unknown。
45
+ */
46
+ type DshFollowFrame = {
47
+ readonly type: 'snapshot';
48
+ readonly cursor: number;
49
+ } | {
50
+ readonly type: 'event';
51
+ } | {
52
+ readonly type: 'assistant-stream';
53
+ };
54
+ /** follow 的入参形状。导出给装配层写适配器用,避免调用方重复声明或退化成 any。 */
55
+ export interface DshFollowRequest {
56
+ address: {
57
+ kind: 'session';
58
+ sessionId: string;
59
+ };
60
+ assistantStream?: true;
61
+ }
62
+ /** 只声明本文件真正用到的 DSH 方法面(与 dispatcher.ts 保持同样的取舍)。 */
63
+ export interface DshFollowSource {
64
+ follow(request: DshFollowRequest, signal: AbortSignal): DshFollowStream;
65
+ }
66
+ export interface FollowTarget {
67
+ readonly sessionId: string;
68
+ /** 订阅号由发起 follow 的请求 id 派生(ADR-004),同一订阅内不可变。 */
69
+ readonly subscriptionId: string;
70
+ }
71
+ /** 订阅结束时的回调,transport 用它发 RpcFrameEnd。 */
72
+ export type FollowEndHandler = (end: RpcFrameEnd) => void;
73
+ /** 订阅交给 transport 的句柄。 */
74
+ export interface FollowSubscription {
75
+ readonly subscriptionId: string;
76
+ /** 幂等:浏览器退订、连接断开、会话切换都调它。 */
77
+ end(reason: Exclude<FollowEndReason, 'completed'>): void;
78
+ readonly closed: boolean;
79
+ }
80
+ /**
81
+ * 订阅注册表。
82
+ *
83
+ * 一个实例持有一个 registry;transport 在连接断开时调 `abortAll()`,
84
+ * 插件卸载时同理——这样"连接断开即 abort"是结构性保证,不靠调用方记得。
85
+ */
86
+ export declare class FollowRegistry {
87
+ private readonly source;
88
+ private readonly cursors;
89
+ private readonly active;
90
+ private readonly onFrame;
91
+ /**
92
+ * @param source - DSH sessionController(或同形状的替身,便于单测)。
93
+ * @param onFrame - 帧出口。返回值被忽略;出口自身决定这条帧投给哪个浏览器连接。
94
+ */
95
+ constructor(source: DshFollowSource, onFrame: (frame: OutboundFrame) => void);
96
+ get size(): number;
97
+ /**
98
+ * 订阅一个会话。
99
+ *
100
+ * @param target - 会话 id 与派生出的 subscriptionId。
101
+ * @param onEnd - 流终止时回调一次(正常结束、被 abort、出错都走这里)。
102
+ * @returns 句柄;调用方必须保存它以便退订,
103
+ * 同时应当在连接关闭时调用 `abortAll()`。
104
+ */
105
+ subscribe(target: FollowTarget, onEnd: FollowEndHandler): FollowSubscription;
106
+ /**
107
+ * 终止单个订阅(网关 sub-control / 同号重入)。
108
+ *
109
+ * 走的是与 `end()` 完全相同的路径:controller.abort() 让 DSH 侧 follower 立刻拆除,
110
+ * 再由幂等的 finish 发一次 frame-end。因此无论从哪条入口终止,
111
+ * frame-end 都只发一次,注册表也不会残留条目。
112
+ *
113
+ * @param subscriptionId - 订阅号;由网关视角给出,与其发起 follow 的 req.id 一致。
114
+ * @param reason - 终止原因,写进 frame-end。
115
+ * @returns true 表示确实终止了一条活跃订阅;未知 id 静默返回 false,不抛也不告警——
116
+ * 网关与插件对订阅的可见性存在天然时差(刚结束 / 已超时),把它当错误会刷屏。
117
+ */
118
+ abortSubscription(subscriptionId: string, reason?: Exclude<FollowEndReason, 'completed'>): boolean;
119
+ /** 插件卸载 / 连接断开:终止全部订阅,签名与 ADR-004 的三条纪律一一对应。 */
120
+ abortAll(reason?: Exclude<FollowEndReason, 'completed'>): void;
121
+ /**
122
+ * session.history 的 throughSeq 缺省解析(D4)。
123
+ *
124
+ * 只跑一趟"取首帧就退订"的短路 follow,不会长期持有会话;
125
+ * @param signal - 调用方期限(通常是一条 RPC 的超时信号)。
126
+ */
127
+ resolveCursor(sessionId: string, signal?: AbortSignal): Promise<number | undefined>;
128
+ /**
129
+ * 唯一的 `source.follow` 取用点。
130
+ *
131
+ * T16:`this.source.follow(...)` 在本文件出现过三处,任何一处拿到 undefined
132
+ * 都会炸成 "Cannot read properties of undefined (reading 'follow')" ——
133
+ * 这个信息里没有任何关于「谁给我一个坏 source」的线索,是本次排查卡住的直接原因。
134
+ *
135
+ * T18 教训(**守卫比缺陷更严格**):这一版最初的守卫写成 `!'follow' in source`。
136
+ * 而 source 可能是装配层传入的惰性代理——只实现 `get` 的 Proxy,
137
+ * `'follow' in proxy` 走默认 [[Has]] 落在空 target 上,恒为 false,
138
+ * 于是**健康服务**被判成装配错误,history 100% 不可用:守卫自己成了新的单点障碍。
139
+ *
140
+ * 规则(写在这里供后来者沿用):
141
+ * 1. 守卫必须比它守护的缺陷更**宽松**——宁可漏过交给下游,也不要误杀正常路径;
142
+ * 2. 检查方式必须与被检查对象的**形态**匹配——对代理/惰性对象用 `typeof x.prop`
143
+ * 取真实属性值,不要用 `in` / `hasOwnProperty`(两者都受 [[Has]] 与自有属性限制)。
144
+ *
145
+ * `typeof` 会真实触发一次 get,因此对惰性 source 既能拿到函数,也不会误判。
146
+ */
147
+ private followStream;
148
+ /** 已解析的 cursor 直接记下,避免 history 再开一次 follow。 */
149
+ rememberCursor(sessionId: string, cursor: number): void;
150
+ /**
151
+ * 一次"取首帧 cursor 就退订"的短暂 follow。
152
+ *
153
+ * 这是 D4 给 history 用的入口,语义与 {@link resolveCursor} 相同,
154
+ * 区别只在返回值形态:history 需要把"DSH 侧失败"与"没有快照帧"分开报错,
155
+ * 因此这里把两种结果区分开,而不是把失败折叠成 undefined。
156
+ *
157
+ * @returns `{ cursor }` 取到切口;`{ missing: true }` 流结束但没给 snapshot 帧。
158
+ * 失败(会话不存在等)直接抛出,由调用方映射成 RPC 错误码——不静默吞掉。
159
+ */
160
+ peekCursor(sessionId: string, signal?: AbortSignal): Promise<{
161
+ cursor: number;
162
+ } | {
163
+ missing: true;
164
+ }>;
165
+ /**
166
+ * 泵帧。
167
+ *
168
+ * 生命周期保证:
169
+ * - for await 只在 stop 未 abort 时推进;
170
+ * - 空闲计时器每次 yield 重置,超时直接 end('aborted'),不看错误形态;
171
+ * - 无论正常结束还是抛错,finally 一定 abort,DSH 侧的 follower 因此被拆除。
172
+ */
173
+ private pump;
174
+ private combine;
175
+ }
176
+ export {};