@quanta-intellect/vessel-browser 0.1.138 → 0.1.140
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.
|
@@ -3763,6 +3763,17 @@
|
|
|
3763
3763
|
background: var(--surface-active);
|
|
3764
3764
|
}
|
|
3765
3765
|
|
|
3766
|
+
.tool-chip-failed {
|
|
3767
|
+
border-left-color: color-mix(in srgb, var(--error) 60%, transparent);
|
|
3768
|
+
background: color-mix(in srgb, var(--error) 8%, var(--surface-hover));
|
|
3769
|
+
}
|
|
3770
|
+
|
|
3771
|
+
.tool-chip-failed .tool-chip-icon,
|
|
3772
|
+
.tool-chip-failed .tool-chip-args {
|
|
3773
|
+
color: color-mix(in srgb, var(--error) 80%, var(--text-muted));
|
|
3774
|
+
opacity: 1;
|
|
3775
|
+
}
|
|
3776
|
+
|
|
3766
3777
|
.tool-chip-icon {
|
|
3767
3778
|
flex-shrink: 0;
|
|
3768
3779
|
width: 16px;
|
|
@@ -6158,6 +6158,14 @@ function getSkillSlashSuggestions(value, kits, limit = 6) {
|
|
|
6158
6158
|
return left.kit.name.localeCompare(right.kit.name);
|
|
6159
6159
|
}).slice(0, limit).map(({ kit }) => kit);
|
|
6160
6160
|
}
|
|
6161
|
+
function canRunWithoutSlashTask(kit, inputKey) {
|
|
6162
|
+
if (inputKey !== "task") return false;
|
|
6163
|
+
const taskPlaceholder = `{{${inputKey}}}`;
|
|
6164
|
+
const placeholderIndex = kit.promptTemplate.indexOf(taskPlaceholder);
|
|
6165
|
+
if (placeholderIndex <= 0) return false;
|
|
6166
|
+
const leadingInstructions = kit.promptTemplate.slice(0, placeholderIndex).replace(/\{\{\w+\}\}/g, "").replace(/\btask\s*:?\s*$/i, "").trim();
|
|
6167
|
+
return /[a-z0-9]/i.test(leadingInstructions);
|
|
6168
|
+
}
|
|
6161
6169
|
function buildSlashSkillValues(kit, task) {
|
|
6162
6170
|
const values = {};
|
|
6163
6171
|
for (const input of kit.inputs) {
|
|
@@ -6167,12 +6175,15 @@ function buildSlashSkillValues(kit, task) {
|
|
|
6167
6175
|
if (targetInput) {
|
|
6168
6176
|
values[targetInput.key] = task;
|
|
6169
6177
|
}
|
|
6170
|
-
const missingLabels = kit.inputs.filter((input) => input.required).filter((input) =>
|
|
6178
|
+
const missingLabels = kit.inputs.filter((input) => input.required).filter((input) => {
|
|
6179
|
+
if (values[input.key]?.trim()) return false;
|
|
6180
|
+
return !canRunWithoutSlashTask(kit, input.key);
|
|
6181
|
+
}).map((input) => input.label);
|
|
6171
6182
|
return { values, missingLabels };
|
|
6172
6183
|
}
|
|
6173
6184
|
function renderKitPrompt(kit, values) {
|
|
6174
6185
|
for (const input of kit.inputs) {
|
|
6175
|
-
if (input.required && !values[input.key]?.trim()) {
|
|
6186
|
+
if (input.required && !values[input.key]?.trim() && !canRunWithoutSlashTask(kit, input.key)) {
|
|
6176
6187
|
logger$1.warn(
|
|
6177
6188
|
`Required field "${input.key}" is empty for kit "${kit.id}".`
|
|
6178
6189
|
);
|
|
@@ -7594,8 +7605,9 @@ const TOOL_ICONS = {
|
|
|
7594
7605
|
function renderToolChip(name, args) {
|
|
7595
7606
|
const icon = TOOL_ICONS[name] || "⚙";
|
|
7596
7607
|
const displayName = name.replace(/_/g, " ");
|
|
7608
|
+
const failed = args.trim().startsWith("⚠");
|
|
7597
7609
|
const argsHtml = args ? `<span class="tool-chip-args">${escapeHtml(args.length > MAX_PREVIEW_TEXT ? args.slice(0, TRUNCATE_KEEP) + "..." : args)}</span>` : "";
|
|
7598
|
-
return `<div class="tool-chip"><span class="tool-chip-icon">${icon}</span><span class="tool-chip-name">${escapeHtml(displayName)}</span>${argsHtml}</div>`;
|
|
7610
|
+
return `<div class="tool-chip${failed ? " tool-chip-failed" : ""}"><span class="tool-chip-icon">${icon}</span><span class="tool-chip-name">${escapeHtml(displayName)}</span>${argsHtml}</div>`;
|
|
7599
7611
|
}
|
|
7600
7612
|
function renderMarkdown(source) {
|
|
7601
7613
|
const codeBlocks = [];
|
|
@@ -10089,11 +10101,6 @@ ${contextBlock}` : contextBlock);
|
|
|
10089
10101
|
const kits = [...BUNDLED_KITS, ...installedKits];
|
|
10090
10102
|
const invocation = parseSkillSlashInvocation(prompt, kits);
|
|
10091
10103
|
if (invocation) {
|
|
10092
|
-
if (!invocation.task) {
|
|
10093
|
-
const [command] = prompt.split(/\s+/);
|
|
10094
|
-
setChatCommandError(`Add instructions after ${command}.`);
|
|
10095
|
-
return;
|
|
10096
|
-
}
|
|
10097
10104
|
const {
|
|
10098
10105
|
values,
|
|
10099
10106
|
missingLabels
|
package/out/renderer/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; base-uri 'none'; object-src 'none'; frame-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self' data:; form-action 'self';" />
|
|
7
7
|
<title>Vessel</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-l3uzsLbO.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/index-T8vlGvDJ.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quanta-intellect/vessel-browser",
|
|
3
3
|
"mcpName": "io.github.unmodeled-tyler/vessel-browser",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.140",
|
|
5
5
|
"description": "AI-native web browser runtime for autonomous agents with human supervision",
|
|
6
6
|
"main": "./out/main/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"repository": {
|
|
72
72
|
"type": "git",
|
|
73
|
-
"url": "https://github.com/unmodeled-tyler/
|
|
73
|
+
"url": "https://github.com/unmodeled-tyler/vessel-browser.git"
|
|
74
74
|
},
|
|
75
75
|
"engines": {
|
|
76
76
|
"node": ">=22.12.0",
|