thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> ChatStream:
"""Stream markdown text into a conversation.
@@ -10712,6 +10737,8 @@
Methods
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -10737,6 +10764,7 @@
The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+
task_display_mode
+
Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+interleaved with text and "plan" displays all tasks together.
**kwargs
Additional arguments passed to the underlying API calls.
class PlanBlock(Block):
+ type = "plan"
+
+ @property
+ def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union(
+ {
+ "plan_id",
+ "title",
+ "tasks",
+ }
+ )
+
+ def __init__(
+ self,
+ *,
+ plan_id: str,
+ title: str,
+ tasks: Optional[Sequence[Union[Dict, TaskCardBlock]]] = None,
+ block_id: Optional[str] = None,
+ **others: dict,
+ ):
+ """A collection of related tasks.
+ https://docs.slack.dev/reference/block-kit/blocks/plan-block/
+
+ Args:
+ block_id: A string acting as a unique identifier for a block. If not specified, one will be generated.
+ Maximum length for this field is 255 characters.
+ block_id should be unique for each message and each iteration of a message.
+ If a message is updated, use a new block_id.
+ plan_id (required): ID for the plan (May be removed / made optional, feel free to pass in a random UUID
+ for now)
+ title (required): Title of the plan in plain text
+ tasks: Details of the task in the form of a single "rich_text" entity.
+ """
+ super().__init__(type=self.type, block_id=block_id)
+ show_unknown_key_warning(self, others)
+
+ self.plan_id = plan_id
+ self.title = title
+ self.tasks = tasks
A string acting as a unique identifier for a block. If not specified, one will be generated.
+Maximum length for this field is 255 characters.
+block_id should be unique for each message and each iteration of a message.
+If a message is updated, use a new block_id.
+
plan_id : required
+
ID for the plan (May be removed / made optional, feel free to pass in a random UUID
+for now)
+
title : required
+
Title of the plan in plain text
+
tasks
+
Details of the task in the form of a single "rich_text" entity.
class TaskCardBlock(Block):
+ type = "task_card"
+
+ @property
+ def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union(
+ {
+ "task_id",
+ "title",
+ "details",
+ "output",
+ "sources",
+ "status",
+ }
+ )
+
+ def __init__(
+ self,
+ *,
+ task_id: str,
+ title: str,
+ details: Optional[Union[RichTextBlock, dict]] = None,
+ output: Optional[Union[RichTextBlock, dict]] = None,
+ sources: Optional[Sequence[Union[UrlSourceElement, dict]]] = None,
+ status: str, # pending, in_progress, complete, error
+ block_id: Optional[str] = None,
+ **others: dict,
+ ):
+ """A discrete action or tool call.
+ https://docs.slack.dev/reference/block-kit/blocks/task-card-block/
+
+ Args:
+ block_id: A string acting as a unique identifier for a block. If not specified, one will be generated.
+ Maximum length for this field is 255 characters.
+ block_id should be unique for each message and each iteration of a message.
+ If a message is updated, use a new block_id.
+ task_id (required): ID for the task
+ title (required): Title of the task in plain text
+ details: Details of the task in the form of a single "rich_text" entity.
+ output: Output of the task in the form of a single "rich_text" entity.
+ sources: List of sources used to generate a response
+ status: The state of a task. Either "pending" or "in_progress" or "complete" or "error".
+ """
+ super().__init__(type=self.type, block_id=block_id)
+ show_unknown_key_warning(self, others)
+
+ self.task_id = task_id
+ self.title = title
+ self.details = details
+ self.output = output
+ self.sources = sources
+ self.status = status
+
+ @JsonValidator("status must be an expected value (pending, in_progress, complete, or error)")
+ def _validate_rows(self):
+ return self.status in ["pending", "in_progress", "complete", "error"]
A string acting as a unique identifier for a block. If not specified, one will be generated.
+Maximum length for this field is 255 characters.
+block_id should be unique for each message and each iteration of a message.
+If a message is updated, use a new block_id.
+
task_id : required
+
ID for the task
+
title : required
+
Title of the task in plain text
+
details
+
Details of the task in the form of a single "rich_text" entity.
+
output
+
Output of the task in the form of a single "rich_text" entity.
+
sources
+
List of sources used to generate a response
+
status
+
The state of a task. Either "pending" or "in_progress" or "complete" or "error".
class PlanBlock(Block):
+ type = "plan"
+
+ @property
+ def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union(
+ {
+ "plan_id",
+ "title",
+ "tasks",
+ }
+ )
+
+ def __init__(
+ self,
+ *,
+ plan_id: str,
+ title: str,
+ tasks: Optional[Sequence[Union[Dict, TaskCardBlock]]] = None,
+ block_id: Optional[str] = None,
+ **others: dict,
+ ):
+ """A collection of related tasks.
+ https://docs.slack.dev/reference/block-kit/blocks/plan-block/
+
+ Args:
+ block_id: A string acting as a unique identifier for a block. If not specified, one will be generated.
+ Maximum length for this field is 255 characters.
+ block_id should be unique for each message and each iteration of a message.
+ If a message is updated, use a new block_id.
+ plan_id (required): ID for the plan (May be removed / made optional, feel free to pass in a random UUID
+ for now)
+ title (required): Title of the plan in plain text
+ tasks: Details of the task in the form of a single "rich_text" entity.
+ """
+ super().__init__(type=self.type, block_id=block_id)
+ show_unknown_key_warning(self, others)
+
+ self.plan_id = plan_id
+ self.title = title
+ self.tasks = tasks
A string acting as a unique identifier for a block. If not specified, one will be generated.
+Maximum length for this field is 255 characters.
+block_id should be unique for each message and each iteration of a message.
+If a message is updated, use a new block_id.
+
plan_id : required
+
ID for the plan (May be removed / made optional, feel free to pass in a random UUID
+for now)
+
title : required
+
Title of the plan in plain text
+
tasks
+
Details of the task in the form of a single "rich_text" entity.
class TaskCardBlock(Block):
+ type = "task_card"
+
+ @property
+ def attributes(self) -> Set[str]: # type: ignore[override]
+ return super().attributes.union(
+ {
+ "task_id",
+ "title",
+ "details",
+ "output",
+ "sources",
+ "status",
+ }
+ )
+
+ def __init__(
+ self,
+ *,
+ task_id: str,
+ title: str,
+ details: Optional[Union[RichTextBlock, dict]] = None,
+ output: Optional[Union[RichTextBlock, dict]] = None,
+ sources: Optional[Sequence[Union[UrlSourceElement, dict]]] = None,
+ status: str, # pending, in_progress, complete, error
+ block_id: Optional[str] = None,
+ **others: dict,
+ ):
+ """A discrete action or tool call.
+ https://docs.slack.dev/reference/block-kit/blocks/task-card-block/
+
+ Args:
+ block_id: A string acting as a unique identifier for a block. If not specified, one will be generated.
+ Maximum length for this field is 255 characters.
+ block_id should be unique for each message and each iteration of a message.
+ If a message is updated, use a new block_id.
+ task_id (required): ID for the task
+ title (required): Title of the task in plain text
+ details: Details of the task in the form of a single "rich_text" entity.
+ output: Output of the task in the form of a single "rich_text" entity.
+ sources: List of sources used to generate a response
+ status: The state of a task. Either "pending" or "in_progress" or "complete" or "error".
+ """
+ super().__init__(type=self.type, block_id=block_id)
+ show_unknown_key_warning(self, others)
+
+ self.task_id = task_id
+ self.title = title
+ self.details = details
+ self.output = output
+ self.sources = sources
+ self.status = status
+
+ @JsonValidator("status must be an expected value (pending, in_progress, complete, or error)")
+ def _validate_rows(self):
+ return self.status in ["pending", "in_progress", "complete", "error"]
A string acting as a unique identifier for a block. If not specified, one will be generated.
+Maximum length for this field is 255 characters.
+block_id should be unique for each message and each iteration of a message.
+If a message is updated, use a new block_id.
+
task_id : required
+
ID for the task
+
title : required
+
Title of the task in plain text
+
details
+
Details of the task in the form of a single "rich_text" entity.
+
output
+
Output of the task in the form of a single "rich_text" entity.
+
sources
+
List of sources used to generate a response
+
status
+
The state of a task. Either "pending" or "in_progress" or "complete" or "error".
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
buffer_size: The length of markdown_text to buffer in-memory before calling a method. Increasing this value
decreases the number of method calls made for the same amount of text, which is useful to avoid rate limits.
**kwargs: Additional arguments passed to the underlying API calls.
@@ -99,6 +102,7 @@
is stopped this method cannot be called.
Args:
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
**kwargs: Additional arguments passed to the underlying API calls.
@@ -145,9 +151,10 @@
Classes
raise e.SlackRequestError(f"Cannot append to stream: stream state is {self._state}")
if kwargs.get("token"):
self._token = kwargs.pop("token")
- self._buffer += markdown_text
- if len(self._buffer) >= self._buffer_size:
- return await self._flush_buffer(**kwargs)
+ if markdown_text is not None:
+ self._buffer += markdown_text
+ if len(self._buffer) >= self._buffer_size or chunks is not None:
+ return await self._flush_buffer(chunks=chunks, **kwargs)
details = {
"buffer_length": len(self._buffer),
"buffer_size": self._buffer_size,
@@ -163,6 +170,7 @@
Args:
blocks: A list of blocks that will be rendered at the bottom of the finalized message.
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
metadata: JSON object with event_type and event_payload fields, presented as a URL-encoded string. Metadata you
@@ -211,26 +220,36 @@
Classes
raise e.SlackRequestError("Failed to stop stream: stream not started")
self._stream_ts = str(response["ts"])
self._state = "in_progress"
+ flushings: List[Union[Dict, Chunk]] = []
+ if len(self._buffer) != 0:
+ flushings.append(MarkdownTextChunk(text=self._buffer))
+ if chunks is not None:
+ flushings.extend(chunks)
response = await self._client.chat_stopStream(
token=self._token,
channel=self._stream_args["channel"],
ts=self._stream_ts,
blocks=blocks,
- markdown_text=self._buffer,
+ chunks=flushings,
metadata=metadata,
**kwargs,
)
self._state = "completed"
return response
- async def _flush_buffer(self, **kwargs) -> AsyncSlackResponse:
- """Flush the internal buffer by making appropriate API calls."""
+ async def _flush_buffer(self, chunks: Optional[Sequence[Union[Dict, Chunk]]] = None, **kwargs) -> AsyncSlackResponse:
+ """Flush the internal buffer with chunks by making appropriate API calls."""
+ flushings: List[Union[Dict, Chunk]] = []
+ if len(self._buffer) != 0:
+ flushings.append(MarkdownTextChunk(text=self._buffer))
+ if chunks is not None:
+ flushings.extend(chunks)
if not self._stream_ts:
response = await self._client.chat_startStream(
**self._stream_args,
token=self._token,
**kwargs,
- markdown_text=self._buffer,
+ chunks=flushings,
)
self._stream_ts = response.get("ts")
self._state = "in_progress"
@@ -240,7 +259,7 @@
The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+
task_display_mode
+
Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+interleaved with text and "plan" displays all tasks together.
buffer_size
The length of markdown_text to buffer in-memory before calling a method. Increasing this value
decreases the number of method calls made for the same amount of text, which is useful to avoid rate limits.
is stopped this method cannot be called.
Args:
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
**kwargs: Additional arguments passed to the underlying API calls.
@@ -321,9 +345,10 @@
Methods
raise e.SlackRequestError(f"Cannot append to stream: stream state is {self._state}")
if kwargs.get("token"):
self._token = kwargs.pop("token")
- self._buffer += markdown_text
- if len(self._buffer) >= self._buffer_size:
- return await self._flush_buffer(**kwargs)
+ if markdown_text is not None:
+ self._buffer += markdown_text
+ if len(self._buffer) >= self._buffer_size or chunks is not None:
+ return await self._flush_buffer(chunks=chunks, **kwargs)
details = {
"buffer_length": len(self._buffer),
"buffer_size": self._buffer_size,
@@ -340,6 +365,8 @@
Methods
is stopped this method cannot be called.
Args
+
chunks
+
An array of streaming chunks that can contain either markdown text or task updates.
markdown_text
Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
Args:
blocks: A list of blocks that will be rendered at the bottom of the finalized message.
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
metadata: JSON object with event_type and event_payload fields, presented as a URL-encoded string. Metadata you
@@ -425,12 +454,17 @@
Example
raise e.SlackRequestError("Failed to stop stream: stream not started")
self._stream_ts = str(response["ts"])
self._state = "in_progress"
+ flushings: List[Union[Dict, Chunk]] = []
+ if len(self._buffer) != 0:
+ flushings.append(MarkdownTextChunk(text=self._buffer))
+ if chunks is not None:
+ flushings.extend(chunks)
response = await self._client.chat_stopStream(
token=self._token,
channel=self._stream_args["channel"],
ts=self._stream_ts,
blocks=blocks,
- markdown_text=self._buffer,
+ chunks=flushings,
metadata=metadata,
**kwargs,
)
@@ -442,6 +476,8 @@
Args
blocks
A list of blocks that will be rendered at the bottom of the finalized message.
+
chunks
+
An array of streaming chunks that can contain either markdown text or task updates.
markdown_text
Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> AsyncChatStream:
"""Stream markdown text into a conversation.
@@ -2982,6 +2993,8 @@
Classes
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -3007,6 +3020,7 @@
thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> AsyncChatStream:
"""Stream markdown text into a conversation.
@@ -10608,6 +10633,8 @@
Methods
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -10633,6 +10660,7 @@
The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+
task_display_mode
+
Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+interleaved with text and "plan" displays all tasks together.
**kwargs
Additional arguments passed to the underlying API calls.
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
buffer_size: The length of markdown_text to buffer in-memory before calling a method. Increasing this value
decreases the number of method calls made for the same amount of text, which is useful to avoid rate limits.
**kwargs: Additional arguments passed to the underlying API calls.
@@ -99,6 +102,7 @@
is stopped this method cannot be called.
Args:
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
**kwargs: Additional arguments passed to the underlying API calls.
@@ -145,9 +151,10 @@
Classes
raise e.SlackRequestError(f"Cannot append to stream: stream state is {self._state}")
if kwargs.get("token"):
self._token = kwargs.pop("token")
- self._buffer += markdown_text
- if len(self._buffer) >= self._buffer_size:
- return self._flush_buffer(**kwargs)
+ if markdown_text is not None:
+ self._buffer += markdown_text
+ if len(self._buffer) >= self._buffer_size or chunks is not None:
+ return self._flush_buffer(chunks=chunks, **kwargs)
details = {
"buffer_length": len(self._buffer),
"buffer_size": self._buffer_size,
@@ -163,6 +170,7 @@
Args:
blocks: A list of blocks that will be rendered at the bottom of the finalized message.
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
metadata: JSON object with event_type and event_payload fields, presented as a URL-encoded string. Metadata you
@@ -211,26 +220,36 @@
Classes
raise e.SlackRequestError("Failed to stop stream: stream not started")
self._stream_ts = str(response["ts"])
self._state = "in_progress"
+ flushings: List[Union[Dict, Chunk]] = []
+ if len(self._buffer) != 0:
+ flushings.append(MarkdownTextChunk(text=self._buffer))
+ if chunks is not None:
+ flushings.extend(chunks)
response = self._client.chat_stopStream(
token=self._token,
channel=self._stream_args["channel"],
ts=self._stream_ts,
blocks=blocks,
- markdown_text=self._buffer,
+ chunks=flushings,
metadata=metadata,
**kwargs,
)
self._state = "completed"
return response
- def _flush_buffer(self, **kwargs) -> SlackResponse:
- """Flush the internal buffer by making appropriate API calls."""
+ def _flush_buffer(self, chunks: Optional[Sequence[Union[Dict, Chunk]]] = None, **kwargs) -> SlackResponse:
+ """Flush the internal buffer with chunks by making appropriate API calls."""
+ flushings: List[Union[Dict, Chunk]] = []
+ if len(self._buffer) != 0:
+ flushings.append(MarkdownTextChunk(text=self._buffer))
+ if chunks is not None:
+ flushings.extend(chunks)
if not self._stream_ts:
response = self._client.chat_startStream(
**self._stream_args,
token=self._token,
**kwargs,
- markdown_text=self._buffer,
+ chunks=flushings,
)
self._stream_ts = response.get("ts")
self._state = "in_progress"
@@ -240,7 +259,7 @@
The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+
task_display_mode
+
Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+interleaved with text and "plan" displays all tasks together.
buffer_size
The length of markdown_text to buffer in-memory before calling a method. Increasing this value
decreases the number of method calls made for the same amount of text, which is useful to avoid rate limits.
is stopped this method cannot be called.
Args:
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
**kwargs: Additional arguments passed to the underlying API calls.
@@ -321,9 +345,10 @@
Methods
raise e.SlackRequestError(f"Cannot append to stream: stream state is {self._state}")
if kwargs.get("token"):
self._token = kwargs.pop("token")
- self._buffer += markdown_text
- if len(self._buffer) >= self._buffer_size:
- return self._flush_buffer(**kwargs)
+ if markdown_text is not None:
+ self._buffer += markdown_text
+ if len(self._buffer) >= self._buffer_size or chunks is not None:
+ return self._flush_buffer(chunks=chunks, **kwargs)
details = {
"buffer_length": len(self._buffer),
"buffer_size": self._buffer_size,
@@ -340,6 +365,8 @@
Methods
is stopped this method cannot be called.
Args
+
chunks
+
An array of streaming chunks that can contain either markdown text or task updates.
markdown_text
Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
Args:
blocks: A list of blocks that will be rendered at the bottom of the finalized message.
+ chunks: An array of streaming chunks that can contain either markdown text or task updates.
markdown_text: Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
metadata: JSON object with event_type and event_payload fields, presented as a URL-encoded string. Metadata you
@@ -425,12 +454,17 @@
Example
raise e.SlackRequestError("Failed to stop stream: stream not started")
self._stream_ts = str(response["ts"])
self._state = "in_progress"
+ flushings: List[Union[Dict, Chunk]] = []
+ if len(self._buffer) != 0:
+ flushings.append(MarkdownTextChunk(text=self._buffer))
+ if chunks is not None:
+ flushings.extend(chunks)
response = self._client.chat_stopStream(
token=self._token,
channel=self._stream_args["channel"],
ts=self._stream_ts,
blocks=blocks,
- markdown_text=self._buffer,
+ chunks=flushings,
metadata=metadata,
**kwargs,
)
@@ -442,6 +476,8 @@
Args
blocks
A list of blocks that will be rendered at the bottom of the finalized message.
+
chunks
+
An array of streaming chunks that can contain either markdown text or task updates.
markdown_text
Accepts message text formatted in markdown. Limit this field to 12,000 characters. This text is
what will be appended to the message received so far.
thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> ChatStream:
"""Stream markdown text into a conversation.
@@ -2982,6 +2993,8 @@
Classes
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -3007,6 +3020,7 @@
thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> ChatStream:
"""Stream markdown text into a conversation.
@@ -10608,6 +10633,8 @@
Methods
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -10633,6 +10660,7 @@
The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+
task_display_mode
+
Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+interleaved with text and "plan" displays all tasks together.
**kwargs
Additional arguments passed to the underlying API calls.
thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> ChatStream:
"""Stream markdown text into a conversation.
@@ -3351,6 +3362,8 @@
Raises
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -3376,6 +3389,7 @@
thread_ts: str,
recipient_team_id: Optional[str] = None,
recipient_user_id: Optional[str] = None,
+ task_display_mode: Optional[str] = None,
**kwargs,
) -> ChatStream:
"""Stream markdown text into a conversation.
@@ -10977,6 +11002,8 @@
Methods
recipient_team_id: The encoded ID of the team the user receiving the streaming text belongs to. Required when
streaming to channels.
recipient_user_id: The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+ task_display_mode: Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+ interleaved with text and "plan" displays all tasks together.
**kwargs: Additional arguments passed to the underlying API calls.
Returns:
@@ -11002,6 +11029,7 @@
The encoded ID of the user to receive the streaming text. Required when streaming to channels.
+
task_display_mode
+
Specifies how tasks are displayed in the message. A "timeline" displays individual tasks
+interleaved with text and "plan" displays all tasks together.
**kwargs
Additional arguments passed to the underlying API calls.