@songsid/agend 2.1.12-beta.3 → 2.1.12-beta.5

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.
Files changed (110) hide show
  1. package/README.md +54 -8
  2. package/README.zh-TW.md +104 -11
  3. package/dist/agent-endpoint.d.ts +2 -0
  4. package/dist/agent-endpoint.js +38 -29
  5. package/dist/agent-endpoint.js.map +1 -1
  6. package/dist/backend/factory.js +5 -5
  7. package/dist/backend/factory.js.map +1 -1
  8. package/dist/backend/index.d.ts +0 -1
  9. package/dist/backend/index.js +0 -1
  10. package/dist/backend/index.js.map +1 -1
  11. package/dist/backend/kiro.d.ts +10 -1
  12. package/dist/backend/kiro.js +13 -0
  13. package/dist/backend/kiro.js.map +1 -1
  14. package/dist/backend/mock.d.ts +1 -1
  15. package/dist/backend/mock.js +1 -1
  16. package/dist/backend/muse.d.ts +14 -0
  17. package/dist/backend/muse.js +60 -11
  18. package/dist/backend/muse.js.map +1 -1
  19. package/dist/backend/removed.d.ts +12 -0
  20. package/dist/backend/removed.js +18 -0
  21. package/dist/backend/removed.js.map +1 -0
  22. package/dist/backend/session-signals.js +5 -10
  23. package/dist/backend/session-signals.js.map +1 -1
  24. package/dist/backend/types.d.ts +1 -1
  25. package/dist/backend/types.js +0 -1
  26. package/dist/backend/types.js.map +1 -1
  27. package/dist/channel/adapters/discord.js +9 -0
  28. package/dist/channel/adapters/discord.js.map +1 -1
  29. package/dist/channel/adapters/telegram.d.ts +14 -8
  30. package/dist/channel/adapters/telegram.js +80 -26
  31. package/dist/channel/adapters/telegram.js.map +1 -1
  32. package/dist/channel/mcp-tools.js +2 -2
  33. package/dist/channel/mcp-tools.js.map +1 -1
  34. package/dist/classic-channel-manager.js +2 -2
  35. package/dist/classic-channel-manager.js.map +1 -1
  36. package/dist/cli.js +27 -53
  37. package/dist/cli.js.map +1 -1
  38. package/dist/command-table.d.ts +1 -1
  39. package/dist/command-table.js +4 -2
  40. package/dist/command-table.js.map +1 -1
  41. package/dist/config-validator.js +82 -10
  42. package/dist/config-validator.js.map +1 -1
  43. package/dist/config.js +7 -5
  44. package/dist/config.js.map +1 -1
  45. package/dist/context-guardian.d.ts +1 -1
  46. package/dist/context-guardian.js +1 -1
  47. package/dist/cross-instance-notice.d.ts +39 -0
  48. package/dist/cross-instance-notice.js +84 -0
  49. package/dist/cross-instance-notice.js.map +1 -0
  50. package/dist/daemon.d.ts +6 -0
  51. package/dist/daemon.js +54 -42
  52. package/dist/daemon.js.map +1 -1
  53. package/dist/daily-summary.js +0 -3
  54. package/dist/daily-summary.js.map +1 -1
  55. package/dist/fleet-manager.d.ts +16 -3
  56. package/dist/fleet-manager.js +110 -53
  57. package/dist/fleet-manager.js.map +1 -1
  58. package/dist/general-knowledge/skills/fleet-config/SKILL.md +1 -1
  59. package/dist/instance-config-impact.js +3 -0
  60. package/dist/instance-config-impact.js.map +1 -1
  61. package/dist/instance-lifecycle.d.ts +9 -1
  62. package/dist/instance-lifecycle.js +66 -7
  63. package/dist/instance-lifecycle.js.map +1 -1
  64. package/dist/locale.js +28 -2
  65. package/dist/locale.js.map +1 -1
  66. package/dist/memory-pressure.d.ts +8 -2
  67. package/dist/memory-pressure.js +10 -4
  68. package/dist/memory-pressure.js.map +1 -1
  69. package/dist/outbound-handlers.js +36 -23
  70. package/dist/outbound-handlers.js.map +1 -1
  71. package/dist/outbound-schemas.d.ts +0 -1
  72. package/dist/outbound-schemas.js +4 -4
  73. package/dist/outbound-schemas.js.map +1 -1
  74. package/dist/prompt-file-ref.d.ts +42 -0
  75. package/dist/prompt-file-ref.js +118 -0
  76. package/dist/prompt-file-ref.js.map +1 -0
  77. package/dist/reply-dedup.d.ts +5 -0
  78. package/dist/reply-dedup.js +9 -0
  79. package/dist/reply-dedup.js.map +1 -1
  80. package/dist/settings-api.js +5 -1
  81. package/dist/settings-api.js.map +1 -1
  82. package/dist/setup-wizard.js +0 -4
  83. package/dist/setup-wizard.js.map +1 -1
  84. package/dist/spawn-gate.js +4 -3
  85. package/dist/spawn-gate.js.map +1 -1
  86. package/dist/target-queue-worker.d.ts +1 -1
  87. package/dist/topic-commands.d.ts +64 -5
  88. package/dist/topic-commands.js +172 -14
  89. package/dist/topic-commands.js.map +1 -1
  90. package/dist/transcript-jsonl.d.ts +12 -0
  91. package/dist/transcript-jsonl.js +37 -0
  92. package/dist/transcript-jsonl.js.map +1 -1
  93. package/dist/transcript-monitor.js +10 -7
  94. package/dist/transcript-monitor.js.map +1 -1
  95. package/dist/transcript-sources.d.ts +1 -1
  96. package/dist/transcript-sources.js +29 -11
  97. package/dist/transcript-sources.js.map +1 -1
  98. package/dist/types.d.ts +13 -4
  99. package/dist/ui/dashboard.html +3 -3
  100. package/dist/ui/settings.html +58 -16
  101. package/dist/update-check.d.ts +15 -6
  102. package/dist/update-check.js +20 -7
  103. package/dist/update-check.js.map +1 -1
  104. package/dist/wake-coordinator.js +1 -1
  105. package/dist/web-api.js +1 -2
  106. package/dist/web-api.js.map +1 -1
  107. package/package.json +1 -1
  108. package/dist/backend/gemini-cli.d.ts +0 -20
  109. package/dist/backend/gemini-cli.js +0 -169
  110. package/dist/backend/gemini-cli.js.map +0 -1
package/README.md CHANGED
@@ -54,7 +54,9 @@ AgEnD (**Agent Engineering Daemon**) turns your Telegram or Discord into a comma
54
54
 
55
55
  🛑 **Cancel Button** — Interrupt agent generation with a single tap. Inline button appears on every message; works across TG and Discord.
56
56
 
57
- 📬 **Delivery Status** — See message delivery progress: 👀 received → ⏳ processing → ✅ done (or ❌ failed).
57
+ 📬 **Delivery Status** — Each message you send gets a reaction that tracks it: on Discord 👀 received → ⏳ queued → 👀 with the agent → ✅ delivered, or ❌ if delivery failed. Telegram only accepts its own reaction set, so there it is 👀 throughout and 👎 on failure.
58
+
59
+ 🎨 **Configurable Status Emoji** — Every delivery-status emoji can be changed per channel or per instance with `status_emojis`, including Discord server emoji. See [Configuration](docs/configuration.md#channeloptionsstatus_emojis-discord-and-telegram).
58
60
 
59
61
  🖥️ **Web Dashboard** — Live fleet monitoring in the browser with SSE updates and integrated chat UI.
60
62
 
@@ -64,6 +66,18 @@ AgEnD (**Agent Engineering Daemon**) turns your Telegram or Discord into a comma
64
66
 
65
67
  📋 **Fleet Templates** — Define reusable fleet configurations. Deploy multi-instance setups with one command, each with its own git worktree.
66
68
 
69
+ 😀 **Stickers & Persona Emoji** — Agents can send stickers on Discord and Telegram, and each agent can pick its own emoji so you can tell bots apart in a shared channel.
70
+
71
+ 📊 **Subscription Usage** — `/usage` (also the dashboard and the `get_usage` tool) shows the remaining quota of your Claude, Codex, Kiro, Grok, Muse and Antigravity subscriptions, one row per subscription.
72
+
73
+ 🔑 **Credential Profiles** — Run instances, or ClassicBot channels, on a second subscription of the same backend with `backend_options.<backend>.credential_profile` (kiro-cli and Codex today). See [Configuration](docs/configuration.md#credential-profiles-multiple-subscriptions-of-one-backend).
74
+
75
+ 🌐 **Sign In From Your Phone** — `/login` (fleet admins) signs a CLI in without SSH: device-code logins such as Codex and Grok post their link and code in the chat, and a sign-in that needs a terminal gets a time-limited, token-protected browser terminal on the host. For kiro-cli and Claude Code it can also open a temporary public link through a Cloudflare Quick Tunnel after you confirm; AgEnD downloads `cloudflared` if it is missing. Turn it off with `web_terminal.tunnel.allow_public: false`. See [Configuration](docs/configuration.md#finishing-a-login-away-from-the-machine-public-link).
76
+
77
+ 💤 **Auto-Pause & Wake** — With `auto_pause_after` (minutes, off by default) an idle instance is paused and wakes by itself when a message arrives. `/pause` and `/wake` do the same by hand.
78
+
79
+ 🧠 **Memory Pressure Guard** — On Linux the fleet watches host memory: under pressure it slows new CLI starts, holds them while memory is critical, and posts a notice. On macOS the readings are only logged.
80
+
67
81
  ## Use Cases
68
82
 
69
83
  AgEnD is an AI personal assistant that lives in Discord and Telegram, running on the AI subscriptions you already have.
@@ -180,11 +194,16 @@ The quickstart will set up both `fleet.yaml` and `classicBot.yaml`. Run `agend q
180
194
 
181
195
  ### Usage
182
196
 
183
- | Command | Description |
184
- |---------|-------------|
185
- | `/start` | Start an agent in the current channel |
186
- | `/chat <message>` | Send a message to the agent |
187
- | `/stop` | Stop the agent in the current channel |
197
+ | Command | Who | Description |
198
+ |---------|-----|-------------|
199
+ | `/start <backend>` | see below | Start an agent in the current channel |
200
+ | `/chat <message>` | anyone | Send a message to the agent |
201
+ | `/steer`, `/btw`, `/cancel`, `/ctx` | anyone | Interject into the current task, ask a side question, interrupt, show context usage |
202
+ | `/pause`, `/wake`, `/compact`, `/clear`, `/model`, `/save` | admin | Pause or wake the agent, compact or clear its context, switch model, save the conversation |
203
+ | `/effort`, `/collab` | admin | Discord only: reasoning effort, collab mode |
204
+ | `/stop`, `/load` | ClassicBot admin | Stop the agent in the current channel; load a saved conversation (`/load` is Discord only) |
205
+
206
+ "Admin" is a fleet admin or a ClassicBot admin (`admin_users`) on Discord. On Telegram, `/pause`, `/wake`, `/compact` and `/save` take a ClassicBot admin. Fleet-wide commands such as `/usage` and `/status` also work in a ClassicBot channel on Discord. Who may `/start`: on Discord, anyone in an allowed server; on Telegram, a user in `allowed_users` in a private chat, or a ClassicBot admin in an allowed group (`/start@yourbot`).
188
207
 
189
208
  On Discord, `/start` turns on collab mode: @-mention the bot to talk to it. See [Use Cases](docs/use-cases.md) for examples.
190
209
 
@@ -202,7 +221,8 @@ defaults:
202
221
 
203
222
  - **Empty or omitted** `allowed_guilds` → all servers allowed (default)
204
223
  - **Primary guild** (fleet.yaml `group_id`) → full access (topic mode + ClassicBot)
205
- - **Whitelisted guilds** → ClassicBot only (`/start`, `/chat`, `/stop`)
224
+ - **Whitelisted guilds** → ClassicBot channels only
225
+ - **A `/start` from a server that is not listed** posts an approval request with buttons to the General topic
206
226
  - **Hot reload** — changes detected every 30 seconds, no restart needed
207
227
 
208
228
  ### Per-Channel Backend
@@ -220,11 +240,37 @@ channels:
220
240
 
221
241
  Backend fallback: channel → `defaults.backend` → `fleet.yaml` defaults → `claude-code`
222
242
 
243
+ ### Access Lists
244
+
245
+ ```yaml
246
+ defaults:
247
+ allowed_guilds: ["123456789012345678"] # Discord servers (empty = all)
248
+ allowed_groups: ["-1001234567890"] # Telegram groups (empty = all)
249
+ allowed_users: ["123456789"] # Telegram users who may /start in a private chat (empty = all)
250
+ admin_users: ["123456789"] # ClassicBot admins (empty = nobody)
251
+ ```
252
+
253
+ Quote the ids: a Discord id is too long to survive as a YAML number. With no `admin_users`, nobody can `/stop` a ClassicBot agent and nobody can start one in a Telegram group.
254
+
255
+ ### Second Subscription per Channel
256
+
257
+ A channel can run on a different login of the same backend, as a fleet instance can:
258
+
259
+ ```yaml
260
+ channels:
261
+ "1234567890":
262
+ backend: kiro-cli
263
+ backend_options:
264
+ kiro-cli:
265
+ credential_profile: work # "" = back to the shared login
266
+ ```
267
+
268
+ The channel's `backend_options` are merged over the fleet.yaml defaults'. Profiles work for kiro-cli and Codex; an invalid profile name keeps the agent from starting rather than running it on the wrong account, and a change restarts a running agent. Log the profile in first: see [Credential profiles](docs/configuration.md#credential-profiles-multiple-subscriptions-of-one-backend). Every other `classicBot.yaml` key is in the [Configuration reference](docs/configuration.md#classicbotyaml).
269
+
223
270
  ## Known Limitations
224
271
 
225
272
  - macOS (launchd) and Linux (systemd) supported; on Windows, run it inside WSL ([Windows install guide](https://songsid.github.io/AgEnD/install-windows/)). Native Windows is not supported
226
273
  - Official Telegram plugin in global `enabledPlugins` causes 409 polling conflicts
227
- - OpenCode and Kiro CLI do not read MCP server `instructions` field — fleet context and workflow templates are not injected into these backends' system prompts. Awaiting upstream fix.
228
274
 
229
275
  ## License
230
276
 
package/README.zh-TW.md CHANGED
@@ -27,7 +27,7 @@ AgEnD(**Agent Engineering Daemon**)把你的 Telegram 或 Discord 變成 AI
27
27
  |---|---|
28
28
  | 關掉終端機,agent 就斷線 | 系統服務常駐,重開機也不怕 |
29
29
  | 一個終端機 = 一個專案 | 一個 bot,無限專案同時跑 |
30
- | 長時間 session 累積過時 context | 依 max age 自動輪替 session,保持新鮮 |
30
+ | 長時間 session 累積過時 context | CLI 自動壓縮 context,當機後用 context 快照恢復 |
31
31
  | 不知道 agent 半夜在幹嘛 | 每日花費報告 + 卡住偵測通知 |
32
32
  | Agent 各做各的,無法協作 | 點對點協作,透過 MCP tools |
33
33
  | 無人看管時帳單暴增 | 每個 instance 每日花費上限,自動暫停 |
@@ -42,7 +42,7 @@ AgEnD(**Agent Engineering Daemon**)把你的 Telegram 或 Discord 變成 AI
42
42
 
43
43
  📱 **手機操控** — 用 Telegram 或 Discord 的按鈕核准工具使用、重啟 session、管理整個 fleet。
44
44
 
45
- 🛡️ **自主又安全** — 花費上限、卡住偵測、model failover、context 輪替,fleet 不用顧也能穩穩跑。
45
+ 🛡️ **自主又安全** — 花費上限、卡住偵測、model failover、當機自動恢復,fleet 不用顧也能穩穩跑。
46
46
 
47
47
  ⏰ **持久化排程** — cron 排程任務,SQLite 儲存,重啟不遺失。
48
48
 
@@ -52,9 +52,31 @@ AgEnD(**Agent Engineering Daemon**)把你的 Telegram 或 Discord 變成 AI
52
52
 
53
53
  🪞 **Mirror Topic** — 跨 instance 可見性。從另一個 topic 即時觀看其他 agent 的工作。
54
54
 
55
+ 🛑 **取消按鈕** — 按一下就能中斷 agent 正在產生的回應。每則訊息都會附上這個按鈕,Telegram 和 Discord 都能用。
56
+
57
+ 📬 **送達狀態** — 你傳出的每則訊息都會掛上一個表情,標示它走到哪一步:在 Discord 上依序是 👀 已收到 → ⏳ 排隊中 → 👀 agent 已接手 → ✅ 已送達,送達失敗則是 ❌。Telegram 只接受它自己的那組反應表情,所以在 Telegram 上一律是 👀,失敗時是 👎。
58
+
59
+ 🎨 **狀態表情可自訂** — 每個送達狀態的表情都能用 `status_emojis` 依頻道或依 instance 更換,Discord 伺服器的自訂表情也可以。詳見 [Configuration](docs/configuration.zh-TW.md#instancesname) 的 `status_emojis`。
60
+
55
61
  🖥️ **Web Dashboard** — 瀏覽器即時 fleet 監控,SSE 更新 + 整合聊天介面。
56
62
 
57
- 🔌 **可擴充** — Discord adapter、webhook 通知、health endpoint、外部 session 透過 IPC 連入。
63
+ 🔌 **可擴充** — 轉接器外掛、webhook 通知、health endpoint、外部 session 透過 IPC 連入。
64
+
65
+ 👥 **團隊與任務看板** — 用具名群組做定向廣播;共用的任務看板讓多個 instance 一起追蹤多步驟的工作。
66
+
67
+ 📋 **Fleet 範本** — 把常用的 fleet 設定存成範本,一個指令就能部署多個 instance,每個都有自己的 git worktree。
68
+
69
+ 😀 **貼圖與代表表情** — agent 可以在 Discord 和 Telegram 傳貼圖,每個 agent 也能挑一個代表自己的表情,同一個頻道裡有好幾個 bot 時一眼就分得出是誰。
70
+
71
+ 📊 **訂閱用量** — `/usage`(儀表板和 `get_usage` 工具也看得到)顯示 Claude、Codex、Kiro、Grok、Muse、Antigravity 訂閱還剩多少額度,每個訂閱各佔一列。
72
+
73
+ 🔑 **多組登入(credential profile)** — 用 `backend_options.<backend>.credential_profile`,讓 instance 或 ClassicBot 頻道改用同一個 backend 的第二個訂閱(目前支援 kiro-cli 和 Codex)。詳見[英文版設定參考](docs/configuration.md#credential-profiles-multiple-subscriptions-of-one-backend)。
74
+
75
+ 🌐 **用手機完成登入** — `/login`(僅限 fleet 管理員)不必 SSH 就能讓 CLI 登入:Codex、Grok 這類裝置碼登入會把網址和代碼貼在聊天室;需要終端機的登入,則會在主機上開一個有時限、要權杖才能進入的瀏覽器終端機。kiro-cli 和 Claude Code 在你確認後,還能透過 Cloudflare Quick Tunnel 開一個暫時的公開連結;主機上沒有 `cloudflared` 時,AgEnD 會自動下載。要關掉這個功能,設定 `web_terminal.tunnel.allow_public: false`。詳見 [Configuration](docs/configuration.zh-TW.md#人不在機器旁完成-login公開連結)。
76
+
77
+ 💤 **自動暫停與喚醒** — 設定 `auto_pause_after`(分鐘,預設關閉)後,閒置的 instance 會被暫停,有新訊息進來時自動喚醒。也可以用 `/pause`、`/wake` 手動操作。
78
+
79
+ 🧠 **記憶體壓力保護** — 在 Linux 上,fleet 會監看主機記憶體:吃緊時放慢新 CLI 的啟動,到了危險程度就先暫緩啟動,並發出通知。在 macOS 上只會記錄到日誌。
58
80
 
59
81
  ## 使用情境
60
82
 
@@ -85,7 +107,7 @@ agend fleet start # 3. 啟動 fleet 🎉
85
107
 
86
108
  打開 Telegram 或 Discord,傳訊息給你的 bot,就能用手機開始工作。
87
109
 
88
- > **用 Discord?** `agend quickstart` 也支援 Discord,已內建,不用另外安裝。詳見 [Discord 設定說明](docs/features.zh-TW.md#discord-轉接器-discord-adapter)。
110
+ > **用 Discord?** `agend quickstart` 也支援 Discord,已內建,不用另外安裝。詳見 [Discord 設定說明](docs/features.zh-TW.md#discord-adapter)。
89
111
 
90
112
  ## 運作原理
91
113
 
@@ -138,6 +160,13 @@ graph LR
138
160
 
139
161
  > **Codex:** 每個 instance 恢復的是記錄在自己工作目錄下的對話,同一個 git repo 的不同 worktree 上的 instance 不再互搶 session。詳見 [Codex session 恢復](docs/features.zh-TW.md#codex-session-恢復-codex-session-resume)。
140
162
 
163
+ > **WSL(Windows Subsystem for Linux):** 完整支援。安裝腳本會自動偵測 WSL,避免用到 PATH 裡 Windows 的 `node.exe`。如果遇到 PATH 問題,在 `/etc/wsl.conf` 加上:
164
+ > ```ini
165
+ > [interop]
166
+ > appendWindowsPath=false
167
+ > ```
168
+ > 然後重新啟動 WSL(`wsl --shutdown`)。安裝指令:`curl -fsSL https://songsid.github.io/AgEnD/install.sh | bash`
169
+
141
170
  ## 文件
142
171
 
143
172
  - [使用情境](docs/use-cases.zh-TW.md) — AgEnD 實際被拿來做什麼,附真實案例
@@ -165,19 +194,83 @@ quickstart 會同時設定好 `fleet.yaml` 和 `classicBot.yaml`。之後要新
165
194
 
166
195
  ### 用法
167
196
 
168
- | 指令 | 說明 |
169
- |---------|-------------|
170
- | `/start` | 在目前的頻道啟動 agent |
171
- | `/chat <訊息>` | 傳訊息給 agent |
172
- | `/stop` | 停止目前頻道的 agent |
197
+ | 指令 | 誰能用 | 說明 |
198
+ |---------|-----|-------------|
199
+ | `/start <backend>` | 見下方 | 在目前的頻道啟動 agent |
200
+ | `/chat <訊息>` | 任何人 | 傳訊息給 agent |
201
+ | `/steer`、`/btw`、`/cancel`、`/ctx` | 任何人 | 插入指示到目前的任務、問一個旁支問題、中斷、查看 context 用量 |
202
+ | `/pause`、`/wake`、`/compact`、`/clear`、`/model`、`/save` | 管理員 | 暫停或喚醒 agent、壓縮或清空 context、切換模型、儲存對話 |
203
+ | `/effort`、`/collab` | 管理員 | 僅限 Discord:推理強度、collab 模式 |
204
+ | `/stop`、`/load` | ClassicBot 管理員 | 停止目前頻道的 agent;載入已儲存的對話(`/load` 僅限 Discord) |
205
+
206
+ 在 Discord 上,「管理員」指 fleet 管理員或 ClassicBot 管理員(`admin_users`)。在 Telegram 上,`/pause`、`/wake`、`/compact`、`/save` 只限 ClassicBot 管理員。`/usage`、`/status` 這類全 fleet 的指令,在 Discord 的 ClassicBot 頻道裡也能用。誰能 `/start`:Discord 上是允許的伺服器裡的任何人;Telegram 上是私訊時列在 `allowed_users` 的使用者,或在允許的群組裡(`/start@你的bot`)的 ClassicBot 管理員。
207
+
208
+ 在 Discord 上,`/start` 會開啟 collab 模式:@ 這個 bot 就能跟它對話。實際用法請見[使用情境](docs/use-cases.zh-TW.md)。
209
+
210
+ ### 伺服器白名單
211
+
212
+ 用 `~/.agend/classicBot.yaml` 控制哪些 Discord 伺服器可以使用 ClassicBot:
213
+
214
+ ```yaml
215
+ defaults:
216
+ backend: claude-code
217
+ allowed_guilds: # 只有這些伺服器可以 /start
218
+ - "123456789012345678"
219
+ - "9876543210123456789"
220
+ ```
221
+
222
+ - `allowed_guilds` **留空或不寫** → 所有伺服器都允許(預設)
223
+ - **主要伺服器**(fleet.yaml 的 `group_id`)→ 完整權限(topic 模式 + ClassicBot)
224
+ - **白名單內的伺服器** → 只能用 ClassicBot 頻道
225
+ - **不在名單上的伺服器打 `/start`** → 會在 General topic 貼出一則附按鈕的核准請求
226
+ - **熱重載** — 每 30 秒偵測一次變更,不用重啟
227
+
228
+ ### 每個頻道指定 backend
229
+
230
+ 替特定頻道改用別的 backend:
231
+
232
+ ```yaml
233
+ defaults:
234
+ backend: claude-code
235
+ channels:
236
+ "1234567890": # Discord 頻道 ID
237
+ name: dev-help
238
+ backend: kiro-cli # 這個頻道改用 kiro-cli
239
+ ```
240
+
241
+ Backend 的決定順序:頻道 → `defaults.backend` → `fleet.yaml` 的 defaults → `claude-code`
242
+
243
+ ### 存取名單
244
+
245
+ ```yaml
246
+ defaults:
247
+ allowed_guilds: ["123456789012345678"] # Discord 伺服器(留空 = 全部允許)
248
+ allowed_groups: ["-1001234567890"] # Telegram 群組(留空 = 全部允許)
249
+ allowed_users: ["123456789"] # 可以在私訊裡 /start 的 Telegram 使用者(留空 = 全部允許)
250
+ admin_users: ["123456789"] # ClassicBot 管理員(留空 = 沒有人)
251
+ ```
252
+
253
+ ID 請加上引號:Discord 的 ID 太長,寫成 YAML 數字會失真。沒有設定 `admin_users` 時,沒有人能 `/stop` ClassicBot 的 agent,也沒有人能在 Telegram 群組裡啟動 agent。
254
+
255
+ ### 每個頻道用第二個訂閱
256
+
257
+ 跟 fleet 的 instance 一樣,頻道也能改用同一個 backend 的另一組登入:
258
+
259
+ ```yaml
260
+ channels:
261
+ "1234567890":
262
+ backend: kiro-cli
263
+ backend_options:
264
+ kiro-cli:
265
+ credential_profile: work # "" = 回到共用的登入
266
+ ```
173
267
 
174
- 在 Discord 上,`/start` 會開啟 collab 模式:@ 這個 bot 就能跟它對話。伺服器白名單、每個頻道指定不同 backend 的設定方式,請見[英文版 README](README.md#classicbot);實際用法請見[使用情境](docs/use-cases.zh-TW.md)。
268
+ 頻道的 `backend_options` 會覆蓋在 fleet.yaml defaults 的設定之上。目前 kiro-cli 和 Codex 支援 profile;profile 名稱不合法時,agent 會直接不啟動,而不是用錯的帳號跑;改了設定,執行中的 agent 會重啟。記得先讓這個 profile 登入,做法見[英文版設定參考](docs/configuration.md#credential-profiles-multiple-subscriptions-of-one-backend)。`classicBot.yaml` 的其他欄位請見 [Configuration](docs/configuration.zh-TW.md#classicbotyaml)。
175
269
 
176
270
  ## 已知限制
177
271
 
178
272
  - 支援 macOS(launchd)和 Linux(systemd);Windows 請在 WSL 裡執行([Windows 安裝指南](https://songsid.github.io/AgEnD/zh-tw/install-windows/)),不支援原生 Windows
179
273
  - 全域 `enabledPlugins` 裡有官方 Telegram plugin 會造成 409 polling 衝突
180
- - OpenCode 和 Kiro CLI 不讀取 MCP server 的 `instructions` 欄位 — fleet context 和 workflow template 不會注入到這些 backend 的 system prompt。等待上游修復。
181
274
 
182
275
  ## 授權
183
276
 
@@ -25,6 +25,8 @@ export interface AgentEndpointContext extends OutboundContext {
25
25
  readonly dataDir: string;
26
26
  /** Duplicate-reply suppression shared with the MCP path (see reply-dedup.ts). */
27
27
  readonly replyDeduper?: import("./reply-dedup.js").ReplyDeduper;
28
+ /** The MCP path's `reply.stickers` pre-check (#1226): a refused sticker is the reply's error, sent nothing. */
29
+ replyStickerProblem?(adapter: import("./channel/types.js").ChannelAdapter, args: Record<string, unknown>, threadId: string | undefined, worldId: string | undefined): Promise<string | null>;
28
30
  /** Mark an HTTP durable-operation result once its response is written. */
29
31
  markDurableResponseDelivered?(sourceInstance: string, operationId: string): void;
30
32
  handleScheduleCrudHttp(instance: string, op: string, args: Record<string, unknown>): Promise<unknown>;
@@ -3,6 +3,7 @@ import { join } from "node:path";
3
3
  import { randomUUID, timingSafeEqual } from "node:crypto";
4
4
  import { outboundHandlers } from "./outbound-handlers.js";
5
5
  import { routeToolCall } from "./channel/tool-router.js";
6
+ import { replyDedupText } from "./reply-dedup.js";
6
7
  import { EARLY_AGENT_OP_TOOLS, mayUseTool, resolveToolSet, toolRefusedMessage, } from "./tool-permissions.js";
7
8
  /** Read the last real channel target persisted by the instance daemon. */
8
9
  export function readPersistedReplyContext(dataDir, instance) {
@@ -247,7 +248,7 @@ export async function dispatchAgentOperation(ctx, instance, op, args) {
247
248
  // Channel tools (reply, react, edit, download)
248
249
  const channelTools = new Set(["reply", "react", "edit_message", "download_attachment"]);
249
250
  if (channelTools.has(tool)) {
250
- return new Promise((resolve) => {
251
+ return (async () => {
251
252
  const persisted = readPersistedReplyContext(ctx.dataDir, instance);
252
253
  const configuredThreadId = ctx.fleetConfig?.instances[instance]?.topic_id != null
253
254
  ? String(ctx.fleetConfig.instances[instance].topic_id)
@@ -259,40 +260,48 @@ export async function dispatchAgentOperation(ctx, instance, op, args) {
259
260
  const chatId = classicChannelId ?? persisted?.chatId ?? configuredChatId;
260
261
  const threadId = classicChannelId ? undefined : (persisted?.threadId ?? configuredThreadId);
261
262
  if (tool !== "download_attachment" && !chatId) {
262
- resolve({ error: "No active chat context — awaiting inbound message" });
263
- return;
263
+ return { error: "No active chat context — awaiting inbound message" };
264
264
  }
265
265
  const fullArgs = { ...args, chat_id: chatId, ...(threadId ? { thread_id: threadId } : {}) };
266
266
  const adapter = (persisted?.adapterId ? ctx.adapters?.get(persisted.adapterId) : undefined)
267
267
  ?? ctx.getAdapterForInstance?.(instance) ?? ctx.adapter;
268
- // Reply dedup, same ledger as the MCP path. The HTTP variant of the race:
269
- // the agent's shell tool kills a slow `agend-agent reply` (the adapter send
270
- // is waiting out a rate limit and will succeed), the agent re-runs it, and
271
- // the channel shows the reply twice.
272
- const ticket = tool === "reply"
273
- ? ctx.replyDeduper?.begin(instance, String(args.text ?? ""), Array.isArray(args.files) ? args.files : [])
274
- : undefined;
275
- if (ticket?.duplicate) {
276
- ticket.subscribe((result, error) => resolve(error ? { error } : result));
277
- return;
268
+ // The same pre-check as the MCP path, before anything is sent: a sticker this channel cannot send
269
+ // (another server's, an id that is not Telegram's) is the reply's error, not a reply without it.
270
+ if (tool === "reply" && ctx.replyStickerProblem) {
271
+ const problem = await ctx.replyStickerProblem(adapter, fullArgs, threadId, persisted?.adapterId);
272
+ if (problem)
273
+ return { error: problem };
278
274
  }
279
- const handled = routeToolCall(adapter, tool, fullArgs, threadId, (result, error) => {
280
- if (ticket && !ticket.duplicate)
281
- ticket.complete(result, error);
282
- // A successful reply retires the instance's cancel button — mirroring the
283
- // MCP path (handleOutboundFromInstance). HTTP agents (e.g. Antigravity,
284
- // which replies via POST /agent instead of an MCP tool call) never hit
285
- // that path, so without this their cancel button would never clear.
286
- if (!error && tool === "reply")
287
- ctx.clearCancelButton?.(instance);
288
- resolve(error ? { error } : result);
275
+ return new Promise((resolve) => {
276
+ // Reply dedup, same ledger as the MCP path. The HTTP variant of the race:
277
+ // the agent's shell tool kills a slow `agend-agent reply` (the adapter send
278
+ // is waiting out a rate limit and will succeed), the agent re-runs it, and
279
+ // the channel shows the reply twice.
280
+ const ticket = tool === "reply"
281
+ ? ctx.replyDeduper?.begin(instance, replyDedupText(args), Array.isArray(args.files) ? args.files : [])
282
+ : undefined;
283
+ if (ticket?.duplicate) {
284
+ ticket.subscribe((result, error) => resolve(error ? { error } : result));
285
+ return;
286
+ }
287
+ const handled = routeToolCall(adapter, tool, fullArgs, threadId, (result, error) => {
288
+ if (ticket && !ticket.duplicate)
289
+ ticket.complete(result, error);
290
+ // A successful reply retires the instance's cancel button — mirroring the
291
+ // MCP path (handleOutboundFromInstance). HTTP agents (e.g. Antigravity,
292
+ // which replies via POST /agent instead of an MCP tool call) never hit
293
+ // that path, so without this their cancel button would never clear.
294
+ if (!error && tool === "reply")
295
+ ctx.clearCancelButton?.(instance);
296
+ resolve(error ? { error } : result);
297
+ });
298
+ if (!handled) {
299
+ if (ticket && !ticket.duplicate)
300
+ ticket.complete(null, "unhandled");
301
+ resolve({ error: `Unhandled channel tool: ${tool}` });
302
+ }
289
303
  });
290
- if (!handled) {
291
- if (ticket && !ticket.duplicate)
292
- ticket.complete(null, "unhandled");
293
- resolve({ error: `Unhandled channel tool: ${tool}` });
294
- }
295
- });
304
+ })();
296
305
  }
297
306
  // Fleet tools (outbound handlers)
298
307
  const handler = outboundHandlers.get(tool);
@@ -1 +1 @@
1
- {"version":3,"file":"agent-endpoint.js","sourceRoot":"","sources":["../src/agent-endpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAQ/B,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,QAAgB;IACzE,sEAAsE;IACtE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3G,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QACjI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/D,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5F,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,MAAM,MAAM,GAA2B;IACrC,UAAU;IACV,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,qBAAqB;IAC/B,gBAAgB;IAChB,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,eAAe;IACvB,GAAG,EAAE,qBAAqB;IAC1B,iBAAiB,EAAE,iBAAiB;IACpC,SAAS,EAAE,WAAW;IACtB,sBAAsB;IACtB,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,kBAAkB;IAC1B,iBAAiB,EAAE,iBAAiB;IACpC,QAAQ;IACR,aAAa,EAAE,aAAa;IAC5B,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,YAAY;IACzB,aAAa,EAAE,aAAa;IAC5B,cAAc;IACd,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,qBAAqB;IAC/B,aAAa,EAAE,kBAAkB;CAClC,CAAC;AAwBF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,kBAAkB;IAClB,WAAW;IACX,eAAe;IACf,eAAe;IACf,qBAAqB;CACtB,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,GAAyB,EACzB,QAAgB,EAChB,QAA4B;IAE5B,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,mFAAmF;IACnF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC1E,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAoB,EACpB,GAAmB,EACnB,GAAyB;IAEzB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAIlD,CAAC;YAEF,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,OAAO,WAAW,KAAK,QAAQ;gBACnD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YACrE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;mBAC7E,OAAQ,MAAkC,CAAC,YAAY,KAAK,QAAQ;gBACvE,CAAC,CAAE,MAAkC,CAAC,YAAsB;gBAC5D,CAAC,CAAC,SAAS,CAAC;YACd,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE;gBACnC,IAAI,WAAW;oBAAE,GAAG,CAAC,4BAA4B,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yEAAyE;YACzE,gDAAgD;YAChD,MAAM,MAAM,GAAG,GAAG,YAAY,qBAAqB,CAAC,CAAC,CAAC,GAAG;gBACvD,CAAC,CAAC,GAAG,YAAY,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;oBACjD,CAAC,CAAC,GAAG,CAAC;YACR,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,MAAM,GAAG,GAAG,CAAC;IACtB,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,MAAM,GAAG,GAAG,CAAC;IACtB,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAAE,OAAO,oBAAoB,CAAC,EAAE,CAAE,CAAC;IAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC,EAAE,CAAE,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAyB,EACzB,QAAgB,EAChB,EAAU,EACV,IAA6B;IAE7B,4EAA4E;IAC5E,6EAA6E;IAC7E,sBAAsB;IACtB,MAAM,aAAa,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClF,2BAA2B,CAC5B,CAAC;YACF,MAAM,IAAI,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,WAAW,GAAG,aAAa,IAAI,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;QACxE,CAAC,CAAC,UAAU,EAAE;QACd,CAAC,CAAC,SAAS,CAAC;IAEd,gBAAgB;IAChB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IAChB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa;IACb,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,+EAA+E;IAC/E,+EAA+E;IAC/E,0DAA0D;IAC1D,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACnB,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACtF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAC5C,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAClC,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAChE,CAAC;IAED,6BAA6B;IAC7B,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAc,IAAI,IAAI,CAAC,YAAsB,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAqB,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,mCAAmC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,2EAA2E;QAC3E,6CAA6C;QAC7C,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,+CAA+C;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACxF,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACnE,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,IAAI,IAAI;gBAC/E,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,gBAAgB,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ;gBACnG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC1C,CAAC,CAAC,EAAE,CAAC,CAAC;YACR,MAAM,gBAAgB,GAAG,GAAG,CAAC,eAAe,EAAE,sBAAsB,EAAE,CAAC,QAAQ,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,gBAAgB,IAAI,SAAS,EAAE,MAAM,IAAI,gBAAgB,CAAC;YACzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,IAAI,kBAAkB,CAAC,CAAC;YAC5F,IAAI,IAAI,KAAK,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9C,OAAO,CAAC,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5F,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;mBACtF,GAAG,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,OAAQ,CAAC;YAE3D,0EAA0E;YAC1E,4EAA4E;YAC5E,2EAA2E;YAC3E,qCAAqC;YACrC,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO;gBAC7B,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CACvB,QAAQ,EACR,MAAM,CAAE,IAAgC,CAAC,IAAI,IAAI,EAAE,CAAC,EACpD,KAAK,CAAC,OAAO,CAAE,IAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,IAAgC,CAAC,KAAiB,CAAC,CAAC,CAAC,EAAE,CAClH;gBACD,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACjF,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS;oBAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChE,0EAA0E;gBAC1E,wEAAwE;gBACxE,uEAAuE;gBACvE,oEAAoE;gBACpE,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,OAAO;oBAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAClE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS;oBAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACpE,OAAO,CAAC,EAAE,KAAK,EAAE,2BAA2B,IAAI,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,wBAAwB,IAAI,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,KAAc,EAAE,EAAE;YAClD,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChF,OAAO,CAAC,EAAE,GAAI,QAAoC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3C,YAAY,EAAE,QAAQ;YACtB,SAAS,EAAE,SAAS;YACpB,cAAc,EAAE,SAAS;YACzB,iBAAiB,EAAE,SAAS;YAC5B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7F,CAAC,CAAC;QACH,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"agent-endpoint.js","sourceRoot":"","sources":["../src/agent-endpoint.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
+ import { isRemovedBackend, removedBackendMessage } from "./removed.js";
1
2
  import { ClaudeCodeBackend } from "./claude-code.js";
2
- import { GeminiCliBackend } from "./gemini-cli.js";
3
3
  import { CodexBackend } from "./codex.js";
4
4
  import { OpenCodeBackend } from "./opencode.js";
5
5
  import { KiroBackend } from "./kiro.js";
@@ -11,9 +11,6 @@ export function createBackend(name, instanceDir) {
11
11
  switch (name) {
12
12
  case "claude-code":
13
13
  return new ClaudeCodeBackend(instanceDir);
14
- case "gemini-cli":
15
- console.warn("⚠️ gemini-cli is deprecated (stops 2026-06-18). Consider switching to backend: antigravity");
16
- return new GeminiCliBackend(instanceDir);
17
14
  case "codex":
18
15
  return new CodexBackend(instanceDir);
19
16
  case "opencode":
@@ -29,7 +26,10 @@ export function createBackend(name, instanceDir) {
29
26
  case "mock":
30
27
  return new MockBackend(instanceDir);
31
28
  default:
32
- throw new Error(`Unknown backend: ${name}. Available: claude-code, gemini-cli, codex, opencode, kiro-cli, antigravity, grok, muse, mock`);
29
+ // A removed backend says so and names its replacement (#1280); it is never swapped for another silently.
30
+ if (isRemovedBackend(name))
31
+ throw new Error(removedBackendMessage(name));
32
+ throw new Error(`Unknown backend: ${name}. Available: claude-code, codex, opencode, kiro-cli, antigravity, grok, muse, mock`);
33
33
  }
34
34
  }
35
35
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,WAAmB;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;YAC5G,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACvC,KAAK,UAAU;YACb,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,KAAK,aAAa;YAChB,OAAO,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC7C,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,gGAAgG,CAAC,CAAC;IAC9I,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,WAAmB;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC5C,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QACvC,KAAK,UAAU;YACb,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,KAAK,aAAa;YAChB,OAAO,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC7C,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC;YACE,yGAAyG;YACzG,IAAI,gBAAgB,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,oFAAoF,CAAC,CAAC;IAClI,CAAC;AACH,CAAC"}
@@ -1,6 +1,5 @@
1
1
  export type { CliBackend, CliBackendConfig, McpServerEntry, ErrorPattern, ErrorActionType, ErrorType, RuntimeDialog } from "./types.js";
2
2
  export { ClaudeCodeBackend } from "./claude-code.js";
3
- export { GeminiCliBackend } from "./gemini-cli.js";
4
3
  export { CodexBackend } from "./codex.js";
5
4
  export { OpenCodeBackend } from "./opencode.js";
6
5
  export { KiroBackend } from "./kiro.js";
@@ -1,5 +1,4 @@
1
1
  export { ClaudeCodeBackend } from "./claude-code.js";
2
- export { GeminiCliBackend } from "./gemini-cli.js";
3
2
  export { CodexBackend } from "./codex.js";
4
3
  export { OpenCodeBackend } from "./opencode.js";
5
4
  export { KiroBackend } from "./kiro.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -30,7 +30,7 @@ type KiroProbeRunner = (binaryPath: string, args: string[]) => string;
30
30
  * AgEnD must not pick a replacement on the user's behalf.
31
31
  */
32
32
  export declare function kiroUnavailableModelPickerActive(pane: string): boolean;
33
- interface KiroLaunchPromptSpec {
33
+ export interface KiroLaunchPromptSpec {
34
34
  /** Text that identifies the prompt; the LAST occurrence heads it. */
35
35
  header: string;
36
36
  /** Option labels, in screen order (matched as a row prefix). */
@@ -54,6 +54,15 @@ export interface KiroLaunchPromptState {
54
54
  * it is held for a human, never answered.
55
55
  */
56
56
  export declare function kiroLaunchPromptState(pane: string, spec: KiroLaunchPromptSpec): KiroLaunchPromptState;
57
+ /**
58
+ * #1308: kiro-cli 2.28.0's Classic nudge (crates/chat-cli/src/launch/classic_nudge.rs), shown before a Classic
59
+ * session starts, including one launched with the pinned `--legacy-ui --agent-engine=v1`. "Switch to 3.0" saves v3 as
60
+ * the machine-wide default and reruns the session in 3.0; "Remind me later" only stores a 7-day snooze
61
+ * (`classicNudge.snoozeUntil`). It has no "don't ask again", so it returns weekly. Captured live from 2.28.0
62
+ * (tests/fixtures/kiro-2.28.0-classic-nudge/). The header is the description's first words, which stay on its first
63
+ * row however narrow the pane; the rest of the description re-wraps with the width.
64
+ */
65
+ export declare const KIRO_CLASSIC_NUDGE: KiroLaunchPromptSpec;
57
66
  /**
58
67
  * The values `chat --help` lists for --agent-engine, or null without the flag.
59
68
  * clap prints them as `[possible values: v2, v1, v3]` a few lines below the
@@ -229,6 +229,18 @@ const KIRO_AGENT_UPGRADE = {
229
229
  header: "Your agent configs are still in the 2.0 format",
230
230
  options: ["Enable auto-upgrade", "Not now"],
231
231
  };
232
+ /**
233
+ * #1308: kiro-cli 2.28.0's Classic nudge (crates/chat-cli/src/launch/classic_nudge.rs), shown before a Classic
234
+ * session starts, including one launched with the pinned `--legacy-ui --agent-engine=v1`. "Switch to 3.0" saves v3 as
235
+ * the machine-wide default and reruns the session in 3.0; "Remind me later" only stores a 7-day snooze
236
+ * (`classicNudge.snoozeUntil`). It has no "don't ask again", so it returns weekly. Captured live from 2.28.0
237
+ * (tests/fixtures/kiro-2.28.0-classic-nudge/). The header is the description's first words, which stay on its first
238
+ * row however narrow the pane; the rest of the description re-wraps with the width.
239
+ */
240
+ export const KIRO_CLASSIC_NUDGE = {
241
+ header: "Classic is being deprecated with the Kiro CLI 3.0",
242
+ options: ["Switch to 3.0 and upgrade my agent configs", "Remind me later"],
243
+ };
232
244
  function kiroLaunchPromptDialogs(spec, name, key, keep) {
233
245
  const pattern = new RegExp(spec.header.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
234
246
  const state = (pane) => kiroLaunchPromptState(pane, spec);
@@ -262,6 +274,7 @@ function kiroLaunchPromptDialogs(spec, name, key, keep) {
262
274
  const KIRO_ENGINE_PROMPT_DIALOGS = [
263
275
  ...kiroLaunchPromptDialogs(KIRO_V3_EASE_IN, "Kiro V3 ease-in prompt", "kiro-v3-ease-in", 1),
264
276
  ...kiroLaunchPromptDialogs(KIRO_AGENT_UPGRADE, "Kiro 3.0 agent-config upgrade prompt", "kiro-agent-upgrade", 1),
277
+ ...kiroLaunchPromptDialogs(KIRO_CLASSIC_NUDGE, "Kiro Classic deprecation nudge", "kiro-classic-nudge", 1),
265
278
  ];
266
279
  function parseSemver(value) {
267
280
  const match = value?.match(/\b(\d+)\.(\d+)\.(\d+)\b/);