@songsid/agend 2.3.4-beta.6 → 2.3.4-beta.8

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 (111) hide show
  1. package/dist/agend-home.d.ts +13 -0
  2. package/dist/agend-home.js +42 -0
  3. package/dist/agend-home.js.map +1 -1
  4. package/dist/auth-api.js +2 -2
  5. package/dist/auth-api.js.map +1 -1
  6. package/dist/backend/kiro-identity.d.ts +2 -0
  7. package/dist/backend/kiro-identity.js +13 -6
  8. package/dist/backend/kiro-identity.js.map +1 -1
  9. package/dist/backend/kiro.d.ts +3 -0
  10. package/dist/backend/kiro.js +57 -4
  11. package/dist/backend/kiro.js.map +1 -1
  12. package/dist/backend/types.d.ts +6 -1
  13. package/dist/backend/types.js +3 -0
  14. package/dist/backend/types.js.map +1 -1
  15. package/dist/backend-availability.d.ts +6 -0
  16. package/dist/backend-availability.js +13 -5
  17. package/dist/backend-availability.js.map +1 -1
  18. package/dist/channel/mcp-tools.js +1 -1
  19. package/dist/channel/mcp-tools.js.map +1 -1
  20. package/dist/cli.js +4 -6
  21. package/dist/cli.js.map +1 -1
  22. package/dist/daemon.d.ts +40 -0
  23. package/dist/daemon.js +354 -15
  24. package/dist/daemon.js.map +1 -1
  25. package/dist/delivery-consumed-watch.d.ts +23 -1
  26. package/dist/delivery-consumed-watch.js +30 -3
  27. package/dist/delivery-consumed-watch.js.map +1 -1
  28. package/dist/delivery-reconciliation.d.ts +7 -0
  29. package/dist/delivery-reconciliation.js +9 -1
  30. package/dist/delivery-reconciliation.js.map +1 -1
  31. package/dist/fleet-manager.d.ts +33 -7
  32. package/dist/fleet-manager.js +196 -67
  33. package/dist/fleet-manager.js.map +1 -1
  34. package/dist/fleet-yaml-patch.d.ts +3 -0
  35. package/dist/fleet-yaml-patch.js +103 -0
  36. package/dist/fleet-yaml-patch.js.map +1 -0
  37. package/dist/general-knowledge/skills/concepts/SKILL.md +390 -0
  38. package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +3 -1
  39. package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +41 -4
  40. package/dist/general-knowledge/skills/model-discovery/SKILL.md +2 -0
  41. package/dist/instance-lifecycle.d.ts +2 -0
  42. package/dist/instance-lifecycle.js +38 -4
  43. package/dist/instance-lifecycle.js.map +1 -1
  44. package/dist/kiro-engine-status.d.ts +11 -0
  45. package/dist/kiro-engine-status.js +6 -0
  46. package/dist/kiro-engine-status.js.map +1 -1
  47. package/dist/kiro-resume-summary.d.ts +37 -0
  48. package/dist/kiro-resume-summary.js +85 -0
  49. package/dist/kiro-resume-summary.js.map +1 -0
  50. package/dist/locale.js +32 -0
  51. package/dist/locale.js.map +1 -1
  52. package/dist/login-controller.js +9 -1
  53. package/dist/login-controller.js.map +1 -1
  54. package/dist/login-flows.d.ts +2 -0
  55. package/dist/login-flows.js +5 -2
  56. package/dist/login-flows.js.map +1 -1
  57. package/dist/needs-you-hub.js +1 -1
  58. package/dist/needs-you-hub.js.map +1 -1
  59. package/dist/needs-you.d.ts +6 -0
  60. package/dist/needs-you.js +8 -2
  61. package/dist/needs-you.js.map +1 -1
  62. package/dist/package-preimage.js +27 -2
  63. package/dist/package-preimage.js.map +1 -1
  64. package/dist/queued-handoffs.d.ts +33 -0
  65. package/dist/queued-handoffs.js +75 -0
  66. package/dist/queued-handoffs.js.map +1 -0
  67. package/dist/reply-buttons-controller.js +10 -0
  68. package/dist/reply-buttons-controller.js.map +1 -1
  69. package/dist/stall-reporter.d.ts +21 -0
  70. package/dist/stall-reporter.js +82 -0
  71. package/dist/stall-reporter.js.map +1 -0
  72. package/dist/tmux-control.d.ts +2 -2
  73. package/dist/tmux-control.js +4 -2
  74. package/dist/tmux-control.js.map +1 -1
  75. package/dist/tmux-exec-helper.d.ts +6 -3
  76. package/dist/tmux-exec-helper.js +115 -53
  77. package/dist/tmux-exec-helper.js.map +1 -1
  78. package/dist/tool-permissions.d.ts +5 -2
  79. package/dist/tool-permissions.js +6 -5
  80. package/dist/tool-permissions.js.map +1 -1
  81. package/dist/tunnel/cloudflared-install.d.ts +4 -0
  82. package/dist/tunnel/cloudflared-install.js +20 -1
  83. package/dist/tunnel/cloudflared-install.js.map +1 -1
  84. package/dist/tunnel/cloudflared.d.ts +8 -1
  85. package/dist/tunnel/cloudflared.js +34 -6
  86. package/dist/tunnel/cloudflared.js.map +1 -1
  87. package/dist/tunnel/lease.d.ts +3 -3
  88. package/dist/tunnel/lease.js +23 -19
  89. package/dist/tunnel/lease.js.map +1 -1
  90. package/dist/tunnel/manager.js +6 -7
  91. package/dist/tunnel/manager.js.map +1 -1
  92. package/dist/ui/panel-needs.js +4 -3
  93. package/dist/ui/shared/app-i18n.js +2 -2
  94. package/dist/ui/shared/app-needs.js +1 -1
  95. package/dist/ui/shared/app.css +16 -1
  96. package/dist/ui/shared/panel-view.js +266 -17
  97. package/dist/ui/shared/view-strings.js +26 -0
  98. package/dist/unattended-install.d.ts +1 -1
  99. package/dist/unattended-install.js +19 -5
  100. package/dist/unattended-install.js.map +1 -1
  101. package/dist/view-api.d.ts +15 -0
  102. package/dist/view-api.js +94 -33
  103. package/dist/view-api.js.map +1 -1
  104. package/dist/web-login.d.ts +4 -3
  105. package/dist/web-login.js +23 -14
  106. package/dist/web-login.js.map +1 -1
  107. package/dist/web-session.d.ts +5 -0
  108. package/dist/web-session.js +20 -8
  109. package/dist/web-session.js.map +1 -1
  110. package/launcher/agend-install.cjs +16 -2
  111. package/package.json +1 -1
@@ -59,6 +59,8 @@ export function kiroEngineStatus(candidates, opts = {}) {
59
59
  nextLaunch = { refused: t("kiro.engine_floor", c.name, c.kiroUi, floor) };
60
60
  const entry = ledger[c.name];
61
61
  return {
62
+ kiro3_readiness: { ready: c.kiroUi !== "legacy", message: t(c.kiroUi !== "legacy"
63
+ ? "kiro3.readiness_ready" : c.classic ? "kiro3.readiness_room" : "kiro3.readiness_classic") },
62
64
  name: c.name,
63
65
  classic: c.classic,
64
66
  kiro_ui: c.kiroUi,
@@ -71,7 +73,11 @@ export function kiroEngineStatus(candidates, opts = {}) {
71
73
  engine_floor: floor,
72
74
  };
73
75
  });
76
+ const stillClassic = candidates.filter(c => c.kiroUi === "legacy").length;
74
77
  return {
78
+ kiro3_readiness: { ready: stillClassic === 0, total: candidates.length, still_classic: stillClassic,
79
+ message: t(candidates.length === 0 ? "kiro3.readiness_none" : stillClassic === 0
80
+ ? "kiro3.readiness_all" : "kiro3.readiness_remaining", stillClassic) },
75
81
  kiro_cli: { binary: snapshot?.binaryPath ?? null, version: compat?.version ?? null, probed_at: snapshot?.at ?? null },
76
82
  instances,
77
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"kiro-engine-status.js","sourceRoot":"","sources":["../src/kiro-engine-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kiro-engine-status.js","sourceRoot":"","sources":["../src/kiro-engine-status.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAkC,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAyB,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC,iFAAiF;AACjF,MAAM,OAAO,GAA4C,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkBjC;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAqC,EAAE,OAAgC;IAC1G,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAgG,CAAC;IACzH,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,GAA+E,CAAC;QAC/F,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,aAAa,CAAC,KAAK,UAAU;YAAE,SAAS;QACpF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,iBAAiB,EAAE,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1K,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,CAAC;YAAE,SAAS;QACrG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,oBAAoB,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,OAAO,IAAI,aAAa,CAAC;QAClJ,IAAI,OAAO,KAAK,UAAU;YAAE,SAAS;QACrC,2FAA2F;QAC3F,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChN,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAsCD,MAAM,UAAU,gBAAgB,CAAC,UAA0C,EAAE,IAAI,GAA4B,EAAE;IAC7G,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC,EAAE,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAC;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAA4B,EAAE;QAC/G,IAAI,UAAmD,CAAC;QACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,UAAU,GAAG,EAAE,OAAO,EAAE,6FAA6F,EAAE,CAAC;QAC1H,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,UAAU,GAAG,EAAE,OAAO,EAAE,eAAe,QAAQ,CAAC,UAAU,wFAAwF,EAAE,CAAC;QACvJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACzF,CAAC;QACD,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAClE,IAAI,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YAAE,UAAU,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3H,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO;YACL,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ;oBAC/E,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE;YAC/F,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,kBAAkB,EAAE,CAAC,CAAC,iBAAiB;YACvC,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI;YACtC,UAAU,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI;YACpC,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE;YAC7B,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC;YACzC,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC1E,OAAO;QACL,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY;YACjG,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;gBAC9E,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,2BAA2B,EAAE,YAAY,CAAC,EAAE;QAC1E,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE;QACrH,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * kiro-cli-chat injects a synthetic first turn when AgEnD resumes a non-empty
3
+ * conversation. AgEnD never consumes that summary: the model then `reply()`s it
4
+ * onto the channel, so idle ClassicBot rooms keep spending tokens on it.
5
+ *
6
+ * Upstream (kiro-cli-chat `crates/chat-cli/src/cli/chat/mod.rs`, ~1940 on the
7
+ * 2.35 binary; amazon-q-developer-cli ~810): on `--resume` / `--resume-id` with
8
+ * non-empty history,
9
+ * input = Some(input.unwrap_or("In a few words, summarize our conversation so far.".to_owned()));
10
+ * There is no AgEnD scheduler, heartbeat, or keep-warm job with this text.
11
+ * Target selection is kiro's: any resumed conversation whose history is not
12
+ * empty. Idle classic rooms qualify because `src/backend/kiro.ts` always
13
+ * launches them with `--resume` / `--resume-id` unless `skipResume`, and the
14
+ * previous probes themselves keep history non-empty.
15
+ *
16
+ * The probe is unused on classic/legacy UI. AgEnD's override INPUT is only
17
+ * appended when `kiroUi === "legacy"` (boolean `--resume` and `--resume-id`).
18
+ * TUI and V3 launches are unchanged. kiro's handle_input treats a leading `!`
19
+ * as `bash -c <rest>`; `:` is a POSIX no-op.
20
+ */
21
+ export declare const KIRO_RESUME_SUMMARY_PROMPT = "In a few words, summarize our conversation so far.";
22
+ /** Positional INPUT that overrides kiro's resume default without calling the model. */
23
+ export declare const KIRO_RESUME_SUMMARY_OVERRIDE = "!:";
24
+ /**
25
+ * Whether kiro-cli-chat would inject {@link KIRO_RESUME_SUMMARY_PROMPT} for this
26
+ * `chat` argv (the words after the binary, with or without a leading `chat`).
27
+ * A supplied positional INPUT replaces the default, including our override.
28
+ */
29
+ export declare function kiroChatWouldInjectResumeSummary(argv: readonly string[]): boolean;
30
+ /**
31
+ * `chat` argv from an AgEnD kiro launch command (env assignments, then the
32
+ * binary, then `chat` and its flags). AgEnD quotes values with shellQuote
33
+ * (single quotes); that is all this splits.
34
+ */
35
+ export declare function kiroChatArgvFromLaunchCommand(cmd: string): string[];
36
+ /** True when this launch resumed a conversation (boolean `--resume` or `--resume-id`). */
37
+ export declare function kiroLaunchResumesConversation(argv: readonly string[]): boolean;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * kiro-cli-chat injects a synthetic first turn when AgEnD resumes a non-empty
3
+ * conversation. AgEnD never consumes that summary: the model then `reply()`s it
4
+ * onto the channel, so idle ClassicBot rooms keep spending tokens on it.
5
+ *
6
+ * Upstream (kiro-cli-chat `crates/chat-cli/src/cli/chat/mod.rs`, ~1940 on the
7
+ * 2.35 binary; amazon-q-developer-cli ~810): on `--resume` / `--resume-id` with
8
+ * non-empty history,
9
+ * input = Some(input.unwrap_or("In a few words, summarize our conversation so far.".to_owned()));
10
+ * There is no AgEnD scheduler, heartbeat, or keep-warm job with this text.
11
+ * Target selection is kiro's: any resumed conversation whose history is not
12
+ * empty. Idle classic rooms qualify because `src/backend/kiro.ts` always
13
+ * launches them with `--resume` / `--resume-id` unless `skipResume`, and the
14
+ * previous probes themselves keep history non-empty.
15
+ *
16
+ * The probe is unused on classic/legacy UI. AgEnD's override INPUT is only
17
+ * appended when `kiroUi === "legacy"` (boolean `--resume` and `--resume-id`).
18
+ * TUI and V3 launches are unchanged. kiro's handle_input treats a leading `!`
19
+ * as `bash -c <rest>`; `:` is a POSIX no-op.
20
+ */
21
+ export const KIRO_RESUME_SUMMARY_PROMPT = "In a few words, summarize our conversation so far.";
22
+ /** Positional INPUT that overrides kiro's resume default without calling the model. */
23
+ export const KIRO_RESUME_SUMMARY_OVERRIDE = "!:";
24
+ /** Flags on `kiro-cli chat` that consume the next argv word. */
25
+ const VALUE_FLAGS = new Set([
26
+ "--resume-id", "--agent", "--model", "--effort", "--trust-tools",
27
+ "--wrap", "-w", "--format", "-f", "--output-format", "--delete-session", "-d",
28
+ "--session-source", "--agent-engine", "--mode",
29
+ ]);
30
+ /**
31
+ * Whether kiro-cli-chat would inject {@link KIRO_RESUME_SUMMARY_PROMPT} for this
32
+ * `chat` argv (the words after the binary, with or without a leading `chat`).
33
+ * A supplied positional INPUT replaces the default, including our override.
34
+ */
35
+ export function kiroChatWouldInjectResumeSummary(argv) {
36
+ const a = argv[0] === "chat" ? argv.slice(1) : argv;
37
+ let resume = false;
38
+ let input;
39
+ for (let i = 0; i < a.length; i++) {
40
+ const x = a[i];
41
+ if (x === "--resume" || x === "-r") {
42
+ resume = true;
43
+ continue;
44
+ }
45
+ if (x === "--resume-id") {
46
+ resume = true;
47
+ i++;
48
+ continue;
49
+ }
50
+ if (x.startsWith("--resume-id=")) {
51
+ resume = true;
52
+ continue;
53
+ }
54
+ if (VALUE_FLAGS.has(x)) {
55
+ i++;
56
+ continue;
57
+ }
58
+ if (x.startsWith("-"))
59
+ continue;
60
+ input = x;
61
+ }
62
+ return resume && input === undefined;
63
+ }
64
+ /**
65
+ * `chat` argv from an AgEnD kiro launch command (env assignments, then the
66
+ * binary, then `chat` and its flags). AgEnD quotes values with shellQuote
67
+ * (single quotes); that is all this splits.
68
+ */
69
+ export function kiroChatArgvFromLaunchCommand(cmd) {
70
+ const at = cmd.search(/(?:^|\s)chat(?:\s|$)/);
71
+ if (at < 0)
72
+ return [];
73
+ const rest = cmd.slice(cmd.indexOf("chat", at) + "chat".length);
74
+ const out = ["chat"];
75
+ const re = /'([^']*)'|\S+/g;
76
+ for (let m = re.exec(rest); m; m = re.exec(rest))
77
+ out.push(m[1] !== undefined ? m[1] : m[0]);
78
+ return out;
79
+ }
80
+ /** True when this launch resumed a conversation (boolean `--resume` or `--resume-id`). */
81
+ export function kiroLaunchResumesConversation(argv) {
82
+ const a = argv[0] === "chat" ? argv.slice(1) : argv;
83
+ return a.some(x => x === "--resume" || x === "-r" || x === "--resume-id" || x.startsWith("--resume-id="));
84
+ }
85
+ //# sourceMappingURL=kiro-resume-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro-resume-summary.js","sourceRoot":"","sources":["../src/kiro-resume-summary.ts"],"names":[],"mappings":"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"}
package/dist/locale.js CHANGED
@@ -246,6 +246,15 @@ const enMessages = {
246
246
  "needs.reason.dangerous_command": "Dangerous command waiting",
247
247
  "needs.reason.login": "Sign-in needed",
248
248
  "needs.reason.dialog": "Waiting at a dialog",
249
+ "needs.reason.kiro_choice": "Kiro needs your decision",
250
+ "kiro3.readiness_classic": "Not ready for Kiro 3.x — migrate on Kiro 2.x first with migrate_kiro_instance.",
251
+ "kiro3.readiness_room": "Not ready for Kiro 3.x — this Classic room can't be migrated by AgEnD; switch the room to another backend in the Classic settings, or stay on Kiro 2.x.",
252
+ "kiro3.readiness_ready": "No Classic migration required.",
253
+ "kiro3.readiness_all": "All Kiro agents have completed Classic migration.",
254
+ "kiro3.readiness_remaining": "{0} Kiro agents still use Classic.",
255
+ "kiro3.readiness_none": "No Kiro agents.",
256
+ "kiro3.classic": "Kiro CLI {0} no longer supports Classic, so this agent was not started. Its saved conversation is unchanged. Use Kiro CLI 2.x to continue, or migrate this agent on 2.x before upgrading to 3.x.",
257
+ "kiro3.running": "Kiro is waiting for a V2/V3 choice. AgEnD has blocked message delivery and will not answer the menu. Open the agent to inspect it. To keep using Classic, use Kiro CLI 2.x.",
249
258
  "needs.reason.terminal_input": "May be waiting for input",
250
259
  "inst.session_oom_proof": "anonymous RSS {0}% of RAM; {1}× the largest other task's RSS",
251
260
  "inst.oom_unclear_stopped": "crashed repeatedly (out of memory, cause unclear)",
@@ -462,6 +471,7 @@ const enMessages = {
462
471
  "kiro.compaction_kept_ambiguous": "kiro: resuming {0}: conversation {1} was compacted into more than one conversation ({2}), so which one is this instance's cannot be told.",
463
472
  "kiro.compaction_kept_not_ours": "kiro: resuming {0}: conversation {1} was compacted into {2}, but {2} is claimed by another instance or was given up.",
464
473
  "kiro.claim_lost": "kiro: starting a new conversation, because the recorded conversation {0} is no longer this instance's ({1}). It stays in kiro's store.",
474
+ "kiro.identity_unreadable": "kiro: starting a new conversation that is not recorded, because AgEnD's conversation record {0} cannot be fully read. The file is kept as it is (never overwritten); until it is repaired or removed, each launch starts a new conversation.",
465
475
  "kiro.claim_lost_missing": "its claim file is missing",
466
476
  "kiro.claim_lost_incomplete": "its claim file is incomplete; a complete claim is the instance name followed by a newline",
467
477
  "kiro.claim_lost_other_owner": "another instance claims it",
@@ -547,6 +557,7 @@ const enMessages = {
547
557
  "interactive.kind.dangerous_command": "dangerous command confirmation",
548
558
  "interactive.kind.login": "login",
549
559
  "interactive.kind.dialog": "CLI choice",
560
+ "interactive.kind.kiro_choice": "Kiro needs your decision",
550
561
  "interactive.kind.suspected_terminal_input": "possible terminal input",
551
562
  "interaction.waiting": "Waiting for your input ({0}); seen {1}s ago.",
552
563
  "interaction.candidate": "Checking whether input is needed ({0}); seen {1}s ago.",
@@ -606,6 +617,7 @@ const enMessages = {
606
617
  "exit.restarted": "✅ {0} restarted.",
607
618
  "exit.ignored": "🚫 Restart for {0} ignored.",
608
619
  "exit.expired": "⌛ Restart prompt for {0} expired.",
620
+ "restart.superseded": "⌛ Not restarted: {0} was stopped, restarted or replaced after this was asked.",
609
621
  "exit.restart_failed": "❌ Failed to restart {0}: {1}",
610
622
  "hang.detected": "⚠️ {0} may be stuck — pane unchanged for {1}min, ready prompt not recognized",
611
623
  "hang.restart": "🔄 Force restart",
@@ -634,6 +646,7 @@ const enMessages = {
634
646
  "poll.not_ready": "This poll is still being posted — try again in a moment.",
635
647
  "poll.voters_title": "🗳 Who voted:",
636
648
  "menu.click_stale": "⚠️ Nothing was changed: the instance moved to another bot, or you are no longer an admin there. Open the menu again.",
649
+ "menu.instance_replaced": "⚠️ Nothing was changed: {0} was stopped, restarted or replaced since this menu opened. Open the menu again.",
637
650
  "buttons.wrong_place": "⚠️ This button does not match the prompt it belongs to. Run the command again.",
638
651
  "buttons.post_failed": "⚠️ Could not post the buttons: {0}",
639
652
  "tips.label": "Tip",
@@ -736,6 +749,7 @@ const enMessages = {
736
749
  "login.status_install": "Install",
737
750
  "login.status_install_then_auth": "Install + sign in",
738
751
  "login.install_on_host": "not installed, and there is no remote installer for it — install it on the host.",
752
+ "login.host_only": "sign in on the host: run `{0}` there.",
739
753
  "login.none_available": "⚠️ No backend can be installed or signed in to remotely here.",
740
754
  "login.no_remote_flow": "⚠️ Backend \"{0}\" has no remote login flow. Run its CLI login command on the host.",
741
755
  "login.unsupported": "⚠️ No remote login flow for backend \"{0}\". OpenCode credentials are API keys — manage them with `opencode auth` in a trusted terminal.",
@@ -1293,6 +1307,8 @@ const enMessages = {
1293
1307
  "delivery.fleet_failed_silent_schedule": "❌ A silent schedule's paste into {0} was not delivered ({3}). It is not listed in Needs you; the next run goes ahead as usual.\noperation_id={1}; target={0}; delivery_id={2}; state=failed",
1294
1308
  "delivery.expired": "{0} cross-instance message(s) reached the 24-hour waiting limit. Delivery is still unconfirmed for {1} of them; they may already have arrived, so do not resend those. Notices to the sending instances have been queued.",
1295
1309
  "delivery.cancelled_unsent": "⏹ Cancelled. {0} message(s) you sent to {1} before the cancel were not delivered (marked ❌). Send them again if you still need them.",
1310
+ "delivery.handoff_not_taken": "⚠️ {0} message(s) you sent to {1} while it was busy were queued in its CLI, but the CLI finished without taking them up (marked ❌). Send them again if you still need them.",
1311
+ "delivery.handoff_unverified_after_restart": "⚠️ {1} restarted while {0} message(s) you sent were still waiting in its CLI's queue, and AgEnD could not check whether they were taken, so they were not sent again (marked ❌). Send them again if you still need them.",
1296
1312
  "delivery.lane_waiting": "⚠️ The message to {0} is still waiting after {1} minutes. We are waiting for its current process to report the result or be replaced before sending another message.\ndelivery_id={2}",
1297
1313
  "delivery.restart_blocked": "{0} is still stopped because we could not confirm that its previous CLI window closed. Check that window before restarting so a message is not sent twice.",
1298
1314
  "delivery.error_expired": "The message reached its waiting time limit.",
@@ -1718,6 +1734,15 @@ const zhTWMessages = {
1718
1734
  "needs.reason.dangerous_command": "危險指令待確認",
1719
1735
  "needs.reason.login": "需要登入",
1720
1736
  "needs.reason.dialog": "停在對話框",
1737
+ "needs.reason.kiro_choice": "Kiro 需要你決定",
1738
+ "kiro3.readiness_classic": "尚未準備好使用 Kiro 3.x:請先在 Kiro 2.x 用 migrate_kiro_instance 完成遷移。",
1739
+ "kiro3.readiness_room": "尚未準備好使用 Kiro 3.x:這個 Classic 房間無法由 AgEnD 遷移;請在 Classic 設定把房間換成其他後端,或繼續使用 Kiro 2.x。",
1740
+ "kiro3.readiness_ready": "不需要進行 Classic 遷移。",
1741
+ "kiro3.readiness_all": "所有 Kiro Agent 都已不再使用 Classic。",
1742
+ "kiro3.readiness_remaining": "還有 {0} 個 Kiro Agent 使用 Classic。",
1743
+ "kiro3.readiness_none": "目前沒有 Kiro Agent。",
1744
+ "kiro3.classic": "Kiro CLI {0} 已不支援 Classic,所以這個 Agent 沒有啟動,已存的對話沒有變動。要繼續使用,請改用 Kiro CLI 2.x;或先在 2.x 把這個 Agent 遷移到新介面,再升級到 3.x。",
1745
+ "kiro3.running": "Kiro 正在等你選擇 V2 或 V3。AgEnD 已暫停送訊息給它,也不會替你回答這個選單。請打開 Agent 查看;要繼續用 Classic,請改用 Kiro CLI 2.x。",
1721
1746
  "needs.reason.terminal_input": "可能在等輸入",
1722
1747
  "inst.session_oom_proof": "匿名記憶體佔 RAM 的 {0}%,為其他最大程序 RSS 的 {1} 倍",
1723
1748
  "inst.oom_unclear_stopped": "反覆當機(記憶體不足,原因不明)",
@@ -1934,6 +1959,7 @@ const zhTWMessages = {
1934
1959
  "kiro.compaction_kept_ambiguous": "kiro:恢復 {0}:對話 {1} 被壓縮成不只一個對話({2}),無法判斷哪一個屬於這個 instance。",
1935
1960
  "kiro.compaction_kept_not_ours": "kiro:恢復 {0}:對話 {1} 已被壓縮成 {2},但 {2} 已被其他 instance 認領或已被放棄。",
1936
1961
  "kiro.claim_lost": "kiro:開新對話,因為紀錄中的對話 {0} 已不屬於這個 instance({1})。該對話仍保留在 kiro 的儲存區。",
1962
+ "kiro.identity_unreadable": "kiro:開新對話且不記錄,因為 AgEnD 的對話紀錄 {0} 無法完整讀取。該檔案原封保留(不會覆寫);在修復或移除它之前,每次啟動都會開新對話。",
1937
1963
  "kiro.claim_lost_missing": "認領檔不見了",
1938
1964
  "kiro.claim_lost_incomplete": "認領檔不完整;完整的認領檔是 instance 名稱加上一個換行",
1939
1965
  "kiro.claim_lost_other_owner": "已被其他 instance 認領",
@@ -2019,6 +2045,7 @@ const zhTWMessages = {
2019
2045
  "interactive.kind.dangerous_command": "危險命令確認",
2020
2046
  "interactive.kind.login": "登入",
2021
2047
  "interactive.kind.dialog": "CLI 選項",
2048
+ "interactive.kind.kiro_choice": "Kiro 需要你決定",
2022
2049
  "interactive.kind.suspected_terminal_input": "可能需要終端輸入",
2023
2050
  "interaction.waiting": "正在等你輸入({0});{1} 秒前看到。",
2024
2051
  "interaction.candidate": "正在確認是否需要輸入({0});{1} 秒前看到。",
@@ -2078,6 +2105,7 @@ const zhTWMessages = {
2078
2105
  "exit.restarted": "✅ {0} 已重新啟動。",
2079
2106
  "exit.ignored": "🚫 已忽略 {0} 的重啟提示。",
2080
2107
  "exit.expired": "⌛ {0} 的重啟提示已逾時。",
2108
+ "restart.superseded": "⌛ 沒有重啟:按下之後,{0} 已被停止、重啟或替換。",
2081
2109
  "exit.restart_failed": "❌ 無法重啟 {0}:{1}",
2082
2110
  "hang.detected": "⚠️ {0} 可能卡住了 — 畫面已 {1} 分鐘無變化,也偵測不到就緒提示",
2083
2111
  "hang.restart": "🔄 強制重啟",
@@ -2106,6 +2134,7 @@ const zhTWMessages = {
2106
2134
  "poll.not_ready": "投票還在送出中,請稍後再試。",
2107
2135
  "poll.voters_title": "🗳 投票名單:",
2108
2136
  "menu.click_stale": "⚠️ 沒有變更:這個 instance 已移到另一個 bot,或你已不再是那裡的管理員。請重新開啟選單。",
2137
+ "menu.instance_replaced": "⚠️ 沒有變更:開啟選單後,{0} 已被停止、重啟或替換。請重新開啟選單。",
2109
2138
  "buttons.wrong_place": "⚠️ 這個按鈕和它所屬的提示對不上,請重新執行指令。",
2110
2139
  "buttons.post_failed": "⚠️ 無法送出按鈕:{0}",
2111
2140
  "tips.label": "小提示",
@@ -2208,6 +2237,7 @@ const zhTWMessages = {
2208
2237
  "login.status_install": "安裝",
2209
2238
  "login.status_install_then_auth": "安裝並登入",
2210
2239
  "login.install_on_host": "尚未安裝,且沒有遠端安裝方式——請在主機上安裝。",
2240
+ "login.host_only": "請在主機上登入:在那裡執行 `{0}`。",
2211
2241
  "login.none_available": "⚠️ 這裡沒有可以遠端安裝或登入的 Backend。",
2212
2242
  "login.no_remote_flow": "⚠️ Backend「{0}」沒有遠端登入流程。請在主機上執行它自己的 CLI 登入指令。",
2213
2243
  "login.unsupported": "⚠️ Backend「{0}」沒有遠端登入流程。OpenCode 憑證是 API key——請在可信任的終端用 `opencode auth` 管理。",
@@ -2765,6 +2795,8 @@ const zhTWMessages = {
2765
2795
  "delivery.fleet_failed_silent_schedule": "❌ 靜默排程貼到 {0} 的內容未送達({3})。不會列入「需要你」;下一次排程照常執行。\noperation_id={1}; target={0}; delivery_id={2}; state=failed",
2766
2796
  "delivery.expired": "有 {0} 筆跨 instance 訊息已等滿 24 小時。其中 {1} 筆仍無法確認是否送達,可能已送達,請不要重送;通知已排入佇列,等待送給寄件的 instance。",
2767
2797
  "delivery.cancelled_unsent": "⏹ 已取消。你在取消前傳給 {1} 的 {0} 則訊息沒有送出(已標 ❌),還需要的話請再傳一次。",
2798
+ "delivery.handoff_not_taken": "⚠️ 你在 {1} 忙碌時傳的 {0} 則訊息排進了它的 CLI,但 CLI 結束這一輪後沒有處理(已標 ❌)。還需要的話請再傳一次。",
2799
+ "delivery.handoff_unverified_after_restart": "⚠️ {1} 重新啟動時,你傳的 {0} 則訊息還在它的 CLI 佇列中;AgEnD 無法確認它們是否已被處理,所以沒有重送(已標 ❌)。還需要的話請再傳一次。",
2768
2800
  "delivery.lane_waiting": "⚠️ 送往 {0} 的訊息已等了 {1} 分鐘。下一筆會等目前的程序回報結果或被替換後再送。\ndelivery_id={2}",
2769
2801
  "delivery.restart_blocked": "{0} 暫時保持停止,因為無法確認先前的 CLI 視窗已關閉。請先檢查該視窗再重啟,以免訊息重複送出。",
2770
2802
  "delivery.error_expired": "這筆訊息已達等待期限。",