@ai-ecoverse/slicc-spectrum 1.68.3 → 1.69.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 +28 -8
- package/dist/{chunk-2PKRU2CL.js → chunk-X4C3AZJT.js} +9 -3
- package/dist/chunk-X4C3AZJT.js.map +7 -0
- package/dist/slicc-dummy.js +65 -8
- package/dist/slicc-dummy.js.map +3 -3
- package/dist/slicc-kernel-model.js +1 -1
- package/dist/slicc-ui.js +959 -667
- package/dist/slicc-ui.js.map +4 -4
- package/dist/types/app/agents.d.ts +4 -0
- package/dist/types/app/approvals.d.ts +5 -1
- package/dist/types/app/browser.d.ts +2 -0
- package/dist/types/app/chat.d.ts +4 -0
- package/dist/types/app/models.d.ts +8 -0
- package/dist/types/dummy/approvals.d.ts +2 -1
- package/dist/types/dummy/browser.d.ts +5 -0
- package/dist/types/dummy/fixtures.d.ts +1 -0
- package/dist/types/dummy/index.d.ts +2 -1
- package/dist/types/dummy/settings.d.ts +1 -1
- package/dist/types/dummy.d.ts +1 -1
- package/dist/types/model/types.d.ts +1 -0
- package/dist/types/ui.d.ts +2 -0
- package/package.json +3 -3
- package/dist/chunk-2PKRU2CL.js.map +0 -7
package/dist/slicc-ui.js
CHANGED
|
@@ -9444,6 +9444,7 @@ var SliccPrompt = class extends i2 {
|
|
|
9444
9444
|
trigger = null;
|
|
9445
9445
|
submit = null;
|
|
9446
9446
|
#result = Promise.withResolvers();
|
|
9447
|
+
#submitted = null;
|
|
9447
9448
|
constructor() {
|
|
9448
9449
|
super();
|
|
9449
9450
|
this.heading = "";
|
|
@@ -9495,14 +9496,14 @@ var SliccPrompt = class extends i2 {
|
|
|
9495
9496
|
this.#field.focus();
|
|
9496
9497
|
return;
|
|
9497
9498
|
}
|
|
9498
|
-
this.#
|
|
9499
|
+
this.#submitted = value;
|
|
9499
9500
|
this.#dialog.close();
|
|
9500
9501
|
}
|
|
9501
9502
|
#cancel(event2) {
|
|
9502
9503
|
if (this.pending) event2.preventDefault();
|
|
9503
9504
|
}
|
|
9504
9505
|
#closed() {
|
|
9505
|
-
this.#result.resolve(
|
|
9506
|
+
this.#result.resolve(this.#submitted);
|
|
9506
9507
|
this.remove();
|
|
9507
9508
|
if (this.trigger?.isConnected) this.trigger.focus();
|
|
9508
9509
|
}
|
|
@@ -10736,11 +10737,514 @@ var SliccFreezer = class extends ModelElement {
|
|
|
10736
10737
|
}
|
|
10737
10738
|
};
|
|
10738
10739
|
|
|
10740
|
+
// node_modules/@adobe/spectrum-wc-icons/dist/ChevronRight.js
|
|
10741
|
+
function e80() {
|
|
10742
|
+
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M7.75 16.465a.748.748 0 0 1-.54-1.27l4.999-5.197-4.986-5.184a.75.75 0 0 1 .02-1.06.75.75 0 0 1 1.06.021L13.79 9.48c.28.29.28.749 0 1.039l-5.5 5.716a.75.75 0 0 1-.54.23"/></svg>';
|
|
10743
|
+
}
|
|
10744
|
+
|
|
10745
|
+
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-chevron-right.js
|
|
10746
|
+
var o51 = class extends a10 {
|
|
10747
|
+
static get styles() {
|
|
10748
|
+
return [t40];
|
|
10749
|
+
}
|
|
10750
|
+
render() {
|
|
10751
|
+
return b`
|
|
10752
|
+
<span class="swc-Icon">${o16(e80())}</span>
|
|
10753
|
+
`;
|
|
10754
|
+
}
|
|
10755
|
+
};
|
|
10756
|
+
e25("swc-icon-chevron-right", o51);
|
|
10757
|
+
|
|
10758
|
+
// node_modules/@adobe/spectrum-wc-icons/dist/Copy.js
|
|
10759
|
+
function e81() {
|
|
10760
|
+
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M11.75 18h-7.5C3.01 18 2 16.99 2 15.75v-7.5C2 7.01 3.01 6 4.25 6a.75.75 0 0 1 0 1.5.75.75 0 0 0-.75.75v7.5c0 .413.337.75.75.75h7.5c.413 0 .75-.337.75-.75a.75.75 0 0 1 1.5 0c0 1.24-1.01 2.25-2.25 2.25m-5-13A.75.75 0 0 1 6 4.25C6 3.01 7.01 2 8.25 2a.75.75 0 0 1 0 1.5.75.75 0 0 0-.75.75.75.75 0 0 1-.75.75M13 3.5h-2A.75.75 0 0 1 11 2h2a.75.75 0 0 1 0 1.5"/><path fill="var(--swc-icon-color, currentColor)" d="M13 14h-2a.75.75 0 0 1 0-1.5h2a.75.75 0 0 1 0 1.5m2.75 0a.75.75 0 0 1 0-1.5c.413 0 .75-.337.75-.75a.75.75 0 0 1 1.5 0c0 1.24-1.01 2.25-2.25 2.25m1.5-9a.75.75 0 0 1-.75-.75.75.75 0 0 0-.75-.75.75.75 0 0 1 0-1.5C16.99 2 18 3.01 18 4.25a.75.75 0 0 1-.75.75m0 4.75A.75.75 0 0 1 16.5 9V7A.75.75 0 0 1 18 7v2a.75.75 0 0 1-.75.75m-10.5 0A.75.75 0 0 1 6 9V7a.75.75 0 0 1 1.5 0v2a.75.75 0 0 1-.75.75M8.25 14C7.01 14 6 12.99 6 11.75a.75.75 0 0 1 1.5 0c0 .413.337.75.75.75a.75.75 0 0 1 0 1.5"/></svg>';
|
|
10761
|
+
}
|
|
10762
|
+
|
|
10763
|
+
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-copy.js
|
|
10764
|
+
var o52 = class extends a10 {
|
|
10765
|
+
static get styles() {
|
|
10766
|
+
return [t40];
|
|
10767
|
+
}
|
|
10768
|
+
render() {
|
|
10769
|
+
return b`
|
|
10770
|
+
<span class="swc-Icon">${o16(e81())}</span>
|
|
10771
|
+
`;
|
|
10772
|
+
}
|
|
10773
|
+
};
|
|
10774
|
+
e25("swc-icon-copy", o52);
|
|
10775
|
+
|
|
10776
|
+
// src/app/reach.ts
|
|
10777
|
+
var command = "curl -fsSL https://get.sliccy.ai/slicc | sh";
|
|
10778
|
+
var startCommand = "slicc";
|
|
10779
|
+
var nodeCommand = "npx sliccy@next";
|
|
10780
|
+
var reachStyles = i`
|
|
10781
|
+
.command {
|
|
10782
|
+
display: flex;
|
|
10783
|
+
align-items: center;
|
|
10784
|
+
gap: var(--swc-spacing-100);
|
|
10785
|
+
padding: var(--swc-spacing-75) var(--swc-spacing-75) var(--swc-spacing-75) var(--swc-spacing-200);
|
|
10786
|
+
border-radius: var(--swc-corner-radius-medium-default);
|
|
10787
|
+
background: var(--swc-background-layer-1-color);
|
|
10788
|
+
}
|
|
10789
|
+
code {
|
|
10790
|
+
flex: 1;
|
|
10791
|
+
min-width: 0;
|
|
10792
|
+
overflow-wrap: break-word;
|
|
10793
|
+
word-break: normal;
|
|
10794
|
+
font-family: var(--swc-code-font-family-stack);
|
|
10795
|
+
font-size: var(--swc-font-size-75);
|
|
10796
|
+
color: var(--swc-code-color);
|
|
10797
|
+
user-select: all;
|
|
10798
|
+
}
|
|
10799
|
+
.commands {
|
|
10800
|
+
display: grid;
|
|
10801
|
+
gap: var(--swc-spacing-100);
|
|
10802
|
+
}
|
|
10803
|
+
.commands p {
|
|
10804
|
+
margin: 0;
|
|
10805
|
+
font-size: var(--swc-font-size-75);
|
|
10806
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
10807
|
+
}
|
|
10808
|
+
`;
|
|
10809
|
+
function block(text2, copied, copy, first2 = false) {
|
|
10810
|
+
const done2 = copied === text2;
|
|
10811
|
+
return b`<div class="command" data-command=${text2}>
|
|
10812
|
+
<code>${breakable(text2)}</code>
|
|
10813
|
+
<swc-action-button size="s" quiet data-action=${first2 ? "copy-command" : A} accessible-label=${done2 ? "Copied" : `Copy ${text2}`} @click=${() => copy(text2)}>
|
|
10814
|
+
<swc-icon-copy slot="icon"></swc-icon-copy>${done2 ? "Copied" : "Copy"}
|
|
10815
|
+
</swc-action-button>
|
|
10816
|
+
</div>`;
|
|
10817
|
+
}
|
|
10818
|
+
function breakable(text2) {
|
|
10819
|
+
return text2.split("/").map(
|
|
10820
|
+
(part2, index, parts2) => b`${part2}${index < parts2.length - 1 ? b`/<wbr />` : A}`
|
|
10821
|
+
);
|
|
10822
|
+
}
|
|
10823
|
+
function reach({ intro, extensionUrl, copied, uncopied, copy }) {
|
|
10824
|
+
return b`<p>${intro}</p>
|
|
10825
|
+
${extensionUrl ? b`<p><a class="swc-Link" href=${extensionUrl} target="_blank" rel="noopener noreferrer" data-action="install-extension">Install the Chrome extension</a></p>` : A}
|
|
10826
|
+
<p>To run slicc, enter this in a terminal:</p>
|
|
10827
|
+
<div class="commands">
|
|
10828
|
+
${block(command, copied, copy, true)}
|
|
10829
|
+
${block(startCommand, copied, copy)}
|
|
10830
|
+
</div>
|
|
10831
|
+
<div class="commands" data-commands="node">
|
|
10832
|
+
<p>With Node:</p>
|
|
10833
|
+
${block(nodeCommand, copied, copy)}
|
|
10834
|
+
</div>
|
|
10835
|
+
${uncopied ? b`<div class="error" role="alert" data-error="copy"><swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle><span>Couldn’t copy. Select the command and copy it.</span></div>` : A}`;
|
|
10836
|
+
}
|
|
10837
|
+
async function copyText(text2) {
|
|
10838
|
+
try {
|
|
10839
|
+
await globalThis.navigator.clipboard.writeText(text2);
|
|
10840
|
+
return true;
|
|
10841
|
+
} catch {
|
|
10842
|
+
return false;
|
|
10843
|
+
}
|
|
10844
|
+
}
|
|
10845
|
+
|
|
10846
|
+
// src/app/monitor.ts
|
|
10847
|
+
function sparkline(points, width = 120, height = 28) {
|
|
10848
|
+
if (points.length < 2) return "";
|
|
10849
|
+
const max2 = Math.max(...points);
|
|
10850
|
+
const min2 = Math.min(...points);
|
|
10851
|
+
const span = max2 - min2 || 1;
|
|
10852
|
+
return points.map(
|
|
10853
|
+
(value, i26) => `${(i26 / (points.length - 1) * width).toFixed(1)},${(height - (value - min2) / span * (height - 2) - 1).toFixed(1)}`
|
|
10854
|
+
).join(" ");
|
|
10855
|
+
}
|
|
10856
|
+
function meterVariant2(ratio) {
|
|
10857
|
+
if (ratio >= 0.9) return "negative";
|
|
10858
|
+
if (ratio >= 0.6) return "notice";
|
|
10859
|
+
return "informative";
|
|
10860
|
+
}
|
|
10861
|
+
var surfaces = {
|
|
10862
|
+
agents: "agents",
|
|
10863
|
+
terminals: "terminal",
|
|
10864
|
+
tabs: "browser",
|
|
10865
|
+
changes: "changes",
|
|
10866
|
+
processes: "terminal"
|
|
10867
|
+
};
|
|
10868
|
+
var rowLights = {
|
|
10869
|
+
active: "info",
|
|
10870
|
+
idle: "neutral",
|
|
10871
|
+
warn: "notice",
|
|
10872
|
+
error: "negative"
|
|
10873
|
+
};
|
|
10874
|
+
var rowSpoken = {
|
|
10875
|
+
active: "Active",
|
|
10876
|
+
idle: "Idle",
|
|
10877
|
+
warn: "Needs attention",
|
|
10878
|
+
error: "Error"
|
|
10879
|
+
};
|
|
10880
|
+
function indent(depth) {
|
|
10881
|
+
return Math.min(Math.max(Math.floor(depth ?? 0), 0), 6);
|
|
10882
|
+
}
|
|
10883
|
+
function attention(section) {
|
|
10884
|
+
const errors = section.rows.filter((row) => row.status === "error").length;
|
|
10885
|
+
if (errors)
|
|
10886
|
+
return { variant: "negative", text: `${errors} ${errors === 1 ? "error" : "errors"}` };
|
|
10887
|
+
const warnings = section.rows.filter((row) => row.status === "warn").length;
|
|
10888
|
+
if (warnings)
|
|
10889
|
+
return {
|
|
10890
|
+
variant: "notice",
|
|
10891
|
+
text: `${warnings} ${warnings === 1 ? "needs" : "need"} attention`
|
|
10892
|
+
};
|
|
10893
|
+
return null;
|
|
10894
|
+
}
|
|
10895
|
+
var SliccMonitor = class extends ModelElement {
|
|
10896
|
+
static properties = {
|
|
10897
|
+
...ModelElement.properties,
|
|
10898
|
+
expanded: { state: true },
|
|
10899
|
+
copied: { state: true }
|
|
10900
|
+
};
|
|
10901
|
+
constructor() {
|
|
10902
|
+
super();
|
|
10903
|
+
this.expanded = {};
|
|
10904
|
+
this.copied = null;
|
|
10905
|
+
}
|
|
10906
|
+
static styles = [
|
|
10907
|
+
shared,
|
|
10908
|
+
panelCss,
|
|
10909
|
+
i`
|
|
10910
|
+
.bar {
|
|
10911
|
+
padding-block: var(--swc-spacing-50);
|
|
10912
|
+
}
|
|
10913
|
+
.heading {
|
|
10914
|
+
flex: 1;
|
|
10915
|
+
min-width: 0;
|
|
10916
|
+
display: flex;
|
|
10917
|
+
flex-wrap: wrap;
|
|
10918
|
+
align-items: baseline;
|
|
10919
|
+
column-gap: var(--swc-spacing-100);
|
|
10920
|
+
white-space: normal;
|
|
10921
|
+
}
|
|
10922
|
+
.bar swc-action-button {
|
|
10923
|
+
flex: none;
|
|
10924
|
+
}
|
|
10925
|
+
.body {
|
|
10926
|
+
flex: 1;
|
|
10927
|
+
min-height: 0;
|
|
10928
|
+
overflow-y: auto;
|
|
10929
|
+
padding: var(--swc-spacing-100);
|
|
10930
|
+
display: grid;
|
|
10931
|
+
grid-template-columns: minmax(0, 1fr);
|
|
10932
|
+
align-content: start;
|
|
10933
|
+
gap: var(--swc-spacing-200);
|
|
10934
|
+
}
|
|
10935
|
+
.vitals {
|
|
10936
|
+
display: grid;
|
|
10937
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--swc-card-default-width-extra-small)), 1fr));
|
|
10938
|
+
gap: var(--swc-spacing-100);
|
|
10939
|
+
}
|
|
10940
|
+
.vital {
|
|
10941
|
+
display: grid;
|
|
10942
|
+
align-content: start;
|
|
10943
|
+
gap: var(--swc-spacing-50);
|
|
10944
|
+
border-radius: var(--swc-corner-radius-medium-default);
|
|
10945
|
+
padding: var(--swc-spacing-200);
|
|
10946
|
+
background: var(--swc-background-layer-1-color);
|
|
10947
|
+
}
|
|
10948
|
+
.label {
|
|
10949
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
10950
|
+
font-size: var(--swc-font-size-75);
|
|
10951
|
+
}
|
|
10952
|
+
.value {
|
|
10953
|
+
font-size: var(--swc-font-size-300);
|
|
10954
|
+
font-weight: var(--swc-bold-font-weight);
|
|
10955
|
+
font-variant-numeric: tabular-nums;
|
|
10956
|
+
}
|
|
10957
|
+
.unit,
|
|
10958
|
+
.delta {
|
|
10959
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
10960
|
+
margin-inline-start: var(--swc-spacing-75);
|
|
10961
|
+
}
|
|
10962
|
+
svg {
|
|
10963
|
+
display: block;
|
|
10964
|
+
width: 100%;
|
|
10965
|
+
height: var(--swc-component-height-100);
|
|
10966
|
+
}
|
|
10967
|
+
polyline {
|
|
10968
|
+
fill: none;
|
|
10969
|
+
stroke: var(--swc-accent-visual-color);
|
|
10970
|
+
stroke-width: 1.5;
|
|
10971
|
+
}
|
|
10972
|
+
swc-meter {
|
|
10973
|
+
width: 100%;
|
|
10974
|
+
}
|
|
10975
|
+
.alerts {
|
|
10976
|
+
display: grid;
|
|
10977
|
+
gap: var(--swc-spacing-75);
|
|
10978
|
+
margin: 0;
|
|
10979
|
+
padding: 0;
|
|
10980
|
+
list-style: none;
|
|
10981
|
+
}
|
|
10982
|
+
.alert {
|
|
10983
|
+
display: grid;
|
|
10984
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
10985
|
+
gap: var(--swc-spacing-100);
|
|
10986
|
+
align-items: start;
|
|
10987
|
+
border-radius: var(--swc-corner-radius-medium-default);
|
|
10988
|
+
padding: var(--swc-spacing-100) var(--swc-spacing-200);
|
|
10989
|
+
background: var(--swc-notice-subtle-background-color-default);
|
|
10990
|
+
}
|
|
10991
|
+
.alert[data-severity='error'] {
|
|
10992
|
+
background: var(--swc-negative-subtle-background-color-default);
|
|
10993
|
+
}
|
|
10994
|
+
.alert swc-icon-alert-triangle {
|
|
10995
|
+
color: var(--swc-icon-color-notice);
|
|
10996
|
+
}
|
|
10997
|
+
.alert swc-icon-alert-diamond {
|
|
10998
|
+
color: var(--swc-icon-color-negative);
|
|
10999
|
+
}
|
|
11000
|
+
.alert .detail {
|
|
11001
|
+
display: block;
|
|
11002
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
11003
|
+
}
|
|
11004
|
+
.alert > div {
|
|
11005
|
+
min-width: 0;
|
|
11006
|
+
}
|
|
11007
|
+
.alert .command {
|
|
11008
|
+
display: flex;
|
|
11009
|
+
align-items: center;
|
|
11010
|
+
gap: var(--swc-spacing-100);
|
|
11011
|
+
margin-block-start: var(--swc-spacing-75);
|
|
11012
|
+
padding-inline-start: var(--swc-spacing-100);
|
|
11013
|
+
border-radius: var(--swc-corner-radius-medium-default);
|
|
11014
|
+
background: var(--swc-background-layer-1-color);
|
|
11015
|
+
}
|
|
11016
|
+
.alert code {
|
|
11017
|
+
flex: 1;
|
|
11018
|
+
min-width: 0;
|
|
11019
|
+
overflow-x: auto;
|
|
11020
|
+
white-space: nowrap;
|
|
11021
|
+
font-family: var(--swc-code-font-family-stack);
|
|
11022
|
+
font-size: var(--swc-font-size-75);
|
|
11023
|
+
color: var(--swc-code-color);
|
|
11024
|
+
}
|
|
11025
|
+
.alert .lead {
|
|
11026
|
+
display: block;
|
|
11027
|
+
margin-block-start: var(--swc-spacing-75);
|
|
11028
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
11029
|
+
}
|
|
11030
|
+
.alert .uncopied {
|
|
11031
|
+
display: block;
|
|
11032
|
+
color: var(--swc-negative-content-color-default);
|
|
11033
|
+
}
|
|
11034
|
+
.sections {
|
|
11035
|
+
display: grid;
|
|
11036
|
+
margin: 0;
|
|
11037
|
+
padding: 0;
|
|
11038
|
+
list-style: none;
|
|
11039
|
+
}
|
|
11040
|
+
.section {
|
|
11041
|
+
display: grid;
|
|
11042
|
+
}
|
|
11043
|
+
.line {
|
|
11044
|
+
display: flex;
|
|
11045
|
+
flex-wrap: wrap;
|
|
11046
|
+
align-items: center;
|
|
11047
|
+
gap: var(--swc-spacing-100);
|
|
11048
|
+
min-height: var(--swc-component-height-100);
|
|
11049
|
+
padding: var(--swc-spacing-50) 0;
|
|
11050
|
+
}
|
|
11051
|
+
.toggle {
|
|
11052
|
+
all: unset;
|
|
11053
|
+
box-sizing: border-box;
|
|
11054
|
+
flex: 1 1 auto;
|
|
11055
|
+
min-width: 0;
|
|
11056
|
+
display: flex;
|
|
11057
|
+
align-items: center;
|
|
11058
|
+
gap: var(--swc-spacing-75);
|
|
11059
|
+
cursor: pointer;
|
|
11060
|
+
border-radius: var(--swc-corner-radius-small-default);
|
|
11061
|
+
}
|
|
11062
|
+
.toggle:focus-visible {
|
|
11063
|
+
outline: var(--swc-focus-indicator-thickness) solid var(--swc-focus-indicator-color);
|
|
11064
|
+
outline-offset: var(--swc-focus-ring-gap);
|
|
11065
|
+
}
|
|
11066
|
+
.chevron {
|
|
11067
|
+
flex: none;
|
|
11068
|
+
width: var(--swc-component-height-50);
|
|
11069
|
+
display: inline-flex;
|
|
11070
|
+
justify-content: center;
|
|
11071
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
11072
|
+
}
|
|
11073
|
+
.toggle[aria-expanded='true'] swc-icon-chevron-right {
|
|
11074
|
+
transform: rotate(90deg);
|
|
11075
|
+
}
|
|
11076
|
+
:host(:dir(rtl)) .toggle[aria-expanded='false'] swc-icon-chevron-right {
|
|
11077
|
+
transform: scaleX(-1);
|
|
11078
|
+
}
|
|
11079
|
+
.line .name {
|
|
11080
|
+
flex: 1 1 auto;
|
|
11081
|
+
min-width: 0;
|
|
11082
|
+
}
|
|
11083
|
+
.line .num {
|
|
11084
|
+
font-weight: var(--swc-bold-font-weight);
|
|
11085
|
+
font-variant-numeric: tabular-nums;
|
|
11086
|
+
}
|
|
11087
|
+
.rows {
|
|
11088
|
+
display: grid;
|
|
11089
|
+
gap: var(--swc-spacing-50);
|
|
11090
|
+
margin: 0 0 var(--swc-spacing-100);
|
|
11091
|
+
padding: 0;
|
|
11092
|
+
padding-inline-start: calc(var(--swc-component-height-50) + var(--swc-spacing-75));
|
|
11093
|
+
list-style: none;
|
|
11094
|
+
}
|
|
11095
|
+
.row {
|
|
11096
|
+
display: grid;
|
|
11097
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
11098
|
+
align-items: center;
|
|
11099
|
+
column-gap: var(--swc-spacing-100);
|
|
11100
|
+
padding-inline-start: calc(var(--depth, 0) * var(--swc-spacing-300));
|
|
11101
|
+
}
|
|
11102
|
+
.row swc-status-light {
|
|
11103
|
+
min-width: 0;
|
|
11104
|
+
overflow-wrap: break-word;
|
|
11105
|
+
}
|
|
11106
|
+
.row .badges {
|
|
11107
|
+
grid-column: 2;
|
|
11108
|
+
grid-row: 1 / span 2;
|
|
11109
|
+
align-self: start;
|
|
11110
|
+
display: flex;
|
|
11111
|
+
flex-wrap: wrap;
|
|
11112
|
+
justify-content: end;
|
|
11113
|
+
gap: var(--swc-spacing-50);
|
|
11114
|
+
}
|
|
11115
|
+
.row swc-status-light {
|
|
11116
|
+
grid-column: 1;
|
|
11117
|
+
grid-row: 1;
|
|
11118
|
+
}
|
|
11119
|
+
.row .meta {
|
|
11120
|
+
grid-column: 1;
|
|
11121
|
+
grid-row: 2;
|
|
11122
|
+
padding-inline-start: var(--swc-spacing-300);
|
|
11123
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
11124
|
+
font-size: var(--swc-font-size-75);
|
|
11125
|
+
overflow-wrap: break-word;
|
|
11126
|
+
}
|
|
11127
|
+
`
|
|
11128
|
+
];
|
|
11129
|
+
subscribe(model) {
|
|
11130
|
+
return [model.monitor.on("snapshot", () => this.requestUpdate())];
|
|
11131
|
+
}
|
|
11132
|
+
focus() {
|
|
11133
|
+
this.focusOn(".bar swc-action-button");
|
|
11134
|
+
}
|
|
11135
|
+
#vital(vital) {
|
|
11136
|
+
if (vital.ratio !== void 0) {
|
|
11137
|
+
return b`<div class="vital" data-id=${vital.id}>
|
|
11138
|
+
<swc-meter
|
|
11139
|
+
size="s"
|
|
11140
|
+
variant=${meterVariant2(vital.ratio)}
|
|
11141
|
+
value=${Math.round(vital.ratio * 100)}
|
|
11142
|
+
value-label=${vital.value}
|
|
11143
|
+
><span slot="label">${vital.label}</span>${vital.unit ? b`<span slot="description">${vital.unit}</span>` : A}</swc-meter
|
|
11144
|
+
>
|
|
11145
|
+
</div>`;
|
|
11146
|
+
}
|
|
11147
|
+
const line = vital.series ? sparkline(vital.series) : "";
|
|
11148
|
+
return b`<div class="vital" data-id=${vital.id}>
|
|
11149
|
+
<div class="label">${vital.label}</div>
|
|
11150
|
+
<div><span class="value">${vital.value}</span>${vital.unit ? b`<span class="unit">${vital.unit}</span>` : A}${vital.delta ? b`<span class="delta">${vital.delta}</span>` : A}</div>
|
|
11151
|
+
${line ? b`<svg viewBox="0 0 120 28" preserveAspectRatio="none" aria-hidden="true">${w`<polyline points=${line}></polyline>`}</svg>` : A}
|
|
11152
|
+
</div>`;
|
|
11153
|
+
}
|
|
11154
|
+
#alert(alert) {
|
|
11155
|
+
const error = alert.severity === "error";
|
|
11156
|
+
return b`<li class="alert" data-severity=${alert.severity}>
|
|
11157
|
+
${error ? b`<swc-icon-alert-diamond size="s" aria-hidden="true"></swc-icon-alert-diamond>` : b`<swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle>`}
|
|
11158
|
+
<div><span class="sr">${error ? "Error: " : "Warning: "}</span><strong>${alert.title}</strong><span class="detail">${alert.detail}</span>${alert.command ? this.#command(alert.id, alert.command, alert.commandLabel ?? "Run") : A}</div>
|
|
11159
|
+
</li>`;
|
|
11160
|
+
}
|
|
11161
|
+
#command(id, text2, label) {
|
|
11162
|
+
const copied = this.copied?.id === id && this.copied.text === text2 ? this.copied : null;
|
|
11163
|
+
return b`<span class="lead">${label}:</span><div class="command" data-command><code>${text2}</code><swc-action-button size="s" quiet data-action="copy-command" accessible-label=${copied?.done ? "Copied" : "Copy command"} @click=${() => this.#copy(id, text2)}><swc-icon-copy slot="icon"></swc-icon-copy>${copied?.done ? "Copied" : "Copy"}</swc-action-button></div>${copied && !copied.done ? b`<span class="uncopied" role="alert" data-error="copy">Couldn’t copy. Select the command and copy it.</span>` : A}`;
|
|
11164
|
+
}
|
|
11165
|
+
async #copy(id, text2) {
|
|
11166
|
+
this.copied = { id, text: text2, done: await copyText(text2) };
|
|
11167
|
+
}
|
|
11168
|
+
#open(id) {
|
|
11169
|
+
this.dispatchEvent(
|
|
11170
|
+
new CustomEvent("show-surface", { detail: { id }, bubbles: true, composed: true })
|
|
11171
|
+
);
|
|
11172
|
+
}
|
|
11173
|
+
#row(row) {
|
|
11174
|
+
const depth = indent(row.depth);
|
|
11175
|
+
return b`<li class="row" data-id=${row.id ?? A} data-status=${row.status} data-depth=${depth || A} style=${depth ? `--depth: ${depth}` : A}>
|
|
11176
|
+
<swc-status-light size="s" variant=${rowLights[row.status]}><span class="sr">${rowSpoken[row.status]}: </span>${row.name.split(/(?<=\/)/).map((part2, i26) => i26 ? b`<wbr>${part2}` : part2)}</swc-status-light>
|
|
11177
|
+
<span class="badges">${(row.badges ?? []).map((badge) => b`<swc-badge size="s" variant="neutral" subtle>${badge}</swc-badge>`)}</span>
|
|
11178
|
+
${row.meta ? b`<span class="meta">${row.meta}</span>` : A}
|
|
11179
|
+
</li>`;
|
|
11180
|
+
}
|
|
11181
|
+
#section(section) {
|
|
11182
|
+
const flag = attention(section);
|
|
11183
|
+
const surface2 = surfaces[section.id];
|
|
11184
|
+
const rows = section.rows.length > 0;
|
|
11185
|
+
const open = rows && (this.expanded[section.id] ?? flag !== null);
|
|
11186
|
+
const list5 = `rows-${section.id}`;
|
|
11187
|
+
return b`<li class="section" data-id=${section.id} data-open=${open ? "" : A}>
|
|
11188
|
+
<div class="line">
|
|
11189
|
+
${rows ? b`<button class="toggle" aria-expanded=${open ? "true" : "false"} aria-controls=${open ? list5 : A} @click=${() => {
|
|
11190
|
+
this.expanded = { ...this.expanded, [section.id]: !open };
|
|
11191
|
+
}}><span class="chevron"><swc-icon-chevron-right size="s" aria-hidden="true"></swc-icon-chevron-right></span><span class="name">${section.label}</span></button>` : b`<span class="chevron"></span><span class="name">${section.label}</span>`}
|
|
11192
|
+
${flag ? b`<swc-badge size="s" variant=${flag.variant} subtle>${flag.text}</swc-badge>` : A}
|
|
11193
|
+
<span class="num">${section.rows.length}</span>
|
|
11194
|
+
${surface2 ? b`<swc-action-button size="s" quiet accessible-label=${`Open ${section.label}`} @click=${() => this.#open(surface2)}
|
|
11195
|
+
>Open</swc-action-button
|
|
11196
|
+
>` : A}
|
|
11197
|
+
</div>
|
|
11198
|
+
${open ? b`<ul class="rows" id=${list5} aria-label=${section.label}>${c(
|
|
11199
|
+
section.rows,
|
|
11200
|
+
(row, i26) => row.id ?? i26,
|
|
11201
|
+
(row) => this.#row(row)
|
|
11202
|
+
)}</ul>` : A}
|
|
11203
|
+
</li>`;
|
|
11204
|
+
}
|
|
11205
|
+
render() {
|
|
11206
|
+
const snapshot2 = this.model?.monitor.snapshot();
|
|
11207
|
+
return b`<div class="bar">
|
|
11208
|
+
<span class="heading"><strong>Live monitor</strong><span>${snapshot2 ? `Updated ${new Date(snapshot2.updatedAt).toISOString().slice(11, 19)} UTC` : "No data"}</span></span>
|
|
11209
|
+
<swc-action-button size="s" quiet @click=${() => this.model?.monitor.resync()}><swc-icon-refresh slot="icon"></swc-icon-refresh>Re-sync</swc-action-button>
|
|
11210
|
+
</div>
|
|
11211
|
+
<div class="body">
|
|
11212
|
+
${snapshot2 ? b`<div class="vitals">${snapshot2.vitals.map((vital) => this.#vital(vital))}</div>
|
|
11213
|
+
${snapshot2.alerts.length ? b`<ul class="alerts" aria-label="Alerts">${snapshot2.alerts.map((alert) => this.#alert(alert))}</ul>` : A}
|
|
11214
|
+
<ul class="sections" aria-label="Activity">${snapshot2.sections.map((section) => this.#section(section))}</ul>` : A}
|
|
11215
|
+
</div>`;
|
|
11216
|
+
}
|
|
11217
|
+
};
|
|
11218
|
+
|
|
10739
11219
|
// src/app/agents.ts
|
|
10740
11220
|
function ordered(agents) {
|
|
10741
11221
|
const cones = agents.filter((agent) => agent.kind === "cone");
|
|
10742
11222
|
return cones.flatMap((cone) => [cone, ...agents.filter((agent) => agent.parentId === cone.id)]);
|
|
10743
11223
|
}
|
|
11224
|
+
function creatable(model) {
|
|
11225
|
+
return Boolean(model?.agent.createCone) && !watchOnly(model);
|
|
11226
|
+
}
|
|
11227
|
+
async function createCone(model, trigger2) {
|
|
11228
|
+
const port = model.agent;
|
|
11229
|
+
const create3 = port.createCone?.bind(port);
|
|
11230
|
+
if (!create3) return void 0;
|
|
11231
|
+
let created;
|
|
11232
|
+
await prompt({
|
|
11233
|
+
title: "New cone",
|
|
11234
|
+
label: "Name",
|
|
11235
|
+
action: "Create",
|
|
11236
|
+
trigger: trigger2,
|
|
11237
|
+
submit: async (name) => {
|
|
11238
|
+
if (watchOnly(model)) return;
|
|
11239
|
+
created = await create3(name);
|
|
11240
|
+
}
|
|
11241
|
+
});
|
|
11242
|
+
if (created) port.select(created.id);
|
|
11243
|
+
return created;
|
|
11244
|
+
}
|
|
11245
|
+
function fillShown(fill2) {
|
|
11246
|
+
return fill2 >= 0.5;
|
|
11247
|
+
}
|
|
10744
11248
|
var SliccAgents = class extends ModelElement {
|
|
10745
11249
|
static properties = { ...ModelElement.properties, errors: { state: true } };
|
|
10746
11250
|
constructor() {
|
|
@@ -10758,6 +11262,10 @@ var SliccAgents = class extends ModelElement {
|
|
|
10758
11262
|
color: var(--swc-neutral-content-color-default);
|
|
10759
11263
|
font-size: var(--swc-font-size-100);
|
|
10760
11264
|
}
|
|
11265
|
+
.actions {
|
|
11266
|
+
display: flex;
|
|
11267
|
+
padding: var(--swc-spacing-75) var(--swc-spacing-100) 0;
|
|
11268
|
+
}
|
|
10761
11269
|
ul {
|
|
10762
11270
|
list-style: none;
|
|
10763
11271
|
margin: 0;
|
|
@@ -10773,6 +11281,7 @@ var SliccAgents = class extends ModelElement {
|
|
|
10773
11281
|
cursor: pointer;
|
|
10774
11282
|
}
|
|
10775
11283
|
li.scoop {
|
|
11284
|
+
grid-template-areas: 'name unread fill drop' 'status unread fill drop' 'error error error error';
|
|
10776
11285
|
padding-inline-start: calc(var(--swc-spacing-200) + var(--swc-spacing-300));
|
|
10777
11286
|
}
|
|
10778
11287
|
li:hover {
|
|
@@ -10820,12 +11329,21 @@ var SliccAgents = class extends ModelElement {
|
|
|
10820
11329
|
min-width: 4ch;
|
|
10821
11330
|
text-align: end;
|
|
10822
11331
|
}
|
|
11332
|
+
.fill[data-variant='notice'] {
|
|
11333
|
+
color: var(--swc-notice-color-1000);
|
|
11334
|
+
font-weight: var(--swc-bold-font-weight);
|
|
11335
|
+
}
|
|
11336
|
+
.fill[data-variant='negative'] {
|
|
11337
|
+
color: var(--swc-negative-color-1000);
|
|
11338
|
+
font-weight: var(--swc-bold-font-weight);
|
|
11339
|
+
}
|
|
10823
11340
|
swc-status-light {
|
|
10824
11341
|
grid-area: status;
|
|
10825
11342
|
justify-self: start;
|
|
10826
11343
|
}
|
|
10827
11344
|
.drop {
|
|
10828
11345
|
grid-area: drop;
|
|
11346
|
+
margin-block: calc(-1 * var(--swc-spacing-100));
|
|
10829
11347
|
visibility: hidden;
|
|
10830
11348
|
}
|
|
10831
11349
|
li:hover .drop,
|
|
@@ -10929,8 +11447,8 @@ var SliccAgents = class extends ModelElement {
|
|
|
10929
11447
|
return;
|
|
10930
11448
|
}
|
|
10931
11449
|
const current = port.active();
|
|
10932
|
-
const
|
|
10933
|
-
if (
|
|
11450
|
+
const stale2 = current === agent.id || !port.list().some((candidate) => candidate.id === current);
|
|
11451
|
+
if (stale2 && agent.parentId) port.select(agent.parentId);
|
|
10934
11452
|
await this.updateComplete;
|
|
10935
11453
|
this.focus();
|
|
10936
11454
|
}
|
|
@@ -10977,7 +11495,8 @@ var SliccAgents = class extends ModelElement {
|
|
|
10977
11495
|
const error = this.errors[agent.id];
|
|
10978
11496
|
const model = this.model;
|
|
10979
11497
|
const title = agent.kind === "cone" ? agentTitle(model, agent) : null;
|
|
10980
|
-
const
|
|
11498
|
+
const unread = selected ? 0 : agent.unread;
|
|
11499
|
+
const label = `${coneLabel(model, agent)}: ${statusLabel[agent.status]}, ${percent(agent.contextFill)} context${unread ? `, ${unread} unread` : ""}${error ? `. ${error}` : ""}`;
|
|
10981
11500
|
return b`<li
|
|
10982
11501
|
role="option"
|
|
10983
11502
|
class=${agent.kind}
|
|
@@ -10991,19 +11510,32 @@ var SliccAgents = class extends ModelElement {
|
|
|
10991
11510
|
>
|
|
10992
11511
|
<span class="name">${agent.name}</span>
|
|
10993
11512
|
${title === null ? A : b`<span class="title">${title || untitled}</span>`}
|
|
10994
|
-
${
|
|
10995
|
-
|
|
11513
|
+
${unread ? b`<swc-badge class="unread" size="s" variant="accent">${unread}</swc-badge>` : A}
|
|
11514
|
+
${fillShown(agent.contextFill) ? b`<span class="fill" data-variant=${meterVariant2(agent.contextFill)}>${percent(agent.contextFill)}</span>` : A}
|
|
10996
11515
|
${statusLight(agent.status)}
|
|
10997
11516
|
${this.#dropButton(agent)}
|
|
10998
11517
|
${this.#deleteButton(agent)}
|
|
10999
11518
|
${error ? b`<span class="error">${error}</span>` : A}
|
|
11000
11519
|
</li>`;
|
|
11001
11520
|
}
|
|
11521
|
+
async #newCone(trigger2) {
|
|
11522
|
+
if (!await createCone(this.model, trigger2)) return;
|
|
11523
|
+
await this.updateComplete;
|
|
11524
|
+
this.focus();
|
|
11525
|
+
}
|
|
11526
|
+
#actions() {
|
|
11527
|
+
if (!creatable(this.model)) return A;
|
|
11528
|
+
return b`<div class="actions">
|
|
11529
|
+
<swc-action-button size="s" quiet data-action="new-cone" @click=${(event2) => void this.#newCone(event2.currentTarget)}>
|
|
11530
|
+
<swc-icon-add slot="icon"></swc-icon-add>New cone
|
|
11531
|
+
</swc-action-button>
|
|
11532
|
+
</div>`;
|
|
11533
|
+
}
|
|
11002
11534
|
render() {
|
|
11003
11535
|
const agents = ordered(this.model?.agent.list() ?? []);
|
|
11004
11536
|
const active = this.model?.agent.active() ?? "";
|
|
11005
11537
|
const errors = Object.values(this.errors);
|
|
11006
|
-
return b
|
|
11538
|
+
return b`${this.#actions()}<ul role="listbox" aria-label="Cones and scoops" @keydown=${this.#keydown}>
|
|
11007
11539
|
${agents.map((agent) => this.#row(agent, active))}
|
|
11008
11540
|
</ul>
|
|
11009
11541
|
<div class="sr" role="status">${errors.at(-1) ?? ""}</div>`;
|
|
@@ -11025,7 +11557,7 @@ var i17 = e2(class extends i3 {
|
|
|
11025
11557
|
|
|
11026
11558
|
// node_modules/lit-html/static.js
|
|
11027
11559
|
var a12 = /* @__PURE__ */ Symbol.for("");
|
|
11028
|
-
var
|
|
11560
|
+
var o53 = (t90) => {
|
|
11029
11561
|
if (t90?.r === a12) return t90?._$litStatic$;
|
|
11030
11562
|
};
|
|
11031
11563
|
var s9 = (t90) => ({ _$litStatic$: t90, r: a12 });
|
|
@@ -11036,7 +11568,7 @@ var n28 = (t90) => (r40, ...e120) => {
|
|
|
11036
11568
|
const n37 = [], u27 = [];
|
|
11037
11569
|
let c28, $6 = 0, f11 = false;
|
|
11038
11570
|
for (; $6 < a23; ) {
|
|
11039
|
-
for (c28 = r40[$6]; $6 < a23 && void 0 !== (i26 = e120[$6], s19 =
|
|
11571
|
+
for (c28 = r40[$6]; $6 < a23 && void 0 !== (i26 = e120[$6], s19 = o53(i26)); ) c28 += s19 + r40[++$6], f11 = true;
|
|
11040
11572
|
$6 !== a23 && u27.push(i26), n37.push(c28), $6++;
|
|
11041
11573
|
}
|
|
11042
11574
|
if ($6 === a23 && n37.push(r40[a23]), f11) {
|
|
@@ -11169,151 +11701,189 @@ async function grammar(kind, name, version2, remote = grammarCdn, importer = (ur
|
|
|
11169
11701
|
throw failure2;
|
|
11170
11702
|
}
|
|
11171
11703
|
|
|
11704
|
+
// src/app/models.ts
|
|
11705
|
+
var asked = /* @__PURE__ */ new WeakMap();
|
|
11706
|
+
var switched = /* @__PURE__ */ new WeakMap();
|
|
11707
|
+
var settling = /* @__PURE__ */ new WeakSet();
|
|
11708
|
+
function stale(model, id, offered) {
|
|
11709
|
+
if (offered.some((option2) => option2.id === id)) return false;
|
|
11710
|
+
const provider = id.split("/")[0];
|
|
11711
|
+
return !model.settings.accounts().some((account) => account.id === provider && account.status === "connected");
|
|
11712
|
+
}
|
|
11713
|
+
function fallbackModel(options) {
|
|
11714
|
+
const offered = chatModels(options);
|
|
11715
|
+
return offered.find((option2) => option2.default) ?? offered[0];
|
|
11716
|
+
}
|
|
11717
|
+
function controls(model) {
|
|
11718
|
+
const state3 = model.follow?.state();
|
|
11719
|
+
return !state3 || !!state3.access.control && state3.link === "connected";
|
|
11720
|
+
}
|
|
11721
|
+
function settleModels(model) {
|
|
11722
|
+
if (settling.has(model) || !controls(model)) return;
|
|
11723
|
+
settling.add(model);
|
|
11724
|
+
try {
|
|
11725
|
+
settle(model);
|
|
11726
|
+
} finally {
|
|
11727
|
+
settling.delete(model);
|
|
11728
|
+
}
|
|
11729
|
+
}
|
|
11730
|
+
function settle(model) {
|
|
11731
|
+
const offered = chatModels(model.settings.models());
|
|
11732
|
+
const pick = fallbackModel(offered);
|
|
11733
|
+
if (!pick) return;
|
|
11734
|
+
const requests = asked.get(model) ?? /* @__PURE__ */ new Map();
|
|
11735
|
+
asked.set(model, requests);
|
|
11736
|
+
const ask = (key2, from, apply2) => {
|
|
11737
|
+
if (!stale(model, from, offered)) {
|
|
11738
|
+
requests.delete(key2);
|
|
11739
|
+
return;
|
|
11740
|
+
}
|
|
11741
|
+
if (requests.get(key2) === pick.id) return;
|
|
11742
|
+
requests.set(key2, pick.id);
|
|
11743
|
+
apply2();
|
|
11744
|
+
};
|
|
11745
|
+
for (const agent of model.agent.list())
|
|
11746
|
+
if (!agent.frozen)
|
|
11747
|
+
ask(`agent:${agent.id}`, agent.model, () => model.agent.setModel(agent.id, pick.id));
|
|
11748
|
+
ask("settings", model.settings.get().model, () => {
|
|
11749
|
+
switched.set(model, { to: pick });
|
|
11750
|
+
model.settings.update({ model: pick.id });
|
|
11751
|
+
});
|
|
11752
|
+
}
|
|
11753
|
+
function modelSwitch(model) {
|
|
11754
|
+
return switched.get(model);
|
|
11755
|
+
}
|
|
11756
|
+
function forgetSwitch(model) {
|
|
11757
|
+
switched.delete(model);
|
|
11758
|
+
}
|
|
11759
|
+
|
|
11172
11760
|
// node_modules/@adobe/spectrum-wc-icons/dist/Cloud.js
|
|
11173
|
-
function
|
|
11761
|
+
function e82() {
|
|
11174
11762
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M15.407 17H3.717a3.456 3.456 0 0 1-3.45-3.452 3.45 3.45 0 0 1 2.323-3.25 4 4 0 0 1-.065-.702c0-2.18 1.81-3.953 4.034-3.953q.42 0 .831.087c.637-1.958 2.476-3.346 4.589-3.346a4.85 4.85 0 0 1 4.844 4.844q0 .659-.187 1.298a4.32 4.32 0 0 1 3.103 4.142A4.337 4.337 0 0 1 15.407 17M6.559 7.143c-1.397 0-2.534 1.1-2.534 2.453q.001.5.206.965a.75.75 0 0 1-.637 1.051 1.95 1.95 0 0 0-1.828 1.936c0 1.076.876 1.952 1.952 1.952h11.689a2.835 2.835 0 0 0 2.832-2.832 2.826 2.826 0 0 0-2.682-2.814.75.75 0 0 1-.625-1.095c.26-.5.39-1.015.39-1.531 0-1.844-1.5-3.344-3.344-3.344-1.662 0-3.08 1.252-3.297 2.912a.75.75 0 0 1-1.054.585 2.6 2.6 0 0 0-1.068-.238"/></svg>';
|
|
11175
11763
|
}
|
|
11176
11764
|
|
|
11177
11765
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-cloud.js
|
|
11178
|
-
var
|
|
11766
|
+
var o54 = class extends a10 {
|
|
11179
11767
|
static get styles() {
|
|
11180
11768
|
return [t40];
|
|
11181
11769
|
}
|
|
11182
11770
|
render() {
|
|
11183
11771
|
return b`
|
|
11184
|
-
<span class="swc-Icon">${o16(
|
|
11772
|
+
<span class="swc-Icon">${o16(e82())}</span>
|
|
11185
11773
|
`;
|
|
11186
11774
|
}
|
|
11187
11775
|
};
|
|
11188
|
-
e25("swc-icon-cloud",
|
|
11776
|
+
e25("swc-icon-cloud", o54);
|
|
11189
11777
|
|
|
11190
11778
|
// node_modules/@adobe/spectrum-wc-icons/dist/CloudStateError.js
|
|
11191
|
-
function
|
|
11779
|
+
function e83() {
|
|
11192
11780
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M15.5 9.021a4.5 4.5 0 1 0 0 9c2.485 0 4.48-2.015 4.48-4.5s-1.995-4.5-4.48-4.5m.95 6.895c0 .472-.425.855-.95.855s-.95-.383-.95-.855v-.289c0-.472.425-.856.95-.856s.95.384.95.856zm-.075-2.495c0 .414-.392.75-.875.75s-.875-.336-.875-.75v-2.65c0-.414.392-.75.875-.75s.875.336.875.75z"/><path fill="var(--swc-icon-color, currentColor)" d="M9.25 16.998H3.718a3.455 3.455 0 0 1-3.452-3.451 3.45 3.45 0 0 1 2.324-3.25 4 4 0 0 1-.065-.703c0-2.18 1.81-3.952 4.034-3.952q.42 0 .83.087c.638-1.958 2.477-3.347 4.59-3.347a4.826 4.826 0 0 1 4.818 4.35.75.75 0 1 1-1.492.15 3.33 3.33 0 0 0-3.326-3c-1.664 0-3.08 1.252-3.297 2.912a.752.752 0 0 1-1.054.586 2.6 2.6 0 0 0-1.07-.238c-1.396 0-2.533 1.1-2.533 2.452q.001.5.206.965a.75.75 0 0 1-.637 1.051 1.95 1.95 0 0 0-1.828 1.937c0 1.076.876 1.951 1.952 1.951H9.25a.75.75 0 0 1 0 1.5"/></svg>';
|
|
11193
11781
|
}
|
|
11194
11782
|
|
|
11195
11783
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-cloud-state-error.js
|
|
11196
|
-
var
|
|
11784
|
+
var o55 = class extends a10 {
|
|
11197
11785
|
static get styles() {
|
|
11198
11786
|
return [t40];
|
|
11199
11787
|
}
|
|
11200
11788
|
render() {
|
|
11201
11789
|
return b`
|
|
11202
|
-
<span class="swc-Icon">${o16(
|
|
11790
|
+
<span class="swc-Icon">${o16(e83())}</span>
|
|
11203
11791
|
`;
|
|
11204
11792
|
}
|
|
11205
11793
|
};
|
|
11206
|
-
e25("swc-icon-cloud-state-error",
|
|
11794
|
+
e25("swc-icon-cloud-state-error", o55);
|
|
11207
11795
|
|
|
11208
11796
|
// node_modules/@adobe/spectrum-wc-icons/dist/CloudStateOnline.js
|
|
11209
|
-
function
|
|
11797
|
+
function e84() {
|
|
11210
11798
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M9.25 17.002H3.718A3.455 3.455 0 0 1 .266 13.55 3.45 3.45 0 0 1 2.59 10.3a4 4 0 0 1-.065-.703c0-2.18 1.81-3.952 4.034-3.952q.42 0 .83.087c.638-1.959 2.477-3.347 4.59-3.347a4.85 4.85 0 0 1 4.843 4.844q0 .464-.093.92a.745.745 0 0 1-.885.583.75.75 0 0 1-.584-.884q.061-.307.062-.619c0-1.844-1.5-3.344-3.343-3.344-1.664 0-3.08 1.252-3.297 2.912a.752.752 0 0 1-1.054.586 2.6 2.6 0 0 0-1.07-.238c-1.396 0-2.533 1.1-2.533 2.452q.001.5.206.965a.75.75 0 0 1-.637 1.051 1.95 1.95 0 0 0-1.828 1.937c0 1.076.876 1.951 1.952 1.951H9.25a.75.75 0 0 1 0 1.5"/><path fill="var(--swc-icon-color, currentColor)" d="M18.503 13.434a.75.75 0 0 1-.53-.22 4.88 4.88 0 0 0-3.472-1.442h-.006a4.87 4.87 0 0 0-3.462 1.433.75.75 0 1 1-1.06-1.06 6.35 6.35 0 0 1 4.522-1.873h.007c1.712.002 3.32.67 4.531 1.881a.75.75 0 0 1-.53 1.28"/><path fill="var(--swc-icon-color, currentColor)" d="M16.384 15.544a.75.75 0 0 1-.53-.22 1.916 1.916 0 0 0-2.706-.004.75.75 0 1 1-1.06-1.06 3.4 3.4 0 0 1 2.41-.998h.003a3.4 3.4 0 0 1 2.413 1.002.75.75 0 0 1-.53 1.28"/><path fill="var(--swc-icon-color, currentColor)" d="M15.136 17.64a.897.897 0 0 1-1.27.001.9.9 0 1 1 1.27-.001" data-name="Path 1027855"/></svg>';
|
|
11211
11799
|
}
|
|
11212
11800
|
|
|
11213
11801
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-cloud-state-online.js
|
|
11214
|
-
var
|
|
11802
|
+
var o56 = class extends a10 {
|
|
11215
11803
|
static get styles() {
|
|
11216
11804
|
return [t40];
|
|
11217
11805
|
}
|
|
11218
11806
|
render() {
|
|
11219
11807
|
return b`
|
|
11220
|
-
<span class="swc-Icon">${o16(
|
|
11808
|
+
<span class="swc-Icon">${o16(e84())}</span>
|
|
11221
11809
|
`;
|
|
11222
11810
|
}
|
|
11223
11811
|
};
|
|
11224
|
-
e25("swc-icon-cloud-state-online",
|
|
11812
|
+
e25("swc-icon-cloud-state-online", o56);
|
|
11225
11813
|
|
|
11226
11814
|
// node_modules/@adobe/spectrum-wc-icons/dist/CloudStateSlowConnection.js
|
|
11227
|
-
function
|
|
11815
|
+
function e85() {
|
|
11228
11816
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M8.946 16.998H3.718a3.455 3.455 0 0 1-3.452-3.451 3.45 3.45 0 0 1 2.324-3.25 4 4 0 0 1-.065-.703c0-2.18 1.81-3.952 4.034-3.952q.42 0 .83.087c.638-1.958 2.477-3.347 4.59-3.347a4.826 4.826 0 0 1 4.818 4.35.75.75 0 1 1-1.492.15 3.33 3.33 0 0 0-3.326-3c-1.664 0-3.08 1.252-3.297 2.912a.752.752 0 0 1-1.054.586 2.6 2.6 0 0 0-1.07-.238c-1.396 0-2.533 1.1-2.533 2.452q.001.5.206.965a.75.75 0 0 1-.637 1.051 1.95 1.95 0 0 0-1.828 1.937c0 1.076.876 1.951 1.952 1.951h5.228a.75.75 0 0 1 0 1.5M19 16.271v-7a.75.75 0 0 0-1.5 0v7a.75.75 0 0 0 1.5 0m-3 0v-5a.75.75 0 0 0-1.5 0v5a.75.75 0 0 0 1.5 0"/><path fill="var(--swc-icon-color, currentColor)" d="M13 16.271v-3a.75.75 0 0 0-1.5 0v3a.75.75 0 0 0 1.5 0"/></svg>';
|
|
11229
11817
|
}
|
|
11230
11818
|
|
|
11231
11819
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-cloud-state-slow-connection.js
|
|
11232
|
-
var
|
|
11820
|
+
var o57 = class extends a10 {
|
|
11233
11821
|
static get styles() {
|
|
11234
11822
|
return [t40];
|
|
11235
11823
|
}
|
|
11236
11824
|
render() {
|
|
11237
11825
|
return b`
|
|
11238
11826
|
<span class="swc-Icon">
|
|
11239
|
-
${o16(
|
|
11827
|
+
${o16(e85())}
|
|
11240
11828
|
</span>
|
|
11241
11829
|
`;
|
|
11242
11830
|
}
|
|
11243
11831
|
};
|
|
11244
|
-
e25("swc-icon-cloud-state-slow-connection",
|
|
11245
|
-
|
|
11246
|
-
// node_modules/@adobe/spectrum-wc-icons/dist/Copy.js
|
|
11247
|
-
function e84() {
|
|
11248
|
-
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M11.75 18h-7.5C3.01 18 2 16.99 2 15.75v-7.5C2 7.01 3.01 6 4.25 6a.75.75 0 0 1 0 1.5.75.75 0 0 0-.75.75v7.5c0 .413.337.75.75.75h7.5c.413 0 .75-.337.75-.75a.75.75 0 0 1 1.5 0c0 1.24-1.01 2.25-2.25 2.25m-5-13A.75.75 0 0 1 6 4.25C6 3.01 7.01 2 8.25 2a.75.75 0 0 1 0 1.5.75.75 0 0 0-.75.75.75.75 0 0 1-.75.75M13 3.5h-2A.75.75 0 0 1 11 2h2a.75.75 0 0 1 0 1.5"/><path fill="var(--swc-icon-color, currentColor)" d="M13 14h-2a.75.75 0 0 1 0-1.5h2a.75.75 0 0 1 0 1.5m2.75 0a.75.75 0 0 1 0-1.5c.413 0 .75-.337.75-.75a.75.75 0 0 1 1.5 0c0 1.24-1.01 2.25-2.25 2.25m1.5-9a.75.75 0 0 1-.75-.75.75.75 0 0 0-.75-.75.75.75 0 0 1 0-1.5C16.99 2 18 3.01 18 4.25a.75.75 0 0 1-.75.75m0 4.75A.75.75 0 0 1 16.5 9V7A.75.75 0 0 1 18 7v2a.75.75 0 0 1-.75.75m-10.5 0A.75.75 0 0 1 6 9V7a.75.75 0 0 1 1.5 0v2a.75.75 0 0 1-.75.75M8.25 14C7.01 14 6 12.99 6 11.75a.75.75 0 0 1 1.5 0c0 .413.337.75.75.75a.75.75 0 0 1 0 1.5"/></svg>';
|
|
11249
|
-
}
|
|
11250
|
-
|
|
11251
|
-
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-copy.js
|
|
11252
|
-
var o56 = class extends a10 {
|
|
11253
|
-
static get styles() {
|
|
11254
|
-
return [t40];
|
|
11255
|
-
}
|
|
11256
|
-
render() {
|
|
11257
|
-
return b`
|
|
11258
|
-
<span class="swc-Icon">${o16(e84())}</span>
|
|
11259
|
-
`;
|
|
11260
|
-
}
|
|
11261
|
-
};
|
|
11262
|
-
e25("swc-icon-copy", o56);
|
|
11832
|
+
e25("swc-icon-cloud-state-slow-connection", o57);
|
|
11263
11833
|
|
|
11264
11834
|
// node_modules/@adobe/spectrum-wc-icons/dist/InfoCircle.js
|
|
11265
|
-
function
|
|
11835
|
+
function e86() {
|
|
11266
11836
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M10 18.75c-4.825 0-8.75-3.925-8.75-8.75S5.175 1.25 10 1.25s8.75 3.925 8.75 8.75-3.925 8.75-8.75 8.75m0-16c-3.998 0-7.25 3.252-7.25 7.25s3.252 7.25 7.25 7.25 7.25-3.252 7.25-7.25S13.998 2.75 10 2.75"/><path fill="var(--swc-icon-color, currentColor)" d="M10 5.26a.9.9 0 0 1 .627.229c.33.365.33.921 0 1.286a.87.87 0 0 1-.626.235.85.85 0 0 1-.633-.248.86.86 0 0 1-.242-.627.88.88 0 0 1 .228-.64A.86.86 0 0 1 10 5.26m0 9.803a.75.75 0 0 1-.75-.75V9.478a.75.75 0 0 1 1.5 0v4.835a.75.75 0 0 1-.75.75"/></svg>';
|
|
11267
11837
|
}
|
|
11268
11838
|
|
|
11269
11839
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-info-circle.js
|
|
11270
|
-
var
|
|
11840
|
+
var o58 = class extends a10 {
|
|
11271
11841
|
static get styles() {
|
|
11272
11842
|
return [t40];
|
|
11273
11843
|
}
|
|
11274
11844
|
render() {
|
|
11275
11845
|
return b`
|
|
11276
|
-
<span class="swc-Icon">${o16(
|
|
11846
|
+
<span class="swc-Icon">${o16(e86())}</span>
|
|
11277
11847
|
`;
|
|
11278
11848
|
}
|
|
11279
11849
|
};
|
|
11280
|
-
e25("swc-icon-info-circle",
|
|
11850
|
+
e25("swc-icon-info-circle", o58);
|
|
11281
11851
|
|
|
11282
11852
|
// node_modules/@adobe/spectrum-wc-icons/dist/Visibility.js
|
|
11283
|
-
function
|
|
11853
|
+
function e87() {
|
|
11284
11854
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M10.034 16.662C5.143 16.662.75 12.273.75 10.2c0-1.685 2.598-4.55 5.347-5.898A8.95 8.95 0 0 1 9.99 3.35c5.158 0 9.26 4.919 9.26 6.85 0 2.072-4.36 6.46-9.216 6.46M10 4.85a7.44 7.44 0 0 0-3.24.797C4.155 6.923 2.25 9.397 2.25 10.2c0 1.144 3.68 4.96 7.784 4.96 4.069 0 7.716-3.816 7.716-4.96 0-1.05-3.481-5.35-7.75-5.35m-3.569.124h.01z"/><path fill="var(--swc-icon-color, currentColor)" d="M9.83 7.644c.222-.637-.474-1.26-1.1-1.01a3.5 3.5 0 0 0-1.283.88 3.565 3.565 0 0 0 4.697 5.315 3.54 3.54 0 0 0 1.317-1.833c.209-.684-.458-1.25-1.119-.976A1.904 1.904 0 0 1 9.85 8.943a1.88 1.88 0 0 1-.02-1.3"/></svg>';
|
|
11285
11855
|
}
|
|
11286
11856
|
|
|
11287
11857
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-visibility.js
|
|
11288
|
-
var
|
|
11858
|
+
var o59 = class extends a10 {
|
|
11289
11859
|
static get styles() {
|
|
11290
11860
|
return [t40];
|
|
11291
11861
|
}
|
|
11292
11862
|
render() {
|
|
11293
11863
|
return b`
|
|
11294
|
-
<span class="swc-Icon">${o16(
|
|
11864
|
+
<span class="swc-Icon">${o16(e87())}</span>
|
|
11295
11865
|
`;
|
|
11296
11866
|
}
|
|
11297
11867
|
};
|
|
11298
|
-
e25("swc-icon-visibility",
|
|
11868
|
+
e25("swc-icon-visibility", o59);
|
|
11299
11869
|
|
|
11300
11870
|
// node_modules/@adobe/spectrum-wc-icons/dist/VisibilityOff.js
|
|
11301
|
-
function
|
|
11871
|
+
function e88() {
|
|
11302
11872
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M9.966 16.683C5.11 16.683.75 12.294.75 10.222c0-.92.864-2.36 2.201-3.668A.75.75 0 1 1 4 7.626c-1.31 1.281-1.75 2.32-1.75 2.596 0 1.144 3.647 4.96 7.716 4.96a7.3 7.3 0 0 0 1.863-.251.756.756 0 0 1 .917.534c.106.4-.134.81-.534.917-.756.2-1.512.3-2.246.3m6.638-2.839a.75.75 0 0 1-.506-1.304c1.14-1.042 1.652-1.982 1.652-2.317 0-.802-1.904-3.277-4.51-4.552a7.4 7.4 0 0 0-3.25-.798 7 7 0 0 0-1.905.28.75.75 0 1 1-.416-1.441A8.4 8.4 0 0 1 10 3.371a8.95 8.95 0 0 1 3.907.954c2.742 1.343 5.343 4.21 5.343 5.896 0 .919-.8 2.199-2.14 3.424a.75.75 0 0 1-.506.197"/><path fill="var(--swc-icon-color, currentColor)" d="m18.78 17.741-5.778-5.778c.204-.296.358-.615.46-.946.208-.684-.46-1.25-1.12-.976-.495.206-.946.14-1.18.081L9.788 8.75a1.9 1.9 0 0 1 .04-1.085c.223-.637-.473-1.26-1.1-1.01a3.5 3.5 0 0 0-.677.358L2.28 1.241a.75.75 0 1 0-1.06 1.06l16.5 16.5a.747.747 0 0 0 1.06 0 .75.75 0 0 0 0-1.06M8.205 12.998a3.53 3.53 0 0 0 2.319.484L6.542 9.501a3.56 3.56 0 0 0 1.663 3.497"/></svg>';
|
|
11303
11873
|
}
|
|
11304
11874
|
|
|
11305
11875
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-visibility-off.js
|
|
11306
|
-
var
|
|
11876
|
+
var o60 = class extends a10 {
|
|
11307
11877
|
static get styles() {
|
|
11308
11878
|
return [t40];
|
|
11309
11879
|
}
|
|
11310
11880
|
render() {
|
|
11311
11881
|
return b`
|
|
11312
|
-
<span class="swc-Icon">${o16(
|
|
11882
|
+
<span class="swc-Icon">${o16(e88())}</span>
|
|
11313
11883
|
`;
|
|
11314
11884
|
}
|
|
11315
11885
|
};
|
|
11316
|
-
e25("swc-icon-visibility-off",
|
|
11886
|
+
e25("swc-icon-visibility-off", o60);
|
|
11317
11887
|
|
|
11318
11888
|
// node_modules/@adobe/spectrum-wc/dist/link.css
|
|
11319
11889
|
var link_default = '/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/**\n * Standalone link presentation for native `<a href>` elements.\n *\n * Default anchor appearance inside `.swc-Typography--prose` and\n * `.swc-Typography--links` ships with `typography.css` (generated). Import this\n * stylesheet when authors need explicit BEM modifiers on anchors.\n *\n */\n\n.swc-Link {\n inline-size: -moz-fit-content;\n inline-size: fit-content;\n font-family: var(--swc-sans-font-family-stack);\n font-size: var(--swc-font-size-100);\n font-style: normal;\n font-weight: 400;\n line-height: 1.30;\n color: var(--swc-link-text-color-default, var(--swc-accent-color-900));\n -webkit-text-decoration: underline;\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-underline-offset: 1px;\n transition: color 130ms ease-in-out;\n\n &:hover {\n color: var(--swc-link-text-color-hover, var(--swc-accent-color-1000));\n }\n\n &:active {\n color: var(--swc-link-text-color-down, var(--swc-accent-color-1000));\n }\n\n &:focus-visible {\n color: var(--swc-link-text-color-focus, var(--swc-accent-color-1000));\n border-radius: 4px;\n outline: 2px solid var(--swc-link-focus-indicator-color, var(--swc-blue-800));\n outline-offset: 2px;\n }\n\n &:lang(ja),\n &:lang(zh),\n &:lang(ko) {\n line-height: 1.50;\n }\n}\n\n.swc-Link--standalone {\n font-weight: 500;\n}\n\n.swc-Link--secondary {\n --swc-link-text-color-default: var(--swc-gray-800);\n --swc-link-text-color-hover: var(--swc-gray-900);\n --swc-link-text-color-down: var(--swc-gray-900);\n --swc-link-text-color-focus: var(--swc-gray-900);\n}\n\n.swc-Link--staticWhite {\n --swc-link-text-color-default: var(--swc-white);\n --swc-link-text-color-hover: var(--swc-white);\n --swc-link-text-color-down: var(--swc-white);\n --swc-link-text-color-focus: var(--swc-white);\n --swc-link-focus-indicator-color: var(--swc-white);\n}\n\n.swc-Link--staticBlack {\n --swc-link-text-color-default: var(--swc-black);\n --swc-link-text-color-hover: var(--swc-black);\n --swc-link-text-color-down: var(--swc-black);\n --swc-link-text-color-focus: var(--swc-black);\n --swc-link-focus-indicator-color: var(--swc-black);\n}\n\n.swc-Link--quiet.swc-Link--standalone {\n -webkit-text-decoration: none;\n text-decoration: none;\n}\n\n.swc-Link--quiet.swc-Link--standalone:hover {\n -webkit-text-decoration: underline;\n text-decoration: underline;\n}\n';
|
|
@@ -11986,76 +12556,6 @@ function qrCode(text2, label) {
|
|
|
11986
12556
|
return b`<svg class="qr" viewBox="0 0 ${size4} ${size4}" role="img" aria-label=${label} shape-rendering="crispEdges" data-qr><rect width=${size4} height=${size4} fill="#fff"></rect><path d=${path} fill="#000"></path></svg>`;
|
|
11987
12557
|
}
|
|
11988
12558
|
|
|
11989
|
-
// src/app/reach.ts
|
|
11990
|
-
var command = "curl -fsSL https://get.sliccy.ai/slicc | sh";
|
|
11991
|
-
var startCommand = "slicc";
|
|
11992
|
-
var nodeCommand = "npx sliccy@next";
|
|
11993
|
-
var reachStyles = i`
|
|
11994
|
-
.command {
|
|
11995
|
-
display: flex;
|
|
11996
|
-
align-items: center;
|
|
11997
|
-
gap: var(--swc-spacing-100);
|
|
11998
|
-
padding: var(--swc-spacing-75) var(--swc-spacing-75) var(--swc-spacing-75) var(--swc-spacing-200);
|
|
11999
|
-
border-radius: var(--swc-corner-radius-medium-default);
|
|
12000
|
-
background: var(--swc-background-layer-1-color);
|
|
12001
|
-
}
|
|
12002
|
-
code {
|
|
12003
|
-
flex: 1;
|
|
12004
|
-
min-width: 0;
|
|
12005
|
-
overflow-wrap: break-word;
|
|
12006
|
-
word-break: normal;
|
|
12007
|
-
font-family: var(--swc-code-font-family-stack);
|
|
12008
|
-
font-size: var(--swc-font-size-75);
|
|
12009
|
-
color: var(--swc-code-color);
|
|
12010
|
-
user-select: all;
|
|
12011
|
-
}
|
|
12012
|
-
.commands {
|
|
12013
|
-
display: grid;
|
|
12014
|
-
gap: var(--swc-spacing-100);
|
|
12015
|
-
}
|
|
12016
|
-
.commands p {
|
|
12017
|
-
margin: 0;
|
|
12018
|
-
font-size: var(--swc-font-size-75);
|
|
12019
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
12020
|
-
}
|
|
12021
|
-
`;
|
|
12022
|
-
function block(text2, copied, copy, first2 = false) {
|
|
12023
|
-
const done2 = copied === text2;
|
|
12024
|
-
return b`<div class="command" data-command=${text2}>
|
|
12025
|
-
<code>${breakable(text2)}</code>
|
|
12026
|
-
<swc-action-button size="s" quiet data-action=${first2 ? "copy-command" : A} accessible-label=${done2 ? "Copied" : `Copy ${text2}`} @click=${() => copy(text2)}>
|
|
12027
|
-
<swc-icon-copy slot="icon"></swc-icon-copy>${done2 ? "Copied" : "Copy"}
|
|
12028
|
-
</swc-action-button>
|
|
12029
|
-
</div>`;
|
|
12030
|
-
}
|
|
12031
|
-
function breakable(text2) {
|
|
12032
|
-
return text2.split("/").map(
|
|
12033
|
-
(part2, index, parts2) => b`${part2}${index < parts2.length - 1 ? b`/<wbr />` : A}`
|
|
12034
|
-
);
|
|
12035
|
-
}
|
|
12036
|
-
function reach({ intro, extensionUrl, copied, uncopied, copy }) {
|
|
12037
|
-
return b`<p>${intro}</p>
|
|
12038
|
-
${extensionUrl ? b`<p><a class="swc-Link" href=${extensionUrl} target="_blank" rel="noopener noreferrer" data-action="install-extension">Install the Chrome extension</a></p>` : A}
|
|
12039
|
-
<p>To run slicc, enter this in a terminal:</p>
|
|
12040
|
-
<div class="commands">
|
|
12041
|
-
${block(command, copied, copy, true)}
|
|
12042
|
-
${block(startCommand, copied, copy)}
|
|
12043
|
-
</div>
|
|
12044
|
-
<div class="commands" data-commands="node">
|
|
12045
|
-
<p>With Node:</p>
|
|
12046
|
-
${block(nodeCommand, copied, copy)}
|
|
12047
|
-
</div>
|
|
12048
|
-
${uncopied ? b`<div class="error" role="alert" data-error="copy"><swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle><span>Couldn’t copy. Select the command and copy it.</span></div>` : A}`;
|
|
12049
|
-
}
|
|
12050
|
-
async function copyText(text2) {
|
|
12051
|
-
try {
|
|
12052
|
-
await globalThis.navigator.clipboard.writeText(text2);
|
|
12053
|
-
return true;
|
|
12054
|
-
} catch {
|
|
12055
|
-
return false;
|
|
12056
|
-
}
|
|
12057
|
-
}
|
|
12058
|
-
|
|
12059
12559
|
// src/app/tray.ts
|
|
12060
12560
|
var connectionVariant = {
|
|
12061
12561
|
live: "positive",
|
|
@@ -13296,7 +13796,7 @@ var SliccNetwork = class extends ModelElement {
|
|
|
13296
13796
|
};
|
|
13297
13797
|
|
|
13298
13798
|
// src/app/panels.ts
|
|
13299
|
-
var
|
|
13799
|
+
var surfaces2 = [
|
|
13300
13800
|
{
|
|
13301
13801
|
id: "agents",
|
|
13302
13802
|
title: "Agents",
|
|
@@ -13410,7 +13910,7 @@ function screenClass(width) {
|
|
|
13410
13910
|
if (width < 1200) return "tablet";
|
|
13411
13911
|
return "desktop";
|
|
13412
13912
|
}
|
|
13413
|
-
function surface(id, items =
|
|
13913
|
+
function surface(id, items = surfaces2) {
|
|
13414
13914
|
return items.find((candidate) => candidate.id === id);
|
|
13415
13915
|
}
|
|
13416
13916
|
function create(tag3, model, params = {}) {
|
|
@@ -13557,7 +14057,7 @@ function openTerminal(dock, info, screen) {
|
|
|
13557
14057
|
}
|
|
13558
14058
|
return id;
|
|
13559
14059
|
}
|
|
13560
|
-
function defaultLayout(dock, screen, agent, items =
|
|
14060
|
+
function defaultLayout(dock, screen, agent, items = surfaces2, terminals = []) {
|
|
13561
14061
|
dock.clear();
|
|
13562
14062
|
const order = ["center", "left", "right"];
|
|
13563
14063
|
for (const side of order) {
|
|
@@ -14488,11 +14988,11 @@ var TerminalPanels = class {
|
|
|
14488
14988
|
}
|
|
14489
14989
|
#ask(info, trigger2) {
|
|
14490
14990
|
const body4 = "The shell and anything running in it stop. You can\u2019t undo this.";
|
|
14491
|
-
const
|
|
14991
|
+
const asked2 = this.#asking.then(
|
|
14492
14992
|
() => confirm({ title: `Close ${info.title}?`, body: body4, action: "Close", trigger: trigger2 })
|
|
14493
14993
|
);
|
|
14494
|
-
this.#asking =
|
|
14495
|
-
return
|
|
14994
|
+
this.#asking = asked2;
|
|
14995
|
+
return asked2;
|
|
14496
14996
|
}
|
|
14497
14997
|
activated(id) {
|
|
14498
14998
|
if (terminalOf(id) !== null) this.#recent = id;
|
|
@@ -17206,7 +17706,7 @@ ${swc_default}`));
|
|
|
17206
17706
|
var t47 = i`:host{display:block}*{box-sizing:border-box}.swc-Divider{--_swc-divider-thickness: var(--swc-divider-thickness, 2px);inline-size:100%;block-size:var(--_swc-divider-thickness);background-color:var(--swc-divider-background-color, var(--swc-gray-200));border-radius:var(--_swc-divider-thickness)}:host([size=\"s\"]){--swc-divider-thickness: 1px}:host([size=\"l\"]){--swc-divider-thickness: 4px;--swc-divider-background-color: var(--swc-gray-800)}.swc-Divider:not(.swc-Divider--vertical){min-inline-size:min(100%,200px)}:host([vertical]){align-self:stretch}.swc-Divider--vertical{inline-size:var(--_swc-divider-thickness);block-size:100%;min-block-size:min(100%,200px)}.swc-Divider--staticWhite{--swc-divider-background-color: rgba(255, 255, 255, .14)}.swc-Divider--staticWhite:where(.swc-Divider--sizeL){--swc-divider-background-color: rgba(255, 255, 255, .85)}.swc-Divider--staticBlack{--swc-divider-background-color: rgba(0, 0, 0, .12)}.swc-Divider--staticBlack:where(.swc-Divider--sizeL){--swc-divider-background-color: rgba(0, 0, 0, .84)}@media(forced-colors:active){.swc-Divider{--swc-divider-background-color: CanvasText}}`;
|
|
17207
17707
|
|
|
17208
17708
|
// node_modules/@adobe/spectrum-wc-core/dist/components/divider/Divider.types.js
|
|
17209
|
-
var
|
|
17709
|
+
var e89 = [
|
|
17210
17710
|
"s",
|
|
17211
17711
|
"m",
|
|
17212
17712
|
"l"
|
|
@@ -17215,7 +17715,7 @@ var t48 = ["white", "black"];
|
|
|
17215
17715
|
|
|
17216
17716
|
// node_modules/@adobe/spectrum-wc-core/dist/components/divider/Divider.base.js
|
|
17217
17717
|
var s10;
|
|
17218
|
-
var c18 = class extends i12(i9, { validSizes:
|
|
17718
|
+
var c18 = class extends i12(i9, { validSizes: e89 }) {
|
|
17219
17719
|
constructor(...e120) {
|
|
17220
17720
|
super(...e120), this.vertical = false;
|
|
17221
17721
|
}
|
|
@@ -17274,7 +17774,7 @@ e25("swc-divider", a13);
|
|
|
17274
17774
|
var t49 = i`:host([indeterminate]) .swc-LinearProgress-fill{inline-size:100%;min-inline-size:0;transform-origin:left;transition:none;animation:indeterminate-loop-ltr 1s cubic-bezier(.45,0,.4,1) infinite;will-change:transform;&:dir(rtl){animation-name:indeterminate-loop-rtl}}@keyframes indeterminate-loop-ltr{0%{transform:translate(-70%) scaleX(.7)}to{transform:translate(100%) scaleX(.7)}}@keyframes indeterminate-loop-rtl{0%{transform:translate(100%) scaleX(.7)}to{transform:translate(-70%) scaleX(.7)}}@media(prefers-reduced-motion:reduce){:host([indeterminate]) .swc-LinearProgress-fill{animation-duration:15s;animation-timing-function:linear}}`;
|
|
17275
17775
|
|
|
17276
17776
|
// node_modules/@adobe/spectrum-wc-core/dist/components/progress-bar/ProgressBar.base.js
|
|
17277
|
-
var
|
|
17777
|
+
var o61 = class extends m3(i12(i9, {
|
|
17278
17778
|
validSizes: s6,
|
|
17279
17779
|
defaultSize: "m"
|
|
17280
17780
|
})) {
|
|
@@ -17285,10 +17785,10 @@ var o60 = class extends m3(i12(i9, {
|
|
|
17285
17785
|
e24([n({
|
|
17286
17786
|
type: Boolean,
|
|
17287
17787
|
reflect: true
|
|
17288
|
-
})],
|
|
17788
|
+
})], o61.prototype, "indeterminate", void 0);
|
|
17289
17789
|
|
|
17290
17790
|
// node_modules/@adobe/spectrum-wc/dist/components/progress-bar/ProgressBar.js
|
|
17291
|
-
var
|
|
17791
|
+
var o62 = class extends o61 {
|
|
17292
17792
|
static get styles() {
|
|
17293
17793
|
return [t26, t49];
|
|
17294
17794
|
}
|
|
@@ -17337,7 +17837,7 @@ var o61 = class extends o60 {
|
|
|
17337
17837
|
};
|
|
17338
17838
|
|
|
17339
17839
|
// node_modules/@adobe/spectrum-wc/dist/components/progress-bar/swc-progress-bar.js
|
|
17340
|
-
e25("swc-progress-bar",
|
|
17840
|
+
e25("swc-progress-bar", o62);
|
|
17341
17841
|
|
|
17342
17842
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/conversation-turn/conversation-turn.js
|
|
17343
17843
|
var t50 = i`:host{display:block;inline-size:100%}:host(:focus-visible){outline:none}*,*:before,*:after{box-sizing:border-box}.swc-ConversationTurn{display:flex;inline-size:100%;min-inline-size:0}.swc-ConversationTurn>slot{display:flex;flex-direction:column;gap:8px;inline-size:100%;min-inline-size:0}:host([type=\"user\"]) .swc-ConversationTurn{justify-content:flex-end}:host([type=\"user\"]) .swc-ConversationTurn>slot{align-items:flex-end}:host([type=\"system\"]) .swc-ConversationTurn{justify-content:flex-start}:host([type=\"system\"]) .swc-ConversationTurn>slot{align-items:stretch}:host([type=\"system\"]) ::slotted(*){flex:1 1 100%;min-inline-size:0;max-inline-size:100%}:host(:focus-visible) ::slotted(*){outline:2px solid var(--swc-blue-800);outline-offset:2px}`;
|
|
@@ -17380,7 +17880,7 @@ e12([n({
|
|
|
17380
17880
|
e25("swc-conversation-turn", a14);
|
|
17381
17881
|
|
|
17382
17882
|
// node_modules/@adobe/spectrum-wc/dist/components/ui-icons/ui-icons.types.js
|
|
17383
|
-
var
|
|
17883
|
+
var e90 = [
|
|
17384
17884
|
50,
|
|
17385
17885
|
75,
|
|
17386
17886
|
100,
|
|
@@ -17400,7 +17900,7 @@ function n29(e120) {
|
|
|
17400
17900
|
}
|
|
17401
17901
|
function r26(t90, r40) {
|
|
17402
17902
|
if (!t90) return;
|
|
17403
|
-
let i26 = n29(r40), a23 =
|
|
17903
|
+
let i26 = n29(r40), a23 = e90.filter((e120) => t90[e120] !== void 0);
|
|
17404
17904
|
if (a23.length !== 0) return t90[a23.reduce((e120, t91) => Math.abs(t91 - i26) < Math.abs(e120 - i26) ? t91 : e120)];
|
|
17405
17905
|
}
|
|
17406
17906
|
|
|
@@ -18024,7 +18524,7 @@ e12([n({
|
|
|
18024
18524
|
e25("swc-ui-icon", l16);
|
|
18025
18525
|
|
|
18026
18526
|
// node_modules/@adobe/spectrum-wc/dist/utils/id.js
|
|
18027
|
-
function
|
|
18527
|
+
function e91(e120) {
|
|
18028
18528
|
return `${e120}-${Array.from(crypto.getRandomValues(new Uint8Array(4)), (e121) => `0${(e121 & 255).toString(16)}`.slice(-2)).join("")}`;
|
|
18029
18529
|
}
|
|
18030
18530
|
|
|
@@ -18034,7 +18534,7 @@ var t65 = i`:host{display:block}*,*:before,*:after{box-sizing:border-box}.swc-Me
|
|
|
18034
18534
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/message-sources/MessageSources.js
|
|
18035
18535
|
var c19 = class extends i9 {
|
|
18036
18536
|
constructor(...e120) {
|
|
18037
|
-
super(...e120), this.panelId =
|
|
18537
|
+
super(...e120), this.panelId = e91("swc-sources-panel"), this.toggleId = e91("swc-message-sources-toggle"), this.sourceLinks = [], this.open = false, this.label = "Sources", this.accessibleLabel = "";
|
|
18038
18538
|
}
|
|
18039
18539
|
static get styles() {
|
|
18040
18540
|
return [t65];
|
|
@@ -18169,7 +18669,7 @@ var a15 = () => b`
|
|
|
18169
18669
|
<circle cx="4" cy="4" r="4" fill="currentColor" />
|
|
18170
18670
|
</svg>
|
|
18171
18671
|
`;
|
|
18172
|
-
var
|
|
18672
|
+
var o63 = () => b`
|
|
18173
18673
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
|
|
18174
18674
|
<circle cx="4" cy="4" r="3.5" fill="none" stroke="currentColor" />
|
|
18175
18675
|
</svg>
|
|
@@ -18229,7 +18729,7 @@ var h6 = class extends i9 {
|
|
|
18229
18729
|
return this._readLabel();
|
|
18230
18730
|
}
|
|
18231
18731
|
constructor() {
|
|
18232
|
-
super(), this._toggleId =
|
|
18732
|
+
super(), this._toggleId = e91("swc-response-status-step-toggle"), this._detailId = e91("swc-response-status-step-detail"), this.status = "active", this.open = false, this._hasDescription = false, this._labelText = "", this._overflows = false, this._lastActiveLabel = "", new t2(this, {
|
|
18233
18733
|
config: {
|
|
18234
18734
|
attributes: true,
|
|
18235
18735
|
attributeFilter: ["slot"],
|
|
@@ -18312,7 +18812,7 @@ var h6 = class extends i9 {
|
|
|
18312
18812
|
class="swc-ResponseStatusStep-icon swc-ResponseStatusStep-icon--active"
|
|
18313
18813
|
aria-hidden="true"
|
|
18314
18814
|
>
|
|
18315
|
-
${
|
|
18815
|
+
${o63()}
|
|
18316
18816
|
</swc-icon>
|
|
18317
18817
|
`);
|
|
18318
18818
|
}
|
|
@@ -18386,7 +18886,7 @@ e12([n({
|
|
|
18386
18886
|
e25("swc-response-status-step", h6);
|
|
18387
18887
|
|
|
18388
18888
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/pixel-loader/data.js
|
|
18389
|
-
function
|
|
18889
|
+
function e92(e120, t90) {
|
|
18390
18890
|
let n37 = Array.from(new Set(e120.map(([, e121]) => e121))).sort((e121, t91) => t91 - e121), r40 = Array(e120.length).fill(0), i26 = 0;
|
|
18391
18891
|
return n37.forEach((n38) => {
|
|
18392
18892
|
let a23 = e120.reduce((e121, t91, r41) => (t91[1] === n38 && e121.push(r41), e121), []);
|
|
@@ -18396,7 +18896,7 @@ function e91(e120, t90) {
|
|
|
18396
18896
|
}), r40;
|
|
18397
18897
|
}
|
|
18398
18898
|
function t68(t90, n37 = {}) {
|
|
18399
|
-
let { staggerInterval: r40 = 2, rowOffset: i26 = 0 } = n37, a23 =
|
|
18899
|
+
let { staggerInterval: r40 = 2, rowOffset: i26 = 0 } = n37, a23 = e92(t90, r40);
|
|
18400
18900
|
return t90.map(([e120, t91], n38) => ({
|
|
18401
18901
|
col: e120,
|
|
18402
18902
|
row: t91 + i26,
|
|
@@ -18539,7 +19039,7 @@ var a16 = t68([
|
|
|
18539
19039
|
[5, 0],
|
|
18540
19040
|
[6, 0]
|
|
18541
19041
|
], { staggerInterval: 1 });
|
|
18542
|
-
var
|
|
19042
|
+
var o64 = t68([
|
|
18543
19043
|
[6, 6],
|
|
18544
19044
|
[5, 5],
|
|
18545
19045
|
[1, 4],
|
|
@@ -19094,7 +19594,7 @@ var N = {
|
|
|
19094
19594
|
brush: r30,
|
|
19095
19595
|
eye: i19,
|
|
19096
19596
|
hourglass: a16,
|
|
19097
|
-
mag:
|
|
19597
|
+
mag: o64,
|
|
19098
19598
|
crop: s12,
|
|
19099
19599
|
flower: c21,
|
|
19100
19600
|
image: l17,
|
|
@@ -19185,13 +19685,13 @@ var F = {
|
|
|
19185
19685
|
};
|
|
19186
19686
|
|
|
19187
19687
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/pixel-loader/animation.js
|
|
19188
|
-
var
|
|
19189
|
-
var t69 = (t90) => t90 *
|
|
19688
|
+
var e93 = 30;
|
|
19689
|
+
var t69 = (t90) => t90 * e93 / 1e3;
|
|
19190
19690
|
var n32 = 13;
|
|
19191
19691
|
var r31 = 12;
|
|
19192
19692
|
var i20 = t69(1400);
|
|
19193
19693
|
var a17 = t69(150);
|
|
19194
|
-
var
|
|
19694
|
+
var o65 = t69(150);
|
|
19195
19695
|
var s13 = 0.1;
|
|
19196
19696
|
var c22 = t69(230);
|
|
19197
19697
|
var l18 = 0.3;
|
|
@@ -19218,7 +19718,7 @@ function v8(e120) {
|
|
|
19218
19718
|
return t90 + n32 + i20 + r31;
|
|
19219
19719
|
}
|
|
19220
19720
|
function y4(t90) {
|
|
19221
|
-
return v8(t90) /
|
|
19721
|
+
return v8(t90) / e93 * 1e3;
|
|
19222
19722
|
}
|
|
19223
19723
|
function b8(e120, t90) {
|
|
19224
19724
|
return Math.min(1, Math.max(0, e120 / t90));
|
|
@@ -19263,7 +19763,7 @@ function S2(e120, t90) {
|
|
|
19263
19763
|
}), x3(o91);
|
|
19264
19764
|
}
|
|
19265
19765
|
function C3(e120, t90) {
|
|
19266
|
-
let i26 = e120.stagger + n32 -
|
|
19766
|
+
let i26 = e120.stagger + n32 - o65, u27 = i26 - a17, d22 = _4(e120), f11 = d22 + c22;
|
|
19267
19767
|
return x3([
|
|
19268
19768
|
{
|
|
19269
19769
|
offset: 0,
|
|
@@ -19335,7 +19835,7 @@ function k2(e120) {
|
|
|
19335
19835
|
return t90 + E2 + D3 + t90 + E2;
|
|
19336
19836
|
}
|
|
19337
19837
|
function A4(t90) {
|
|
19338
|
-
return k2(t90) /
|
|
19838
|
+
return k2(t90) / e93 * 1e3;
|
|
19339
19839
|
}
|
|
19340
19840
|
function j2(e120, t90, n37) {
|
|
19341
19841
|
let r40 = O2(t90), i26 = r40.indexOf(e120.row), a23 = (r40.length - 1) * T4 + E2, o91 = i26 * T4, s19 = a23 + D3 + i26 * T4;
|
|
@@ -19374,9 +19874,9 @@ function j2(e120, t90, n37) {
|
|
|
19374
19874
|
var M2 = "0 0px";
|
|
19375
19875
|
|
|
19376
19876
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/pixel-loader/geometry.js
|
|
19377
|
-
var
|
|
19877
|
+
var e94 = /* @__PURE__ */ new WeakMap();
|
|
19378
19878
|
function t70(t90) {
|
|
19379
|
-
let n37 =
|
|
19879
|
+
let n37 = e94.get(t90);
|
|
19380
19880
|
if (n37) return n37;
|
|
19381
19881
|
let r40 = new Set(t90.map((e120) => `${e120.col},${e120.row}`)), i26 = (e120, t91) => r40.has(`${e120},${t91}`), a23 = t90.map(({ col: e120, row: t91 }) => {
|
|
19382
19882
|
let n38 = i26(e120 - 1, t91), r41 = i26(e120 + 1, t91), a24 = i26(e120, t91 - 1), o91 = i26(e120, t91 + 1), s19 = i26(e120 - 1, t91 - 1), c28 = i26(e120 + 1, t91 - 1), l24 = i26(e120 + 1, t91 + 1), u27 = i26(e120 - 1, t91 + 1);
|
|
@@ -19387,7 +19887,7 @@ function t70(t90) {
|
|
|
19387
19887
|
bottomLeft: !n38 && !o91 && !u27
|
|
19388
19888
|
};
|
|
19389
19889
|
});
|
|
19390
|
-
return
|
|
19890
|
+
return e94.set(t90, a23), a23;
|
|
19391
19891
|
}
|
|
19392
19892
|
function n33(e120, t90) {
|
|
19393
19893
|
return `${e120.topLeft ? t90 : "0"} ${e120.topRight ? t90 : "0"} ${e120.bottomRight ? t90 : "0"} ${e120.bottomLeft ? t90 : "0"}`;
|
|
@@ -19399,7 +19899,7 @@ var t71 = i`:host{display:inline-block}*,*:before,*:after{box-sizing:border-box}
|
|
|
19399
19899
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/pixel-loader/PixelLoader.js
|
|
19400
19900
|
var w4;
|
|
19401
19901
|
var T5 = "https://spectrum-web-components.adobe.com/?path=/docs/patterns-ai-toolkit-pixel-loader--docs";
|
|
19402
|
-
var E3 = class
|
|
19902
|
+
var E3 = class e95 extends i9 {
|
|
19403
19903
|
constructor(...e120) {
|
|
19404
19904
|
super(...e120), this.icon = "aiLogo", this.paused = false, this.label = "Loading", this._presetIndex = 0, this._animations = [], this._containerCache = null, this._cellElsCache = null, this._ticker = null, this._reducedMotionQuery = null, this._displayedIcon = "aiLogo", this._finishToken = 0, this._handleReducedMotionChange = () => {
|
|
19405
19905
|
this._syncTicker(), this._playCells();
|
|
@@ -19502,8 +20002,8 @@ var E3 = class e94 extends i9 {
|
|
|
19502
20002
|
}
|
|
19503
20003
|
}), this._cancelAnimations();
|
|
19504
20004
|
let i26 = {
|
|
19505
|
-
duration:
|
|
19506
|
-
easing:
|
|
20005
|
+
duration: e95.FINISH_MS,
|
|
20006
|
+
easing: e95.EASE_FINISH,
|
|
19507
20007
|
fill: "forwards"
|
|
19508
20008
|
}, a23 = n37.map((e120) => e120.animate([{
|
|
19509
20009
|
translate: M2,
|
|
@@ -19553,7 +20053,7 @@ var E3 = class e94 extends i9 {
|
|
|
19553
20053
|
style=${o3({
|
|
19554
20054
|
"grid-column": String(t90.col + 1),
|
|
19555
20055
|
"grid-row": String(t90.row + 1),
|
|
19556
|
-
"border-radius": n33(n37,
|
|
20056
|
+
"border-radius": n33(n37, e95.CORNER_RADIUS)
|
|
19557
20057
|
})}
|
|
19558
20058
|
></div>
|
|
19559
20059
|
`;
|
|
@@ -19594,12 +20094,12 @@ var y5 = [
|
|
|
19594
20094
|
"complete",
|
|
19595
20095
|
"stopped"
|
|
19596
20096
|
];
|
|
19597
|
-
var b9 = class
|
|
20097
|
+
var b9 = class e96 extends i9 {
|
|
19598
20098
|
static get styles() {
|
|
19599
20099
|
return [t72];
|
|
19600
20100
|
}
|
|
19601
20101
|
constructor() {
|
|
19602
|
-
super(), this.panelId =
|
|
20102
|
+
super(), this.panelId = e91("swc-response-status-panel"), this._hasSteps = false, this._hasActiveStep = false, this._activeStepLabel = "", this._activeStepEl = null, this._labelSlotText = "", this._displayedLabel = "", this._rollFromLabel = "", this._rollToLabel = "", this._rollActive = false, this._rollEngaged = false, this.status = "active", this.open = false, this.accessibleLabel = "", this.loader = "mega", this._labelRollTimer = null, this._labelRollRaf = null, new t2(this, {
|
|
19603
20103
|
config: {
|
|
19604
20104
|
attributes: true,
|
|
19605
20105
|
attributeFilter: ["status"],
|
|
@@ -19717,10 +20217,10 @@ var b9 = class e95 extends i9 {
|
|
|
19717
20217
|
if (this._labelSlotText) return this._labelSlotText;
|
|
19718
20218
|
let t90 = this._resolvedStatus;
|
|
19719
20219
|
if (t90 === "active") {
|
|
19720
|
-
if (this._showsGenericProcessingLabel) return
|
|
20220
|
+
if (this._showsGenericProcessingLabel) return e96.ACTIVE_STEP_OPEN_LABEL;
|
|
19721
20221
|
if (this._activeStepLabel) return this._activeStepLabel;
|
|
19722
20222
|
}
|
|
19723
|
-
return
|
|
20223
|
+
return e96.DEFAULT_LABELS[t90];
|
|
19724
20224
|
}
|
|
19725
20225
|
_clearLabelRollTimers() {
|
|
19726
20226
|
this._labelRollTimer !== null && (window.clearTimeout(this._labelRollTimer), this._labelRollTimer = null), this._labelRollRaf !== null && (window.cancelAnimationFrame(this._labelRollRaf), this._labelRollRaf = null);
|
|
@@ -19749,7 +20249,7 @@ var b9 = class e95 extends i9 {
|
|
|
19749
20249
|
this._labelRollRaf = window.requestAnimationFrame(() => {
|
|
19750
20250
|
this._labelRollRaf = null, this._rollEngaged = true, this._labelRollTimer = window.setTimeout(() => {
|
|
19751
20251
|
this._labelRollTimer = null, this._displayedLabel = this._rollToLabel, this._rollActive = false, this._rollEngaged = false, this._applyLabelRoll();
|
|
19752
|
-
},
|
|
20252
|
+
}, e96.LABEL_ROLL_DURATION_MS);
|
|
19753
20253
|
});
|
|
19754
20254
|
});
|
|
19755
20255
|
}
|
|
@@ -19757,7 +20257,7 @@ var b9 = class e95 extends i9 {
|
|
|
19757
20257
|
return this._rollActive ? this._rollToLabel : this._displayedLabel || this._getHeaderLabel();
|
|
19758
20258
|
}
|
|
19759
20259
|
_renderLabel() {
|
|
19760
|
-
let t90 =
|
|
20260
|
+
let t90 = e96.STATUS_LABEL_CLASS;
|
|
19761
20261
|
return this._rollActive ? b`
|
|
19762
20262
|
<span class="swc-ResponseStatus-headerTrailViewport">
|
|
19763
20263
|
<span class=${this._rollEngaged ? "swc-ResponseStatus-headerTrailCrossfade swc-ResponseStatus-headerTrailCrossfade--engaged" : "swc-ResponseStatus-headerTrailCrossfade"}>
|
|
@@ -19873,7 +20373,7 @@ var b9 = class e95 extends i9 {
|
|
|
19873
20373
|
`;
|
|
19874
20374
|
}
|
|
19875
20375
|
_renderPanel(t90) {
|
|
19876
|
-
let n37 = t90 && this.open, r40 = this.accessibleLabel ||
|
|
20376
|
+
let n37 = t90 && this.open, r40 = this.accessibleLabel || e96.DEFAULT_ACCESSIBLE_LABEL;
|
|
19877
20377
|
return b`
|
|
19878
20378
|
<div
|
|
19879
20379
|
id=${this.panelId}
|
|
@@ -19938,7 +20438,7 @@ var t73 = i`:host{display:block}*,*:before,*:after{box-sizing:border-box}.swc-Su
|
|
|
19938
20438
|
// node_modules/@adobe/spectrum-wc/dist/patterns/ai-toolkit/suggestion/SuggestionGroup.js
|
|
19939
20439
|
var s14 = class extends i9 {
|
|
19940
20440
|
constructor(...e120) {
|
|
19941
|
-
super(...e120), this.accessibleLabel = "", this._headingId =
|
|
20441
|
+
super(...e120), this.accessibleLabel = "", this._headingId = e91("swc-suggestion-group-heading");
|
|
19942
20442
|
}
|
|
19943
20443
|
static get styles() {
|
|
19944
20444
|
return [t73];
|
|
@@ -20101,29 +20601,11 @@ e12([n({
|
|
|
20101
20601
|
e25("swc-user-message", a18);
|
|
20102
20602
|
|
|
20103
20603
|
// node_modules/@adobe/spectrum-wc-icons/dist/Cancel.js
|
|
20104
|
-
function
|
|
20604
|
+
function e97() {
|
|
20105
20605
|
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M16.201 16.166A8.72 8.72 0 0 0 18.75 10c0-4.825-3.925-8.75-8.75-8.75a8.72 8.72 0 0 0-6.166 2.549l-.021.014c-.011.007-.008.015-.014.021A8.72 8.72 0 0 0 1.25 10c0 4.825 3.925 8.75 8.75 8.75a8.72 8.72 0 0 0 6.166-2.549c.006-.006.015-.008.021-.014s.008-.015.014-.021M17.25 10c0 1.73-.61 3.317-1.625 4.565L5.435 4.375A7.2 7.2 0 0 1 10 2.75c3.998 0 7.25 3.252 7.25 7.25m-14.5 0c0-1.73.61-3.317 1.625-4.565l10.19 10.19A7.2 7.2 0 0 1 10 17.25c-3.998 0-7.25-3.252-7.25-7.25"/></svg>';
|
|
20106
20606
|
}
|
|
20107
20607
|
|
|
20108
20608
|
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-cancel.js
|
|
20109
|
-
var o65 = class extends a10 {
|
|
20110
|
-
static get styles() {
|
|
20111
|
-
return [t40];
|
|
20112
|
-
}
|
|
20113
|
-
render() {
|
|
20114
|
-
return b`
|
|
20115
|
-
<span class="swc-Icon">${o16(e96())}</span>
|
|
20116
|
-
`;
|
|
20117
|
-
}
|
|
20118
|
-
};
|
|
20119
|
-
e25("swc-icon-cancel", o65);
|
|
20120
|
-
|
|
20121
|
-
// node_modules/@adobe/spectrum-wc-icons/dist/ChevronRight.js
|
|
20122
|
-
function e97() {
|
|
20123
|
-
return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="var(--swc-icon-color, currentColor)" d="M7.75 16.465a.748.748 0 0 1-.54-1.27l4.999-5.197-4.986-5.184a.75.75 0 0 1 .02-1.06.75.75 0 0 1 1.06.021L13.79 9.48c.28.29.28.749 0 1.039l-5.5 5.716a.75.75 0 0 1-.54.23"/></svg>';
|
|
20124
|
-
}
|
|
20125
|
-
|
|
20126
|
-
// node_modules/@adobe/spectrum-wc-icons/dist/swc-icon-chevron-right.js
|
|
20127
20609
|
var o66 = class extends a10 {
|
|
20128
20610
|
static get styles() {
|
|
20129
20611
|
return [t40];
|
|
@@ -20134,7 +20616,7 @@ var o66 = class extends a10 {
|
|
|
20134
20616
|
`;
|
|
20135
20617
|
}
|
|
20136
20618
|
};
|
|
20137
|
-
e25("swc-icon-
|
|
20619
|
+
e25("swc-icon-cancel", o66);
|
|
20138
20620
|
|
|
20139
20621
|
// node_modules/@adobe/spectrum-wc-icons/dist/File.js
|
|
20140
20622
|
function e98() {
|
|
@@ -20305,11 +20787,11 @@ function run(lines, start, test) {
|
|
|
20305
20787
|
return end;
|
|
20306
20788
|
}
|
|
20307
20789
|
var itemPattern = /^(\s*)([-*]|\d+\.)\s+(.*)$/;
|
|
20308
|
-
function
|
|
20790
|
+
function indent2(line) {
|
|
20309
20791
|
return line.match(/^\s*/)?.[0].length ?? 0;
|
|
20310
20792
|
}
|
|
20311
20793
|
function list2(lines) {
|
|
20312
|
-
const base =
|
|
20794
|
+
const base = indent2(lines[0]);
|
|
20313
20795
|
const ordered2 = /^\s*\d+\./.test(lines[0]);
|
|
20314
20796
|
const items = [];
|
|
20315
20797
|
let i26 = 0;
|
|
@@ -20321,7 +20803,7 @@ function list2(lines) {
|
|
|
20321
20803
|
i26++;
|
|
20322
20804
|
continue;
|
|
20323
20805
|
}
|
|
20324
|
-
const end = run(lines, i26 + 1, (line) =>
|
|
20806
|
+
const end = run(lines, i26 + 1, (line) => indent2(line) > base);
|
|
20325
20807
|
let child = i26 + 1;
|
|
20326
20808
|
let text2 = match[3];
|
|
20327
20809
|
while (child < end && !itemPattern.test(lines[child])) text2 += ` ${lines[child++].trim()}`;
|
|
@@ -20361,7 +20843,7 @@ function block2(lines, i26) {
|
|
|
20361
20843
|
const end2 = run(
|
|
20362
20844
|
lines,
|
|
20363
20845
|
i26,
|
|
20364
|
-
(l24) => itemPattern.test(l24) || l24.trim() !== "" &&
|
|
20846
|
+
(l24) => itemPattern.test(l24) || l24.trim() !== "" && indent2(l24) > indent2(line)
|
|
20365
20847
|
);
|
|
20366
20848
|
return [list2(lines.slice(i26, end2)), end2];
|
|
20367
20849
|
}
|
|
@@ -20787,20 +21269,20 @@ function attachment(item2) {
|
|
|
20787
21269
|
<span slot="subtitle" class="size">${detail}</span>
|
|
20788
21270
|
</swc-user-message>`;
|
|
20789
21271
|
}
|
|
20790
|
-
|
|
21272
|
+
function when(at, title = "") {
|
|
21273
|
+
return b`<time class="when" datetime=${new Date(at).toISOString()} title=${title || A}>${time(at)}</time>`;
|
|
21274
|
+
}
|
|
20791
21275
|
function user(message) {
|
|
20792
21276
|
const delivered = message.delivered ?? (message.mode === "steer" ? "steer" : void 0);
|
|
20793
|
-
const tag3 = delivered === "steer" || delivered === "follow-up" ? deliveries[delivered] : null;
|
|
20794
21277
|
const agent = message.origin === "agent";
|
|
20795
21278
|
const name = message.from ?? "an agent";
|
|
20796
|
-
const who2 = agent ? name : message.from ? `From ${message.from}` : "
|
|
21279
|
+
const who2 = agent ? name : message.from ? `From ${message.from}` : "";
|
|
20797
21280
|
const label = agent ? `Request from ${name}` : message.from ? `Message from ${message.from}` : "Your message";
|
|
20798
21281
|
return b`<swc-conversation-turn type="user" class="message user" accessible-label=${label} data-id=${message.id} data-mode=${message.mode ?? "send"} data-delivered=${delivered ?? "run"} data-origin=${message.origin ?? "user"}>
|
|
20799
21282
|
<div class="bubble">
|
|
20800
21283
|
<div class="meta">
|
|
20801
|
-
|
|
21284
|
+
${who2 ? b`<span class="who">${who2}</span>` : A}${when(message.createdAt)}
|
|
20802
21285
|
${agent ? b`<swc-badge class="origin" size="s" variant="indigo">Agent</swc-badge>` : A}
|
|
20803
|
-
${tag3 ? b`<swc-badge class="tag" size="s" variant=${delivered === "steer" ? "notice" : "informative"} subtle>${tag3}</swc-badge>` : A}
|
|
20804
21286
|
</div>
|
|
20805
21287
|
${message.text ? b`<swc-user-message class="body"><span class="text">${message.text}</span></swc-user-message>` : A}
|
|
20806
21288
|
${message.attachments?.length ? b`<div class="attachments">${message.attachments.map(attachment)}</div>` : A}
|
|
@@ -20839,8 +21321,8 @@ function assistant(message, name, model, handlers, showThinking, suggestion = nu
|
|
|
20839
21321
|
return b`<swc-conversation-turn type="system" class="message assistant" accessible-label=${`Reply from ${name}`} data-id=${message.id} data-status=${message.status}>
|
|
20840
21322
|
<div class="reply">
|
|
20841
21323
|
<div class="meta">
|
|
20842
|
-
|
|
20843
|
-
${model ? b`<span title=${usage}>${model}</span>` : A}
|
|
21324
|
+
${when(message.createdAt, model ? "" : usage)}
|
|
21325
|
+
${model ? b`<span class="model" title=${usage}>${model}</span>` : A}
|
|
20844
21326
|
${message.status === "error" ? b`<swc-badge class="tag" size="s" variant="negative" subtle><swc-icon-alert-diamond slot="icon" size="s" aria-hidden="true"></swc-icon-alert-diamond>Failed</swc-badge>` : A}
|
|
20845
21327
|
</div>
|
|
20846
21328
|
<swc-system-message>
|
|
@@ -22321,7 +22803,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
22321
22803
|
constructor() {
|
|
22322
22804
|
super();
|
|
22323
22805
|
this.screen = screenClass(globalThis.innerWidth ?? 1280);
|
|
22324
|
-
this.surfaces =
|
|
22806
|
+
this.surfaces = surfaces2;
|
|
22325
22807
|
}
|
|
22326
22808
|
static styles = [
|
|
22327
22809
|
theme,
|
|
@@ -22550,9 +23032,14 @@ var SliccApp = class extends ThemedElement {
|
|
|
22550
23032
|
}
|
|
22551
23033
|
subscribe(model) {
|
|
22552
23034
|
const update = () => this.requestUpdate();
|
|
23035
|
+
const settle2 = () => settleModels(model);
|
|
23036
|
+
queueMicrotask(settle2);
|
|
22553
23037
|
return [
|
|
22554
23038
|
...super.subscribe(model),
|
|
23039
|
+
model.settings.on("settings", settle2),
|
|
23040
|
+
model.settings.on("accounts", settle2),
|
|
22555
23041
|
model.agent.on("agents", () => {
|
|
23042
|
+
settle2();
|
|
22556
23043
|
this.#prune();
|
|
22557
23044
|
update();
|
|
22558
23045
|
}),
|
|
@@ -22577,6 +23064,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
22577
23064
|
...model.tabs ? [model.tabs.on("tabs", update)] : [],
|
|
22578
23065
|
...model.follow ? [
|
|
22579
23066
|
model.follow.on("follow", () => {
|
|
23067
|
+
settle2();
|
|
22580
23068
|
this.#followed(model);
|
|
22581
23069
|
update();
|
|
22582
23070
|
})
|
|
@@ -22972,7 +23460,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
22972
23460
|
return Boolean(cone && !cone.frozen && this.model?.agent.freeze && !watchOnly(this.model));
|
|
22973
23461
|
}
|
|
22974
23462
|
#creatable() {
|
|
22975
|
-
return
|
|
23463
|
+
return creatable(this.model);
|
|
22976
23464
|
}
|
|
22977
23465
|
#cone() {
|
|
22978
23466
|
const agent = this.#active();
|
|
@@ -23005,22 +23493,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
23005
23493
|
this.renderRoot.querySelector("header sp-picker")?.focus();
|
|
23006
23494
|
}
|
|
23007
23495
|
async #newCone(trigger2) {
|
|
23008
|
-
|
|
23009
|
-
const create3 = port?.createCone?.bind(port);
|
|
23010
|
-
if (!port || !create3) return;
|
|
23011
|
-
let created;
|
|
23012
|
-
await prompt({
|
|
23013
|
-
title: "New cone",
|
|
23014
|
-
label: "Name",
|
|
23015
|
-
action: "Create",
|
|
23016
|
-
trigger: trigger2,
|
|
23017
|
-
submit: async (name) => {
|
|
23018
|
-
if (watchOnly(this.model)) return;
|
|
23019
|
-
created = await create3(name);
|
|
23020
|
-
}
|
|
23021
|
-
});
|
|
23022
|
-
if (!created) return;
|
|
23023
|
-
port.select(created.id);
|
|
23496
|
+
if (!await createCone(this.model, trigger2)) return;
|
|
23024
23497
|
await this.updateComplete;
|
|
23025
23498
|
this.renderRoot.querySelector("header sp-picker")?.focus();
|
|
23026
23499
|
}
|
|
@@ -23343,12 +23816,12 @@ function scan2(words, cwds, whole) {
|
|
|
23343
23816
|
}
|
|
23344
23817
|
return null;
|
|
23345
23818
|
}
|
|
23346
|
-
function
|
|
23347
|
-
if (
|
|
23348
|
-
const start = absolute("/",
|
|
23819
|
+
function reach2(command3, cwd) {
|
|
23820
|
+
if (command3.length > 4096) return `${command3.slice(0, 40)}\u2026`;
|
|
23821
|
+
const start = absolute("/", cwd ?? "/");
|
|
23349
23822
|
if (protects(start, false)) return start;
|
|
23350
23823
|
const cwds = /* @__PURE__ */ new Set([start]);
|
|
23351
|
-
const text2 = unglob(ansi(
|
|
23824
|
+
const text2 = unglob(ansi(command3.replace(/\\\n/g, "")));
|
|
23352
23825
|
const plain = text2.split(separators).map((segment2) => commas(segment2.split(/[\s<>=]+/).map((word) => word.replace(/['"\\]/g, ""))));
|
|
23353
23826
|
const aware = shield(text2).split(separators).map((segment2) => commas(quoted(unshield(segment2))));
|
|
23354
23827
|
const segments = JSON.stringify(aware) === JSON.stringify(plain) ? plain : [...plain, ...aware];
|
|
@@ -23363,6 +23836,14 @@ function secretRules(approval) {
|
|
|
23363
23836
|
if (home2) return home2;
|
|
23364
23837
|
return segments.flat().some((word) => word.includes("$")) || text2.includes("`") ? text2.match(expansion)[0] : null;
|
|
23365
23838
|
}
|
|
23839
|
+
function secretRules(command3, cwd) {
|
|
23840
|
+
const hit = reach2(command3, cwd);
|
|
23841
|
+
return hit && certain(hit) ? { certain: hit, maybe: null } : { certain: null, maybe: hit };
|
|
23842
|
+
}
|
|
23843
|
+
function origin() {
|
|
23844
|
+
const active = focused();
|
|
23845
|
+
return active?.closest("slicc-terminal") ?? active;
|
|
23846
|
+
}
|
|
23366
23847
|
function waiting(model, now) {
|
|
23367
23848
|
return [...model?.approvals?.list() ?? []].filter((approval) => approval.expiresAt > now).sort((a23, b13) => a23.createdAt - b13.createdAt);
|
|
23368
23849
|
}
|
|
@@ -23503,7 +23984,8 @@ var SliccApprovals = class extends ModelElement {
|
|
|
23503
23984
|
async decide(approval, decision) {
|
|
23504
23985
|
const port = this.model?.approvals;
|
|
23505
23986
|
if (!port?.decide || this.busy || decision !== "deny" && !this.#armed) return;
|
|
23506
|
-
|
|
23987
|
+
const verdict = secretRules(approval.command, approval.cwd);
|
|
23988
|
+
if (decision === "always" && (verdict.certain ?? verdict.maybe)) return;
|
|
23507
23989
|
this.busy = decision;
|
|
23508
23990
|
this.failure = null;
|
|
23509
23991
|
this.#pending.add(approval.id);
|
|
@@ -23547,7 +24029,7 @@ var SliccApprovals = class extends ModelElement {
|
|
|
23547
24029
|
const dialog = this.renderRoot.querySelector("dialog");
|
|
23548
24030
|
const key2 = dialog ? `${dialog.dataset.approval}:${dialog.dataset.gone ?? ""}` : "";
|
|
23549
24031
|
if (key2 === this.#shown) return;
|
|
23550
|
-
if (dialog && !this.#shown) this.#trigger =
|
|
24032
|
+
if (dialog && !this.#shown) this.#trigger = origin();
|
|
23551
24033
|
this.#shown = key2;
|
|
23552
24034
|
if (!dialog) {
|
|
23553
24035
|
if (this.#trigger?.isConnected) this.#trigger.focus();
|
|
@@ -23608,7 +24090,8 @@ var SliccApprovals = class extends ModelElement {
|
|
|
23608
24090
|
const [approval, ...rest] = held ? [held, ...list5.filter(({ id }) => id !== held.id)] : list5;
|
|
23609
24091
|
if (!approval) return A;
|
|
23610
24092
|
const failure2 = this.failure?.id === approval.id ? this.failure.message : "";
|
|
23611
|
-
const
|
|
24093
|
+
const verdict = secretRules(approval.command, approval.cwd);
|
|
24094
|
+
const rules = verdict.certain ?? verdict.maybe;
|
|
23612
24095
|
const always = approval.always && !rules;
|
|
23613
24096
|
return this.#dialog(
|
|
23614
24097
|
approval,
|
|
@@ -23617,7 +24100,7 @@ var SliccApprovals = class extends ModelElement {
|
|
|
23617
24100
|
<h2 id="title" slot="heading">Allow sudo?</h2>
|
|
23618
24101
|
${this.#request(approval)}
|
|
23619
24102
|
${approval.cwd ? b`<p class="cwd">In ${approval.cwd}</p>` : A}
|
|
23620
|
-
${rules ? b`<div class="rules" data-secret-rules=${rules}><swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle><p>${certain
|
|
24103
|
+
${rules ? b`<div class="rules" data-secret-rules=${rules}><swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle><p>${verdict.certain ? b`<strong>This changes secret rules.</strong> It names <code>${rules}</code>, where SLICC keeps which secrets programs may use and where they may be sent.` : b`<strong>This may change secret rules.</strong> SLICC can't tell where <code>${rules}</code> leads, and it could reach the files where SLICC keeps which secrets programs may use and where they may be sent.`} Allow it only if you asked for this change.</p></div>` : A}
|
|
23621
24104
|
${always ? b`<p class="hint">Always allow lets ${approval.requester.name} run exactly this command with sudo without asking again.</p>` : A}
|
|
23622
24105
|
${failure2 ? b`<p class="problem" role="alert" data-error><swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle><span>${failure2}</span></p>` : A}
|
|
23623
24106
|
<p class="timer" data-timer>Denied automatically in ${countdown(approval.expiresAt - this.now)}.</p>
|
|
@@ -23951,8 +24434,8 @@ function since2(at, now = Date.now()) {
|
|
|
23951
24434
|
function called(value = "") {
|
|
23952
24435
|
const url = value.split(" ").at(-1);
|
|
23953
24436
|
try {
|
|
23954
|
-
const { origin, pathname } = new URL(url);
|
|
23955
|
-
return `Called ${
|
|
24437
|
+
const { origin: origin2, pathname } = new URL(url);
|
|
24438
|
+
return `Called ${origin2}${pathname}`;
|
|
23956
24439
|
} catch {
|
|
23957
24440
|
return `Called ${url}`.trim();
|
|
23958
24441
|
}
|
|
@@ -24000,7 +24483,9 @@ var icons = {
|
|
|
24000
24483
|
};
|
|
24001
24484
|
var refresh = 1e4;
|
|
24002
24485
|
var fresh = 3e3;
|
|
24486
|
+
var actionPage = 50;
|
|
24003
24487
|
var narrowWidth = 480;
|
|
24488
|
+
var linked = /* @__PURE__ */ new Set(["open", "goto", "request"]);
|
|
24004
24489
|
var wideWidth = 720;
|
|
24005
24490
|
var offline = b`<svg viewBox="0 0 96 72" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="6" y="8" width="84" height="56" rx="6"/><path d="M6 22h84"/><circle cx="16" cy="15" r="1.5"/><circle cx="24" cy="15" r="1.5"/><path d="M38 34l20 20M58 34L38 54"/></svg>`;
|
|
24006
24491
|
var SliccBrowser = class extends ModelElement {
|
|
@@ -24020,7 +24505,10 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24020
24505
|
#width = 0;
|
|
24021
24506
|
#copied = null;
|
|
24022
24507
|
#command = null;
|
|
24023
|
-
#
|
|
24508
|
+
#last = null;
|
|
24509
|
+
#shown = actionPage;
|
|
24510
|
+
#anchor = null;
|
|
24511
|
+
#expanded = /* @__PURE__ */ new Set();
|
|
24024
24512
|
constructor() {
|
|
24025
24513
|
super();
|
|
24026
24514
|
this.address = "";
|
|
@@ -24224,8 +24712,15 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24224
24712
|
font-family: var(--swc-code-font-family-stack);
|
|
24225
24713
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
24226
24714
|
}
|
|
24227
|
-
.
|
|
24228
|
-
flex:
|
|
24715
|
+
.detail .driving {
|
|
24716
|
+
flex-wrap: nowrap;
|
|
24717
|
+
min-block-size: var(--swc-component-height-75);
|
|
24718
|
+
}
|
|
24719
|
+
.detail .driving swc-status-light {
|
|
24720
|
+
min-width: 0;
|
|
24721
|
+
}
|
|
24722
|
+
.detail .driving swc-button {
|
|
24723
|
+
flex: none;
|
|
24229
24724
|
}
|
|
24230
24725
|
.swc-Link {
|
|
24231
24726
|
font-size: inherit;
|
|
@@ -24298,6 +24793,7 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24298
24793
|
user-select: none;
|
|
24299
24794
|
}
|
|
24300
24795
|
figcaption {
|
|
24796
|
+
min-block-size: var(--swc-component-height-50);
|
|
24301
24797
|
display: flex;
|
|
24302
24798
|
align-items: center;
|
|
24303
24799
|
justify-content: space-between;
|
|
@@ -24311,8 +24807,84 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24311
24807
|
color: var(--swc-heading-color);
|
|
24312
24808
|
}
|
|
24313
24809
|
summary {
|
|
24810
|
+
display: flex;
|
|
24811
|
+
align-items: center;
|
|
24812
|
+
gap: var(--swc-spacing-100);
|
|
24813
|
+
min-block-size: var(--swc-component-height-75);
|
|
24814
|
+
padding-inline: var(--swc-spacing-75);
|
|
24815
|
+
margin-inline: calc(-1 * var(--swc-spacing-75));
|
|
24816
|
+
border-radius: var(--swc-corner-radius-medium-default);
|
|
24817
|
+
list-style: none;
|
|
24818
|
+
cursor: pointer;
|
|
24819
|
+
}
|
|
24820
|
+
summary::-webkit-details-marker {
|
|
24821
|
+
display: none;
|
|
24822
|
+
}
|
|
24823
|
+
summary:hover {
|
|
24824
|
+
background: var(--swc-gray-100);
|
|
24825
|
+
}
|
|
24826
|
+
summary:focus-visible,
|
|
24827
|
+
.url-toggle:focus-visible,
|
|
24828
|
+
.actions:focus-visible {
|
|
24829
|
+
outline: var(--swc-focus-indicator-thickness) solid var(--swc-focus-indicator-color);
|
|
24830
|
+
outline-offset: var(--swc-focus-ring-gap);
|
|
24831
|
+
}
|
|
24832
|
+
.chevron {
|
|
24833
|
+
flex: none;
|
|
24834
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
24835
|
+
transition: transform var(--swc-animation-duration-100);
|
|
24836
|
+
}
|
|
24837
|
+
details[open] > summary .chevron {
|
|
24838
|
+
transform: rotate(90deg);
|
|
24839
|
+
}
|
|
24840
|
+
.url-toggle[aria-expanded='true'] .chevron {
|
|
24841
|
+
transform: rotate(180deg);
|
|
24842
|
+
}
|
|
24843
|
+
:host(:dir(rtl)) details:not([open]) > summary .chevron {
|
|
24844
|
+
transform: scaleX(-1);
|
|
24845
|
+
}
|
|
24846
|
+
@media (prefers-reduced-motion: reduce) {
|
|
24847
|
+
.chevron {
|
|
24848
|
+
transition: none;
|
|
24849
|
+
}
|
|
24850
|
+
}
|
|
24851
|
+
.more {
|
|
24852
|
+
display: flex;
|
|
24853
|
+
align-items: center;
|
|
24854
|
+
justify-content: space-between;
|
|
24855
|
+
gap: var(--swc-spacing-200);
|
|
24856
|
+
padding-block-end: var(--swc-spacing-75);
|
|
24857
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
24858
|
+
}
|
|
24859
|
+
.url-toggle {
|
|
24860
|
+
display: inline-flex;
|
|
24861
|
+
align-self: flex-start;
|
|
24862
|
+
align-items: center;
|
|
24863
|
+
gap: var(--swc-spacing-50);
|
|
24864
|
+
max-width: 100%;
|
|
24865
|
+
margin: 0;
|
|
24866
|
+
padding: 0;
|
|
24867
|
+
border: 0;
|
|
24868
|
+
border-radius: var(--swc-corner-radius-small-default);
|
|
24869
|
+
background: none;
|
|
24870
|
+
color: inherit;
|
|
24871
|
+
font: inherit;
|
|
24872
|
+
text-align: start;
|
|
24314
24873
|
cursor: pointer;
|
|
24315
24874
|
}
|
|
24875
|
+
.url-toggle > span {
|
|
24876
|
+
min-width: 0;
|
|
24877
|
+
}
|
|
24878
|
+
.url-toggle:hover > span {
|
|
24879
|
+
text-decoration: underline;
|
|
24880
|
+
}
|
|
24881
|
+
.full {
|
|
24882
|
+
font-family: var(--swc-code-font-family-stack);
|
|
24883
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
24884
|
+
overflow-wrap: anywhere;
|
|
24885
|
+
white-space: normal;
|
|
24886
|
+
user-select: text;
|
|
24887
|
+
}
|
|
24316
24888
|
.actions {
|
|
24317
24889
|
display: flex;
|
|
24318
24890
|
flex-direction: column;
|
|
@@ -24340,7 +24912,8 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24340
24912
|
min-width: 0;
|
|
24341
24913
|
overflow-wrap: anywhere;
|
|
24342
24914
|
}
|
|
24343
|
-
.last .what
|
|
24915
|
+
.last .what > :not(.full),
|
|
24916
|
+
.last .url-toggle > span {
|
|
24344
24917
|
overflow: hidden;
|
|
24345
24918
|
text-overflow: ellipsis;
|
|
24346
24919
|
white-space: nowrap;
|
|
@@ -24406,6 +24979,8 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24406
24979
|
this.#shots.clear();
|
|
24407
24980
|
this.#frames.clear();
|
|
24408
24981
|
this.#pulse.clear();
|
|
24982
|
+
this.#expanded.clear();
|
|
24983
|
+
this.#shown = actionPage;
|
|
24409
24984
|
const tabs = model.browser.list();
|
|
24410
24985
|
this.#driven = new Set(tabs.filter((tab) => tab.controlled).map((tab) => tab.id));
|
|
24411
24986
|
this.#focus = this.#latest(model, tabs);
|
|
@@ -24505,7 +25080,7 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24505
25080
|
try {
|
|
24506
25081
|
const src = await model.browser.screenshot(id);
|
|
24507
25082
|
const now = model.browser.list().find((candidate) => candidate.id === id);
|
|
24508
|
-
if (this.model === model && now && this.#key(now) === key2) {
|
|
25083
|
+
if (this.model === model && now && this.#key(now) === key2 && this.#watching?.tabId !== id) {
|
|
24509
25084
|
this.#shots.set(id, { key: key2, src, at: Date.now() });
|
|
24510
25085
|
this.requestUpdate();
|
|
24511
25086
|
}
|
|
@@ -24523,6 +25098,7 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24523
25098
|
#show(id) {
|
|
24524
25099
|
this.#focus = id;
|
|
24525
25100
|
this.#copied = null;
|
|
25101
|
+
this.#shown = actionPage;
|
|
24526
25102
|
if (id) this.#pulse.delete(id);
|
|
24527
25103
|
this.requestUpdate();
|
|
24528
25104
|
}
|
|
@@ -24537,9 +25113,11 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24537
25113
|
this.#ticker = setInterval(() => this.requestUpdate(), 1e3);
|
|
24538
25114
|
if (!(visible2 && tab)) this.#still();
|
|
24539
25115
|
const list5 = this.renderRoot.querySelector(".actions:not(.last)");
|
|
24540
|
-
const
|
|
24541
|
-
if (list5 &&
|
|
24542
|
-
this.#
|
|
25116
|
+
const last = list5?.lastElementChild?.getAttribute("data-action-id") ?? null;
|
|
25117
|
+
if (list5 && this.#anchor !== null) list5.scrollTop = list5.scrollHeight - this.#anchor;
|
|
25118
|
+
else if (list5 && last !== this.#last) list5.scrollTop = list5.scrollHeight;
|
|
25119
|
+
this.#anchor = null;
|
|
25120
|
+
this.#last = last;
|
|
24543
25121
|
}
|
|
24544
25122
|
#still() {
|
|
24545
25123
|
if (this.#ticker) clearInterval(this.#ticker);
|
|
@@ -24587,10 +25165,10 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24587
25165
|
#who(tab) {
|
|
24588
25166
|
return tab.agentId ? `${agentName(this.model, tab.agentId)} is using this tab` : "In use";
|
|
24589
25167
|
}
|
|
24590
|
-
#stopButton(tab, refocus
|
|
25168
|
+
#stopButton(tab, refocus) {
|
|
24591
25169
|
if (!tab.agentId || watchOnly(this.model)) return A;
|
|
24592
25170
|
const agentId = tab.agentId;
|
|
24593
|
-
return b`<swc-button size="s" variant="secondary"
|
|
25171
|
+
return b`<swc-button size="s" variant="secondary" data-action="stop-agent" @click=${() => this.#stop(agentId, refocus)}>Stop ${agentName(this.model, agentId)}</swc-button>`;
|
|
24594
25172
|
}
|
|
24595
25173
|
#card(tab, active) {
|
|
24596
25174
|
const model = this.model;
|
|
@@ -24669,28 +25247,52 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24669
25247
|
</figcaption>
|
|
24670
25248
|
</figure>`;
|
|
24671
25249
|
}
|
|
25250
|
+
#more(total) {
|
|
25251
|
+
const list5 = this.renderRoot.querySelector(".actions:not(.last)");
|
|
25252
|
+
this.#anchor = list5.scrollHeight - list5.scrollTop;
|
|
25253
|
+
this.#shown += actionPage;
|
|
25254
|
+
const done2 = this.#shown >= total;
|
|
25255
|
+
void this.updateComplete.then(() => {
|
|
25256
|
+
if (done2) this.focusOn(".actions:not(.last)");
|
|
25257
|
+
});
|
|
25258
|
+
this.requestUpdate();
|
|
25259
|
+
}
|
|
25260
|
+
#toggle(id) {
|
|
25261
|
+
if (!this.#expanded.delete(id)) this.#expanded.add(id);
|
|
25262
|
+
this.requestUpdate();
|
|
25263
|
+
}
|
|
25264
|
+
#what(action) {
|
|
25265
|
+
const url = linked.has(action.kind) ? action.value : void 0;
|
|
25266
|
+
if (!url) return b`<span>${describe(action)}</span>`;
|
|
25267
|
+
const open = this.#expanded.has(action.id);
|
|
25268
|
+
return b`<button class="url-toggle" data-action="action-url" aria-expanded=${open ? "true" : "false"} aria-controls=${`url-${action.id}`} @click=${() => this.#toggle(action.id)}><span>${describe(action)}</span><swc-icon-chevron-down class="chevron" size="s" aria-hidden="true"></swc-icon-chevron-down></button>${open ? b`<span class="full" id=${`url-${action.id}`}>${url}</span>` : A}`;
|
|
25269
|
+
}
|
|
24672
25270
|
#row(action) {
|
|
24673
25271
|
const failed2 = action.status === "failed";
|
|
24674
|
-
|
|
25272
|
+
const url = linked.has(action.kind) ? action.value : void 0;
|
|
25273
|
+
return b`<li data-action-id=${action.id} data-kind=${action.kind} data-status=${action.status} title=${url ?? A}>
|
|
24675
25274
|
<span>${action.status === "running" ? b`<swc-progress-circle size="s" indeterminate label="Running"></swc-progress-circle>` : failed2 ? b`<swc-icon-alert-triangle size="s" aria-label="Failed"></swc-icon-alert-triangle>` : icons[action.kind]}</span>
|
|
24676
|
-
<span class="what"
|
|
25275
|
+
<span class="what">${this.#what(action)}${failed2 && action.error ? b`<span class="failure">${action.error}</span>` : A}</span>
|
|
24677
25276
|
<span class="who">${agentName(this.model, action.agentId)} ${time(action.at)}</span>
|
|
24678
25277
|
</li>`;
|
|
24679
25278
|
}
|
|
24680
25279
|
#actions(tab) {
|
|
24681
25280
|
const port = this.model.browser;
|
|
24682
25281
|
if (!port.actions) return A;
|
|
24683
|
-
const
|
|
25282
|
+
const all2 = port.actions().filter(
|
|
24684
25283
|
(action) => action.tabId === tab.id || action.tabId === null && action.agentId !== null && action.agentId === tab.agentId
|
|
24685
|
-
)
|
|
24686
|
-
if (!
|
|
25284
|
+
);
|
|
25285
|
+
if (!all2.length)
|
|
24687
25286
|
return b`<h3>Recent actions</h3><p class="muted" data-actions="none">No actions yet.</p>`;
|
|
25287
|
+
const actions2 = all2.slice(-this.#shown);
|
|
25288
|
+
const more = all2.length > actions2.length ? b`<div class="more"><span>Showing the latest ${actions2.length} of ${all2.length}</span><swc-button size="s" variant="secondary" fill-style="outline" data-action="more-actions" @click=${() => this.#more(all2.length)}>Show more</swc-button></div>` : A;
|
|
24688
25289
|
if (this.#width >= narrowWidth)
|
|
24689
|
-
return b`<h3>Recent actions</h3
|
|
25290
|
+
return b`<h3>Recent actions</h3>${more}<ol class="actions" aria-label="Recent actions" tabindex="0">${actions2.map((action) => this.#row(action))}</ol>`;
|
|
24690
25291
|
const last = actions2.at(-1);
|
|
24691
25292
|
return b`<details>
|
|
24692
|
-
<summary>Recent actions (${
|
|
24693
|
-
|
|
25293
|
+
<summary><swc-icon-chevron-right class="chevron" size="s" aria-hidden="true"></swc-icon-chevron-right>Recent actions (${all2.length})</summary>
|
|
25294
|
+
${more}
|
|
25295
|
+
<ol class="actions" aria-label="Earlier actions" tabindex="0">${actions2.slice(0, -1).map((action) => this.#row(action))}</ol>
|
|
24694
25296
|
</details>
|
|
24695
25297
|
<ol class="actions last" aria-label="Last action">${this.#row(last)}</ol>`;
|
|
24696
25298
|
}
|
|
@@ -24717,7 +25319,7 @@ var SliccBrowser = class extends ModelElement {
|
|
|
24717
25319
|
</div>
|
|
24718
25320
|
<div class="driving" data-driving=${tab.controlled ? tab.agentId ? "agent" : "user" : "none"}>
|
|
24719
25321
|
<swc-status-light size="m" variant=${tab.controlled ? "info" : "neutral"}>${tab.controlled ? this.#who(tab) : "No agent is using this tab"}</swc-status-light>
|
|
24720
|
-
${tab.controlled ? this.#stopButton(tab, '[data-action="all-tabs"]'
|
|
25322
|
+
${tab.controlled ? this.#stopButton(tab, '[data-action="all-tabs"]') : A}
|
|
24721
25323
|
</div>
|
|
24722
25324
|
${this.#view(tab)}
|
|
24723
25325
|
${this.#actions(tab)}
|
|
@@ -25602,6 +26204,7 @@ var navigation = /* @__PURE__ */ new Set([
|
|
|
25602
26204
|
"PageUp",
|
|
25603
26205
|
"PageDown"
|
|
25604
26206
|
]);
|
|
26207
|
+
var compactWidth = 560;
|
|
25605
26208
|
var failed = (message) => message.role === "assistant" ? message.status === "error" : message.role === "system" && message.kind === "error";
|
|
25606
26209
|
function carriesFiles(event2) {
|
|
25607
26210
|
const types = [...event2.dataTransfer?.types ?? []];
|
|
@@ -25636,11 +26239,17 @@ document.addEventListener(
|
|
|
25636
26239
|
true
|
|
25637
26240
|
);
|
|
25638
26241
|
var SliccChat = class extends ThemedElement {
|
|
25639
|
-
static properties = {
|
|
26242
|
+
static properties = {
|
|
26243
|
+
...ThemedElement.properties,
|
|
26244
|
+
agent: {},
|
|
26245
|
+
dropping: { state: true },
|
|
26246
|
+
compact: { state: true }
|
|
26247
|
+
};
|
|
25640
26248
|
constructor() {
|
|
25641
26249
|
super();
|
|
25642
26250
|
this.agent = "";
|
|
25643
26251
|
this.dropping = false;
|
|
26252
|
+
this.compact = false;
|
|
25644
26253
|
this.addEventListener("dragenter", this.#over);
|
|
25645
26254
|
this.addEventListener("dragover", this.#over);
|
|
25646
26255
|
this.addEventListener("dragleave", this.#leave);
|
|
@@ -25694,7 +26303,7 @@ var SliccChat = class extends ThemedElement {
|
|
|
25694
26303
|
}
|
|
25695
26304
|
header {
|
|
25696
26305
|
display: flex;
|
|
25697
|
-
flex-wrap:
|
|
26306
|
+
flex-wrap: nowrap;
|
|
25698
26307
|
align-items: center;
|
|
25699
26308
|
gap: var(--swc-spacing-50) var(--swc-spacing-100);
|
|
25700
26309
|
padding: var(--swc-spacing-75) var(--swc-spacing-200);
|
|
@@ -25706,15 +26315,23 @@ var SliccChat = class extends ThemedElement {
|
|
|
25706
26315
|
}
|
|
25707
26316
|
header sp-picker {
|
|
25708
26317
|
--mod-picker-spacing-label-to-picker-quiet: calc(-1 * var(--swc-border-width-100));
|
|
26318
|
+
flex: none;
|
|
25709
26319
|
min-width: 0;
|
|
25710
26320
|
width: auto;
|
|
25711
26321
|
}
|
|
26322
|
+
header sp-picker[label='Model'] {
|
|
26323
|
+
flex: 0 1 auto;
|
|
26324
|
+
}
|
|
26325
|
+
header swc-status-light,
|
|
26326
|
+
header swc-action-button {
|
|
26327
|
+
flex: none;
|
|
26328
|
+
}
|
|
25712
26329
|
header swc-status-light {
|
|
25713
26330
|
align-self: center;
|
|
25714
26331
|
}
|
|
25715
26332
|
header swc-meter {
|
|
25716
26333
|
flex: 0 1 calc(var(--swc-spacing-400) * 6);
|
|
25717
|
-
min-width: calc(var(--swc-spacing-400) * 4);
|
|
26334
|
+
min-width: calc(var(--swc-spacing-400) * 4.5);
|
|
25718
26335
|
margin-inline-start: auto;
|
|
25719
26336
|
}
|
|
25720
26337
|
header .frozen,
|
|
@@ -25803,14 +26420,27 @@ var SliccChat = class extends ThemedElement {
|
|
|
25803
26420
|
}
|
|
25804
26421
|
};
|
|
25805
26422
|
subscribe(model) {
|
|
26423
|
+
const settle2 = () => {
|
|
26424
|
+
settleModels(model);
|
|
26425
|
+
this.requestUpdate();
|
|
26426
|
+
};
|
|
26427
|
+
queueMicrotask(() => settleModels(model));
|
|
26428
|
+
const width = new ResizeObserver(([entry]) => {
|
|
26429
|
+
const size4 = entry.contentRect.width;
|
|
26430
|
+
this.compact = size4 > 0 && size4 < compactWidth;
|
|
26431
|
+
});
|
|
26432
|
+
width.observe(this);
|
|
25806
26433
|
return [
|
|
25807
26434
|
...super.subscribe(model),
|
|
26435
|
+
() => width.disconnect(),
|
|
26436
|
+
model.settings.on("settings", settle2),
|
|
26437
|
+
model.settings.on("accounts", settle2),
|
|
25808
26438
|
model.agent.on("active", () => {
|
|
25809
26439
|
if (!this.agent) this.#refresh(true);
|
|
25810
26440
|
}),
|
|
25811
|
-
model.agent.on("agents",
|
|
26441
|
+
model.agent.on("agents", settle2),
|
|
25812
26442
|
...model.tabs ? [model.tabs.on("tabs", () => this.requestUpdate())] : [],
|
|
25813
|
-
...model.follow ? [model.follow.on("follow",
|
|
26443
|
+
...model.follow ? [model.follow.on("follow", settle2)] : [],
|
|
25814
26444
|
model.agent.on("messages", (agentId) => {
|
|
25815
26445
|
if (agentId === this.#id()) this.#refresh(this.#sent(agentId));
|
|
25816
26446
|
}),
|
|
@@ -25912,11 +26542,11 @@ var SliccChat = class extends ThemedElement {
|
|
|
25912
26542
|
new CustomEvent("show-surface", { detail: { id: "settings" }, bubbles: true, composed: true })
|
|
25913
26543
|
);
|
|
25914
26544
|
}
|
|
25915
|
-
#message(message, agent, suggestion) {
|
|
26545
|
+
#message(message, agent, suggestion, changed) {
|
|
25916
26546
|
const model = this.model;
|
|
25917
26547
|
switch (message.role) {
|
|
25918
26548
|
case "assistant": {
|
|
25919
|
-
const label = model.settings.models().find((option2) => option2.id ===
|
|
26549
|
+
const label = changed ? model.settings.models().find((option2) => option2.id === message.model)?.label ?? message.model : "";
|
|
25920
26550
|
return assistant(
|
|
25921
26551
|
message,
|
|
25922
26552
|
agent.name,
|
|
@@ -25939,6 +26569,7 @@ var SliccChat = class extends ThemedElement {
|
|
|
25939
26569
|
#items(messages, agent) {
|
|
25940
26570
|
const out = [];
|
|
25941
26571
|
let previous = "";
|
|
26572
|
+
let shown4;
|
|
25942
26573
|
const model = this.model;
|
|
25943
26574
|
const last = messages.at(-1);
|
|
25944
26575
|
const suggestion = last?.role === "assistant" && !agent.frozen && !watchOnly(model) && !model.agent.busy(agent.id) ? model.agent.suggestion(agent.id) : null;
|
|
@@ -25953,7 +26584,13 @@ var SliccChat = class extends ThemedElement {
|
|
|
25953
26584
|
]);
|
|
25954
26585
|
previous = label;
|
|
25955
26586
|
}
|
|
25956
|
-
|
|
26587
|
+
const next = message.role === "assistant" ? message.model : void 0;
|
|
26588
|
+
const changed = !!next && next !== shown4;
|
|
26589
|
+
if (changed) shown4 = next;
|
|
26590
|
+
out.push([
|
|
26591
|
+
message.id,
|
|
26592
|
+
this.#message(message, agent, message === last ? suggestion : null, changed)
|
|
26593
|
+
]);
|
|
25957
26594
|
}
|
|
25958
26595
|
return out;
|
|
25959
26596
|
}
|
|
@@ -25977,10 +26614,11 @@ var SliccChat = class extends ThemedElement {
|
|
|
25977
26614
|
<span class="model" data-model>${label ?? agent.model}</span>
|
|
25978
26615
|
${meter}`;
|
|
25979
26616
|
}
|
|
26617
|
+
const offered = chatModels(model.settings.models());
|
|
25980
26618
|
return b`${statusLight(agent.status)}
|
|
25981
|
-
|
|
25982
|
-
${
|
|
25983
|
-
</sp-picker>
|
|
26619
|
+
${offered.length ? b`<sp-picker size="s" quiet label="Model" value=${agent.model} @change=${(event2) => model.agent.setModel(agent.id, event2.target.value)}>
|
|
26620
|
+
${offered.map((option2) => b`<sp-menu-item value=${option2.id}>${option2.label}<span slot="description">${option2.provider}</span></sp-menu-item>`)}
|
|
26621
|
+
</sp-picker>` : b`<swc-action-button size="s" quiet data-action="set-up-model" @click=${() => this.#action("settings")}>Set up a model</swc-action-button>`}
|
|
25984
26622
|
<sp-picker size="s" quiet label="Thinking" value=${model.settings.get().thinking} @change=${(event2) => model.settings.update({ thinking: event2.target.value })}>
|
|
25985
26623
|
<sp-menu-item value="off">No thinking</sp-menu-item>
|
|
25986
26624
|
<sp-menu-item value="low">Think a little</sp-menu-item>
|
|
@@ -25988,7 +26626,7 @@ var SliccChat = class extends ThemedElement {
|
|
|
25988
26626
|
<sp-menu-item value="high">Think hard</sp-menu-item>
|
|
25989
26627
|
</sp-picker>
|
|
25990
26628
|
${meter}
|
|
25991
|
-
<swc-action-button id="new-chat" size="s" quiet data-action="new-chat" ?disabled=${empty2} @click=${() => this.#newChat(agent)}><swc-icon-new slot="icon"></swc-icon-new
|
|
26629
|
+
<swc-action-button id="new-chat" size="s" quiet data-action="new-chat" accessible-label=${this.compact ? "New conversation" : A} ?disabled=${empty2} @click=${() => this.#newChat(agent)}><swc-icon-new slot="icon"></swc-icon-new>${this.compact ? A : "New conversation"}</swc-action-button>
|
|
25992
26630
|
<swc-tooltip for="new-chat" placement="bottom">${agent.kind === "cone" && model.agent.freeze ? "Start a new conversation. This one stays in the Freezer." : "Start a new conversation"}</swc-tooltip>`;
|
|
25993
26631
|
}
|
|
25994
26632
|
render() {
|
|
@@ -26000,7 +26638,7 @@ var SliccChat = class extends ThemedElement {
|
|
|
26000
26638
|
const messages = agent ? this.model?.agent.messages(agent.id) ?? [] : [];
|
|
26001
26639
|
this.#tail = messages.at(-1)?.id ?? "";
|
|
26002
26640
|
return b`
|
|
26003
|
-
<header>
|
|
26641
|
+
<header ?data-compact=${this.compact}>
|
|
26004
26642
|
${agent ? this.#meta(agent, !messages.length) : b`<span>No agent</span>`}
|
|
26005
26643
|
</header>
|
|
26006
26644
|
<slicc-notices .model=${this.model}></slicc-notices>
|
|
@@ -26038,7 +26676,7 @@ var D4 = (e120) => {
|
|
|
26038
26676
|
var O3 = typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("field-sizing", "content");
|
|
26039
26677
|
var k3 = class extends i9 {
|
|
26040
26678
|
constructor() {
|
|
26041
|
-
super(), this.labelId =
|
|
26679
|
+
super(), this.labelId = e91("swc-prompt-field-label"), this.disabled = false, this.generating = false, this.collapsed = false, this.variant = "balanced", this.size = "m", this.loader = "aiLogo", this.animateLoader = false, this.label = "Prompt", this.accessibleLabel = "", this.sendLabel = "Send", this.stopLabel = "Stop generating", this.uploadLabel = "Add attachment", this.attachmentScrollPrevLabel = "Show previous attachments", this.attachmentScrollNextLabel = "Show more attachments", this.attachmentStripLabel = "Uploaded assets strip", this.placeholder = "Ready to get started? Ask a question, share an idea, or add a task.", this.value = "", this._attachmentScrollOverflow = false, this._attachmentCanScrollPrev = false, this._attachmentCanScrollNext = false, this._attachmentScrollFallbackGeneration = 0, this._attachmentScrollObserver = new s8(this, {
|
|
26042
26680
|
target: null,
|
|
26043
26681
|
callback: () => {
|
|
26044
26682
|
this._updateAttachmentScrollState();
|
|
@@ -27363,6 +28001,11 @@ var SliccComposer = class extends ThemedElement {
|
|
|
27363
28001
|
flex: none;
|
|
27364
28002
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
27365
28003
|
}
|
|
28004
|
+
.queued .next {
|
|
28005
|
+
flex: none;
|
|
28006
|
+
font-size: var(--swc-font-size-75);
|
|
28007
|
+
color: var(--swc-neutral-subdued-content-color-default);
|
|
28008
|
+
}
|
|
27366
28009
|
.queued .text {
|
|
27367
28010
|
flex: 1;
|
|
27368
28011
|
min-width: 0;
|
|
@@ -28086,17 +28729,17 @@ var SliccComposer = class extends ThemedElement {
|
|
|
28086
28729
|
const model = this.model;
|
|
28087
28730
|
return b`<ul class="queue" aria-label="Queued messages">
|
|
28088
28731
|
${queued.map(
|
|
28089
|
-
(message) => b`<li class="queued" data-id=${message.id}>
|
|
28732
|
+
(message) => b`<li class="queued" data-id=${message.id} data-mode=${message.mode ?? "queue"}>
|
|
28090
28733
|
<swc-icon-clock size="s" aria-hidden="true"></swc-icon-clock>
|
|
28091
|
-
<span class="text"><span class="sr"
|
|
28092
|
-
|
|
28734
|
+
<span class="text"><span class="sr">${message.mode === "steer" ? "Steering: " : "Queued: "}</span>${message.text}</span>
|
|
28735
|
+
${message.mode === "steer" ? b`<span class="next">Sends at the next step</span>` : b`<swc-action-button size="s" quiet data-action="send-now" @click=${() => {
|
|
28093
28736
|
model.agent.unqueue(this.#agent, message.id);
|
|
28094
28737
|
void model.agent.send(this.#agent, {
|
|
28095
28738
|
text: message.text,
|
|
28096
28739
|
attachments: message.attachments,
|
|
28097
28740
|
mode: "steer"
|
|
28098
28741
|
});
|
|
28099
|
-
}}>Send now</swc-action-button
|
|
28742
|
+
}}>Send now</swc-action-button>`}
|
|
28100
28743
|
<swc-close-button size="s" data-action="unqueue" accessible-label="Remove from queue" @click=${() => model.agent.unqueue(this.#agent, message.id)}></swc-close-button>
|
|
28101
28744
|
</li>`
|
|
28102
28745
|
)}
|
|
@@ -28494,379 +29137,6 @@ var SliccMemory = class extends ModelElement {
|
|
|
28494
29137
|
}
|
|
28495
29138
|
};
|
|
28496
29139
|
|
|
28497
|
-
// src/app/monitor.ts
|
|
28498
|
-
function sparkline(points, width = 120, height = 28) {
|
|
28499
|
-
if (points.length < 2) return "";
|
|
28500
|
-
const max2 = Math.max(...points);
|
|
28501
|
-
const min2 = Math.min(...points);
|
|
28502
|
-
const span = max2 - min2 || 1;
|
|
28503
|
-
return points.map(
|
|
28504
|
-
(value, i26) => `${(i26 / (points.length - 1) * width).toFixed(1)},${(height - (value - min2) / span * (height - 2) - 1).toFixed(1)}`
|
|
28505
|
-
).join(" ");
|
|
28506
|
-
}
|
|
28507
|
-
function meterVariant2(ratio) {
|
|
28508
|
-
if (ratio >= 0.9) return "negative";
|
|
28509
|
-
if (ratio >= 0.6) return "notice";
|
|
28510
|
-
return "informative";
|
|
28511
|
-
}
|
|
28512
|
-
var surfaces2 = {
|
|
28513
|
-
agents: "agents",
|
|
28514
|
-
terminals: "terminal",
|
|
28515
|
-
tabs: "browser",
|
|
28516
|
-
changes: "changes",
|
|
28517
|
-
processes: "terminal"
|
|
28518
|
-
};
|
|
28519
|
-
var rowLights = {
|
|
28520
|
-
active: "info",
|
|
28521
|
-
idle: "neutral",
|
|
28522
|
-
warn: "notice",
|
|
28523
|
-
error: "negative"
|
|
28524
|
-
};
|
|
28525
|
-
var rowSpoken = {
|
|
28526
|
-
active: "Active",
|
|
28527
|
-
idle: "Idle",
|
|
28528
|
-
warn: "Needs attention",
|
|
28529
|
-
error: "Error"
|
|
28530
|
-
};
|
|
28531
|
-
function indent2(depth) {
|
|
28532
|
-
return Math.min(Math.max(Math.floor(depth ?? 0), 0), 6);
|
|
28533
|
-
}
|
|
28534
|
-
function attention(section) {
|
|
28535
|
-
const errors = section.rows.filter((row) => row.status === "error").length;
|
|
28536
|
-
if (errors)
|
|
28537
|
-
return { variant: "negative", text: `${errors} ${errors === 1 ? "error" : "errors"}` };
|
|
28538
|
-
const warnings = section.rows.filter((row) => row.status === "warn").length;
|
|
28539
|
-
if (warnings)
|
|
28540
|
-
return {
|
|
28541
|
-
variant: "notice",
|
|
28542
|
-
text: `${warnings} ${warnings === 1 ? "needs" : "need"} attention`
|
|
28543
|
-
};
|
|
28544
|
-
return null;
|
|
28545
|
-
}
|
|
28546
|
-
var SliccMonitor = class extends ModelElement {
|
|
28547
|
-
static properties = {
|
|
28548
|
-
...ModelElement.properties,
|
|
28549
|
-
expanded: { state: true },
|
|
28550
|
-
copied: { state: true }
|
|
28551
|
-
};
|
|
28552
|
-
constructor() {
|
|
28553
|
-
super();
|
|
28554
|
-
this.expanded = {};
|
|
28555
|
-
this.copied = null;
|
|
28556
|
-
}
|
|
28557
|
-
static styles = [
|
|
28558
|
-
shared,
|
|
28559
|
-
panelCss,
|
|
28560
|
-
i`
|
|
28561
|
-
.bar {
|
|
28562
|
-
padding-block: var(--swc-spacing-50);
|
|
28563
|
-
}
|
|
28564
|
-
.heading {
|
|
28565
|
-
flex: 1;
|
|
28566
|
-
min-width: 0;
|
|
28567
|
-
display: flex;
|
|
28568
|
-
flex-wrap: wrap;
|
|
28569
|
-
align-items: baseline;
|
|
28570
|
-
column-gap: var(--swc-spacing-100);
|
|
28571
|
-
white-space: normal;
|
|
28572
|
-
}
|
|
28573
|
-
.bar swc-action-button {
|
|
28574
|
-
flex: none;
|
|
28575
|
-
}
|
|
28576
|
-
.body {
|
|
28577
|
-
flex: 1;
|
|
28578
|
-
min-height: 0;
|
|
28579
|
-
overflow-y: auto;
|
|
28580
|
-
padding: var(--swc-spacing-100);
|
|
28581
|
-
display: grid;
|
|
28582
|
-
grid-template-columns: minmax(0, 1fr);
|
|
28583
|
-
align-content: start;
|
|
28584
|
-
gap: var(--swc-spacing-200);
|
|
28585
|
-
}
|
|
28586
|
-
.vitals {
|
|
28587
|
-
display: grid;
|
|
28588
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--swc-card-default-width-extra-small)), 1fr));
|
|
28589
|
-
gap: var(--swc-spacing-100);
|
|
28590
|
-
}
|
|
28591
|
-
.vital {
|
|
28592
|
-
display: grid;
|
|
28593
|
-
align-content: start;
|
|
28594
|
-
gap: var(--swc-spacing-50);
|
|
28595
|
-
border-radius: var(--swc-corner-radius-medium-default);
|
|
28596
|
-
padding: var(--swc-spacing-200);
|
|
28597
|
-
background: var(--swc-background-layer-1-color);
|
|
28598
|
-
}
|
|
28599
|
-
.label {
|
|
28600
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
28601
|
-
font-size: var(--swc-font-size-75);
|
|
28602
|
-
}
|
|
28603
|
-
.value {
|
|
28604
|
-
font-size: var(--swc-font-size-300);
|
|
28605
|
-
font-weight: var(--swc-bold-font-weight);
|
|
28606
|
-
font-variant-numeric: tabular-nums;
|
|
28607
|
-
}
|
|
28608
|
-
.unit,
|
|
28609
|
-
.delta {
|
|
28610
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
28611
|
-
margin-inline-start: var(--swc-spacing-75);
|
|
28612
|
-
}
|
|
28613
|
-
svg {
|
|
28614
|
-
display: block;
|
|
28615
|
-
width: 100%;
|
|
28616
|
-
height: var(--swc-component-height-100);
|
|
28617
|
-
}
|
|
28618
|
-
polyline {
|
|
28619
|
-
fill: none;
|
|
28620
|
-
stroke: var(--swc-accent-visual-color);
|
|
28621
|
-
stroke-width: 1.5;
|
|
28622
|
-
}
|
|
28623
|
-
swc-meter {
|
|
28624
|
-
width: 100%;
|
|
28625
|
-
}
|
|
28626
|
-
.alerts {
|
|
28627
|
-
display: grid;
|
|
28628
|
-
gap: var(--swc-spacing-75);
|
|
28629
|
-
margin: 0;
|
|
28630
|
-
padding: 0;
|
|
28631
|
-
list-style: none;
|
|
28632
|
-
}
|
|
28633
|
-
.alert {
|
|
28634
|
-
display: grid;
|
|
28635
|
-
grid-template-columns: auto minmax(0, 1fr);
|
|
28636
|
-
gap: var(--swc-spacing-100);
|
|
28637
|
-
align-items: start;
|
|
28638
|
-
border-radius: var(--swc-corner-radius-medium-default);
|
|
28639
|
-
padding: var(--swc-spacing-100) var(--swc-spacing-200);
|
|
28640
|
-
background: var(--swc-notice-subtle-background-color-default);
|
|
28641
|
-
}
|
|
28642
|
-
.alert[data-severity='error'] {
|
|
28643
|
-
background: var(--swc-negative-subtle-background-color-default);
|
|
28644
|
-
}
|
|
28645
|
-
.alert swc-icon-alert-triangle {
|
|
28646
|
-
color: var(--swc-icon-color-notice);
|
|
28647
|
-
}
|
|
28648
|
-
.alert swc-icon-alert-diamond {
|
|
28649
|
-
color: var(--swc-icon-color-negative);
|
|
28650
|
-
}
|
|
28651
|
-
.alert .detail {
|
|
28652
|
-
display: block;
|
|
28653
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
28654
|
-
}
|
|
28655
|
-
.alert > div {
|
|
28656
|
-
min-width: 0;
|
|
28657
|
-
}
|
|
28658
|
-
.alert .command {
|
|
28659
|
-
display: flex;
|
|
28660
|
-
align-items: center;
|
|
28661
|
-
gap: var(--swc-spacing-100);
|
|
28662
|
-
margin-block-start: var(--swc-spacing-75);
|
|
28663
|
-
padding-inline-start: var(--swc-spacing-100);
|
|
28664
|
-
border-radius: var(--swc-corner-radius-medium-default);
|
|
28665
|
-
background: var(--swc-background-layer-1-color);
|
|
28666
|
-
}
|
|
28667
|
-
.alert code {
|
|
28668
|
-
flex: 1;
|
|
28669
|
-
min-width: 0;
|
|
28670
|
-
overflow-x: auto;
|
|
28671
|
-
white-space: nowrap;
|
|
28672
|
-
font-family: var(--swc-code-font-family-stack);
|
|
28673
|
-
font-size: var(--swc-font-size-75);
|
|
28674
|
-
color: var(--swc-code-color);
|
|
28675
|
-
}
|
|
28676
|
-
.alert .lead {
|
|
28677
|
-
display: block;
|
|
28678
|
-
margin-block-start: var(--swc-spacing-75);
|
|
28679
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
28680
|
-
}
|
|
28681
|
-
.alert .uncopied {
|
|
28682
|
-
display: block;
|
|
28683
|
-
color: var(--swc-negative-content-color-default);
|
|
28684
|
-
}
|
|
28685
|
-
.sections {
|
|
28686
|
-
display: grid;
|
|
28687
|
-
margin: 0;
|
|
28688
|
-
padding: 0;
|
|
28689
|
-
list-style: none;
|
|
28690
|
-
}
|
|
28691
|
-
.section {
|
|
28692
|
-
display: grid;
|
|
28693
|
-
}
|
|
28694
|
-
.line {
|
|
28695
|
-
display: flex;
|
|
28696
|
-
flex-wrap: wrap;
|
|
28697
|
-
align-items: center;
|
|
28698
|
-
gap: var(--swc-spacing-100);
|
|
28699
|
-
min-height: var(--swc-component-height-100);
|
|
28700
|
-
padding: var(--swc-spacing-50) 0;
|
|
28701
|
-
}
|
|
28702
|
-
.toggle {
|
|
28703
|
-
all: unset;
|
|
28704
|
-
box-sizing: border-box;
|
|
28705
|
-
flex: 1 1 auto;
|
|
28706
|
-
min-width: 0;
|
|
28707
|
-
display: flex;
|
|
28708
|
-
align-items: center;
|
|
28709
|
-
gap: var(--swc-spacing-75);
|
|
28710
|
-
cursor: pointer;
|
|
28711
|
-
border-radius: var(--swc-corner-radius-small-default);
|
|
28712
|
-
}
|
|
28713
|
-
.toggle:focus-visible {
|
|
28714
|
-
outline: var(--swc-focus-indicator-thickness) solid var(--swc-focus-indicator-color);
|
|
28715
|
-
outline-offset: var(--swc-focus-ring-gap);
|
|
28716
|
-
}
|
|
28717
|
-
.chevron {
|
|
28718
|
-
flex: none;
|
|
28719
|
-
width: var(--swc-component-height-50);
|
|
28720
|
-
display: inline-flex;
|
|
28721
|
-
justify-content: center;
|
|
28722
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
28723
|
-
}
|
|
28724
|
-
.toggle[aria-expanded='true'] swc-icon-chevron-right {
|
|
28725
|
-
transform: rotate(90deg);
|
|
28726
|
-
}
|
|
28727
|
-
:host(:dir(rtl)) .toggle[aria-expanded='false'] swc-icon-chevron-right {
|
|
28728
|
-
transform: scaleX(-1);
|
|
28729
|
-
}
|
|
28730
|
-
.line .name {
|
|
28731
|
-
flex: 1 1 auto;
|
|
28732
|
-
min-width: 0;
|
|
28733
|
-
}
|
|
28734
|
-
.line .num {
|
|
28735
|
-
font-weight: var(--swc-bold-font-weight);
|
|
28736
|
-
font-variant-numeric: tabular-nums;
|
|
28737
|
-
}
|
|
28738
|
-
.rows {
|
|
28739
|
-
display: grid;
|
|
28740
|
-
gap: var(--swc-spacing-50);
|
|
28741
|
-
margin: 0 0 var(--swc-spacing-100);
|
|
28742
|
-
padding: 0;
|
|
28743
|
-
padding-inline-start: calc(var(--swc-component-height-50) + var(--swc-spacing-75));
|
|
28744
|
-
list-style: none;
|
|
28745
|
-
}
|
|
28746
|
-
.row {
|
|
28747
|
-
display: grid;
|
|
28748
|
-
grid-template-columns: minmax(0, 1fr) auto;
|
|
28749
|
-
align-items: center;
|
|
28750
|
-
column-gap: var(--swc-spacing-100);
|
|
28751
|
-
padding-inline-start: calc(var(--depth, 0) * var(--swc-spacing-300));
|
|
28752
|
-
}
|
|
28753
|
-
.row swc-status-light {
|
|
28754
|
-
min-width: 0;
|
|
28755
|
-
overflow-wrap: break-word;
|
|
28756
|
-
}
|
|
28757
|
-
.row .badges {
|
|
28758
|
-
grid-column: 2;
|
|
28759
|
-
grid-row: 1 / span 2;
|
|
28760
|
-
align-self: start;
|
|
28761
|
-
display: flex;
|
|
28762
|
-
flex-wrap: wrap;
|
|
28763
|
-
justify-content: end;
|
|
28764
|
-
gap: var(--swc-spacing-50);
|
|
28765
|
-
}
|
|
28766
|
-
.row swc-status-light {
|
|
28767
|
-
grid-column: 1;
|
|
28768
|
-
grid-row: 1;
|
|
28769
|
-
}
|
|
28770
|
-
.row .meta {
|
|
28771
|
-
grid-column: 1;
|
|
28772
|
-
grid-row: 2;
|
|
28773
|
-
padding-inline-start: var(--swc-spacing-300);
|
|
28774
|
-
color: var(--swc-neutral-subdued-content-color-default);
|
|
28775
|
-
font-size: var(--swc-font-size-75);
|
|
28776
|
-
overflow-wrap: break-word;
|
|
28777
|
-
}
|
|
28778
|
-
`
|
|
28779
|
-
];
|
|
28780
|
-
subscribe(model) {
|
|
28781
|
-
return [model.monitor.on("snapshot", () => this.requestUpdate())];
|
|
28782
|
-
}
|
|
28783
|
-
focus() {
|
|
28784
|
-
this.focusOn(".bar swc-action-button");
|
|
28785
|
-
}
|
|
28786
|
-
#vital(vital) {
|
|
28787
|
-
if (vital.ratio !== void 0) {
|
|
28788
|
-
return b`<div class="vital" data-id=${vital.id}>
|
|
28789
|
-
<swc-meter
|
|
28790
|
-
size="s"
|
|
28791
|
-
variant=${meterVariant2(vital.ratio)}
|
|
28792
|
-
value=${Math.round(vital.ratio * 100)}
|
|
28793
|
-
value-label=${vital.value}
|
|
28794
|
-
><span slot="label">${vital.label}</span>${vital.unit ? b`<span slot="description">${vital.unit}</span>` : A}</swc-meter
|
|
28795
|
-
>
|
|
28796
|
-
</div>`;
|
|
28797
|
-
}
|
|
28798
|
-
const line = vital.series ? sparkline(vital.series) : "";
|
|
28799
|
-
return b`<div class="vital" data-id=${vital.id}>
|
|
28800
|
-
<div class="label">${vital.label}</div>
|
|
28801
|
-
<div><span class="value">${vital.value}</span>${vital.unit ? b`<span class="unit">${vital.unit}</span>` : A}${vital.delta ? b`<span class="delta">${vital.delta}</span>` : A}</div>
|
|
28802
|
-
${line ? b`<svg viewBox="0 0 120 28" preserveAspectRatio="none" aria-hidden="true">${w`<polyline points=${line}></polyline>`}</svg>` : A}
|
|
28803
|
-
</div>`;
|
|
28804
|
-
}
|
|
28805
|
-
#alert(alert) {
|
|
28806
|
-
const error = alert.severity === "error";
|
|
28807
|
-
return b`<li class="alert" data-severity=${alert.severity}>
|
|
28808
|
-
${error ? b`<swc-icon-alert-diamond size="s" aria-hidden="true"></swc-icon-alert-diamond>` : b`<swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle>`}
|
|
28809
|
-
<div><span class="sr">${error ? "Error: " : "Warning: "}</span><strong>${alert.title}</strong><span class="detail">${alert.detail}</span>${alert.command ? this.#command(alert.id, alert.command, alert.commandLabel ?? "Run") : A}</div>
|
|
28810
|
-
</li>`;
|
|
28811
|
-
}
|
|
28812
|
-
#command(id, text2, label) {
|
|
28813
|
-
const copied = this.copied?.id === id && this.copied.text === text2 ? this.copied : null;
|
|
28814
|
-
return b`<span class="lead">${label}:</span><div class="command" data-command><code>${text2}</code><swc-action-button size="s" quiet data-action="copy-command" accessible-label=${copied?.done ? "Copied" : "Copy command"} @click=${() => this.#copy(id, text2)}><swc-icon-copy slot="icon"></swc-icon-copy>${copied?.done ? "Copied" : "Copy"}</swc-action-button></div>${copied && !copied.done ? b`<span class="uncopied" role="alert" data-error="copy">Couldn’t copy. Select the command and copy it.</span>` : A}`;
|
|
28815
|
-
}
|
|
28816
|
-
async #copy(id, text2) {
|
|
28817
|
-
this.copied = { id, text: text2, done: await copyText(text2) };
|
|
28818
|
-
}
|
|
28819
|
-
#open(id) {
|
|
28820
|
-
this.dispatchEvent(
|
|
28821
|
-
new CustomEvent("show-surface", { detail: { id }, bubbles: true, composed: true })
|
|
28822
|
-
);
|
|
28823
|
-
}
|
|
28824
|
-
#row(row) {
|
|
28825
|
-
const depth = indent2(row.depth);
|
|
28826
|
-
return b`<li class="row" data-id=${row.id ?? A} data-status=${row.status} data-depth=${depth || A} style=${depth ? `--depth: ${depth}` : A}>
|
|
28827
|
-
<swc-status-light size="s" variant=${rowLights[row.status]}><span class="sr">${rowSpoken[row.status]}: </span>${row.name.split(/(?<=\/)/).map((part2, i26) => i26 ? b`<wbr>${part2}` : part2)}</swc-status-light>
|
|
28828
|
-
<span class="badges">${(row.badges ?? []).map((badge) => b`<swc-badge size="s" variant="neutral" subtle>${badge}</swc-badge>`)}</span>
|
|
28829
|
-
${row.meta ? b`<span class="meta">${row.meta}</span>` : A}
|
|
28830
|
-
</li>`;
|
|
28831
|
-
}
|
|
28832
|
-
#section(section) {
|
|
28833
|
-
const flag = attention(section);
|
|
28834
|
-
const surface2 = surfaces2[section.id];
|
|
28835
|
-
const rows = section.rows.length > 0;
|
|
28836
|
-
const open = rows && (this.expanded[section.id] ?? flag !== null);
|
|
28837
|
-
const list5 = `rows-${section.id}`;
|
|
28838
|
-
return b`<li class="section" data-id=${section.id} data-open=${open ? "" : A}>
|
|
28839
|
-
<div class="line">
|
|
28840
|
-
${rows ? b`<button class="toggle" aria-expanded=${open ? "true" : "false"} aria-controls=${open ? list5 : A} @click=${() => {
|
|
28841
|
-
this.expanded = { ...this.expanded, [section.id]: !open };
|
|
28842
|
-
}}><span class="chevron"><swc-icon-chevron-right size="s" aria-hidden="true"></swc-icon-chevron-right></span><span class="name">${section.label}</span></button>` : b`<span class="chevron"></span><span class="name">${section.label}</span>`}
|
|
28843
|
-
${flag ? b`<swc-badge size="s" variant=${flag.variant} subtle>${flag.text}</swc-badge>` : A}
|
|
28844
|
-
<span class="num">${section.rows.length}</span>
|
|
28845
|
-
${surface2 ? b`<swc-action-button size="s" quiet accessible-label=${`Open ${section.label}`} @click=${() => this.#open(surface2)}
|
|
28846
|
-
>Open</swc-action-button
|
|
28847
|
-
>` : A}
|
|
28848
|
-
</div>
|
|
28849
|
-
${open ? b`<ul class="rows" id=${list5} aria-label=${section.label}>${c(
|
|
28850
|
-
section.rows,
|
|
28851
|
-
(row, i26) => row.id ?? i26,
|
|
28852
|
-
(row) => this.#row(row)
|
|
28853
|
-
)}</ul>` : A}
|
|
28854
|
-
</li>`;
|
|
28855
|
-
}
|
|
28856
|
-
render() {
|
|
28857
|
-
const snapshot2 = this.model?.monitor.snapshot();
|
|
28858
|
-
return b`<div class="bar">
|
|
28859
|
-
<span class="heading"><strong>Live monitor</strong><span>${snapshot2 ? `Updated ${new Date(snapshot2.updatedAt).toISOString().slice(11, 19)} UTC` : "No data"}</span></span>
|
|
28860
|
-
<swc-action-button size="s" quiet @click=${() => this.model?.monitor.resync()}><swc-icon-refresh slot="icon"></swc-icon-refresh>Re-sync</swc-action-button>
|
|
28861
|
-
</div>
|
|
28862
|
-
<div class="body">
|
|
28863
|
-
${snapshot2 ? b`<div class="vitals">${snapshot2.vitals.map((vital) => this.#vital(vital))}</div>
|
|
28864
|
-
${snapshot2.alerts.length ? b`<ul class="alerts" aria-label="Alerts">${snapshot2.alerts.map((alert) => this.#alert(alert))}</ul>` : A}
|
|
28865
|
-
<ul class="sections" aria-label="Activity">${snapshot2.sections.map((section) => this.#section(section))}</ul>` : A}
|
|
28866
|
-
</div>`;
|
|
28867
|
-
}
|
|
28868
|
-
};
|
|
28869
|
-
|
|
28870
29140
|
// src/app/notices.ts
|
|
28871
29141
|
var SliccNotices = class extends ModelElement {
|
|
28872
29142
|
static properties = {
|
|
@@ -29131,8 +29401,8 @@ function revealed(name, entries, now = Date.now(), more = false) {
|
|
|
29131
29401
|
const start = startOfDay(now);
|
|
29132
29402
|
const today = reveals.filter((entry) => entry.at >= start).length;
|
|
29133
29403
|
const partial = more && (entries[entries.length - 1]?.at ?? 0) >= start;
|
|
29134
|
-
const
|
|
29135
|
-
return b`Revealed to programs ${
|
|
29404
|
+
const when2 = today ? `${partial ? "at least " : ""}${today} ${today === 1 ? "time" : "times"} today` : since(last.at, now);
|
|
29405
|
+
return b`Revealed to programs ${when2}, last by ${who(last)} with <code>${last.argv}</code>`;
|
|
29136
29406
|
}
|
|
29137
29407
|
function changes(entry, devices) {
|
|
29138
29408
|
if (entry.changes)
|
|
@@ -29193,8 +29463,8 @@ var importKinds = {
|
|
|
29193
29463
|
};
|
|
29194
29464
|
function exported(at) {
|
|
29195
29465
|
if (at === void 0) return A;
|
|
29196
|
-
const
|
|
29197
|
-
return b`<span class="muted" data-exported>${
|
|
29466
|
+
const when2 = at === null ? "Never exported" : `Last exported ${new Intl.DateTimeFormat(void 0, { dateStyle: "medium" }).format(at)}`;
|
|
29467
|
+
return b`<span class="muted" data-exported>${when2}</span>`;
|
|
29198
29468
|
}
|
|
29199
29469
|
function prompt2(text2) {
|
|
29200
29470
|
return text2.length > 200 ? `${text2.slice(0, 199)}\u2026` : text2;
|
|
@@ -30313,6 +30583,9 @@ var SliccSettings = class extends ThemedElement {
|
|
|
30313
30583
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
30314
30584
|
font-size: var(--swc-font-size-75);
|
|
30315
30585
|
}
|
|
30586
|
+
.switched {
|
|
30587
|
+
grid-column: 2;
|
|
30588
|
+
}
|
|
30316
30589
|
.failure,
|
|
30317
30590
|
.problem {
|
|
30318
30591
|
display: flex;
|
|
@@ -30331,6 +30604,9 @@ var SliccSettings = class extends ThemedElement {
|
|
|
30331
30604
|
grid-template-columns: minmax(0, 1fr);
|
|
30332
30605
|
gap: var(--swc-spacing-75);
|
|
30333
30606
|
}
|
|
30607
|
+
.switched {
|
|
30608
|
+
grid-column: 1;
|
|
30609
|
+
}
|
|
30334
30610
|
.accounts {
|
|
30335
30611
|
grid-template-columns: minmax(0, 1fr) max-content;
|
|
30336
30612
|
row-gap: var(--swc-spacing-400);
|
|
@@ -30361,10 +30637,15 @@ var SliccSettings = class extends ThemedElement {
|
|
|
30361
30637
|
];
|
|
30362
30638
|
subscribe(model) {
|
|
30363
30639
|
const update = () => this.requestUpdate();
|
|
30640
|
+
const settle2 = () => {
|
|
30641
|
+
settleModels(model);
|
|
30642
|
+
update();
|
|
30643
|
+
};
|
|
30644
|
+
queueMicrotask(() => settleModels(model));
|
|
30364
30645
|
return [
|
|
30365
30646
|
...super.subscribe(model),
|
|
30366
|
-
model.settings.on("settings",
|
|
30367
|
-
model.settings.on("accounts",
|
|
30647
|
+
model.settings.on("settings", settle2),
|
|
30648
|
+
model.settings.on("accounts", settle2),
|
|
30368
30649
|
...model.vault ? [model.vault.on("status", update)] : []
|
|
30369
30650
|
];
|
|
30370
30651
|
}
|
|
@@ -30374,6 +30655,15 @@ var SliccSettings = class extends ThemedElement {
|
|
|
30374
30655
|
#update(patch) {
|
|
30375
30656
|
this.model?.settings.update(patch);
|
|
30376
30657
|
}
|
|
30658
|
+
#pickModel(event2) {
|
|
30659
|
+
forgetSwitch(this.model);
|
|
30660
|
+
this.#update({ model: this.#value(event2) });
|
|
30661
|
+
}
|
|
30662
|
+
#switched(current) {
|
|
30663
|
+
const note = modelSwitch(this.model);
|
|
30664
|
+
if (note?.to.id !== current) return A;
|
|
30665
|
+
return b`<p class="hint switched" role="status" data-switched>Switched to ${note.to.label} because the previous model's provider isn't set up.</p>`;
|
|
30666
|
+
}
|
|
30377
30667
|
#value(event2) {
|
|
30378
30668
|
return event2.target.value;
|
|
30379
30669
|
}
|
|
@@ -30721,9 +31011,10 @@ var SliccSettings = class extends ThemedElement {
|
|
|
30721
31011
|
<div class="rows">
|
|
30722
31012
|
<div class="row">
|
|
30723
31013
|
<span class="label" id="model">Model for new cones</span>
|
|
30724
|
-
<sp-picker size="m" label="Model" aria-labelledby="model" value=${value.model} @change=${(e120) => this.#
|
|
31014
|
+
<sp-picker size="m" label="Model" aria-labelledby="model" value=${value.model} @change=${(e120) => this.#pickModel(e120)}>
|
|
30725
31015
|
${chatModels(settings.models()).map((option2) => b`<sp-menu-item value=${option2.id}>${option2.label}<span slot="description">${option2.provider}</span></sp-menu-item>`)}
|
|
30726
31016
|
</sp-picker>
|
|
31017
|
+
${this.#switched(value.model)}
|
|
30727
31018
|
</div>
|
|
30728
31019
|
<div class="row">
|
|
30729
31020
|
<span class="label" id="thinking">Thinking</span>
|
|
@@ -31140,12 +31431,12 @@ var SliccSprinkle = class extends ThemedElement {
|
|
|
31140
31431
|
const held = { port, id, ready: false, value: null };
|
|
31141
31432
|
this.#held = held;
|
|
31142
31433
|
this.#frame = { key: "", doc: "" };
|
|
31143
|
-
const
|
|
31434
|
+
const settle2 = (value) => {
|
|
31144
31435
|
held.value = value ?? null;
|
|
31145
31436
|
held.ready = true;
|
|
31146
31437
|
if (this.#held === held) this.requestUpdate();
|
|
31147
31438
|
};
|
|
31148
|
-
ask.call(port, id, "getState", []).then(
|
|
31439
|
+
ask.call(port, id, "getState", []).then(settle2, () => settle2(null));
|
|
31149
31440
|
}
|
|
31150
31441
|
willUpdate(changed) {
|
|
31151
31442
|
super.willUpdate(changed);
|
|
@@ -43113,8 +43404,8 @@ var SecondPassVisitor = {
|
|
|
43113
43404
|
openRefs,
|
|
43114
43405
|
reffedNodesByReferencer
|
|
43115
43406
|
}) {
|
|
43116
|
-
const
|
|
43117
|
-
if (
|
|
43407
|
+
const origin2 = groupOriginByCopy.get(node);
|
|
43408
|
+
if (origin2 && openRefs.has(node.number)) {
|
|
43118
43409
|
const recursion2 = setParent(createRecursion(node.number), parent);
|
|
43119
43410
|
reffedNodesByReferencer.set(recursion2, openRefs.get(node.number));
|
|
43120
43411
|
replaceWith(recursion2);
|
|
@@ -43131,7 +43422,7 @@ var SecondPassVisitor = {
|
|
|
43131
43422
|
if (
|
|
43132
43423
|
// This group is from subroutine expansion, and there's a multiplex value from either the
|
|
43133
43424
|
// origin node or a prior subroutine expansion group with the same origin
|
|
43134
|
-
|
|
43425
|
+
origin2 === multiplex.node || origin2 && origin2 === multiplex.origin || // This group is not from subroutine expansion, and it comes after a subroutine expansion
|
|
43135
43426
|
// group that refers to this group
|
|
43136
43427
|
node === multiplex.origin
|
|
43137
43428
|
) {
|
|
@@ -43139,14 +43430,14 @@ var SecondPassVisitor = {
|
|
|
43139
43430
|
break;
|
|
43140
43431
|
}
|
|
43141
43432
|
}
|
|
43142
|
-
multiplexCapturesToLeftByRef.get(node.number).push({ node, origin });
|
|
43433
|
+
multiplexCapturesToLeftByRef.get(node.number).push({ node, origin: origin2 });
|
|
43143
43434
|
if (node.name) {
|
|
43144
|
-
multiplexCapturesToLeftByRef.get(node.name).push({ node, origin });
|
|
43435
|
+
multiplexCapturesToLeftByRef.get(node.name).push({ node, origin: origin2 });
|
|
43145
43436
|
}
|
|
43146
43437
|
if (node.name) {
|
|
43147
43438
|
const groupsWithSameName = getOrInsert(groupsByName, node.name, /* @__PURE__ */ new Map());
|
|
43148
43439
|
let hasDuplicateNameToRemove = false;
|
|
43149
|
-
if (
|
|
43440
|
+
if (origin2) {
|
|
43150
43441
|
hasDuplicateNameToRemove = true;
|
|
43151
43442
|
} else {
|
|
43152
43443
|
for (const groupInfo of groupsWithSameName.values()) {
|
|
@@ -43618,11 +43909,11 @@ var generator = {
|
|
|
43618
43909
|
CapturingGroup(node, state3, gen) {
|
|
43619
43910
|
const { body: body4, name, number: number2 } = node;
|
|
43620
43911
|
const data = { ignoreCase: state3.currentFlags.ignoreCase };
|
|
43621
|
-
const
|
|
43622
|
-
if (
|
|
43912
|
+
const origin2 = state3.originMap.get(node);
|
|
43913
|
+
if (origin2) {
|
|
43623
43914
|
data.hidden = true;
|
|
43624
|
-
if (number2 >
|
|
43625
|
-
data.transferTo =
|
|
43915
|
+
if (number2 > origin2.number) {
|
|
43916
|
+
data.transferTo = origin2.number;
|
|
43626
43917
|
}
|
|
43627
43918
|
}
|
|
43628
43919
|
state3.captureMap.set(number2, data);
|
|
@@ -70542,13 +70833,13 @@ var DockviewComponent = class extends BaseGrid {
|
|
|
70542
70833
|
/** ISmartGuidesHost: the main grid's splitter (sash) rectangles, in the
|
|
70543
70834
|
* floating container's coordinate space, for the optional splitter target. */
|
|
70544
70835
|
getGridSplitterRects() {
|
|
70545
|
-
const
|
|
70836
|
+
const origin2 = this.getFloatingContainer().getBoundingClientRect();
|
|
70546
70837
|
const result = [];
|
|
70547
70838
|
this.gridview.element.querySelectorAll(".dv-sash").forEach((sash) => {
|
|
70548
70839
|
const r40 = sash.getBoundingClientRect();
|
|
70549
70840
|
result.push({
|
|
70550
|
-
left: r40.left -
|
|
70551
|
-
top: r40.top -
|
|
70841
|
+
left: r40.left - origin2.left,
|
|
70842
|
+
top: r40.top - origin2.top,
|
|
70552
70843
|
width: r40.width,
|
|
70553
70844
|
height: r40.height
|
|
70554
70845
|
});
|
|
@@ -72775,10 +73066,10 @@ var DockviewComponent = class extends BaseGrid {
|
|
|
72775
73066
|
* therefore report as one, tagged with the kind of the last to finish.
|
|
72776
73067
|
*/
|
|
72777
73068
|
openMutation(kind) {
|
|
72778
|
-
const
|
|
73069
|
+
const origin2 = this._origin;
|
|
72779
73070
|
if (this._mutationDepth === 0) this._onWillMutateLayout.fire({
|
|
72780
73071
|
kind,
|
|
72781
|
-
origin
|
|
73072
|
+
origin: origin2
|
|
72782
73073
|
});
|
|
72783
73074
|
this._mutationDepth++;
|
|
72784
73075
|
return () => {
|
|
@@ -72788,7 +73079,7 @@ var DockviewComponent = class extends BaseGrid {
|
|
|
72788
73079
|
this.flushLocationChanges();
|
|
72789
73080
|
this._onDidMutateLayout.fire({
|
|
72790
73081
|
kind,
|
|
72791
|
-
origin
|
|
73082
|
+
origin: origin2
|
|
72792
73083
|
});
|
|
72793
73084
|
}
|
|
72794
73085
|
};
|
|
@@ -72852,10 +73143,10 @@ var DockviewComponent = class extends BaseGrid {
|
|
|
72852
73143
|
* call made while a mutation is already in flight) keeps whatever the
|
|
72853
73144
|
* enclosing operation established, so the trigger always wins.
|
|
72854
73145
|
*/
|
|
72855
|
-
withOrigin(
|
|
73146
|
+
withOrigin(origin2, func) {
|
|
72856
73147
|
if (this._originDepth > 0 || this._mutationDepth > 0) return func();
|
|
72857
73148
|
const previous = this._origin;
|
|
72858
|
-
this._origin =
|
|
73149
|
+
this._origin = origin2;
|
|
72859
73150
|
this._originDepth++;
|
|
72860
73151
|
try {
|
|
72861
73152
|
return func();
|
|
@@ -83018,8 +83309,9 @@ export {
|
|
|
83018
83309
|
panelCommand,
|
|
83019
83310
|
prompt,
|
|
83020
83311
|
resolveColor,
|
|
83312
|
+
secretRules,
|
|
83021
83313
|
setGrammarBase,
|
|
83022
|
-
surfaces
|
|
83314
|
+
surfaces2 as surfaces
|
|
83023
83315
|
};
|
|
83024
83316
|
/*! Bundled license information:
|
|
83025
83317
|
|