@i14ks/ccv 0.18.0 → 0.20.0

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 (27) hide show
  1. package/bundle/ccv.mjs +54 -2
  2. package/package.json +1 -1
  3. package/web/assets/{codemirror-Xlc7emp4.js → codemirror-DOvy1hit.js} +1 -1
  4. package/web/assets/{index-Bn6m7y1f.js → index-0mOmG1OB.js} +1 -1
  5. package/web/assets/{index-DPFqYXoR.js → index-BMWh-izi.js} +1 -1
  6. package/web/assets/{index-CgJ8kt13.js → index-BUfDT07G.js} +1 -1
  7. package/web/assets/{index-C9wRY7OB.js → index-Bf9yoJhl.js} +1 -1
  8. package/web/assets/{index-Rdr8VKHz.js → index-BhAQ1Td-.js} +1 -1
  9. package/web/assets/index-Bt29MBdY.js +134 -0
  10. package/web/assets/{index-B59yN5CT.js → index-C37WshJ1.js} +1 -1
  11. package/web/assets/{index-CyvkCV_I.js → index-C4IoqL6u.js} +1 -1
  12. package/web/assets/{index-DD9jOM3u.js → index-C4uljLPL.js} +1 -1
  13. package/web/assets/{index-GPJsAXZm.js → index-CB5sx8v_.js} +1 -1
  14. package/web/assets/{index-CcRfA6wX.js → index-CIbEaXb2.js} +1 -1
  15. package/web/assets/{index-DGIVHKoZ.js → index-C_10amyS.js} +1 -1
  16. package/web/assets/{index-CATqSzDf.js → index-ChjkRA1v.js} +1 -1
  17. package/web/assets/{index-BiADfWp_.js → index-CsP-muVq.js} +1 -1
  18. package/web/assets/{index-DriANGJp.js → index-DTjRu-SE.js} +1 -1
  19. package/web/assets/{index-B-bp9mCT.js → index-Dkiy3bA7.js} +1 -1
  20. package/web/assets/{index-COjrz9O3.js → index-DuclA_NV.js} +1 -1
  21. package/web/assets/index-Dv13T8ko.css +1 -0
  22. package/web/assets/{index-CmWfuvMB.js → index-R1dnxvPf.js} +1 -1
  23. package/web/assets/{index-BHPUdhIS.js → index-x3nfLW_t.js} +1 -1
  24. package/web/assets/{index-Bfg1ojRW.js → index-zjOh8oJE.js} +1 -1
  25. package/web/index.html +2 -2
  26. package/web/assets/index-BRCAbil3.css +0 -1
  27. package/web/assets/index-CRr2Y5uA.js +0 -134
package/bundle/ccv.mjs CHANGED
@@ -2144,6 +2144,22 @@ var ClaudeSession = class extends EventEmitter {
2144
2144
  await this.#query?.setMcpServers(Object.fromEntries(this.#dynamicMcp));
2145
2145
  return true;
2146
2146
  }
2147
+ /**
2148
+ * Переподключить сервер любой области — проектный, пользовательский,
2149
+ * плагинный. Слэш-командой `/mcp reconnect` нельзя: в SDK-режиме CLI на неё
2150
+ * отвечает «aren't available in this session». Бросает при неудаче.
2151
+ */
2152
+ async reconnectMcpServer(name) {
2153
+ if (!this.#query)
2154
+ throw new Error("\u0421\u0435\u0441\u0441\u0438\u044F \u0435\u0449\u0451 \u043D\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430");
2155
+ await this.#query.reconnectMcpServer(name);
2156
+ }
2157
+ /** Включить или выключить сервер — тот же обход слэш-команды, что выше. */
2158
+ async toggleMcpServer(name, enabled) {
2159
+ if (!this.#query)
2160
+ throw new Error("\u0421\u0435\u0441\u0441\u0438\u044F \u0435\u0449\u0451 \u043D\u0435 \u0437\u0430\u043F\u0443\u0449\u0435\u043D\u0430");
2161
+ await this.#query.toggleMcpServer(name, enabled);
2162
+ }
2147
2163
  /** Перечитать плагины с диска — после установки через внешний CLI. */
2148
2164
  async reloadPlugins() {
2149
2165
  const result = await this.#query?.reloadPlugins();
@@ -3624,6 +3640,12 @@ Attached image${paths.length > 1 ? "s" : ""} (view them with your file viewing t
3624
3640
  async removeMcpServer(_name) {
3625
3641
  return false;
3626
3642
  }
3643
+ async reconnectMcpServer(_name) {
3644
+ throw new Error("MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B Antigravity \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0430\u043C\u043E\u043C agy (`agy mcp`)");
3645
+ }
3646
+ async toggleMcpServer(_name, _enabled) {
3647
+ throw new Error("MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u044B Antigravity \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u0430\u043C\u043E\u043C agy (`agy mcp`)");
3648
+ }
3627
3649
  setTitle(title) {
3628
3650
  this.#record.title = title;
3629
3651
  this.#titleIsDefault = false;
@@ -6092,6 +6114,7 @@ var DEFAULT_AUTO_STOP_AFTER_MS = 10 * 60 * 1e3;
6092
6114
  var MIN_AUTO_STOP_AFTER_MS = 60 * 1e3;
6093
6115
  var MIN_AUTO_SAVE_AFTER_PAUSE_MS = 500;
6094
6116
  var FOLDER_ACCESS = ["all", "projects", "project"];
6117
+ var PROVIDERS = ["claude", "antigravity"];
6095
6118
  var PERMISSION_MODES = [
6096
6119
  "default",
6097
6120
  "acceptEdits",
@@ -6124,7 +6147,9 @@ var DEFAULT_APP_SETTINGS = {
6124
6147
  // ему нужно место. Недельное — у самого края: до сброса там может быть
6125
6148
  // несколько дней, и терять их из-за пары процентов жалко.
6126
6149
  limitStopFiveHourPct: 95,
6127
- limitStopSevenDayPct: 99
6150
+ limitStopSevenDayPct: 99,
6151
+ // Оба: до появления настройки приложение предлагало обоих агентов.
6152
+ enabledProviders: ["claude", "antigravity"]
6128
6153
  };
6129
6154
  var AppSettingsStore = class {
6130
6155
  #settings = { ...DEFAULT_APP_SETTINGS };
@@ -6203,6 +6228,12 @@ function sanitize2(value, fallback) {
6203
6228
  result[key] = pct <= 0 ? 0 : Math.min(Math.max(Math.round(pct), 1), 100);
6204
6229
  }
6205
6230
  }
6231
+ const providers = record.enabledProviders;
6232
+ if (Array.isArray(providers)) {
6233
+ const picked = PROVIDERS.filter((p) => providers.includes(p));
6234
+ if (picked.length > 0)
6235
+ result.enabledProviders = picked;
6236
+ }
6206
6237
  return result;
6207
6238
  }
6208
6239
  function claudeHome() {
@@ -8113,7 +8144,24 @@ var HostServer = class {
8113
8144
  return;
8114
8145
  }
8115
8146
  case "mcp.action": {
8116
- this.#requireSession(frame.sessionId).sendPrompt(`/mcp ${frame.action} ${frame.name}`);
8147
+ const session = this.#requireSession(frame.sessionId);
8148
+ const { name, action } = frame;
8149
+ let ok = true;
8150
+ let message;
8151
+ try {
8152
+ if (action === "reconnect") {
8153
+ await session.reconnectMcpServer(name);
8154
+ message = `\u0421\u0435\u0440\u0432\u0435\u0440 \xAB${name}\xBB \u043F\u0435\u0440\u0435\u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0451\u043D`;
8155
+ } else {
8156
+ await session.toggleMcpServer(name, action === "enable");
8157
+ message = `\u0421\u0435\u0440\u0432\u0435\u0440 \xAB${name}\xBB ${action === "enable" ? "\u0432\u043A\u043B\u044E\u0447\u0451\u043D" : "\u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D"}`;
8158
+ }
8159
+ } catch (error) {
8160
+ ok = false;
8161
+ message = error instanceof Error ? error.message : String(error);
8162
+ }
8163
+ this.#reportOperation(frame.sessionId, "mcp", ok, message);
8164
+ await this.#sendMcpList(frame.sessionId);
8117
8165
  return;
8118
8166
  }
8119
8167
  case "plugin.list":
@@ -8825,6 +8873,10 @@ var HostServer = class {
8825
8873
  const workspace = this.#workspaces.find(frame.workspaceId);
8826
8874
  if (!workspace)
8827
8875
  throw new Error(`\u0412\u043E\u0440\u043A\u0441\u043F\u0435\u0439\u0441 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D: ${frame.workspaceId}`);
8876
+ const provider = frame.provider ?? "claude";
8877
+ if (!frame.resume && !this.#settings.current.enabledProviders.includes(provider)) {
8878
+ throw new Error(`${provider === "antigravity" ? "Antigravity" : "Claude"} \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D \u0432 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u0445`);
8879
+ }
8828
8880
  const agyRecord = frame.resume ? await this.#antigravity.find(frame.resume) : null;
8829
8881
  if (agyRecord || !frame.resume && frame.provider === "antigravity") {
8830
8882
  if (agyRecord)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@i14ks/ccv",
3
- "version": "0.18.0",
3
+ "version": "0.20.0",
4
4
  "license": "UNLICENSED",
5
5
  "description": "GUI для Claude Code: сессии агента в каталогах проектов, дерево файлов и редактор рядом с разговором.",
6
6
  "homepage": "https://claudevisual.com",
@@ -1 +1 @@
1
- import{s as r,H as a}from"./index-C9wRY7OB.js";import{E as e}from"./index-891wE-Rj.js";import{t as o}from"./index-CRr2Y5uA.js";import"./index-BHot-lnj.js";const m=e.theme({"&":{height:"100%",color:"var(--text)",backgroundColor:"var(--bg)",fontSize:"13px"},".cm-scroller":{fontFamily:"var(--mono)",lineHeight:"1.6"},".cm-content":{caretColor:"var(--accent)"},".cm-cursor, .cm-dropCursor":{borderLeftColor:"var(--accent)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:"var(--cm-selection)"},".cm-gutters":{backgroundColor:"var(--bg)",color:"var(--muted)",borderRight:"1px solid var(--border-soft)"},".cm-activeLineGutter":{backgroundColor:"var(--surface-2)",color:"var(--text-2)"},".cm-activeLine":{backgroundColor:"var(--cm-active)"},".cm-selectionMatch":{backgroundColor:"var(--cm-match)"},"&.cm-focused .cm-matchingBracket":{backgroundColor:"var(--cm-match)",outline:"1px solid var(--accent-line)"},".cm-foldPlaceholder":{backgroundColor:"var(--surface-2)",border:"1px solid var(--border)",color:"var(--muted)"},".cm-panels":{backgroundColor:"var(--surface)",color:"var(--text)",border:"1px solid var(--border)"},".cm-panels input, .cm-panels button, .cm-panels select":{fontFamily:"var(--sans)",fontSize:"12px",background:"var(--surface-2)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"6px",padding:"3px 6px"},".cm-searchMatch":{backgroundColor:"var(--cm-match)"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"var(--accent-soft)"},".cm-tooltip":{background:"var(--surface)",border:"1px solid var(--border)",borderRadius:"8px",boxShadow:"var(--shadow-md)",color:"var(--text)"},".cm-tooltip-autocomplete ul li[aria-selected]":{background:"var(--surface-2)",color:"var(--text)"}}),i=r(a.define([{tag:[o.keyword,o.modifier,o.controlKeyword,o.moduleKeyword],color:"var(--cm-key)"},{tag:[o.name,o.deleted,o.character,o.macroName],color:"var(--text)"},{tag:[o.propertyName],color:"var(--cm-prop)"},{tag:[o.function(o.variableName),o.labelName],color:"var(--cm-fn)"},{tag:[o.color,o.constant(o.name),o.standard(o.name),o.bool],color:"var(--cm-const)"},{tag:[o.definition(o.name),o.separator],color:"var(--text)"},{tag:[o.typeName,o.className,o.changed,o.annotation,o.self,o.namespace],color:"var(--cm-type)"},{tag:[o.number,o.integer,o.float],color:"var(--cm-num)"},{tag:[o.string,o.special(o.string),o.regexp],color:"var(--cm-str)"},{tag:[o.operator,o.operatorKeyword,o.escape],color:"var(--cm-op)"},{tag:[o.meta,o.comment],color:"var(--cm-comment)",fontStyle:"italic"},{tag:o.strong,fontWeight:"650"},{tag:o.emphasis,fontStyle:"italic"},{tag:o.strikethrough,textDecoration:"line-through"},{tag:o.link,color:"var(--cm-str)",textDecoration:"underline"},{tag:o.heading,fontWeight:"650",color:"var(--cm-key)"},{tag:o.invalid,color:"var(--danger)"}]));export{i as editorHighlight,m as editorTheme};
1
+ import{s as r,H as a}from"./index-Bf9yoJhl.js";import{E as e}from"./index-891wE-Rj.js";import{t as o}from"./index-Bt29MBdY.js";import"./index-BHot-lnj.js";const m=e.theme({"&":{height:"100%",color:"var(--text)",backgroundColor:"var(--bg)",fontSize:"13px"},".cm-scroller":{fontFamily:"var(--mono)",lineHeight:"1.6"},".cm-content":{caretColor:"var(--accent)"},".cm-cursor, .cm-dropCursor":{borderLeftColor:"var(--accent)"},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:"var(--cm-selection)"},".cm-gutters":{backgroundColor:"var(--bg)",color:"var(--muted)",borderRight:"1px solid var(--border-soft)"},".cm-activeLineGutter":{backgroundColor:"var(--surface-2)",color:"var(--text-2)"},".cm-activeLine":{backgroundColor:"var(--cm-active)"},".cm-selectionMatch":{backgroundColor:"var(--cm-match)"},"&.cm-focused .cm-matchingBracket":{backgroundColor:"var(--cm-match)",outline:"1px solid var(--accent-line)"},".cm-foldPlaceholder":{backgroundColor:"var(--surface-2)",border:"1px solid var(--border)",color:"var(--muted)"},".cm-panels":{backgroundColor:"var(--surface)",color:"var(--text)",border:"1px solid var(--border)"},".cm-panels input, .cm-panels button, .cm-panels select":{fontFamily:"var(--sans)",fontSize:"12px",background:"var(--surface-2)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"6px",padding:"3px 6px"},".cm-searchMatch":{backgroundColor:"var(--cm-match)"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"var(--accent-soft)"},".cm-tooltip":{background:"var(--surface)",border:"1px solid var(--border)",borderRadius:"8px",boxShadow:"var(--shadow-md)",color:"var(--text)"},".cm-tooltip-autocomplete ul li[aria-selected]":{background:"var(--surface-2)",color:"var(--text)"}}),i=r(a.define([{tag:[o.keyword,o.modifier,o.controlKeyword,o.moduleKeyword],color:"var(--cm-key)"},{tag:[o.name,o.deleted,o.character,o.macroName],color:"var(--text)"},{tag:[o.propertyName],color:"var(--cm-prop)"},{tag:[o.function(o.variableName),o.labelName],color:"var(--cm-fn)"},{tag:[o.color,o.constant(o.name),o.standard(o.name),o.bool],color:"var(--cm-const)"},{tag:[o.definition(o.name),o.separator],color:"var(--text)"},{tag:[o.typeName,o.className,o.changed,o.annotation,o.self,o.namespace],color:"var(--cm-type)"},{tag:[o.number,o.integer,o.float],color:"var(--cm-num)"},{tag:[o.string,o.special(o.string),o.regexp],color:"var(--cm-str)"},{tag:[o.operator,o.operatorKeyword,o.escape],color:"var(--cm-op)"},{tag:[o.meta,o.comment],color:"var(--cm-comment)",fontStyle:"italic"},{tag:o.strong,fontWeight:"650"},{tag:o.emphasis,fontStyle:"italic"},{tag:o.strikethrough,textDecoration:"line-through"},{tag:o.link,color:"var(--cm-str)",textDecoration:"underline"},{tag:o.heading,fontWeight:"650",color:"var(--cm-key)"},{tag:o.invalid,color:"var(--danger)"}]));export{i as editorHighlight,m as editorTheme};