openclaw-lark-multi-agent 1.1.1 → 1.1.2

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.
@@ -1940,10 +1940,25 @@ export class FeishuBot {
1940
1940
  }
1941
1941
  buildLiveStatusCard(view, chatId) {
1942
1942
  const en = this.isEn(chatId);
1943
+ // Finished (done/failed): keep it minimal — no header, no footer, just one
1944
+ // compact body line with three signals: status emoji + tool-call count +
1945
+ // total elapsed. This avoids taking up much screen space after the run ends.
1946
+ if (view.state !== "running") {
1947
+ const statusEmoji = view.state === "failed" ? "⚠️" : view.noReply ? "💤" : "✅";
1948
+ const summary = en
1949
+ ? `${statusEmoji} ${view.toolCalls} tool call${view.toolCalls === 1 ? "" : "s"} · ⏱ ${view.elapsed}`
1950
+ : `${statusEmoji} 累计${view.toolCalls} 次工具调用 · ⏱ 耗时${view.elapsed}`;
1951
+ // Grey + small like the footer, so the finished card stays unobtrusive.
1952
+ const compact = `<font color='grey'>${summary}</font>`;
1953
+ return {
1954
+ schema: "2.0",
1955
+ config: { update_multi: true, width_mode: "fill" },
1956
+ body: { elements: [{ tag: "markdown", content: compact }] },
1957
+ };
1958
+ }
1943
1959
  const elements = [];
1944
- // Content area. While running: recent activity lines (each prefixed with the
1945
- // relative time mm:ss since the run started). When finished: a single run
1946
- // summary line (total tool calls + elapsed) instead of recent messages.
1960
+ // Running: recent activity lines (each prefixed with the relative time mm:ss
1961
+ // since the run started).
1947
1962
  if (view.lines.length > 0) {
1948
1963
  const iconFor = (kind) => kind === "tool_start" ? "▸"
1949
1964
  : kind === "tool_end" ? "✓"
@@ -1969,8 +1984,6 @@ export class FeishuBot {
1969
1984
  if (view.model)
1970
1985
  footerBits.push(`🧠 ${this.escapeCardText(view.model)}`);
1971
1986
  elements.push({ tag: "markdown", content: `<font color='grey'>${footerBits.join(" · ")}</font>` });
1972
- // Title color reflects state.
1973
- const template = view.state === "done" ? "green" : view.state === "failed" ? "orange" : "blue";
1974
1987
  return {
1975
1988
  schema: "2.0",
1976
1989
  // update_multi is REQUIRED for im.message.patch to update the card; Feishu
@@ -1978,7 +1991,7 @@ export class FeishuBot {
1978
1991
  config: { update_multi: true, width_mode: "fill" },
1979
1992
  header: {
1980
1993
  title: { tag: "plain_text", content: view.title },
1981
- template,
1994
+ template: "blue",
1982
1995
  },
1983
1996
  body: { elements },
1984
1997
  };
@@ -16,6 +16,10 @@ export type LiveStatusView = {
16
16
  elapsed: string;
17
17
  /** Footer: model name, e.g. "phgeek-gw/claude-opus-4.8". */
18
18
  model?: string;
19
+ /** Total tool calls in the run (for the compact finished summary). */
20
+ toolCalls: number;
21
+ /** True when finished via noReply(): the model produced no user-visible reply. */
22
+ noReply: boolean;
19
23
  /** Terminal state: running / done / failed (lets renderer pick color). */
20
24
  state: "running" | "done" | "failed";
21
25
  };
@@ -266,6 +266,8 @@ export class LiveStatusController {
266
266
  lines,
267
267
  elapsed: this.formatElapsed(),
268
268
  model: this.opts.model,
269
+ toolCalls: this.toolCallCount,
270
+ noReply: this.noReplyResult,
269
271
  state: this.state,
270
272
  };
271
273
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-lark-multi-agent",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Multi-bot Lark/Feishu bridge for OpenClaw, with per-bot model routing and isolated sessions",
5
5
  "type": "module",
6
6
  "scripts": {