@ai-ecoverse/slicc-spectrum 1.103.3 → 1.104.1
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/README.md +12 -5
- package/dist/slicc-dummy.js +30 -2
- package/dist/slicc-dummy.js.map +2 -2
- package/dist/slicc-ui.js +101 -70
- package/dist/slicc-ui.js.map +3 -3
- package/dist/types/app/approvals.d.ts +3 -1
- package/dist/types/dummy/approvals.d.ts +1 -1
- package/dist/types/dummy/network.d.ts +2 -1
- package/dist/types/dummy.d.ts +1 -1
- package/dist/types/model/types.d.ts +13 -1
- package/package.json +3 -3
package/dist/slicc-ui.js
CHANGED
|
@@ -21282,12 +21282,12 @@ function safeUrl(url, images = false, strict = false) {
|
|
|
21282
21282
|
if (strict) return /^https:\/\//i.test(url);
|
|
21283
21283
|
return /^https?:\/\//.test(url) || !images && /^mailto:/.test(url) || images && /^data:image\/(png|jpeg|gif|webp|svg\+xml)[;,]/.test(url);
|
|
21284
21284
|
}
|
|
21285
|
-
function link(url,
|
|
21286
|
-
return safeUrl(url, false, strict) ? b`<a href=${url} title=${
|
|
21285
|
+
function link(url, title2, label, strict) {
|
|
21286
|
+
return safeUrl(url, false, strict) ? b`<a href=${url} title=${title2 ?? A} target="_blank" rel="noopener noreferrer">${label}</a>` : b`${label}`;
|
|
21287
21287
|
}
|
|
21288
|
-
function image(url,
|
|
21289
|
-
if (strict) return link(url,
|
|
21290
|
-
return safeUrl(url, true) ? b`<img src=${url} alt=${alt} title=${
|
|
21288
|
+
function image(url, title2, alt, strict) {
|
|
21289
|
+
if (strict) return link(url, title2, alt || url, true);
|
|
21290
|
+
return safeUrl(url, true) ? b`<img src=${url} alt=${alt} title=${title2 ?? A} />` : alt;
|
|
21291
21291
|
}
|
|
21292
21292
|
function inline3(node2, context) {
|
|
21293
21293
|
return node2.children.map((child) => phrasing(child, context));
|
|
@@ -21868,11 +21868,11 @@ function errorCard(item2, handlers) {
|
|
|
21868
21868
|
const resolved = login?.state === "connected";
|
|
21869
21869
|
const signing = login?.state === "signing-in" && login.window;
|
|
21870
21870
|
const text5 = resolved ? signedIn : signing ? signInText(login.waited) : item2.text;
|
|
21871
|
-
const
|
|
21871
|
+
const title2 = resolved && login.provider ? `Signed in to ${login.provider} again.` : item2.title;
|
|
21872
21872
|
const failure2 = login?.state === "idle" ? login.error : void 0;
|
|
21873
21873
|
return b`<div class="error-card" role=${resolved ? A : "alert"} aria-atomic=${resolved ? A : "false"} data-id=${id || A} data-login=${login?.state ?? A}>
|
|
21874
21874
|
${resolved ? b`<swc-icon-info-circle class="icon" size="s" aria-hidden="true"></swc-icon-info-circle>` : b`<swc-icon-alert-diamond class="icon" size="s" aria-hidden="true"></swc-icon-alert-diamond>`}
|
|
21875
|
-
${resolved ? A : b`<span class="sr">Error: </span>`}<span class="lead">${
|
|
21875
|
+
${resolved ? A : b`<span class="sr">Error: </span>`}<span class="lead">${title2}</span>
|
|
21876
21876
|
${text5 ? b`<span class="detail" role=${login ? "status" : A}>${text5}</span>` : A}
|
|
21877
21877
|
${fix ? b`<div class="fix" aria-live="off">${fixButton(fix, item2, handlers, login)}</div>` : A}
|
|
21878
21878
|
${signing ? signInDetails(item2.account, login.signIn, login.copied, (code3) => handlers.copySignIn?.(item2.account, id, code3), "s") : A}
|
|
@@ -22187,8 +22187,8 @@ function attachment(item2) {
|
|
|
22187
22187
|
<span slot="subtitle" class="size">${detail}</span>
|
|
22188
22188
|
</swc-user-message>`;
|
|
22189
22189
|
}
|
|
22190
|
-
function when(at,
|
|
22191
|
-
return b`<time class="when" datetime=${new Date(at).toISOString()} title=${
|
|
22190
|
+
function when(at, title2 = "") {
|
|
22191
|
+
return b`<time class="when" datetime=${new Date(at).toISOString()} title=${title2 || A}>${time(at)}</time>`;
|
|
22192
22192
|
}
|
|
22193
22193
|
function unseen(at) {
|
|
22194
22194
|
return b`<time class="sr" datetime=${new Date(at).toISOString()}>${time(at)}</time>`;
|
|
@@ -22324,12 +22324,12 @@ var ended = /* @__PURE__ */ new Set([
|
|
|
22324
22324
|
function system(message, handlers) {
|
|
22325
22325
|
if (message.kind === "compaction") {
|
|
22326
22326
|
const failed2 = message.state === "fallback" || message.state === "discarded";
|
|
22327
|
-
const
|
|
22327
|
+
const title2 = message.title ?? compactionTitles[message.state ?? "summarized"];
|
|
22328
22328
|
return event(
|
|
22329
|
-
|
|
22329
|
+
title2,
|
|
22330
22330
|
b`<div class="marker" role="status" data-id=${message.id} data-state=${message.state ?? "summarized"}>
|
|
22331
22331
|
<span class="line"></span>
|
|
22332
|
-
<span class="marker-text">${failed2 ? b`<swc-icon-alert-diamond class="fault" size="xs" aria-hidden="true"></swc-icon-alert-diamond>` : A}${
|
|
22332
|
+
<span class="marker-text">${failed2 ? b`<swc-icon-alert-diamond class="fault" size="xs" aria-hidden="true"></swc-icon-alert-diamond>` : A}${title2}${message.state === "summarizing" ? b`<swc-progress-circle size="s" label="Summarizing"></swc-progress-circle>` : A}${message.text ? b`<span class="sr">. ${message.text}</span>` : A}</span>
|
|
22333
22333
|
<span class="line"></span>
|
|
22334
22334
|
</div>`
|
|
22335
22335
|
);
|
|
@@ -24858,7 +24858,7 @@ ${this.value}` : text5;
|
|
|
24858
24858
|
<swc-button size="s" variant="accent" data-action="share-secret" ?pending=${this.sharing} @click=${(event2) => event2.currentTarget.closest("form")?.requestSubmit()}>Share</swc-button>
|
|
24859
24859
|
</form>`;
|
|
24860
24860
|
}
|
|
24861
|
-
const
|
|
24861
|
+
const title2 = {
|
|
24862
24862
|
command: "Commands",
|
|
24863
24863
|
argument: "Options",
|
|
24864
24864
|
mention: "Mention",
|
|
@@ -24882,7 +24882,7 @@ ${this.value}` : text5;
|
|
|
24882
24882
|
if (last && last.group === item2.group) last.entries.push([item2, index2]);
|
|
24883
24883
|
else sections2.push({ group: item2.group, entries: [[item2, index2]] });
|
|
24884
24884
|
});
|
|
24885
|
-
return b`<div class="popup" role="listbox" aria-label=${
|
|
24885
|
+
return b`<div class="popup" role="listbox" aria-label=${title2} data-kind=${popup2.kind}>
|
|
24886
24886
|
${popup2.items.length ? sections2.map(
|
|
24887
24887
|
({ group, entries }) => group ? b`<div class="section" role="group" aria-label=${group} data-group=${group}>
|
|
24888
24888
|
<div class="heading" aria-hidden="true">${group}</div>
|
|
@@ -27630,8 +27630,8 @@ function agentTitle(model, agent) {
|
|
|
27630
27630
|
function twinned(name, id, rows2) {
|
|
27631
27631
|
return rows2.some((row) => row.id !== id && row.name === name);
|
|
27632
27632
|
}
|
|
27633
|
-
function withTitle(name,
|
|
27634
|
-
return `${name} (${short(
|
|
27633
|
+
function withTitle(name, title2) {
|
|
27634
|
+
return `${name} (${short(title2) || untitled.toLowerCase()})`;
|
|
27635
27635
|
}
|
|
27636
27636
|
function coneLabel(model, agent) {
|
|
27637
27637
|
const cones = model.agent.list().filter((other) => other.kind === "cone");
|
|
@@ -27643,9 +27643,9 @@ function watchTitles(model, update) {
|
|
|
27643
27643
|
const check3 = (id) => {
|
|
27644
27644
|
const agent = model.agent.list().find((candidate) => candidate.id === id);
|
|
27645
27645
|
if (!agent) return;
|
|
27646
|
-
const
|
|
27647
|
-
if (seen.get(id) ===
|
|
27648
|
-
seen.set(id,
|
|
27646
|
+
const title2 = agentTitle(model, agent);
|
|
27647
|
+
if (seen.get(id) === title2) return;
|
|
27648
|
+
seen.set(id, title2);
|
|
27649
27649
|
update();
|
|
27650
27650
|
};
|
|
27651
27651
|
const stops = [
|
|
@@ -28946,7 +28946,7 @@ var SliccAgents = class extends ModelElement {
|
|
|
28946
28946
|
const current = agent.id === anchor;
|
|
28947
28947
|
const error = this.errors[agent.id];
|
|
28948
28948
|
const model = this.model;
|
|
28949
|
-
const
|
|
28949
|
+
const title2 = agentTitle(model, agent);
|
|
28950
28950
|
const scoops = this.#scoops(agent);
|
|
28951
28951
|
const open = this.#expanded.has(agent.id);
|
|
28952
28952
|
const unread = selected ? 0 : agent.unread;
|
|
@@ -28974,7 +28974,7 @@ var SliccAgents = class extends ModelElement {
|
|
|
28974
28974
|
<span class="name">${agent.name}</span>
|
|
28975
28975
|
</div>
|
|
28976
28976
|
${fillShown(agent.contextFill) ? b`<span class="fill" data-variant=${meterVariant2(agent.contextFill)}>${percent(agent.contextFill)}</span>` : A}
|
|
28977
|
-
<span class="title"><span class="state">${statusLabel[agent.status]}</span> · ${
|
|
28977
|
+
<span class="title"><span class="state">${statusLabel[agent.status]}</span> · ${title2 || untitled}</span>
|
|
28978
28978
|
${this.#ribbon(scoops)}
|
|
28979
28979
|
${this.#dropButton(agent, selected)}
|
|
28980
28980
|
${this.#deleteButton(agent, selected)}
|
|
@@ -29514,13 +29514,13 @@ var SliccGuestInvite = class extends i2 {
|
|
|
29514
29514
|
this.remove();
|
|
29515
29515
|
if (this.trigger?.isConnected) this.trigger.focus();
|
|
29516
29516
|
}
|
|
29517
|
-
#gate(field,
|
|
29517
|
+
#gate(field, title2, value) {
|
|
29518
29518
|
const options2 = this.#options(field, this.#current);
|
|
29519
29519
|
const chosen = options2.find((option2) => option2.value === value);
|
|
29520
29520
|
const id = `guest-${field}`;
|
|
29521
29521
|
return b`<div class="field">
|
|
29522
|
-
<sp-field-label for=${id} size="m">${
|
|
29523
|
-
<sp-picker id=${id} size="m" label=${
|
|
29522
|
+
<sp-field-label for=${id} size="m">${title2}</sp-field-label>
|
|
29523
|
+
<sp-picker id=${id} size="m" label=${title2} data-action=${`guest-${field}`} .value=${l(value)} ?disabled=${this.pending} @change=${(event2) => {
|
|
29524
29524
|
this[field] = this.#pick(event2);
|
|
29525
29525
|
}}>
|
|
29526
29526
|
${options2.map((option2) => b`<sp-menu-item value=${option2.value}>${option2.label}<span slot="description">${option2.description}</span></sp-menu-item>`)}
|
|
@@ -30498,7 +30498,7 @@ function terminalsText(count2) {
|
|
|
30498
30498
|
var again = "Unlinking it, or a new certificate on it, turns this off again.";
|
|
30499
30499
|
function accessConfirm(device, key2) {
|
|
30500
30500
|
const name = device.name;
|
|
30501
|
-
const [
|
|
30501
|
+
const [title2, body4] = {
|
|
30502
30502
|
follow: [
|
|
30503
30503
|
`Let ${name} follow this SLICC?`,
|
|
30504
30504
|
"It sees the agent\u2019s conversations live. To let it send prompts or open terminals, turn on Control or Terminal for it afterwards."
|
|
@@ -30516,7 +30516,7 @@ function accessConfirm(device, key2) {
|
|
|
30516
30516
|
"Terminal lets it open shells on this SLICC as root: it can run any command and read or change every file."
|
|
30517
30517
|
]
|
|
30518
30518
|
}[key2];
|
|
30519
|
-
return { title, body: `${body4} ${again}`, action: "Allow", variant: "confirmation" };
|
|
30519
|
+
return { title: title2, body: `${body4} ${again}`, action: "Allow", variant: "confirmation" };
|
|
30520
30520
|
}
|
|
30521
30521
|
function say(devices, one3, many) {
|
|
30522
30522
|
if (!devices.length) return [];
|
|
@@ -31605,7 +31605,7 @@ var SliccNetwork = class extends ModelElement {
|
|
|
31605
31605
|
const [variant, label] = linksLight(links);
|
|
31606
31606
|
const pairing = links.pairing;
|
|
31607
31607
|
const joinable = hasTray(links) || !!pairing;
|
|
31608
|
-
const active = !!pairing && (pairing.state !== "idle" || links.devices.some((device) => device.note));
|
|
31608
|
+
const active = !!pairing && (pairing.state !== "idle" || links.devices.some((device) => device.note && device.state === "offline"));
|
|
31609
31609
|
return b`<section aria-labelledby="links" data-links=${linksSummary(links)}>
|
|
31610
31610
|
<div class="head">
|
|
31611
31611
|
<h2 id="links">Linked devices</h2>
|
|
@@ -32458,7 +32458,7 @@ function state(info) {
|
|
|
32458
32458
|
function table2(rows2) {
|
|
32459
32459
|
const lines = [["ID", "TITLE", "STATE"], ...rows2.map((row) => [row.id, row.title, state(row)])];
|
|
32460
32460
|
const widths = [0, 1].map((column) => Math.max(...lines.map((line) => line[column].length)));
|
|
32461
|
-
return lines.map(([id,
|
|
32461
|
+
return lines.map(([id, title2, shown4]) => `${id.padEnd(widths[0])} ${title2.padEnd(widths[1])} ${shown4}`).join("\n");
|
|
32462
32462
|
}
|
|
32463
32463
|
var done = (result, note = "") => result.code === 0 ? { stdout: `${result.message}${note}
|
|
32464
32464
|
`, stderr: "", code: 0 } : { stdout: "", stderr: `panel: ${result.message}
|
|
@@ -38057,9 +38057,22 @@ function guestAlwaysHint(approval) {
|
|
|
38057
38057
|
function guestAsking(approval) {
|
|
38058
38058
|
return approval.kind === "guest-message" ? `${approval.requester.name} wants to send this to ${approval.agentName ?? "this cone"}:` : `${approval.agentName ?? "This cone"} wants to run ${approval.tool} for ${approval.requester.name}:`;
|
|
38059
38059
|
}
|
|
38060
|
+
function trayTitle(approval) {
|
|
38061
|
+
if (approval.op === "url") return "Share this seven\u2019s join URL?";
|
|
38062
|
+
if (approval.op === "rotate") return "Make a new join URL?";
|
|
38063
|
+
return approval.device ? `Unlink ${approval.device.name}?` : "Unlink a device?";
|
|
38064
|
+
}
|
|
38065
|
+
function trayAsking(approval) {
|
|
38066
|
+
const { name } = approval.requester;
|
|
38067
|
+
if (approval.op === "url")
|
|
38068
|
+
return `${name} wants this seven\u2019s join URL. Anyone with it can ask to link to this seven.`;
|
|
38069
|
+
if (approval.op === "rotate")
|
|
38070
|
+
return `${name} wants a new join URL. Linked devices move to it, and the old one stops working.`;
|
|
38071
|
+
return `${name} wants to unlink ${approval.device?.name ?? "a device"} from this seven.`;
|
|
38072
|
+
}
|
|
38060
38073
|
function approved(approval) {
|
|
38061
38074
|
if (approval.kind === "sudo") return sudo(approval);
|
|
38062
|
-
if (approval.kind === "guest-message") return "";
|
|
38075
|
+
if (approval.kind === "guest-message" || approval.kind === "tray") return "";
|
|
38063
38076
|
if (approval.summary.trim()) return approval.summary;
|
|
38064
38077
|
return approval.args?.trim() ? `${approval.tool}
|
|
38065
38078
|
${approval.args}` : "";
|
|
@@ -38079,7 +38092,7 @@ function rulesOf(approval) {
|
|
|
38079
38092
|
return approval.kind === "sudo" ? secretRules(approval.command, approval.cwd) : clear;
|
|
38080
38093
|
}
|
|
38081
38094
|
function waiting2(model, now) {
|
|
38082
|
-
return [...model?.approvals?.list() ?? []].filter((approval) => approval.expiresAt > now).sort((a23, b13) => a23.createdAt - b13.createdAt);
|
|
38095
|
+
return [...model?.approvals?.list() ?? []].filter((approval) => approval.expiresAt > now && Object.hasOwn(titles, approval.kind)).sort((a23, b13) => a23.createdAt - b13.createdAt);
|
|
38083
38096
|
}
|
|
38084
38097
|
var titles = {
|
|
38085
38098
|
sudo: {
|
|
@@ -38096,8 +38109,16 @@ var titles = {
|
|
|
38096
38109
|
ask: "Allow a guest\u2019s tool call?",
|
|
38097
38110
|
elsewhere: "Answered elsewhere",
|
|
38098
38111
|
expired: "Guest tool call timed out"
|
|
38112
|
+
},
|
|
38113
|
+
tray: {
|
|
38114
|
+
ask: "",
|
|
38115
|
+
elsewhere: "Answered in another tab",
|
|
38116
|
+
expired: "Tray request timed out"
|
|
38099
38117
|
}
|
|
38100
38118
|
};
|
|
38119
|
+
function title(approval) {
|
|
38120
|
+
return approval.kind === "tray" ? trayTitle(approval) : titles[approval.kind].ask;
|
|
38121
|
+
}
|
|
38101
38122
|
function gone(reason) {
|
|
38102
38123
|
return reason === "expired" ? "expired" : "elsewhere";
|
|
38103
38124
|
}
|
|
@@ -38289,7 +38310,7 @@ var SliccApprovals = class extends ModelElement {
|
|
|
38289
38310
|
if (!port?.decide || this.busy || decision2 !== "deny" && (!this.#armed || !this.#whole(approval)))
|
|
38290
38311
|
return;
|
|
38291
38312
|
const verdict = rulesOf(approval);
|
|
38292
|
-
const always = approval.kind === "sudo" || approval.always;
|
|
38313
|
+
const always = approval.kind === "sudo" || approval.kind !== "tray" && approval.always;
|
|
38293
38314
|
if (decision2 === "always" && (!always || verdict.certain || verdict.maybe)) return;
|
|
38294
38315
|
this.busy = decision2;
|
|
38295
38316
|
this.failure = null;
|
|
@@ -38405,6 +38426,7 @@ var SliccApprovals = class extends ModelElement {
|
|
|
38405
38426
|
return b`<pre class="command" data-command=${approval.kind === "sudo" ? "" : A} data-summary=${approval.kind === "sudo" ? A : ""}><span class="lines" data-clamp=${full ? A : id}>${text5}${pending ? b`<span class="end" data-end=${id}></span>` : A}</span></pre>${toggle}`;
|
|
38406
38427
|
}
|
|
38407
38428
|
#request(approval, pending = false) {
|
|
38429
|
+
if (approval.kind === "tray") return b`<p id="asking">${trayAsking(approval)}</p>`;
|
|
38408
38430
|
if (approval.kind === "sudo")
|
|
38409
38431
|
return b`<p id="asking">${asking(approval)}:</p>
|
|
38410
38432
|
${this.#command(approval, pending)}`;
|
|
@@ -38417,7 +38439,7 @@ var SliccApprovals = class extends ModelElement {
|
|
|
38417
38439
|
${files.length ? b`<ul class="files" data-attachments>${files.map((file) => b`<li>${file.name} · ${file.mimeType} · ${size3(file.size)}</li>`)}</ul>` : A}`;
|
|
38418
38440
|
}
|
|
38419
38441
|
#verdict(approval) {
|
|
38420
|
-
const verdict = approval.kind === "sudo" ? void 0 : approval.verdict;
|
|
38442
|
+
const verdict = approval.kind === "sudo" || approval.kind === "tray" ? void 0 : approval.verdict;
|
|
38421
38443
|
return verdict ? b`<p class="verdict" data-verdict=${verdict.decision}>${verdict.decision === "unsure" ? "The automatic check wasn\u2019t sure" : `The automatic check would ${verdict.decision} this`}: ${verdict.reason}</p>` : A;
|
|
38422
38444
|
}
|
|
38423
38445
|
#actions(approval, rejected, always) {
|
|
@@ -38449,14 +38471,14 @@ var SliccApprovals = class extends ModelElement {
|
|
|
38449
38471
|
const failure2 = this.failure?.id === approval.id ? this.failure.message : "";
|
|
38450
38472
|
const verdict = rulesOf(approval);
|
|
38451
38473
|
const rules = verdict.certain ?? verdict.maybe;
|
|
38452
|
-
const always = approval.always && !rules;
|
|
38474
|
+
const always = approval.kind !== "tray" && approval.always && !rules;
|
|
38453
38475
|
const gate = this.#gate(approval);
|
|
38454
38476
|
const hint2 = always && this.#whole(approval) ? hintOf(approval) : "";
|
|
38455
38477
|
return this.#dialog(
|
|
38456
38478
|
approval,
|
|
38457
38479
|
approval.id,
|
|
38458
38480
|
b`<sp-alert-dialog variant="warning" data-approval-kind=${approval.kind}>
|
|
38459
|
-
<h2 id="title" slot="heading">${
|
|
38481
|
+
<h2 id="title" slot="heading">${title(approval)}</h2>
|
|
38460
38482
|
${this.#request(approval, true)}
|
|
38461
38483
|
${this.#verdict(approval)}
|
|
38462
38484
|
${approval.kind === "sudo" && approval.cwd ? b`<p class="cwd">In ${approval.cwd}</p>` : A}
|
|
@@ -39963,8 +39985,8 @@ var SliccChanges = class extends ModelElement {
|
|
|
39963
39985
|
return;
|
|
39964
39986
|
}
|
|
39965
39987
|
const count2 = changes2.length;
|
|
39966
|
-
const
|
|
39967
|
-
if (await confirm({ title, body: lost(changes2), action: "Revert all" }) && !watchOnly(this.model))
|
|
39988
|
+
const title2 = `Revert ${count2} ${count2 === 1 ? "change" : "changes"}?`;
|
|
39989
|
+
if (await confirm({ title: title2, body: lost(changes2), action: "Revert all" }) && !watchOnly(this.model))
|
|
39968
39990
|
this.error = await revertPaths(
|
|
39969
39991
|
port,
|
|
39970
39992
|
changes2.map((change) => change.path)
|
|
@@ -40725,8 +40747,8 @@ var SliccMemory = class extends ModelElement {
|
|
|
40725
40747
|
}
|
|
40726
40748
|
async #forget(memory, trigger2) {
|
|
40727
40749
|
const body4 = "Agents won\u2019t remember this anymore. You can\u2019t undo this.";
|
|
40728
|
-
const
|
|
40729
|
-
if (await confirm({ title, body: body4, action: "Forget", variant: "destructive", trigger: trigger2 }))
|
|
40750
|
+
const title2 = `Forget \u201C${memory.title}\u201D?`;
|
|
40751
|
+
if (await confirm({ title: title2, body: body4, action: "Forget", variant: "destructive", trigger: trigger2 }))
|
|
40730
40752
|
this.model?.memory.remove(memory.id);
|
|
40731
40753
|
}
|
|
40732
40754
|
#scopeOf(id) {
|
|
@@ -41005,6 +41027,15 @@ var SliccNotices = class extends ModelElement {
|
|
|
41005
41027
|
</div>`;
|
|
41006
41028
|
}
|
|
41007
41029
|
#approval(approval) {
|
|
41030
|
+
if (approval.kind === "tray")
|
|
41031
|
+
return b`<div class="notice" role="status" data-approval-notice=${approval.id} data-approval-kind="tray" data-tone="warning">
|
|
41032
|
+
<swc-icon-alert-triangle></swc-icon-alert-triangle>
|
|
41033
|
+
<div class="text">
|
|
41034
|
+
<span class="title">Waiting for tray approval</span>
|
|
41035
|
+
<p>${trayAsking(approval)}</p>
|
|
41036
|
+
<p>It waits for the owner's approval. Denied automatically at ${deadline(approval.expiresAt)}.</p>
|
|
41037
|
+
</div>
|
|
41038
|
+
</div>`;
|
|
41008
41039
|
if (approval.kind !== "sudo")
|
|
41009
41040
|
return b`<div class="notice" role="status" data-approval-notice=${approval.id} data-approval-kind=${approval.kind} data-tone="warning">
|
|
41010
41041
|
<swc-icon-alert-triangle></swc-icon-alert-triangle>
|
|
@@ -43343,8 +43374,8 @@ var SliccSettings = class extends ThemedElement {
|
|
|
43343
43374
|
const signIn = vaulted && account.auth !== "api-key" && account.group === "mcp";
|
|
43344
43375
|
const stored2 = key2 || signIn ? vault : void 0;
|
|
43345
43376
|
const body4 = `Agents can\u2019t use ${account.provider} until you connect it again.${key2 ? " You can restore its key from Removed in Secrets for 30 days." : ""}`;
|
|
43346
|
-
const
|
|
43347
|
-
if (!await confirm({ title, body: body4, action: "Disconnect", variant: "confirmation" })) return;
|
|
43377
|
+
const title2 = `Disconnect ${account.provider}?`;
|
|
43378
|
+
if (!await confirm({ title: title2, body: body4, action: "Disconnect", variant: "confirmation" })) return;
|
|
43348
43379
|
clearValues(this.renderRoot);
|
|
43349
43380
|
if (this.model !== model) return;
|
|
43350
43381
|
const server = serverOf(account);
|
|
@@ -43493,8 +43524,8 @@ var SliccSettings = class extends ThemedElement {
|
|
|
43493
43524
|
async #remove(account) {
|
|
43494
43525
|
const model = this.model;
|
|
43495
43526
|
const body4 = removeBodies[account.auth ?? ""] ?? "Its key is deleted from the vault. Models from it stop working.";
|
|
43496
|
-
const
|
|
43497
|
-
if (!await confirm({ title, body: body4, action: "Remove" })) return;
|
|
43527
|
+
const title2 = `Remove ${account.provider}?`;
|
|
43528
|
+
if (!await confirm({ title: title2, body: body4, action: "Remove" })) return;
|
|
43498
43529
|
if (this.model !== model) return;
|
|
43499
43530
|
clearValues(this.renderRoot);
|
|
43500
43531
|
if (this.entering === account.id) this.entering = null;
|
|
@@ -55686,14 +55717,14 @@ function getIgnoreCaseMatchChars(char) {
|
|
|
55686
55717
|
const set = /* @__PURE__ */ new Set();
|
|
55687
55718
|
const lower2 = char.toLowerCase();
|
|
55688
55719
|
const upper2 = lower2.toUpperCase();
|
|
55689
|
-
const
|
|
55720
|
+
const title2 = LowerToTitleCaseMap.get(lower2);
|
|
55690
55721
|
const altLower = LowerToAlternativeLowerCaseMap.get(lower2);
|
|
55691
55722
|
const altUpper = LowerToAlternativeUpperCaseMap.get(lower2);
|
|
55692
55723
|
if ([...upper2].length === 1) {
|
|
55693
55724
|
set.add(upper2);
|
|
55694
55725
|
}
|
|
55695
55726
|
altUpper && set.add(altUpper);
|
|
55696
|
-
|
|
55727
|
+
title2 && set.add(title2);
|
|
55697
55728
|
set.add(lower2);
|
|
55698
55729
|
altLower && set.add(altLower);
|
|
55699
55730
|
return [...set];
|
|
@@ -72449,14 +72480,14 @@ function committedWhere(position2, target) {
|
|
|
72449
72480
|
return position2 === "center" ? `docked into ${target}` : `split ${position2} of ${target}`;
|
|
72450
72481
|
}
|
|
72451
72482
|
var DEFAULT_MESSAGES = {
|
|
72452
|
-
panelOpened: (
|
|
72453
|
-
panelClosed: (
|
|
72454
|
-
groupMaximized: (
|
|
72455
|
-
groupRestored: (
|
|
72456
|
-
groupFloated: (
|
|
72457
|
-
groupDocked: (
|
|
72458
|
-
groupPoppedOut: (
|
|
72459
|
-
closeTab: (
|
|
72483
|
+
panelOpened: (title2) => `${title2} opened`,
|
|
72484
|
+
panelClosed: (title2) => `${title2} closed`,
|
|
72485
|
+
groupMaximized: (title2) => `${title2} maximized`,
|
|
72486
|
+
groupRestored: (title2) => `${title2} restored`,
|
|
72487
|
+
groupFloated: (title2) => `${title2} floated`,
|
|
72488
|
+
groupDocked: (title2) => `${title2} docked`,
|
|
72489
|
+
groupPoppedOut: (title2) => `${title2} opened in a new window`,
|
|
72490
|
+
closeTab: (title2) => `Close ${title2}`,
|
|
72460
72491
|
closeTabPlain: () => `Close`,
|
|
72461
72492
|
movePickTarget: (source, target, current, total) => `Moving ${source}. Target ${target}, ${current} of ${total}. Enter to choose where, Escape to cancel.`,
|
|
72462
72493
|
movePickEdge: (position2, target) => `${edgeWhere(position2, target)}. Arrows to change, Enter to confirm, Escape to go back.`,
|
|
@@ -79739,8 +79770,8 @@ var DockviewGroupPanelModel = class extends CompositeDisposable {
|
|
|
79739
79770
|
/** Label the group region with its active panel's title (the WAI-ARIA region name). */
|
|
79740
79771
|
updateAccessibleLabel() {
|
|
79741
79772
|
var _this$_activePanel5;
|
|
79742
|
-
const
|
|
79743
|
-
if (
|
|
79773
|
+
const title2 = (_this$_activePanel5 = this._activePanel) === null || _this$_activePanel5 === void 0 ? void 0 : _this$_activePanel5.title;
|
|
79774
|
+
if (title2) this.container.setAttribute("aria-label", title2);
|
|
79744
79775
|
else this.container.removeAttribute("aria-label");
|
|
79745
79776
|
}
|
|
79746
79777
|
updateMru(panel) {
|
|
@@ -80341,8 +80372,8 @@ var DockviewPanelApiImpl = class extends GridviewPanelApiImpl {
|
|
|
80341
80372
|
});
|
|
80342
80373
|
});
|
|
80343
80374
|
}
|
|
80344
|
-
setTitle(
|
|
80345
|
-
this.panel.setTitle(
|
|
80375
|
+
setTitle(title2) {
|
|
80376
|
+
this.panel.setTitle(title2);
|
|
80346
80377
|
}
|
|
80347
80378
|
setPinned(pinned) {
|
|
80348
80379
|
this.accessor.setPanelPinned(this.panel, pinned);
|
|
@@ -80479,11 +80510,11 @@ var DockviewPanel = class extends CompositeDisposable {
|
|
|
80479
80510
|
pinned: this._pinned ? true : void 0
|
|
80480
80511
|
};
|
|
80481
80512
|
}
|
|
80482
|
-
setTitle(
|
|
80483
|
-
if (
|
|
80484
|
-
this._title =
|
|
80485
|
-
this.view.setTitle(
|
|
80486
|
-
this.api._onDidTitleChange.fire({ title });
|
|
80513
|
+
setTitle(title2) {
|
|
80514
|
+
if (title2 !== this.title) {
|
|
80515
|
+
this._title = title2;
|
|
80516
|
+
this.view.setTitle(title2);
|
|
80517
|
+
this.api._onDidTitleChange.fire({ title: title2 });
|
|
80487
80518
|
}
|
|
80488
80519
|
}
|
|
80489
80520
|
/**
|
|
@@ -80624,8 +80655,8 @@ var DockviewPanelModel = class {
|
|
|
80624
80655
|
this.content.init(params);
|
|
80625
80656
|
this.tab.init(_objectSpread2(_objectSpread2({}, params), {}, { tabLocation: "header" }));
|
|
80626
80657
|
}
|
|
80627
|
-
setTitle(
|
|
80628
|
-
if (this._params) this._params.title =
|
|
80658
|
+
setTitle(title2) {
|
|
80659
|
+
if (this._params) this._params.title = title2;
|
|
80629
80660
|
}
|
|
80630
80661
|
layout(width, height) {
|
|
80631
80662
|
var _this$content$layout, _this$content;
|
|
@@ -80672,7 +80703,7 @@ var DefaultDockviewDeserialzier = class {
|
|
|
80672
80703
|
var _panelData$contentCom, _viewData$tab, _this$accessor$option;
|
|
80673
80704
|
const panelId = panelData.id;
|
|
80674
80705
|
const params = panelData.params;
|
|
80675
|
-
const
|
|
80706
|
+
const title2 = panelData.title;
|
|
80676
80707
|
const viewData = panelData.view;
|
|
80677
80708
|
const contentComponent = viewData ? viewData.content.id : (_panelData$contentCom = panelData.contentComponent) !== null && _panelData$contentCom !== void 0 ? _panelData$contentCom : "unknown";
|
|
80678
80709
|
const tabComponent = viewData ? (_viewData$tab = viewData.tab) === null || _viewData$tab === void 0 ? void 0 : _viewData$tab.id : panelData.tabComponent;
|
|
@@ -80685,7 +80716,7 @@ var DefaultDockviewDeserialzier = class {
|
|
|
80685
80716
|
maximumHeight: panelData.maximumHeight
|
|
80686
80717
|
});
|
|
80687
80718
|
panel.init({
|
|
80688
|
-
title:
|
|
80719
|
+
title: title2 !== null && title2 !== void 0 ? title2 : panelId,
|
|
80689
80720
|
params: params !== null && params !== void 0 ? params : {}
|
|
80690
80721
|
});
|
|
80691
80722
|
if (panelData.pinned && ((_this$accessor$option = this.accessor.options.pinnedTabs) === null || _this$accessor$option === void 0 ? void 0 : _this$accessor$option.enabled)) panel.setPinned(true);
|
|
@@ -81372,8 +81403,8 @@ var FloatingGroupService = class {
|
|
|
81372
81403
|
})());
|
|
81373
81404
|
const updateDialogLabel = () => {
|
|
81374
81405
|
var _group$activePanel;
|
|
81375
|
-
const
|
|
81376
|
-
if (
|
|
81406
|
+
const title2 = (_group$activePanel = group.activePanel) === null || _group$activePanel === void 0 ? void 0 : _group$activePanel.title;
|
|
81407
|
+
if (title2) overlay.element.setAttribute("aria-label", title2);
|
|
81377
81408
|
else overlay.element.removeAttribute("aria-label");
|
|
81378
81409
|
};
|
|
81379
81410
|
updateDialogLabel();
|
|
@@ -86574,7 +86605,7 @@ var SliccTab = class {
|
|
|
86574
86605
|
this.#close.append(cross);
|
|
86575
86606
|
this.element.append(this.#label, this.#close);
|
|
86576
86607
|
}
|
|
86577
|
-
init({ api, containerApi, title }) {
|
|
86608
|
+
init({ api, containerApi, title: title2 }) {
|
|
86578
86609
|
const render2 = (text5) => {
|
|
86579
86610
|
this.#label.textContent = text5;
|
|
86580
86611
|
this.#close.setAttribute(
|
|
@@ -86582,7 +86613,7 @@ var SliccTab = class {
|
|
|
86582
86613
|
text5 ? containerApi.messages.closeTab(text5) : containerApi.messages.closeTabPlain()
|
|
86583
86614
|
);
|
|
86584
86615
|
};
|
|
86585
|
-
render2(
|
|
86616
|
+
render2(title2);
|
|
86586
86617
|
const pointerdown = (event2) => event2.preventDefault();
|
|
86587
86618
|
const click = (event2) => {
|
|
86588
86619
|
if (event2.defaultPrevented) return;
|
|
@@ -86592,7 +86623,7 @@ var SliccTab = class {
|
|
|
86592
86623
|
this.#close.addEventListener("pointerdown", pointerdown);
|
|
86593
86624
|
this.#close.addEventListener("click", click);
|
|
86594
86625
|
this.#disposables.push(
|
|
86595
|
-
api.onDidTitleChange(({ title:
|
|
86626
|
+
api.onDidTitleChange(({ title: title3 }) => render2(title3)),
|
|
86596
86627
|
{
|
|
86597
86628
|
dispose: () => {
|
|
86598
86629
|
this.#close.removeEventListener("pointerdown", pointerdown);
|