@owloops/browserbird 1.1.2 → 1.1.3

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 CHANGED
@@ -57,6 +57,9 @@ Once the app is installed, `/bird` is available in any channel:
57
57
  /bird status Show daemon status
58
58
  ```
59
59
 
60
+ > [!TIP]
61
+ > If `/bird` fails or routes to the wrong app, you may have another Slack app in the workspace with the same slash command. Remove or rename the duplicate from [api.slack.com/apps](https://api.slack.com/apps).
62
+
60
63
  ## Configuration
61
64
 
62
65
  The onboarding wizard handles initial setup. For manual configuration, copy the example config:
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: ${"44a214eeeb50c50b552a00a0ab672c9cd3458e99".substring(0, 7)}`);
126
- buildInfo.push(`built: 2026-03-03T01:15:47+04:00`);
125
+ buildInfo.push(`commit: ${"f081ab626328b4a00907de0601e2a81929c35567".substring(0, 7)}`);
126
+ buildInfo.push(`built: 2026-03-03T02:06:41+04:00`);
127
127
  const buildString = buildInfo.length > 0 ? ` (${buildInfo.join(", ")})` : "";
128
128
  const VERSION = `browserbird ${pkg.version}${buildString}`;
129
129
  const BIRD = [
@@ -2894,6 +2894,7 @@ function startScheduler(config, signal, deps) {
2894
2894
  agent,
2895
2895
  mcpConfigPath: config.browser.mcpConfigPath
2896
2896
  }, signal);
2897
+ if (payload.channelId) logMessage(payload.channelId, null, agent.id, "in", payload.prompt);
2897
2898
  let result = "";
2898
2899
  let completion;
2899
2900
  for await (const event of events) if (event.type === "text_delta") result += redact(event.delta);
@@ -2907,17 +2908,18 @@ function startScheduler(config, signal, deps) {
2907
2908
  }
2908
2909
  throw new Error(safeError);
2909
2910
  }
2911
+ if (completion && payload.channelId) logMessage(payload.channelId, null, agent.id, "out", result || void 0, completion.tokensIn, completion.tokensOut);
2910
2912
  if (!result) {
2911
2913
  logger.info(`bird ${shortUid(payload.cronJobUid)} completed (no output)`);
2912
2914
  return "completed (no output)";
2913
2915
  }
2914
2916
  if (payload.channelId && deps?.postToSlack) {
2917
+ await deps.postToSlack(payload.channelId, result);
2915
2918
  if (completion) {
2916
- const summary = result.length > 2800 ? result.slice(0, 2800) + "..." : result;
2917
- const blocks = sessionCompleteBlocks(completion, summary, agent.name);
2919
+ const blocks = sessionCompleteBlocks(completion, void 0, agent.name);
2918
2920
  const fallback = `Bird ${agent.name} completed: ${completion.numTurns} turns`;
2919
2921
  await deps.postToSlack(payload.channelId, fallback, { blocks });
2920
- } else await deps.postToSlack(payload.channelId, result);
2922
+ }
2921
2923
  logger.info(`bird ${shortUid(payload.cronJobUid)} result posted to ${payload.channelId}`);
2922
2924
  } else logger.info(`bird ${shortUid(payload.cronJobUid)} completed (${result.length} chars)`);
2923
2925
  return result;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owloops/browserbird",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "Self-hosted AI agent for Slack with a real browser, a scheduler, and a web dashboard",
5
5
  "type": "module",
6
6
  "bin": {