@spinabot/brigade 1.4.0 → 1.6.0

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 (136) hide show
  1. package/README.md +20 -1
  2. package/dist/agents/channels/bundled-channel-metas.d.ts +2 -0
  3. package/dist/agents/channels/bundled-channel-metas.d.ts.map +1 -1
  4. package/dist/agents/channels/bundled-channel-metas.js +11 -0
  5. package/dist/agents/channels/bundled-channel-metas.js.map +1 -1
  6. package/dist/agents/channels/manager.d.ts.map +1 -1
  7. package/dist/agents/channels/manager.js +18 -0
  8. package/dist/agents/channels/manager.js.map +1 -1
  9. package/dist/agents/channels/sdk.d.ts +2 -0
  10. package/dist/agents/channels/sdk.d.ts.map +1 -1
  11. package/dist/agents/channels/sdk.js +2 -0
  12. package/dist/agents/channels/sdk.js.map +1 -1
  13. package/dist/agents/channels/slack/account-config.d.ts +172 -0
  14. package/dist/agents/channels/slack/account-config.d.ts.map +1 -0
  15. package/dist/agents/channels/slack/account-config.js +353 -0
  16. package/dist/agents/channels/slack/account-config.js.map +1 -0
  17. package/dist/agents/channels/slack/account-registry.d.ts +45 -0
  18. package/dist/agents/channels/slack/account-registry.d.ts.map +1 -0
  19. package/dist/agents/channels/slack/account-registry.js +58 -0
  20. package/dist/agents/channels/slack/account-registry.js.map +1 -0
  21. package/dist/agents/channels/slack/adapter.d.ts +66 -0
  22. package/dist/agents/channels/slack/adapter.d.ts.map +1 -0
  23. package/dist/agents/channels/slack/adapter.js +547 -0
  24. package/dist/agents/channels/slack/adapter.js.map +1 -0
  25. package/dist/agents/channels/slack/approval-authorize.d.ts +43 -0
  26. package/dist/agents/channels/slack/approval-authorize.d.ts.map +1 -0
  27. package/dist/agents/channels/slack/approval-authorize.js +71 -0
  28. package/dist/agents/channels/slack/approval-authorize.js.map +1 -0
  29. package/dist/agents/channels/slack/approval-native.d.ts +70 -0
  30. package/dist/agents/channels/slack/approval-native.d.ts.map +1 -0
  31. package/dist/agents/channels/slack/approval-native.js +85 -0
  32. package/dist/agents/channels/slack/approval-native.js.map +1 -0
  33. package/dist/agents/channels/slack/blocks.d.ts +125 -0
  34. package/dist/agents/channels/slack/blocks.d.ts.map +1 -0
  35. package/dist/agents/channels/slack/blocks.js +145 -0
  36. package/dist/agents/channels/slack/blocks.js.map +1 -0
  37. package/dist/agents/channels/slack/command-menu.d.ts +44 -0
  38. package/dist/agents/channels/slack/command-menu.d.ts.map +1 -0
  39. package/dist/agents/channels/slack/command-menu.js +66 -0
  40. package/dist/agents/channels/slack/command-menu.js.map +1 -0
  41. package/dist/agents/channels/slack/connection.d.ts +422 -0
  42. package/dist/agents/channels/slack/connection.d.ts.map +1 -0
  43. package/dist/agents/channels/slack/connection.js +1042 -0
  44. package/dist/agents/channels/slack/connection.js.map +1 -0
  45. package/dist/agents/channels/slack/directory-live.d.ts +129 -0
  46. package/dist/agents/channels/slack/directory-live.d.ts.map +1 -0
  47. package/dist/agents/channels/slack/directory-live.js +148 -0
  48. package/dist/agents/channels/slack/directory-live.js.map +1 -0
  49. package/dist/agents/channels/slack/draft-stream.d.ts +93 -0
  50. package/dist/agents/channels/slack/draft-stream.d.ts.map +1 -0
  51. package/dist/agents/channels/slack/draft-stream.js +218 -0
  52. package/dist/agents/channels/slack/draft-stream.js.map +1 -0
  53. package/dist/agents/channels/slack/format.d.ts +41 -0
  54. package/dist/agents/channels/slack/format.d.ts.map +1 -0
  55. package/dist/agents/channels/slack/format.js +271 -0
  56. package/dist/agents/channels/slack/format.js.map +1 -0
  57. package/dist/agents/channels/slack/inbound-extras.d.ts +179 -0
  58. package/dist/agents/channels/slack/inbound-extras.d.ts.map +1 -0
  59. package/dist/agents/channels/slack/inbound-extras.js +257 -0
  60. package/dist/agents/channels/slack/inbound-extras.js.map +1 -0
  61. package/dist/agents/channels/slack/index.d.ts +15 -0
  62. package/dist/agents/channels/slack/index.d.ts.map +1 -0
  63. package/dist/agents/channels/slack/index.js +15 -0
  64. package/dist/agents/channels/slack/index.js.map +1 -0
  65. package/dist/agents/channels/slack/media.d.ts +90 -0
  66. package/dist/agents/channels/slack/media.d.ts.map +1 -0
  67. package/dist/agents/channels/slack/media.js +215 -0
  68. package/dist/agents/channels/slack/media.js.map +1 -0
  69. package/dist/agents/channels/slack/module.d.ts +26 -0
  70. package/dist/agents/channels/slack/module.d.ts.map +1 -0
  71. package/dist/agents/channels/slack/module.js +67 -0
  72. package/dist/agents/channels/slack/module.js.map +1 -0
  73. package/dist/agents/channels/slack/plugin.d.ts +69 -0
  74. package/dist/agents/channels/slack/plugin.d.ts.map +1 -0
  75. package/dist/agents/channels/slack/plugin.js +318 -0
  76. package/dist/agents/channels/slack/plugin.js.map +1 -0
  77. package/dist/agents/channels/slack/probe.d.ts +72 -0
  78. package/dist/agents/channels/slack/probe.d.ts.map +1 -0
  79. package/dist/agents/channels/slack/probe.js +103 -0
  80. package/dist/agents/channels/slack/probe.js.map +1 -0
  81. package/dist/agents/channels/slack/proxy-agent.d.ts +30 -0
  82. package/dist/agents/channels/slack/proxy-agent.d.ts.map +1 -0
  83. package/dist/agents/channels/slack/proxy-agent.js +44 -0
  84. package/dist/agents/channels/slack/proxy-agent.js.map +1 -0
  85. package/dist/agents/channels/slack/reasoning-lane.d.ts +42 -0
  86. package/dist/agents/channels/slack/reasoning-lane.d.ts.map +1 -0
  87. package/dist/agents/channels/slack/reasoning-lane.js +68 -0
  88. package/dist/agents/channels/slack/reasoning-lane.js.map +1 -0
  89. package/dist/agents/channels/slack/user-directory.d.ts +69 -0
  90. package/dist/agents/channels/slack/user-directory.d.ts.map +1 -0
  91. package/dist/agents/channels/slack/user-directory.js +94 -0
  92. package/dist/agents/channels/slack/user-directory.js.map +1 -0
  93. package/dist/agents/channels/slack/webhook.d.ts +89 -0
  94. package/dist/agents/channels/slack/webhook.d.ts.map +1 -0
  95. package/dist/agents/channels/slack/webhook.js +228 -0
  96. package/dist/agents/channels/slack/webhook.js.map +1 -0
  97. package/dist/agents/channels/telegram/adapter.d.ts.map +1 -1
  98. package/dist/agents/channels/telegram/adapter.js +10 -3
  99. package/dist/agents/channels/telegram/adapter.js.map +1 -1
  100. package/dist/agents/channels/telegram/connection.d.ts +10 -0
  101. package/dist/agents/channels/telegram/connection.d.ts.map +1 -1
  102. package/dist/agents/channels/telegram/connection.js +161 -5
  103. package/dist/agents/channels/telegram/connection.js.map +1 -1
  104. package/dist/agents/channels/telegram/format.d.ts +17 -0
  105. package/dist/agents/channels/telegram/format.d.ts.map +1 -1
  106. package/dist/agents/channels/telegram/format.js +53 -1
  107. package/dist/agents/channels/telegram/format.js.map +1 -1
  108. package/dist/agents/channels/telegram/inbound-extras.d.ts +17 -1
  109. package/dist/agents/channels/telegram/inbound-extras.d.ts.map +1 -1
  110. package/dist/agents/channels/telegram/inbound-extras.js +68 -7
  111. package/dist/agents/channels/telegram/inbound-extras.js.map +1 -1
  112. package/dist/agents/channels/telegram/media.d.ts +8 -0
  113. package/dist/agents/channels/telegram/media.d.ts.map +1 -1
  114. package/dist/agents/channels/telegram/media.js +30 -2
  115. package/dist/agents/channels/telegram/media.js.map +1 -1
  116. package/dist/agents/channels/telegram/webhook.d.ts.map +1 -1
  117. package/dist/agents/channels/telegram/webhook.js +7 -1
  118. package/dist/agents/channels/telegram/webhook.js.map +1 -1
  119. package/dist/agents/extensions/modules/index.d.ts.map +1 -1
  120. package/dist/agents/extensions/modules/index.js +5 -0
  121. package/dist/agents/extensions/modules/index.js.map +1 -1
  122. package/dist/agents/extensions/types.d.ts +11 -0
  123. package/dist/agents/extensions/types.d.ts.map +1 -1
  124. package/dist/agents/extensions/types.js.map +1 -1
  125. package/dist/buildstamp.json +1 -1
  126. package/dist/cli/commands/convex-cmd.d.ts +2 -1
  127. package/dist/cli/commands/convex-cmd.d.ts.map +1 -1
  128. package/dist/cli/commands/convex-cmd.js +79 -6
  129. package/dist/cli/commands/convex-cmd.js.map +1 -1
  130. package/dist/cli/program/build-program.js +1 -1
  131. package/dist/cli/program/build-program.js.map +1 -1
  132. package/dist/core/server.d.ts.map +1 -1
  133. package/dist/core/server.js +24 -5
  134. package/dist/core/server.js.map +1 -1
  135. package/package.json +4 -1
  136. package/scripts/convex-dev.mjs +28 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinabot/brigade",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Brigade — your personal AI crew",
5
5
  "homepage": "https://brigade.spinabot.com",
6
6
  "author": "Spinabot <hello@brigade-agent.ai>",
@@ -186,6 +186,8 @@
186
186
  "@grammyjs/transformer-throttler": "^1.2.1",
187
187
  "@grammyjs/types": "^3.21.0",
188
188
  "@mozilla/readability": "^0.6.0",
189
+ "@slack/socket-mode": "^2.0.7",
190
+ "@slack/web-api": "^7.17.0",
189
191
  "@whiskeysockets/baileys": "7.0.0-rc13",
190
192
  "cfonts": "^3.3.1",
191
193
  "chalk": "^5.3.0",
@@ -194,6 +196,7 @@
194
196
  "convex": "^1.40.0",
195
197
  "croner": "^10.0.1",
196
198
  "grammy": "^1.42.0",
199
+ "https-proxy-agent": "^7.0.6",
197
200
  "jiti": "^2.6.1",
198
201
  "json5": "^2.2.3",
199
202
  "linkedom": "^0.18.12",
@@ -15,7 +15,7 @@
15
15
  // logs/ — backend stderr captures
16
16
 
17
17
  import { spawn } from "node:child_process";
18
- import { mkdirSync, existsSync, writeFileSync, readFileSync } from "node:fs";
18
+ import { mkdirSync, existsSync, writeFileSync, readFileSync, unlinkSync } from "node:fs";
19
19
  import { randomBytes } from "node:crypto";
20
20
  import { createServer } from "node:http";
21
21
  import { readFile, stat } from "node:fs/promises";
@@ -24,7 +24,11 @@ import { fileURLToPath } from "node:url";
24
24
 
25
25
  const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
26
26
  const BIN_DIR = join(ROOT, "bin");
27
- const DATA_DIR = join(ROOT, ".convex-data");
27
+ // Honor the data dir the `brigade convex` command resolves + exports, so the
28
+ // pidfile (and all backend state) lands where `brigade convex stop` looks for
29
+ // it — whether launched via the CLI (global install → ~/.brigade/convex/data)
30
+ // or `npm run convex:dev` from a checkout (→ <root>/.convex-data, the default).
31
+ const DATA_DIR = process.env.BRIGADE_CONVEX_DATA_DIR?.trim() || join(ROOT, ".convex-data");
28
32
  const DASHBOARD_DIR = join(BIN_DIR, "dashboard");
29
33
  const BACKEND_BIN = join(BIN_DIR, process.platform === "win32" ? "convex-local-backend.exe" : "convex-local-backend");
30
34
 
@@ -136,6 +140,27 @@ const backend = spawn(BACKEND_BIN, [
136
140
  dbPath,
137
141
  ], { stdio: ["ignore", "pipe", "pipe"] });
138
142
 
143
+ // Record a pidfile so `brigade convex stop` can find and terminate this run.
144
+ // The orchestrator (this process) owns the dashboard server; the backend is
145
+ // its child — stop needs both pids. Removed in shutdown() below.
146
+ const PID_FILE = join(DATA_DIR, "convex.pid");
147
+ writeFileSync(
148
+ PID_FILE,
149
+ JSON.stringify(
150
+ {
151
+ orchestratorPid: process.pid,
152
+ backendPid: backend.pid,
153
+ host: BACKEND_HOST,
154
+ port: BACKEND_PORT,
155
+ sitePort: SITE_PROXY_PORT,
156
+ dashboardPort: DASHBOARD_PORT,
157
+ startedAt: new Date().toISOString(),
158
+ },
159
+ null,
160
+ 2,
161
+ ),
162
+ );
163
+
139
164
  backend.stdout.on("data", (b) => process.stdout.write(`\x1b[90m[backend]\x1b[0m ${b}`));
140
165
  backend.stderr.on("data", (b) => process.stderr.write(`\x1b[90m[backend]\x1b[0m ${b}`));
141
166
  backend.on("exit", (code) => {
@@ -308,6 +333,7 @@ function shutdown(code = 0) {
308
333
  if (shuttingDown) return;
309
334
  shuttingDown = true;
310
335
  console.log(`\n\x1b[36m▌ Stopping...\x1b[0m`);
336
+ try { unlinkSync(PID_FILE); } catch {}
311
337
  try { dashboardServer.close(); } catch {}
312
338
  try { backend.kill("SIGTERM"); } catch {}
313
339
  setTimeout(() => process.exit(code), 500);