@owloops/browserbird 1.5.6 → 1.5.7

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.
Files changed (2) hide show
  1. package/dist/index.mjs +19 -2
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -122,8 +122,8 @@ function unknownSubcommand(subcommand, command, validCommands) {
122
122
  /** @fileoverview ASCII banner displayed on daemon startup and in help text. */
123
123
  const pkg = createRequire(import.meta.url)("../package.json");
124
124
  const buildInfo = [];
125
- buildInfo.push(`commit: ${"5c40f992cba0195dbff888d3c8051e436f6cdfe9".substring(0, 7)}`);
126
- buildInfo.push(`built: 2026-03-18T09:52:28+04:00`);
125
+ buildInfo.push(`commit: ${"981b44f5487db1d864909e7f135897db73c1a525".substring(0, 7)}`);
126
+ buildInfo.push(`built: 2026-03-18T10:38:16+04:00`);
127
127
  const buildString = buildInfo.length > 0 ? ` (${buildInfo.join(", ")})` : "";
128
128
  const VERSION = `browserbird ${pkg.version}${buildString}`;
129
129
  const BIRD = [
@@ -2941,6 +2941,15 @@ function createCoalescer(config, onDispatch) {
2941
2941
  //#endregion
2942
2942
  //#region src/channel/handler.ts
2943
2943
  const BROWSER_TOOL_PREFIX = "mcp__playwright__";
2944
+ const STATUS_REFRESH_MS = 9e4;
2945
+ function toolStatusText(toolName) {
2946
+ if (toolName.startsWith(BROWSER_TOOL_PREFIX)) return "is using the browser...";
2947
+ if (toolName.startsWith("mcp__")) return "is using a tool...";
2948
+ if (toolName === "Bash") return "is running a command...";
2949
+ if (toolName === "Read" || toolName === "Grep" || toolName === "Glob") return "is reading files...";
2950
+ if (toolName === "Edit" || toolName === "Write") return "is writing code...";
2951
+ return "is working...";
2952
+ }
2944
2953
  function createHandler(client, getConfig, signal, getTeamId, getChannelNameToId) {
2945
2954
  const locks = /* @__PURE__ */ new Map();
2946
2955
  let activeSpawns = 0;
@@ -2999,6 +3008,11 @@ function createHandler(client, getConfig, signal, getTeamId, getChannelNameToId)
2999
3008
  else throw err;
3000
3009
  }
3001
3010
  }
3011
+ let lastStatus = "is thinking...";
3012
+ const refreshStatus = () => {
3013
+ client.setStatus?.(channelId, threadTs, lastStatus).catch(() => {});
3014
+ };
3015
+ const statusTimer = setInterval(refreshStatus, STATUS_REFRESH_MS);
3002
3016
  for await (const event of events) {
3003
3017
  if (signal.aborted) break;
3004
3018
  logger.debug(`stream event: ${event.type}`);
@@ -3017,6 +3031,8 @@ function createHandler(client, getConfig, signal, getTeamId, getChannelNameToId)
3017
3031
  break;
3018
3032
  case "tool_use":
3019
3033
  meta.onToolUse?.(event.toolName);
3034
+ lastStatus = toolStatusText(event.toolName);
3035
+ client.setStatus?.(channelId, threadTs, lastStatus).catch(() => {});
3020
3036
  break;
3021
3037
  case "completion":
3022
3038
  completion = event;
@@ -3041,6 +3057,7 @@ function createHandler(client, getConfig, signal, getTeamId, getChannelNameToId)
3041
3057
  break;
3042
3058
  }
3043
3059
  }
3060
+ clearInterval(statusTimer);
3044
3061
  if (timedOut) {
3045
3062
  await safeStop({});
3046
3063
  const blocks = sessionTimeoutBlocks(timedOutMs, { sessionUid });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owloops/browserbird",
3
- "version": "1.5.6",
3
+ "version": "1.5.7",
4
4
  "description": "AI agent orchestrator with a real browser, a cron scheduler, and a web dashboard",
5
5
  "type": "module",
6
6
  "bin": {