Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions charts/openab/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,10 @@ data:
{{- if and (hasKey ($cfg.slack | default dict) "assistantMode") (not ($cfg.slack).assistantMode) }}
assistant_mode = false
{{- end }}
{{- /* streaming: master switch; false → send-once (no native, no post+edit) */ -}}
{{- if and (hasKey ($cfg.slack | default dict) "streaming") (not ($cfg.slack).streaming) }}
streaming = false
{{- end }}
{{- end }}

[agent]
Expand Down Expand Up @@ -176,6 +180,10 @@ data:
{{- end }}
tool_display = {{ ($cfg.reactions).toolDisplay | toJson }}
{{- end }}
{{- /* narrationDisplay: true → keep inter-tool narration in send-once (default false → final answer block only) */ -}}
{{- if ($cfg.reactions).narrationDisplay }}
narration_display = true
{{- end }}
{{- if ($cfg.stt).enabled }}
{{- if not ($cfg.stt).apiKey }}
{{ fail (printf "agents.%s.stt.apiKey is required when stt.enabled=true" $name) }}
Expand Down
46 changes: 46 additions & 0 deletions charts/openab/tests/configmap_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,49 @@ tests:
- notMatchRegex:
path: data["config.toml"]
pattern: 'assistant_mode'

- it: renders slack streaming = false when explicitly disabled
set:
agents.kiro.slack.enabled: true
agents.kiro.slack.botToken: xoxb-x
agents.kiro.slack.appToken: xapp-y
agents.kiro.slack.streaming: false
asserts:
- matchRegex:
path: data["config.toml"]
pattern: 'streaming = false'

- it: does not render slack streaming when enabled (Rust default true)
set:
agents.kiro.slack.enabled: true
agents.kiro.slack.botToken: xoxb-x
agents.kiro.slack.appToken: xapp-y
agents.kiro.slack.streaming: true
asserts:
- notMatchRegex:
path: data["config.toml"]
pattern: 'streaming = '

- it: renders reactions narration_display = true when explicitly enabled
set:
agents.kiro.reactions.narrationDisplay: true
asserts:
- matchRegex:
path: data["config.toml"]
pattern: 'narration_display = true'

- it: does not render reactions narration_display when off (Rust default false)
set:
agents.kiro.reactions.narrationDisplay: false
asserts:
- notMatchRegex:
path: data["config.toml"]
pattern: 'narration_display = '

- it: does not render reactions narration_display when key absent (Rust default false)
set:
agents.kiro.reactions.enabled: true
asserts:
- notMatchRegex:
path: data["config.toml"]
pattern: 'narration_display = '
11 changes: 11 additions & 0 deletions charts/openab/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,12 @@ agents:
# AI app with the `assistant:write` scope (plus chat:write). Default: true — set to
# false for non-AI Slack apps (without assistant:write) to keep emoji-reaction status.
assistantMode: true
# streaming: master switch for live reply streaming. Default true. Set
# false to always post a single final message (send-once) — no native
# streaming, no post+edit placeholder — regardless of assistantMode.
# Useful in multi-agent threads to avoid streamed-message edit states
# re-firing app_mention.
streaming: true
# allowAllChannels/allowAllUsers: same auto-infer logic as discord
allowedChannels: [] # empty + no allowAllChannels → allow all (auto-inferred)
allowedUsers: [] # empty + no allowAllUsers → allow all (auto-inferred)
Expand Down Expand Up @@ -346,6 +352,11 @@ agents:
# compact: show count summary (e.g. ✅ 3 · 🔧 1 tool(s))
# full: show complete tool titles (for debugging)
# none: hide tool lines entirely
# narrationDisplay: default false. In send-once mode, deliver ONLY the final
# answer block (text after the last tool call); inter-tool narration is
# dropped. Set true to keep the full text. Platform-agnostic (Slack
# streaming=false, multi-bot threads, gateway). No effect while streaming.
# narrationDisplay: false
stt:
enabled: false
apiKey: ""
Expand Down
11 changes: 11 additions & 0 deletions config.toml.example
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ allowed_channels = ["1234567890"] # ↑ omitted + non-empty list → auto-
# # post+edit + emoji reactions. Requires the Slack app to be
# # an AI app with the `assistant:write` scope (plus chat:write).
# # Set false for non-AI Slack apps to keep emoji reactions.
# streaming = true # default true: stream the reply live (native or post+edit).
# # Set false to always post a single final message (send-once),
# # regardless of assistant_mode — useful in multi-agent threads
# # to avoid streamed-edit states re-firing app_mention.
# # What a send-once message *contains* is controlled by [reactions] narration_display.

# [gateway]
# url = "ws://openab-gateway:8080/ws" # WebSocket URL of the custom gateway
Expand Down Expand Up @@ -172,6 +177,12 @@ remove_after_reply = false
# # Controls how tool calls appear in the final message.
# # Applies to both assistant_mode and post+edit mode.
# # Set "none" to hide the tool summary entirely.
# narration_display = false # default false: in send-once mode, deliver ONLY the final
# # answer block (text after the last tool call); inter-tool
# # narration ("let me check… / now reading X") is dropped.
# # Set true to keep the full text. Platform-agnostic (Slack
# # streaming=false, multi-bot threads, gateway). No effect
# # while streaming — streamed text is shown live as produced.

[reactions.emojis]
queued = "👀"
Expand Down
Loading
Loading