@zwbigi/ink-xy 0.1.13 → 0.1.14

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 (73) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +3 -3
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  5. package/.next/server/app/_global-error.html +1 -1
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +1 -1
  15. package/.next/server/app/_not-found.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  22. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
  23. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
  24. package/.next/server/app/api/agent/describe-image/route.js.nft.json +1 -1
  25. package/.next/server/app/api/agent/new/route.js +1 -1
  26. package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
  27. package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -1
  28. package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -1
  30. package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -1
  31. package/.next/server/app/api/auth/providers/route.js.nft.json +1 -1
  32. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/gem-xy/[id]/route.js +1 -1
  34. package/.next/server/app/api/gem-xy/[id]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/gem-xy/route.js +1 -1
  36. package/.next/server/app/api/gem-xy/route.js.nft.json +1 -1
  37. package/.next/server/app/api/inkos/route.js +1 -1
  38. package/.next/server/app/api/inkos/route.js.nft.json +1 -1
  39. package/.next/server/app/api/models/route.js.nft.json +1 -1
  40. package/.next/server/app/api/models-config/route.js.nft.json +1 -1
  41. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
  42. package/.next/server/app/api/sessions/[id]/lock/route.js.nft.json +1 -1
  43. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  44. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  45. package/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  46. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  47. package/.next/server/app/api/skills/search/route.js.nft.json +1 -1
  48. package/.next/server/app/api/tts/synthesize/route.js.nft.json +1 -1
  49. package/.next/server/app/index.html +1 -1
  50. package/.next/server/app/index.rsc +2 -2
  51. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  52. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  53. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  54. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  55. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  56. package/.next/server/app/page.js +28 -28
  57. package/.next/server/app/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app-paths-manifest.json +3 -3
  59. package/.next/server/chunks/162.js +1 -1
  60. package/.next/server/middleware-build-manifest.js +1 -1
  61. package/.next/server/pages/404.html +1 -1
  62. package/.next/server/pages/500.html +1 -1
  63. package/.next/static/chunks/app/page-991f48f5e2633ed9.js +167 -0
  64. package/.next/trace +4 -4
  65. package/.next/trace-build +1 -1
  66. package/inkos/packages/cli/dist/index.js +2 -2
  67. package/inkos/packages/core/dist/pipeline/runner.js +2 -2
  68. package/inkos/packages/core/dist/pipeline/runner.js.map +1 -1
  69. package/inkos/packages/core/src/pipeline/runner.ts +2 -2
  70. package/package.json +1 -1
  71. package/.next/static/chunks/app/page-fbf66e00e4553a09.js +0 -167
  72. /package/.next/static/{_dVc8qn-Ll1d6faCafbmD → ptzArTNv_XIBLHZDy7I61}/_buildManifest.js +0 -0
  73. /package/.next/static/{_dVc8qn-Ll1d6faCafbmD → ptzArTNv_XIBLHZDy7I61}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (()=>{var a={};a.id=69,a.ids=[69],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},5880:(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(90720),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/gem-xy/[id]/route",pathname:"/api/gem-xy/[id]",filename:"route",bundlePath:"app/api/gem-xy/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"E:\\ink-xY\\app\\api\\gem-xy\\[id]\\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/gem-xy/[id]/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)}})},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},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);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:()=>{},80307:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$L:()=>n,Tp:()=>j,hb:()=>m,qj:()=>l}),c(23582);var e=c(75430),f=c(29021),g=c(33873),h=a([e]);function i(){return(0,g.join)((0,e.getAgentDir)(),"gem_xy.json")}e=(h.then?(await h)():h)[0];let o=[{id:"default-outline-planner",name:"大纲策划师",description:"负责小说微观冲突、宏观结构、大纲与起承转合编排",avatar:"\uD83D\uDDFA️",systemPrompt:"你是一位顶级的小说大纲策划师。请帮助创作者梳理故事线、微观冲突、主线结构与起承转合。请关注剧情节奏,确保冲突连贯生动,大纲严谨合理。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()},{id:"default-character-smith",name:"人设雕琢师",description:"负责角色塑造、立体性格、背景动机与对话口吻雕琢",avatar:"\uD83D\uDD2E",systemPrompt:"你是一位顶尖的角色塑造专家。请帮助创作者雕琢丰满立体的角色人设。分析人物动机、潜在冲突、性格缺陷以及专属的对话口吻,拒绝扁平化,塑造让人过目不忘的真实人物。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()},{id:"default-chapter-expander",name:"剧情修改扩写",description:"对段落进行修改、润色与扩写,增强环境细节与动作神态描写",avatar:"✍️",systemPrompt:"你是一位精于文字细节、文笔润色与段落修改的小说扩写专家。请帮助写作者修改、扩写或润色草稿。增加丰富的环境细节、微表情动作描写、感官体验,使文学段落更加细腻动人,保持叙事节奏。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()},{id:"default-text-proofreader",name:"文字校对姬",description:"自动化纠错、常识查证、设定矛盾审计与词语润色",avatar:"\uD83D\uDD0D",systemPrompt:"你是一位一丝不苟的专业小说校对编辑。请帮助作者对草稿进行自动纠错、错别字校对、常识查证以及前后设定逻辑矛盾的审计。列出需修正的错漏,并提供优雅的词组替换建议,保持文字纯净通顺。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()}];function j(){let a=i();if(!(0,f.existsSync)(a))try{return k(o),o}catch{return o}try{let b=(0,f.readFileSync)(a,"utf-8"),c=JSON.parse(b),d=!1;for(let a of o){let b=c.findIndex(b=>b.id===a.id);-1===b?(c.push(a),d=!0):(c[b].systemPrompt!==a.systemPrompt||c[b].name!==a.name)&&(c[b].name=a.name,c[b].systemPrompt=a.systemPrompt,c[b].description=a.description,c[b].modified=new Date().toISOString(),d=!0)}let e=["default-co-writer"],g=c.length,h=c.filter(a=>!e.includes(a.id));if(h.length<g&&(c.length=0,c.push(...h),d=!0),d)try{k(c)}catch(a){console.error("Failed to merge missing default gems:",a)}return c}catch(a){return console.error("Failed to read gem_xy.json:",a),[]}}function k(a){let b=i();try{(0,f.writeFileSync)(b,JSON.stringify(a,null,2),"utf-8")}catch(a){throw console.error("Failed to write gem_xy.json:",a),a}}function l(a){return j().find(b=>b.id===a)??null}function m(a){let b,c=j(),d=new Date().toISOString();if(a.id){let e=c.findIndex(b=>b.id===a.id);-1!==e?(b={...c[e],...a,modified:d},c[e]=b):(b={id:a.id,name:a.name,description:a.description||"",avatar:a.avatar||"\uD83E\uDD16",systemPrompt:a.systemPrompt,modelId:a.modelId||"",provider:a.provider||"",allowedTools:a.allowedTools||[],knowledgeFiles:a.knowledgeFiles||[],created:d,modified:d},c.push(b))}else b={id:Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),name:a.name,description:a.description||"",avatar:a.avatar||"\uD83E\uDD16",systemPrompt:a.systemPrompt,modelId:a.modelId||"",provider:a.provider||"",allowedTools:a.allowedTools||[],knowledgeFiles:a.knowledgeFiles||[],created:d,modified:d},c.push(b);return k(c),b}function n(a){let b=j(),c=b.length,d=b.filter(b=>b.id!==a);return d.length<c&&(k(d),!0)}d()}catch(a){d(a)}})},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},90720:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>h});var e=c(23211),f=c(80307),g=a([f]);async function h(a,b){try{let{id:a}=await b.params;if(!a)return e.NextResponse.json({error:"id parameter is required"},{status:400});if(!(0,f.$L)(a))return e.NextResponse.json({error:`Gem-xY with id ${a} not found`},{status:404});return e.NextResponse.json({success:!0})}catch(a){return e.NextResponse.json({error:String(a)},{status:500})}}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[741,813],()=>b(b.s=5880));module.exports=c})();
1
+ (()=>{var a={};a.id=69,a.ids=[69],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},5880:(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(90720),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/gem-xy/[id]/route",pathname:"/api/gem-xy/[id]",filename:"route",bundlePath:"app/api/gem-xy/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"E:\\ink-xY\\app\\api\\gem-xy\\[id]\\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/gem-xy/[id]/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)}})},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},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);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:()=>{},80307:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$L:()=>n,Tp:()=>j,hb:()=>m,qj:()=>l}),c(23582);var e=c(75430),f=c(29021),g=c(33873),h=a([e]);function i(){return(0,g.join)((0,e.getAgentDir)(),"gem_xy.json")}e=(h.then?(await h)():h)[0];let o=[{id:"default-outline-planner",name:"大纲策划师",description:"负责小说微观冲突、宏观结构、大纲与起承转合编排",avatar:"\uD83D\uDDFA️",systemPrompt:"你是一位顶级的小说大纲策划师。请帮助创作者梳理故事线、微观冲突、主线结构与起承转合。请关注剧情节奏,确保冲突连贯生动,大纲严谨合理。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()},{id:"default-character-smith",name:"人设雕琢师",description:"负责角色塑造、立体性格、背景动机与对话口吻雕琢",avatar:"\uD83D\uDD2E",systemPrompt:"你是一位顶尖的角色塑造专家。请帮助创作者雕琢丰满立体的角色人设。分析人物动机、潜在冲突、性格缺陷以及专属的对话口吻,拒绝扁平化,塑造让人过目不忘的真实人物。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()},{id:"default-chapter-expander",name:"剧情修改扩写",description:"对段落进行修改、润色与扩写,增强环境细节与动作神态描写",avatar:"✍️",systemPrompt:"你是一位精于文字细节、文笔润色与段落修改的小说扩写专家。请帮助写作者修改、扩写或润色草稿。增加丰富的环境细节、微表情动作描写、感官体验,使文学段落更加细腻动人,保持叙事节奏。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()},{id:"default-text-proofreader",name:"文字校对姬",description:"自动化纠错、常识查证、设定矛盾审计与词语润色",avatar:"\uD83D\uDD0D",systemPrompt:"你是一位一丝不苟的专业小说校对编辑。请帮助作者对草稿进行自动纠错、错别字校对、常识查证以及前后设定逻辑矛盾的审计。列出需修正的错漏,并提供优雅的词组替换建议,保持文字纯净通顺。\n\n【提示】在回答的最后,若你针对具体章节或文件给出了任何优化、修改或扩写的建议,请在回复结尾加上以下引导话术:\n「我已经为您完成了这一章节的润色与修改。为了保障您的手稿安全,请问您希望如何处理这些修改?\n1. ✍️ 直接应用覆盖:将上述修改内容直接同步覆盖到当前的编辑器原稿中。\n2. \uD83D\uDCBE 另存为新版本:在同目录下为您创建一个独立的新文件(例如 xxx_修改版.md),保留初稿以便您进行版本对比。」",modelId:"",provider:"",allowedTools:[],knowledgeFiles:[],created:new Date().toISOString(),modified:new Date().toISOString()}];function j(){let a=i();if(!(0,f.existsSync)(a))try{return k(o),o}catch{return o}try{let b=(0,f.readFileSync)(a,"utf-8");return JSON.parse(b)}catch(a){return console.error("Failed to read gem_xy.json:",a),[]}}function k(a){let b=i();try{(0,f.writeFileSync)(b,JSON.stringify(a,null,2),"utf-8")}catch(a){throw console.error("Failed to write gem_xy.json:",a),a}}function l(a){return j().find(b=>b.id===a)??null}function m(a){let b,c=j(),d=new Date().toISOString();if(a.id){let e=c.findIndex(b=>b.id===a.id);-1!==e?(b={...c[e],...a,modified:d},c[e]=b):(b={id:a.id,name:a.name,description:a.description||"",avatar:a.avatar||"\uD83E\uDD16",systemPrompt:a.systemPrompt,modelId:a.modelId||"",provider:a.provider||"",allowedTools:a.allowedTools||[],knowledgeFiles:a.knowledgeFiles||[],created:d,modified:d},c.push(b))}else b={id:Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),name:a.name,description:a.description||"",avatar:a.avatar||"\uD83E\uDD16",systemPrompt:a.systemPrompt,modelId:a.modelId||"",provider:a.provider||"",allowedTools:a.allowedTools||[],knowledgeFiles:a.knowledgeFiles||[],created:d,modified:d},c.push(b);return k(c),b}function n(a){let b=j(),c=b.length,d=b.filter(b=>b.id!==a);return d.length<c&&(k(d),!0)}d()}catch(a){d(a)}})},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},90720:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>h});var e=c(23211),f=c(80307),g=a([f]);async function h(a,b){try{let{id:a}=await b.params;if(!a)return e.NextResponse.json({error:"id parameter is required"},{status:400});if(!(0,f.$L)(a))return e.NextResponse.json({error:`Gem-xY with id ${a} not found`},{status:404});return e.NextResponse.json({success:!0})}catch(a){return e.NextResponse.json({error:String(a)},{status:500})}}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[741,813],()=>b(b.s=5880));module.exports=c})();