@songsid/agend 2.3.2-beta.13 → 2.3.2-beta.15

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 (105) hide show
  1. package/dist/backend/codex-session-lookup.d.ts +15 -0
  2. package/dist/backend/codex-session-lookup.js +58 -0
  3. package/dist/backend/codex-session-lookup.js.map +1 -1
  4. package/dist/backend/codex.js +15 -4
  5. package/dist/backend/codex.js.map +1 -1
  6. package/dist/backend/kiro-classic-archive.d.ts +5 -0
  7. package/dist/backend/kiro-classic-archive.js +187 -9
  8. package/dist/backend/kiro-classic-archive.js.map +1 -1
  9. package/dist/backend/kiro-classic-links.d.ts +24 -0
  10. package/dist/backend/kiro-classic-links.js +135 -0
  11. package/dist/backend/kiro-classic-links.js.map +1 -0
  12. package/dist/backend/kiro-identity.d.ts +20 -3
  13. package/dist/backend/kiro-identity.js +26 -39
  14. package/dist/backend/kiro-identity.js.map +1 -1
  15. package/dist/backend/kiro-reconcile-store.d.ts +27 -0
  16. package/dist/backend/kiro-reconcile-store.js +344 -0
  17. package/dist/backend/kiro-reconcile-store.js.map +1 -0
  18. package/dist/backend/kiro-v2-store-worker.js +17 -3
  19. package/dist/backend/kiro-v2-store-worker.js.map +1 -1
  20. package/dist/backend/kiro-v2-store.d.ts +23 -1
  21. package/dist/backend/kiro-v2-store.js +22 -12
  22. package/dist/backend/kiro-v2-store.js.map +1 -1
  23. package/dist/backend/kiro.d.ts +4 -0
  24. package/dist/backend/kiro.js +25 -3
  25. package/dist/backend/kiro.js.map +1 -1
  26. package/dist/channel/mcp-tools.js +3 -1
  27. package/dist/channel/mcp-tools.js.map +1 -1
  28. package/dist/cli.js +17 -4
  29. package/dist/cli.js.map +1 -1
  30. package/dist/fleet-manager.d.ts +9 -1
  31. package/dist/fleet-manager.js +100 -11
  32. package/dist/fleet-manager.js.map +1 -1
  33. package/dist/general-instance.d.ts +24 -0
  34. package/dist/general-instance.js +53 -0
  35. package/dist/general-instance.js.map +1 -1
  36. package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +2 -0
  37. package/dist/general-knowledge/skills/web-appearance/SKILL.md +2 -0
  38. package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +6 -4
  39. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +6 -4
  40. package/dist/kiro-migrate.d.ts +4 -3
  41. package/dist/kiro-migrate.js +13 -8
  42. package/dist/kiro-migrate.js.map +1 -1
  43. package/dist/kiro-reconcile.d.ts +21 -0
  44. package/dist/kiro-reconcile.js +80 -0
  45. package/dist/kiro-reconcile.js.map +1 -0
  46. package/dist/kiro-tui-forensic.d.ts +7 -0
  47. package/dist/kiro-tui-forensic.js +17 -3
  48. package/dist/kiro-tui-forensic.js.map +1 -1
  49. package/dist/locale.js +24 -0
  50. package/dist/locale.js.map +1 -1
  51. package/dist/log-service.js +1 -1
  52. package/dist/log-service.js.map +1 -1
  53. package/dist/office-share-page.d.ts +3 -1
  54. package/dist/office-share-page.js +7 -2
  55. package/dist/office-share-page.js.map +1 -1
  56. package/dist/office-share-service.d.ts +4 -3
  57. package/dist/office-share-service.js +6 -6
  58. package/dist/office-share-service.js.map +1 -1
  59. package/dist/office-share.d.ts +17 -6
  60. package/dist/office-share.js +28 -11
  61. package/dist/office-share.js.map +1 -1
  62. package/dist/outbound-handlers.js +20 -1
  63. package/dist/outbound-handlers.js.map +1 -1
  64. package/dist/outbound-schemas.d.ts +6 -0
  65. package/dist/outbound-schemas.js +6 -0
  66. package/dist/outbound-schemas.js.map +1 -1
  67. package/dist/quickstart-api.d.ts +25 -1
  68. package/dist/quickstart-api.js +53 -6
  69. package/dist/quickstart-api.js.map +1 -1
  70. package/dist/service-installer.d.ts +13 -0
  71. package/dist/service-installer.js +15 -0
  72. package/dist/service-installer.js.map +1 -1
  73. package/dist/service-owner.d.ts +25 -0
  74. package/dist/service-owner.js +43 -2
  75. package/dist/service-owner.js.map +1 -1
  76. package/dist/setup-form.js +17 -3
  77. package/dist/setup-form.js.map +1 -1
  78. package/dist/setup-i18n.js +2 -0
  79. package/dist/setup-i18n.js.map +1 -1
  80. package/dist/tool-permissions.js +1 -0
  81. package/dist/tool-permissions.js.map +1 -1
  82. package/dist/ui/fleet-office-layout.js +14 -6
  83. package/dist/ui/fleet-office-pack.d.ts +4 -0
  84. package/dist/ui/fleet-office-pack.js +15 -5
  85. package/dist/ui/fleet-office-store.js +18 -3
  86. package/dist/ui/fleet-office-view.js +8 -0
  87. package/dist/ui/fleet-office-zones.js +10 -2
  88. package/dist/ui/fleet-office.js +36 -4
  89. package/dist/ui/office-share-dialog.js +31 -7
  90. package/dist/ui/panel-log.js +2 -2
  91. package/dist/ui/settings-strings.js +2 -0
  92. package/dist/ui/settings-wizard.js +15 -4
  93. package/dist/ui/shared/app.css +6 -0
  94. package/dist/ui/shared/setup-host-text.js +2 -0
  95. package/dist/web-api.js +74 -4
  96. package/dist/web-api.js.map +1 -1
  97. package/dist/web-office-pack-tools.d.ts +10 -1
  98. package/dist/web-office-pack-tools.js +36 -5
  99. package/dist/web-office-pack-tools.js.map +1 -1
  100. package/dist/web-office-skins.js +6 -0
  101. package/dist/web-office-skins.js.map +1 -1
  102. package/dist/web-office-store.d.ts +22 -3
  103. package/dist/web-office-store.js +44 -8
  104. package/dist/web-office-store.js.map +1 -1
  105. package/package.json +1 -1
@@ -7,3 +7,27 @@ export declare const GENERAL_PAUSE_ERROR = "General cannot be paused";
7
7
  * general_topic covers renamed and per-world General instances.
8
8
  */
9
9
  export declare function isGeneralInstance(config: FleetConfig | null | undefined, name: string): boolean;
10
+ /** M-2069: the name a fleet's General has by default (the auto-created one, and the setup's first agent). */
11
+ export declare const GENERAL_NAME = "general";
12
+ /**
13
+ * M-2069: the topic a General on this connection is bound to: the chat's own General — Telegram's built-in General
14
+ * topic (thread 1), the Discord connection's general channel — never a new forum topic. Null for a Discord connection
15
+ * without a valid general channel: a new General is then left unbound, as the fleet's own General is (autoCreateTopics),
16
+ * and an adopted one keeps the topic it has.
17
+ */
18
+ export declare function generalTopicFor(channel: Record<string, unknown>): number | string | null;
19
+ /**
20
+ * M-2069: an agent named "general" is the General to its daemon, its tool profile and the pause guard, but the fleet
21
+ * picks its dispatcher by general_topic. In a chat fleet with no General, the auto-General would be skipped (its name
22
+ * is taken) and the fleet would run with no dispatcher. So that agent is made the General — on the primary connection,
23
+ * in the chat's own General topic where it has one (Telegram's thread 1; Discord's general channel — without one, it
24
+ * keeps the topic it has). On Telegram a stray forum topic it was given is left behind, unrouted. Left alone: a
25
+ * "general" bound to another connection, a fleet that already has a General, and (#2744 review) a "general" working in
26
+ * a folder AgEnD does not own (`ownFolder`) — the General's instructions would land in a project of the user's; the
27
+ * fleet then adds its General under a free name (Phase 3). Returns whether the config changed.
28
+ */
29
+ export declare function adoptGeneralByName(fleet: FleetConfig, logger: {
30
+ warn(obj: unknown, msg?: string): void;
31
+ }, ownFolder: (dir: string) => boolean): boolean;
32
+ /** M-2069: the first free name for a General the fleet creates: `base`, else `base-2`, `base-3`, … */
33
+ export declare function freeGeneralName(instances: Record<string, unknown>, base: string): string;
@@ -1,3 +1,4 @@
1
+ import { discordGeneralChannelId } from "./discord-general.js";
1
2
  /** Stable user-facing error shared by every manual pause entry point. */
2
3
  export const GENERAL_PAUSE_ERROR = "General cannot be paused";
3
4
  /**
@@ -8,4 +9,56 @@ export const GENERAL_PAUSE_ERROR = "General cannot be paused";
8
9
  export function isGeneralInstance(config, name) {
9
10
  return name === "general" || config?.instances[name]?.general_topic === true;
10
11
  }
12
+ /** M-2069: the name a fleet's General has by default (the auto-created one, and the setup's first agent). */
13
+ export const GENERAL_NAME = "general";
14
+ /**
15
+ * M-2069: the topic a General on this connection is bound to: the chat's own General — Telegram's built-in General
16
+ * topic (thread 1), the Discord connection's general channel — never a new forum topic. Null for a Discord connection
17
+ * without a valid general channel: a new General is then left unbound, as the fleet's own General is (autoCreateTopics),
18
+ * and an adopted one keeps the topic it has.
19
+ */
20
+ export function generalTopicFor(channel) {
21
+ if (channel.type === "telegram")
22
+ return 1;
23
+ if (channel.type !== "discord")
24
+ return null;
25
+ const general = discordGeneralChannelId(channel);
26
+ return general != null && /^\d{17,}$/.test(general) ? general : null;
27
+ }
28
+ /**
29
+ * M-2069: an agent named "general" is the General to its daemon, its tool profile and the pause guard, but the fleet
30
+ * picks its dispatcher by general_topic. In a chat fleet with no General, the auto-General would be skipped (its name
31
+ * is taken) and the fleet would run with no dispatcher. So that agent is made the General — on the primary connection,
32
+ * in the chat's own General topic where it has one (Telegram's thread 1; Discord's general channel — without one, it
33
+ * keeps the topic it has). On Telegram a stray forum topic it was given is left behind, unrouted. Left alone: a
34
+ * "general" bound to another connection, a fleet that already has a General, and (#2744 review) a "general" working in
35
+ * a folder AgEnD does not own (`ownFolder`) — the General's instructions would land in a project of the user's; the
36
+ * fleet then adds its General under a free name (Phase 3). Returns whether the config changed.
37
+ */
38
+ export function adoptGeneralByName(fleet, logger, ownFolder) {
39
+ const channels = (fleet.channels ?? (fleet.channel ? [fleet.channel] : []));
40
+ if (!channels.length || !Object.hasOwn(fleet.instances, GENERAL_NAME))
41
+ return false;
42
+ const inst = fleet.instances[GENERAL_NAME];
43
+ if (inst.general_topic === true || Object.values(fleet.instances).some(cfg => cfg.general_topic === true))
44
+ return false;
45
+ const primary = channels[0], primaryId = String(primary.id ?? primary.type);
46
+ if (inst.channel_id != null && inst.channel_id !== primaryId)
47
+ return false;
48
+ if (!ownFolder(inst.working_directory))
49
+ return false;
50
+ const topic = generalTopicFor(primary), from = inst.topic_id ?? null;
51
+ inst.general_topic = true;
52
+ if (topic != null)
53
+ inst.topic_id = topic;
54
+ logger.warn({ name: GENERAL_NAME, topic_from: from, topic_to: inst.topic_id ?? null }, "An agent named general had no general_topic and the fleet had no General — made it the General (its chat's General topic)");
55
+ return true;
56
+ }
57
+ /** M-2069: the first free name for a General the fleet creates: `base`, else `base-2`, `base-3`, … */
58
+ export function freeGeneralName(instances, base) {
59
+ let name = base;
60
+ for (let n = 2; Object.hasOwn(instances, name); n++)
61
+ name = `${base}-${n}`;
62
+ return name;
63
+ }
11
64
  //# sourceMappingURL=general-instance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general-instance.js","sourceRoot":"","sources":["../src/general-instance.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsC,EAAE,IAAY;IACpF,OAAO,IAAI,KAAK,SAAS,IAAI,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"general-instance.js","sourceRoot":"","sources":["../src/general-instance.ts"],"names":[],"mappings":"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"}
@@ -312,6 +312,8 @@ tools are not in your list), you can publish them yourself instead of asking a p
312
312
  built-in style (pixel, studio, cozy).
313
313
  - Every change is logged with each picture's sha256 and told to the fleet's admins. At most **20 batches and 200 MiB an
314
314
  hour**: one call is one batch (up to 16 packs), so send a whole set of fixes in one `packs: [...]`.
315
+ - `office_pack_check` has its own allowance: at most **60 checks and 1 GiB (as sent) an hour**. Every check counts,
316
+ passed or refused, so fix what a refusal names before checking again. `office_pack_list` shows `check_left`.
315
317
 
316
318
  The skin-pack manifest format — every key, its ranges, a minimal example — and the limits are in the Office guide:
317
319
  [docs/office.md → Make a skin pack](https://github.com/songsid/AgEnD/blob/main/docs/office.md#make-a-skin-pack). Point people there too when they ask how the Office works.
@@ -320,6 +320,8 @@ tools are not in your list), you can publish them yourself instead of asking a p
320
320
  built-in style (pixel, studio, cozy).
321
321
  - Every change is logged with each picture's sha256 and told to the fleet's admins. At most **20 batches and 200 MiB an
322
322
  hour**: one call is one batch (up to 16 packs), so send a whole set of fixes in one `packs: [...]`.
323
+ - `office_pack_check` has its own allowance: at most **60 checks and 1 GiB (as sent) an hour**. Every check counts,
324
+ passed or refused, so fix what a refusal names before checking again. `office_pack_list` shows `check_left`.
323
325
 
324
326
  The skin-pack manifest format — every key, its ranges, a minimal example — and the limits are in the Office guide:
325
327
  [docs/office.md → Make a skin pack](https://github.com/songsid/AgEnD/blob/main/docs/office.md#make-a-skin-pack). Point people there too when they ask how the Office works.
@@ -274,13 +274,14 @@ ways with `walkDown`, `walkUp` and `walkSide`, the side one mirrored for left).
274
274
  packs** on (`office_pack_access`, Dashboard access) can check, upload, replace, delete and restore packs itself (one
275
275
  previous version kept per pack); **Agents changing packs** under the packs names those agents, sets whether their changes
276
276
  **Need my yes** (the default) or **Apply at once**, and approves or rejects the waiting ones (also from the notice's
277
- buttons in General); every change is logged and told in General. **Style** (per browser for the whole fleet, per office for a stored one): **Desks**,
277
+ buttons in General); every change is logged and told in General. **Style** (per office for a stored one; for the whole fleet, #2716, an admin's pick is kept on the host for every device and share link, anyone else's stays in their browser): **Desks**,
278
278
  **Studio** (one scene — Work, Lounge, Help desk, Nap corner — where each instance walks to the area for its state),
279
279
  **Cozy** (#2631: the same in a warm pixel-art office drawn as one picture; its notice board says a skin pack can
280
280
  restyle it; the default for a browser that has not picked a style and for a new office — a saved office keeps its
281
281
  own) or an uploaded pack; one the page cannot load is drawn as Desks with a note. On a stored office in Studio,
282
282
  Cozy or a pack,
283
- **Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door and
283
+ **Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door, the mail drop
284
+ (an envelope: where letters from other offices land; dashed on a pack without a `mailDrop`, #2736) and
284
285
  waypoints (or Tab to one and use the arrow keys, Shift for 10), add or remove waypoints and join or unjoin
285
286
  corridors; an item that sleeps at bedtime (a pack's `night`) has a night handle too ("Item {id} (night)": its night
286
287
  picture faint, a moon, a line to its day place; on the day place while it sleeps in place) — drag it to give the item
@@ -301,7 +302,7 @@ only. Hover and click work across
301
302
  tiles; a tile's label, or a double-click on it, opens that office; traffic between offices flies straight across.
302
303
  Edit offices and Edit layout wait for a single office.
303
304
  **Share…** (#2636; an admin session, on the dashboard reached directly or over the public link — never read-only or a guest; the URL shows only to its maker, in the dialog) makes an Office share
304
- link: anyone who opens it watches one office (or **All offices**) live, read-only, with no sign-in — names, identity
305
+ link: anyone who opens it watches **Whole fleet** (#2716, in the fleet's style), one office or **All offices** live, in the link's **Look** (#2715: Light, Dark or the viewer's device; default what the maker's dashboard shows now), read-only, with no sign-in — names, identity
305
306
  colours and states, every 5 s; no chat, no clicks into anything, no settings; agents' `office_set` lines only when
306
307
  **Include agents' own status lines** is ticked; hidden instances never. 1 h by default, 15 min to 24 h
307
308
  (`web.office_share.max_hours`); at most 10 open. Its own quick tunnel (`https://<random>.trycloudflare.com/o/<token>`)
@@ -311,7 +312,8 @@ says to try again in a few minutes (no retry). `web.office_share.enabled: false`
311
312
 
312
313
  The Office fills the Fleet panel and moves like the Canvas (#2540): drag to pan, the wheel or a pinch to zoom,
313
314
  **+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them) or the `+ - 0` keys
314
- (with the office focused), an overview at the bottom right to jump (not on a phone). It takes the whole panel: the
315
+ (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
316
+ is all in view, #2737). It takes the whole panel: the
315
317
  Fleet area's full width, down to the window's foot. **Fit** shows the whole scene as large as the panel allows
316
318
  (any scale, so it fills the panel's width or height); **Fill** (a toggle, kept per office) fills the panel instead,
317
319
  cropping what overflows — drag to see it. **+** / **−** step in pixel levels (each logical unit a whole number of
@@ -286,13 +286,14 @@ ways with `walkDown`, `walkUp` and `walkSide`, the side one mirrored for left).
286
286
  packs** on (`office_pack_access`, Dashboard access) can check, upload, replace, delete and restore packs itself (one
287
287
  previous version kept per pack); **Agents changing packs** under the packs names those agents, sets whether their changes
288
288
  **Need my yes** (the default) or **Apply at once**, and approves or rejects the waiting ones (also from the notice's
289
- buttons in General); every change is logged and told in General. **Style** (per browser for the whole fleet, per office for a stored one): **Desks**,
289
+ buttons in General); every change is logged and told in General. **Style** (per office for a stored one; for the whole fleet, #2716, an admin's pick is kept on the host for every device and share link, anyone else's stays in their browser): **Desks**,
290
290
  **Studio** (one scene — Work, Lounge, Help desk, Nap corner — where each instance walks to the area for its state),
291
291
  **Cozy** (#2631: the same in a warm pixel-art office drawn as one picture; its notice board says a skin pack can
292
292
  restyle it; the default for a browser that has not picked a style and for a new office — a saved office keeps its
293
293
  own) or an uploaded pack; one the page cannot load is drawn as Desks with a note. On a stored office in Studio,
294
294
  Cozy or a pack,
295
- **Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door and
295
+ **Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door, the mail drop
296
+ (an envelope: where letters from other offices land; dashed on a pack without a `mailDrop`, #2736) and
296
297
  waypoints (or Tab to one and use the arrow keys, Shift for 10), add or remove waypoints and join or unjoin
297
298
  corridors; an item that sleeps at bedtime (a pack's `night`) has a night handle too ("Item {id} (night)": its night
298
299
  picture faint, a moon, a line to its day place; on the day place while it sleeps in place) — drag it to give the item
@@ -316,7 +317,7 @@ only. Hover and click work across
316
317
  tiles; a tile's label, or a double-click on it, opens that office; traffic between offices flies straight across.
317
318
  Edit offices and Edit layout wait for a single office.
318
319
  **Share…** (#2636; an admin session, on the dashboard reached directly or over the public link — never read-only or a guest; the URL shows only to its maker, in the dialog) makes an Office share
319
- link: anyone who opens it watches one office (or **All offices**) live, read-only, with no sign-in — names, identity
320
+ link: anyone who opens it watches **Whole fleet** (#2716, in the fleet's style), one office or **All offices** live, in the link's **Look** (#2715: Light, Dark or the viewer's device; default what the maker's dashboard shows now), read-only, with no sign-in — names, identity
320
321
  colours and states, every 5 s; no chat, no clicks into anything, no settings; agents' `office_set` lines only when
321
322
  **Include agents' own status lines** is ticked; hidden instances never. 1 h by default, 15 min to 24 h
322
323
  (`web.office_share.max_hours`); at most 10 open. Its own quick tunnel (`https://<random>.trycloudflare.com/o/<token>`)
@@ -326,7 +327,8 @@ says to try again in a few minutes (no retry). `web.office_share.enabled: false`
326
327
 
327
328
  The Office fills the Fleet panel and moves like the Canvas (#2540): drag to pan, the wheel or a pinch to zoom,
328
329
  **+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them) or the `+ - 0` keys
329
- (with the office focused), an overview at the bottom right to jump (not on a phone). It takes the whole panel: the
330
+ (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
331
+ is all in view, #2737). It takes the whole panel: the
330
332
  Fleet area's full width, down to the window's foot. **Fit** shows the whole scene as large as the panel allows
331
333
  (any scale, so it fills the panel's width or height); **Fill** (a toggle, kept per office) fills the panel instead,
332
334
  cropping what overflows — drag to see it. **+** / **−** step in pixel levels (each logical unit a whole number of
@@ -32,7 +32,8 @@ export interface KiroMigrateDeps {
32
32
  }>;
33
33
  stop(name: string): Promise<void>;
34
34
  /** The classic (v1) store the instance launches with, for where a compaction went on (#2714). */
35
- readClassicStore(workingDirectory: string, credentialProfile: string | null): KiroStoreRead;
35
+ /** #2738: async — the compaction links are worked out on the store worker lane, never on the fleet loop. */
36
+ readClassicStore(workingDirectory: string, credentialProfile: string | null): KiroStoreRead | Promise<KiroStoreRead>;
36
37
  }
37
38
  /** What a confirmed move will do; checked again when the admin confirms. */
38
39
  export interface KiroMigrationPlan {
@@ -45,13 +46,13 @@ export interface KiroMigrationPlan {
45
46
  compactedFrom?: string[];
46
47
  }
47
48
  /** Judge a request; nothing is written. `startFresh` allows moving an instance that has no classic conversation. */
48
- export declare function planKiroMigration(deps: KiroMigrateDeps, name: string, startFresh: boolean): {
49
+ export declare function planKiroMigration(deps: KiroMigrateDeps, name: string, startFresh: boolean): Promise<{
49
50
  ok: true;
50
51
  plan: KiroMigrationPlan;
51
52
  } | {
52
53
  ok: false;
53
54
  error: string;
54
- };
55
+ }>;
55
56
  /** The confirmation prompt's text. */
56
57
  export declare function kiroMigrationPrompt(plan: KiroMigrationPlan, running: boolean): string;
57
58
  /**
@@ -30,9 +30,13 @@ function refusal(name, m) {
30
30
  * is one-way, and carrying the recorded id would leave the newer conversation behind on the frozen engine.
31
31
  * `apply` records the walk, as a classic launch would (only once the admin confirmed and the instance was checked).
32
32
  */
33
- function carriedClassic(deps, name, workingDirectory, credentialProfile, recorded, apply) {
33
+ async function carriedClassic(deps, name, workingDirectory, credentialProfile, recorded, apply, admitted = () => { }) {
34
+ const store = await deps.readClassicStore(workingDirectory, credentialProfile);
35
+ // #2738: the store is read on a worker lane, and the move may have been superseded meanwhile — asked again here,
36
+ // before the walk claims or records anything (it throws when the move is no longer this one's).
37
+ admitted();
34
38
  const walk = followKiroClassicCompaction({ agendHome: deps.agendHome, instance: name, workingDirectory, credentialProfile,
35
- readStore: () => deps.readClassicStore(workingDirectory, credentialProfile), apply });
39
+ readStore: () => store, apply });
36
40
  if (!walk)
37
41
  return { ok: true, id: recorded, compactedFrom: [] };
38
42
  if (walk.kept)
@@ -42,11 +46,12 @@ function carriedClassic(deps, name, workingDirectory, credentialProfile, recorde
42
46
  function compactionReason(walk) {
43
47
  const kept = walk.kept;
44
48
  return kept.reason === "unreadable" ? t("kiro_migrate.compaction_unreadable")
45
- : kept.reason === "ambiguous" ? t("kiro_migrate.compaction_ambiguous", kept.from, kept.candidates.join(", "))
46
- : t("kiro_migrate.compaction_not_ours", kept.from, kept.candidate);
49
+ : kept.reason === "over-budget" ? t("kiro_migrate.compaction_over_budget")
50
+ : kept.reason === "ambiguous" ? t("kiro_migrate.compaction_ambiguous", kept.from, kept.candidates.join(", "))
51
+ : t("kiro_migrate.compaction_not_ours", kept.from, kept.candidate);
47
52
  }
48
53
  /** Judge a request; nothing is written. `startFresh` allows moving an instance that has no classic conversation. */
49
- export function planKiroMigration(deps, name, startFresh) {
54
+ export async function planKiroMigration(deps, name, startFresh) {
50
55
  const found = target(deps, name);
51
56
  if (typeof found === "string")
52
57
  return { ok: false, error: found };
@@ -55,7 +60,7 @@ export function planKiroMigration(deps, name, startFresh) {
55
60
  return { ok: false, error: refusal(name, inspected) };
56
61
  if (!inspected.classicId && !startFresh)
57
62
  return { ok: false, error: t("kiro_migrate.no_classic", name) };
58
- const carried = inspected.classicId ? carriedClassic(deps, name, found.workingDirectory, found.credentialProfile, inspected.classicId, false) : null;
63
+ const carried = inspected.classicId ? await carriedClassic(deps, name, found.workingDirectory, found.credentialProfile, inspected.classicId, false) : null;
59
64
  if (carried && !carried.ok)
60
65
  return carried;
61
66
  return { ok: true, plan: { name, workingDirectory: found.workingDirectory, credentialProfile: found.credentialProfile, classicId: carried?.id ?? null,
@@ -85,7 +90,7 @@ export async function applyKiroMigration(deps, plan) {
85
90
  const again = inspectKiroTuiMigration({ agendHome: deps.agendHome, instance: plan.name, workingDirectory: found.workingDirectory, credentialProfile: found.credentialProfile });
86
91
  if (again.kind === "refused")
87
92
  return { ok: false, text: refusal(plan.name, again) };
88
- const judged = again.classicId ? carriedClassic(deps, plan.name, found.workingDirectory, found.credentialProfile, again.classicId, false) : null;
93
+ const judged = again.classicId ? await carriedClassic(deps, plan.name, found.workingDirectory, found.credentialProfile, again.classicId, false) : null;
89
94
  if (judged && !judged.ok)
90
95
  return { ok: false, text: judged.error };
91
96
  if (found.workingDirectory !== plan.workingDirectory || found.credentialProfile !== plan.credentialProfile || (judged?.id ?? null) !== plan.classicId) {
@@ -117,7 +122,7 @@ export async function applyKiroMigration(deps, plan) {
117
122
  // conversation is now; one that cannot be proven any more refuses, and nothing is armed.
118
123
  const pinned = inspectKiroTuiMigration({ agendHome: deps.agendHome, instance: plan.name, workingDirectory: plan.workingDirectory, credentialProfile: plan.credentialProfile });
119
124
  if (pinned.kind === "ready" && pinned.classicId) {
120
- const followed = carriedClassic(deps, plan.name, plan.workingDirectory, plan.credentialProfile, pinned.classicId, true);
125
+ const followed = await carriedClassic(deps, plan.name, plan.workingDirectory, plan.credentialProfile, pinned.classicId, true, current);
121
126
  if (!followed.ok)
122
127
  throw new Error(followed.error);
123
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kiro-migrate.js","sourceRoot":"","sources":["../src/kiro-migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kiro-migrate.js","sourceRoot":"","sources":["../src/kiro-migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /** Confirmed option A only: keep the original carried session, preserve the named newer alternative. */
2
+ import type { KiroMigrateDeps } from "./kiro-migrate.js";
3
+ import type { KiroReconcileInput, KiroReconcilePlan } from "./backend/kiro-reconcile-store.js";
4
+ export interface KiroReconcileDeps extends KiroMigrateDeps {
5
+ store(input: KiroReconcileInput, plan?: KiroReconcilePlan, actor?: string, rollbackReceipt?: string): Promise<{
6
+ plan?: KiroReconcilePlan;
7
+ receipt?: string;
8
+ }>;
9
+ }
10
+ export interface KiroReconciliation {
11
+ name: string;
12
+ input: KiroReconcileInput;
13
+ plan: KiroReconcilePlan;
14
+ }
15
+ export declare function planKiroReconciliation(deps: KiroReconcileDeps, name: string, keep: string, archive: string, rollbackReceipt?: string): Promise<KiroReconciliation>;
16
+ export declare function kiroReconciliationPrompt(p: KiroReconciliation): string;
17
+ export declare function applyKiroReconciliation(deps: KiroReconcileDeps, p: KiroReconciliation, actor: string): Promise<{
18
+ ok: boolean;
19
+ text: string;
20
+ receipt?: string;
21
+ }>;
@@ -0,0 +1,80 @@
1
+ import { instanceCredentialProfile } from "./backend/credential-profile.js";
2
+ import { kiroV1DbPath, kiroV2SessionsDir } from "./backend/kiro.js";
3
+ import { t } from "./locale.js";
4
+ function target(deps, name, keep, archive) {
5
+ const fleet = deps.fleetConfig(), inst = fleet?.instances[name];
6
+ if (!inst || (inst.backend ?? fleet?.defaults?.backend) !== "kiro-cli" || inst.kiro_ui !== "tui" || !inst.working_directory
7
+ || !inst.model || !["stopped", "paused"].includes(deps.status(name)))
8
+ throw new Error(t("kiro_reconcile.stopped_required"));
9
+ const profile = instanceCredentialProfile(inst, fleet?.defaults, "kiro-cli");
10
+ return { agendHome: deps.agendHome, instance: name, workingDirectory: inst.working_directory, credentialProfile: profile,
11
+ sessionId: keep, archiveId: archive, sessionsDir: kiroV2SessionsDir(), dbPath: kiroV1DbPath(profile), model: inst.model };
12
+ }
13
+ export async function planKiroReconciliation(deps, name, keep, archive, rollbackReceipt) {
14
+ const input = target(deps, name, keep, archive), result = await deps.store(input, undefined, undefined, rollbackReceipt);
15
+ if (!result.plan || JSON.stringify(target(deps, name, keep, archive)) !== JSON.stringify(input))
16
+ throw new Error(t("kiro_reconcile.changed"));
17
+ return { name, input, plan: result.plan };
18
+ }
19
+ export function kiroReconciliationPrompt(p) {
20
+ return t(p.plan.rollbackReceipt ? "kiro_reconcile.rollback_prompt" : "kiro_reconcile.prompt", p.name, p.input.sessionId, p.input.archiveId);
21
+ }
22
+ export async function applyKiroReconciliation(deps, p, actor) {
23
+ let lease;
24
+ try {
25
+ lease = deps.reserve(p.name);
26
+ }
27
+ catch (error) {
28
+ return { ok: false, text: t("kiro_reconcile.failed", p.name, error.message) };
29
+ }
30
+ let receipt;
31
+ const current = () => {
32
+ if (!lease.current())
33
+ throw new Error(t("kiro_reconcile.changed"));
34
+ const config = deps.fleetConfig()?.instances[p.name];
35
+ if (!config || (config.backend ?? deps.fleetConfig()?.defaults?.backend) !== "kiro-cli" || config.kiro_ui !== "tui" || config.model !== p.input.model || config.working_directory !== p.input.workingDirectory
36
+ || instanceCredentialProfile(config, deps.fleetConfig()?.defaults, "kiro-cli") !== p.input.credentialProfile)
37
+ throw new Error(t("kiro_reconcile.changed"));
38
+ };
39
+ try {
40
+ if (JSON.stringify(target(deps, p.name, p.input.sessionId, p.input.archiveId)) !== JSON.stringify(p.input))
41
+ throw new Error(t("kiro_reconcile.changed"));
42
+ current();
43
+ const model = await deps.preflight(p.name, { name: p.name, workingDirectory: p.input.workingDirectory, credentialProfile: p.input.credentialProfile, classicId: p.input.sessionId });
44
+ current();
45
+ if (model !== p.input.model)
46
+ throw new Error(t("kiro_reconcile.changed"));
47
+ const result = await deps.store(p.input, p.plan, actor);
48
+ receipt = result.receipt;
49
+ current();
50
+ if (!receipt)
51
+ throw new Error(t("kiro_reconcile.changed"));
52
+ if (!p.plan.rollbackReceipt) {
53
+ await deps.restart(p.name);
54
+ current();
55
+ await deps.verify(p.name, p.input.sessionId, p.input.model, true);
56
+ current();
57
+ await deps.restart(p.name);
58
+ current();
59
+ await deps.verify(p.name, p.input.sessionId, p.input.model, true);
60
+ current();
61
+ }
62
+ return { ok: true, receipt, text: t(p.plan.rollbackReceipt ? "kiro_reconcile.rolled_back" : "kiro_reconcile.done", p.name, receipt) };
63
+ }
64
+ catch (error) {
65
+ let reason = error instanceof SyntaxError ? "Malformed reconciliation data" : error.message;
66
+ if (lease.current()) {
67
+ try {
68
+ await deps.stop(p.name);
69
+ }
70
+ catch {
71
+ reason += " " + t("kiro_migrate.stop_unconfirmed");
72
+ }
73
+ }
74
+ return { ok: false, ...(receipt ? { receipt } : {}), text: t("kiro_reconcile.failed", p.name, reason) };
75
+ }
76
+ finally {
77
+ lease.release();
78
+ }
79
+ }
80
+ //# sourceMappingURL=kiro-reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro-reconcile.js","sourceRoot":"","sources":["../src/kiro-reconcile.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,12 @@
1
1
  import type { KiroScanRead } from "./forged-envelope-scan.js";
2
2
  export declare const KIRO_FORENSIC_MAX_BYTES: number;
3
+ /** Callers using a tiny emptiness probe must distinguish work from an unsafe file. */
4
+ export declare class KiroTuiSnapshotSizeError extends Error {
5
+ readonly path: string;
6
+ readonly maxBytes: number;
7
+ readonly actualBytes: number;
8
+ constructor(path: string, maxBytes: number, actualBytes: number);
9
+ }
3
10
  /** Refuse symlinks/devices/foreign files and read exactly the size observed at open, not an unbounded live tail. */
4
11
  export declare function snapshotKiroTuiFile(path: string, maxBytes: number): {
5
12
  text: string;
@@ -3,19 +3,33 @@
3
3
  */
4
4
  import { closeSync, constants, fstatSync, lstatSync, openSync, readSync } from "node:fs";
5
5
  import { homedir } from "node:os";
6
- import { join } from "node:path";
6
+ import { basename, join } from "node:path";
7
7
  export const KIRO_FORENSIC_MAX_BYTES = 64 * 1024 * 1024;
8
8
  const META_MAX_BYTES = 8 * 1024 * 1024;
9
9
  const LINE_MAX_BYTES = 4 * 1024 * 1024;
10
10
  const plain = (value) => !!value && typeof value === "object" && !Array.isArray(value);
11
+ /** Callers using a tiny emptiness probe must distinguish work from an unsafe file. */
12
+ export class KiroTuiSnapshotSizeError extends Error {
13
+ path;
14
+ maxBytes;
15
+ actualBytes;
16
+ constructor(path, maxBytes, actualBytes) {
17
+ super(`TUI session ${JSON.stringify(basename(path))} exceeds the scan size limit (${actualBytes} > ${maxBytes} bytes)`);
18
+ this.path = path;
19
+ this.maxBytes = maxBytes;
20
+ this.actualBytes = actualBytes;
21
+ }
22
+ }
11
23
  /** Refuse symlinks/devices/foreign files and read exactly the size observed at open, not an unbounded live tail. */
12
24
  export function snapshotKiroTuiFile(path, maxBytes) {
13
25
  const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
14
26
  try {
15
27
  const before = fstatSync(fd);
16
- if (!before.isFile() || (process.getuid && before.uid !== process.getuid()) || before.size > maxBytes) {
17
- throw new Error("TUI session is not an owned regular file within the scan size limit");
28
+ if (!before.isFile() || (process.getuid && before.uid !== process.getuid())) {
29
+ throw new Error(`TUI session ${JSON.stringify(basename(path))} is not an owned regular file`);
18
30
  }
31
+ if (before.size > maxBytes)
32
+ throw new KiroTuiSnapshotSizeError(path, maxBytes, before.size);
19
33
  const bytes = Buffer.alloc(before.size);
20
34
  let offset = 0;
21
35
  while (offset < bytes.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"kiro-tui-forensic.js","sourceRoot":"","sources":["../src/kiro-tui-forensic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kiro-tui-forensic.js","sourceRoot":"","sources":["../src/kiro-tui-forensic.ts"],"names":[],"mappings":"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"}