Re-introduces the Slack team advanced connection field on apps/slack/config.ts and apps/slackbot/config.ts that was reverted in #23427. Uses the new optionalAuthParam helper from @composiohq/auth-config@0.1.22 so the team query param is omitted from Slack's authorize URL when no team is staged.
The previous shape (#22425) compiled to team: '{{team}}' always — the (fields) => ({...}) callback ran at config-build time, where fields.team is the template placeholder '{{team}}' (always truthy). At runtime, the empty {{team}} resolved to an empty string and the URL emitted team=.
eval_fields covers Microsoft issuer (value substitution with a meaningful default) but cannot omit a query param entirely — that's the platform gap addressed by the hermes PR.
apps/slack/config.ts — adds team connection_field (advanced, optional, default ""); authorization_params.team = optionalAuthParam('{{team}}').apps/slackbot/config.ts — same.package.json — @composiohq/auth-config bumped from 0.1.20 to 0.1.22.The resulting config.json (verified locally via bun run auth-config/src/configToJson.ts):
"authorization_params": {
"response_type": "code",
"user_scopes": "admin",
"team": {
"type": "conditional",
"value": "{{team}}",
"include_when": "value_non_empty"
}
}
Microsoft re-rollout. The Microsoft eval_fields → auth_url_host mapping was correct in #22425 and works with the existing architecture — only Slack needed the new platform feature. Separate PR.
Blocked on ComposioHQ/hermes#9946 (the @composiohq/auth-config@0.1.22 release). Merge order:
mercury.registry.push for slack and slackbot to staging thermosteam=T0... when staged and no team= when notmake validate-config file=apps/slack/config.ts (against locally-overlaid 0.1.22 auth-config) — generates expected conditional shape in config.jsonapps/slackbot/config.tsmake validate-config against the real 0.1.22 packagemercury.registry.push to staging🤖 Generated with Claude Code