lark-remote 0.1.8 → 0.1.10
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 +38 -0
- package/README.en.md +4 -4
- package/README.md +4 -4
- package/dist/bridge/approval-coordinator.d.ts +18 -0
- package/dist/bridge/approval-coordinator.js +64 -3
- package/dist/bridge/index.d.ts +17 -0
- package/dist/bridge/index.js +35 -2
- package/dist/card/approval-render.js +105 -8
- package/dist/index.js +17 -3
- package/dist/order/alias-resolve.d.ts +6 -2
- package/dist/order/index.d.ts +17 -2
- package/dist/order/index.js +57 -0
- package/dist/router/index.d.ts +35 -3
- package/dist/router/index.js +529 -85
- package/dist/runner/claude/runner.js +22 -0
- package/dist/runner/claude/session.d.ts +26 -0
- package/dist/runner/claude/session.js +94 -13
- package/dist/runner/common/connection-based-runner.js +10 -5
- package/dist/runner/dsh/runner.d.ts +7 -0
- package/dist/runner/dsh/runner.js +125 -74
- package/dist/runner/kimi/acp/runner.js +15 -0
- package/dist/runner/pi/rpc/runner.js +6 -1
- package/dist/runner/registry.d.ts +3 -2
- package/dist/runner/registry.js +3 -2
- package/dist/runner/types.d.ts +33 -2
- package/dist/session/common/pagination.d.ts +1 -1
- package/dist/session/common/pagination.js +1 -1
- package/dist/session/dsh/sessions.d.ts +6 -1
- package/dist/session/dsh/sessions.js +20 -5
- package/dist/workspace/index.d.ts +8 -0
- package/dist/workspace/index.js +20 -1
- package/package.json +1 -1
- package/dist/order/alias-store.d.ts +0 -38
- package/dist/order/alias-store.js +0 -106
package/dist/order/index.js
CHANGED
|
@@ -4,6 +4,9 @@ import { atomicWriteJson } from '../persistence/atomic-write.js';
|
|
|
4
4
|
import { loadJsonFile } from '../persistence/load-json-file.js';
|
|
5
5
|
const MAX_TEXT_LENGTH = 200;
|
|
6
6
|
const MAX_ORDERS = 50;
|
|
7
|
+
/** 别名名称规则:`[A-Za-z_][A-Za-z0-9_]*`,≤20 字符,不能数字开头。 */
|
|
8
|
+
const ALIAS_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
9
|
+
const MAX_ALIAS_NAME_LENGTH = 20;
|
|
7
10
|
/**
|
|
8
11
|
* Global persistent order store.
|
|
9
12
|
*
|
|
@@ -45,6 +48,11 @@ export class OrderStore {
|
|
|
45
48
|
};
|
|
46
49
|
if (typeof e.usedAt === 'string')
|
|
47
50
|
entry.usedAt = e.usedAt;
|
|
51
|
+
if (typeof e.alias === 'string' &&
|
|
52
|
+
ALIAS_NAME_PATTERN.test(e.alias) &&
|
|
53
|
+
e.alias.length <= MAX_ALIAS_NAME_LENGTH) {
|
|
54
|
+
entry.alias = e.alias;
|
|
55
|
+
}
|
|
48
56
|
valid.push(entry);
|
|
49
57
|
}
|
|
50
58
|
}
|
|
@@ -76,6 +84,55 @@ export class OrderStore {
|
|
|
76
84
|
this.persist();
|
|
77
85
|
}
|
|
78
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* 修改指令文本。保留 usedAt / alias / createdAt(编辑不应重置使用统计或别名)。
|
|
89
|
+
* newText===oldText 短路 persist,避免空写盘。长度 > MAX_TEXT_LENGTH 抛错(与 save 一致)。
|
|
90
|
+
* 内部统一 trim:卡片(handleOrderTextInput)与 CLI(/order edit)都直接传原始文本,
|
|
91
|
+
* 避免双 trim 语义混淆、也避免两条入口存出不同结果。纯空白(trim 后空)抛错。
|
|
92
|
+
* @returns 更新后的 entry;id 不存在返回 undefined。
|
|
93
|
+
*/
|
|
94
|
+
updateText(id, newText) {
|
|
95
|
+
const trimmed = newText.trim();
|
|
96
|
+
if (trimmed === '') {
|
|
97
|
+
throw new Error('指令文本不能为空');
|
|
98
|
+
}
|
|
99
|
+
if (trimmed.length > MAX_TEXT_LENGTH) {
|
|
100
|
+
throw new Error(`指令文本超过 ${MAX_TEXT_LENGTH} 字符限制`);
|
|
101
|
+
}
|
|
102
|
+
const entry = this.data.find((e) => e.id === id);
|
|
103
|
+
if (!entry)
|
|
104
|
+
return undefined;
|
|
105
|
+
if (entry.text === trimmed)
|
|
106
|
+
return entry; // no-op: 短路 persist
|
|
107
|
+
entry.text = trimmed;
|
|
108
|
+
this.persist();
|
|
109
|
+
return entry;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 给指令绑定别名(或解绑)。别名全局唯一,撞名抛错;名称必须通过
|
|
113
|
+
* `ALIAS_NAME_PATTERN`(字母/数字/下划线、不能数字开头、≤20 字符)。
|
|
114
|
+
* @returns 绑定后的条目。
|
|
115
|
+
*/
|
|
116
|
+
setAlias(id, name) {
|
|
117
|
+
const entry = this.data.find((e) => e.id === id);
|
|
118
|
+
if (!entry)
|
|
119
|
+
return undefined;
|
|
120
|
+
if (name === undefined || name === '') {
|
|
121
|
+
delete entry.alias;
|
|
122
|
+
this.persist();
|
|
123
|
+
return entry;
|
|
124
|
+
}
|
|
125
|
+
if (!ALIAS_NAME_PATTERN.test(name) || name.length > MAX_ALIAS_NAME_LENGTH) {
|
|
126
|
+
throw new Error(`别名名称只能包含字母/数字/下划线,不能数字开头,且不超过 ${MAX_ALIAS_NAME_LENGTH} 字符`);
|
|
127
|
+
}
|
|
128
|
+
const existing = this.data.find((e) => e.id !== id && e.alias === name);
|
|
129
|
+
if (existing) {
|
|
130
|
+
throw new Error(`别名 $${name} 已被其他指令占用`);
|
|
131
|
+
}
|
|
132
|
+
entry.alias = name;
|
|
133
|
+
this.persist();
|
|
134
|
+
return entry;
|
|
135
|
+
}
|
|
79
136
|
get() {
|
|
80
137
|
return [...this.data];
|
|
81
138
|
}
|
package/dist/router/index.d.ts
CHANGED
|
@@ -101,7 +101,6 @@ export declare class CommandRouter {
|
|
|
101
101
|
configPath: string;
|
|
102
102
|
private workspaceStore;
|
|
103
103
|
private orderStore;
|
|
104
|
-
private aliasStore;
|
|
105
104
|
private exitHandler;
|
|
106
105
|
private pendingExit;
|
|
107
106
|
/**
|
|
@@ -156,8 +155,6 @@ export declare class CommandRouter {
|
|
|
156
155
|
configPath: string;
|
|
157
156
|
workspacePath?: string;
|
|
158
157
|
ordersPath?: string;
|
|
159
|
-
/** 别名存储路径(<configDir>/aliases.json)。 */
|
|
160
|
-
aliasesPath?: string;
|
|
161
158
|
exitHandler?: () => void;
|
|
162
159
|
/** Spawn the detached replacement bridge process and return its pid (throws on failure). */
|
|
163
160
|
restartSpawner?: () => number;
|
|
@@ -193,6 +190,7 @@ export declare class CommandRouter {
|
|
|
193
190
|
/**
|
|
194
191
|
* 一次别名展开:bridge 收到用户消息后、命令分发前调用。
|
|
195
192
|
* 仅 `$name` 开头的消息可能被展开;未知别名 / 非 `$` 消息原样返回。
|
|
193
|
+
* 别名来自 order 的 `alias` 字段(1 条指令 = 1 个别名),展开文本即指令文本。
|
|
196
194
|
*/
|
|
197
195
|
expandAliasMessage(message: string): string;
|
|
198
196
|
/**
|
|
@@ -298,6 +296,34 @@ export declare class CommandRouter {
|
|
|
298
296
|
* Mirrors handleLsPage — updates the same card, never sends a new one.
|
|
299
297
|
*/
|
|
300
298
|
private handleOrderPage;
|
|
299
|
+
/**
|
|
300
|
+
* Handle order.aliasEdit: 展示别名编辑卡(input + ✓ 提交图标)。
|
|
301
|
+
* 有别名时预填;提交 `order.aliasInput` 处理(含校验与唯一性)。
|
|
302
|
+
*/
|
|
303
|
+
private handleOrderAliasEdit;
|
|
304
|
+
/**
|
|
305
|
+
* Handle order.aliasInput: 提交别名(绑/改/解绑),随后重渲染 /order 列表卡。
|
|
306
|
+
* 留空 = 解绑;非空按命名规则 + 全局唯一校验,失败仅 toast 不重渲染。
|
|
307
|
+
*/
|
|
308
|
+
private handleOrderAliasInput;
|
|
309
|
+
/** Handle order.aliasRemove: 删除某条指令的别名并原地重渲染列表卡。 */
|
|
310
|
+
private handleOrderAliasRemove;
|
|
311
|
+
/**
|
|
312
|
+
* Handle order.textEdit: 展示指令文本编辑卡(input + ✓ 提交图标)。
|
|
313
|
+
* 预填当前 text(完整内容,不截断——input 组件有自有滚动条);
|
|
314
|
+
* 提交 `order.textInput` 处理(trim + 长度校验 + OrderStore.updateText)。
|
|
315
|
+
* 完全镜像 handleOrderAliasEdit 的 4 段结构(reload → find → 构造 editCard →
|
|
316
|
+
* updateCardInPlace)。
|
|
317
|
+
*/
|
|
318
|
+
private handleOrderTextEdit;
|
|
319
|
+
/**
|
|
320
|
+
* Handle order.textInput: 提交指令文本编辑。校验 orderId → OrderStore.updateText
|
|
321
|
+
* (store 内部统一 trim + 空/超长校验)。成功 toast + 原地重渲染列表卡(同
|
|
322
|
+
* handleOrderAliasInput 语义:toast-only 响应会让飞书停留在 pre-click 编辑卡,
|
|
323
|
+
* 必须把 card 放进 callback 响应体);失败仅 error toast。
|
|
324
|
+
* 保留 usedAt / alias / createdAt(OrderStore.updateText 只动 text 字段)。
|
|
325
|
+
*/
|
|
326
|
+
private handleOrderTextInput;
|
|
301
327
|
/**
|
|
302
328
|
* Handle ws.use card action: switch to the workspace, then refresh the /ws
|
|
303
329
|
* list card in place so "recent" sort order is immediately visible.
|
|
@@ -467,5 +493,11 @@ export declare class CommandRouter {
|
|
|
467
493
|
buildConfigCard(): CommandResult;
|
|
468
494
|
/** /order 实现(public:测试直接调用,替代 as unknown as)。 */
|
|
469
495
|
cmdOrder(args: string[], _ctx: CommandContext, offset?: number): CommandResult;
|
|
496
|
+
/** /order alias add:按 orderId 或列表序号(1 基)解析目标指令并绑定别名。 */
|
|
497
|
+
private cmdOrderAliasAdd;
|
|
498
|
+
/** /order alias rm:按 orderId 或列表序号(1 基)移除指令的别名。 */
|
|
499
|
+
private cmdOrderAliasRemove;
|
|
500
|
+
/** 将 `/order alias add|rm` 的目标解析为 order:优先 orderId 精确匹配,回退列表序号(1 基)。 */
|
|
501
|
+
private resolveOrderTarget;
|
|
470
502
|
}
|
|
471
503
|
export {};
|