@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.
Files changed (60) hide show
  1. package/README.md +1 -1
  2. package/docs/harness-management.md +4 -4
  3. package/docs/multi-agent-collaboration.md +9 -9
  4. package/output/native-build/renderer-extension.js +1959 -435
  5. package/package.json +9 -8
  6. package/scripts/collaboration-test.cjs +8 -3
  7. package/scripts/collaboration-ui-smoke.cjs +40 -26
  8. package/scripts/integrations-test.cjs +63 -4
  9. package/scripts/integrations-ui-smoke.cjs +77 -16
  10. package/scripts/native-protocol-test.cjs +102 -1
  11. package/scripts/native-sidebar-test.cjs +7 -0
  12. package/scripts/native-skill-roots-test.cjs +90 -0
  13. package/scripts/test-live-mentions.cjs +152 -0
  14. package/src/main/adapters/antigravity.js +20 -17
  15. package/src/main/adapters/claude.js +41 -8
  16. package/src/main/adapters/codebuddy.js +1 -0
  17. package/src/main/adapters/codex.js +20 -2
  18. package/src/main/adapters/cursor.js +5 -1
  19. package/src/main/adapters/dsh.js +8 -1
  20. package/src/main/adapters/grok.js +4 -1
  21. package/src/main/adapters/hermes.js +8 -0
  22. package/src/main/adapters/kiro.js +2 -1
  23. package/src/main/adapters/managed-mcp.js +15 -2
  24. package/src/main/adapters/omp.js +11 -0
  25. package/src/main/adapters/openclaw.js +6 -0
  26. package/src/main/adapters/opencode.js +5 -1
  27. package/src/main/adapters/pi.js +5 -1
  28. package/src/main/adapters/qoder.js +1 -0
  29. package/src/main/adapters/trae.js +4 -0
  30. package/src/main/adapters/zcode.js +3 -0
  31. package/src/main/host/collaboration.js +57 -11
  32. package/src/main/host/integrations.js +164 -26
  33. package/src/main/host/runtime.js +126 -86
  34. package/src/main/native/protocol.js +189 -78
  35. package/src/main/native/thread-list.js +3 -0
  36. package/src/native-ui/renderer-extension/dist/types/harness-mix-settings.d.ts.map +1 -1
  37. package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
  38. package/src/native-ui/renderer-extension/dist/types/renderer-chatgpt-context.d.ts.map +1 -1
  39. package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts +11 -0
  40. package/src/native-ui/renderer-extension/dist/types/renderer-harness-mentions.d.ts.map +1 -1
  41. package/src/native-ui/renderer-extension/dist/types/renderer-integrations-client.d.ts +29 -4
  42. package/src/native-ui/renderer-extension/dist/types/renderer-integrations-client.d.ts.map +1 -1
  43. package/src/native-ui/renderer-extension/dist/types/settings/integrations-page.d.ts +2 -1
  44. package/src/native-ui/renderer-extension/dist/types/settings/integrations-page.d.ts.map +1 -1
  45. package/src/native-ui/renderer-extension/dist/types/settings/localization.d.ts.map +1 -1
  46. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts +1 -1
  47. package/src/native-ui/renderer-extension/dist/types/settings/pages.d.ts.map +1 -1
  48. package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
  49. package/src/native-ui/renderer-extension/src/harness-mix-settings.ts +3 -2
  50. package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +149 -171
  51. package/src/native-ui/renderer-extension/src/renderer-chatgpt-context.ts +5 -1
  52. package/src/native-ui/renderer-extension/src/renderer-harness-mentions.ts +556 -123
  53. package/src/native-ui/renderer-extension/src/renderer-integrations-client.ts +36 -3
  54. package/src/native-ui/renderer-extension/src/settings/integrations-page.ts +1434 -62
  55. package/src/native-ui/renderer-extension/src/settings/localization.ts +4 -2
  56. package/src/native-ui/renderer-extension/src/settings/pages.ts +5 -3
  57. package/src/native-ui/renderer-extension/src/settings/shell.css +96 -6
  58. package/src/native-ui/renderer-extension/test/renderer-chatgpt-context.test.ts +4 -1
  59. package/src/native-ui/renderer-extension/test/settings/localization.test.ts +1 -1
  60. 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
- integrations: 'MCP / Skills',
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
- integrations: 'MCP / Skills',
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 { createIntegrationsSettingsPage } from './integrations-page.js';
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
- "integrations",
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
- createIntegrationsSettingsPage(messages, getIntegrationsClient),
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 / Skills share the existing settings shell and its theme. */
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-field textarea { box-sizing: border-box; padding: 8px 10px; border: 1px solid var(--border, #8885); border-radius: 7px; color: inherit; background: transparent; font: inherit; }
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-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; border: 1px solid var(--border, #8885); padding: 14px; margin: 10px 0; border-radius: 10px; }
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 code { display: block; overflow-wrap: anywhere; font-size: 11px; }
2249
- .settings-integrations-form { display: grid; gap: 12px; margin: 16px 0 28px; }
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 / Skills", "会话导入", "更新", "关于"]);
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 / Skills",
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
- "integrations",
70
+ "mcp",
71
+ "skills",
69
72
  "session-import",
70
73
  "updates",
71
74
  "about",