@songsid/agend 2.2.0-beta.3 → 2.2.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-cli.js +6 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/backend/claude-code.d.ts +46 -2
- package/dist/backend/claude-code.js +125 -31
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +33 -3
- package/dist/backend/credential-profile.js +107 -5
- package/dist/backend/credential-profile.js.map +1 -1
- package/dist/backend/types.d.ts +1 -1
- package/dist/cache-service.d.ts +2 -0
- package/dist/cache-service.js +2 -1
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +13 -0
- package/dist/channel/adapters/discord.js +42 -0
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +6 -1
- package/dist/channel/adapters/telegram.js +27 -2
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/types.d.ts +22 -1
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +7 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/daemon.d.ts +96 -0
- package/dist/daemon.js +339 -16
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-outbox.d.ts +18 -5
- package/dist/delivery-outbox.js +121 -14
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/fleet-context.d.ts +1 -0
- package/dist/fleet-manager.d.ts +89 -3
- package/dist/fleet-manager.js +541 -86
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +43 -10
- package/dist/host-memory.d.ts +10 -0
- package/dist/host-memory.js +33 -1
- package/dist/host-memory.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +25 -6
- package/dist/instance-lifecycle.js +73 -26
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +48 -18
- package/dist/locale.js.map +1 -1
- package/dist/login-controller.d.ts +20 -3
- package/dist/login-controller.js +71 -19
- package/dist/login-controller.js.map +1 -1
- package/dist/login-flows.d.ts +5 -2
- package/dist/login-flows.js +5 -4
- package/dist/login-flows.js.map +1 -1
- package/dist/memory-pressure.d.ts +13 -1
- package/dist/memory-pressure.js +50 -10
- package/dist/memory-pressure.js.map +1 -1
- package/dist/outbound-handlers.d.ts +61 -0
- package/dist/outbound-handlers.js +100 -35
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +1 -0
- package/dist/outbound-schemas.js +2 -0
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-preview.d.ts +100 -0
- package/dist/public-preview.js +233 -0
- package/dist/public-preview.js.map +1 -0
- package/dist/public-web-gateway.js +6 -4
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +20 -0
- package/dist/public-web-link.js +26 -1
- package/dist/public-web-link.js.map +1 -1
- package/dist/restart-progress.d.ts +29 -0
- package/dist/restart-progress.js +23 -0
- package/dist/restart-progress.js.map +1 -1
- package/dist/settings-api.js +10 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/spawn-gate.js +5 -1
- package/dist/spawn-gate.js.map +1 -1
- package/dist/spawn-hold-reply.d.ts +12 -0
- package/dist/spawn-hold-reply.js +39 -0
- package/dist/spawn-hold-reply.js.map +1 -0
- package/dist/topic-commands.js +9 -2
- package/dist/topic-commands.js.map +1 -1
- package/dist/tunnel/purpose-lane.d.ts +5 -1
- package/dist/tunnel/purpose-lane.js +14 -7
- package/dist/tunnel/purpose-lane.js.map +1 -1
- package/dist/turn-resume.d.ts +2 -0
- package/dist/turn-resume.js +1 -1
- package/dist/turn-resume.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/ui/chat-mentions.js +63 -0
- package/dist/ui/chat-render.js +25 -0
- package/dist/ui/chat-strings.js +14 -2
- package/dist/ui/chat-thread.js +28 -10
- package/dist/ui/panel-chat.js +26 -11
- package/dist/ui/panel-details.js +2 -0
- package/dist/ui/panel-fleet.js +199 -57
- package/dist/ui/panel-needs.js +4 -3
- package/dist/ui/panel-settings.js +4 -2
- package/dist/ui/preview-panel.js +48 -14
- package/dist/ui/preview-status.js +28 -0
- package/dist/ui/preview.js +40 -3
- package/dist/ui/settings-token.js +1 -1
- package/dist/ui/shared/app-i18n.js +4 -0
- package/dist/ui/shared/app-prefs.js +1 -0
- package/dist/ui/shared/app-shell.js +146 -2
- package/dist/ui/shared/app-store.js +3 -1
- package/dist/ui/shared/app.css +47 -20
- package/dist/ui/shared/instance-nav.js +79 -23
- package/dist/ui/shared/view-strings.js +10 -0
- package/dist/unrecognised-prompt.d.ts +23 -0
- package/dist/unrecognised-prompt.js +74 -0
- package/dist/unrecognised-prompt.js.map +1 -0
- package/dist/update-install.d.ts +8 -0
- package/dist/update-install.js +9 -3
- package/dist/update-install.js.map +1 -1
- package/dist/update-marker.d.ts +40 -0
- package/dist/update-marker.js +49 -0
- package/dist/update-marker.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +1 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/providers.d.ts +34 -5
- package/dist/usage/providers.js +160 -27
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/statusline-usage.d.ts +6 -2
- package/dist/usage/statusline-usage.js +10 -4
- package/dist/usage/statusline-usage.js.map +1 -1
- package/dist/web-api.d.ts +20 -0
- package/dist/web-api.js +216 -30
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +3 -2
- package/dist/web-auth.js.map +1 -1
- package/dist/web-mentions.d.ts +44 -0
- package/dist/web-mentions.js +75 -0
- package/dist/web-mentions.js.map +1 -0
- package/dist/web-prefs.js +2 -0
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +14 -1
- package/dist/web-preview.js +35 -13
- package/dist/web-preview.js.map +1 -1
- package/dist/web-schedules.d.ts +12 -0
- package/dist/web-schedules.js +34 -0
- package/dist/web-schedules.js.map +1 -0
- package/package.json +1 -1
|
@@ -174,7 +174,10 @@ function moveIn(arr, moving, target, before) {
|
|
|
174
174
|
/** The list's state for the page's life: this browser's order, folded groups and filter (each also kept in storage). */
|
|
175
175
|
export const navStore = createStore({ order: readOrder(), collapsed: readCollapsed(), filter: readFilter(), favorites: readFavorites() });
|
|
176
176
|
/** Read them again from this browser's storage — what a page load does (the store above is made that way). */
|
|
177
|
-
export function loadNavPrefs() {
|
|
177
|
+
export function loadNavPrefs() {
|
|
178
|
+
navStore.set({ order: readOrder(), collapsed: readCollapsed(), filter: readFilter(), favorites: readFavorites() });
|
|
179
|
+
namesStore.set({ primary: readNamesPrimary() });
|
|
180
|
+
}
|
|
178
181
|
/** Change the filter ({ q?, status?, cli? }): the same on every page, and kept by this browser. */
|
|
179
182
|
export function setNavFilter(patch) {
|
|
180
183
|
const filter = { ...navStore.get().filter, ...patch };
|
|
@@ -207,6 +210,16 @@ export function moveFavorite(name, delta, known) {
|
|
|
207
210
|
cur.splice(to, 0, cur.splice(from, 1)[0]);
|
|
208
211
|
setFavorites(cur);
|
|
209
212
|
}
|
|
213
|
+
// ── #1700: the filter's facet groups, open or folded — per device (localStorage; blocked or full storage: this page only) ──
|
|
214
|
+
const FACETS_KEY = "agend_nav_facets";
|
|
215
|
+
function readFacetsOpen() {
|
|
216
|
+
try {
|
|
217
|
+
const v = JSON.parse(stored(FACETS_KEY) || "{}");
|
|
218
|
+
return { status: !!(v && v.status === true), cli: !!(v && v.cli === true) };
|
|
219
|
+
} catch { return { status: false, cli: false }; }
|
|
220
|
+
}
|
|
221
|
+
function writeFacetsOpen(open) { try { localStorage.setItem(FACETS_KEY, JSON.stringify({ status: !!open.status, cli: !!open.cli })); } catch { /* this page only */ } }
|
|
222
|
+
|
|
210
223
|
/** The Favorites group's key among the tag groups: no tag can be it (a group name is never a control character). */
|
|
211
224
|
const FAV_GROUP = "\u0000favorites";
|
|
212
225
|
function persistOrder(groupNames, instByGroup) {
|
|
@@ -235,6 +248,35 @@ export function labelOf(it) {
|
|
|
235
248
|
const d = it && typeof it.display_name === "string" ? it.display_name.trim() : "";
|
|
236
249
|
return d || nameOf(it);
|
|
237
250
|
}
|
|
251
|
+
|
|
252
|
+
// ── #1722: both names — which one leads is a synced preference (#1665 "names.primary", default the nickname) ──
|
|
253
|
+
const NAMES_KEY = "agend_names_primary";
|
|
254
|
+
function readNamesPrimary() {
|
|
255
|
+
const p = prefInForce("names.primary");
|
|
256
|
+
const v = p ? p.value : stored(NAMES_KEY);
|
|
257
|
+
return v === "instance" ? "instance" : "nickname";
|
|
258
|
+
}
|
|
259
|
+
/** { primary: "nickname" | "instance" } — every surface that names an instance (sidebar, chat header, Needs you) reads it. */
|
|
260
|
+
export const namesStore = createStore({ primary: readNamesPrimary() });
|
|
261
|
+
export function setNamesPrimary(value) {
|
|
262
|
+
const primary = value === "instance" ? "instance" : "nickname";
|
|
263
|
+
namesStore.set({ primary });
|
|
264
|
+
savePref("names.primary", primary);
|
|
265
|
+
}
|
|
266
|
+
onPrefsChanged((keys) => { if (keys.has("names.primary")) namesStore.set({ primary: readNamesPrimary() }); });
|
|
267
|
+
/**
|
|
268
|
+
* An instance's two names as the web shows them: the one leading (`primary`) and the other (`secondary`), or "" when
|
|
269
|
+
* there is no other — no nickname, or a nickname that is the instance name itself (one line).
|
|
270
|
+
*/
|
|
271
|
+
export function namesOf(it, primary = namesStore.get().primary) {
|
|
272
|
+
const real = nameOf(it);
|
|
273
|
+
const nick = it && typeof it.display_name === "string" ? it.display_name.trim() : "";
|
|
274
|
+
if (!nick || nick === real) return { primary: real, secondary: "" };
|
|
275
|
+
return primary === "instance" ? { primary: real, secondary: nick } : { primary: nick, secondary: real };
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** #1722: the CLI on the avatar's corner — a letter, so it reads without colour (its name is in the row's text too). */
|
|
279
|
+
const CLI_MONOGRAM = { "claude-code": "C", codex: "X", "kiro-cli": "K", grok: "G", antigravity: "A", opencode: "O", muse: "M" };
|
|
238
280
|
// One path segment under /ui/img/<kind>/ — no further slash or backslash, and not a dot segment ("." / ".." or their
|
|
239
281
|
// %2e spellings, which a browser resolves too): the picture can only ever be one of those routes (#1642 review).
|
|
240
282
|
const sameOrigin = (src) => typeof src === "string"
|
|
@@ -245,7 +287,8 @@ export function avatarOf(it) {
|
|
|
245
287
|
if (a && a.kind === "image" && sameOrigin(a.src)) return { kind: "image", src: a.src };
|
|
246
288
|
if (a && a.kind === "emoji" && sameOrigin(a.src)) return { kind: "emoji", src: a.src, alt: typeof a.alt === "string" ? a.alt : "" };
|
|
247
289
|
if (a && a.kind === "emoji" && typeof a.text === "string" && a.text.trim()) return { kind: "emoji", text: a.text.trim() };
|
|
248
|
-
|
|
290
|
+
// #1722: the initial is the leading name's ("Names"), not the server's (which is always the nickname's).
|
|
291
|
+
return { kind: "initial", text: firstCharacter(namesOf(it).primary) || (a && a.kind === "initial" && typeof a.text === "string" ? a.text : "") };
|
|
249
292
|
}
|
|
250
293
|
const ACCENT = /^#[0-9a-f]{6}$/i;
|
|
251
294
|
/** The status dot on the avatar: needs you, crashed, paused, stopped, looks stuck, working, idle — colour AND a label. */
|
|
@@ -264,7 +307,7 @@ const DOT = {
|
|
|
264
307
|
export function dotLabel(state) { return (DOT[state] || DOT.stopped)[1](); }
|
|
265
308
|
|
|
266
309
|
/** An instance's avatar with its status dot. The ring (its bot's colour) is a CSS custom property set through the CSSOM. */
|
|
267
|
-
export function InstanceAvatar({ it, state }) {
|
|
310
|
+
export function InstanceAvatar({ it, state, cli = false }) {
|
|
268
311
|
const a = avatarOf(it);
|
|
269
312
|
const [broken, setBroken] = useState("");
|
|
270
313
|
const el = useRef(null);
|
|
@@ -275,12 +318,13 @@ export function InstanceAvatar({ it, state }) {
|
|
|
275
318
|
if (accent) node.style.setProperty("--ring", accent); else node.style.removeProperty("--ring");
|
|
276
319
|
}, [accent]);
|
|
277
320
|
const src = a.kind !== "initial" && a.src && broken !== a.src ? a.src : "";
|
|
278
|
-
const text = a.kind === "emoji" && a.text ? a.text : a.kind === "initial" ? a.text : firstCharacter(
|
|
321
|
+
const text = a.kind === "emoji" && a.text ? a.text : a.kind === "initial" ? a.text : firstCharacter(namesOf(it).primary);
|
|
279
322
|
const [cls] = DOT[state] || DOT.stopped;
|
|
280
323
|
const label = dotLabel(state);
|
|
281
324
|
return html`<span ref=${el} class=${`av${accent ? " ring" : ""}${a.kind === "emoji" ? " av-emoji" : ""}`}>
|
|
282
325
|
${src ? html`<img src=${src} alt="" decoding="async" onError=${() => setBroken(src)} />` : html`<span class="av-text" aria-hidden="true">${text}</span>`}
|
|
283
|
-
<span class=${`av-dot dot ${cls}`} role="img" aria-label=${label} title=${label}></span
|
|
326
|
+
<span class=${`av-dot dot ${cls}`} role="img" aria-label=${label} title=${label}></span>${cli
|
|
327
|
+
? html`<span class="av-cli" aria-hidden="true" title=${backendLabel(it.backend)}>${CLI_MONOGRAM[it.backend] || "·"}</span>` : null}</span>`;
|
|
284
328
|
}
|
|
285
329
|
|
|
286
330
|
// ── The list ──
|
|
@@ -296,9 +340,13 @@ const statusText = (facet) => (facet === "needs" ? t("app.needsYou") : facet ===
|
|
|
296
340
|
*/
|
|
297
341
|
export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting = {}, viewOnly = false, onPick }) {
|
|
298
342
|
const nav = useStore(navStore);
|
|
343
|
+
const names = useStore(namesStore); // #1722: which name leads
|
|
299
344
|
const filterRef = useRef(null);
|
|
300
345
|
const list = useRef(null);
|
|
301
346
|
const drag = useRef(null);
|
|
347
|
+
// #1700: which facet groups are open — this device's (screen layout, not a synced preference), read when the list mounts.
|
|
348
|
+
const [facetOpen, setFacetOpen] = useState(readFacetsOpen);
|
|
349
|
+
const toggleFacet = (key) => setFacetOpen((cur) => { const next = { ...cur, [key]: !cur[key] }; writeFacetsOpen(next); return next; });
|
|
302
350
|
// #1664: "☆ Edit" — the stars on every row (on a phone the only way to them) and ↑ ↓ on the favorites — only on the
|
|
303
351
|
// full list, as drag: in a filtered one the row above may not be the one above in the list (#1677 review).
|
|
304
352
|
const [editing, setEditing] = useState(false);
|
|
@@ -325,16 +373,13 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
325
373
|
const f = nav.filter;
|
|
326
374
|
const shown = filterSidebar(shownGroups, shownInsts, byName, f.q, backendLabel, { status: f.status, cli: f.cli, statusOf: facetOf });
|
|
327
375
|
const backends = [...new Set(items.map((it) => it.backend).filter((b) => typeof b === "string" && b))].sort((a, b) => backendLabel(a).localeCompare(backendLabel(b)));
|
|
328
|
-
// #1630: a display name two rows share would tell them apart from nothing — only then does the row keep its name too.
|
|
329
|
-
const labelCount = new Map();
|
|
330
|
-
for (const it of items) { const l = labelOf(it); labelCount.set(l, (labelCount.get(l) || 0) + 1); }
|
|
331
376
|
const toggle = (g) => { const c = new Set(navStore.get().collapsed); if (c.has(g)) c.delete(g); else c.add(g); setCollapsed(c); };
|
|
332
377
|
// From the store, not this render's copy: two clicks before the next render must both count.
|
|
333
378
|
const flip = (key, value) => { const cur = new Set(navStore.get().filter[key]); if (cur.has(value)) cur.delete(value); else cur.add(value); setNavFilter({ [key]: [...cur] }); };
|
|
334
379
|
// Drag to reorder: only the full list (a filtered subset would be ambiguous), groups among groups, instances within
|
|
335
380
|
// their group.
|
|
336
381
|
const dragProps = (item) => shown.active ? {} : {
|
|
337
|
-
draggable:
|
|
382
|
+
draggable: true,
|
|
338
383
|
onDragStart: (e) => { drag.current = item; e.currentTarget.classList.add("dragging"); try { e.dataTransfer.effectAllowed = "move"; e.dataTransfer.setData("text/plain", item.name); } catch { /* Firefox needs data */ } },
|
|
339
384
|
onDragEnd: (e) => { e.currentTarget.classList.remove("dragging"); drag.current = null; },
|
|
340
385
|
onDragOver: (e) => {
|
|
@@ -360,16 +405,27 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
360
405
|
persistOrder(names, insts);
|
|
361
406
|
},
|
|
362
407
|
};
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
408
|
+
// #1700: a facet group (Status, CLI) folds under a real header button. Folded with a filter set, the header says so:
|
|
409
|
+
// one or two choices by name, more as "N selected" — a filter is never out of sight.
|
|
410
|
+
const chips = (key, values, label, text) => {
|
|
411
|
+
const open = !!facetOpen[key];
|
|
412
|
+
const sel = f[key];
|
|
413
|
+
const summary = !open && sel.length ? (sel.length <= 2 ? sel.map(text).join(", ") : tn("facetSelected", { n: sel.length })) : "";
|
|
414
|
+
const hint = tn(open ? "facetHide" : "facetShow", { group: label });
|
|
415
|
+
return html`<div class=${`nav-facet${open ? " open" : ""}`}>
|
|
416
|
+
<button type="button" class="nav-facet-head" aria-expanded=${open ? "true" : "false"} aria-controls=${`nav-facet-${key}`}
|
|
417
|
+
title=${summary ? `${hint} (${label} · ${summary})` : hint} onClick=${() => toggleFacet(key)}>
|
|
418
|
+
<${Icon} name="chevron" size=${12} cls=${open ? "caret" : "caret folded"} /><span class="nav-facet-label">${label}</span>
|
|
419
|
+
${summary ? html`<span class="nav-facet-sum">· ${summary}</span>` : sel.length ? html`<span class="nav-facet-n">${sel.length}</span>` : null}
|
|
420
|
+
</button>
|
|
421
|
+
${open ? html`<div id=${`nav-facet-${key}`} class="nav-facet-list" role="group" aria-label=${label}>${values.map((value) => html`<label key=${value} class="nav-chip">
|
|
422
|
+
<input type="checkbox" checked=${sel.includes(value)} onChange=${() => flip(key, value)} /><span>${text(value)}</span></label>`)}</div>` : null}
|
|
423
|
+
</div>`;
|
|
424
|
+
};
|
|
368
425
|
const row = (name, g, i, count) => {
|
|
369
426
|
const it = byName.get(name);
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
const twin = label !== name && (labelCount.get(label) || 0) > 1 ? name : "";
|
|
427
|
+
// #1722: both names, the preferred one first; one line when there is no other.
|
|
428
|
+
const { primary: label, secondary } = namesOf(it, names.primary);
|
|
373
429
|
const facet = facetOf(name);
|
|
374
430
|
const waiting = own(awaiting, name) ? awaiting[name] : null;
|
|
375
431
|
const on = name === active;
|
|
@@ -377,12 +433,12 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
377
433
|
const full = !starred && favs.length >= MAX_FAVORITES;
|
|
378
434
|
return html`<li key=${name} class="v-li"><a class=${`inst v-inst${on ? " active" : ""}`} href=${rowPath(name)} title=${instanceTooltip(it)}
|
|
379
435
|
aria-current=${on ? "page" : undefined} onClick=${onPick} ...${fav ? {} : dragProps({ type: "instance", name, group: g })}>
|
|
380
|
-
<${InstanceAvatar} it=${it} state=${dotState(it, own(exec, name) ? exec[name] : null, waiting)} />
|
|
381
|
-
<span class="inst-text"><span class="inst-name">${label}</span>
|
|
382
|
-
${
|
|
383
|
-
|
|
436
|
+
<${InstanceAvatar} it=${it} state=${dotState(it, own(exec, name) ? exec[name] : null, waiting)} cli=${true} />
|
|
437
|
+
<span class="inst-text"><span class="inst-name" title=${label}>${label}</span>
|
|
438
|
+
${secondary ? html`<span class="inst-alt" title=${secondary}>${secondary}</span>` : null}
|
|
439
|
+
${facet === "needs" ? html`<span class="inst-sub"><span class="badge-await" title=${waiting || t("app.approxNote")}>${t("app.needsYou")}</span></span>` : null}
|
|
440
|
+
<span class="sr-only">${tn("tooltipBackend", { value: backendLabel(it.backend) })}</span></span>
|
|
384
441
|
<span class="v-meta">${it.context_pct != null ? `${Math.round(it.context_pct)}%` : ""}</span>
|
|
385
|
-
<span class=${`cli-icon cli-${KNOWN_BACKENDS.has(it.backend) ? it.backend : "other"}`} title=${backendLabel(it.backend)} aria-label=${tn("tooltipBackend", { value: backendLabel(it.backend) })}></span>
|
|
386
442
|
</a>${fav && editing && canStar ? html`<button type="button" class="icon-btn inst-move" aria-label=${tn("favUp", { name: label })}
|
|
387
443
|
title=${shown.active ? tn("favFiltered") : tn("favUp", { name: label })} disabled=${shown.active || i === 0} onClick=${() => { if (!shown.active) moveFavorite(name, -1, known); }}><${Icon} name="up" size=${14} /></button><button type="button" class="icon-btn inst-move"
|
|
388
444
|
aria-label=${tn("favDown", { name: label })} title=${shown.active ? tn("favFiltered") : tn("favDown", { name: label })} disabled=${shown.active || i === count - 1}
|
|
@@ -415,7 +471,7 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
415
471
|
</div>
|
|
416
472
|
<div class="v-filter">
|
|
417
473
|
<label class="v-filter-box"><${Icon} name="search" size=${14} /><span class="sr-only">${tn("filterPh")}</span>
|
|
418
|
-
<input ref=${filterRef} id="filterInput" type="text" autocomplete="off" spellcheck
|
|
474
|
+
<input ref=${filterRef} id="filterInput" type="text" autocomplete="off" spellcheck=${false} placeholder=${tn("filterPh")} value=${f.q}
|
|
419
475
|
onInput=${(e) => setNavFilter({ q: e.target.value })}
|
|
420
476
|
onKeyDown=${(e) => { if (e.key === "Escape" && f.q) { e.preventDefault(); e.stopPropagation(); setNavFilter({ q: "" }); } }} />
|
|
421
477
|
${f.q ? html`<button type="button" class="icon-btn v-filter-clear" aria-label=${tn("filterClear")} title=${tn("filterClear")}
|
|
@@ -15,6 +15,9 @@ register("view", {
|
|
|
15
15
|
"filterStatus": "Status",
|
|
16
16
|
"filterCli": "CLI",
|
|
17
17
|
"filterFacetsReset": "Clear",
|
|
18
|
+
"facetSelected": "{n} selected",
|
|
19
|
+
"facetShow": "Show {group} filters",
|
|
20
|
+
"facetHide": "Hide {group} filters",
|
|
18
21
|
"displayName": "Display name",
|
|
19
22
|
"role": "Role",
|
|
20
23
|
"description": "Description",
|
|
@@ -112,6 +115,8 @@ register("view", {
|
|
|
112
115
|
"usage.hint.grok_no_login": "auth.json has no usable login. Run `grok login`.",
|
|
113
116
|
"usage.hint.login_kiro": "Log in with the Kiro CLI (`kiro-cli`).",
|
|
114
117
|
"usage.hint.kiro_signed_out": "Signed out — run `kiro-cli` to log in.",
|
|
118
|
+
"usage.hint.claude_profile_signed_out": "Not logged in — sign in with: {0}",
|
|
119
|
+
"usage.hint.claude_profile_signed_out_chat": "Not logged in — sign in with `{0}` (or run `{1}` on the host).",
|
|
115
120
|
"usage.hint.token_refreshing": "Token refreshing — try again in a moment.",
|
|
116
121
|
"usage.hint.subscription_no_credit": "Subscription — no credit usage to report.",
|
|
117
122
|
"usage.hint.no_quota_account": "No quota information available for this account type.",
|
|
@@ -186,6 +191,9 @@ register("view", {
|
|
|
186
191
|
"filterStatus": "狀態",
|
|
187
192
|
"filterCli": "CLI",
|
|
188
193
|
"filterFacetsReset": "清除",
|
|
194
|
+
"facetSelected": "已選 {n} 個",
|
|
195
|
+
"facetShow": "顯示{group}篩選",
|
|
196
|
+
"facetHide": "隱藏{group}篩選",
|
|
189
197
|
"displayName": "顯示名稱",
|
|
190
198
|
"role": "角色",
|
|
191
199
|
"description": "描述",
|
|
@@ -283,6 +291,8 @@ register("view", {
|
|
|
283
291
|
"usage.hint.grok_no_login": "auth.json 沒有可用的登入資料。請執行 `grok login`。",
|
|
284
292
|
"usage.hint.login_kiro": "請使用 Kiro CLI(`kiro-cli`)登入。",
|
|
285
293
|
"usage.hint.kiro_signed_out": "目前已登出;請執行 `kiro-cli` 登入。",
|
|
294
|
+
"usage.hint.claude_profile_signed_out": "尚未登入;請用這行指令登入:{0}",
|
|
295
|
+
"usage.hint.claude_profile_signed_out_chat": "尚未登入;請用 `{0}` 登入(或在主機上執行 `{1}`)。",
|
|
286
296
|
"usage.hint.token_refreshing": "Token 更新中 — 請稍候再試。",
|
|
287
297
|
"usage.hint.subscription_no_credit": "訂閱方案沒有可回報的額度用量。",
|
|
288
298
|
"usage.hint.no_quota_account": "此帳號類型沒有可用的額度資訊。",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1691: the shape of a prompt a CLI is waiting on, read from a pane — for prompts no backend table knows (a new CLI
|
|
3
|
+
* version's dialog, #1690's "Switch model?"). Pure: the daemon decides when a shape counts (no known dialog, no idle
|
|
4
|
+
* composer, unchanged for a minute) and never answers it.
|
|
5
|
+
*
|
|
6
|
+
* A shape is bottom-anchored: the prompt is the last thing on screen apart from a short footer, so an agent's reply
|
|
7
|
+
* that merely contains a numbered list (or "[y/n]") above the CLI's own prompt rows is not one.
|
|
8
|
+
*/
|
|
9
|
+
export interface PromptShape {
|
|
10
|
+
/** "numbered": a cursor glyph on a numbered option, with a neighbouring option; "yes-no": a [y/n]-style question. */
|
|
11
|
+
kind: "numbered" | "yes-no";
|
|
12
|
+
/** Numbered options seen (0 for yes-no). */
|
|
13
|
+
options: number;
|
|
14
|
+
/** The prompt's question/title line, sanitised and bounded (see questionLine); null when there is none. */
|
|
15
|
+
question: string | null;
|
|
16
|
+
/** The prompt's rows, from the question to the last option — its identity (the same block is the same prompt). */
|
|
17
|
+
block: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const QUESTION_MAX = 80;
|
|
20
|
+
/** One short line for a notice: escapes and control characters out, whitespace collapsed, at most QUESTION_MAX. */
|
|
21
|
+
export declare function questionLine(raw: string): string;
|
|
22
|
+
/** The prompt the pane is showing at its bottom, or null. */
|
|
23
|
+
export declare function unrecognisedPromptShape(pane: string): PromptShape | null;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1691: the shape of a prompt a CLI is waiting on, read from a pane — for prompts no backend table knows (a new CLI
|
|
3
|
+
* version's dialog, #1690's "Switch model?"). Pure: the daemon decides when a shape counts (no known dialog, no idle
|
|
4
|
+
* composer, unchanged for a minute) and never answers it.
|
|
5
|
+
*
|
|
6
|
+
* A shape is bottom-anchored: the prompt is the last thing on screen apart from a short footer, so an agent's reply
|
|
7
|
+
* that merely contains a numbered list (or "[y/n]") above the CLI's own prompt rows is not one.
|
|
8
|
+
*/
|
|
9
|
+
/** Rows looked at, counted from the bottom (non-empty rows only). */
|
|
10
|
+
const BOTTOM_ROWS = 20;
|
|
11
|
+
/** Rows a prompt may have below its last option or question (a hint footer: "Enter to confirm · Esc to cancel"). */
|
|
12
|
+
const FOOTER_ROWS = 3;
|
|
13
|
+
/** How far above the first option the question is looked for. */
|
|
14
|
+
const QUESTION_ROWS = 8;
|
|
15
|
+
export const QUESTION_MAX = 80;
|
|
16
|
+
const CURSOR_OPTION = /^[ \t]*[❯›>][ \t]*(\d{1,2})[.)][ \t]+\S/;
|
|
17
|
+
const OPTION = /^[ \t]*(?:[❯›>][ \t]*)?(\d{1,2})[.)][ \t]+\S/;
|
|
18
|
+
const YES_NO = /[[(][ \t]*[yY][ \t]*\/[ \t]*[nN][ \t]*[\])][ \t]*[:?]?[ \t]*$/;
|
|
19
|
+
/** A rule or border row (box drawing, block elements, dashes): the top of a dialog. */
|
|
20
|
+
const RULE = /^[ \t]*[─━═╌┄▔▁_\-=]{8,}[ \t]*$/;
|
|
21
|
+
const ANSI = /\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;
|
|
22
|
+
/** One short line for a notice: escapes and control characters out, whitespace collapsed, at most QUESTION_MAX. */
|
|
23
|
+
export function questionLine(raw) {
|
|
24
|
+
const text = raw.replace(ANSI, "").replace(/[\x00-\x1f\x7f]/g, " ").replace(/\s+/g, " ").trim();
|
|
25
|
+
return text.length > QUESTION_MAX ? `${text.slice(0, QUESTION_MAX - 1)}…` : text;
|
|
26
|
+
}
|
|
27
|
+
/** The prompt the pane is showing at its bottom, or null. */
|
|
28
|
+
export function unrecognisedPromptShape(pane) {
|
|
29
|
+
const rows = pane.replace(ANSI, "").replace(/\r/g, "").split("\n").map(r => r.trimEnd());
|
|
30
|
+
const filled = [];
|
|
31
|
+
for (let i = rows.length - 1; i >= 0 && filled.length < BOTTOM_ROWS; i--)
|
|
32
|
+
if (rows[i].trim() !== "")
|
|
33
|
+
filled.unshift(i);
|
|
34
|
+
if (filled.length === 0)
|
|
35
|
+
return null;
|
|
36
|
+
const after = (row) => filled.filter(i => i > row).length;
|
|
37
|
+
// A cursor on a numbered option, with its neighbours: the contiguous run of option rows around it.
|
|
38
|
+
for (let k = filled.length - 1; k >= 0; k--) {
|
|
39
|
+
const at = filled[k];
|
|
40
|
+
const cursor = CURSOR_OPTION.exec(rows[at]);
|
|
41
|
+
if (!cursor)
|
|
42
|
+
continue;
|
|
43
|
+
let first = at, last = at;
|
|
44
|
+
while (first - 1 >= 0 && OPTION.test(rows[first - 1]))
|
|
45
|
+
first--;
|
|
46
|
+
while (last + 1 < rows.length && OPTION.test(rows[last + 1]))
|
|
47
|
+
last++;
|
|
48
|
+
const numbers = rows.slice(first, last + 1).map(r => Number(OPTION.exec(r)[1]));
|
|
49
|
+
const consecutive = numbers.every((n, i) => i === 0 || n === numbers[i - 1] + 1);
|
|
50
|
+
if (numbers.length < 2 || !consecutive || after(last) > FOOTER_ROWS)
|
|
51
|
+
return null;
|
|
52
|
+
// The question: the top of the dialog — the first row under a rule/border, else the topmost filled row — within
|
|
53
|
+
// QUESTION_ROWS above the options.
|
|
54
|
+
let top = -1;
|
|
55
|
+
for (let i = first - 1; i >= 0 && first - i <= QUESTION_ROWS; i--) {
|
|
56
|
+
if (RULE.test(rows[i]))
|
|
57
|
+
break;
|
|
58
|
+
if (rows[i].trim() !== "")
|
|
59
|
+
top = i;
|
|
60
|
+
}
|
|
61
|
+
const question = top >= 0 ? questionLine(rows[top]) : null;
|
|
62
|
+
const block = rows.slice(top >= 0 ? top : first, last + 1).join("\n");
|
|
63
|
+
return { kind: "numbered", options: numbers.length, question: question || null, block };
|
|
64
|
+
}
|
|
65
|
+
// A [y/n] question at the bottom.
|
|
66
|
+
for (let k = filled.length - 1; k >= 0 && filled.length - 1 - k <= FOOTER_ROWS; k--) {
|
|
67
|
+
const at = filled[k];
|
|
68
|
+
if (!YES_NO.test(rows[at]))
|
|
69
|
+
continue;
|
|
70
|
+
return { kind: "yes-no", options: 0, question: questionLine(rows[at]) || null, block: rows[at].trim() };
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=unrecognised-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unrecognised-prompt.js","sourceRoot":"","sources":["../src/unrecognised-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/update-install.d.ts
CHANGED
|
@@ -143,6 +143,14 @@ export declare function activationSettled(outcome: {
|
|
|
143
143
|
*/
|
|
144
144
|
export type RetireSystemCopyResult = {
|
|
145
145
|
ok: true;
|
|
146
|
+
/** The old copy is still there: cleanup, not failure. Prose (no paths). */
|
|
147
|
+
warning?: string;
|
|
148
|
+
/**
|
|
149
|
+
* The manual removal, shell-quoted and byte-exact — never normalized or
|
|
150
|
+
* sliced, so unusual npm paths survive copy-paste (#1660 review). The
|
|
151
|
+
* caller prints it; nothing here logs it (single print, #1660 review).
|
|
152
|
+
*/
|
|
153
|
+
cleanupCommand?: string;
|
|
146
154
|
} | {
|
|
147
155
|
ok: false;
|
|
148
156
|
reason: string;
|
package/dist/update-install.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { dirname, join } from "node:path";
|
|
13
13
|
import { rmSync } from "node:fs";
|
|
14
|
+
import { shellQuote } from "./backend/types.js";
|
|
14
15
|
import { restorePackagePreimage, takePackagePreimage } from "./package-preimage.js";
|
|
15
16
|
/**
|
|
16
17
|
* The `bash -c` script that puts nvm's Node 22 on PATH for the rest of the same shell (nvm only changes its own shell),
|
|
@@ -289,9 +290,14 @@ export function retireSystemCopy(runner, npmPath) {
|
|
|
289
290
|
}
|
|
290
291
|
const result = runner.run("sudo", ["-n", npmPath, "uninstall", "-g", "@songsid/agend"], { inherit: true, timeoutMs: 10_000 });
|
|
291
292
|
if (result.status !== 0) {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
293
|
+
// #1660: retiring the old copy is cleanup. The new version is installed,
|
|
294
|
+
// verified and running at this point, so a refused removal must not fail
|
|
295
|
+
// the update — it becomes a warning plus a verbatim manual command.
|
|
296
|
+
// `-n` is non-interactive: sudo fails fast here, it never prompts. No
|
|
297
|
+
// further sudo calls on this path. The caller prints once (P3-1).
|
|
298
|
+
const cleanupCommand = `sudo ${shellQuote(npmPath)} uninstall -g @songsid/agend`;
|
|
299
|
+
const warning = `Old system install was not removed (sudo refused); remove it by hand.`;
|
|
300
|
+
return { ok: true, warning, cleanupCommand };
|
|
295
301
|
}
|
|
296
302
|
return { ok: true };
|
|
297
303
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-install.js","sourceRoot":"","sources":["../src/update-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAwD1G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,oFAAoF,CAAC;AACnH,yGAAyG;AACzG,MAAM,CAAC,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AAC5E,gGAAgG;AAChG,MAAM,CAAC,MAAM,iBAAiB,GAAG,wFAAwF,CAAC;AAC1H,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAG,sDAAsD,CAAC;AAErF;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAqB,EAAE,IAAuB,EAAE,IAAc,EAAE,UAAmF,EAAE;IACzK,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1G,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiD,EAAE,SAAiB;IACrG,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,iBAAiB,CAAC,cAAuB,EAAE,UAAkB;IAC3E,OAAO,cAAc,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,6DAA6D;IAC7D,8BAA8B;IAC9B,gFAAgF;IAChF,sEAAsE;IACtE,sFAAsF;IACtF,oMAAoM;CACrM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oDAAoD;IACpD,yIAAyI;IACzI,iHAAiH;IACjH,mDAAmD;IACnD,4LAA4L;IAC5L,iGAAiG;IACjG,uCAAuC;CACxC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAKZ,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAuB,EAAE,MAAqB,EAAE,MAAM,GAAG,KAAK;IACnG,MAAM,IAAI,GAAG,CAAC,OAAe,EAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAClG,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,SAAS,GAAG,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACpG,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAElF,gHAAgH;IAChH,qGAAqG;IACrG,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,IAAI,QAAQ,GAAkG,EAAE,CAAC;IACjH,IAAI,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC7I,OAAO,IAAI,CAAC,4BAA4B,MAAM,8CAA8C,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,aAAa,IAAI,OAAO,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,2CAA2C,OAAO,OAAO,MAAM,UAAU,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,4BAA4B,SAAS,4CAA4C,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IACjH,CAAC;IACD,iGAAiG;IACjG,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;QACrG,OAAO,IAAI,CAAC,2CAA2C,OAAO,OAAO,MAAM,8BAA8B,MAAM,IAAI,SAAS,GAAG,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,2DAA2D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtU,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,8BAA8B,SAAS,uBAAuB,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAClJ,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,8BAA8B,SAAS,wBAAwB,GAAG,CAAC,UAAU,CAAC,mCAAmC,OAAO,GAAG,CAAC,CAAC;IAC3I,CAAC;IACD,sHAAsH;IACtH,iGAAiG;IACjG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxH,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACtD,IAAI,MAAM,GAAc,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAc,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACnF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,qEAAqE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,0CAA0C,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChQ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,4DAA4D,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,+BAA+B,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QACzJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACxG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,kGAAkG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACrO,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1H,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,yFAAyF,MAAM,CAAC,MAAM,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/M,CAAC;IAED,mHAAmH;IACnH,2EAA2E;IAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1G,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAuB,EAAE,MAAqB;IAC7E,8GAA8G;IAC9G,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACrE,MAAM,CAAC,GAAG,CAAC,+CAA+C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;YACrH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,2EAA2E,EAAE,CAAC;IAC/H,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,wGAAwG;QACxG,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1G,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,wFAAwF,EAAE,CAAC;QAC9L,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5C,CAAC;IACD,kFAAkF;IAClF,sFAAsF;IACtF,oFAAoF;IACpF,sFAAsF;IACtF,2EAA2E;IAC3E,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,+DAA+D,EAAE,CAAC;QACnI,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,oFAAoF;IACpF,4EAA4E;IAC5E,MAAM,MAAM,GAAG,eAAe,IAAI,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5H,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACtF,CAAC;IAED,oHAAoH;IACpH,uHAAuH;IACvH,gHAAgH;IAChH,MAAM,GAAG,GAA2B,EAAE,2BAA2B,EAAE,GAAG,EAAE,CAAC;IACzE,IAAI,QAAwF,CAAC;IAC7F,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,2EAA2E,EAAE,CAAC;QAC7J,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,IAAI,CAAC,MAAM,wBAAwB,EAAE,CAAC;QACrH,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,wEAAwE,EAAE,CAAC;YAC1J,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,KAAK,CAAC,MAAM,wBAAwB,EAAE,CAAC;YACvH,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACxG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,2DAA2D;QAC3D,IAAI,QAAQ,EAAE,QAAQ;YAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS;YAC3B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,mEAAmE;gBACxF,CAAC,CAAC,gFAAgF,IAAI,CAAC,GAAG,EAAE;SAC/F,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,EAAE,QAAQ;YAAE,OAAO,QAAQ,CAAC;QACzC,iHAAiH;QACjH,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,SAAS,QAAQ,CAAC,MAAM,iDAAiD,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACjL,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClG,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ;YAC1B,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,yBAAyB,QAAQ,CAAC,OAAO,sDAAsD;gBACnI,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,6CAA6C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gDAAgD,QAAQ,CAAC,OAAO,EAAE;SACpL,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,mHAAmH;IACnH,sGAAsG;IACtG,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5G,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA4E,EAC5E,OAAkD;IAElD,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,OAAO,CAAC,GAAG,KAAK,oBAAoB,IAAI,OAAO,KAAK,WAAW,CAAC;AACzE,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB,EAAE,OAAgB;IACtE,MAAM,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACxE,+EAA+E;IAC/E,kFAAkF;IAClF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAA2B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4FAA4F,CAAC;QAC9J,MAAM,CAAC,GAAG,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9H,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,qCAAqC,MAAM,CAAC,MAAM,GAAG,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,wCAAwC,CAAC,CAAC;QACpE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"update-install.js","sourceRoot":"","sources":["../src/update-install.ts"],"names":[],"mappings":"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"}
|
package/dist/update-marker.d.ts
CHANGED
|
@@ -20,7 +20,44 @@ export interface UpdateProgressState {
|
|
|
20
20
|
version?: string;
|
|
21
21
|
error?: string;
|
|
22
22
|
failedStage?: UpdateProgressStage;
|
|
23
|
+
/** Non-fatal cleanup note (e.g. old system copy left behind, #1660). */
|
|
24
|
+
warning?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Verbatim copy-paste cleanup command. Unlike prose it is never whitespace-
|
|
27
|
+
* normalized or sliced: a path with double spaces or a long absolute npm
|
|
28
|
+
* path must survive byte-exact (#1660 review). Bounded by the platform
|
|
29
|
+
* (it names one absolute path), not by a prose length cap.
|
|
30
|
+
*/
|
|
31
|
+
cleanupCommand?: string;
|
|
32
|
+
/** #1660: the retire outcome is still owed (set before restart) or recorded. */
|
|
33
|
+
cleanup?: "pending" | "done";
|
|
23
34
|
}
|
|
35
|
+
/** Which update receipt a cleanup outcome belongs to (owner fence, #1660). */
|
|
36
|
+
export interface UpdateReceipt {
|
|
37
|
+
startedAt: number;
|
|
38
|
+
messageId: string;
|
|
39
|
+
operation: UpdateProgressOperation;
|
|
40
|
+
}
|
|
41
|
+
export declare function updateReceiptOf(marker: (UpdateMarker & {
|
|
42
|
+
progress: UpdateProgressState;
|
|
43
|
+
}) | null): UpdateReceipt | null;
|
|
44
|
+
/**
|
|
45
|
+
* Mark the current update as owing its retire outcome, before the restart
|
|
46
|
+
* that may let a new fleet consume this receipt. Returns the receipt the
|
|
47
|
+
* later write must still match.
|
|
48
|
+
*/
|
|
49
|
+
export declare function markCleanupPending(dataDir: string): UpdateReceipt | null;
|
|
50
|
+
/**
|
|
51
|
+
* Record a retire outcome against the receipt captured before the restart.
|
|
52
|
+
* Refuses when the marker is gone (the new fleet already consumed it) or
|
|
53
|
+
* belongs to another operation (e.g. a later full-restart adopted it) — the
|
|
54
|
+
* warning was already printed to the updater's own output, so refusing here
|
|
55
|
+
* loses nothing the operator saw.
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeCleanupOutcome(dataDir: string, receipt: UpdateReceipt | null, outcome: {
|
|
58
|
+
warning?: string;
|
|
59
|
+
cleanupCommand?: string;
|
|
60
|
+
} | null): boolean;
|
|
24
61
|
export interface UpdateMarker {
|
|
25
62
|
startedAt: number;
|
|
26
63
|
pid: number;
|
|
@@ -43,6 +80,9 @@ export declare function readUpdateProgress(dataDir: string): (UpdateMarker & {
|
|
|
43
80
|
export declare function setUpdateProgressStage(dataDir: string, stage: UpdateProgressStage, details?: {
|
|
44
81
|
version?: string;
|
|
45
82
|
error?: string;
|
|
83
|
+
warning?: string;
|
|
84
|
+
cleanupCommand?: string;
|
|
85
|
+
cleanup?: "pending" | "done";
|
|
46
86
|
}): boolean;
|
|
47
87
|
/** Called by `agend update` before it touches anything. */
|
|
48
88
|
export declare function markUpdateInProgress(dataDir: string, now?: number, pid?: number): void;
|
package/dist/update-marker.js
CHANGED
|
@@ -23,6 +23,52 @@ import { atomicWriteFileSync } from "./atomic-write.js";
|
|
|
23
23
|
*/
|
|
24
24
|
export const UPDATE_MARKER_MAX_AGE_MS = 15 * 60_000;
|
|
25
25
|
const FILE = "update-in-progress.json";
|
|
26
|
+
export function updateReceiptOf(marker) {
|
|
27
|
+
if (!marker?.progress?.target?.messageId)
|
|
28
|
+
return null;
|
|
29
|
+
return { startedAt: marker.startedAt, messageId: marker.progress.target.messageId, operation: updateProgressOperation(marker.progress) };
|
|
30
|
+
}
|
|
31
|
+
function sameReceipt(a, b) {
|
|
32
|
+
return !!a && !!b && a.startedAt === b.startedAt && a.messageId === b.messageId && a.operation === b.operation;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Mark the current update as owing its retire outcome, before the restart
|
|
36
|
+
* that may let a new fleet consume this receipt. Returns the receipt the
|
|
37
|
+
* later write must still match.
|
|
38
|
+
*/
|
|
39
|
+
export function markCleanupPending(dataDir) {
|
|
40
|
+
const marker = readUpdateProgress(dataDir);
|
|
41
|
+
const receipt = updateReceiptOf(marker);
|
|
42
|
+
if (!receipt || !marker)
|
|
43
|
+
return null;
|
|
44
|
+
marker.pid = process.pid;
|
|
45
|
+
marker.progress = { ...marker.progress, cleanup: "pending" };
|
|
46
|
+
return writeMarker(dataDir, marker) ? receipt : null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Record a retire outcome against the receipt captured before the restart.
|
|
50
|
+
* Refuses when the marker is gone (the new fleet already consumed it) or
|
|
51
|
+
* belongs to another operation (e.g. a later full-restart adopted it) — the
|
|
52
|
+
* warning was already printed to the updater's own output, so refusing here
|
|
53
|
+
* loses nothing the operator saw.
|
|
54
|
+
*/
|
|
55
|
+
export function writeCleanupOutcome(dataDir, receipt, outcome) {
|
|
56
|
+
if (!receipt)
|
|
57
|
+
return false;
|
|
58
|
+
const marker = readUpdateProgress(dataDir);
|
|
59
|
+
if (!marker || !sameReceipt(updateReceiptOf(marker), receipt))
|
|
60
|
+
return false;
|
|
61
|
+
marker.pid = process.pid;
|
|
62
|
+
marker.progress = {
|
|
63
|
+
...marker.progress,
|
|
64
|
+
// Prose follows the same rule as setUpdateProgressStage; the command is
|
|
65
|
+
// verbatim so quoted paths survive byte-exact.
|
|
66
|
+
...(outcome?.warning !== undefined ? { warning: outcome.warning.replace(/\s+/g, " ").trim().slice(0, 300) } : {}),
|
|
67
|
+
...(outcome?.cleanupCommand !== undefined ? { cleanupCommand: outcome.cleanupCommand } : {}),
|
|
68
|
+
cleanup: "done",
|
|
69
|
+
};
|
|
70
|
+
return writeMarker(dataDir, marker);
|
|
71
|
+
}
|
|
26
72
|
function markerPath(dataDir) {
|
|
27
73
|
return join(dataDir, FILE);
|
|
28
74
|
}
|
|
@@ -91,6 +137,9 @@ export function setUpdateProgressStage(dataDir, stage, details = {}) {
|
|
|
91
137
|
stage,
|
|
92
138
|
...(details.version !== undefined ? { version: details.version } : {}),
|
|
93
139
|
...(details.error !== undefined ? { error: details.error.replace(/\s+/g, " ").trim().slice(0, 300) } : {}),
|
|
140
|
+
...(details.warning !== undefined ? { warning: details.warning.replace(/\s+/g, " ").trim().slice(0, 300) } : {}),
|
|
141
|
+
...(details.cleanupCommand !== undefined ? { cleanupCommand: details.cleanupCommand } : {}),
|
|
142
|
+
...(details.cleanup !== undefined ? { cleanup: details.cleanup } : {}),
|
|
94
143
|
...(stage === "failed" ? { failedStage: previousStage } : {}),
|
|
95
144
|
};
|
|
96
145
|
return writeMarker(dataDir, marker);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-marker.js","sourceRoot":"","sources":["../src/update-marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAc,UAAU,EAAiB,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,MAAM,CAAC;AAEpD,MAAM,IAAI,GAAG,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"update-marker.js","sourceRoot":"","sources":["../src/update-marker.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Keep this list explicit: the parity test rejects a key missing from either
|
|
4
4
|
* locale surface before a mixed-language release can ship.
|
|
5
5
|
*/
|
|
6
|
-
export declare const USAGE_I18N_KEYS: readonly ["usage.title", "usage.title_plain", "usage.empty_active", "usage.not_logged_in", "usage.error_fallback", "usage.no_data", "usage.reset.in", "usage.reset.soon", "usage.duration.days_hours", "usage.duration.hours_minutes", "usage.duration.minutes", "usage.metric.session", "usage.metric.weekly", "usage.metric.monthly", "usage.metric.days_window", "usage.metric.named", "usage.metric.named_session", "usage.metric.named_weekly", "usage.metric.named_monthly", "usage.metric.named_days", "usage.metric.extra_usage", "usage.metric.rate_limit_resets", "usage.ticket_expiry", "usage.metric.credits", "usage.metric.weekly_limit", "usage.metric.pay_as_you_go", "usage.metric.bonus_credits", "usage.metric.overage_charges", "usage.metric.pay_per_use", "usage.unit.available", "usage.unit.credits", "usage.metric.usage_monthly", "usage.note.used_limit_unit", "usage.note.bonus_codes", "usage.value.disabled", "usage.value.cap", "usage.value.unlimited", "usage.note.binding", "usage.note.binding_severity", "usage.note.busiest_model", "usage.note.busiest_models", "usage.metric.agy_claude_others", "usage.metric.agy_claude_others_session", "usage.metric.agy_claude_others_weekly", "usage.hint.statusline_now", "usage.hint.statusline_minutes", "usage.hint.claude_api_key", "usage.hint.login_claude", "usage.hint.login_agy", "usage.hint.no_quota", "usage.hint.login_codex", "usage.hint.codex_no_oauth", "usage.hint.login_grok", "usage.hint.grok_no_login", "usage.hint.login_kiro", "usage.hint.kiro_signed_out", "usage.hint.token_refreshing", "usage.hint.subscription_no_credit", "usage.hint.no_quota_account", "usage.error.unreachable", "usage.error.token_rejected", "usage.error.rate_limited", "usage.error.rate_limited_transient", "usage.stale_rate_limited", "usage.error.http", "usage.error.billing_http", "usage.error.invalid_response", "usage.error.invalid_billing_response", "usage.error.invalid_kiro_response", "usage.error.claude_token_expired", "usage.error.codex_token_expired", "usage.error.grok_expired", "usage.error.grok_response_changed", "usage.error.agy_cap", "usage.error.agy_no_refresh", "usage.error.agy_token_expired", "usage.error.agy_login_expired", "usage.error.agy_refresh_empty", "usage.error.grok_auth_readonly", "usage.error.grok_no_refresh", "usage.error.grok_refresh_unreachable", "usage.error.grok_invalid_refresh", "usage.error.grok_persist"];
|
|
6
|
+
export declare const USAGE_I18N_KEYS: readonly ["usage.title", "usage.title_plain", "usage.empty_active", "usage.not_logged_in", "usage.error_fallback", "usage.no_data", "usage.reset.in", "usage.reset.soon", "usage.duration.days_hours", "usage.duration.hours_minutes", "usage.duration.minutes", "usage.metric.session", "usage.metric.weekly", "usage.metric.monthly", "usage.metric.days_window", "usage.metric.named", "usage.metric.named_session", "usage.metric.named_weekly", "usage.metric.named_monthly", "usage.metric.named_days", "usage.metric.extra_usage", "usage.metric.rate_limit_resets", "usage.ticket_expiry", "usage.metric.credits", "usage.metric.weekly_limit", "usage.metric.pay_as_you_go", "usage.metric.bonus_credits", "usage.metric.overage_charges", "usage.metric.pay_per_use", "usage.unit.available", "usage.unit.credits", "usage.metric.usage_monthly", "usage.note.used_limit_unit", "usage.note.bonus_codes", "usage.value.disabled", "usage.value.cap", "usage.value.unlimited", "usage.note.binding", "usage.note.binding_severity", "usage.note.busiest_model", "usage.note.busiest_models", "usage.metric.agy_claude_others", "usage.metric.agy_claude_others_session", "usage.metric.agy_claude_others_weekly", "usage.hint.statusline_now", "usage.hint.statusline_minutes", "usage.hint.claude_api_key", "usage.hint.login_claude", "usage.hint.login_agy", "usage.hint.no_quota", "usage.hint.login_codex", "usage.hint.codex_no_oauth", "usage.hint.login_grok", "usage.hint.grok_no_login", "usage.hint.login_kiro", "usage.hint.kiro_signed_out", "usage.hint.claude_profile_signed_out", "usage.hint.claude_profile_signed_out_chat", "usage.hint.token_refreshing", "usage.hint.subscription_no_credit", "usage.hint.no_quota_account", "usage.error.unreachable", "usage.error.token_rejected", "usage.error.rate_limited", "usage.error.rate_limited_transient", "usage.stale_rate_limited", "usage.error.http", "usage.error.billing_http", "usage.error.invalid_response", "usage.error.invalid_billing_response", "usage.error.invalid_kiro_response", "usage.error.claude_token_expired", "usage.error.codex_token_expired", "usage.error.grok_expired", "usage.error.grok_response_changed", "usage.error.agy_cap", "usage.error.agy_no_refresh", "usage.error.agy_token_expired", "usage.error.agy_login_expired", "usage.error.agy_refresh_empty", "usage.error.grok_auth_readonly", "usage.error.grok_no_refresh", "usage.error.grok_refresh_unreachable", "usage.error.grok_invalid_refresh", "usage.error.grok_persist"];
|
|
7
7
|
export type UsageI18nKey = typeof USAGE_I18N_KEYS[number];
|