* 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
* 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>
* 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>
* 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>
* 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
* 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>