@linzumi/cli 1.0.38 → 1.0.40

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.
@@ -148,7 +148,7 @@ Open: ${r.verificationUri}
148
148
  </main>
149
149
  </body>
150
150
  </html>`}function Xl(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function aT(t){return t.replace(/[&^|<>()%"]/g,e=>`^${e}`)}function cT(t){let e=process.platform==="darwin"?"open":process.platform==="win32"?"cmd":"xdg-open",r=process.platform==="win32"?["/c","start","",aT(t)]:[t];return new Promise(n=>{Kl("process.spawn",{command:e,args:r,purpose:"oauth.open_browser"});let o=Vz(e,r,{stdio:"ignore",detached:!0});Kl("process.spawned",{command:e,args:r,pid:o.pid,purpose:"oauth.open_browser"}),o.on("error",()=>n()),o.on("spawn",()=>{o.unref(),n()})})}function hy(){return fT(dT(),".linzumi","auth.json")}function hi(t,e=hy()){if(!Yl(e))return;let r=ed(Ql(e,"utf8")),n=xt(t),o=r.local_codex_runner?.[n];if(!(o===void 0||o.access_token.trim()==="")&&!(o.expires_at!==void 0&&Date.parse(o.expires_at)<=Date.now()))return{accessToken:o.access_token,kandanBaseUrl:n,issuedAt:o.issued_at,expiresAt:o.expires_at}}function gy(t){if(!Yl(t))throw new Error(`missing personal-agent delegation auth file: ${t}`);let r=ed(Ql(t,"utf8")).personal_agent_delegation;if(r===void 0||r.access_token.trim()==="")throw new Error("personal-agent delegation auth file is missing access_token");if(r.expires_at!==void 0&&Date.parse(r.expires_at)<=Date.now())throw new Error("personal-agent delegation auth file token is expired");return{accessToken:r.access_token,issuedAt:r.issued_at,expiresAt:r.expires_at}}function yy(t){let e=t.authFilePath??hy(),r=Yl(e)?ed(Ql(e,"utf8")):{version:1},n=xt(t.kandanUrl),o=new Date,s=t.expiresInSeconds===void 0?void 0:new Date(o.getTime()+t.expiresInSeconds*1e3).toISOString(),i={...r,version:1,local_codex_runner:{...r.local_codex_runner??{},[n]:{access_token:t.accessToken,issued_at:o.toISOString(),expires_at:s}}};return uT(pT(e),{recursive:!0}),lT(e,`${JSON.stringify(i,null,2)}
151
- `,"utf8"),{accessToken:t.accessToken,kandanBaseUrl:n,issuedAt:o.toISOString(),expiresAt:s}}function ed(t){let e=JSON.parse(t);if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Kandan auth cache must contain a JSON object");let r=e,n=r.local_codex_runner,o=r.personal_agent_delegation;if(n!==void 0&&(typeof n!="object"||n===null||Array.isArray(n)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:hT(n),personal_agent_delegation:mT(o)}}function mT(t){if(typeof t!="object"||t===null||Array.isArray(t))return;let e=t.access_token,r=t.issued_at,n=t.expires_at;if(!(typeof e!="string"||typeof r!="string"))return{access_token:e,issued_at:r,expires_at:typeof n=="string"?n:void 0}}function hT(t){if(!(typeof t!="object"||t===null||Array.isArray(t)))return Object.fromEntries(Object.entries(t).flatMap(([e,r])=>{if(typeof r!="object"||r===null||Array.isArray(r))return[];let n=r.access_token,o=r.issued_at,s=r.expires_at;return typeof n!="string"||typeof o!="string"?[]:[[e,{access_token:n,issued_at:o,expires_at:typeof s=="string"?s:void 0}]]}))}async function _y(t,e={readCachedToken:hi,validateToken:zo,acquireAndCacheToken:_T}){if(t.explicitToken!==void 0)return t.explicitToken;let r=e.readCachedToken(t.kandanUrl,t.authFilePath);if(r!==void 0){let o=await e.validateToken({kandanUrl:t.kandanUrl,accessToken:r.accessToken,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,requiredScopes:t.requiredScopes});if(o==="usable")return r.accessToken;t.reportRejectedCachedToken?.(o)}let n=await e.acquireAndCacheToken(t);return t.workspaceSlug!==void 0&&await gT(t,e,n),n}async function gT(t,e,r){let n;try{n=await e.validateToken({kandanUrl:t.kandanUrl,accessToken:r,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,requiredScopes:t.requiredScopes})}catch{return}if(n==="not_found")throw new Error(yT(t))}function yT(t){let e=new URL(xt(t.kandanUrl)).host;return`Workspace '${t.workspaceSlug}' was not found on ${e}. Sign in to the web app to create it, then re-run connect.`}async function _T(t){let e=t.authMode??{kind:"browser",callbackHost:t.callbackHost},r=e.kind==="device"?await fy({kandanUrl:t.kandanUrl,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,onboarding:t.onboarding}):await py({kandanUrl:t.kandanUrl,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,onboarding:t.onboarding,callbackHost:e.callbackHost??t.callbackHost});return yy({kandanUrl:t.kandanUrl,accessToken:r.accessToken,expiresInSeconds:r.expiresInSeconds,authFilePath:t.authFilePath}),r.accessToken}import{readFile as fC,realpath as nd,stat as bT,writeFile as mC,mkdir as hC}from"node:fs/promises";import{homedir as vT}from"node:os";import{basename as wT,extname as kT,isAbsolute as vy,join as _C,relative as wy,resolve as rd}from"node:path";function er(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function _n(t){return t!==void 0&&er(t)?t:void 0}function td(t){return Array.isArray(t)?t:void 0}function Fe(t){return typeof t=="string"&&t.trim()!==""?t.trim():void 0}function by(t){return typeof t=="number"&&Number.isInteger(t)?t:void 0}var xT=new Set([".csv",".diff",".gif",".htm",".html",".jpeg",".jpg",".json",".jsonl",".log",".md",".mp4",".patch",".pdf",".png",".svg",".txt",".webm",".webp",".xml",".zip"]);async function od(t,e){let r=await nd(t),n=await zT(r),o=await $T(r,e);ST(n,o);let s=await bT(o);if(!s.isFile())throw new Error(`Linzumi upload path is not a file: ${o}`);return{path:o,fileName:wT(o),contentType:PT(o),sizeBytes:s.size}}async function $T(t,e){if(e==="")throw new Error("Kandan attachment path must not be empty");let r=vy(e)?rd(e):rd(t,e);return await nd(r)}function ST(t,e){let r=t.find(i=>TT(i.path,e));if(r===void 0){let i=t.map(a=>a.label).join(", ");throw new Error(`Kandan attachment path must resolve inside an allowed upload root (${i}): ${e}`)}if(wy(r.path,e).split(/[\\/]+/).find(i=>i.startsWith("."))!==void 0)throw new Error(`Kandan attachment upload path must not include hidden path segments: ${e}`);let s=kT(e).toLowerCase();if(!xT.has(s))throw new Error(`Kandan attachment upload path extension is not allowed: ${e}`)}async function zT(t){let e=[{path:t,label:"runner cwd"}],r=process.env.HOME?.trim(),n=rd(r===void 0||r===""?vT():r,"Downloads");try{let o=await nd(n);e.some(s=>s.path===o)||e.push({path:o,label:"~/Downloads"})}catch{return e}return e}function TT(t,e){let r=wy(t,e);return r===""||!r.startsWith("..")&&!vy(r)}function PT(t){let e=t.toLowerCase();return e.endsWith(".png")?"image/png":e.endsWith(".jpg")||e.endsWith(".jpeg")?"image/jpeg":e.endsWith(".gif")?"image/gif":e.endsWith(".webp")?"image/webp":e.endsWith(".csv")?"text/csv":e.endsWith(".json")?"application/json":e.endsWith(".md")||e.endsWith(".txt")||e.endsWith(".log")?"text/plain":"application/octet-stream"}function sd(t){let e=t.fetchImpl??fetch,r=xt(t.kandanUrl),n=t.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=t.operatingMode??"text",s=async(i,a,u,l={})=>{let c=new URL(a,r),d={...u,operating_mode:o},h={method:i,headers:{authorization:`Bearer ${t.accessToken}`},...l.signal===void 0?{}:{signal:l.signal}};if(i==="GET")for(let[v,w]of Object.entries(d))w!=null&&c.searchParams.set(v,String(w));else h.headers={...h.headers,"content-type":"application/json"},h.body=JSON.stringify(d);let m=await e(c,h),f=await m.json(),g=er(f)?f:void 0;if(g===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(m.ok&&g.ok===!0)return g;let y=typeof g.error=="string"?g.error:`HTTP ${m.status}`;throw new Error(`Linzumi MCP API ${a} failed: ${y}`)};return{validateAuth:()=>s("GET",`${n}/validate`,{}),issueOnboardingDiscoveryToken:i=>s("POST",`${n}/onboarding-discovery-token`,i),getMessage:i=>s("GET",`${n}/message`,i),getThread:i=>s("GET",`${n}/thread`,i),getChannel:i=>s("GET",`${n}/channel`,i),searchWorkspace:i=>s("GET",`${n}/search`,i),askWorkspace:i=>s("POST",`${n}/ask`,i),webSearch:i=>s("GET",`${n}/web-search`,i),fetchUrl:i=>s("GET",`${n}/fetch-url`,i),getCodingJobMetadata:i=>s("GET",`${n}/coding-job-metadata`,i),listProjects:i=>s("GET",`${n}/projects`,i),getProjectTasks:i=>s("GET",`${n}/project-tasks`,i),createProjectTask:i=>s("POST",`${n}/project-tasks/create`,i),updateProjectTask:i=>s("POST",`${n}/project-tasks/update`,i),deleteProjectTask:i=>s("POST",`${n}/project-tasks/delete`,i),addProjectTaskDependency:i=>s("POST",`${n}/project-tasks/add-dependency`,i),removeProjectTaskDependency:i=>s("POST",`${n}/project-tasks/remove-dependency`,i),getCallTranscript:i=>s("GET",`${n}/call-transcript`,i),renameCodingJob:i=>s("POST",`${n}/coding-job-title`,i),upsertCodingJobPlan:(i,a)=>s("POST",`${n}/coding-job-plan`,i,a),replaceCodingJobPlanSteps:i=>s("POST",`${n}/coding-job-plan/steps`,i),updateCodingJobPlanStep:i=>s("POST",`${n}/coding-job-plan/step`,i),linkCodingJobPullRequest:i=>s("POST",`${n}/coding-job-primary-pr`,i),listVaultSecrets:i=>s("GET",`${n}/vault-secrets`,i),noteProjectDirectory:i=>s("POST",`${n}/discovered-project`,i),noteAgentConversation:i=>s("POST",`${n}/discovered-conversation`,i),noteOnboardingDiscoveryStatus:i=>s("POST",`${n}/discovery-status`,i),sendChannelMessage:i=>s("POST",`${n}/channel-message`,i),agentReply:i=>s("POST",`${n}/agent-reply`,i),agentListCodingJobs:i=>s("GET",`${n}/agent/coding-jobs`,i),agentStartCodingJob:i=>s("POST",`${n}/agent/start-coding-job`,i),agentInterruptCodingJob:i=>s("POST",`${n}/agent/interrupt-coding-job`,i),agentSendCodingJobMessage:i=>s("POST",`${n}/agent/send-coding-job-message`,i),agentReadCodingJobThread:i=>s("GET",`${n}/agent/coding-job-thread`,i),agentResolveJobApproval:i=>s("POST",`${n}/agent/resolve-job-approval`,i),agentArchiveCodingJob:i=>s("POST",`${n}/agent/archive-coding-job`,i),agentUnarchiveCodingJob:i=>s("POST",`${n}/agent/unarchive-coding-job`,i),agentSetThreadStatus:i=>s("POST",`${n}/agent/set-thread-status`,i),agentCreateChannel:i=>s("POST",`${n}/agent/create-channel`,i),agentRenameChannel:i=>s("POST",`${n}/agent/rename-channel`,i),agentArchiveChannel:i=>s("POST",`${n}/agent/archive-channel`,i),agentUnarchiveChannel:i=>s("POST",`${n}/agent/unarchive-channel`,i),agentAddReaction:i=>s("POST",`${n}/agent/add-reaction`,i),agentRemoveReaction:i=>s("POST",`${n}/agent/remove-reaction`,i),agentPinMessage:i=>s("POST",`${n}/agent/pin-message`,i),agentUnpinMessage:i=>s("POST",`${n}/agent/unpin-message`,i),prepareMessageUploads:i=>s("POST",`${n}/message-uploads/prepare`,i),attachMessageFiles:i=>s("POST",`${n}/message-files/attach`,i),prepareCustomEmoji:i=>s("POST",`${n}/custom-emoji/prepare`,i),renameCustomEmoji:i=>s("POST",`${n}/custom-emoji/rename`,i),sendThreadReply:i=>s("POST",`${n}/thread-reply`,i),sendDm:i=>s("POST",`${n}/dm`,i),dmOwner:i=>s("POST",`${n}/dm-owner`,i),getVaultValues:i=>s("POST",`${n}/vault-values`,i)}}function ky(t){return{name:"linzumi",command:t.command??"linzumi",args:[...t.argsPrefix??[],"mcp","server","--api-url",t.kandanUrl,...t.authFilePath===void 0?[]:["--auth-file",t.authFilePath],...t.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",t.delegationAuthFilePath],...t.ownerUsername===void 0?[]:["--owner-username",t.ownerUsername],...t.cwd===void 0?[]:["--cwd",t.cwd],...t.threadId===void 0?[]:["--thread-id",t.threadId],"--mode",t.operatingMode??"text",...t.toolScope===void 0||t.toolScope==="all"?[]:["--tool-scope",t.toolScope],...t.agentSession===!0?["--agent-session"]:[]],env:{...t.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:t.accessToken},ELECTRON_RUN_AS_NODE:"1"}}}function xy(t){return`${JSON.stringify({mcpServers:{[t.name]:{command:t.command,args:t.args,env:t.env}}},null,2)}
151
+ `,"utf8"),{accessToken:t.accessToken,kandanBaseUrl:n,issuedAt:o.toISOString(),expiresAt:s}}function ed(t){let e=JSON.parse(t);if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Kandan auth cache must contain a JSON object");let r=e,n=r.local_codex_runner,o=r.personal_agent_delegation;if(n!==void 0&&(typeof n!="object"||n===null||Array.isArray(n)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:hT(n),personal_agent_delegation:mT(o)}}function mT(t){if(typeof t!="object"||t===null||Array.isArray(t))return;let e=t.access_token,r=t.issued_at,n=t.expires_at;if(!(typeof e!="string"||typeof r!="string"))return{access_token:e,issued_at:r,expires_at:typeof n=="string"?n:void 0}}function hT(t){if(!(typeof t!="object"||t===null||Array.isArray(t)))return Object.fromEntries(Object.entries(t).flatMap(([e,r])=>{if(typeof r!="object"||r===null||Array.isArray(r))return[];let n=r.access_token,o=r.issued_at,s=r.expires_at;return typeof n!="string"||typeof o!="string"?[]:[[e,{access_token:n,issued_at:o,expires_at:typeof s=="string"?s:void 0}]]}))}async function _y(t,e={readCachedToken:hi,validateToken:zo,acquireAndCacheToken:_T}){if(t.explicitToken!==void 0)return t.explicitToken;let r=e.readCachedToken(t.kandanUrl,t.authFilePath);if(r!==void 0){let o=await e.validateToken({kandanUrl:t.kandanUrl,accessToken:r.accessToken,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,requiredScopes:t.requiredScopes});if(o==="usable")return r.accessToken;t.reportRejectedCachedToken?.(o)}let n=await e.acquireAndCacheToken(t);return t.workspaceSlug!==void 0&&await gT(t,e,n),n}async function gT(t,e,r){let n;try{n=await e.validateToken({kandanUrl:t.kandanUrl,accessToken:r,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,requiredScopes:t.requiredScopes})}catch{return}if(n==="not_found")throw new Error(yT(t))}function yT(t){let e=new URL(xt(t.kandanUrl)).host;return`Workspace '${t.workspaceSlug}' was not found on ${e}. Sign in to the web app to create it, then re-run connect.`}async function _T(t){let e=t.authMode??{kind:"browser",callbackHost:t.callbackHost},r=e.kind==="device"?await fy({kandanUrl:t.kandanUrl,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,onboarding:t.onboarding}):await py({kandanUrl:t.kandanUrl,workspaceSlug:t.workspaceSlug,channelSlug:t.channelSlug,onboarding:t.onboarding,callbackHost:e.callbackHost??t.callbackHost});return yy({kandanUrl:t.kandanUrl,accessToken:r.accessToken,expiresInSeconds:r.expiresInSeconds,authFilePath:t.authFilePath}),r.accessToken}import{readFile as fC,realpath as nd,stat as bT,writeFile as mC,mkdir as hC}from"node:fs/promises";import{homedir as vT}from"node:os";import{basename as wT,extname as kT,isAbsolute as vy,join as _C,relative as wy,resolve as rd}from"node:path";function er(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function _n(t){return t!==void 0&&er(t)?t:void 0}function td(t){return Array.isArray(t)?t:void 0}function Fe(t){return typeof t=="string"&&t.trim()!==""?t.trim():void 0}function by(t){return typeof t=="number"&&Number.isInteger(t)?t:void 0}var xT=new Set([".csv",".diff",".gif",".htm",".html",".jpeg",".jpg",".json",".jsonl",".log",".md",".mp4",".patch",".pdf",".png",".svg",".txt",".webm",".webp",".xml",".zip"]);async function od(t,e){let r=await nd(t),n=await zT(r),o=await $T(r,e);ST(n,o);let s=await bT(o);if(!s.isFile())throw new Error(`Linzumi upload path is not a file: ${o}`);return{path:o,fileName:wT(o),contentType:PT(o),sizeBytes:s.size}}async function $T(t,e){if(e==="")throw new Error("Kandan attachment path must not be empty");let r=vy(e)?rd(e):rd(t,e);return await nd(r)}function ST(t,e){let r=t.find(i=>TT(i.path,e));if(r===void 0){let i=t.map(a=>a.label).join(", ");throw new Error(`Kandan attachment path must resolve inside an allowed upload root (${i}): ${e}`)}if(wy(r.path,e).split(/[\\/]+/).find(i=>i.startsWith("."))!==void 0)throw new Error(`Kandan attachment upload path must not include hidden path segments: ${e}`);let s=kT(e).toLowerCase();if(!xT.has(s))throw new Error(`Kandan attachment upload path extension is not allowed: ${e}`)}async function zT(t){let e=[{path:t,label:"runner cwd"}],r=process.env.HOME?.trim(),n=rd(r===void 0||r===""?vT():r,"Downloads");try{let o=await nd(n);e.some(s=>s.path===o)||e.push({path:o,label:"~/Downloads"})}catch{return e}return e}function TT(t,e){let r=wy(t,e);return r===""||!r.startsWith("..")&&!vy(r)}function PT(t){let e=t.toLowerCase();return e.endsWith(".png")?"image/png":e.endsWith(".jpg")||e.endsWith(".jpeg")?"image/jpeg":e.endsWith(".gif")?"image/gif":e.endsWith(".webp")?"image/webp":e.endsWith(".csv")?"text/csv":e.endsWith(".json")?"application/json":e.endsWith(".md")||e.endsWith(".txt")||e.endsWith(".log")?"text/plain":"application/octet-stream"}function sd(t){let e=t.fetchImpl??fetch,r=xt(t.kandanUrl),n=t.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=t.operatingMode??"text",s=async(i,a,u,l={})=>{let c=new URL(a,r),d={...u,operating_mode:o},h={method:i,headers:{authorization:`Bearer ${t.accessToken}`},...l.signal===void 0?{}:{signal:l.signal}};if(i==="GET")for(let[v,w]of Object.entries(d))w!=null&&c.searchParams.set(v,String(w));else h.headers={...h.headers,"content-type":"application/json"},h.body=JSON.stringify(d);let m=await e(c,h),f=await m.json(),g=er(f)?f:void 0;if(g===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(m.ok&&g.ok===!0)return g;let y=typeof g.error=="string"?g.error:`HTTP ${m.status}`;throw new Error(`Linzumi MCP API ${a} failed: ${y}`)};return{validateAuth:()=>s("GET",`${n}/validate`,{}),issueOnboardingDiscoveryToken:i=>s("POST",`${n}/onboarding-discovery-token`,i),getMessage:i=>s("GET",`${n}/message`,i),getThread:i=>s("GET",`${n}/thread`,i),getChannel:i=>s("GET",`${n}/channel`,i),searchWorkspace:i=>s("GET",`${n}/search`,i),askWorkspace:i=>s("POST",`${n}/ask`,i),webSearch:i=>s("GET",`${n}/web-search`,i),fetchUrl:i=>s("GET",`${n}/fetch-url`,i),getCodingJobMetadata:i=>s("GET",`${n}/coding-job-metadata`,i),listProjects:i=>s("GET",`${n}/projects`,i),getProjectTasks:i=>s("GET",`${n}/project-tasks`,i),createProjectTask:i=>s("POST",`${n}/project-tasks/create`,i),updateProjectTask:i=>s("POST",`${n}/project-tasks/update`,i),deleteProjectTask:i=>s("POST",`${n}/project-tasks/delete`,i),addProjectTaskDependency:i=>s("POST",`${n}/project-tasks/add-dependency`,i),removeProjectTaskDependency:i=>s("POST",`${n}/project-tasks/remove-dependency`,i),getCallTranscript:i=>s("GET",`${n}/call-transcript`,i),renameCodingJob:i=>s("POST",`${n}/coding-job-title`,i),upsertCodingJobPlan:(i,a)=>s("POST",`${n}/coding-job-plan`,i,a),replaceCodingJobPlanSteps:i=>s("POST",`${n}/coding-job-plan/steps`,i),updateCodingJobPlanStep:i=>s("POST",`${n}/coding-job-plan/step`,i),linkCodingJobPullRequest:i=>s("POST",`${n}/coding-job-primary-pr`,i),listVaultSecrets:i=>s("GET",`${n}/vault-secrets`,i),noteProjectDirectory:i=>s("POST",`${n}/discovered-project`,i),noteAgentConversation:i=>s("POST",`${n}/discovered-conversation`,i),noteOnboardingDiscoveryStatus:i=>s("POST",`${n}/discovery-status`,i),sendChannelMessage:i=>s("POST",`${n}/channel-message`,i),agentReply:i=>s("POST",`${n}/agent-reply`,i),agentTurnProgress:i=>s("POST",`${n}/agent-turn-progress`,i),agentListCodingJobs:i=>s("GET",`${n}/agent/coding-jobs`,i),agentStartCodingJob:i=>s("POST",`${n}/agent/start-coding-job`,i),agentInterruptCodingJob:i=>s("POST",`${n}/agent/interrupt-coding-job`,i),agentSendCodingJobMessage:i=>s("POST",`${n}/agent/send-coding-job-message`,i),agentReadCodingJobThread:i=>s("GET",`${n}/agent/coding-job-thread`,i),agentResolveJobApproval:i=>s("POST",`${n}/agent/resolve-job-approval`,i),agentArchiveCodingJob:i=>s("POST",`${n}/agent/archive-coding-job`,i),agentUnarchiveCodingJob:i=>s("POST",`${n}/agent/unarchive-coding-job`,i),agentSetThreadStatus:i=>s("POST",`${n}/agent/set-thread-status`,i),agentCreateChannel:i=>s("POST",`${n}/agent/create-channel`,i),agentRenameChannel:i=>s("POST",`${n}/agent/rename-channel`,i),agentArchiveChannel:i=>s("POST",`${n}/agent/archive-channel`,i),agentUnarchiveChannel:i=>s("POST",`${n}/agent/unarchive-channel`,i),agentAddReaction:i=>s("POST",`${n}/agent/add-reaction`,i),agentRemoveReaction:i=>s("POST",`${n}/agent/remove-reaction`,i),agentPinMessage:i=>s("POST",`${n}/agent/pin-message`,i),agentUnpinMessage:i=>s("POST",`${n}/agent/unpin-message`,i),prepareMessageUploads:i=>s("POST",`${n}/message-uploads/prepare`,i),attachMessageFiles:i=>s("POST",`${n}/message-files/attach`,i),prepareCustomEmoji:i=>s("POST",`${n}/custom-emoji/prepare`,i),renameCustomEmoji:i=>s("POST",`${n}/custom-emoji/rename`,i),sendThreadReply:i=>s("POST",`${n}/thread-reply`,i),sendDm:i=>s("POST",`${n}/dm`,i),dmOwner:i=>s("POST",`${n}/dm-owner`,i),getVaultValues:i=>s("POST",`${n}/vault-values`,i)}}function ky(t){return{name:"linzumi",command:t.command??"linzumi",args:[...t.argsPrefix??[],"mcp","server","--api-url",t.kandanUrl,...t.authFilePath===void 0?[]:["--auth-file",t.authFilePath],...t.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",t.delegationAuthFilePath],...t.ownerUsername===void 0?[]:["--owner-username",t.ownerUsername],...t.cwd===void 0?[]:["--cwd",t.cwd],...t.threadId===void 0?[]:["--thread-id",t.threadId],"--mode",t.operatingMode??"text",...t.toolScope===void 0||t.toolScope==="all"?[]:["--tool-scope",t.toolScope],...t.agentSession===!0?["--agent-session"]:[]],env:{...t.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:t.accessToken},ELECTRON_RUN_AS_NODE:"1"}}}function xy(t){return`${JSON.stringify({mcpServers:{[t.name]:{command:t.command,args:t.args,env:t.env}}},null,2)}
152
152
  `}function $y(t){return`[mcp_servers.${t.name}]
153
153
  command = ${JSON.stringify(t.command)}
154
154
  args = ${jT(t.args)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linzumi/cli",
3
- "version": "1.0.38",
3
+ "version": "1.0.40",
4
4
  "description": "Linzumi CLI \u2014 point a Codex agent at the real code on your laptop, with your team watching and steering from shared threads.",
5
5
  "type": "module",
6
6
  "bin": {