Skip to content

feat(eve): add loadingMessages and suggestedPrompts to slackChannel#930

Open
bensabic wants to merge 2 commits into
feat/slack-oneventfrom
feat/slack-assistant-config
Open

feat(eve): add loadingMessages and suggestedPrompts to slackChannel#930
bensabic wants to merge 2 commits into
feat/slack-oneventfrom
feat/slack-assistant-config

Conversation

@bensabic

Copy link
Copy Markdown
Contributor

Stacked on #928 (feat/slack-onevent) — suggestedPrompts reuses its SlackEvent normalization. Retarget to main once that merges.

Adds two assistant-experience options to slackChannel, mirroring the Chat SDK Slack adapter's loadingMessages and suggestedPrompts config — implemented channel-side on eve's own pipeline (eve doesn't run the adapter runtime):

import { slackChannel } from "eve/channels/slack";

export default slackChannel({
  loadingMessages: ["Thinking...", "Digging through the archives..."],
  suggestedPrompts: {
    title: "Welcome! What can I do for you?",
    prompts: [
      { title: "Catch me up", message: "What did I miss today?" },
      { title: "Draft a message", message: "Help me draft a message" },
    ],
  },
});

suggestedPrompts also takes a resolver for per-user/per-open prompts:

suggestedPrompts: async ({ userId, channelId }) => ({
  prompts: [{ title: "My open PRs", message: `List open PRs for <@${userId}>` }],
}),

loadingMessages

Rotating typing-indicator statuses replacing the default "Thinking..." (inbound) and "Working..." (turn.started). eve already sends loading_messages to assistant.threads.setStatus — always as a single entry; SlackThread.startTyping now accepts a readonly string[] and passes the full set so Slack rotates through it. Progress statuses (reasoning snippets, action labels) still take over as the turn advances.

The default handlers are now built by exported factories (createDefaultInboundHandler, createDefaultTurnStarted); defaultOnAppMention / defaultOnDirectMessage / defaultEvents are unchanged aliases of the factories' defaults.

suggestedPrompts

Applied via assistant.threads.setSuggestedPrompts when a user opens the conversation. Both manifest modes are handled:

  • agent_view (current Agent messaging experience): triggered by app_home_opened with tab: "messages"; prompts render at the top of the Messages tab, no thread_ts sent.
  • assistant_view (legacy): triggered by assistant_thread_started; prompts render in the opened thread, targeted by thread_ts.

Prompts are capped at Slack's limit of four (extras dropped with a warning). Requires the assistant:write scope and a subscription to the relevant event. Failures are logged and swallowed — prompts are a UX nicety, never a reason to fail the webhook.

Effect on current behavior

  • Neither option configured: behavior is unchanged, including the exact setStatus payloads sent today.
  • loadingMessages applies only to the default inbound / turn.started handlers — supplying your own onAppMention, onDirectMessage, or events["turn.started"] replaces the typing behavior along with the handler, as before. An empty array is treated as unset.
  • suggestedPrompts handling runs on the webhook side under waitUntil() after event-id dedup, alongside (never instead of) onEvent; conversation-open events still never dispatch a turn.

Includes docs (new "Assistant threads" section in docs/channels/slack.mdx), 12 unit tests for the suggested-prompts module plus 7 channel wiring tests, public type exports (SlackSuggestedPrompt(s), context/input types), and a patch changeset.

Signed-off-by: Ben Sabic <bensabic@users.noreply.github.com>
@vercel

vercel Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
eve-docs Ready Ready Preview, Comment Jul 18, 2026 11:00pm
eve-docs-1644 Ready Ready Preview, Comment, Open in v0 Jul 18, 2026 11:00pm
eve-docs-4759 Ready Ready Preview, Comment, Open in v0 Jul 18, 2026 11:00pm

Request Review

@bensabic
bensabic requested review from AndrewBarba and ruiconti July 18, 2026 12:05
@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Bundle + Package Summary: apps/fixtures/weather-agent

Key takeaways

  • No notable deltas vs feat/slack-onevent (8d150f1).

Delta vs feat/slack-onevent (8d150f1)

Area Metric Baseline Current Delta
Package Packed tarball 3.73 MB 3.74 MB +3.5 kB ⚠️
Package Unpacked publish size 13.56 MB 13.57 MB +10.3 kB ⚠️
Package Installed footprint 52.68 MB 52.69 MB +10.3 kB ⚠️
Package Published files 2650 2652 +2
Package Installed files 5890 5892 +2
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 9.74 MB 9.74 MB -428 B ✅
Runtime Public routes 10 10 0
Changed function payloads vs feat/slack-onevent (8d150f1) (2)
Function Status Baseline Current Delta Route changes
functions/__server.func changed 3.47 MB 3.47 MB -214 B ✅ none
functions/.well-known/workflow/v1/flow.func changed 6.27 MB 6.27 MB -214 B ✅ none

eve init install

Metric Baseline Current Delta
Installed footprint 91.08 MB 91.09 MB +10.3 kB ⚠️
Installed packages 122 122 0
dependencies 4 4 0
devDependencies 2 2 0
Dependency package bytes 27.81 MB 27.82 MB +10.3 kB ⚠️
devDependency package bytes 5.04 MB 5.04 MB 0 B ➖
Build Metadata
  • Preset: vercel
  • Nitro: nitro@3.0.260610-beta
  • Output directory: apps/fixtures/weather-agent/.vercel/output
  • Build metadata timestamp: 2026-07-18T23:01:13.411Z
  • Route aliases: 10 public, 1 internal (11 total aliases)
  • Vercel routes in config: 11
  • Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down

Package Details

  • Package: eve@0.25.1
  • Package directory: packages/eve
  • Tarball: 3.74 MB (eve-0.25.1.tgz)
  • Unpacked payload: 13.57 MB across 2652 published files
  • Installed footprint: 52.69 MB across 5892 installed files
  • Installed root package: 12.30 MB
  • Installed dependencies: 40.39 MB
  • Runtime dependencies: 1
  • Peer dependencies: 5 (4 optional)

Installed footprint is measured from an isolated temporary npm install of the packed tarball.

Heavy installed dependencies

  • @rolldown/binding-linux-x64-gnu: 18.96 MB (36.0%)
  • eve: 12.30 MB (23.3%)
  • ai: 6.39 MB (12.1%)
  • zod: 5.04 MB (9.6%)
  • nitro: 2.41 MB (4.6%)
Publish payload breakdown
Published file size
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [####....................] 1.51 MB 11.1%
🟡 dist/src/compiled/@vercel/sandbox/index.js       [#.......................] 622.2 kB 4.6%
🟡 dist/src/compiled/_chunks/workflow/undici-fb5... [#.......................] 502.4 kB 3.7%
🟡 dist/src/compiled/@chat-adapter/slack/index.js   [#.......................] 433.7 kB 3.2%
🟡 dist/src/compiled/_chunks/workflow/dist-CSfKN... [#.......................] 277.8 kB 2.0%
🔴 Other published files                            [########################] 10.23 MB 75.4%
Installed footprint breakdown
Installed package size
🔴 @rolldown/binding-linux-x64-gnu [########################] 18.96 MB 36.0%
🔴 eve                             [################........] 12.30 MB 23.3%
🔴 ai                              [########................] 6.39 MB 12.1%
🔴 zod                             [######..................] 5.04 MB 9.6%
🟠 nitro                           [###.....................] 2.41 MB 4.6%
🟡 @ai-sdk/provider-utils          [#.......................] 847.6 kB 1.6%
🔴 Other installed packages        [#########...............] 6.74 MB 12.8%
Runtime dependencies (1)
Package Range Notes
nitro 3.0.260610-beta
Peer dependencies (5)
Package Range Notes
@opentelemetry/api ^1.0.0 optional peer
ai catalog:
braintrust ^3.0.0 optional peer
just-bash ^3.0.0 optional peer
microsandbox ^0.5.0 optional peer
eve init install drill-down

eve init install details

  • Command: eve init my-agent
  • Package manager: npm
  • Installed footprint: 91.09 MB across 7760 installed files
  • Installed packages: 122 total (116 transitive-only)
  • dependencies: 4 direct packages totaling 27.82 MB
  • devDependencies: 2 direct packages totaling 5.04 MB
  • Other transitive package files: 58.23 MB

Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.

Heavy installed dependencies

  • @typescript/typescript-linux-x64: 27.95 MB (30.7%)
  • @rolldown/binding-linux-x64-gnu: 18.96 MB (20.8%)
  • eve: 12.30 MB (13.5%)
  • zod: 9.00 MB (9.9%)
  • ai: 6.39 MB (7.0%)
Installed footprint breakdown
Installed package size
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 30.7%
🔴 @rolldown/binding-linux-x64-gnu  [################........] 18.96 MB 20.8%
🔴 eve                              [###########.............] 12.30 MB 13.5%
🔴 zod                              [########................] 9.00 MB 9.9%
🔴 ai                               [#####...................] 6.39 MB 7.0%
🟠 @types/node                      [##......................] 2.54 MB 2.8%
🔴 Other installed packages         [############............] 13.95 MB 15.3%
dependencies (4)
Package Range Installed size Share
@vercel/connect 0.4.0 135.4 kB 0.1%
ai ^7.0.26 6.39 MB 7.0%
eve file:eve-0.25.1.tgz 12.30 MB 13.5%
zod 4.4.3 9.00 MB 9.9%
devDependencies (2)
Package Range Installed size Share
@types/node 24.x 2.54 MB 2.8%
typescript 7.0.2 2.50 MB 2.7%
Function Drill-Down

Payload Size Graph

Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func     [########################] 6.27 MB 64.4%
🟠 functions/__server.func                         [#############...........] 3.47 MB 35.6%

Top Function Payloads

🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 6.27 MB
Metric Value
Public routes /.well-known/workflow/v1/flow
Runtime nodejs24.x
Handler index.mjs
Payload 6.27 MB
Function files 6.27 MB across 37 files
Traced dependencies 0 B
Signal 🟠 Bundled file __eve_nitro_handler__.mjs is 2.20 MB (35.0%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 __eve_nitro_handler__.mjs       [########################] 2.20 MB 35.0%
🟡 _chunks/world-vercel.mjs        [#########...............] 826.9 kB 13.2%
🟡 _chunks/sandbox.mjs             [########................] 754.9 kB 12.0%
🟡 _libs/@ai-sdk/gateway+[...].mjs [#####...................] 430.4 kB 6.9%
🟡 _libs/zod.mjs                   [####....................] 376.1 kB 6.0%
🟠 Other bundled files             [##################......] 1.68 MB 26.9%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x",
  "environment": {
    "NODE_OPTIONS": "--experimental-require-module"
  },
  "maxDuration": "max",
  "experimentalTriggers": [
    {
      "type": "queue/v2beta",
      "topic": "__eve776561746865722d6167656e74_wkf_workflow_*",
      "consumer": "default",
      "retryAfterSeconds": 5,
      "initialDelaySeconds": 0
    }
  ]
}

🟠 functions/__server.func • 9 public routes, 1 internal alias • 3.47 MB
Metric Value
Public routes /
/eve/v1/callback/[token]
/eve/v1/connections/[name]/callback/[token]
/eve/v1/health
/eve/v1/info
/eve/v1/session
/eve/v1/session/[sessionId]
/eve/v1/session/[sessionId]/cancel
/eve/v1/session/[sessionId]/stream
Internal aliases /__server
Runtime nodejs24.x
Handler index.mjs
Payload 3.47 MB
Function files 3.47 MB across 28 files
Traced dependencies 0 B
Signal 🟠 Bundled file _chunks/runtime-artifacts.mjs is 947.7 kB (27.3%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 _chunks/runtime-artifacts.mjs [########################] 947.7 kB 27.3%
🟠 _chunks/world-vercel.mjs      [#####################...] 823.9 kB 23.8%
🟠 _chunks/sandbox.mjs           [###################.....] 754.9 kB 21.8%
🟡 _chunks/dist-CSfKNxQW.mjs     [#########...............] 348.5 kB 10.0%
⚪ _libs/zod.mjs                 [###.....................] 114.2 kB 3.3%
🟡 Other bundled files           [############............] 478.8 kB 13.8%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x"
}

Build Timing: e2e/fixtures/agent-tools-sandbox

This is an informational timing measurement inside eve build, from preflight through publication. Output-size measurement and profile writing are excluded.

Build mode: deployable Vercel build with sandbox template prewarm included.

  • Build pipeline: 2.23 s -> 2.07 s (-155.3 ms) vs feat/slack-onevent (8d150f1).
  • Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `feat/slack-onevent (8d150f1)`
Phase Baseline Current Delta
extension.check 0.7 ms 8.0 ms +7.3 ms
project.resolve 0.4 ms 3.4 ms +3.0 ms
workspace.create 0.5 ms 1.1 ms +0.6 ms
host.prepare 410.4 ms 215.4 ms -195.0 ms
vercel.service-prefix.resolve 1.5 ms 1.6 ms +0.1 ms
nitro.app.create 18.2 ms 17.3 ms -0.9 ms
nitro.app.cache.prepare 0.2 ms 0.2 ms 0.0 ms
nitro.app.prepare 0.6 ms 0.6 ms 0.0 ms
nitro.app.public-assets 0.6 ms 0.6 ms 0.0 ms
nitro.app.prerender 0.4 ms 0.4 ms 0.0 ms
nitro.app.bundle 473.4 ms 470.7 ms -2.7 ms
nitro.app.cache.write 0.2 ms 0.2 ms 0.0 ms
sandbox.prewarm 271.1 ms 231.3 ms -39.8 ms
nitro.flow.create 134.6 ms 157.0 ms +22.4 ms
nitro.flow.cache.prepare 0.2 ms 0.2 ms 0.0 ms
nitro.flow.prepare 1.1 ms 0.5 ms -0.6 ms
nitro.flow.public-assets 0.1 ms 0.1 ms 0.0 ms
nitro.flow.prerender 0.0 ms 0.0 ms 0.0 ms
nitro.flow.bundle 745.9 ms 795.3 ms +49.4 ms
nitro.flow.cache.write 0.2 ms 0.2 ms 0.0 ms
nitro.flow.close 0.2 ms 0.2 ms 0.0 ms
workflow.emit 125.2 ms 131.2 ms +6.0 ms
agent-summary.emit 0.4 ms 0.4 ms 0.0 ms
nitro.app.close 0.0 ms 0.0 ms 0.0 ms
output.publish 36.7 ms 32.8 ms -3.9 ms
workspace.remove 4.4 ms 3.7 ms -0.7 ms

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