@vibeapi/cli 0.0.163 → 0.0.164

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.
@@ -1 +1 @@
1
- import{existsSync as e,readFileSync as t}from"fs";import{join as o}from"path";import{logger as r}from"../../utils/logger.js";import{i18n as d}from"../i18n.js";import{getToolDefaultModel as n}from"../model-registry.js";import{prettyModelName as i,vendorNames as s}from"../gateway-models.js";import{backupBeforeWrite as a,atomicWriteFile as l}from"./backup.js";import{CUSTOM_MODEL_PREFIX as c,bareModelId as u,foreignIdsReplaced as m,isOurEntry as p,menuSpecs as g,mergeEntries as f,ourApiKey as y,ourEntries as b,readModelsFile as h,writeModelsFile as j}from"./codebuddy-models.js";import{pickModel as C,toolHome as v}from"./types.js";const S=()=>process.env.CODEBUDDY_CONFIG_DIR?.trim()||o(v(),".codebuddy"),w=()=>o(S(),"models.json"),E=()=>o(S(),"settings.json"),N={command:"codebuddy",npmPackage:"@tencent-ai/codebuddy-code",brew:"codebuddy-code"};function P(){if(!e(E()))return{};const o=t(E(),"utf-8");if(!o.trim())return{};let r;try{r=JSON.parse(o)}catch(e){throw new Error(`Existing ${E()} cannot be parsed; back it up and fix it first: ${e instanceof Error?e.message:String(e)}`)}if(!(d=r)||"object"!=typeof d||Array.isArray(d))throw new Error(`Existing ${E()} must hold a JSON object`);var d;return r}function $(e){a(E()),l(E(),`${JSON.stringify(e,null,2)}\n`,384)}function _(e,t){return"string"==typeof e&&e.startsWith(c)&&t.has(e.slice(c.length))}const k=e=>u(C(e.models,n("codebuddy")));function x(e,t){return e.find(e=>e.id===t)??e[0]}let A=null;function O(e,t){const o=h(w()),{entries:r,replaced:d}=f(o.entries,t,e.baseUrl,e.apiKey);return j(w(),o,r),d}export const codebuddyAdapter={name:"codebuddy",displayName:"CodeBuddy Code",command:"codebuddy",installCommand:`npm install -g ${N.npmPackage}`,installSpec:N,get configPath(){return w()},wantsModelCatalog:!0,loadPrivateConfig(e){const t=k(e),o=g(e.catalog,t),r=P(),d=O(e,o),n=x(o,t);n&&(r.model=`${c}${n.id}`,$(r));const a=e=>e.name??i(e.id);A={names:o.map(a),vendors:s(o.map(e=>e.id)),defaultName:n?a(n):"",replaced:d}},unloadPrivateConfig(){let e;try{e=h(w())}catch(e){return void r.logError("codebuddyAdapter.unloadPrivateConfig",e)}const t=new Set(b(e.entries).map(e=>String(e.id)));t.size>0&&j(w(),e,e.entries.filter(e=>!p(e)));try{const e=P();_(e.model,t)&&(delete e.model,$(e))}catch(e){r.logError("codebuddyAdapter.unloadPrivateConfig",e)}},detectCurrentConfig(){try{return{apiKey:y(h(w()).entries)}}catch{return{apiKey:null}}},listedModels(){try{const e=b(h(w()).entries);return e.length>0?e.map(e=>String(e.id)):null}catch{return null}},refreshModelMenu(e){const t=h(w()),o=new Set(b(t.entries).map(e=>String(e.id))),r=P(),d=_(r.model,o)?String(r.model).slice(c.length):void 0,n=d&&e.catalog.models.includes(d)?d:k(e),i=g(e.catalog,n);O(e,i);const s=x(i,n);if(s&&(void 0===r.model||_(r.model,o))){const e=`${c}${s.id}`;r.model!==e&&(r.model=e,$(r))}},planNotes(){try{const e=h(w()),t=m(e.entries,g(void 0,n("codebuddy")));return t.length>0?[d.t("tools.codebuddy.replaces_models",{path:w(),list:t.join(d.t("tools.codebuddy.list_separator"))})]:[]}catch{return[]}},applyNotes(){if(!A)return[];const e=[{kind:"summary",text:d.t("tools.codebuddy.menu_written",{count:String(A.names.length),list:A.vendors.join(d.t("tools.codebuddy.list_separator")),default:A.defaultName})}];return A.replaced.length>0&&e.push({kind:"detail",text:d.t("tools.codebuddy.replaced_models",{tool:"codebuddy",list:A.replaced.join(d.t("tools.codebuddy.list_separator"))})}),e},backupPaths:()=>[w(),E()],forceResetPaths:()=>[w()],getConfig(){try{return{models:h(w()).entries,settings:P()}}catch(e){return r.logError("codebuddyAdapter.getConfig",e),null}}};
1
+ import{existsSync as e,readFileSync as t}from"fs";import{join as o}from"path";import{logger as r}from"../../utils/logger.js";import{i18n as d}from"../i18n.js";import{getToolDefaultModel as n,getToolMenuModels as i}from"../model-registry.js";import{prettyModelName as s,vendorNames as a}from"../gateway-models.js";import{backupBeforeWrite as l,atomicWriteFile as c}from"./backup.js";import{CUSTOM_MODEL_PREFIX as u,bareModelId as m,foreignIdsReplaced as p,isOurEntry as g,menuSpecs as y,mergeEntries as f,ourApiKey as b,ourEntries as h,readModelsFile as j,writeModelsFile as C}from"./codebuddy-models.js";import{pickModel as v,toolHome as S}from"./types.js";const w=()=>process.env.CODEBUDDY_CONFIG_DIR?.trim()||o(S(),".codebuddy"),E=()=>o(w(),"models.json"),N=()=>o(w(),"settings.json"),P={command:"codebuddy",npmPackage:"@tencent-ai/codebuddy-code",brew:"codebuddy-code"};function $(){if(!e(N()))return{};const o=t(N(),"utf-8");if(!o.trim())return{};let r;try{r=JSON.parse(o)}catch(e){throw new Error(`Existing ${N()} cannot be parsed; back it up and fix it first: ${e instanceof Error?e.message:String(e)}`)}if(!(d=r)||"object"!=typeof d||Array.isArray(d))throw new Error(`Existing ${N()} must hold a JSON object`);var d;return r}function _(e){l(N()),c(N(),`${JSON.stringify(e,null,2)}\n`,384)}function k(e,t){return"string"==typeof e&&e.startsWith(u)&&t.has(e.slice(u.length))}const x=e=>m(v(e.models,n("codebuddy")));function A(e,t){return e.find(e=>e.id===t)??e[0]}const O=(e,t)=>y(e,t,i("codebuddy"));let D=null;function M(e,t){const o=j(E()),{entries:r,replaced:d}=f(o.entries,t,e.baseUrl,e.apiKey);return C(E(),o,r),d}export const codebuddyAdapter={name:"codebuddy",displayName:"CodeBuddy Code",command:"codebuddy",installCommand:`npm install -g ${P.npmPackage}`,installSpec:P,get configPath(){return E()},wantsModelCatalog:!0,loadPrivateConfig(e){const t=x(e),o=O(e.catalog,t),r=$(),d=M(e,o),n=A(o,t);n&&(r.model=`${u}${n.id}`,_(r));const i=e=>e.name??s(e.id);D={names:o.map(i),vendors:a(o.map(e=>e.id)),defaultName:n?i(n):"",replaced:d}},unloadPrivateConfig(){let e;try{e=j(E())}catch(e){return void r.logError("codebuddyAdapter.unloadPrivateConfig",e)}const t=new Set(h(e.entries).map(e=>String(e.id)));t.size>0&&C(E(),e,e.entries.filter(e=>!g(e)));try{const e=$();k(e.model,t)&&(delete e.model,_(e))}catch(e){r.logError("codebuddyAdapter.unloadPrivateConfig",e)}},detectCurrentConfig(){try{return{apiKey:b(j(E()).entries)}}catch{return{apiKey:null}}},listedModels(){try{const e=h(j(E()).entries);return e.length>0?e.map(e=>String(e.id)):null}catch{return null}},refreshModelMenu(e){const t=j(E()),o=new Set(h(t.entries).map(e=>String(e.id))),r=$(),d=k(r.model,o)?String(r.model).slice(u.length):void 0,n=d&&e.catalog.models.includes(d)?d:x(e),i=O(e.catalog,n);M(e,i);const s=A(i,n);if(s&&(void 0===r.model||k(r.model,o))){const e=`${u}${s.id}`;r.model!==e&&(r.model=e,_(r))}},planNotes(){try{const e=j(E()),t=p(e.entries,O(void 0,n("codebuddy")));return t.length>0?[d.t("tools.codebuddy.replaces_models",{path:E(),list:t.join(d.t("tools.codebuddy.list_separator"))})]:[]}catch{return[]}},applyNotes(){if(!D)return[];const e=[{kind:"summary",text:d.t("tools.codebuddy.menu_written",{count:String(D.names.length),list:D.vendors.join(d.t("tools.codebuddy.list_separator")),default:D.defaultName})}];return D.replaced.length>0&&e.push({kind:"detail",text:d.t("tools.codebuddy.replaced_models",{tool:"codebuddy",list:D.replaced.join(d.t("tools.codebuddy.list_separator"))})}),e},backupPaths:()=>[E(),N()],forceResetPaths:()=>[E()],getConfig(){try{return{models:j(E()).entries,settings:$()}}catch(e){return r.logError("codebuddyAdapter.getConfig",e),null}}};
package/dist/models.json CHANGED
@@ -25,7 +25,8 @@
25
25
  },
26
26
  "toolMenuModels": {
27
27
  "workbuddy": ["gpt-6.1-sol", "gpt-6.1-terra", "claude-sonnet-5-5"],
28
- "dsh": ["deepseek-v4.1-flash-1017", "gpt-6.1-terra", "claude-sonnet-5-5"]
28
+ "codebuddy": ["gpt-6.1-sol", "gpt-6.1-terra", "claude-sonnet-5-5"],
29
+ "dsh": ["deepseek-v4.1-flash-1017", "gpt-6.1-sol", "gpt-6.1-terra", "claude-sonnet-5-5"]
29
30
  },
30
31
  "presets": [
31
32
  {
package/models.json CHANGED
@@ -25,7 +25,8 @@
25
25
  },
26
26
  "toolMenuModels": {
27
27
  "workbuddy": ["gpt-6.1-sol", "gpt-6.1-terra", "claude-sonnet-5-5"],
28
- "dsh": ["deepseek-v4.1-flash-1017", "gpt-6.1-terra", "claude-sonnet-5-5"]
28
+ "codebuddy": ["gpt-6.1-sol", "gpt-6.1-terra", "claude-sonnet-5-5"],
29
+ "dsh": ["deepseek-v4.1-flash-1017", "gpt-6.1-sol", "gpt-6.1-terra", "claude-sonnet-5-5"]
29
30
  },
30
31
  "presets": [
31
32
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeapi/cli",
3
- "version": "0.0.163",
3
+ "version": "0.0.164",
4
4
  "description": "CLI tool for managing AI coding assistants (Claude Code, Codex, OpenClaw, Hermes, AtomCode, Grok Build) with one unified config",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",