@songsid/agend 2.3.2-beta.16 → 2.3.2-beta.17

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.
@@ -38,11 +38,13 @@ For `backend: kiro-cli` instances, `kiro_ui` selects the CLI's UI/agent profile:
38
38
  instances:
39
39
  my-kiro:
40
40
  backend: kiro-cli
41
- kiro_ui: legacy # default — current stable behavior
42
- # kiro_ui: tui # try the newer TUI
41
+ kiro_ui: tui # what every new kiro instance is written with (#2598)
42
+ # kiro_ui: legacy # the classic engine; also what an entry with no kiro_ui runs
43
43
  ```
44
44
  `kiro_ui: v3` is refused by validation — do not set it.
45
- Leave unset (or `legacy`) unless testing a newer profile. Ignored by other backends.
45
+ kiro-cli 3.0 drops the classic engine. Never change `kiro_ui` by hand to move an instance: that starts it on an
46
+ empty conversation. An existing classic instance moves with its conversation through `migrate_kiro_instance`
47
+ (the kiro-engine-migration skill). Ignored by other backends.
46
48
 
47
49
  ## Reply completion guard
48
50
 
@@ -35,7 +35,7 @@ agend update --yes # from a fleet session: the installed channel's la
35
35
  agend update --version 2.2.0 --yes # a specific version
36
36
  ```
37
37
 
38
- It installs the selected release, checks the install, and restarts the fleet service. `--alpha` / `--beta` / `--stable` pick a channel; details in docs/cli.md.
38
+ It installs the selected release, checks the install, and restarts the fleet service. `--alpha` / `--beta` / `--stable` pick a channel; details in docs/cli.md. A beta install stays on the beta channel: to move it to the stable release (for example from a 2.3.2 beta to 2.3.2), use `agend update --stable --yes`, and only when the user asked for it.
39
39
 
40
40
  **Manual restart (if update isn't needed):**
41
41
  ```bash
@@ -43,6 +43,7 @@ The user has already been shown the plain notice in this topic. When they ask, e
43
43
  - **Go back to a kiro-cli version that ran them.** `history` shows which versions launches were prepared
44
44
  with; the user knows which of those worked. Installing such a version again is the likely way back, but
45
45
  do not promise it. The user, or whoever administers the host, does this; you do not.
46
+ - **Move it to the TUI engine** with its conversation (below), if the user wants that.
46
47
  - **Wait for AgEnD's migration to V3.** It will convert each conversation once, verify it, and switch the
47
48
  instance, one instance at a time and only with the user's confirmation. It is not available yet: say so
48
49
  plainly, and never promise a date.
@@ -73,11 +74,34 @@ or classic as a recovery shortcut. Archives are private and restorable with `age
73
74
  The raw Log-history gate remains closed: the verification proves the launched/pinned reader, not ongoing pane
74
75
  session identity after `/chat` or `/clear`.
75
76
 
77
+ - **After a `/compact`** classic kiro continues under a new conversation id. The move follows the same proven
78
+ compaction chain a classic restart follows and carries the newest conversation. When the chain can't be proven
79
+ (the store can't be read, two conversations continue the old one, or one belongs to another instance), the move
80
+ is refused and nothing changes: tell the user why, don't retry with `start_fresh`.
76
81
  - After the move, `kiro_engine_status` shows `kiro_ui: tui` and `engine_floor: "tui"`.
77
82
  - It is one-way. AgEnD refuses to launch a moved instance on classic again, because that would resume the frozen
78
83
  classic copy and lose everything done since. A refusal that names the engine floor means someone set `kiro_ui`
79
84
  back. The fix is to set it to `tui` again, never to remove the floor.
80
85
 
86
+ ## Other kiro behaviour users ask about
87
+
88
+ - **kiro never updates itself under AgEnD.** Every kiro process AgEnD starts carries `KIRO_NO_AUTO_UPDATE=1`, so a
89
+ self-update to kiro-cli 3.0 can't break classic instances. `app.disableAutoupdates: true` in
90
+ `~/.kiro/settings/cli.json` also stops kiro-cli's own updates; that file is the user's to change, not yours.
91
+ - **Classic restarts follow a `/compact` (#2714, #2738)** to the conversation kiro kept writing, only on proof it is
92
+ this instance's. When it can't be proven, or the check passes its 30 s / 2 GiB limit, the instance resumes the
93
+ conversation on record and the Log tab says why.
94
+ - **Two conversations after an interrupted carry (#2753).** When a stopped TUI instance has its original carried
95
+ conversation and a newer one with work, recovery holds instead of choosing. `reconcile_kiro_instance` (full and
96
+ coordinator tool sets) asks a fleet admin to confirm, in General, keeping the original and archiving the named
97
+ newer one intact. Offer it only after the user chose those exact ids; docs/kiro-reconciliation.md explains it.
98
+ - **"Kiro's terminal is in use by another program" (#2682).** While a kiro pane runs `/editor`, `/transcript`, a
99
+ `!` command or a focused `/kvim` panel (legacy: `/editor`, `/reply`, `!`), AgEnD holds deliveries. Tell the user
100
+ to finish or close that program in the instance's pane; held messages go in once kiro's input row is back.
101
+ - **A retired model (#2648).** An instance with no model of its own whose saved conversation uses a model kiro no
102
+ longer offers resumes on kiro's default model and says so once. One configured to use that model is told once to
103
+ pick another; it is never switched.
104
+
81
105
  ## One kiro agent per instance (#906)
82
106
 
83
107
  Since kiro-cli 2.21, each AgEnD kiro instance (tui / v2 engine) runs as its own kiro agent, holding only its own
@@ -151,7 +151,7 @@ for ts, sid in sorted(out, reverse=True):
151
151
  ```
152
152
  It opens many files, but only one line each, so it stays cheap.
153
153
 
154
- **Restore:** `codex exec resume <session-id> "<prompt>"` non-interactively, or `codex resume <session-id>` for the TUI (bare `codex resume` opens a picker). AgEnD launches `codex resume <id>` with the thread recorded for this exact directory; `codex resume --last` is only its fallback (an unreadable session DB, no other codex instance in the repository). The ID argument also accepts a session *name*.
154
+ **Restore:** `codex exec resume <session-id> "<prompt>"` non-interactively, or `codex resume <session-id>` for the TUI (bare `codex resume` opens a picker). AgEnD launches `codex resume <id>` with the thread recorded for this exact directory; `codex resume --last` is only its fallback (an unreadable session DB, no other codex instance in the repository). On a machine where Codex never ran, a missing session DB means a new conversation, with no warning (#2743). The ID argument also accepts a session *name*.
155
155
 
156
156
  **Summary:** ❌ none available without parsing. `session_meta` carries only id/cwd/timestamp; to describe a session you must read further `event_msg` lines. Tell the user the timestamp and let them pick, rather than guessing at a topic.
157
157
 
@@ -18,7 +18,7 @@ instances:
18
18
  ```
19
19
 
20
20
  **kiro_ui 模式差異:**
21
- - `kiro_ui: tui`:Kiro v2 TUI(需明確設定;預設是 `legacy`);本 skill 適用。
21
+ - `kiro_ui: tui`:Kiro v2 TUI(新建立的 kiro instance 都會寫入這個值;沒設定 `kiro_ui` 的既有項目仍是 `legacy`);本 skill 適用。
22
22
  - `kiro_ui: v3`:目前會被設定驗證拒絕,不要設定。
23
23
  - `kiro_ui: legacy`:舊 UI,互動行為不同,本 skill 不適用。
24
24
 
@@ -306,7 +306,9 @@ tools are not in your list), you can publish them yourself instead of asking a p
306
306
  any failure the old one stays) and its previous version is kept. If a stored office's layout overrides would no
307
307
  longer fit (a seat count changed, a seat left its area, an item is gone), check and upload refuse with the office
308
308
  and the rule: fix the pack, or send `drop_invalid_overrides: true` to drop exactly those entries (the result names
309
- them). With `"approve"` the answer is `{ pending }`: it waits for an admin's yes — say so; do not upload it again.
309
+ them). With `"approve"` the answer is `{ pending }`: it waits for an admin's yes — say so; do not upload it again. A pending change that drops layout entries is applied
310
+ only if it still drops exactly the entries its notice named: if an office was edited meanwhile, the approval is
311
+ refused and you send the change again (#2695).
310
312
  - `office_pack_restore { id }` brings back the previous version (the replaced one becomes the previous);
311
313
  `office_pack_delete { id, keep_previous? }`; `office_set_style { office, pack }` points a stored office at a pack or a
312
314
  built-in style (pixel, studio, cozy).
@@ -314,7 +314,9 @@ tools are not in your list), you can publish them yourself instead of asking a p
314
314
  any failure the old one stays) and its previous version is kept. If a stored office's layout overrides would no
315
315
  longer fit (a seat count changed, a seat left its area, an item is gone), check and upload refuse with the office
316
316
  and the rule: fix the pack, or send `drop_invalid_overrides: true` to drop exactly those entries (the result names
317
- them). With `"approve"` the answer is `{ pending }`: it waits for an admin's yes — say so; do not upload it again.
317
+ them). With `"approve"` the answer is `{ pending }`: it waits for an admin's yes — say so; do not upload it again. A pending change that drops layout entries is applied
318
+ only if it still drops exactly the entries its notice named: if an office was edited meanwhile, the approval is
319
+ refused and you send the change again (#2695).
318
320
  - `office_pack_restore { id }` brings back the previous version (the replaced one becomes the previous);
319
321
  `office_pack_delete { id, keep_previous? }`; `office_set_style { office, pack }` points a stored office at a pack or a
320
322
  built-in style (pixel, studio, cozy).
@@ -83,7 +83,7 @@ who is not a fleet admin gets a code privately, by sending `/web` or from an adm
83
83
  as their own Discord or Telegram account. What a guest sees:
84
84
  - **With explicit grants** (`web.guests.grants`, set in Settings → Access & security → Guests): exactly the agents an
85
85
  admin granted that person, nothing else (default deny once the key exists). The admin picks the person from people
86
- AgEnD has seen writing to an agent, ticks their agents, saves (giving access or more agents waits for a fleet admin in
86
+ AgEnD has seen writing to an agent, ticks their agents (or ClassicBot rooms, #2667), saves (giving access or more agents waits for a fleet admin in
87
87
  General; taking away applies at once and ends their sessions), then presses **Send sign-in code**, a DM, never a post.
88
88
  Each code sent and each change to someone's access is in the event log (`guest_code_sent`, `guest_grant_changed`),
89
89
  shown to admins under **Recent changes** in that section (no agent's Log tab shows them).
@@ -316,8 +316,8 @@ starts with the first link and stops with the last; the token is shown once. The
316
316
  says to try again in a few minutes (no retry). `web.office_share.enabled: false` turns it off and ends open links.
317
317
 
318
318
  The Office fills the Fleet panel and moves like the Canvas (#2540): drag to pan, the wheel or a pinch to zoom,
319
- **+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them) or the `+ - 0` keys
320
- (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
319
+ **+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them; on a phone, outside
320
+ fullscreen, a row along the top of the scene) or the `+ - 0` keys (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
321
321
  is all in view, #2737). It takes the whole panel: the
322
322
  Fleet area's full width, down to the window's foot. **Fit** shows the whole scene as large as the panel allows
323
323
  (any scale, so it fills the panel's width or height); **Fill** (a toggle, kept per office) fills the panel instead,
@@ -384,7 +384,8 @@ to that instance's Log).
384
384
  colours only; status colours (Needs you count, state dots, errors, focus ring) never change. The header follows the
385
385
  page, not the chat. Off with agents' themes off or `?safe=1`.
386
386
 
387
- Phone layout: bottom tabs Chat, Needs you, Fleet, Settings. Chat is current on any of an agent's pages and goes to its
387
+ Phone layout: bottom tabs Chat, Needs you, Fleet, Settings. Settings opens on its list of sections (search on top);
388
+ each section opens on its own page with "‹ Settings", and dialogs and the setup wizard are full-screen sheets. Chat is current on any of an agent's pages and goes to its
388
389
  chat; View, Log and Details are the switch under the header.
389
390
 
390
391
  ## Usage and the cache report
@@ -501,7 +502,10 @@ signed in? kiro logs out first; **Use a temporary public link** where allowed),
501
502
  sign-in terminal** + its one-time access code (this browser only, no DM). While it runs every admin page shows
502
503
  "Signing in to X (started on <device>)" with **Open**; another browser sees no code and may **Cancel sign-in**. Ends
503
504
  when the browser session ends. A missing CLI is not installed here (the dialog says the install command). agy and
504
- opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`).
505
+ opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`). Default Kiro, Claude Code and Codex
506
+ accounts sign in with named browser controls instead (#2599): Kiro's account method, Start URL and region and Claude's
507
+ code are entered in the browser, Codex shows its link and device code; credential profiles keep the dialog above. A
508
+ backend skipped at first setup shows in Needs you even before an agent uses it.
505
509
 
506
510
  **Agents** — **New agent**; per agent **Settings**, **Pause / Wake**, **Start / Stop** (direct), ⋯ **Delete agent**
507
511
  (staged; on Apply it waits for a fleet admin's confirmation in General, then the agent is stopped and removed, as
@@ -538,10 +542,12 @@ Advanced **Context lines** (these restart the room's agent); Tool progress and R
538
542
 
539
543
  **Agent defaults** — **Project folders** (`project_roots`: where New agent may put an agent; empty = anywhere;
540
544
  changing it waits for a fleet admin's OK) and the fleet defaults (`defaults.*`): **Language (bot replies)** (`locale`: Auto / en / zh-TW), default
541
- backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard; Advanced: tool set, agent mode, log
545
+ backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard, **Native replies trigger ClassicBot**
546
+ (`reply_triggers`: a native reply triggers a ClassicBot bot; off by default, #2576); Advanced: tool set, agent mode, log
542
547
  level, **Hang detector enabled** / **Stuck timeout** (`hang_detector.*`), **Startup concurrency** (1–20) and
543
548
  **Stagger delay** (`startup.*`, restart AgEnD). ClassicBot defaults (in Chat & connections; `classicBot.yaml defaults.*`): default backend, tool
544
- progress, reply guard, **ClassicBot admins**, **Allowed guilds**.
549
+ progress, reply guard, **Native replies trigger ClassicBot** (`reply_triggers`, also per room), **ClassicBot admins**,
550
+ **Allowed guilds**.
545
551
 
546
552
  **Access & security** (sessions, browser terminal, public link and fixed address, guests, web authority; web echo is in Chat & connections, the Log tab and usage over the link in **Web dashboard**) — all apply at once; loosening waits for an admin; disabled over a public link.
547
553
  | Label | Key |
@@ -568,7 +574,10 @@ connections are off (and the setup wizard); while those have unsaved changes, th
568
574
 
569
575
  **Setup wizard** — agent (backend, directory, name) → platform → token and server/group, your user ID → preview →
570
576
  **Create and start**. The directory may be left empty: the agent gets its own folder, `~/.agend/workspaces/<name>`
571
- (shown under the field); one that is entered must be absolute.
577
+ (shown under the field); one that is entered must be absolute. On a Telegram or Discord connection the first agent
578
+ is named `general` by default and becomes the fleet's General, in the chat's General topic or channel, when its
579
+ directory is left empty; with a directory it is the worker `agent-1` and the fleet adds its General in its own folder.
580
+ Once a fleet has a connection or a General, a new agent can't be called `general`.
572
581
 
573
582
  **First setup, before any fleet** (`agend setup`, the page the Windows installer opens): the same steps on its own
574
583
  page, in English or 繁體中文 (the browser's language; the button at the top switches). The working directory may be
@@ -91,7 +91,7 @@ who is not a fleet admin gets a code privately, by sending `/web` or from an adm
91
91
  as their own Discord or Telegram account. What a guest sees:
92
92
  - **With explicit grants** (`web.guests.grants`, set in Settings → Access & security → Guests): exactly the agents an
93
93
  admin granted that person, nothing else (default deny once the key exists). The admin picks the person from people
94
- AgEnD has seen writing to an agent, ticks their agents, saves (giving access or more agents waits for a fleet admin in
94
+ AgEnD has seen writing to an agent, ticks their agents (or ClassicBot rooms, #2667), saves (giving access or more agents waits for a fleet admin in
95
95
  General; taking away applies at once and ends their sessions), then presses **Send sign-in code**, a DM, never a post.
96
96
  Each code sent and each change to someone's access is in the event log (`guest_code_sent`, `guest_grant_changed`),
97
97
  shown to admins under **Recent changes** in that section (no agent's Log tab shows them).
@@ -331,8 +331,8 @@ starts with the first link and stops with the last; the token is shown once. The
331
331
  says to try again in a few minutes (no retry). `web.office_share.enabled: false` turns it off and ends open links.
332
332
 
333
333
  The Office fills the Fleet panel and moves like the Canvas (#2540): drag to pan, the wheel or a pinch to zoom,
334
- **+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them) or the `+ - 0` keys
335
- (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
334
+ **+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them; on a phone, outside
335
+ fullscreen, a row along the top of the scene) or the `+ - 0` keys (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
336
336
  is all in view, #2737). It takes the whole panel: the
337
337
  Fleet area's full width, down to the window's foot. **Fit** shows the whole scene as large as the panel allows
338
338
  (any scale, so it fills the panel's width or height); **Fill** (a toggle, kept per office) fills the panel instead,
@@ -399,7 +399,8 @@ to that instance's Log).
399
399
  colours only; status colours (Needs you count, state dots, errors, focus ring) never change. The header follows the
400
400
  page, not the chat. Off with agents' themes off or `?safe=1`.
401
401
 
402
- Phone layout: bottom tabs Chat, Needs you, Fleet, Settings. Chat is current on any of an agent's pages and goes to its
402
+ Phone layout: bottom tabs Chat, Needs you, Fleet, Settings. Settings opens on its list of sections (search on top);
403
+ each section opens on its own page with "‹ Settings", and dialogs and the setup wizard are full-screen sheets. Chat is current on any of an agent's pages and goes to its
403
404
  chat; View, Log and Details are the switch under the header.
404
405
 
405
406
  ## Usage and the cache report
@@ -516,7 +517,10 @@ signed in? kiro logs out first; **Use a temporary public link** where allowed),
516
517
  sign-in terminal** + its one-time access code (this browser only, no DM). While it runs every admin page shows
517
518
  "Signing in to X (started on <device>)" with **Open**; another browser sees no code and may **Cancel sign-in**. Ends
518
519
  when the browser session ends. A missing CLI is not installed here (the dialog says the install command). agy and
519
- opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`).
520
+ opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`). Default Kiro, Claude Code and Codex
521
+ accounts sign in with named browser controls instead (#2599): Kiro's account method, Start URL and region and Claude's
522
+ code are entered in the browser, Codex shows its link and device code; credential profiles keep the dialog above. A
523
+ backend skipped at first setup shows in Needs you even before an agent uses it.
520
524
 
521
525
  **Agents** — **New agent**; per agent **Settings**, **Pause / Wake**, **Start / Stop** (direct), ⋯ **Delete agent**
522
526
  (staged; on Apply it waits for a fleet admin's confirmation in General, then the agent is stopped and removed, as
@@ -553,10 +557,12 @@ Advanced **Context lines** (these restart the room's agent); Tool progress and R
553
557
 
554
558
  **Agent defaults** — **Project folders** (`project_roots`: where New agent may put an agent; empty = anywhere;
555
559
  changing it waits for a fleet admin's OK) and the fleet defaults (`defaults.*`): **Language (bot replies)** (`locale`: Auto / en / zh-TW; read at startup: restart AgEnD), default
556
- backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard; Advanced: tool set, agent mode, log
560
+ backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard, **Native replies trigger ClassicBot**
561
+ (`reply_triggers`: a native reply triggers a ClassicBot bot; off by default, #2576); Advanced: tool set, agent mode, log
557
562
  level, **Hang detector enabled** / **Stuck timeout** (`hang_detector.*`), **Startup concurrency** (1–20) and
558
563
  **Stagger delay** (`startup.*`, used from the next agent start, no restart). ClassicBot defaults (in Chat & connections; `classicBot.yaml defaults.*`): default backend, tool
559
- progress, reply guard, **ClassicBot admins**, **Allowed guilds**.
564
+ progress, reply guard, **Native replies trigger ClassicBot** (`reply_triggers`, also per room), **ClassicBot admins**,
565
+ **Allowed guilds**.
560
566
 
561
567
  **Access & security** (sessions, browser terminal, public link and fixed address, guests, web authority; web echo is in Chat & connections, the Log tab and usage over the link in **Web dashboard**) — all apply at once; loosening waits for an admin; disabled over a public link.
562
568
  | Label | Key |
@@ -583,7 +589,10 @@ connections are off (and the setup wizard); while those have unsaved changes, th
583
589
 
584
590
  **Setup wizard** — agent (backend, directory, name) → platform → token and server/group, your user ID → preview →
585
591
  **Create and start**. The directory may be left empty: the agent gets its own folder, `~/.agend/workspaces/<name>`
586
- (shown under the field); one that is entered must be absolute.
592
+ (shown under the field); one that is entered must be absolute. On a Telegram or Discord connection the first agent
593
+ is named `general` by default and becomes the fleet's General, in the chat's General topic or channel, when its
594
+ directory is left empty; with a directory it is the worker `agent-1` and the fleet adds its General in its own folder.
595
+ Once a fleet has a connection or a General, a new agent can't be called `general`.
587
596
 
588
597
  **First setup, before any fleet** (`agend setup`, the page the Windows installer opens): the same steps on its own
589
598
  page, in English or 繁體中文 (the browser's language; the button at the top switches). The working directory may be
@@ -19,15 +19,20 @@ export async function planKiroReconciliation(deps, name, keep, archive, rollback
19
19
  export function kiroReconciliationPrompt(p) {
20
20
  return t(p.plan.rollbackReceipt ? "kiro_reconcile.rollback_prompt" : "kiro_reconcile.prompt", p.name, p.input.sessionId, p.input.archiveId);
21
21
  }
22
+ function failureText(name, reason, receipt) {
23
+ // Reasons are complete localized sentences; the outer notice owns the separator.
24
+ return t(receipt ? "kiro_reconcile.failed" : "kiro_reconcile.failed_no_receipt", name, reason.replace(/[.。]+\s*$/, ""));
25
+ }
22
26
  export async function applyKiroReconciliation(deps, p, actor) {
23
27
  let lease;
24
28
  try {
25
29
  lease = deps.reserve(p.name);
26
30
  }
27
31
  catch (error) {
28
- return { ok: false, text: t("kiro_reconcile.failed", p.name, error.message) };
32
+ return { ok: false, text: failureText(p.name, error.message) };
29
33
  }
30
34
  let receipt;
35
+ let storageStarted = false;
31
36
  const current = () => {
32
37
  if (!lease.current())
33
38
  throw new Error(t("kiro_reconcile.changed"));
@@ -44,6 +49,9 @@ export async function applyKiroReconciliation(deps, p, actor) {
44
49
  current();
45
50
  if (model !== p.input.model)
46
51
  throw new Error(t("kiro_reconcile.changed"));
52
+ // A rejected preflight has not touched storage or launched anything. Once the
53
+ // worker begins, even a failure without a returned receipt requires a stop.
54
+ storageStarted = true;
47
55
  const result = await deps.store(p.input, p.plan, actor);
48
56
  receipt = result.receipt;
49
57
  current();
@@ -63,7 +71,7 @@ export async function applyKiroReconciliation(deps, p, actor) {
63
71
  }
64
72
  catch (error) {
65
73
  let reason = error instanceof SyntaxError ? "Malformed reconciliation data" : error.message;
66
- if (lease.current()) {
74
+ if (storageStarted && lease.current()) {
67
75
  try {
68
76
  await deps.stop(p.name);
69
77
  }
@@ -71,7 +79,7 @@ export async function applyKiroReconciliation(deps, p, actor) {
71
79
  reason += " " + t("kiro_migrate.stop_unconfirmed");
72
80
  }
73
81
  }
74
- return { ok: false, ...(receipt ? { receipt } : {}), text: t("kiro_reconcile.failed", p.name, reason) };
82
+ return { ok: false, ...(receipt ? { receipt } : {}), text: failureText(p.name, reason, receipt) };
75
83
  }
76
84
  finally {
77
85
  lease.release();
@@ -1 +1 @@
1
- {"version":3,"file":"kiro-reconcile.js","sourceRoot":"","sources":["../src/kiro-reconcile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kiro-reconcile.js","sourceRoot":"","sources":["../src/kiro-reconcile.ts"],"names":[],"mappings":"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"}
package/dist/locale.js CHANGED
@@ -419,10 +419,12 @@ const enMessages = {
419
419
  "kiro_reconcile.audit_failed": "Reconciliation audit log is unavailable; no changes were made.",
420
420
  "kiro_reconcile.stopped_required": "Reconciliation requires a stopped TUI fleet instance with an explicit model and directory.",
421
421
  "kiro_reconcile.changed": "Reconciliation evidence or instance ownership changed; request confirmation again.",
422
+ "kiro_reconcile.applying": "Reconciling the saved conversations of {0}…",
422
423
  "kiro_reconcile.prompt": "Reconcile {0}?\nKeep original conversation: {1}\nArchive intact (never delete): {2}\nPreserve both V2 file sets, repair the original pin, archive its frozen classic duplicate, then verify two starts with the same model. A failure stops in place. A receipt allows rollback into a stopped hold.",
423
424
  "kiro_reconcile.rollback_prompt": "Roll back reconciliation for {0}?\nKeep ID: {1}\nArchived ID: {2}\nRestore the prior AgEnD identity and exact frozen classic index rows into a stopped hold. All V2 files and archives stay intact. Nothing is started.",
424
425
  "kiro_reconcile.done": "{0}: original conversation restored and plain restart verified. Archive/rollback receipt: {1}. Both V2 conversations are preserved.",
425
426
  "kiro_reconcile.rolled_back": "{0}: prior identity restored; instance stays stopped. Archives retained. Receipt: {1}.",
427
+ "kiro_reconcile.failed_no_receipt": "{0}: reconciliation did not complete: {1}. No fresh or classic fallback. No receipt was returned; inspect the Log before retrying.",
426
428
  "kiro_reconcile.failed": "{0}: reconciliation did not complete: {1}. No fresh or classic fallback. Inspect the receipt before retrying.",
427
429
  "kiro_migrate.requested": "Asked in General for a fleet admin's confirmation. Nothing changes until it is confirmed.",
428
430
  "kiro_migrate.no_general": "There is no General topic to ask a fleet admin in, so the move cannot be confirmed.",
@@ -1836,10 +1838,12 @@ const zhTWMessages = {
1836
1838
  "kiro_reconcile.audit_failed": "對話處理的稽核紀錄目前無法寫入,沒有進行任何變更。",
1837
1839
  "kiro_reconcile.stopped_required": "接續處理需要已停止的 TUI fleet agent,並明確設定模型與目錄。",
1838
1840
  "kiro_reconcile.changed": "接續處理的證據或 agent 擁有權已改變,請重新要求確認。",
1841
+ "kiro_reconcile.applying": "正在處理 {0} 的已儲存對話…",
1839
1842
  "kiro_reconcile.prompt": "要處理 {0} 的對話嗎?\n保留原對話:{1}\n完整封存(絕不刪除):{2}\n會保留兩份 V2 檔案、修復原對話登記、備份並移出凍結的經典副本,再以相同模型驗證兩次啟動。失敗就停止;可用收據復原到停止等待的狀態。",
1840
1843
  "kiro_reconcile.rollback_prompt": "要復原 {0} 的對話處理嗎?\n保留的對話 ID:{1}\n封存的對話 ID:{2}\n會復原先前的 AgEnD 登記與凍結的經典索引原始資料,並維持停止;所有 V2 檔與封存都保留,不啟動任何 agent。",
1841
1844
  "kiro_reconcile.done": "{0}:已接回原對話,並驗證一般重啟。封存/復原收據:{1}。兩份 V2 對話都已保留。",
1842
1845
  "kiro_reconcile.rolled_back": "{0}:已復原先前登記並維持停止,封存仍保留。收據:{1}。",
1846
+ "kiro_reconcile.failed_no_receipt": "{0}:對話處理未完成:{1}。沒有改開新對話或切回經典模式;未取得收據,重試前請先查看紀錄。",
1843
1847
  "kiro_reconcile.failed": "{0}:對話處理未完成:{1}。沒有改開新對話或切回經典模式;重試前請先檢查收據。",
1844
1848
  "kiro_migrate.requested": "已在 General 請 fleet admin 確認。確認前不會有任何變更。",
1845
1849
  "kiro_migrate.no_general": "沒有 General topic 可以請 fleet admin 確認,所以無法搬移。",