From 625ac4e5fe9ca170c23dca0d3e13d2ed0545efaf Mon Sep 17 00:00:00 2001 From: wujunchen Date: Sun, 26 Apr 2026 11:08:13 +0800 Subject: [PATCH] fix: raise CLI timeout from 120s to 300s Change-Id: I1c6a66ed23c6908d6045042e57e50efce1910f9e --- main.js | 2 +- src/settings.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main.js b/main.js index cf6a465..a18c417 100644 --- a/main.js +++ b/main.js @@ -19,7 +19,7 @@ Output JSON directly with no explanation.`,s=["exec","--skip-git-repo-check","-" `)}function Qe(r){return[r.title,r.gist||"",...(r.bullets||[]).map(n=>"\u2022 "+n)].filter(Boolean).join(` `)}function K(r,n){let e=[`# ${r||"\u5BF9\u7167\u7B14\u8BB0"}`];for(let t of n||[])e.push(Ae(t));return e.join(` -`)}function se(r,n,e){if(!Number.isFinite(n)||n<=0)return-1;let t=Math.floor(n),a=e<0?-1:1;return r<0||r>=t?a<0?t-1:0:Math.min(t-1,Math.max(0,r+a))}function oe(r,n){if(!Array.isArray(r)||n<0||n>=r.length)return-1;let e=Number(r[n]?.startLine);return Number.isFinite(e)&&e>=0?e:-1}var rt=Z(require("crypto"));var Se=1e5,wt=2,$=2,V=100,z={zh:"\u4E2D\u6587",en:"English",auto:"Auto-detect"},Te={auto:"Auto",zh:"\u4E2D\u6587",en:"English"},y={uiLanguage:"auto",backend:"api",cliPath:"",apiProvider:"anthropic",apiFormat:"anthropic-messages",apiBaseUrl:"",apiKey:"",apiKeyEnvVar:"",apiAuthType:"auto",apiHeaders:"",apiMaxTokens:4096,maxDocChars:Se,maxCacheEntries:V,promptLanguage:"zh",minCards:5,maxCards:15,customSystemPrompt:"",model:"claude-sonnet-4-6",exportFolder:"Reading/Articles",cliTimeoutMs:12e4,streaming:!0},T={"anthropic-messages":{label:"Anthropic Messages",defaultBaseUrl:"https://api.anthropic.com/v1",defaultAuthType:"x-api-key"},"openai-chat":{label:"OpenAI Chat Completions",defaultBaseUrl:"https://api.openai.com/v1",defaultAuthType:"bearer",tokenLimitField:"max_tokens"},"openai-responses":{label:"OpenAI Responses",defaultBaseUrl:"https://api.openai.com/v1",defaultAuthType:"bearer"},"google-generative-ai":{label:"Google Gemini generateContent",defaultBaseUrl:"https://generativelanguage.googleapis.com/v1beta",defaultAuthType:"x-goog-api-key"}},Ee={auto:"Auto",bearer:"Authorization: Bearer","x-api-key":"x-api-key","x-goog-api-key":"x-goog-api-key","api-key":"api-key",none:"None"},k={anthropic:{label:"Anthropic",format:"anthropic-messages",baseUrl:"https://api.anthropic.com/v1",authType:"x-api-key",envVar:"ANTHROPIC_API_KEY",model:"claude-sonnet-4-6"},openai:{label:"OpenAI",format:"openai-chat",baseUrl:"https://api.openai.com/v1",authType:"bearer",envVar:"OPENAI_API_KEY",tokenLimitField:"max_completion_tokens",model:"gpt-5.1"},"openai-responses":{label:"OpenAI Responses",format:"openai-responses",baseUrl:"https://api.openai.com/v1",authType:"bearer",envVar:"OPENAI_API_KEY",modelPrefix:"openai",model:"gpt-5.1"},google:{label:"Google Gemini",format:"google-generative-ai",baseUrl:"https://generativelanguage.googleapis.com/v1beta",authType:"x-goog-api-key",envVar:"GEMINI_API_KEY",model:"gemini-3-pro-preview"},openrouter:{label:"OpenRouter",format:"openai-chat",baseUrl:"https://openrouter.ai/api/v1",authType:"bearer",envVar:"OPENROUTER_API_KEY",model:""},groq:{label:"Groq",format:"openai-chat",baseUrl:"https://api.groq.com/openai/v1",authType:"bearer",envVar:"GROQ_API_KEY",model:""},deepseek:{label:"DeepSeek",format:"openai-chat",baseUrl:"https://api.deepseek.com",authType:"bearer",envVar:"DEEPSEEK_API_KEY",model:"deepseek-chat"},moonshot:{label:"Moonshot / Kimi",format:"openai-chat",baseUrl:"https://api.moonshot.ai/v1",authType:"bearer",envVar:"MOONSHOT_API_KEY",model:"kimi-k2.5"},qianfan:{label:"Baidu Qianfan",format:"openai-chat",baseUrl:"https://qianfan.baidubce.com/v2",authType:"bearer",envVar:"QIANFAN_API_KEY",model:"deepseek-v3.2"},minimax:{label:"MiniMax (Anthropic-compatible)",format:"anthropic-messages",baseUrl:"https://api.minimax.io/anthropic",authType:"bearer",envVar:"MINIMAX_API_KEY",model:"MiniMax-M2.1"},xai:{label:"xAI",format:"openai-chat",baseUrl:"https://api.x.ai/v1",authType:"bearer",envVar:"XAI_API_KEY",model:""},mistral:{label:"Mistral",format:"openai-chat",baseUrl:"https://api.mistral.ai/v1",authType:"bearer",envVar:"MISTRAL_API_KEY",model:""},cerebras:{label:"Cerebras",format:"openai-chat",baseUrl:"https://api.cerebras.ai/v1",authType:"bearer",envVar:"CEREBRAS_API_KEY",model:""},zai:{label:"Z.AI / GLM",format:"openai-chat",baseUrl:"https://api.z.ai/api/paas/v4",authType:"bearer",envVar:"ZAI_API_KEY",model:""},ollama:{label:"Ollama (local)",format:"openai-chat",baseUrl:"http://127.0.0.1:11434/v1",authType:"none",envVar:"",model:""},lmstudio:{label:"LM Studio (local)",format:"openai-chat",baseUrl:"http://127.0.0.1:1234/v1",authType:"none",envVar:"",model:""},"custom-openai":{label:"Custom OpenAI-compatible",format:"openai-chat",baseUrl:"",authType:"bearer",envVar:"",model:""},"custom-anthropic":{label:"Custom Anthropic-compatible",format:"anthropic-messages",baseUrl:"",authType:"x-api-key",envVar:"",model:""}};function _(r){return rt.default.createHash("sha1").update(r,"utf8").digest("hex")}function Pe(r){return Array.isArray(r)?"["+r.map(Pe).join(",")+"]":r&&typeof r=="object"?"{"+Object.keys(r).sort().map(n=>JSON.stringify(n)+":"+Pe(r[n])).join(",")+"}":JSON.stringify(r)}function Fe(r){return r==="api"||r==="anthropic-api"}function v(r){return k[r.apiProvider]||k.anthropic}function A(r){let n=v(r),e=(r.apiFormat||n.format||"").trim();return T[e]?e:n.format}function F(r){let n=A(r),e=v(r),t=(r.apiBaseUrl||"").trim();if(t)return t.replace(/\/+$/,"");if((r.apiProvider||"").startsWith("custom-"))throw new Error(b(r,"errorCustomProviderBaseUrlRequired"));let a=(e.baseUrl||T[n].defaultBaseUrl||"").trim();if(!a)throw new Error(b(r,"errorApiBaseUrlMissing"));return a.replace(/\/+$/,"")}function ke(r){let n=(r.apiAuthType||"auto").trim();if(n&&n!=="auto")return n;let e=v(r),t=A(r);return e.authType||T[t].defaultAuthType||"bearer"}function nt(r){let n=(r.apiKey||"").trim();if(n)return n;let e=(r.apiKeyEnvVar||v(r).envVar||"").trim();return e&&process.env?.[e]?String(process.env[e]).trim():""}function I(r){let n=(r.model||"").trim();if(!n)throw new Error(b(r,"errorModelMissing"));let e=v(r),t=[r.apiProvider,e.modelPrefix].map(i=>(i||"").trim()).filter(Boolean),a=n.toLowerCase();for(let i of t){let s=i.toLowerCase();if(a.startsWith(s+"/"))return n.slice(i.length+1).trim()}return n}function Ne(r,n){let e=v(r),t=k[n]||k.anthropic,a=(r.model||"").trim(),i=!a||a===y.model||!!e.model&&a===e.model;r.apiProvider=n,r.apiFormat=t.format,r.apiBaseUrl=t.baseUrl,r.apiAuthType=t.authType||"auto",r.apiKeyEnvVar=t.envVar||"",i&&(r.model=t.model||"")}function De(r){Te[r.uiLanguage]||(r.uiLanguage=y.uiLanguage),(!r.apiProvider||!k[r.apiProvider])&&(r.apiProvider="anthropic");let n=v(r);(!r.apiFormat||!T[r.apiFormat])&&(r.apiFormat=n.format),(!r.apiAuthType||!Ee[r.apiAuthType])&&(r.apiAuthType="auto"),r.backend==="anthropic-api"&&(r.apiProvider=r.apiProvider||"anthropic",r.apiFormat=r.apiFormat||"anthropic-messages",r.apiBaseUrl=r.apiBaseUrl||k.anthropic.baseUrl,r.apiAuthType=r.apiAuthType||"x-api-key",r.apiKeyEnvVar=r.apiKeyEnvVar||"ANTHROPIC_API_KEY");let e=Number(r.apiMaxTokens);(!Number.isFinite(e)||e<=0)&&(r.apiMaxTokens=y.apiMaxTokens);let t=Number(r.maxDocChars);return(!Number.isFinite(t)||t<1e3)&&(r.maxDocChars=y.maxDocChars),r.maxCacheEntries=at(r.maxCacheEntries),z[r.promptLanguage]||(r.promptLanguage=y.promptLanguage),r.minCards=et(r.minCards,y.minCards),r.maxCards=et(r.maxCards,y.maxCards),r.maxCardstt(s)-tt(l)||i.localeCompare(o)).slice(0,t.length-e).map(([i])=>i);for(let i of a)delete r[i];return a}function le(r){let n=De(Object.assign({},y,r||{})),e=Fe(n.backend),t=v(n),a=A(n),i=e?(n.apiBaseUrl||t.baseUrl||T[a]?.defaultBaseUrl||"").trim().replace(/\/+$/,""):"";return _(Pe({cacheSchemaVersion:$,promptVersion:wt,maxDocChars:Number(n.maxDocChars)||y.maxDocChars,promptLanguage:n.promptLanguage,minCards:n.minCards,maxCards:n.maxCards,customSystemPromptHash:_(n.customSystemPrompt||""),backend:n.backend,model:n.model,apiProvider:e?n.apiProvider:"",apiFormat:e?a:"",apiBaseUrl:i,apiAuthType:e?ke(n):"",apiHeadersHash:e?_(n.apiHeaders||""):"",apiMaxTokens:e?Number(n.apiMaxTokens)||y.apiMaxTokens:0,structuredOutputVersion:1}))}function ce(r,n,e){return!!r&&r.schemaVersion===$&&r.contentHash===_(n)&&r.settingsHash===le(e)}function vt(r){return r==="en"?"Write title, gist, and bullets in English.":r==="auto"?"Write title, gist, and bullets in the main language of the source document.":"\u7528\u4E2D\u6587\u8F93\u51FA title\u3001gist \u548C bullets\u3002"}function xt(r){return r==="en"?`{"cards":[ +`)}function se(r,n,e){if(!Number.isFinite(n)||n<=0)return-1;let t=Math.floor(n),a=e<0?-1:1;return r<0||r>=t?a<0?t-1:0:Math.min(t-1,Math.max(0,r+a))}function oe(r,n){if(!Array.isArray(r)||n<0||n>=r.length)return-1;let e=Number(r[n]?.startLine);return Number.isFinite(e)&&e>=0?e:-1}var rt=Z(require("crypto"));var Se=1e5,wt=2,$=2,V=100,z={zh:"\u4E2D\u6587",en:"English",auto:"Auto-detect"},Te={auto:"Auto",zh:"\u4E2D\u6587",en:"English"},y={uiLanguage:"auto",backend:"api",cliPath:"",apiProvider:"anthropic",apiFormat:"anthropic-messages",apiBaseUrl:"",apiKey:"",apiKeyEnvVar:"",apiAuthType:"auto",apiHeaders:"",apiMaxTokens:4096,maxDocChars:Se,maxCacheEntries:V,promptLanguage:"zh",minCards:5,maxCards:15,customSystemPrompt:"",model:"claude-sonnet-4-6",exportFolder:"Reading/Articles",cliTimeoutMs:3e5,streaming:!0},T={"anthropic-messages":{label:"Anthropic Messages",defaultBaseUrl:"https://api.anthropic.com/v1",defaultAuthType:"x-api-key"},"openai-chat":{label:"OpenAI Chat Completions",defaultBaseUrl:"https://api.openai.com/v1",defaultAuthType:"bearer",tokenLimitField:"max_tokens"},"openai-responses":{label:"OpenAI Responses",defaultBaseUrl:"https://api.openai.com/v1",defaultAuthType:"bearer"},"google-generative-ai":{label:"Google Gemini generateContent",defaultBaseUrl:"https://generativelanguage.googleapis.com/v1beta",defaultAuthType:"x-goog-api-key"}},Ee={auto:"Auto",bearer:"Authorization: Bearer","x-api-key":"x-api-key","x-goog-api-key":"x-goog-api-key","api-key":"api-key",none:"None"},k={anthropic:{label:"Anthropic",format:"anthropic-messages",baseUrl:"https://api.anthropic.com/v1",authType:"x-api-key",envVar:"ANTHROPIC_API_KEY",model:"claude-sonnet-4-6"},openai:{label:"OpenAI",format:"openai-chat",baseUrl:"https://api.openai.com/v1",authType:"bearer",envVar:"OPENAI_API_KEY",tokenLimitField:"max_completion_tokens",model:"gpt-5.1"},"openai-responses":{label:"OpenAI Responses",format:"openai-responses",baseUrl:"https://api.openai.com/v1",authType:"bearer",envVar:"OPENAI_API_KEY",modelPrefix:"openai",model:"gpt-5.1"},google:{label:"Google Gemini",format:"google-generative-ai",baseUrl:"https://generativelanguage.googleapis.com/v1beta",authType:"x-goog-api-key",envVar:"GEMINI_API_KEY",model:"gemini-3-pro-preview"},openrouter:{label:"OpenRouter",format:"openai-chat",baseUrl:"https://openrouter.ai/api/v1",authType:"bearer",envVar:"OPENROUTER_API_KEY",model:""},groq:{label:"Groq",format:"openai-chat",baseUrl:"https://api.groq.com/openai/v1",authType:"bearer",envVar:"GROQ_API_KEY",model:""},deepseek:{label:"DeepSeek",format:"openai-chat",baseUrl:"https://api.deepseek.com",authType:"bearer",envVar:"DEEPSEEK_API_KEY",model:"deepseek-chat"},moonshot:{label:"Moonshot / Kimi",format:"openai-chat",baseUrl:"https://api.moonshot.ai/v1",authType:"bearer",envVar:"MOONSHOT_API_KEY",model:"kimi-k2.5"},qianfan:{label:"Baidu Qianfan",format:"openai-chat",baseUrl:"https://qianfan.baidubce.com/v2",authType:"bearer",envVar:"QIANFAN_API_KEY",model:"deepseek-v3.2"},minimax:{label:"MiniMax (Anthropic-compatible)",format:"anthropic-messages",baseUrl:"https://api.minimax.io/anthropic",authType:"bearer",envVar:"MINIMAX_API_KEY",model:"MiniMax-M2.1"},xai:{label:"xAI",format:"openai-chat",baseUrl:"https://api.x.ai/v1",authType:"bearer",envVar:"XAI_API_KEY",model:""},mistral:{label:"Mistral",format:"openai-chat",baseUrl:"https://api.mistral.ai/v1",authType:"bearer",envVar:"MISTRAL_API_KEY",model:""},cerebras:{label:"Cerebras",format:"openai-chat",baseUrl:"https://api.cerebras.ai/v1",authType:"bearer",envVar:"CEREBRAS_API_KEY",model:""},zai:{label:"Z.AI / GLM",format:"openai-chat",baseUrl:"https://api.z.ai/api/paas/v4",authType:"bearer",envVar:"ZAI_API_KEY",model:""},ollama:{label:"Ollama (local)",format:"openai-chat",baseUrl:"http://127.0.0.1:11434/v1",authType:"none",envVar:"",model:""},lmstudio:{label:"LM Studio (local)",format:"openai-chat",baseUrl:"http://127.0.0.1:1234/v1",authType:"none",envVar:"",model:""},"custom-openai":{label:"Custom OpenAI-compatible",format:"openai-chat",baseUrl:"",authType:"bearer",envVar:"",model:""},"custom-anthropic":{label:"Custom Anthropic-compatible",format:"anthropic-messages",baseUrl:"",authType:"x-api-key",envVar:"",model:""}};function _(r){return rt.default.createHash("sha1").update(r,"utf8").digest("hex")}function Pe(r){return Array.isArray(r)?"["+r.map(Pe).join(",")+"]":r&&typeof r=="object"?"{"+Object.keys(r).sort().map(n=>JSON.stringify(n)+":"+Pe(r[n])).join(",")+"}":JSON.stringify(r)}function Fe(r){return r==="api"||r==="anthropic-api"}function v(r){return k[r.apiProvider]||k.anthropic}function A(r){let n=v(r),e=(r.apiFormat||n.format||"").trim();return T[e]?e:n.format}function F(r){let n=A(r),e=v(r),t=(r.apiBaseUrl||"").trim();if(t)return t.replace(/\/+$/,"");if((r.apiProvider||"").startsWith("custom-"))throw new Error(b(r,"errorCustomProviderBaseUrlRequired"));let a=(e.baseUrl||T[n].defaultBaseUrl||"").trim();if(!a)throw new Error(b(r,"errorApiBaseUrlMissing"));return a.replace(/\/+$/,"")}function ke(r){let n=(r.apiAuthType||"auto").trim();if(n&&n!=="auto")return n;let e=v(r),t=A(r);return e.authType||T[t].defaultAuthType||"bearer"}function nt(r){let n=(r.apiKey||"").trim();if(n)return n;let e=(r.apiKeyEnvVar||v(r).envVar||"").trim();return e&&process.env?.[e]?String(process.env[e]).trim():""}function I(r){let n=(r.model||"").trim();if(!n)throw new Error(b(r,"errorModelMissing"));let e=v(r),t=[r.apiProvider,e.modelPrefix].map(i=>(i||"").trim()).filter(Boolean),a=n.toLowerCase();for(let i of t){let s=i.toLowerCase();if(a.startsWith(s+"/"))return n.slice(i.length+1).trim()}return n}function Ne(r,n){let e=v(r),t=k[n]||k.anthropic,a=(r.model||"").trim(),i=!a||a===y.model||!!e.model&&a===e.model;r.apiProvider=n,r.apiFormat=t.format,r.apiBaseUrl=t.baseUrl,r.apiAuthType=t.authType||"auto",r.apiKeyEnvVar=t.envVar||"",i&&(r.model=t.model||"")}function De(r){Te[r.uiLanguage]||(r.uiLanguage=y.uiLanguage),(!r.apiProvider||!k[r.apiProvider])&&(r.apiProvider="anthropic");let n=v(r);(!r.apiFormat||!T[r.apiFormat])&&(r.apiFormat=n.format),(!r.apiAuthType||!Ee[r.apiAuthType])&&(r.apiAuthType="auto"),r.backend==="anthropic-api"&&(r.apiProvider=r.apiProvider||"anthropic",r.apiFormat=r.apiFormat||"anthropic-messages",r.apiBaseUrl=r.apiBaseUrl||k.anthropic.baseUrl,r.apiAuthType=r.apiAuthType||"x-api-key",r.apiKeyEnvVar=r.apiKeyEnvVar||"ANTHROPIC_API_KEY");let e=Number(r.apiMaxTokens);(!Number.isFinite(e)||e<=0)&&(r.apiMaxTokens=y.apiMaxTokens);let t=Number(r.maxDocChars);return(!Number.isFinite(t)||t<1e3)&&(r.maxDocChars=y.maxDocChars),r.maxCacheEntries=at(r.maxCacheEntries),z[r.promptLanguage]||(r.promptLanguage=y.promptLanguage),r.minCards=et(r.minCards,y.minCards),r.maxCards=et(r.maxCards,y.maxCards),r.maxCardstt(s)-tt(l)||i.localeCompare(o)).slice(0,t.length-e).map(([i])=>i);for(let i of a)delete r[i];return a}function le(r){let n=De(Object.assign({},y,r||{})),e=Fe(n.backend),t=v(n),a=A(n),i=e?(n.apiBaseUrl||t.baseUrl||T[a]?.defaultBaseUrl||"").trim().replace(/\/+$/,""):"";return _(Pe({cacheSchemaVersion:$,promptVersion:wt,maxDocChars:Number(n.maxDocChars)||y.maxDocChars,promptLanguage:n.promptLanguage,minCards:n.minCards,maxCards:n.maxCards,customSystemPromptHash:_(n.customSystemPrompt||""),backend:n.backend,model:n.model,apiProvider:e?n.apiProvider:"",apiFormat:e?a:"",apiBaseUrl:i,apiAuthType:e?ke(n):"",apiHeadersHash:e?_(n.apiHeaders||""):"",apiMaxTokens:e?Number(n.apiMaxTokens)||y.apiMaxTokens:0,structuredOutputVersion:1}))}function ce(r,n,e){return!!r&&r.schemaVersion===$&&r.contentHash===_(n)&&r.settingsHash===le(e)}function vt(r){return r==="en"?"Write title, gist, and bullets in English.":r==="auto"?"Write title, gist, and bullets in the main language of the source document.":"\u7528\u4E2D\u6587\u8F93\u51FA title\u3001gist \u548C bullets\u3002"}function xt(r){return r==="en"?`{"cards":[ {"title":"U-shaped gains","anchor":"Who benefits from AI? Overall, it shifts the score from one to seven","gist":"AI productivity gains form a U shape, with both ends benefiting most","bullets":["Top-paid software managers benefit by accelerating existing work","Low-paid workers use AI to create new side income","Middle-layer specialists gain less because prompt precision is hard to trust","Average reported benefit is 5.1/7, with 42% describing gains as unclear"]} ]}`:`{"cards":[ {"title":"U \u578B\u6536\u76CA\u66F2\u7EBF","anchor":"\u90A3\u8C01\u53C8\u4F1A\u88AB AI \u6240\u53D7\u76CA\uFF1F\u6574\u4F53\u6765\u770B\uFF0C\u5B83\u628A\u6574\u4E2A\u5206\u6570\u53D8\u6210\u4E86\u4E00\u5206\u5230\u4E03\u5206","gist":"AI \u751F\u4EA7\u529B\u6536\u76CA\u5448 U \u578B\uFF0C\u4E24\u7AEF\u53D7\u76CA\u6700\u5927\u3001\u4E2D\u95F4\u5C42\u584C\u9677","bullets":["\u6700\u9AD8\u85AA\u5C97\u4F4D\uFF08\u8F6F\u4EF6\u7BA1\u7406\uFF09\u901A\u8FC7\u52A0\u901F\u65E2\u6709\u5DE5\u4F5C\u53D7\u76CA\u6700\u5927","\u6700\u4F4E\u85AA\u5C97\u4F4D\uFF08\u5916\u5356\u5458\u3001\u56ED\u827A\u5DE5\uFF09\u7528 AI \u5F00\u526F\u4E1A\u521B\u9020\u65B0\u6536\u5165","\u4E2D\u95F4\u5C42\u79D1\u5B66\u5BB6\u3001\u5F8B\u5E08\u6536\u76CA\u6700\u5C11\uFF0C\u90E8\u5206\u56E0\u5BF9 prompt \u7CBE\u5EA6\u4FE1\u4EFB\u4E0D\u8DB3","\u5168\u4F53\u5747\u5206 5.1/7\uFF0C42% \u62A5\u544A\u6536\u76CA\u6A21\u7CCA"]} diff --git a/src/settings.ts b/src/settings.ts index 88c8b15..cd2c599 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -39,7 +39,7 @@ export const DEFAULT_SETTINGS: PluginSettings = { customSystemPrompt: '', model: 'claude-sonnet-4-6', exportFolder: 'Reading/Articles', - cliTimeoutMs: 120000, + cliTimeoutMs: 300000, streaming: true, };