lark-coding-assistant 0.2.3 → 0.2.4
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/README.md +2 -0
- package/dist/cli.js +27 -3
- package/dist/cli.js.map +1 -1
- package/dist/daemon-entry.js +580 -253
- package/dist/daemon-entry.js.map +1 -1
- package/dist/hook-entry.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -108,6 +108,8 @@ lca start --name docs --agent claude --cwd ~/workspace/docs
|
|
|
108
108
|
|
|
109
109
|
名称只允许字母、数字、下划线和短横线,最长 40 个字符。不指定名称时使用 `default`。
|
|
110
110
|
|
|
111
|
+
Session 创建和恢复采用 30 秒启动事务。本地与飞书都会等到 agent 可用后再报告成功;超过 30 秒会取消底层启动、清理临时 tmux 和状态,并返回包含失败阶段与最近终端输出的提示,不会继续在后台运行。同名 session 正在启动时会直接提示“正在启动”,不同名称可以并行启动。Resume Picker 等待用户选择不计入 30 秒,提交选择后重新开始一次 30 秒恢复事务。该限制只作用于启动链路,不影响消息、审批、Question、`status`、`tail`、`attach`、`stop` 或 daemon 管理。
|
|
112
|
+
|
|
111
113
|
一个 PersonalAgent 私聊同一时刻只连接一个 active session。在飞书发送:
|
|
112
114
|
|
|
113
115
|
```text
|
package/dist/cli.js
CHANGED
|
@@ -233,6 +233,7 @@ function runFile(file, args, options = {}) {
|
|
|
233
233
|
{
|
|
234
234
|
cwd: options.cwd,
|
|
235
235
|
timeout: options.timeoutMs ?? 1e4,
|
|
236
|
+
signal: options.signal,
|
|
236
237
|
encoding: "utf8",
|
|
237
238
|
maxBuffer: 4 * 1024 * 1024
|
|
238
239
|
},
|
|
@@ -914,6 +915,28 @@ function formatKnownError(error, context) {
|
|
|
914
915
|
` lark-coding-assistant attach ${sessionId}`,
|
|
915
916
|
" lark-coding-assistant start --name <\u65B0\u540D\u79F0>"
|
|
916
917
|
];
|
|
918
|
+
case "SESSION_STARTING":
|
|
919
|
+
return [
|
|
920
|
+
`session\u300C${sessionId}\u300D\u6B63\u5728\u542F\u52A8\uFF0C\u8BF7\u7B49\u5F85\u5F53\u524D\u64CD\u4F5C\u5B8C\u6210\u3002`,
|
|
921
|
+
"",
|
|
922
|
+
"\u7A0D\u540E\u53EF\u67E5\u770B\u72B6\u6001\uFF1A",
|
|
923
|
+
` lark-coding-assistant status ${sessionId}`
|
|
924
|
+
];
|
|
925
|
+
case "SESSION_START_TIMEOUT": {
|
|
926
|
+
const excerpt = safeValue(context.terminalExcerpt, "Agent \u672A\u8F93\u51FA\u53EF\u7528\u9519\u8BEF\u4FE1\u606F\u3002");
|
|
927
|
+
return [
|
|
928
|
+
`session\u300C${sessionId}\u300D\u542F\u52A8\u8D85\u8FC7 30 \u79D2\uFF0C\u5DF2\u53D6\u6D88\u5E76\u6E05\u7406\u3002`,
|
|
929
|
+
"",
|
|
930
|
+
`Agent\uFF1A${safeValue(context.agent, "\u672A\u77E5")}`,
|
|
931
|
+
`\u5DE5\u4F5C\u76EE\u5F55\uFF1A${safeValue(context.cwd, "\u672A\u77E5")}`,
|
|
932
|
+
`\u8D85\u65F6\u9636\u6BB5\uFF1A${safeValue(context.stage, "unknown")}`,
|
|
933
|
+
"",
|
|
934
|
+
"\u6700\u8FD1\u7EC8\u7AEF\u8F93\u51FA\uFF1A",
|
|
935
|
+
excerpt,
|
|
936
|
+
"",
|
|
937
|
+
"\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u540C\u540D session \u91CD\u8BD5\u3002"
|
|
938
|
+
];
|
|
939
|
+
}
|
|
917
940
|
case "AGENT_SESSION_IN_USE": {
|
|
918
941
|
const ownerSessionId = safeValue(context.ownerSessionId, "\u73B0\u6709 session");
|
|
919
942
|
return [
|
|
@@ -1372,10 +1395,11 @@ async function runStart(options) {
|
|
|
1372
1395
|
await ensureInitialized();
|
|
1373
1396
|
await preflight(options.agent);
|
|
1374
1397
|
await ensureDaemon();
|
|
1398
|
+
console.log(`\u6B63\u5728\u542F\u52A8 ${options.agent} session\u300C${options.name}\u300D\u2026`);
|
|
1375
1399
|
const value = await daemonValue({
|
|
1376
1400
|
method: "start",
|
|
1377
1401
|
...request
|
|
1378
|
-
});
|
|
1402
|
+
}, 35e3);
|
|
1379
1403
|
if (value.binding.mode === "reused") {
|
|
1380
1404
|
console.log("\n\u5DF2\u81EA\u52A8\u6CBF\u7528\u539F\u6709\u98DE\u4E66/Lark \u79C1\u804A\u7ED1\u5B9A\u3002\n");
|
|
1381
1405
|
} else if (value.binding.mode === "awaiting-owner-message") {
|
|
@@ -1575,8 +1599,8 @@ async function ensureDaemon() {
|
|
|
1575
1599
|
function daemonEntryPath() {
|
|
1576
1600
|
return fileURLToPath(new URL("./daemon-entry.js", import.meta.url));
|
|
1577
1601
|
}
|
|
1578
|
-
async function daemonValue(request) {
|
|
1579
|
-
const response = await requestDaemon(paths.socket, request);
|
|
1602
|
+
async function daemonValue(request, timeoutMs) {
|
|
1603
|
+
const response = await requestDaemon(paths.socket, request, timeoutMs);
|
|
1580
1604
|
if (!response.ok) throw daemonResultError(response);
|
|
1581
1605
|
return response.value;
|
|
1582
1606
|
}
|