@ycodium-ai/plugin-im 0.2.3272 → 0.2.3306

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -165,18 +165,20 @@ per-message text. How depends on the platform:
165
165
 
166
166
  An adapter opts in with the optional `turnCards` surface (`src/adapter.ts`).
167
167
  Approval messages are posted for every pending request on platforms with
168
- buttons and replaced with a settled notice when the request is answered, here or
168
+ buttons and settled when the request is answered, here or
169
169
  elsewhere (`thread.request-resolved`); WeCom, which answers by number, posts only
170
170
  the first and just stops accepting its number. Each bot's **More settings** includes
171
171
  an approval timeout in minutes: the default is 60, and 0 turns automatic denial off
172
172
  (integers from 0 to 1440). Unanswered approvals are denied automatically at the
173
- deadline. Lark and Telegram replace the approval card or message with a notice
173
+ deadline. Lark and Telegram show a notice on the approval card or message
174
174
  stating the number of minutes; platforms without editable approval cards, and
175
175
  failed card updates, send the same notice as chat text. The timeout continues from
176
176
  the approval's creation time after a restart, including immediately denying
177
177
  overdue requests. Changing the setting recalculates pending deadlines immediately;
178
178
  setting it to 0 cancels them. Questions have no timeout.
179
179
 
180
+ Once a request has been answered or has timed out, Lark cards and Telegram messages show the result first, followed by the original approval content; timeout notices sent as chat text include a short excerpt of that content.
181
+
180
182
  On a platform whose `turnCards` set
181
183
  `rotatesOnInteraction` (Lark: patching a card does not move it), an approval or
182
184
  question that someone answered seals the open reply card as "continues below" and the
@@ -195,7 +197,9 @@ optional `choiceCards` surface (`ImChoiceCard`, `src/adapter.ts`): Lark patches
195
197
  card, Telegram edits a message and its inline keyboard. A request is posted on
196
198
  `thread.user-input-pending` (read with `listPendingUserInputs`), one card per
197
199
  question, and answered through `ctx.threads.userInput.respond` once every question
198
- has an answer; a free-form answer is the next ordinary message in the chat, and
200
+ has an answer; a free-form answer is the next ordinary message in the chat (its
201
+ attachments, and any waiting ones, go along in `attachmentsByQuestionId`; an
202
+ option-only question leaves them waiting for the next message), and
199
203
  `thread.request-resolved` freezes the cards of a question answered elsewhere or
200
204
  closed unanswered. WeCom writes the options as numbers and the
201
205
  reply is parsed in `src/questionCards.ts`. A message that lands behind a running
@@ -272,7 +276,7 @@ is sent to the chat. `chat_type` (1 single, 2 group) comes from the last inbound
272
276
  conversation and is left out when none has arrived since the plugin started, as plain text does.
273
277
  A picture goes as `image` only when it is PNG, JPEG or GIF within 10 MB (`imageMimeTypes`).
274
278
 
275
- Chat commands: `/stop`, `/continue`, `/compact`, `/status`, `/version`, `/new`, `/sessions`, `/archived`, `/resume`, `/history [count]`, `/model`,
279
+ Chat commands: `/stop`, `/steer <instruction>`, `/batch`, `/send`, `/cancel`, `/continue`, `/compact`, `/status`, `/version`, `/new`, `/sessions`, `/archived`, `/resume`, `/history [count]`, `/model`,
276
280
  `/reasoning`, `/permission`, `/plan`, `/repo`, `/group`, `/team`, `/thread`, `/help`, `/panel`. In a chat with no project
277
281
  `/sessions`, `/resume` and the team commands answer with the project picker. `/version` and `/archived` still answer. `/sessions` and `/resume` only list and
278
282
  switch threads this plugin opened, since the host lets a plugin send only into
@@ -280,6 +284,10 @@ its own threads. `/continue` calls `threads.turnQueue.resume` for the chat's thr
280
284
  when its queue is paused (a `/stop` or a failure pauses it), which is how WeCom
281
285
  resumes a paused queue from the chat; it is not `/resume`, which already switches threads.
282
286
 
287
+ `/steer <instruction>` adds text to the turn running in this chat, regardless of the bot's queue mode. It preserves multiple lines and rejects images and files. While the host waits for an answer or approval it is refused and not kept; the user handles that first or sends `/stop`, then sends it again. The waiting check reads the host execution view, not the plugin interaction records. With no bound session or running turn, it replies without starting work. If the turn ends just as the host accepts the instruction, it waits as the next message. Files sent on their own before it are not attached; they stay for the next ordinary message. Type it; panels and native command menus do not list it. There is no Chinese alias.
288
+
289
+ `/batch` collects up to 10 text messages in a private chat without replying or starting a turn. `/send` submits them together as one input; a failed submission keeps them for retry. `/cancel` discards them. Repeating `/batch` reports progress, and a full batch never submits automatically. Attachments are refused without counting them; other slash commands are blocked until `/send` or `/cancel`. Starting a batch is refused in a group, before a project is picked, while the chat targets a team, or while the host reports a running turn or pending answer or approval. If the project has been archived or deleted when `/send` is sent, nothing is submitted and the batch is kept. After unarchiving, `/send` works again; to switch projects (the only way on for a deleted one), `/cancel` (discarding it), then `/repo` and start again with `/batch` (other commands stay blocked while collecting). These commands take no arguments, have no Chinese aliases, and appear in `/help` but not panels or native menus. Batches live only in memory: restarting Ycodium clears a collecting batch, and its messages must be resent. See [Batch input](../../docs/user/im-bots.md#batch-input).
290
+
283
291
  `/history [count]` previews the current session's recent user and assistant messages in private chats only (default 3, maximum 5), oldest first. It does not start a turn or change the session. Images and files appear as placeholders; long text is split for the platform, with a notice when the preview text is incomplete. Type the command in the chat; panels and native command menus do not list it. With the reply language set to Chinese, `会话历史 [数量]` works too.
284
292
 
285
293
  `/version` answers with one line, the plugin name and its version. It takes no arguments; if anything follows it, the reply is a usage reminder. It works in private chats and groups, does not read the session, and does not start a turn. Type it; panels and native command menus do not list it. There is no Chinese alias.