@frockbot/plugin-shell 0.1.2 → 0.1.4
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/package.json +28 -28
- package/src/backend-composition.ts +4 -4
- package/src/backend-configuration.test.ts +366 -1451
- package/src/backend-execution.ts +0 -4
- package/src/backend-image.test.ts +8 -8
- package/src/backend-image.ts +13 -13
- package/src/backend-isolate.test.ts +181 -35
- package/src/backend-isolate.ts +110 -72
- package/src/backend-recovery-integration.test.ts +17 -67
- package/src/backend-routines.ts +1 -1
- package/src/backend.ts +335 -1659
- package/src/client/FrockBotApp.vue +6 -73
- package/src/client/index.test.ts +320 -380
- package/src/client/index.ts +85 -256
- package/src/client/model-presentation.test.ts +21 -8
- package/src/client/model-presentation.ts +14 -7
- package/src/client/styles.css +0 -27
- package/src/settings-links.test.ts +2 -10
- package/src/settings-links.ts +1 -13
- package/src/shared.ts +0 -13
- package/src/backend-assignment.test.ts +0 -161
- package/src/backend-assignment.ts +0 -274
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { clientSurfaceRegistryKey } from "@frockbot/client-core";
|
|
3
3
|
import {
|
|
4
4
|
announceUiAnchor,
|
|
5
|
-
UiButton,
|
|
6
5
|
UiIcon,
|
|
7
6
|
UiIconButton,
|
|
8
7
|
UiMarkdown,
|
|
@@ -168,33 +167,6 @@ const botName = computed(
|
|
|
168
167
|
);
|
|
169
168
|
const isRunning = computed(() => Boolean(state.value.activeRunId));
|
|
170
169
|
const isConnecting = computed(() => state.value.connection !== "ready");
|
|
171
|
-
const needsModel = computed(() => state.value.modelSource === "none");
|
|
172
|
-
const hasConnectedModelProvider = computed(() => {
|
|
173
|
-
const user = state.value.userSettings;
|
|
174
|
-
if (!user) return false;
|
|
175
|
-
return user.connections.some((connection) => {
|
|
176
|
-
if (connection.state !== "ready") return false;
|
|
177
|
-
const installed = user.packages.some(
|
|
178
|
-
(pkg) =>
|
|
179
|
-
pkg.packageId === connection.packageId && pkg.state === "installed",
|
|
180
|
-
);
|
|
181
|
-
const pkg = state.value.pluginCatalog.find(
|
|
182
|
-
(candidate) => candidate.packageId === connection.packageId,
|
|
183
|
-
);
|
|
184
|
-
const connectionType = pkg?.connectionTypes.find(
|
|
185
|
-
(candidate) => candidate.id === connection.connectionTypeId,
|
|
186
|
-
);
|
|
187
|
-
return Boolean(
|
|
188
|
-
installed &&
|
|
189
|
-
pkg?.capabilities.some(
|
|
190
|
-
(capability) =>
|
|
191
|
-
capability.kind === "model" &&
|
|
192
|
-
connectionType?.capabilities.includes(capability.id) &&
|
|
193
|
-
capability.connectionTypes.includes(connectionType.id),
|
|
194
|
-
),
|
|
195
|
-
);
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
170
|
const canSend = computed(
|
|
199
171
|
() =>
|
|
200
172
|
state.value.connection === "ready" &&
|
|
@@ -380,17 +352,6 @@ const applySettingsDeepLink = (): void => {
|
|
|
380
352
|
if (anchor) void nextTick(() => announceUiAnchor(anchor));
|
|
381
353
|
};
|
|
382
354
|
|
|
383
|
-
function openModelSetup(): void {
|
|
384
|
-
const registry = surfaces;
|
|
385
|
-
if (!registry) return;
|
|
386
|
-
if (hasConnectedModelProvider.value && registry.has("user-settings")) {
|
|
387
|
-
registry.open("user-settings");
|
|
388
|
-
void nextTick(() => announceUiAnchor("user-default-model"));
|
|
389
|
-
return;
|
|
390
|
-
}
|
|
391
|
-
if (registry.has("plugins")) registry.open("plugins");
|
|
392
|
-
}
|
|
393
|
-
|
|
394
355
|
onMounted(() => {
|
|
395
356
|
void web.value.loadPluginCatalog();
|
|
396
357
|
void scrollToLatest("auto");
|
|
@@ -665,15 +626,7 @@ function handleComposerKeydown(event: KeyboardEvent): void {
|
|
|
665
626
|
/></span>
|
|
666
627
|
<div class="workspace-title">
|
|
667
628
|
<strong>{{ botName }}</strong>
|
|
668
|
-
<small
|
|
669
|
-
<button
|
|
670
|
-
v-else
|
|
671
|
-
type="button"
|
|
672
|
-
class="model-setup-link"
|
|
673
|
-
@click="openModelSetup"
|
|
674
|
-
>
|
|
675
|
-
Choose a model
|
|
676
|
-
</button>
|
|
629
|
+
<small>{{ state.modelLabel }}</small>
|
|
677
630
|
</div>
|
|
678
631
|
<k-slot name="frockbot.header-actions" />
|
|
679
632
|
</header>
|
|
@@ -690,27 +643,16 @@ function handleComposerKeydown(event: KeyboardEvent): void {
|
|
|
690
643
|
{{
|
|
691
644
|
state.modelReady
|
|
692
645
|
? `${botName} is ready.`
|
|
693
|
-
:
|
|
694
|
-
? `${botName} needs a model.`
|
|
695
|
-
: `${botName} isn't ready.`
|
|
646
|
+
: `${botName} isn't ready.`
|
|
696
647
|
}}
|
|
697
648
|
</h1>
|
|
698
649
|
<p>
|
|
699
650
|
{{
|
|
700
651
|
state.modelReady
|
|
701
652
|
? "Start with a conversation. Cordis plugins can add the rest."
|
|
702
|
-
:
|
|
703
|
-
? "Pick a default to start chatting."
|
|
704
|
-
: "Check this Bot's model Connection."
|
|
653
|
+
: "Check this Bot's model Connection."
|
|
705
654
|
}}
|
|
706
655
|
</p>
|
|
707
|
-
<UiButton
|
|
708
|
-
v-if="needsModel"
|
|
709
|
-
variant="primary"
|
|
710
|
-
@click="openModelSetup"
|
|
711
|
-
>
|
|
712
|
-
Choose a model
|
|
713
|
-
</UiButton>
|
|
714
656
|
</div>
|
|
715
657
|
<article
|
|
716
658
|
v-for="message in messages"
|
|
@@ -746,7 +688,7 @@ function handleComposerKeydown(event: KeyboardEvent): void {
|
|
|
746
688
|
<UiMarkdown :text="message.text" />
|
|
747
689
|
</div>
|
|
748
690
|
<!--
|
|
749
|
-
A binary a tool filed in
|
|
691
|
+
A binary a tool filed in the Workspace, drawn from the
|
|
750
692
|
Workspace read route. The thread carries the path, never the
|
|
751
693
|
bytes, so a long conversation costs paths and the image is
|
|
752
694
|
fetched only when it is on screen.
|
|
@@ -894,16 +836,7 @@ function handleComposerKeydown(event: KeyboardEvent): void {
|
|
|
894
836
|
</span>
|
|
895
837
|
</li>
|
|
896
838
|
</ul>
|
|
897
|
-
<
|
|
898
|
-
v-if="!isRunning && !isConnecting && needsModel"
|
|
899
|
-
type="button"
|
|
900
|
-
class="composer-model-setup"
|
|
901
|
-
variant="primary"
|
|
902
|
-
@click="openModelSetup"
|
|
903
|
-
>
|
|
904
|
-
Choose a model
|
|
905
|
-
</UiButton>
|
|
906
|
-
<div v-else class="composer-body">
|
|
839
|
+
<div class="composer-body">
|
|
907
840
|
<ul v-if="attachedSkills.length > 0" class="skill-chips">
|
|
908
841
|
<li v-for="entry in attachedSkills" :key="entry.ref">
|
|
909
842
|
<button
|
|
@@ -950,7 +883,7 @@ function handleComposerKeydown(event: KeyboardEvent): void {
|
|
|
950
883
|
@click="web.stopRun()"
|
|
951
884
|
/>
|
|
952
885
|
<UiIconButton
|
|
953
|
-
v-else
|
|
886
|
+
v-else
|
|
954
887
|
type="submit"
|
|
955
888
|
icon="arrow-up"
|
|
956
889
|
label="Send message"
|