Sohom Sahaun
1e69c12b64
feat(slack): interactive Block Kit model picker for /model
...
Cherry-picked from PR #101542 by @sohomsahaun.
Two-step drill-down: provider static_select → model static_select,
with Back/Cancel buttons. Resolves through the same gateway callback
as Discord/Telegram, so persistence and failed-switch rollback
semantics come for free.
Changes:
- send_model_picker() posts Block Kit provider/model picker via chat_postMessage
- _handle_model_picker_action() dispatches provider/model/back/cancel actions
- _model_picker_state bounded dict (cap=100, workspace-scoped keys)
- Expired-state UX: missing state rewrites message to expiry notice
- Failure header: both exception and gateway error-prefix get 'Failed' header
- Index-based option values avoid Slack's 75-char value cap
- 21 tests covering send, action dispatch, gateway integration
Co-authored-by: Sohom Sahaun <ssahaun19@gmail.com >
2026-09-05 11:05:17 +05:30
..
2026-07-05 06:29:26 -07:00
2026-09-05 11:05:17 +05:30
2026-09-04 15:41:27 -03:00
2026-09-03 13:12:50 -07:00
2026-09-02 19:21:46 -07:00
2026-09-04 02:12:35 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 19:21:46 -07:00
2026-09-03 13:46:50 -07:00
2026-09-02 19:21:46 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:21:46 -07:00
2026-09-02 20:13:08 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 22:42:55 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:21:46 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 00:09:14 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:46:50 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:48:14 -07:00
2026-09-03 13:48:14 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 19:21:46 -07:00
2026-09-02 19:21:46 -07:00
2026-09-02 19:21:46 -07:00
2026-09-02 19:21:46 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 19:21:46 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 20:13:08 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:12:50 -07:00
2026-09-02 16:11:50 -07:00
2026-09-03 14:00:59 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 14:00:59 -07:00
2026-09-03 13:30:27 -07:00
2026-09-04 15:41:27 -03:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 14:00:59 -07:00
2026-09-03 13:20:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 21:14:22 -07:00
2026-09-04 15:41:27 -03:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:21:38 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:46:50 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 13:46:50 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 10:00:07 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 13:49:57 -07:00
2026-09-03 14:00:59 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 13:46:50 -07:00
2026-09-04 00:15:16 -07:00
2026-09-03 17:13:22 -07:00
2026-09-02 21:14:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-02 19:19:38 -07:00
2026-09-02 19:52:43 -07:00
2026-09-03 09:44:26 -07:00
2026-09-04 00:15:16 -07:00
2026-09-04 00:15:16 -07:00
2026-09-02 20:24:52 -07:00
2026-09-03 13:20:22 -07:00
2026-09-03 17:13:22 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 13:12:50 -07:00
2026-09-03 09:44:26 -07:00
2026-09-03 08:16:44 -07:00