Skip to content

fix(slack): las herramientas de Slack aceptan las marcas de tiempo como texto y ya no rechazan el historial ni los hilos - #40

Merged
fforres merged 1 commit into
skywardfrom
fforres/slack-timestamps-as-strings
Oct 30, 2026
Merged

fforres merged 1 commit into
skywardfrom
fforres/slack-timestamps-as-strings

Conversation

@fforres

@fforres fforres commented Oct 30, 2026

Copy link
Copy Markdown

Qué cambia

Las herramientas de Slack ya no rechazan latest, oldest, ts, thread_ts y otros *_ts con `Instance type "string" is invalid. Expected "number"`. Leer el historial de un canal o un hilo con marcas de tiempo reales (por ejemplo 1793135656.414489) vuelve a funcionar por invoke.

Causa

La especificación publicada de Slack declara esas entradas como number, pero las marcas de tiempo de Slack son texto y un número perdería precisión. El validador de argumentos de invoke aplicaba ese tipo. Dentro de execute no fallaba porque ahí no se valida contra el esquema.

El adaptador de Slack (providers/slack) ahora reescribe a string las entradas de petición (parámetros y cuerpo) cuyo nombre es ts, latest, oldest o *_ts y que son number, y quita default/minimum/maximum/format numéricos. Las respuestas no se tocan. Las integraciones ya creadas guardan la especificación vieja: hay que refrescarla (updateSpec) para que el cambio aplique.

Cómo se probó (emulador)

  • Prueba unitaria del adaptador (primero en rojo, luego en verde): packages/plugins/openapi/src/providers/slack/spec-format-adapter.test.ts.
  • Prueba de extremo a extremo packages/hosts/mcp/src/slack-timestamps.test.ts: emulador local de Slack (@executor-js/emulate), la especificación publicada con tipos number pasada por el adaptador, un ejecutor real con el plugin OpenAPI y la herramienta MCP invoke. Lee historial e hilo con marcas de tiempo como texto y recibe los mensajes. Con la corrección desactivada falla con el mismo error Expected "number".
  • El emulador solo acepta POST, así que la prueba usa operaciones POST con cuerpo; los parámetros de consulta quedan cubiertos por la prueba unitaria.

@fforres
fforres merged commit d6b7d5d into skyward Oct 30, 2026
4 of 40 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant