@harness-mix/cli 0.1.5 → 0.1.6
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 +1 -1
- package/docs/harness-management.md +4 -4
- package/docs/multi-agent-collaboration.md +9 -9
- package/output/native-build/renderer-extension.js +1959 -435
- package/package.json +9 -8
- package/scripts/collaboration-test.cjs +8 -3
- package/scripts/collaboration-ui-smoke.cjs +40 -26
- package/scripts/integrations-test.cjs +63 -4
- package/scripts/integrations-ui-smoke.cjs +77 -16
- package/scripts/native-protocol-test.cjs +102 -1
- package/scripts/native-sidebar-test.cjs +7 -0
- package/scripts/native-skill-roots-test.cjs +90 -0
- package/scripts/test-live-mentions.cjs +152 -0
- package/src/main/adapters/antigravity.js +20 -17
- package/src/main/adapters/claude.js +41 -8
- package/src/main/adapters/codebuddy.js +1 -0
- package/src/main/adapters/codex.js +20 -2
- package/src/main/adapters/cursor.js +5 -1
- package/src/main/adapters/dsh.js +8 -1
- package/src/main/adapters/grok.js +4 -1
- package/src/main/adapters/hermes.js +8 -0
- package/src/main/adapters/kiro.js +2 -1
- package/src/main/adapters/managed-mcp.js +15 -2
- package/src/main/adapters/omp.js +11 -0
- package/src/main/adapters/openclaw.js +6 -0
- package/src/main/adapters/opencode.js +5 -1
- package/src/main/adapters/pi.js +5 -1
- package/src/main/adapters/qoder.js +1 -0
- package/src/main/adapters/trae.js +4 -0
- package/src/main/adapters/zcode.js +3 -0
- package/src/main/host/collaboration.js +57 -11
- package/src/main/host/integrations.js +164 -26
- package/src/main/host/runtime.js +126 -86
- package/src/main/native/protocol.js +189 -78
- package/src/main/native/thread-list.js +3 -0
- package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-chatgpt-context.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts +11 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-integrations-client.d.ts +29 -4
- package/src/native-ui/renderer-extension/dist/types/renderer-integrations-client.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/integrations-page.d.ts +2 -1
- package/src/native-ui/renderer-extension/dist/types/settings/integrations-page.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +1 -1
- package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/renderer-extension/src/harness-mix-settings.ts +3 -2
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +149 -171
- package/src/native-ui/renderer-extension/src/renderer-chatgpt-context.ts +5 -1
- package/src/native-ui/renderer-extension/src/renderer-harness-mentions.ts +556 -123
- package/src/native-ui/renderer-extension/src/renderer-integrations-client.ts +36 -3
- package/src/native-ui/renderer-extension/src/settings/integrations-page.ts +1434 -62
- package/src/native-ui/renderer-extension/src/settings/localization.ts +4 -2
- package/src/native-ui/renderer-extension/src/settings/pages.ts +5 -3
- package/src/native-ui/renderer-extension/src/settings/shell.css +96 -6
- package/src/native-ui/renderer-extension/test/renderer-chatgpt-context.test.ts +4 -1
- package/src/native-ui/renderer-extension/test/settings/localization.test.ts +1 -1
- package/src/native-ui/renderer-extension/test/settings/shell.test.ts +5 -2
|
@@ -511,7 +511,8 @@ const ENGLISH_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
|
511
511
|
pageLabels: Object.freeze({
|
|
512
512
|
connections: "Connections",
|
|
513
513
|
accounts: "Accounts",
|
|
514
|
-
|
|
514
|
+
mcp: 'MCP',
|
|
515
|
+
skills: 'Skills',
|
|
515
516
|
"session-import": "Session Import",
|
|
516
517
|
updates: "Updates",
|
|
517
518
|
about: "About",
|
|
@@ -767,7 +768,8 @@ const CHINESE_MESSAGES: RendererSettingsMessages = Object.freeze({
|
|
|
767
768
|
pageLabels: Object.freeze({
|
|
768
769
|
connections: "连接",
|
|
769
770
|
accounts: "账号",
|
|
770
|
-
|
|
771
|
+
mcp: 'MCP',
|
|
772
|
+
skills: 'Skills',
|
|
771
773
|
"session-import": "会话导入",
|
|
772
774
|
updates: "更新",
|
|
773
775
|
about: "关于",
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
type RendererImportedThreadOpener,
|
|
28
28
|
} from "./session-import-page.js";
|
|
29
29
|
import { createReleaseNotesElement } from "./release-notes.js";
|
|
30
|
-
import {
|
|
30
|
+
import { createMcpSettingsPage, createSkillsSettingsPage } from './integrations-page.js';
|
|
31
31
|
import type { RendererIntegrationsClient } from '../renderer-integrations-client.js';
|
|
32
32
|
import { createAccountsSettingsPage, type RendererCodexAccountClient } from "./accounts-page.js";
|
|
33
33
|
|
|
@@ -74,7 +74,8 @@ function windowsInstallerDownloadUrl(window: Window | null | undefined, version:
|
|
|
74
74
|
export const DEFAULT_RENDERER_SETTINGS_PAGE_IDS = [
|
|
75
75
|
"connections",
|
|
76
76
|
"accounts",
|
|
77
|
-
"
|
|
77
|
+
"mcp",
|
|
78
|
+
"skills",
|
|
78
79
|
"session-import",
|
|
79
80
|
"updates",
|
|
80
81
|
"about",
|
|
@@ -629,7 +630,8 @@ export function createDefaultRendererSettingsPages(
|
|
|
629
630
|
return Object.freeze([
|
|
630
631
|
createConnectionsSettingsPage(messages, getDiagnostics),
|
|
631
632
|
createAccountsSettingsPage(messages, getAccountClient),
|
|
632
|
-
|
|
633
|
+
createMcpSettingsPage(messages, getIntegrationsClient),
|
|
634
|
+
createSkillsSettingsPage(messages, getIntegrationsClient),
|
|
633
635
|
createSessionImportSettingsPage(messages, getSessionImportClient, openImportedThread),
|
|
634
636
|
updatesPage(messages, getUpdateClient),
|
|
635
637
|
aboutPage(messages, getUpdateClient),
|
|
@@ -2236,16 +2236,106 @@ button {
|
|
|
2236
2236
|
.settings-install-steps li {
|
|
2237
2237
|
margin-bottom: 2px;
|
|
2238
2238
|
}
|
|
2239
|
-
/* MCP
|
|
2240
|
-
.settings-integrations-controls { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 18px 0; }
|
|
2239
|
+
/* MCP and Skills share native settings controls while keeping separate flows. */
|
|
2240
|
+
.settings-integrations-controls { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 18px 0 12px; }
|
|
2241
2241
|
.settings-integrations-controls input { flex: 1; min-width: 180px; }
|
|
2242
2242
|
.settings-integrations-controls input[hidden] { display: none; }
|
|
2243
2243
|
.settings-integrations-controls select, .settings-integrations-controls input,
|
|
2244
|
-
.settings-integrations-field input, .settings-integrations-
|
|
2244
|
+
.settings-integrations-field input, .settings-integrations-toolbar input { box-sizing: border-box; padding: 9px 11px; border: 1px solid var(--settings-border, #8885); border-radius: 8px; color: inherit; background: var(--settings-input, transparent); font: inherit; }
|
|
2245
|
+
.settings-integrations-status { min-height: 18px; margin: 0 0 6px; color: var(--settings-muted); font-size: 12px; }
|
|
2245
2246
|
.settings-integrations-body p { font-size: 12px; line-height: 1.6; opacity: .8; }
|
|
2246
|
-
.settings-integrations-
|
|
2247
|
+
.settings-integrations-toolbar { display: flex; gap: 10px; align-items: center; margin: 8px 0 16px; }
|
|
2248
|
+
.settings-integrations-toolbar input { flex: 1; }
|
|
2249
|
+
.settings-integrations-list { display: grid; gap: 8px; }
|
|
2250
|
+
.settings-integrations-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; border: 1px solid var(--settings-border, #8885); padding: 14px; border-radius: 10px; background: var(--settings-surface, transparent); }
|
|
2247
2251
|
.settings-integrations-row > div { flex: 1; min-width: 180px; }
|
|
2248
|
-
.settings-integrations-row
|
|
2249
|
-
.settings-integrations-
|
|
2252
|
+
.settings-integrations-row p { margin: 3px 0; }
|
|
2253
|
+
.settings-integrations-row code { display: block; overflow-wrap: anywhere; font-size: 11px; color: var(--settings-muted); }
|
|
2254
|
+
.settings-integrations-row--native { border-style: dashed; }
|
|
2255
|
+
.settings-integrations-empty { padding: 36px 18px; border: 1px dashed var(--settings-border, #8885); border-radius: 10px; text-align: center; color: var(--settings-muted); font-size: 12px; }
|
|
2256
|
+
.settings-integrations-editor-head { display: flex; align-items: center; gap: 12px; }
|
|
2257
|
+
.settings-integrations-editor-head h3 { margin: 0; }
|
|
2258
|
+
.settings-integrations-form { display: grid; gap: 14px; margin: 16px 0 28px; }
|
|
2259
|
+
.settings-integrations-form--card { padding: 16px; border: 1px solid var(--settings-border, #8885); border-radius: 12px; }
|
|
2250
2260
|
.settings-integrations-field { display: grid; gap: 6px; font-size: 12px; }
|
|
2251
2261
|
.settings-integrations-form > button { justify-self: start; }
|
|
2262
|
+
.settings-mcp-args { display: grid; gap: 7px; }
|
|
2263
|
+
.settings-mcp-arg { display: flex; gap: 8px; align-items: center; }
|
|
2264
|
+
.settings-mcp-arg input { flex: 1; }
|
|
2265
|
+
.settings-mcp-kv-row { display: flex; gap: 8px; align-items: center; }
|
|
2266
|
+
.settings-mcp-kv-row input { flex: 1; }
|
|
2267
|
+
.settings-mcp-add-arg { margin-top: 7px; }
|
|
2268
|
+
.settings-mcp-docs-link { display: inline-flex; align-items: center; gap: 4px; color: var(--settings-muted, #888); font-size: 13px; text-decoration: none; transition: color 150ms ease; }
|
|
2269
|
+
.settings-mcp-docs-link:hover { color: var(--settings-text, #fff); text-decoration: underline; }
|
|
2270
|
+
.settings-integrations-editor-head .settings-command-button--danger { margin-left: auto; }
|
|
2271
|
+
.settings-mcp-type-toggle { display: inline-flex; padding: 3px; border-radius: 8px; background: var(--settings-inset, rgba(255, 255, 255, 0.06)); border: 1px solid var(--settings-border, #8885); gap: 2px; width: fit-content; }
|
|
2272
|
+
.settings-mcp-type-btn { padding: 5px 14px; border-radius: 6px; border: none; background: transparent; color: var(--settings-muted, #888); font: inherit; font-size: 12px; font-weight: 500; cursor: pointer; transition: all 120ms ease; }
|
|
2273
|
+
.settings-mcp-type-btn:hover { color: var(--settings-text, #fff); }
|
|
2274
|
+
.settings-mcp-type-btn[data-active="true"] { background: var(--settings-active, rgba(255, 255, 255, 0.15)); color: var(--settings-text, #fff); font-weight: 600; }
|
|
2275
|
+
.settings-mcp-notice { margin: 4px 0 0; color: var(--settings-muted, #888); font-size: 12px; line-height: 1.5; }
|
|
2276
|
+
.settings-mcp-section { display: grid; gap: 14px; }
|
|
2277
|
+
.settings-mcp-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--settings-border, #8885); border-radius: 8px; background: var(--settings-input, transparent); color: var(--settings-muted, #888); cursor: pointer; flex: none; transition: all 120ms ease; }
|
|
2278
|
+
.settings-mcp-icon-btn:hover:not(:disabled) { background: rgba(239, 68, 68, 0.15); border-color: rgba(239, 68, 68, 0.4); color: #f87171; }
|
|
2279
|
+
.settings-mcp-icon-btn svg { width: 14px; height: 14px; display: block; }
|
|
2280
|
+
.settings-integrations-callout { margin: 0; padding: 10px 12px; border-radius: 8px; background: var(--settings-inset); }
|
|
2281
|
+
.settings-skill-dropzone { display: grid; justify-items: center; gap: 8px; padding: 34px 22px; margin: 8px 0 18px; border: 1.5px dashed var(--settings-border, #8887); border-radius: 14px; background: var(--settings-inset); text-align: center; transition: border-color 120ms ease, background 120ms ease, transform 120ms ease; }
|
|
2282
|
+
.settings-skill-dropzone > span { max-width: 520px; color: var(--settings-muted); font-size: 12px; line-height: 18px; }
|
|
2283
|
+
.settings-skill-dropzone[data-drag-over="true"] { border-color: var(--settings-accent, #10a37f); background: var(--settings-accent-subtle, rgba(16, 163, 127, .1)); transform: scale(.995); }
|
|
2284
|
+
.settings-skill-dropzone[data-disabled="true"] { opacity: .55; }
|
|
2285
|
+
.settings-skills-target-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: center; margin-top: 6px; }
|
|
2286
|
+
.settings-skills-target-row select { padding: 6px 10px; border: 1px solid var(--settings-border, #8885); border-radius: 8px; background: var(--settings-input, transparent); color: inherit; font: inherit; font-size: 12px; }
|
|
2287
|
+
.settings-skills-overview-stats { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 6px 0 10px; font-size: 12px; color: var(--settings-muted); }
|
|
2288
|
+
.settings-skills-tabs { display: inline-flex; padding: 3px; border-radius: 8px; background: var(--settings-inset, rgba(255, 255, 255, 0.06)); border: 1px solid var(--settings-border, #8885); gap: 2px; }
|
|
2289
|
+
.settings-skills-tab-btn { padding: 5px 14px; border-radius: 6px; border: none; background: transparent; color: var(--settings-muted, #888); font: inherit; font-size: 12px; font-weight: 500; cursor: pointer; transition: all 120ms ease; }
|
|
2290
|
+
.settings-skills-tab-btn:hover { color: var(--settings-text, #fff); }
|
|
2291
|
+
.settings-skills-tab-btn[data-active="true"] { background: var(--settings-active, rgba(255, 255, 255, 0.15)); color: var(--settings-text, #fff); font-weight: 600; }
|
|
2292
|
+
.settings-skills-overview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; margin-top: 10px; }
|
|
2293
|
+
.settings-skills-harness-card { border: 1px solid var(--settings-border, #8885); border-radius: 12px; padding: 14px; background: var(--settings-surface, transparent); display: flex; flex-direction: column; gap: 10px; }
|
|
2294
|
+
.settings-skills-harness-head { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--settings-border, #8883); padding-bottom: 8px; }
|
|
2295
|
+
.settings-skills-harness-head strong { font-size: 14px; }
|
|
2296
|
+
.settings-skills-badge { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: var(--settings-inset, rgba(255, 255, 255, 0.08)); color: var(--settings-muted); }
|
|
2297
|
+
.settings-skills-badge--active { background: rgba(16, 163, 127, 0.15); color: #10a37f; }
|
|
2298
|
+
.settings-skills-list-compact { display: flex; flex-direction: column; gap: 8px; max-height: 280px; overflow-y: auto; }
|
|
2299
|
+
.settings-skills-item-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 6px; background: var(--settings-inset, rgba(255, 255, 255, 0.03)); font-size: 12px; }
|
|
2300
|
+
.settings-skills-item-row strong { font-size: 13px; }
|
|
2301
|
+
.settings-skills-item-row code { font-size: 10px; color: var(--settings-muted); overflow-wrap: anywhere; display: block; }
|
|
2302
|
+
.settings-skills-item-actions { display: flex; gap: 6px; align-items: center; flex: none; }
|
|
2303
|
+
.settings-skills-matrix-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
|
|
2304
|
+
.settings-skills-matrix-card { border: 1px solid var(--settings-border, #8885); border-radius: 10px; padding: 12px 14px; background: var(--settings-surface, transparent); display: flex; flex-direction: column; gap: 8px; }
|
|
2305
|
+
.settings-skills-matrix-head { display: flex; justify-content: space-between; align-items: center; }
|
|
2306
|
+
.settings-skills-matrix-head span { font-size: 11px; color: var(--settings-muted); }
|
|
2307
|
+
.settings-skills-tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
|
|
2308
|
+
.settings-skills-tag { font-size: 11px; padding: 3px 8px; border-radius: 6px; background: rgba(16, 163, 127, 0.15); color: #10a37f; border: 1px solid rgba(16, 163, 127, 0.3); }
|
|
2309
|
+
.settings-skills-sync-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 4px; }
|
|
2310
|
+
.settings-skills-sync-modal { border: 1px solid var(--settings-border, #8885); border-radius: 12px; background: var(--settings-bg, #1e1e1e); color: inherit; padding: 20px 24px; max-width: 420px; box-shadow: 0 16px 32px rgba(0, 0, 0, 0.5); }
|
|
2311
|
+
.settings-skills-sync-modal::backdrop { background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(2px); }
|
|
2312
|
+
.settings-skills-sync-modal h3 { margin: 0 0 8px; font-size: 16px; }
|
|
2313
|
+
.settings-skills-sync-modal p { margin: 0 0 12px; font-size: 12px; color: var(--settings-muted); }
|
|
2314
|
+
.settings-mcp-overview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 14px; margin-top: 10px; }
|
|
2315
|
+
.settings-mcp-harness-card { border: 1px solid var(--settings-border, #8885); border-radius: 12px; padding: 14px; background: var(--settings-surface, transparent); display: flex; flex-direction: column; gap: 10px; }
|
|
2316
|
+
.settings-mcp-harness-head { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--settings-border, #8883); padding-bottom: 8px; }
|
|
2317
|
+
.settings-mcp-harness-head strong { font-size: 14px; }
|
|
2318
|
+
.settings-mcp-native-box { padding: 8px 10px; border-radius: 8px; background: rgba(16, 163, 127, 0.08); border: 1px dashed rgba(16, 163, 127, 0.3); font-size: 11px; display: flex; flex-direction: column; gap: 4px; }
|
|
2319
|
+
.settings-mcp-native-title { font-weight: 600; color: #10a37f; display: flex; align-items: center; gap: 6px; }
|
|
2320
|
+
.settings-mcp-native-item { display: flex; flex-direction: column; gap: 2px; color: var(--settings-muted); }
|
|
2321
|
+
.settings-mcp-native-item code { font-size: 10px; overflow-wrap: anywhere; }
|
|
2322
|
+
.settings-mcp-list-compact { display: flex; flex-direction: column; gap: 8px; max-height: 280px; overflow-y: auto; }
|
|
2323
|
+
.settings-mcp-item-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 6px; background: var(--settings-inset, rgba(255, 255, 255, 0.03)); font-size: 12px; }
|
|
2324
|
+
.settings-mcp-item-row strong { font-size: 13px; }
|
|
2325
|
+
.settings-mcp-item-row code { font-size: 10px; color: var(--settings-muted); overflow-wrap: anywhere; display: block; }
|
|
2326
|
+
.settings-mcp-item-actions { display: flex; gap: 6px; align-items: center; flex: none; }
|
|
2327
|
+
.settings-mcp-card-footer { display: flex; justify-content: flex-end; margin-top: auto; padding-top: 6px; border-top: 1px solid var(--settings-border, #8882); }
|
|
2328
|
+
.settings-mcp-matrix-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
|
|
2329
|
+
.settings-mcp-matrix-card { border: 1px solid var(--settings-border, #8885); border-radius: 10px; padding: 12px 14px; background: var(--settings-surface, transparent); display: flex; flex-direction: column; gap: 8px; }
|
|
2330
|
+
.settings-mcp-matrix-head { display: flex; justify-content: space-between; align-items: center; }
|
|
2331
|
+
.settings-mcp-matrix-head span { font-size: 11px; color: var(--settings-muted); }
|
|
2332
|
+
.settings-mcp-tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
|
|
2333
|
+
.settings-mcp-tag { font-size: 11px; padding: 3px 8px; border-radius: 6px; background: rgba(16, 163, 127, 0.15); color: #10a37f; border: 1px solid rgba(16, 163, 127, 0.3); }
|
|
2334
|
+
.settings-mcp-tag--disabled { background: rgba(255, 255, 255, 0.05); color: var(--settings-muted); border-color: var(--settings-border, #8885); }
|
|
2335
|
+
.settings-mcp-sync-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 4px; }
|
|
2336
|
+
.settings-mcp-distribute-modal { border: 1px solid var(--settings-border, #8885); border-radius: 12px; background: var(--settings-bg, #1e1e1e); color: inherit; padding: 20px 24px; max-width: 540px; width: 92%; max-height: 85vh; overflow-y: auto; box-shadow: 0 16px 32px rgba(0, 0, 0, 0.5); }
|
|
2337
|
+
.settings-mcp-distribute-modal::backdrop { background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(2px); }
|
|
2338
|
+
.settings-mcp-distribute-modal h3 { margin: 0 0 8px; font-size: 16px; }
|
|
2339
|
+
.settings-mcp-distribute-modal p { margin: 0 0 12px; font-size: 12px; color: var(--settings-muted); }
|
|
2340
|
+
|
|
2341
|
+
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { CHATGPT_CONTEXT_MAX_LENGTH, buildChatGptContextDraft, redactChatGptContextText, sanitizeChatGptSourceUrl } from "../src/renderer-chatgpt-context.js";
|
|
2
|
+
import { CHATGPT_CONTEXT_MAX_LENGTH, buildChatGptContextDraft, isChatGptQuickChatEditor, redactChatGptContextText, sanitizeChatGptSourceUrl } from "../src/renderer-chatgpt-context.js";
|
|
3
3
|
|
|
4
4
|
describe("ChatGPT context package", () => {
|
|
5
5
|
it("marks imported text as untrusted context", () => {
|
|
@@ -15,4 +15,7 @@ describe("ChatGPT context package", () => {
|
|
|
15
15
|
expect(sanitizeChatGptSourceUrl("https://chatgpt.com/c/abc?token=nope#part")).toBe("https://chatgpt.com/c/abc");
|
|
16
16
|
expect(sanitizeChatGptSourceUrl("http://chatgpt.com/c/abc")).toBeUndefined(); expect(sanitizeChatGptSourceUrl("https://example.com/c/abc")).toBeUndefined();
|
|
17
17
|
});
|
|
18
|
+
it("ignores partial DOM fixtures that are not browser Elements", () => {
|
|
19
|
+
expect(isChatGptQuickChatEditor({} as Element)).toBe(false);
|
|
20
|
+
});
|
|
18
21
|
});
|
|
@@ -75,6 +75,6 @@ describe("Renderer settings localization", () => {
|
|
|
75
75
|
createDefaultRendererSettingsPages(rendererSettingsMessages("zh-CN")).map(
|
|
76
76
|
({ label }) => label,
|
|
77
77
|
),
|
|
78
|
-
).toEqual(["连接", "账号", "MCP
|
|
78
|
+
).toEqual(["连接", "账号", "MCP", "Skills", "会话导入", "更新", "关于"]);
|
|
79
79
|
});
|
|
80
80
|
});
|
|
@@ -23,7 +23,8 @@ describe("Renderer settings foundation", () => {
|
|
|
23
23
|
expect(pages.map(({ label }) => label)).toEqual([
|
|
24
24
|
"Connections",
|
|
25
25
|
"Accounts",
|
|
26
|
-
"MCP
|
|
26
|
+
"MCP",
|
|
27
|
+
"Skills",
|
|
27
28
|
"Session Import",
|
|
28
29
|
"Updates",
|
|
29
30
|
"About",
|
|
@@ -33,6 +34,7 @@ describe("Renderer settings foundation", () => {
|
|
|
33
34
|
"accounts",
|
|
34
35
|
"connections",
|
|
35
36
|
"session-import",
|
|
37
|
+
"session-import",
|
|
36
38
|
"updates",
|
|
37
39
|
"about",
|
|
38
40
|
]);
|
|
@@ -65,7 +67,8 @@ describe("Renderer settings foundation", () => {
|
|
|
65
67
|
expect(pages.map(({ id }) => id)).toEqual([
|
|
66
68
|
"connections",
|
|
67
69
|
"accounts",
|
|
68
|
-
"
|
|
70
|
+
"mcp",
|
|
71
|
+
"skills",
|
|
69
72
|
"session-import",
|
|
70
73
|
"updates",
|
|
71
74
|
"about",
|