fix(config): remove lingering channel streamMode leaks (#60733)

This commit is contained in:
Vincent Koc
2026-04-04 16:14:38 +09:00
committed by GitHub
parent 644ed24ed8
commit 5c685eee9c
7 changed files with 142 additions and 93 deletions

View File

@@ -8820,22 +8820,6 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.accounts.*.streamMode",
"kind": "channel",
"type": "string",
"required": true,
"enumValues": [
"replace",
"status_final",
"append"
],
"defaultValue": "replace",
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.accounts.*.textChunkLimit",
"kind": "channel",
@@ -9491,22 +9475,6 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.streamMode",
"kind": "channel",
"type": "string",
"required": true,
"enumValues": [
"replace",
"status_final",
"append"
],
"defaultValue": "replace",
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.textChunkLimit",
"kind": "channel",
@@ -25708,6 +25676,26 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.trustedLocalFileRoots",
"kind": "channel",
"type": "array",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": true
},
{
"path": "channels.telegram.accounts.*.trustedLocalFileRoots.*",
"kind": "channel",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.webhookCertPath",
"kind": "channel",
@@ -28029,6 +28017,32 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.trustedLocalFileRoots",
"kind": "channel",
"type": "array",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"channels",
"network",
"storage"
],
"label": "Telegram Trusted Local File Roots",
"help": "Trusted local filesystem roots for self-hosted Telegram Bot API absolute file_path values. Only absolute paths inside these roots are read directly; all other absolute paths are rejected.",
"hasChildren": true
},
{
"path": "channels.telegram.trustedLocalFileRoots.*",
"kind": "channel",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.webhookCertPath",
"kind": "channel",

View File

@@ -36860,22 +36860,6 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.accounts.*.streamMode",
"kind": "channel",
"type": "string",
"required": true,
"enumValues": [
"replace",
"status_final",
"append"
],
"defaultValue": "replace",
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.accounts.*.textChunkLimit",
"kind": "channel",
@@ -37531,22 +37515,6 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.streamMode",
"kind": "channel",
"type": "string",
"required": true,
"enumValues": [
"replace",
"status_final",
"append"
],
"defaultValue": "replace",
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.googlechat.textChunkLimit",
"kind": "channel",
@@ -53748,6 +53716,26 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.trustedLocalFileRoots",
"kind": "channel",
"type": "array",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": true
},
{
"path": "channels.telegram.accounts.*.trustedLocalFileRoots.*",
"kind": "channel",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.accounts.*.webhookCertPath",
"kind": "channel",
@@ -56069,6 +56057,32 @@
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.trustedLocalFileRoots",
"kind": "channel",
"type": "array",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"channels",
"network",
"storage"
],
"label": "Telegram Trusted Local File Roots",
"help": "Trusted local filesystem roots for self-hosted Telegram Bot API absolute file_path values. Only absolute paths inside these roots are read directly; all other absolute paths are rejected.",
"hasChildren": true
},
{
"path": "channels.telegram.trustedLocalFileRoots.*",
"kind": "channel",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [],
"hasChildren": false
},
{
"path": "channels.telegram.webhookCertPath",
"kind": "channel",
@@ -65388,6 +65402,20 @@
"tags": [],
"hasChildren": true
},
{
"path": "plugins.entries.memory-core.config.dreaming.cron",
"kind": "plugin",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"automation"
],
"label": "Dreaming Cron",
"help": "Optional cron cadence override for managed dreaming runs.",
"hasChildren": false
},
{
"path": "plugins.entries.memory-core.config.dreaming.frequency",
"kind": "plugin",

View File

@@ -5743,6 +5743,20 @@
"tags": [],
"hasChildren": true
},
{
"path": "plugins.entries.memory-core.config.dreaming.cron",
"kind": "plugin",
"type": "string",
"required": false,
"deprecated": false,
"sensitive": false,
"tags": [
"automation"
],
"label": "Dreaming Cron",
"help": "Optional cron cadence override for managed dreaming runs.",
"hasChildren": false
},
{
"path": "plugins.entries.memory-core.config.dreaming.frequency",
"kind": "plugin",

View File

@@ -33,10 +33,6 @@ export const discordChannelConfigUiHints = {
label: "Discord Streaming Mode",
help: 'Unified Discord stream preview mode: "off" | "partial" | "block" | "progress". "progress" maps to "partial" on Discord. Legacy boolean/streamMode keys are auto-mapped.',
},
streamMode: {
label: "Discord Stream Mode (Legacy)",
help: "Legacy Discord preview mode alias (off | partial | block); auto-migrated to channels.discord.streaming.",
},
"draftChunk.minChars": {
label: "Discord Draft Chunk Min Chars",
help: 'Minimum chars before emitting a Discord stream preview update when channels.discord.streaming="block" (default: 200).',

View File

@@ -81,10 +81,6 @@ export const slackChannelConfigUiHints = {
label: "Slack Native Streaming",
help: "Enable native Slack text streaming (chat.startStream/chat.appendStream/chat.stopStream) when channels.slack.streaming is partial (default: true).",
},
streamMode: {
label: "Slack Stream Mode (Legacy)",
help: "Legacy Slack preview mode alias (replace | status_final | append); auto-migrated to channels.slack.streaming.",
},
"thread.historyScope": {
label: "Slack Thread History Scope",
help: 'Scope for Slack thread history context ("thread" isolates per thread; "channel" reuses channel history).',

View File

@@ -2899,10 +2899,6 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
label: "Discord Streaming Mode",
help: 'Unified Discord stream preview mode: "off" | "partial" | "block" | "progress". "progress" maps to "partial" on Discord. Legacy boolean/streamMode keys are auto-mapped.',
},
streamMode: {
label: "Discord Stream Mode (Legacy)",
help: "Legacy Discord preview mode alias (off | partial | block); auto-migrated to channels.discord.streaming.",
},
"draftChunk.minChars": {
label: "Discord Draft Chunk Min Chars",
help: 'Minimum chars before emitting a Discord stream preview update when channels.discord.streaming="block" (default: 200).',
@@ -4477,11 +4473,6 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
},
additionalProperties: false,
},
streamMode: {
default: "replace",
type: "string",
enum: ["replace", "status_final", "append"],
},
mediaMaxMb: {
type: "number",
exclusiveMinimum: 0,
@@ -4856,11 +4847,6 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
},
additionalProperties: false,
},
streamMode: {
default: "replace",
type: "string",
enum: ["replace", "status_final", "append"],
},
mediaMaxMb: {
type: "number",
exclusiveMinimum: 0,
@@ -4935,7 +4921,7 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
type: "string",
},
},
required: ["groupPolicy", "streamMode"],
required: ["groupPolicy"],
additionalProperties: false,
},
},
@@ -4943,7 +4929,7 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
type: "string",
},
},
required: ["groupPolicy", "streamMode"],
required: ["groupPolicy"],
additionalProperties: false,
},
},
@@ -11691,10 +11677,6 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
label: "Slack Native Streaming",
help: "Enable native Slack text streaming (chat.startStream/chat.appendStream/chat.stopStream) when channels.slack.streaming is partial (default: true).",
},
streamMode: {
label: "Slack Stream Mode (Legacy)",
help: "Legacy Slack preview mode alias (replace | status_final | append); auto-migrated to channels.slack.streaming.",
},
"thread.historyScope": {
label: "Slack Thread History Scope",
help: 'Scope for Slack thread history context ("thread" isolates per thread; "channel" reuses channel history).',
@@ -12713,6 +12695,14 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
type: "string",
format: "uri",
},
trustedLocalFileRoots: {
description:
"Trusted local filesystem roots for self-hosted Telegram Bot API absolute file_path values. Only absolute paths under these roots are read directly; all other absolute paths are rejected.",
type: "array",
items: {
type: "string",
},
},
autoTopicLabel: {
anyOf: [
{
@@ -13716,6 +13706,14 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
type: "string",
format: "uri",
},
trustedLocalFileRoots: {
description:
"Trusted local filesystem roots for self-hosted Telegram Bot API absolute file_path values. Only absolute paths under these roots are read directly; all other absolute paths are rejected.",
type: "array",
items: {
type: "string",
},
},
autoTopicLabel: {
anyOf: [
{
@@ -13816,6 +13814,10 @@ export const GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA = [
label: "Telegram API Root URL",
help: "Custom Telegram Bot API root URL. Use for self-hosted Bot API servers (https://github.com/tdlib/telegram-bot-api) or reverse proxies in regions where api.telegram.org is blocked.",
},
trustedLocalFileRoots: {
label: "Telegram Trusted Local File Roots",
help: "Trusted local filesystem roots for self-hosted Telegram Bot API absolute file_path values. Only absolute paths inside these roots are read directly; all other absolute paths are rejected.",
},
autoTopicLabel: {
label: "Telegram Auto Topic Label",
help: "Auto-rename DM forum topics on first message using LLM. Default: true. Set to false to disable, or use object form { enabled: true, prompt: '...' } for custom prompt.",

View File

@@ -800,7 +800,6 @@ export const GoogleChatAccountSchema = z
chunkMode: z.enum(["length", "newline"]).optional(),
blockStreaming: z.boolean().optional(),
blockStreamingCoalesce: BlockStreamingCoalesceSchema.optional(),
streamMode: z.enum(["replace", "status_final", "append"]).optional().default("replace"),
mediaMaxMb: z.number().positive().optional(),
replyToMode: ReplyToModeSchema.optional(),
actions: z