Commit Graph

71 Commits

Author SHA1 Message Date
github-actions[bot] 0ab742c62d Version Packages (#133)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-04 00:32:57 -08:00
Nicolás Montone f0c7050349 add member_joined_channel event support to Slack adapter (#167)
* Add member_joined_channel event support to Slack adapter

* changset

* Apply suggestion from @NicolasMontone

* fix
2026-03-03 16:24:40 -08:00
Malte Ubl 02e7ef605c Implement markdown and AST rendering for tables across adapters (#160)
* Implement markdown and AST rendering for tables across adapters

* Render the default instead

* Fix bot app

* lint

* streaming-rendering

* fix-streaming

* fix-streaming-agent

* fix-streaming-again2

* fix-streaming-again3

* prefix tests

* no final edit

* changeset

* feedback

* lint

* Copilot feedback
2026-03-03 09:43:18 -08:00
Hayden Bleasel 73de82dbef Add remend for streaming markdown healing (#163)
* Add remend

* Create sixty-wasps-hope.md

* feat: wrap message content in markdown objects (#164)

Update 'fallbackStream' and 'handleStream' to send '{ markdown: string }'. Adjust tests for '{ markdown: string }'.

Slack-Thread: https://vercel.slack.com/archives/C08077A6JDB/p1772491650055389?thread_ts=1772491650.055389&cid=C08077A6JDB

Co-authored-by: v0 <v0[bot]@users.noreply.github.com>

---------

Co-authored-by: v0 <v0[bot]@users.noreply.github.com>
2026-03-03 07:59:58 -08:00
Timo Lins 24532a715c [Telegram] Enable Telegram auto/polling mode for local bots without public webhooks (#141)
* Add Telegram auto mode polling and init username fallback

* Expose Telegram resetWebhook API

* Refine Telegram API to longPolling and safer auto mode

* Fix: Environment variable cleanup sets `process.env.VERCEL` to the string `"undefined"` (truthy) instead of removing it, leaking a truthy VERCEL env var into subsequent tests.

This commit fixes the issue reported at packages/adapter-telegram/src/index.test.ts:661

**Bug explanation:**

In the test "auto mode stays in webhook mode on serverless runtime" (line 622), the cleanup code in the `finally` block at line 662 uses `process.env.VERCEL = undefined` when the env var wasn't previously set. In Node.js, `process.env` coerces all values to strings, so `process.env.VERCEL = undefined` actually sets `process.env.VERCEL` to the string `"undefined"`. This is truthy (`Boolean("undefined")` === `true`).

This was verified empirically:
```
process.env.TEST_VAR = undefined;
typeof process.env.TEST_VAR  // "string"
process.env.TEST_VAR         // "undefined"  
Boolean(process.env.TEST_VAR) // true
```

The consequence is that after this test runs, `process.env.VERCEL` remains set to the truthy string `"undefined"`, causing `isLikelyServerlessRuntime()` to return `true` for all subsequent tests that run in the same process. This could cause any auto-mode tests that follow to incorrectly detect a serverless runtime and behave differently than expected.

**Fix explanation:**

Changed `process.env.VERCEL = undefined` to `delete process.env.VERCEL`, which properly removes the environment variable from `process.env`. After `delete`, `process.env.VERCEL` is `undefined` (the actual undefined value, not the string), and `Boolean(process.env.VERCEL)` correctly returns `false`. This matches the standard pattern for cleaning up environment variables in Node.js tests.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Co-authored-by: timolins <me@timo.sh>

* Fix lint: replace delete env cleanup with Reflect.deleteProperty

* Harden Telegram polling tests and polish polling docs

* Improve Telegram polling docs with clearer motivation and examples

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:08:00 +01:00
Hayden Bleasel da7e05d521 Fix Discord reaction events missing thread context (#158)
* Initial fix

* Add tests

* Create cute-nights-send.md

* Misc improvements
2026-03-02 13:44:00 -08:00
Peter Clement f01b92fec4 Ensure handling of Discord slash commands (#152)
* Correctly handle discord slash commands

* chore: remove unintended bot.tsx formatting churn

* tidy up

* Expand subcommand path into event.command

* Fix race condition

* Run fix

* Fix duplicate slash-context check

* Fix integration test mock

* Run fix

* Update docs

---------

Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
2026-03-02 13:21:25 -08:00
Hayden Bleasel f6d56ea903 Fix Discord thread channel ID for reactions and delete (#135)
* Update index.ts

* Create sour-sheep-fry.md
2026-03-02 13:13:42 -08:00
handlebauer 9522b04243 feat(chat, adapter-gchat, adapter-discord): add disabled prop to Button (#150)
* feat(chat, adapter-gchat): add disabled prop to Button

Google Chat Cards v2 natively supports `disabled` on buttons, but
`ButtonOptions` / `ButtonElement` didn't expose it. Add the prop to
the core type and thread it through the gchat adapter serializer.

Closes #149

Made-with: Cursor

* feat(adapter-discord): thread disabled prop through Discord button serializer

DiscordButton already had `disabled` in its type but convertButtonElement
never set it from ButtonElement. Wire it through so disabled buttons
render correctly on Discord too.

Made-with: Cursor
2026-03-02 12:39:16 -08:00
Cristoper Anderson 981650aa08 fix(teams): avoid ESM directory import for graph auth provider (#121)
* fix(teams): avoid ESM directory import for graph auth provider

* Create fix-esm-directory-import.md

* Create ESM import test

---------

Co-authored-by: Penguinistrator <cipher416@users.noreply.github.com>
Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
2026-02-28 20:25:20 -08:00
Vincenzo Domina f5a75c9680 feat(chat): allow disabling fallback streaming placeholder (#139)
* feat(chat): allow disabling fallback streaming placeholder

Add ChatConfig options to delay initial post+edit placeholder and wait for real text before creating the streamed message. Improves ordering for Telegram and other fallback-streaming adapters.

Made-with: Cursor

* fix(chat): simplify fallback streaming placeholder

* Create fallback-streaming-placeholder.md

* Improve test

* Add new test

* Run fix

* Update streaming.mdx

---------

Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
2026-02-28 19:18:37 -08:00
TRACTION 1a37385556 fix(discord): add Partials.Channel to gateway client for DM support (#128)
* fix(discord): add Partials.Channel to gateway client for DM support

The gateway client requests DirectMessages intent but doesn't include `Partials.Channel`, which discord.js requires to emit DM events. Without it, all DM `MessageCreate` events are silently dropped.

Signed-off-by: TRACTION <19631364+iamtraction@users.noreply.github.com>

* Create fix-discord-dm-partials.md

* Create gateway.test.ts

* Run fix

---------

Signed-off-by: TRACTION <19631364+iamtraction@users.noreply.github.com>
Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
2026-02-28 18:58:35 -08:00
Rihan Arfan 32b17d9370 refactor: replace broad googleapis dependency with specific packages (#29)
* refactor: replace broad googleapis dependency with specific packages

* fix: reorder imports in gchat adapter

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Create tidy-groups-marry.md

---------

Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:49:04 -08:00
github-actions[bot] 6ef8816a55 Version Packages (#100)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-26 15:07:23 -08:00
Vishal Yathish f0cfcfa9e3 [chat] add changeset for bugfix (#126) 2026-02-26 14:27:52 -08:00
Tobias Lins 0c688a0111 Add support for telegram bot (#90)
* Add support for telegram bot

* Add support for action buttons in telegram

* Use markdown parse mode

* Add more tests

* Fix linting issues

* Fixes

* Fixes

* Don't reverse order messages for AI and always answer for telegram

* Add telegram integration test

* Update telegram.json
2026-02-26 14:10:41 -08:00
Nicolás Montone 5b3090a7a6 add CardLink Element (#109) 2026-02-25 08:05:30 -08:00
Nicolás Montone 0f8503198b chat: make message dedup TTL configurable and update default ttl to 5min. (#101)
* feat(chat): make message dedup TTL configurable to prevent Slack retry duplicates

* changeset

* fix

* bump default to 5 min

* fix

* Fix: Test, JSDoc, and README all reference the old default dedupe TTL of 60,000ms after the constant was changed to 300,000ms (5 minutes), causing test failure.


This commit fixes the issue reported at packages/chat/src/chat.test.ts:140

**Bug:**

The `DEDUPE_TTL_MS` constant in `packages/chat/src/chat.ts` line 51 was changed from `60_000` (60 seconds) to `5 * 60 * 1000` (300,000 ms = 5 minutes). However, three other locations were not updated to match:

1. **Test (`chat.test.ts` line 140):** The test "should use default dedupe TTL of 60 seconds" asserts that `mockState.set` is called with `60_000` as the TTL. Since the actual code now uses `300_000`, the test fails — confirmed by running the test suite which shows 1 failed test: expected `60000` but received `300000`.

2. **JSDoc (`types.ts` line 40):** The documentation comment says "Defaults to 60000 (60 seconds)" which is incorrect — it's now 300000 (5 minutes).

3. **README.md (line 52):** The Configuration table lists the default as `60000` which is now wrong.

**Evidence:** Running `npx vitest run` shows 1 test failure out of 443 tests. After applying the fix, all 443 tests pass.

**Fix:**

1. Updated the test in `chat.test.ts`: Changed the test description from "60 seconds" to "5 minutes" and the expected value from `60_000` to `300_000`.
2. Updated the JSDoc in `types.ts`: Changed "Defaults to 60000 (60 seconds)" to "Defaults to 300000 (5 minutes)".
3. Updated the README.md: Changed the default value in the Configuration table from `60000` to `300000`.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Co-authored-by: NicolasMontone <montonenicolas01@gmail.com>

* fix

---------

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
2026-02-24 17:05:30 -08:00
Malte Ubl 39888ce38d Fix teams bundling under strict ESM (#99) 2026-02-24 15:10:11 -08:00
github-actions[bot] 18b540a9cc Version Packages (#95)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-24 15:18:11 -05:00
Vishal Yathish 90dc3251a5 [slack] add support for typing indicators with custom loading states (#87)
* [slack] add support for typing indicators with custom loading states

* adjust docs

* add changeset

* adjust

* remove

* minor bugfix

* add to example
2026-02-24 12:12:47 -08:00
Matthew Lewis ef6f370596 changeset (#93) 2026-02-24 15:07:43 -05:00
github-actions[bot] 7fb3248a31 Version Packages (#89)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-23 19:12:59 -08:00
Hayden Bleasel 716ce2a8a0 Create loose-mammals-unite.md 2026-02-23 18:59:52 -08:00
Hayden Bleasel f266dcf897 Create lemon-pigs-take.md 2026-02-23 18:59:08 -08:00
github-actions[bot] 6d38779543 Version Packages (#86)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-23 14:29:17 -08:00
Vishal Yathish ce33270722 [chat] add currentMessage to serialized thread (#85)
* [chat] add currentMessage to serialized thread

* documentation

* remove

* changeset
2026-02-23 14:11:04 -08:00
github-actions[bot] 1b23565262 Version Packages (#84)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-22 19:40:32 -08:00
Hayden Bleasel 7d00febfcd Create stale-chairs-fetch.md 2026-02-22 19:28:57 -08:00
Hayden Bleasel e970a6939b Upgrade Biome configuration to use Ultracite preset (#81)
* Upgrade Biome to Ultracite

* Remove package commands

* Update biome.jsonc

* Update biome.jsonc

* Initial fixes

* Update biome.jsonc

* Remaining fixes

* Update pnpm-lock.yaml

* Fix commands

* Update knip.json

* Merge Claude files

* Fix skipped test

* Misc fixes
2026-02-20 22:01:10 -08:00
github-actions[bot] 4768add423 Version Packages (#72)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-20 11:21:15 -08:00
John Pham 09cdfa3f4b fix(slack,gchat): convert **bold** to *bold* in Card text blocks (#71)
* fix(slack): convert **bold** to *bold* in Card text blocks

Slack mrkdwn uses single asterisks for bold, not double.
CardText content with standard Markdown was rendering
literally instead of as bold. Applied conversion in
convertTextToBlock and convertFieldsToBlock.

* fix(gchat): convert **bold** to *bold* in Card text blocks
test(slack,gchat): add comprehensive markdown bold conversion tests

* fix: biome formatting in cards test

* add changeset

* fix: biome formatting in gchat cards test
2026-02-20 11:04:21 -08:00
github-actions[bot] 10a9b4bf9a Version Packages (#70)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-19 16:27:02 -08:00
John Pham f371c0d951 feat(slack): add assistant_thread_started event support (#54)
* feat(slack): full Slack Assistants API support

- Route assistant_thread_started + assistant_thread_context_changed
- Add onAssistantThreadStarted + onAssistantContextChanged handlers
- Add setSuggestedPrompts, setAssistantStatus, setAssistantTitle methods
- Extend stream() for Block Kit on stop (stopBlocks)
- Bump @slack/web-api to ^7.11.0 for chatStream
- 14 integration tests

* fix: pass waitUntil to assistant thread started handlers
2026-02-19 16:18:05 -08:00
github-actions[bot] c0c0b1ec6f Version Packages (#53)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-18 11:40:12 -08:00
Vishal Yathish 8c50252d00 [chat] add support for slash commands (#50)
* [chat] add support for slash commands

* add comprehensive tests

* add documentation

* adding changeset
2026-02-18 08:32:44 -08:00
github-actions[bot] 5a7a925983 Version Packages (#48)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-15 17:25:51 -08:00
Vishal Yathish 417374b844 [chat] add inline select components (#45)
* [chat] add inline select components

* changeset

* adding radio buttons

* adding unit tests

* add documentation for the new components

* add replay tests
2026-02-15 17:18:53 -08:00
github-actions[bot] 25bf3765fd Version Packages (#44)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-14 21:53:20 -08:00
Vishal Yathish c99b183b19 [chat] add changeset for modals from ephemeral messages (#43) 2026-02-14 21:46:37 -08:00
github-actions[bot] b670cb18b6 Version Packages (#41)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-14 17:23:32 -08:00
Nicolás Montone c7d51cb8f4 add support for privatemetadata in slack adapter (#40)
* add private metadata in chat adapter

* add test on jsx runtime

* changeset
2026-02-14 17:17:03 -08:00
github-actions[bot] 34cb4cd0da Version Packages 2026-02-12 21:34:50 +00:00
John Pham 18ce1d070e Exclude actions from card fallback text
Action buttons (e.g. Cancel) were showing as [Cancel] in Slack
notification previews. The fallback text field powers notifications
and screen readers where buttons aren't actionable — strip them.
2026-02-12 10:45:04 -08:00
github-actions[bot] 5d9ce3044d Version Packages 2026-02-10 02:17:57 +00:00
Nicolás Montone 8979049189 changeset 2026-02-09 17:53:03 -08:00
github-actions[bot] 37783fa1a5 Version Packages 2026-02-06 20:20:05 +00:00
John Pham ba2a9ca1dd add changeset for slack mention fix 2026-02-06 10:51:14 -08:00
Fernando Rojo cca98675ae changeset 2026-02-06 12:41:55 -05:00
github-actions[bot] a49a7f0b18 Version Packages (#26)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-23 22:41:41 -08:00