@zwbigi/ink-xy 0.1.18 → 0.1.21
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +4 -3
- package/.next/build-manifest.json +2 -2
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/describe-image/route.js +1 -1
- package/.next/server/app/api/agent/describe-image/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/new/route.js +2 -2
- package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/parse-characters/route.js +1 -1
- package/.next/server/app/api/agent/parse-characters/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js.nft.json +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/gem-xy/[id]/route.js +1 -1
- package/.next/server/app/api/gem-xy/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/gem-xy/route.js +1 -1
- package/.next/server/app/api/gem-xy/route.js.nft.json +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/inkos/route.js +1 -1
- package/.next/server/app/api/inkos/route.js.nft.json +1 -1
- package/.next/server/app/api/license/route.js +1 -0
- package/.next/server/app/api/license/route.js.nft.json +1 -0
- package/.next/server/app/api/license/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/route.js.nft.json +1 -1
- package/.next/server/app/api/register-cwd/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/lock/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/lock/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/new/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/search/route.js.nft.json +1 -1
- package/.next/server/app/api/tts/synthesize/route.js +1 -1
- package/.next/server/app/api/tts/synthesize/route.js.nft.json +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js +24 -20
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +4 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/app/{api/agent/[id]/route-63ec4518ba538b61.js → _global-error/page-63cbf8d9f448c4cc.js} +1 -1
- package/.next/static/chunks/app/api/agent/{describe-image/route-63ec4518ba538b61.js → [id]/events/route-63cbf8d9f448c4cc.js} +1 -1
- package/.next/static/chunks/app/{_global-error/page-63ec4518ba538b61.js → api/agent/[id]/route-63cbf8d9f448c4cc.js} +1 -1
- package/.next/static/chunks/app/api/agent/{[id]/events/route-63ec4518ba538b61.js → describe-image/route-63cbf8d9f448c4cc.js} +1 -1
- package/.next/static/chunks/app/api/agent/new/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/agent/parse-characters/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/gem-xy/[id]/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/gem-xy/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/home/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/inkos/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/license/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/models/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/register-cwd/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/lock/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/sessions/new/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/skills/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/api/tts/synthesize/route-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/app/page-e44dae523dff5f21.js +217 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-63cbf8d9f448c4cc.js +1 -0
- package/.next/static/css/28654ba5917696cd.css +3 -0
- package/.next/static/lpnSsjt1h_QIr2FOShVhq/_buildManifest.js +1 -0
- package/.next/trace +5 -4
- package/.next/trace-build +1 -1
- package/.next/types/app/api/license/route.ts +351 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/package.json +1 -1
- package/public/favicon.ico +0 -0
- package/public/generate_favicon.py +4 -2
- package/public/icon.png +0 -0
- package/.next/static/CYoGxD43GrJlRtML0wi-d/_buildManifest.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/agent/parse-characters/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/gem-xy/[id]/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/gem-xy/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/home/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/inkos/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/models/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/register-cwd/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/lock/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/sessions/new/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/skills/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/api/tts/synthesize/route-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/app/page-a195c8445a56b83b.js +0 -213
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-63ec4518ba538b61.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-63ec4518ba538b61.js +0 -1
- package/.next/static/css/beaced3a0c85e8d4.css +0 -3
- /package/.next/static/{CYoGxD43GrJlRtML0wi-d → lpnSsjt1h_QIr2FOShVhq}/_ssgManifest.js +0 -0
|
@@ -12,4 +12,4 @@
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
## 🛠️ 【最终直调用 Prompt】
|
|
15
|
-
请根据上述分析,直接组合出可直接复制的流利中文 Prompt。请使用纯英文自然语言或短语(用逗号隔开),以便我直接复制粘贴:`;if(u){let a=await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${q}:generateContent?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{parts:[{text:w},{inlineData:{mimeType:l,data:k}}]}],generationConfig:{maxOutputTokens:1e3}})});if(!a.ok){let b=await a.json();throw Error(`Gemini API returned status ${a.status}: ${JSON.stringify(b)}`)}let b=await a.json(),c=i(b.candidates?.[0]?.content?.parts?.[0]?.text?.trim()||"");return e.NextResponse.json({description:c})}if("anthropic"===p){let a=await fetch("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":r,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:q||"claude-3-5-sonnet-20241022",max_tokens:1e3,messages:[{role:"user",content:[{type:"image",source:{type:"base64",media_type:l,data:k}},{type:"text",text:w}]}]})});if(!a.ok){let b=await a.json();throw Error(`Anthropic API returned status ${a.status}: ${JSON.stringify(b)}`)}let b=await a.json(),c=i(b.content?.[0]?.text?.trim()||"");return e.NextResponse.json({description:c})}{let a=`data:${l};base64,${k}`;q&&q.toLowerCase().includes("mimo")&&q.toLowerCase().includes("flash")&&(q="mimo-v2-omni");let b={model:q,messages:[{role:"user",content:[{type:"text",text:w},{type:"image_url",image_url:{url:a}}]}],max_tokens:1e3};console.log(`[describe-image] Sending to: ${s}`),console.log(`[describe-image] model: ${q}, provider: ${p}`),console.log(`[describe-image] imageUrl prefix: ${a.substring(0,60)}...`),console.log(`[describe-image] headers (keys): ${Object.keys(t).join(", ")}`);let c=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(b)});if(!c.ok){let a=await c.json();throw Error(`${p.toUpperCase()} API returned status ${c.status}: ${JSON.stringify(a)}`)}let d=await c.json(),f=d.choices?.[0]?.message,g=f?.content?.trim()||"";if(!g&&f){let a=f.reasoning_content?.trim()||f.thinking_content?.trim()||f.thinking?.trim()||"";if(a){let b=a.split(/\n\n+/).map(a=>a.trim()).filter(Boolean),c=["不对","等等","可能","但是我","然而我","让我","先得","首先得","再想"];for(let a=b.length-1;a>=0;a--){let d=b[a],e=c.some(a=>d.startsWith(a));if(d.length>=40&&!e){g=d;break}}g||(g=a)}}return e.NextResponse.json({description:i(g)})}}catch(a){return console.error("Error in describe-image API:",a),e.NextResponse.json({error:String(a)},{status:500})}}d()}catch(a){d(a)}})},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16510:(a,b,c)=>{"use strict";function d(a,b){let c=a.toLowerCase(),d=b.toLowerCase();return!(d.includes("tts")||d.includes("voiceclone")||d.includes("voicedesign")||d.includes("audio-gen")||d.includes("mimo")&&d.includes("flash"))&&(c.includes("deepseek")||d.includes("deepseek")?!!(d.includes("vl")||d.includes("v4")||d.includes("janus")||d.includes("ocr")):c.includes("openai")?!d.includes("o1-mini")&&!!(d.includes("gpt-4o")||d.includes("gpt-5")||d.includes("gpt-4.5")||d.includes("gpt-4-turbo")||d.includes("vision")||d.includes("multimodal")||"o1"===d||d.startsWith("o1-202")):c.includes("anthropic")?!!(d.includes("claude-3")||d.includes("claude-4")||d.includes("claude-5")||d.includes("claude-sonnet")||d.includes("claude-opus")||d.includes("claude-")&&(d.includes("vision")||d.includes("multimodal"))):c.includes("google")||c.includes("gemini")?!!(d.includes("gemini-")||d.includes("omni")||d.includes("vision")||d.includes("multimodal")):!!(d.includes("vision")||d.includes("multimodal")||d.includes("vlm")||d.includes("vla")||d.includes("gpt-4o")||d.includes("gpt-5")||d.includes("gpt-4.5")||d.includes("claude-3")||d.includes("claude-4")||d.includes("gemini-")||d.includes("pixtral")||d.includes("mimo")||d.includes("-vl")||d.includes("molmo")||d.includes("paligemma")||d.includes("gemma-3")||d.includes("gemma-4")||d.includes("gemma-5")||d.includes("llama")&&(d.includes("11b")||d.includes("90b")||d.includes("vision")||d.includes("multimodal"))||d.includes("qwen")&&d.includes("vl")||d.includes("glm")&&(d.includes("vision")||d.includes("vl")||d.includes("thinking")||/glm-(?:\d+(?:\.\d+)?v|edge-v|omni)/i.test(d))||d.includes("cogvlm")||d.includes("internvl")||d.includes("yi")&&d.includes("vl")||d.includes("step-")&&(d.includes("v")||d.includes("vision"))||d.includes("hunyuan")&&(d.includes("vision")||d.includes("vl"))||d.includes("doubao")&&(d.includes("vision")||d.includes("vl"))||(d.includes("kimi")||d.includes("moonshot"))&&(d.includes("vision")||d.includes("vl")||d.includes("2.6")||d.includes("k2"))||d.includes("abab")&&(d.includes("vision")||d.includes("vl"))||d.includes("minimax")&&(d.includes("vision")||d.includes("vl"))||d.includes("hailuo")))}c.d(b,{S:()=>d})},21820:a=>{"use strict";a.exports=require("os")},23582:(a,b,c)=>{"use strict";var d=c(21820),e=c(33873),f=c(29021);let g=(0,d.homedir)(),h=(0,e.join)(g,".ink","agent"),i=(0,e.join)(g,".pi","agent");process.env.PI_CODING_AGENT_DIR||(process.env.PI_CODING_AGENT_DIR=h),process.env.INKOS_LLM_MAX_TOKENS||(process.env.INKOS_LLM_MAX_TOKENS="16384");try{if((0,f.existsSync)(i)){for(let a of((0,f.existsSync)(h)||(0,f.mkdirSync)(h,{recursive:!0}),["models.json","auth.json","settings.json","fetched-models-cache.json","gem_xy.json","locked-sessions.json"])){let b=(0,e.join)(i,a),c=(0,e.join)(h,a);if((0,f.existsSync)(b)&&function(a){try{if(!(0,f.existsSync)(a))return!0;let b=(0,f.readFileSync)(a,"utf8").trim();if(!b||"{}"===b||'{\n "providers": {}\n}'===b)return!0;let c=JSON.parse(b);if(0===Object.keys(c).length||c.providers&&0===Object.keys(c.providers).length)return!0;return!1}catch{return!0}}(c))try{(0,f.writeFileSync)(c,(0,f.readFileSync)(b)),console.log(`[env-init] Migrated config file ${a} from .pi/agent to .ink/agent`)}catch(b){console.error(`[env-init] Failed to migrate config file ${a}:`,b)}}for(let a of["sessions","skills","bin"]){let b=(0,e.join)(i,a),c=(0,e.join)(h,a);if((0,f.existsSync)(b))try{!function a(b,c){if((0,f.existsSync)(b))for(let d of((0,f.existsSync)(c)||(0,f.mkdirSync)(c,{recursive:!0}),(0,f.readdirSync)(b,{withFileTypes:!0}))){let g=(0,e.join)(b,d.name),h=(0,e.join)(c,d.name);if(d.isDirectory())a(g,h);else try{(0,f.existsSync)(h)||(0,f.writeFileSync)(h,(0,f.readFileSync)(g))}catch(a){console.error(`[env-init] Failed to copy file ${g} to ${h}:`,a)}}}(b,c),console.log(`[env-init] Migrated directory ${a} from .pi/agent to .ink/agent`)}catch(b){console.error(`[env-init] Failed to migrate directory ${a}:`,b)}}let a=(0,e.join)(g,".pi");if((0,f.existsSync)(a))try{let b=a+".bak",c=b,d=1;for(;(0,f.existsSync)(c);)c=`${b}_${d}`,d++;(0,f.renameSync)(a,c),console.log(`[env-init] Renamed old config dir ${a} to ${c}`)}catch(a){console.error("[env-init] Failed to rename old config dir:",a)}}}catch(a){console.error("[env-init] Migration failed:",a)}},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},78335:()=>{},82882:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(5262),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/agent/describe-image/route",pathname:"/api/agent/describe-image",filename:"route",bundlePath:"app/api/agent/describe-image/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"E:\\ink-xY\\app\\api\\agent\\describe-image\\route.ts",nextConfigOutput:"",userland:v}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/agent/describe-image/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{},98388:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Lj:()=>k,P6:()=>m,QA:()=>l}),c(23582);var e=c(29021),f=c(33873),g=c(75430),h=c(16510),i=a([g]);function j(){return(0,f.join)((0,g.getAgentDir)(),"fetched-models-cache.json")}g=(i.then?(await i)():i)[0];let n=null;function k(){if(n)return n;let a=j();if((0,e.existsSync)(a))try{return n=JSON.parse((0,e.readFileSync)(a,"utf8"))}catch{}return n={}}function l(a){setTimeout(async()=>{try{let b=k(),c=Date.now(),d=(0,f.join)((0,g.getAgentDir)(),"auth.json");if(!(0,e.existsSync)(d))return;let i=JSON.parse((0,e.readFileSync)(d,"utf8")),l=Object.keys(i),m=!1;for(let d of l){let e=i[d]?.key;if(!e)continue;let f=b[d];if(f&&c-f.updatedAt<36e5)continue;console.log(`[model-resolver] Background syncing models list for provider: "${d}"...`);let g=a.models?.find(a=>a.provider===d),j=g?.baseUrl||"",k=function(a,b){let c=a.toLowerCase();if(c.startsWith("minimax"))return"https://api.minimaxi.com/v1/models";if(c.includes("google")||c.includes("gemini"))return"https://generativelanguage.googleapis.com/v1beta/models";let d=b;return d.endsWith("/anthropic")&&(d=d.replace("/anthropic","/v1")),d.endsWith("/")&&(d=d.slice(0,-1)),d.endsWith("/models")||(d=`${d}/models`),d}(d,j),l={},n=k,o=d.toLowerCase();o.includes("google")||o.includes("gemini")?n=`${k}?key=${e}`:l.Authorization=`Bearer ${e}`;try{let a=await fetch(n,{headers:l,signal:AbortSignal.timeout(6e3)});if(!a.ok){console.error(`[model-resolver] Failed to fetch models for "${d}": HTTP ${a.status}`);continue}let e=await a.json(),f=[];if((f=o.includes("google")||o.includes("gemini")?(e.models||[]).map(a=>{let b=a.name||"";return b.startsWith("models/")?b.replace("models/",""):b}).filter(a=>a.includes("gemini")):(e.data||[]).map(a=>a.id).filter(Boolean)).length>0){let a=f.map(a=>{let b=(0,h.S)(d,a);return{id:a,name:a,provider:d,supportsVision:b}});b[d]={updatedAt:c,models:a},m=!0,console.log(`[model-resolver] Successfully synced ${f.length} models for "${d}".`)}}catch(a){console.error(`[model-resolver] Fetch failed for "${d}":`,a)}}m&&function(a){n=a;try{(0,e.writeFileSync)(j(),JSON.stringify(a,null,2),"utf8")}catch(a){console.error("Failed to save models cache:",a)}}(b)}catch(a){console.error("[model-resolver] Error in triggerBackgroundModelsSync:",a)}},100)}function m(a,b,c){let d=a.find(b,c);if(d)return d;let e=b.toLowerCase(),f=c.toLowerCase();if("minimax-cn"===e&&"MiniMax-M3"===c){let b=a.find("minimax-cn","MiniMax-M2.7")||a.find("minimax-cn","MiniMax-M2.7-highspeed");return b?{...b,id:"MiniMax-M3",name:"MiniMax-M3",api:"openai-completions",baseUrl:b.baseUrl.includes("anthropic")?b.baseUrl.replace("/anthropic","/v1"):"https://api.minimaxi.com/v1",reasoning:!0}:{id:"MiniMax-M3",name:"MiniMax-M3",api:"openai-completions",provider:"minimax-cn",baseUrl:"https://api.minimaxi.com/v1",reasoning:!0,input:["text"],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072}}let g=(a.models||[]).find(a=>a.provider===b)||("function"==typeof a.getAll?a.getAll().find(a=>a.provider===b):void 0);if(g){let a=(0,h.S)(b,c);return{...g,id:c,name:c,reasoning:f.includes("reasoning")||f.includes("thinking")||f.includes("-r1")||g.reasoning,input:a?["text","image"]:["text"]}}}d()}catch(a){d(a)}})}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[741,813],()=>b(b.s=82882));module.exports=c})();
|
|
15
|
+
请根据上述分析,直接组合出可直接复制的流利中文 Prompt。请使用纯英文自然语言或短语(用逗号隔开),以便我直接复制粘贴:`;if(u){let a=await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${q}:generateContent?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{parts:[{text:w},{inlineData:{mimeType:l,data:k}}]}],generationConfig:{maxOutputTokens:1e3}})});if(!a.ok){let b=await a.json();throw Error(`Gemini API returned status ${a.status}: ${JSON.stringify(b)}`)}let b=await a.json(),c=i(b.candidates?.[0]?.content?.parts?.[0]?.text?.trim()||"");return e.NextResponse.json({description:c})}if("anthropic"===p){let a=await fetch("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":r,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:q||"claude-3-5-sonnet-20241022",max_tokens:1e3,messages:[{role:"user",content:[{type:"image",source:{type:"base64",media_type:l,data:k}},{type:"text",text:w}]}]})});if(!a.ok){let b=await a.json();throw Error(`Anthropic API returned status ${a.status}: ${JSON.stringify(b)}`)}let b=await a.json(),c=i(b.content?.[0]?.text?.trim()||"");return e.NextResponse.json({description:c})}{let a=`data:${l};base64,${k}`;q&&q.toLowerCase().includes("mimo")&&q.toLowerCase().includes("flash")&&(q="mimo-v2-omni");let b={model:q,messages:[{role:"user",content:[{type:"text",text:w},{type:"image_url",image_url:{url:a}}]}],max_tokens:1e3};console.log(`[describe-image] Sending to: ${s}`),console.log(`[describe-image] model: ${q}, provider: ${p}`),console.log(`[describe-image] imageUrl prefix: ${a.substring(0,60)}...`),console.log(`[describe-image] headers (keys): ${Object.keys(t).join(", ")}`);let c=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(b)});if(!c.ok){let a=await c.json();throw Error(`${p.toUpperCase()} API returned status ${c.status}: ${JSON.stringify(a)}`)}let d=await c.json(),f=d.choices?.[0]?.message,g=f?.content?.trim()||"";if(!g&&f){let a=f.reasoning_content?.trim()||f.thinking_content?.trim()||f.thinking?.trim()||"";if(a){let b=a.split(/\n\n+/).map(a=>a.trim()).filter(Boolean),c=["不对","等等","可能","但是我","然而我","让我","先得","首先得","再想"];for(let a=b.length-1;a>=0;a--){let d=b[a],e=c.some(a=>d.startsWith(a));if(d.length>=40&&!e){g=d;break}}g||(g=a)}}return e.NextResponse.json({description:i(g)})}}catch(a){return console.error("Error in describe-image API:",a),e.NextResponse.json({error:String(a)},{status:500})}}d()}catch(a){d(a)}})},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16510:(a,b,c)=>{"use strict";function d(a,b){let c=a.toLowerCase(),d=b.toLowerCase();return!(d.includes("tts")||d.includes("voiceclone")||d.includes("voicedesign")||d.includes("audio-gen")||d.includes("mimo")&&d.includes("flash"))&&(c.includes("deepseek")||d.includes("deepseek")?!!(d.includes("vl")||d.includes("v4")||d.includes("janus")||d.includes("ocr")):c.includes("openai")?!d.includes("o1-mini")&&!!(d.includes("gpt-4o")||d.includes("gpt-5")||d.includes("gpt-4.5")||d.includes("gpt-4-turbo")||d.includes("vision")||d.includes("multimodal")||"o1"===d||d.startsWith("o1-202")):c.includes("anthropic")?!!(d.includes("claude-3")||d.includes("claude-4")||d.includes("claude-5")||d.includes("claude-sonnet")||d.includes("claude-opus")||d.includes("claude-")&&(d.includes("vision")||d.includes("multimodal"))):c.includes("google")||c.includes("gemini")?!!(d.includes("gemini-")||d.includes("omni")||d.includes("vision")||d.includes("multimodal")):!!(d.includes("vision")||d.includes("multimodal")||d.includes("vlm")||d.includes("vla")||d.includes("gpt-4o")||d.includes("gpt-5")||d.includes("gpt-4.5")||d.includes("claude-3")||d.includes("claude-4")||d.includes("gemini-")||d.includes("pixtral")||d.includes("mimo")||d.includes("-vl")||d.includes("molmo")||d.includes("paligemma")||d.includes("gemma-3")||d.includes("gemma-4")||d.includes("gemma-5")||d.includes("llama")&&(d.includes("11b")||d.includes("90b")||d.includes("vision")||d.includes("multimodal"))||d.includes("qwen")&&d.includes("vl")||d.includes("glm")&&(d.includes("vision")||d.includes("vl")||d.includes("thinking")||/glm-(?:\d+(?:\.\d+)?v|edge-v|omni)/i.test(d))||d.includes("cogvlm")||d.includes("internvl")||d.includes("yi")&&d.includes("vl")||d.includes("step-")&&(d.includes("v")||d.includes("vision"))||d.includes("hunyuan")&&(d.includes("vision")||d.includes("vl"))||d.includes("doubao")&&(d.includes("vision")||d.includes("vl"))||(d.includes("kimi")||d.includes("moonshot"))&&(d.includes("vision")||d.includes("vl")||d.includes("2.6")||d.includes("k2"))||d.includes("abab")&&(d.includes("vision")||d.includes("vl"))||d.includes("minimax")&&(d.includes("vision")||d.includes("vl"))||d.includes("hailuo")))}c.d(b,{S:()=>d})},21820:a=>{"use strict";a.exports=require("os")},23582:(a,b,c)=>{"use strict";var d=c(21820),e=c(33873),f=c(29021);let g=(0,d.homedir)(),h=(0,e.join)(g,".ink","agent"),i=(0,e.join)(g,".pi","agent");process.env.PI_CODING_AGENT_DIR||(process.env.PI_CODING_AGENT_DIR=h),process.env.INKOS_LLM_MAX_TOKENS||(process.env.INKOS_LLM_MAX_TOKENS="16384");try{if((0,f.existsSync)(i)){for(let a of((0,f.existsSync)(h)||(0,f.mkdirSync)(h,{recursive:!0}),["models.json","auth.json","settings.json","fetched-models-cache.json","gem_xy.json","locked-sessions.json"])){let b=(0,e.join)(i,a),c=(0,e.join)(h,a);if((0,f.existsSync)(b)&&function(a){try{if(!(0,f.existsSync)(a))return!0;let b=(0,f.readFileSync)(a,"utf8").trim();if(!b||"{}"===b||'{\n "providers": {}\n}'===b)return!0;let c=JSON.parse(b);if(0===Object.keys(c).length||c.providers&&0===Object.keys(c.providers).length)return!0;return!1}catch{return!0}}(c))try{(0,f.writeFileSync)(c,(0,f.readFileSync)(b)),console.log(`[env-init] Migrated config file ${a} from .pi/agent to .ink/agent`)}catch(b){console.error(`[env-init] Failed to migrate config file ${a}:`,b)}}for(let a of["sessions","skills","bin"]){let b=(0,e.join)(i,a),c=(0,e.join)(h,a);if((0,f.existsSync)(b))try{!function a(b,c){if((0,f.existsSync)(b))for(let d of((0,f.existsSync)(c)||(0,f.mkdirSync)(c,{recursive:!0}),(0,f.readdirSync)(b,{withFileTypes:!0}))){let g=(0,e.join)(b,d.name),h=(0,e.join)(c,d.name);if(d.isDirectory())a(g,h);else try{(0,f.existsSync)(h)||(0,f.writeFileSync)(h,(0,f.readFileSync)(g))}catch(a){console.error(`[env-init] Failed to copy file ${g} to ${h}:`,a)}}}(b,c),console.log(`[env-init] Migrated directory ${a} from .pi/agent to .ink/agent`)}catch(b){console.error(`[env-init] Failed to migrate directory ${a}:`,b)}}let a=(0,e.join)(g,".pi");if((0,f.existsSync)(a))try{let b=a+".bak",c=b,d=1;for(;(0,f.existsSync)(c);)c=`${b}_${d}`,d++;(0,f.renameSync)(a,c),console.log(`[env-init] Renamed old config dir ${a} to ${c}`)}catch(a){console.error("[env-init] Failed to rename old config dir:",a)}}}catch(a){console.error("[env-init] Migration failed:",a)}},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},42113:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(5262),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/agent/describe-image/route",pathname:"/api/agent/describe-image",filename:"route",bundlePath:"app/api/agent/describe-image/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"E:\\ink-xY\\app\\api\\agent\\describe-image\\route.ts",nextConfigOutput:"",userland:v}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/agent/describe-image/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{},98388:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Lj:()=>k,P6:()=>m,QA:()=>l}),c(23582);var e=c(29021),f=c(33873),g=c(75430),h=c(16510),i=a([g]);function j(){return(0,f.join)((0,g.getAgentDir)(),"fetched-models-cache.json")}g=(i.then?(await i)():i)[0];let n=null;function k(){if(n)return n;let a=j();if((0,e.existsSync)(a))try{return n=JSON.parse((0,e.readFileSync)(a,"utf8"))}catch{}return n={}}function l(a){setTimeout(async()=>{try{let b=k(),c=Date.now(),d=(0,f.join)((0,g.getAgentDir)(),"auth.json");if(!(0,e.existsSync)(d))return;let i=JSON.parse((0,e.readFileSync)(d,"utf8")),l=Object.keys(i),m=!1;for(let d of l){let e=i[d]?.key;if(!e)continue;let f=b[d];if(f&&c-f.updatedAt<36e5)continue;console.log(`[model-resolver] Background syncing models list for provider: "${d}"...`);let g=a.models?.find(a=>a.provider===d),j=g?.baseUrl||"",k=function(a,b){let c=a.toLowerCase();if(c.startsWith("minimax"))return"https://api.minimaxi.com/v1/models";if(c.includes("google")||c.includes("gemini"))return"https://generativelanguage.googleapis.com/v1beta/models";let d=b;return d.endsWith("/anthropic")&&(d=d.replace("/anthropic","/v1")),d.endsWith("/")&&(d=d.slice(0,-1)),d.endsWith("/models")||(d=`${d}/models`),d}(d,j),l={},n=k,o=d.toLowerCase();o.includes("google")||o.includes("gemini")?n=`${k}?key=${e}`:l.Authorization=`Bearer ${e}`;try{let a=await fetch(n,{headers:l,signal:AbortSignal.timeout(6e3)});if(!a.ok){console.error(`[model-resolver] Failed to fetch models for "${d}": HTTP ${a.status}`);continue}let e=await a.json(),f=[];if((f=o.includes("google")||o.includes("gemini")?(e.models||[]).map(a=>{let b=a.name||"";return b.startsWith("models/")?b.replace("models/",""):b}).filter(a=>a.includes("gemini")):(e.data||[]).map(a=>a.id).filter(Boolean)).length>0){let a=f.map(a=>{let b=(0,h.S)(d,a);return{id:a,name:a,provider:d,supportsVision:b}});b[d]={updatedAt:c,models:a},m=!0,console.log(`[model-resolver] Successfully synced ${f.length} models for "${d}".`)}}catch(a){console.error(`[model-resolver] Fetch failed for "${d}":`,a)}}m&&function(a){n=a;try{(0,e.writeFileSync)(j(),JSON.stringify(a,null,2),"utf8")}catch(a){console.error("Failed to save models cache:",a)}}(b)}catch(a){console.error("[model-resolver] Error in triggerBackgroundModelsSync:",a)}},100)}function m(a,b,c){let d=a.find(b,c);if(d)return d;let e=b.toLowerCase(),f=c.toLowerCase();if("minimax-cn"===e&&"MiniMax-M3"===c){let b=a.find("minimax-cn","MiniMax-M2.7")||a.find("minimax-cn","MiniMax-M2.7-highspeed");return b?{...b,id:"MiniMax-M3",name:"MiniMax-M3",api:"openai-completions",baseUrl:b.baseUrl.includes("anthropic")?b.baseUrl.replace("/anthropic","/v1"):"https://api.minimaxi.com/v1",reasoning:!0}:{id:"MiniMax-M3",name:"MiniMax-M3",api:"openai-completions",provider:"minimax-cn",baseUrl:"https://api.minimaxi.com/v1",reasoning:!0,input:["text"],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072}}let g=(a.models||[]).find(a=>a.provider===b)||("function"==typeof a.getAll?a.getAll().find(a=>a.provider===b):void 0);if(g){let a=(0,h.S)(b,c);return{...g,id:c,name:c,reasoning:f.includes("reasoning")||f.includes("thinking")||f.includes("-r1")||g.reasoning,input:a?["text","image"]:["text"]}}}d()}catch(a){d(a)}})}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[741,813],()=>b(b.s=42113));module.exports=c})();
|