lark-remote 0.1.12 → 0.2.0
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.
- package/CHANGELOG.md +37 -0
- package/README.en.md +2 -6
- package/README.md +3 -7
- package/dist/bridge/final-usage.d.ts +24 -0
- package/dist/bridge/final-usage.js +55 -0
- package/dist/bridge/inbound-media.d.ts +0 -3
- package/dist/bridge/inbound-media.js +0 -1
- package/dist/bridge/index.d.ts +7 -7
- package/dist/bridge/index.js +100 -133
- package/dist/bridge/queue-manager.js +4 -3
- package/dist/card/approval-render.js +39 -94
- package/dist/card/bash-renderer.js +12 -21
- package/dist/card/card-shared.d.ts +14 -5
- package/dist/card/card-shared.js +23 -34
- package/dist/card/run-renderer.d.ts +0 -22
- package/dist/card/run-renderer.js +206 -153
- package/dist/card/run-state.d.ts +29 -1
- package/dist/card/run-state.js +172 -84
- package/dist/card/text-truncate.d.ts +0 -9
- package/dist/card/text-truncate.js +0 -9
- package/dist/card/tool-render.d.ts +4 -1
- package/dist/card/tool-render.js +76 -32
- package/dist/cli.js +2 -2
- package/dist/common/fs.d.ts +14 -0
- package/dist/common/fs.js +57 -3
- package/dist/common/truncate.d.ts +0 -6
- package/dist/common/truncate.js +1 -1
- package/dist/common/ttl-cache.d.ts +24 -0
- package/dist/common/ttl-cache.js +53 -0
- package/dist/config/codex-config.js +14 -11
- package/dist/config/index.d.ts +0 -8
- package/dist/config/index.js +0 -16
- package/dist/config/kimi-config.d.ts +1 -1
- package/dist/config/kimi-config.js +2 -1
- package/dist/config/opencode-config.d.ts +1 -1
- package/dist/config/opencode-config.js +16 -10
- package/dist/config/qr.d.ts +36 -0
- package/dist/config/qr.js +124 -0
- package/dist/config/wizard.js +69 -27
- package/dist/connector/index.d.ts +3 -2
- package/dist/connector/index.js +5 -3
- package/dist/index.js +14 -41
- package/dist/instance-lock.js +7 -0
- package/dist/persistence/atomic-write.d.ts +2 -0
- package/dist/persistence/atomic-write.js +20 -5
- package/dist/persistence/load-json-file.d.ts +1 -2
- package/dist/persistence/load-json-file.js +2 -3
- package/dist/platform/agent-stopper.d.ts +22 -0
- package/dist/platform/agent-stopper.js +19 -0
- package/dist/platform/command.d.ts +11 -0
- package/dist/platform/command.js +107 -0
- package/dist/platform/identity.d.ts +33 -0
- package/dist/platform/identity.js +187 -0
- package/dist/platform/path.d.ts +24 -0
- package/dist/platform/path.js +110 -0
- package/dist/platform/select.d.ts +9 -0
- package/dist/platform/select.js +12 -0
- package/dist/platform/shell.d.ts +51 -0
- package/dist/platform/shell.js +75 -0
- package/dist/platform/spawn.d.ts +41 -0
- package/dist/platform/spawn.js +77 -0
- package/dist/platform/terminator-posix.d.ts +38 -0
- package/dist/platform/terminator-posix.js +103 -0
- package/dist/platform/terminator-win32.d.ts +21 -0
- package/dist/platform/terminator-win32.js +110 -0
- package/dist/platform/terminator.d.ts +44 -0
- package/dist/platform/terminator.js +24 -0
- package/dist/platform/types.d.ts +23 -0
- package/dist/platform/types.js +5 -0
- package/dist/restart.js +4 -2
- package/dist/router/card-helpers.d.ts +33 -6
- package/dist/router/card-helpers.js +67 -11
- package/dist/router/config/common/render.d.ts +1 -1
- package/dist/router/config/common/render.js +1 -1
- package/dist/router/config-diff.d.ts +4 -0
- package/dist/router/config-diff.js +70 -0
- package/dist/router/index.d.ts +73 -6
- package/dist/router/index.js +663 -590
- package/dist/router/utils.d.ts +6 -0
- package/dist/router/utils.js +12 -0
- package/dist/runner/bash/runner.d.ts +9 -2
- package/dist/runner/bash/runner.js +45 -20
- package/dist/runner/claude/session.d.ts +4 -4
- package/dist/runner/claude/session.js +18 -9
- package/dist/runner/codex/app-server/protocol-types.d.ts +35 -1
- package/dist/runner/codex/app-server/runner.d.ts +1 -16
- package/dist/runner/codex/app-server/runner.js +2 -2
- package/dist/runner/codex/app-server/translator.d.ts +18 -0
- package/dist/runner/codex/app-server/translator.js +146 -0
- package/dist/runner/common/acp/base-acp-runner.d.ts +116 -0
- package/dist/runner/common/acp/base-acp-runner.js +248 -0
- package/dist/runner/common/acp/base-translator.d.ts +141 -0
- package/dist/runner/common/acp/base-translator.js +271 -0
- package/dist/runner/common/acp/protocol-helpers.d.ts +70 -0
- package/dist/runner/common/acp/protocol-helpers.js +82 -0
- package/dist/runner/common/connection-based-runner.d.ts +0 -2
- package/dist/runner/common/connection-based-runner.js +1 -1
- package/dist/runner/common/jsonrpc/transport.d.ts +2 -0
- package/dist/runner/common/jsonrpc/transport.js +25 -5
- package/dist/runner/common/process-stopper.d.ts +4 -26
- package/dist/runner/common/process-stopper.js +4 -76
- package/dist/runner/common/runner-utils.d.ts +0 -5
- package/dist/runner/common/runner-utils.js +0 -7
- package/dist/runner/common/spawning-runner.d.ts +42 -132
- package/dist/runner/common/spawning-runner.js +52 -271
- package/dist/runner/common/usage.d.ts +2 -0
- package/dist/runner/common/usage.js +2 -0
- package/dist/runner/dsh/index.d.ts +0 -2
- package/dist/runner/dsh/index.js +0 -2
- package/dist/runner/dsh/runner.d.ts +0 -2
- package/dist/runner/dsh/runner.js +1 -1
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/kimi/acp/runner.d.ts +63 -53
- package/dist/runner/kimi/acp/runner.js +189 -334
- package/dist/runner/kimi/acp/translator.d.ts +18 -101
- package/dist/runner/kimi/acp/translator.js +61 -255
- package/dist/runner/opencode/acp/runner.d.ts +22 -46
- package/dist/runner/opencode/acp/runner.js +74 -297
- package/dist/runner/opencode/acp/translator.d.ts +28 -104
- package/dist/runner/opencode/acp/translator.js +54 -249
- package/dist/runner/pi/rpc/index.d.ts +0 -2
- package/dist/runner/pi/rpc/index.js +0 -2
- package/dist/runner/pi/rpc/translator.d.ts +3 -0
- package/dist/runner/pi/rpc/translator.js +47 -9
- package/dist/runner/probe.d.ts +8 -11
- package/dist/runner/probe.js +17 -21
- package/dist/runner/registry.d.ts +4 -4
- package/dist/runner/registry.js +4 -4
- package/dist/runner/resolve-agent-choices.js +6 -2
- package/dist/runner/sync-agent-choices.js +1 -1
- package/dist/runner/types.d.ts +38 -1
- package/dist/session/claude/session-index.js +3 -1
- package/dist/session/claude/sessions.js +37 -64
- package/dist/session/codex/rollout-reader.d.ts +10 -14
- package/dist/session/codex/rollout-reader.js +126 -48
- package/dist/session/common/constants.d.ts +7 -0
- package/dist/session/common/constants.js +9 -0
- package/dist/session/common/pagination.d.ts +0 -2
- package/dist/session/common/pagination.js +1 -1
- package/dist/session/common/recency.d.ts +7 -0
- package/dist/session/common/recency.js +10 -0
- package/dist/session/common/two-pass.d.ts +22 -0
- package/dist/session/common/two-pass.js +70 -0
- package/dist/session/common/usage-accumulator.d.ts +14 -0
- package/dist/session/common/usage-accumulator.js +15 -0
- package/dist/session/dsh/sessions.js +15 -11
- package/dist/session/kimi/sessions.d.ts +24 -4
- package/dist/session/kimi/sessions.js +99 -103
- package/dist/session/opencode/sessions.d.ts +2 -14
- package/dist/session/opencode/sessions.js +35 -15
- package/dist/session/pi/sessions.js +64 -95
- package/dist/update/index.d.ts +2 -3
- package/dist/update/index.js +1 -2
- package/dist/update/install.d.ts +2 -1
- package/dist/update/install.js +58 -9
- package/dist/update/version-check.d.ts +5 -0
- package/dist/update/version-check.js +9 -0
- package/package.json +9 -7
- package/dist/update/startup-hint.d.ts +0 -5
- package/dist/update/startup-hint.js +0 -11
|
@@ -6,15 +6,23 @@
|
|
|
6
6
|
* → synthetic init → session/prompt → consume session/update notifications
|
|
7
7
|
* until prompt settles → result event.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Turn/connection/compact/approval orchestration lives in BaseAcpRunner.
|
|
10
|
+
* Kimi-specific parts:
|
|
11
|
+
* - compaction is a BACKGROUND task: after the compact prompt settles, poll
|
|
12
|
+
* wire.jsonl for a NEW terminal compaction record (§5.2, never fake success)
|
|
13
|
+
* - terminal/* reverse RPC: kimi delegates Bash execution to the client —
|
|
14
|
+
* this runner spawns one-shot local bash processes (handleTerminalRequest)
|
|
15
|
+
* - terminal-backed Bash tool notifications are filtered (bashToolCallIds) so
|
|
16
|
+
* the run card doesn't get duplicate output-less Bash panels
|
|
17
|
+
* - AskUserQuestion flows through elicitation forms + a request_permission
|
|
18
|
+
* question bridge (buildQuestionResponse)
|
|
13
19
|
*/
|
|
14
|
-
import type { AgentKind, AgentSessionReader,
|
|
15
|
-
import { JsonRpcClient
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
20
|
+
import type { AgentKind, AgentSessionReader, AgentStatusInfo, SpawnOptions } from '../../types.js';
|
|
21
|
+
import { JsonRpcClient } from '../../common/jsonrpc/client.js';
|
|
22
|
+
import { KimiAcpTranslator } from './translator.js';
|
|
23
|
+
import { type SessionPromptResult } from '../../common/acp/protocol-types.js';
|
|
24
|
+
import { type AcpPendingApproval } from '../../common/acp/protocol-helpers.js';
|
|
25
|
+
import { BaseAcpRunner } from '../../common/acp/base-acp-runner.js';
|
|
18
26
|
export interface KimiAcpRunnerOptions {
|
|
19
27
|
kind: AgentKind;
|
|
20
28
|
sessionReader: AgentSessionReader;
|
|
@@ -30,22 +38,24 @@ export interface KimiAcpRunnerOptions {
|
|
|
30
38
|
idleTtlMs?: number;
|
|
31
39
|
/** How long to wait for turn output before failing. Defaults to 10 min. */
|
|
32
40
|
turnIdleTimeoutMs?: number;
|
|
33
|
-
/**
|
|
34
|
-
* /
|
|
35
|
-
|
|
41
|
+
/** §5.2: compaction 等待的沉默超时——距上次观察到任何新 compaction 记录
|
|
42
|
+
* (begin/terminal)超过该时长仍未终态才放弃(outcome unknown,卡片 error,
|
|
43
|
+
* 不再「超时=成功」)。默认 10 分钟(对齐 turnIdleTimeoutMs)。压缩是完整
|
|
44
|
+
* LLM 请求(引擎带重试),时长无上限,旧的固定 30s 轮询超时已删除。 */
|
|
45
|
+
compactIdleTimeoutMs?: number;
|
|
36
46
|
model?: string;
|
|
37
47
|
/** Kimi permission mode (user-facing: manual/auto/yolo). */
|
|
38
48
|
permissionMode?: 'manual' | 'auto' | 'yolo';
|
|
39
49
|
}
|
|
40
|
-
export declare class KimiAcpRunner extends
|
|
41
|
-
private connectionManager;
|
|
42
|
-
private currentTranslator;
|
|
43
|
-
private activeSessionId;
|
|
44
|
-
private model?;
|
|
50
|
+
export declare class KimiAcpRunner extends BaseAcpRunner<KimiAcpTranslator> {
|
|
45
51
|
private permissionMode;
|
|
46
|
-
private readonly
|
|
47
|
-
/**
|
|
48
|
-
|
|
52
|
+
private readonly compactIdleTimeoutMs;
|
|
53
|
+
/**
|
|
54
|
+
* §5.2 compaction baseline: wire.jsonl records sampled by compactBaseline()
|
|
55
|
+
* BEFORE the compact prompt fires (reset per compact run). onCompactPromptFired
|
|
56
|
+
* derives both the terminal-count baseline and the total-count probe from it.
|
|
57
|
+
*/
|
|
58
|
+
private compactBaselineRecords;
|
|
49
59
|
/** 存活 terminal(kimi 把 Bash 执行下放客户端):terminalId → 本地句柄。 */
|
|
50
60
|
private terminals;
|
|
51
61
|
/** terminalId 自增序号(term-1, term-2, …)。 */
|
|
@@ -61,32 +71,29 @@ export declare class KimiAcpRunner extends ConnectionBasedRunner<KimiAcpClient,
|
|
|
61
71
|
/** 当前 run 的 session cwd(terminal/create 未给 cwd 时回退用)。 */
|
|
62
72
|
private activeCwd;
|
|
63
73
|
private readonly processStopper;
|
|
64
|
-
/** Tracker for the in-flight prompt request — needed for cancellation. */
|
|
65
|
-
private promptSettled;
|
|
66
74
|
constructor(opts: KimiAcpRunnerOptions);
|
|
67
75
|
protected get logTag(): string;
|
|
68
76
|
protected get turnTimeoutErrorMessage(): string;
|
|
69
77
|
protected get turnInterruptedErrorMessage(): string;
|
|
70
|
-
protected
|
|
78
|
+
protected get connectionClosedMessage(): string;
|
|
71
79
|
protected shouldDeferStop(): boolean;
|
|
72
|
-
protected
|
|
73
|
-
protected
|
|
74
|
-
protected releaseConnection(cwd: string): Promise<void>;
|
|
75
|
-
protected notifyIdle(cwd: string): void;
|
|
76
|
-
protected disposeConnections(): Promise<void>;
|
|
80
|
+
protected createTranslator(): KimiAcpTranslator;
|
|
81
|
+
protected applyTurnSettings(client: JsonRpcClient, sessionId: string): Promise<void>;
|
|
77
82
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
+
* §5.2: compaction is a BACKGROUND task — the prompt settles before the
|
|
84
|
+
* wire.jsonl terminal record lands. Baselines are captured BEFORE the
|
|
85
|
+
* compact prompt fires (see compactBaseline override — a begin record
|
|
86
|
+
* landing after the fire must count as new activity, not baseline), then
|
|
87
|
+
* wait for a NEW terminal (complete/apply → completed; cancel → cancelled)
|
|
88
|
+
* before producing the result. There is NO total timeout — silence beyond
|
|
89
|
+
* compactIdleTimeoutMs yields 'unknown' (never a fake success). Keeps the
|
|
90
|
+
* connection alive while the background compaction finishes — otherwise
|
|
91
|
+
* dispose/exit kills it and the record never lands (S5/S6 打回复现 /
|
|
92
|
+
* 2026-08-31 事故).
|
|
83
93
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
* ApprovalAction (`{ action: 'accept' | 'decline' | 'cancel' }`).
|
|
88
|
-
*/
|
|
89
|
-
respondApproval(requestId: number | string, response: unknown): Promise<void>;
|
|
94
|
+
protected compactBaseline(sessionId: string, opts: SpawnOptions): number;
|
|
95
|
+
protected onCompactPromptFired(promptPromise: Promise<SessionPromptResult>, translator: KimiAcpTranslator, sessionId: string, opts: SpawnOptions, baselineTotalCount: number): void;
|
|
96
|
+
protected buildApprovalOutcome(action: string, pending: AcpPendingApproval, response: unknown): unknown;
|
|
90
97
|
getStatusInfo(): AgentStatusInfo;
|
|
91
98
|
/**
|
|
92
99
|
* Hot-apply a permission-mode change to the live ACP session (§P5).
|
|
@@ -101,22 +108,21 @@ export declare class KimiAcpRunner extends ConnectionBasedRunner<KimiAcpClient,
|
|
|
101
108
|
permissionMode?: 'manual' | 'auto' | 'yolo';
|
|
102
109
|
}): Promise<void>;
|
|
103
110
|
/**
|
|
104
|
-
*
|
|
105
|
-
* session/new (new session) or session/resume (existing sessionId)
|
|
106
|
-
* → set permission mode if needed → session/prompt.
|
|
107
|
-
*/
|
|
108
|
-
protected setupTurn(message: string, opts: SpawnOptions): Promise<void>;
|
|
109
|
-
/**
|
|
110
|
-
* R2: poll wire.jsonl until a NEW compaction record
|
|
111
|
-
* (context.apply_compaction / full_compaction.complete) appears.
|
|
111
|
+
* §5.2: 等 wire.jsonl 出现 NEW 压缩终态记录,返回判别结果而非 void。
|
|
112
112
|
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
113
|
+
* 压缩是完整 LLM 请求(引擎 ≤5 次重试 + overflow 收缩重试),时长无上限;
|
|
114
|
+
* 旧「固定 30s 超时 = 成功」已删除。出口:
|
|
115
|
+
* completed — 观察到 full_compaction.complete / context.apply_compaction;
|
|
116
|
+
* cancelled — 观察到 full_compaction.cancel(API 失败/abort 与用户取消共用,
|
|
117
|
+
* 绝不当成功);
|
|
118
|
+
* stopped — 等待中 stop()/forceFinish(consumeTurn 产 interrupted 兜底);
|
|
119
|
+
* unknown — 距上次观察到任何新 compaction 记录(begin/terminal)超过
|
|
120
|
+
* compactIdleTimeoutMs(沉默超时,压缩可能仍在后台进行)。
|
|
121
|
+
* 观察到新记录即重置沉默时钟,并顺带重置 turn idle 时钟(lastEventAt +
|
|
122
|
+
* wakeWaiters),避免数分钟的压缩被 consumeTurn 滚动空闲看门狗误杀。
|
|
117
123
|
*/
|
|
118
|
-
private
|
|
119
|
-
|
|
124
|
+
private waitForCompactionTerminal;
|
|
125
|
+
protected handleNotification(method: string, params: unknown): void;
|
|
120
126
|
/**
|
|
121
127
|
* Filter kimi's own Bash tool notifications so the run card doesn't get a
|
|
122
128
|
* duplicate, output-less Bash panel alongside the runner-produced one.
|
|
@@ -128,7 +134,7 @@ export declare class KimiAcpRunner extends ConnectionBasedRunner<KimiAcpClient,
|
|
|
128
134
|
* Returns true when the notification should be swallowed.
|
|
129
135
|
*/
|
|
130
136
|
private filterBashNotifications;
|
|
131
|
-
|
|
137
|
+
protected handleServerRequest(id: number | string, method: string, params: unknown): void;
|
|
132
138
|
/**
|
|
133
139
|
* Handle a kimi terminal/* reverse RPC by spawning a one-shot local process.
|
|
134
140
|
*
|
|
@@ -154,4 +160,8 @@ export declare class KimiAcpRunner extends ConnectionBasedRunner<KimiAcpClient,
|
|
|
154
160
|
private handleTerminalRelease;
|
|
155
161
|
/** Kill every live terminal (dispose/connection-close 清理钩子)。 */
|
|
156
162
|
private cleanupTerminals;
|
|
163
|
+
protected onConnectionAcquired(opts: SpawnOptions): void;
|
|
164
|
+
protected onConnectionClosed(): void;
|
|
165
|
+
protected onClearTurnState(): void;
|
|
166
|
+
protected beforeDisposeConnections(): Promise<void>;
|
|
157
167
|
}
|