@agiflowai/cli 0.0.6 → 0.1.0
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/dist/cli.cjs +1 -1
- package/dist/container-DDrQBLdJ.cjs +8 -0
- package/dist/index.cjs +1 -1
- package/package.json +1 -1
- package/dist/container-vSLx97cM.cjs +0 -8
package/dist/cli.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const e=require("./container-
|
|
2
|
+
const e=require("./container-DDrQBLdJ.cjs");require("reflect-metadata/lite");let t=require("commander"),n=require("dotenv");n=e.r(n,1);var r=process.stdout.write.bind(process.stdout);process.stdout.write=()=>!0;try{n.default.config({debug:!1})}finally{process.stdout.write=r}async function i(){let n=new t.Command,r=new Set([`automation`,`project`,`task`,`work-unit`,`member`,`task-comment`,`vault`,`analytics`]),i=process.argv.slice(2).some(e=>r.has(e)),a=process.stderr.write.bind(process.stderr);n.name(`agiflow-cli`).description(`Command-line interface for Agiflow workflow and artifact management`).option(`-v, --verbose`,`enable verbose logging`).option(`--debug`,`enable debug mode`),n.exitOverride(),n.configureOutput({writeErr:e=>{i||a(e)}});let o=e.t.get(e.n.AuthCommand),s=e.t.get(e.n.WorkflowCommand),c=e.t.get(e.n.ArtifactCommand),l=e.t.get(e.n.AutomationCommand),u=e.t.get(e.n.ProjectCommand),d=e.t.get(e.n.TaskCommand),f=e.t.get(e.n.WorkUnitCommand),p=e.t.get(e.n.MemberCommand),m=e.t.get(e.n.TaskCommentCommand),h=e.t.get(e.n.VaultCommand),g=e.t.get(e.n.AnalyticsCommand);o.register(n),s.register(n),c.register(n),l.register(n),u.register(n),d.register(n),f.register(n),p.register(n),m.register(n),h.register(n),g.register(n);try{await n.parseAsync(process.argv)}catch(e){if(e instanceof t.CommanderError&&e.code===`commander.helpDisplayed`&&process.exit(e.exitCode),i){let t=e instanceof Error?e.message:String(e);console.log(JSON.stringify({error:t},null,2)),process.exit(1)}console.error(`[cli] error`,e.message),n.opts().debug&&e instanceof Error&&console.error(e.stack),process.exit(1)}}i();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require("reflect-metadata/lite");let c=require("commander"),l=require("dotenv");l=s(l,1);let u=require("inversify"),d=require("zod"),f=require("node:fs");f=s(f,1);let p=require("node:path");p=s(p,1);let m=require("pino");m=s(m,1);let h=require("fs");h=s(h,1);let g=require("path");g=s(g,1);let _=require("os");_=s(_,1);let ee=require("crypto"),te=require("child_process");var ne=`.agiflowrc`;function re(e,t=process.cwd(),n=process.env){if(y(n[e]))return!0;if(e===`AGIFLOW_API_KEY`){let e=v(t,n);return!!(ie(n.AGIFLOW_API_KEY_ENV,n)??e.apiKey)}if(e===`AGIFLOW_ORGANIZATION_ID`||e===`AGIFLOW_ORG_ID`){let e=v(t,n);return!!(y(n.AGIFLOW_ORGANIZATION_ID,n.AGIFLOW_ORG_ID)??e.organizationId)}return e===`AGIFLOW_PROJECT_ID`?!!v(t,n).projectId:!1}function v(e=process.cwd(),t=process.env){let n=oe(e);if(!n)return{};let r;try{r=l.default.parse(f.readFileSync(n))}catch{return{}}let i=y(r.AGIFLOW_ORGANIZATION_ID,r.AGIFLOW_ORG_ID),a=y(r.AGIFLOW_PROJECT_ID);return le({apiKey:ie(r.AGIFLOW_API_KEY_ENV,t),backendAgiflowApiEndpoint:y(r.BACKEND_AGIFLOW_API_ENDPOINT),organizationId:i,projectId:a})}function ie(e,t=process.env){let n=ae(e);if(n)return y(t[n])}function ae(e){let t=e?.trim();if(!t)return;let n=/^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/.exec(t);if(n)return n[1];let r=/^\$([A-Za-z_][A-Za-z0-9_]*)$/.exec(t);if(r)return r[1];if(/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))return t}function oe(e){let t=se(e);if(!t)return null;let n=p.default.join(t,ne);return ce(n)?n:null}function se(e){let t=p.default.resolve(e);for(;;){if(ce(p.default.join(t,`.git`)))return t;let e=p.default.dirname(t);if(e===t)return null;t=e}}function y(...e){for(let t of e){let e=t?.trim();if(e)return e}}function ce(e){try{return typeof f.existsSync==`function`&&f.existsSync(e)}catch{return!1}}function le(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var ue=d.z.string().url();d.z.object({VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:d.z.string().trim().optional()});function de(e=process.env,t={BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_AUTO_AGIFLOW_CLI_DOCKER_ENDPOINT:``,VITE_AUTO_AGIFLOW_CLI_ENDPOINT:``,VITE_AUTO_AGIFLOW_CLI_PROXY_ENDPOINT:``,VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:`https://api.agiflow.io`},n=fe(e)){let r=[t.VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.BACKEND_AGIFLOW_API_ENDPOINT,n?.backendAgiflowApiEndpoint];for(let e of r){let t=ue.safeParse(typeof e==`string`?e.trim():e);if(t.success)return t.data}throw Error(`Missing Agiflow API endpoint. Set VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT, INJECT_BACKEND_AGIFLOW_API_ENDPOINT, BACKEND_AGIFLOW_API_ENDPOINT, or add BACKEND_AGIFLOW_API_ENDPOINT to .agiflowrc.`)}function fe(e){return e===process.env?v():void 0}function b(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var pe=`serverUrl`,me=class{config=new Map;get(e){return this.config.get(e)}set(e,t){this.config.set(e,t)}has(e){return this.config.has(e)}getServerUrl(){let e=this.get(pe);if(e)return e;let t=de();return this.set(pe,t),t}};me=b([(0,u.injectable)()],me);function x(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}var he=class{logger;constructor(){this.logger=(0,m.default)({level:process.env.LOG_LEVEL||`info`,transport:{target:`pino-pretty`,options:{colorize:!0,translateTime:`SYS:standard`,ignore:`pid,hostname`}}})}debug(e,t){this.logger.debug(t,e)}info(e,t){this.logger.info(t,e)}warn(e,t){this.logger.warn(t,e)}error(e,t){this.logger.error(t,e)}};he=b([(0,u.injectable)(),x(`design:paramtypes`,[])],he);var ge=class{filePath;constructor(){this.filePath=g.default.join(_.default.homedir(),`.agiflow`,`credentials.json`)}async load(e={}){let t=this.readStoredFile();if(!t)return null;if(e.scope===`global`)return t.global??null;let n=this.getRepositoryScopeKey();return t.repositories?.[n]??t.global??null}async setApiKey(e,t={}){let n=this.readStoredFile()??{version:2},r=await this.load(t),i=r?.organizationId===e.organizationId,a={apiKey:e.apiKey,organizationId:e.organizationId,keyId:e.keyId,deviceId:e.deviceId??(i?r?.deviceId:void 0),deviceGuid:e.deviceGuid??r?.deviceGuid,expiresAt:e.expiresAt};this.setCredentials(n,t,a),this.writeStoredFile(n)}async getApiKey(e={}){return process.env.AGIFLOW_API_KEY||ie(process.env.AGIFLOW_API_KEY_ENV)||v().apiKey||((await this.load(e))?.apiKey??null)}async getOrganizationId(e={}){return process.env.AGIFLOW_ORGANIZATION_ID||process.env.AGIFLOW_ORG_ID||v().organizationId||((await this.load(e))?.organizationId??null)}async getProjectId(){return process.env.AGIFLOW_PROJECT_ID??v().projectId??null}async getTaskId(){return process.env.AGIFLOW_TASK_ID??null}async getWorkUnitId(){return process.env.AGIFLOW_WORK_UNIT_ID??null}async getDeviceId(e={}){return process.env.AGIFLOW_DEVICE_ID||((await this.load(e))?.deviceId??null)}async getDeviceGuid(e={}){return process.env.AGIFLOW_DEVICE_GUID||((await this.load(e))?.deviceGuid??null)}async setDeviceIdentity(e,t,n={}){let r=await this.load(n);if(!r)throw Error(`No credentials found. Run authentication first.`);let i=this.readStoredFile()??{version:2};this.setCredentials(i,n,{...r,deviceId:e,deviceGuid:t}),this.writeStoredFile(i)}async clear(e={}){try{let t=this.readStoredFile();if(!t)return;this.deleteCredentials(t,e),this.writeStoredFile(t)}catch{process.stderr.write(`[CredentialsService] failed to remove stored credentials
|
|
2
|
+
`)}}async buildAuthHeaders(e={}){let t=await this.getApiKey(e);if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);return{"x-api-key":t}}readStoredFile(){try{if(!h.default.existsSync(this.filePath))return null;let e=JSON.parse(h.default.readFileSync(this.filePath,`utf-8`));if(this.isStoredCredentialsFile(e))return e;if(this.isStoredCredentials(e))return{version:2,global:e}}catch{process.stderr.write(`[CredentialsService] credentials file is malformed, continuing without stored credentials
|
|
3
|
+
`)}return null}writeStoredFile(e){let t=this.compactStoredFile(e);if(!t.global&&!t.repositories){h.default.existsSync(this.filePath)&&h.default.unlinkSync(this.filePath);return}h.default.mkdirSync(g.default.dirname(this.filePath),{recursive:!0}),h.default.writeFileSync(this.filePath,`${JSON.stringify(t,null,2)}\n`,{mode:384})}setCredentials(e,t,n){if(t.scope===`global`){e.global=n;return}let r=this.getRepositoryScopeKey();e.repositories={...e.repositories,[r]:n}}deleteCredentials(e,t){if(t.scope===`global`){delete e.global;return}let n=this.getRepositoryScopeKey();e.repositories&&delete e.repositories[n]}compactStoredFile(e){let t=e.repositories?Object.fromEntries(Object.entries(e.repositories).filter(([,e])=>e)):void 0;return{version:2,...e.global?{global:e.global}:{},...t&&Object.keys(t).length>0?{repositories:t}:{}}}getRepositoryScopeKey(){return this.normalizePath(this.findGitRoot(process.cwd())??process.cwd())}findGitRoot(e){let t=g.default.resolve(e);for(;;){if(h.default.existsSync(g.default.join(t,`.git`)))return t;let e=g.default.dirname(t);if(e===t)return null;t=e}}normalizePath(e){let t=g.default.resolve(e),n=h.default.existsSync(t)?h.default.realpathSync.native(t):t,r=g.default.normalize(n).replace(RegExp(`${this.escapeRegExp(g.default.sep)}+$`),``);return process.platform===`win32`?r.toLowerCase():r}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}isStoredCredentialsFile(e){if(!this.isRecord(e)||e.version!==2)return!1;let t=e.global,n=e.repositories;return(t===void 0||this.isStoredCredentials(t))&&(n===void 0||this.isRecord(n)&&Object.values(n).every(e=>this.isStoredCredentials(e)))}isStoredCredentials(e){return this.isRecord(e)&&typeof e.apiKey==`string`&&typeof e.organizationId==`string`&&(e.keyId===void 0||typeof e.keyId==`string`)&&(e.deviceId===void 0||typeof e.deviceId==`string`)&&(e.deviceGuid===void 0||typeof e.deviceGuid==`string`)&&(e.expiresAt===void 0||typeof e.expiresAt==`number`)}isRecord(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}};ge=b([(0,u.injectable)(),x(`design:paramtypes`,[])],ge);var S={Logger:Symbol.for(`Logger`),ConfigManager:Symbol.for(`ConfigManager`),CredentialsService:Symbol.for(`CredentialsService`),DeviceCodeAuthService:Symbol.for(`DeviceCodeAuthService`)};function C(e,t){return function(n,r){t(n,r,e)}}var _e=`agent-cli`,ve=`0.0.1`,ye=`openid profile email`,be=`urn:ietf:params:oauth:grant-type:device_code`,xe=class{configManager;constructor(e){this.configManager=e}async requestDeviceCode(e=ye){return await this.postJson(`/api/v1/auth/device/code`,void 0,{client_id:_e,scope:e})}async pollForToken(e,t,n){let r=t;for(;;){if(n?.signal?.aborted)throw Error(`Polling aborted`);await this.sleep(r*1e3);let t=await fetch(this.url(`/api/v1/auth/device/token`),{method:`POST`,headers:this.headers(),body:JSON.stringify({grant_type:be,device_code:e,client_id:_e})});if(t.ok)return await t.json();let i=await this.parseError(t);switch(i.error){case`authorization_pending`:n?.onPending?.();break;case`slow_down`:r+=5,n?.onSlowDown?.();break;case`access_denied`:throw Error(`Authorization denied by user`);case`expired_token`:throw Error(`Device code expired. Please start the authorization process again.`);default:throw Error(i.error_description||i.message||`Token request failed: ${t.status}`)}}}async listOrganizationsWithAccessToken(e){return(await this.getJson(`/api/v1/cli/organizations`,{Authorization:`Bearer ${e}`})).organizations??[]}async listOrganizationsWithApiKey(e){return(await this.getJson(`/api/v1/cli/organizations`,{"x-api-key":e})).organizations??[]}async exchangeForAgentApiKey(e,t){let n=await this.postJson(`/api/v1/cli/exchange-for-agent`,{Authorization:`Bearer ${e}`},{organizationId:t});return{apiKey:n.api_key,keyId:n.key_id,organizationId:n.organization_id,organizationName:n.organization_name,agentUserId:n.agent_user_id,expiresAt:n.expires_at}}async getJson(e,t){let n=await fetch(this.url(e),{method:`GET`,headers:this.headers(t)});return this.parseResponse(n)}async postJson(e,t,n){let r=await fetch(this.url(e),{method:`POST`,headers:this.headers(t),body:JSON.stringify(n)});return this.parseResponse(r)}async parseResponse(e){let t=await e.json().catch(()=>({}));if(!e.ok){let n=t;throw Error(n.error_description||n.message||n.error||e.statusText)}return t}async parseError(e){return await e.json().catch(()=>({}))}headers(e){return{"Content-Type":`application/json`,Accept:`application/json`,"x-client-type":_e,"x-client-version":ve,...e}}url(e){return`${this.configManager.getServerUrl().replace(/\/$/,``)}${e}`}sleep(e){return new Promise(t=>setTimeout(t,e))}};xe=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),x(`design:paramtypes`,[Object])],xe);var w=new u.Container;w.bind(S.Logger).to(he).inSingletonScope(),w.bind(S.ConfigManager).to(me).inSingletonScope(),w.bind(S.CredentialsService).to(ge).inSingletonScope(),w.bind(S.DeviceCodeAuthService).to(xe).inSingletonScope();var Se=10,Ce=(e=0)=>t=>`\u001B[${t+e}m`,we=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,Te=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,T={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(T.modifier);var Ee=Object.keys(T.color),De=Object.keys(T.bgColor);[...Ee,...De];function Oe(){let e=new Map;for(let[t,n]of Object.entries(T)){for(let[t,r]of Object.entries(n))T[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=T[t],e.set(r[0],r[1]);Object.defineProperty(T,t,{value:n,enumerable:!1})}return Object.defineProperty(T,"codes",{value:e,enumerable:!1}),T.color.close=`\x1B[39m`,T.bgColor.close=`\x1B[49m`,T.color.ansi=Ce(),T.color.ansi256=we(),T.color.ansi16m=Te(),T.bgColor.ansi=Ce(Se),T.bgColor.ansi256=we(Se),T.bgColor.ansi16m=Te(Se),Object.defineProperties(T,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>T.rgbToAnsi256(...T.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>T.ansi256ToAnsi(T.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>T.ansi256ToAnsi(T.hexToAnsi256(e)),enumerable:!1}}),T}var E=Oe(),D=(()=>{if(!(`navigator`in globalThis))return 0;if(globalThis.navigator.userAgentData){let e=navigator.userAgentData.brands.find(({brand:e})=>e===`Chromium`);if(e&&e.version>93)return 3}return+!!/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)})(),ke=D!==0&&{level:D,hasBasic:!0,has256:D>=2,has16m:D>=3},Ae={stdout:ke,stderr:ke};function je(e,t,n){let r=e.indexOf(t);if(r===-1)return e;let i=t.length,a=0,o=``;do o+=e.slice(a,r)+t+n,a=r+i,r=e.indexOf(t,a);while(r!==-1);return o+=e.slice(a),o}function Me(e,t,n,r){let i=0,a=``;do{let o=e[r-1]===`\r`;a+=e.slice(i,o?r-1:r)+t+(o?`\r
|
|
4
|
+
`:`
|
|
5
|
+
`)+n,i=r+1,r=e.indexOf(`
|
|
6
|
+
`,i)}while(r!==-1);return a+=e.slice(i),a}var{stdout:Ne,stderr:Pe}=Ae,Fe=Symbol(`GENERATOR`),O=Symbol(`STYLER`),k=Symbol(`IS_EMPTY`),Ie=[`ansi`,`ansi`,`ansi256`,`ansi16m`],A=Object.create(null),Le=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=Ne?Ne.level:0;e.level=t.level===void 0?n:t.level},Re=e=>{let t=(...e)=>e.join(` `);return Le(t,e),Object.setPrototypeOf(t,j.prototype),t};function j(e){return Re(e)}Object.setPrototypeOf(j.prototype,Function.prototype);for(let[e,t]of Object.entries(E))A[e]={get(){let n=He(this,Ve(t.open,t.close,this[O]),this[k]);return Object.defineProperty(this,e,{value:n}),n}};A.visible={get(){let e=He(this,this[O],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var ze=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?E[n].ansi16m(...r):t===`ansi256`?E[n].ansi256(E.rgbToAnsi256(...r)):E[n].ansi(E.rgbToAnsi(...r)):e===`hex`?ze(`rgb`,t,n,...E.hexToRgb(...r)):E[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){A[e]={get(){let{level:t}=this;return function(...n){let r=Ve(ze(e,Ie[t],`color`,...n),E.color.close,this[O]);return He(this,r,this[k])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);A[t]={get(){let{level:t}=this;return function(...n){let r=Ve(ze(e,Ie[t],`bgColor`,...n),E.bgColor.close,this[O]);return He(this,r,this[k])}}}}var Be=Object.defineProperties(()=>{},{...A,level:{enumerable:!0,get(){return this[Fe].level},set(e){this[Fe].level=e}}}),Ve=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},He=(e,t,n)=>{let r=(...e)=>Ue(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,Be),r[Fe]=e,r[O]=t,r[k]=n,r},Ue=(e,t)=>{if(e.level<=0||!t)return e[k]?``:t;let n=e[O];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=je(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
7
|
+
`);return a!==-1&&(t=Me(t,i,r,a)),r+t+i};Object.defineProperties(j.prototype,A);var M=j();j({level:Pe?Pe.level:0});var We=`0.0.1`,Ge=class{credentialsService;authService;configManager;constructor(e,t,n){this.credentialsService=e,this.authService=t,this.configManager=n}register(e){e.command(`login`).description(`Authenticate agiflow-cli`).addOption(this.envOption(`--api-key <apiKey>`,`Use an existing Agiflow API key`,`AGIFLOW_API_KEY`)).addOption(this.envOption(`--org <organizationId>`,`Organization ID to store with credentials`,`AGIFLOW_ORGANIZATION_ID`)).option(`--global`,`Store credentials globally instead of scoping them to the current repository`).option(`--format <format>`,`Output format (text|json)`,`text`).action(async e=>{await this.run(e.format,async()=>{let t=e.apiKey?await this.loginWithApiKey(e):await this.loginWithDeviceCode(e);this.printLoginResult(t,e.format)})}),e.command(`logout`).description(`Remove stored agiflow-cli credentials`).option(`--global`,`Remove global credentials instead of credentials scoped to the current repository`).option(`--format <format>`,`Output format (text|json)`,`text`).action(async e=>{await this.run(e.format,async()=>{if(await this.credentialsService.clear(this.getCredentialsScope(e)),e.format===`json`){this.printJson({loggedOut:!0});return}console.log(M.green(`Logged out`))})})}async loginWithApiKey(e){if(!e.apiKey)throw Error(`API key is required.`);let t=await this.authService.listOrganizationsWithApiKey(e.apiKey),n=await this.resolveOrganization(t,e.org,e.format);return await this.credentialsService.setApiKey({apiKey:e.apiKey,organizationId:n.id},this.getCredentialsScope(e)),await this.ensureDeviceIdentity(e.apiKey,n.id,this.getCredentialsScope(e)),{authenticated:!0,source:`api-key`,organizationId:n.id,organizationName:n.name}}async loginWithDeviceCode(e){let t=await this.authService.requestDeviceCode(),n=t.verification_uri_complete||`${t.verification_uri}?user_code=${t.user_code}`;this.printProgress(e.format,`Open ${n}`),this.printProgress(e.format,`Enter code ${t.user_code}`);let r=await this.authService.pollForToken(t.device_code,t.interval??5),i=await this.authService.listOrganizationsWithAccessToken(r.access_token),a=await this.resolveOrganization(i,e.org,e.format),o=await this.authService.exchangeForAgentApiKey(r.access_token,a.id);return await this.credentialsService.setApiKey({apiKey:o.apiKey,keyId:o.keyId,organizationId:o.organizationId,expiresAt:o.expiresAt},this.getCredentialsScope(e)),await this.ensureDeviceIdentity(o.apiKey,o.organizationId,this.getCredentialsScope(e)),{authenticated:!0,source:`device-code`,organizationId:o.organizationId,organizationName:o.organizationName,expiresAt:o.expiresAt}}async resolveOrganization(e,t,n){if(e.length===0)throw Error(`No organizations are available for these credentials.`);if(t){let n=e.find(e=>e.id===t);if(!n)throw Error(`Organization ${t} is not available for these credentials.`);return n}if(e.length===1)return e[0];if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error(`Multiple organizations are available. Pass --org <organizationId> in non-interactive mode.`);let{select:r}=await import(`@inquirer/prompts`),i=await r({message:`Select an organization`,choices:e.map(e=>({name:`${e.name}${e.slug?` (${e.slug})`:``}`,value:e.id}))});return this.printProgress(n,`Selected organization ${i}`),e.find(e=>e.id===i)??e[0]}async run(e,t){try{this.validateFormat(e),await t()}catch(t){let n=t instanceof Error?t.message:String(t);e===`json`?this.printJson({error:n}):console.error(M.red(`Error:`),n),process.exit(1)}}async ensureDeviceIdentity(e,t,n){let r=await this.credentialsService.getDeviceGuid(n)||`cli-${(0,ee.randomUUID)()}`,i=this.configManager.getServerUrl().replace(/\/$/,``),a=await fetch(`${i}/api/v1/organizations/${t}/devices`,{method:`POST`,headers:{"x-api-key":e,"x-client-type":`agent-cli`,"x-client-version":We,"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({name:_.default.hostname(),deviceGuid:r,type:`cli`,platform:process.platform,version:We})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=typeof o==`object`&&o&&`message`in o?String(o.message):a.statusText;throw Error(e)}if(!o||typeof o!=`object`||!(`id`in o)||typeof o.id!=`string`)throw Error(`Device registration response did not include a device ID.`);await this.credentialsService.setDeviceIdentity(o.id,r,n)}getCredentialsScope(e){return e.global?{scope:`global`}:{scope:`repository`}}envOption(e,t,n){let r=new c.Option(e,t);return re(n)&&r.hideHelp(),r}validateFormat(e){if(e&&e!==`text`&&e!==`json`)throw Error(`Only text and json formats are supported.`)}printLoginResult(e,t){if(t===`json`){this.printJson(e);return}console.log(M.green(`Authenticated`)),console.log(`Organization: ${e.organizationName} (${e.organizationId})`)}printProgress(e,t){if(e===`json`){console.error(t);return}console.log(t)}printJson(e){console.log(JSON.stringify(e,null,2))}};Ge=b([(0,u.injectable)(),C(0,(0,u.inject)(S.CredentialsService)),C(1,(0,u.inject)(S.DeviceCodeAuthService)),C(2,(0,u.inject)(S.ConfigManager)),x(`design:paramtypes`,[Object,Object,Object])],Ge);var Ke=class e{static instance;authProviders=new Map;defaultNamespace=`default`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}setAuthProvider(e,t=this.defaultNamespace){this.authProviders.set(t,e)}getAuthProvider(e=this.defaultNamespace){return this.authProviders.get(e)||null}removeAuthProvider(e=this.defaultNamespace){this.authProviders.delete(e)}async getSession(e=this.defaultNamespace){let t=this.authProviders.get(e);return t?t.getSession():null}async refreshSession(e=this.defaultNamespace){let t=this.authProviders.get(e);return t?t.refreshSession():null}hasAuthProvider(e=this.defaultNamespace){return this.authProviders.has(e)}getNamespaces(){return Array.from(this.authProviders.keys())}}.getInstance(),qe=class e{static instance;configs=new Map;defaultNamespace=`default`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}setConfig(e,t=this.defaultNamespace){this.configs.set(t,e)}getConfig(e=this.defaultNamespace){return this.configs.get(e)||null}updateConfig(e,t=this.defaultNamespace){let n=this.configs.get(t);n?this.configs.set(t,{...n,...e,headers:{...n.headers,...e.headers}}):this.configs.set(t,e)}removeConfig(e=this.defaultNamespace){this.configs.delete(e)}getBaseUrl(e=this.defaultNamespace){return this.configs.get(e)?.baseUrl||null}getHeaders(e=this.defaultNamespace){return this.configs.get(e)?.headers||null}getApiKey(e=this.defaultNamespace){return this.configs.get(e)?.apiKey||null}hasConfig(e=this.defaultNamespace){return this.configs.has(e)}getNamespaces(){return Array.from(this.configs.keys())}}.getInstance(),Je=`default`,Ye=1,Xe=300,N=`Content-Type`,Ze=`content-length`,Qe=`application/json`,$e=`X-API-KEY`,et=`Authorization`,tt=`Bearer`,nt=204,rt=205,it=401,at=429,ot=503,st=500,ct=400,lt=500,ut=`text/`,dt=.5,ft=.5,pt=class extends Error{status;statusText;data;constructor(e,t,n,r){super(e),this.status=t,this.statusText=n,this.data=r,this.name=`OpenapiRequestError`}},mt=class{baseUrl;apiKey;headers;authProvider;authNamespace;configNamespace;useGlobalAuthProvider;useGlobalConfig;retryConfig;requestInterceptor;constructor(e={}){this.authProvider=e.authProvider,this.authNamespace=e.authNamespace??Je,this.configNamespace=e.configNamespace??Je,this.useGlobalAuthProvider=e.useGlobalAuthProvider??!0,this.useGlobalConfig=e.useGlobalConfig??!0,this.retryConfig={maxRetries:e.retryConfig?.maxRetries??Ye,baseDelay:e.retryConfig?.baseDelay??Xe},this.requestInterceptor=e.requestInterceptor??null;let t=this.getEffectiveConfig(e);if(!t.baseUrl&&!this.useGlobalConfig)throw Error(`baseUrl is required for OpenapiClient (either in options or global config)`);this.baseUrl=t.baseUrl,this.apiKey=t.apiKey,this.headers=t.headers}getEffectiveConfig(e){let t=this.useGlobalConfig?qe.getConfig(this.configNamespace):null;return{baseUrl:e.baseUrl||t?.baseUrl||``,headers:{...t?.headers,...e.headers},apiKey:e.apiKey??t?.apiKey}}getRuntimeConfig(){return this.getEffectiveConfig({baseUrl:this.baseUrl,headers:this.headers,apiKey:this.apiKey})}getEffectiveAuthProvider(){return this.authProvider?this.authProvider:this.useGlobalAuthProvider?Ke.getAuthProvider(this.authNamespace):null}async setAuthHeader(e){let t=this.getEffectiveAuthProvider();if(!t)return;let n=await t.getSession();n?.data?.session?.access_token&&(e[et]=`${tt} ${n.data.session.access_token}`)}buildUrl(e,t,n,r){let i=t;if(n)for(let[e,t]of Object.entries(n))i=i.replace(`{${e}}`,encodeURIComponent(String(t)));if(r){let e=new URLSearchParams;for(let[t,n]of Object.entries(r))n!=null&&e.append(t,String(n));let t=e.toString();t&&(i+=(i.includes(`?`)?`&`:`?`)+t)}return new URL(i,e).toString()}createCustomFetch(){return async(e,t)=>{let n=t||{};n.headers||={},n.credentials=`include`,`Content-Type`in n.headers||(n.headers[N]=Qe),n.headers[N]===void 0&&delete n.headers[N];let r=this.getRuntimeConfig();r.apiKey&&(n.headers[$e]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();if(i.status===it&&a&&!t?.skipAuth&&(await a.refreshSession())?.data?.session)if(await this.setAuthHeader(n.headers),t?.skipRetry)i=await fetch(e,n);else{let{maxRetries:t,baseDelay:r}=this.retryConfig,a=null;for(let o=0;o<t;o++)try{if(i=await fetch(e,n),i.status>=ct&&i.status<lt&&i.status!==at)return i;if(i.status===at||i.status===ot||i.status>=st){a=Error(`HTTP status ${i.status}`);let e=r*2**o*(dt+Math.random()*ft);await new Promise(t=>setTimeout(t,e));continue}return i}catch(e){if(a=e instanceof Error?e:Error(String(e)),o<t-1){let e=r*2**o*(dt+Math.random()*ft);await new Promise(t=>setTimeout(t,e))}}throw a||Error(`Request failed after retries`)}return i}}createFormFetch(){return async(e,t)=>{let n=t||{};n.headers||={},n.credentials=`include`;let r=this.getRuntimeConfig();r.apiKey&&(n.headers[$e]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();return i.status===it&&a&&!t?.skipAuth&&(await a.refreshSession())?.data?.session&&(await this.setAuthHeader(n.headers),i=await fetch(e,n)),i}}async request(e,t){let{method:n,params:r,query:i,body:a,headers:o,skipAuth:s,skipRetry:c}=t;if(this.requestInterceptor){let n=await this.requestInterceptor(e,{path:e,...t});if(n)return n}let l=this.getRuntimeConfig();if(!l.baseUrl)throw Error(`baseUrl is required for OpenapiClient (either in options or global config)`);let u=this.buildUrl(l.baseUrl,e,r,i),d={...l.headers,...o},f={method:n,headers:d,skipAuth:s,skipRetry:c};a&&n!==`GET`&&n!==`HEAD`&&(a instanceof FormData||typeof a==`object`&&a&&typeof a.append==`function`&&typeof a.entries==`function`&&a.constructor?.name===`FormData`?(f.body=a,d[N]=void 0):(f.body=JSON.stringify(a),d[N]=Qe));let p=await this.createCustomFetch()(u,f),m,h=p.headers.get(`content-type`),g=p.headers.get(Ze);if(m=p.status===nt||p.status===rt||n===`HEAD`||g===`0`?void 0:h?.includes(Qe)?await p.json():h?.includes(ut)?await p.text():await p.blob(),!p.ok)throw new pt(`HTTP ${p.status}: ${p.statusText}`,p.status,p.statusText,m);return{data:m,status:p.status,statusText:p.statusText,headers:p.headers}}},ht=`backend-agiflow-api`,gt=e=>{qe.setConfig(e,ht)},P=((e={})=>new mt({...e,authNamespace:ht,configNamespace:ht}))(),_t=`0.0.1`,F=class{configManager;credentialsService;constructor(e,t){this.configManager=e,this.credentialsService=t}addEnvIdOption(e,t,n,r){return e.addOption(this.buildEnvIdOption(t,n,r)),e}buildEnvIdOption(e,t,n){let r=new c.Option(e,t);return re(n)&&r.hideHelp(),r}async setupClient(){let{serverUrl:e,apiKey:t}=await this.resolveApiClientContext();gt({baseUrl:e,apiKey:t,headers:{"x-client-type":`agent-cli`,"x-client-version":_t}})}async resolveApiClientContext(){let e=this.configManager.getServerUrl(),t=await this.credentialsService.getApiKey();if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);return{serverUrl:e,apiKey:t}}handleError(e,t){let n=t instanceof Error?t.message:String(t);console.error(M.red(`✗`),e,n),process.exit(1)}async runJsonOnly(e){try{await e()}catch(e){let t=e instanceof Error?e.message:String(e),n=e&&typeof e==`object`&&`data`in e?e.data:void 0;this.printJson(n===void 0?{error:t}:{error:t,details:n}),process.exit(1)}}requireJsonFormat(e,t=`this command`){if((e??`json`)!==`json`)throw Error(`Only --format json is supported for ${t}.`)}printJson(e){console.log(JSON.stringify(e,null,2))}async resolveOrganizationId(e){return this.resolveRequiredId(e,()=>this.credentialsService.getOrganizationId(),`organization ID`,`--org`)}async resolveProjectIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getProjectId(),`project ID`,`--project`)}async resolveTaskIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getTaskId(),`task ID`,`--task`)}async resolveWorkUnitIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getWorkUnitId(),`work unit ID`,`--work-unit`)}async resolveRequiredId(e,t,n,r){if(e)return e;let i=await t();if(i)return i;throw Error(`Missing ${n}. Pass ${r}, set the matching AGIFLOW_* environment variable, or add .agiflowrc defaults.`)}parseJsonFlag(e,t){if(e)try{return JSON.parse(e)}catch{throw Error(`${t} must be valid JSON.`)}}parseCsv(e){if(!e)return;let t=(Array.isArray(e)?e:e.split(`,`)).map(e=>e.trim()).filter(Boolean);return t.length>0?t:void 0}parseNumber(e,t){if(e===void 0)return t;let n=Number(e);if(!Number.isFinite(n))throw Error(`Expected a numeric value, received "${e}".`);return n}},vt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`GET`,params:e,query:t})).data,yt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`POST`,params:e,body:t})).data,bt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/check`,{method:`GET`,params:e,query:t})).data,xt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`GET`,params:e})).data,St=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`PATCH`,params:e,body:t})).data,Ct=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`DELETE`,params:e})).data,wt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}/release`,{method:`POST`,params:e,body:t})).data,Tt=`AGIFLOW_ORGANIZATION_ID`,Et=`AGIFLOW_PROJECT_ID`,Dt=`AGIFLOW_TASK_ID`,Ot=`AGIFLOW_WORK_UNIT_ID`,kt=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`workflow`).description(`Manage workflow locks`);this.addWorkflowScopeOptions(t.command(`create`).description(`Acquire a workflow lock`)).requiredOption(`--name <name>`,`Workflow name`).addOption(this.envOption(`--work-unit <workUnitId>`,`Work unit ID`,Ot)).addOption(this.envOption(`--task <taskId>`,`Task ID`,Dt)).option(`--context <json>`,`Context data as JSON string`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await yt({organizationId:t,projectId:n},{name:e.name,workUnitId:r.workUnitId,taskId:r.taskId,contextData:e.context});console.log(M.green(`✓`),`Workflow lock acquired`),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to acquire workflow lock`,e)}}),this.addWorkflowScopeOptions(t.command(`get <id>`).description(`Get workflow details`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i=await xt({organizationId:n,projectId:r,id:e});console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to get workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`list`).description(`List workflows`)).option(`--status <status>`,`Filter by status (running|completed|failed)`).option(`--limit <limit>`,`Max results`,`20`).option(`--offset <offset>`,`Offset for pagination`,`0`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await vt({organizationId:t,projectId:n},{status:e.status,limit:Number(e.limit),offset:Number(e.offset)});console.log(JSON.stringify(r,null,2))}catch(e){this.handleError(`Failed to list workflows`,e)}}),this.addWorkflowScopeOptions(t.command(`update <id>`).description(`Update workflow metadata`)).option(`--name <name>`,`New workflow name`).option(`--context <json>`,`Updated context data as JSON string`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i={};t.name&&(i.name=t.name),t.context&&(i.contextData=t.context);let a=await St({organizationId:n,projectId:r,id:e},i);console.log(M.green(`✓`),`Workflow updated`),console.log(JSON.stringify(a,null,2))}catch(e){this.handleError(`Failed to update workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`delete <id>`).description(`Delete workflow metadata`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t);await Ct({organizationId:n,projectId:r,id:e}),console.log(JSON.stringify({deleted:!0,workflow:{id:e}},null,2))}catch(e){this.handleError(`Failed to delete workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`release <id>`).description(`Release a workflow lock`)).requiredOption(`--status <status>`,`Release status (completed|failed)`).option(`--error <error>`,`Error message (when status is failed)`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i=await wt({organizationId:n,projectId:r,id:e},{status:t.status,error:t.error});console.log(M.green(`✓`),`Workflow lock released`),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to release workflow lock`,e)}}),this.addWorkflowScopeOptions(t.command(`check`).description(`Check if a workflow lock exists`)).addOption(this.envOption(`--work-unit <workUnitId>`,`Work unit ID`,Ot)).addOption(this.envOption(`--task <taskId>`,`Task ID`,Dt)).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await bt({organizationId:t,projectId:n},{workUnitId:r.workUnitId,taskId:r.taskId});console.log(M.green(`✓`),`Lock found`),console.log(JSON.stringify(i,null,2))}catch(e){if(e instanceof Error&&e.message.includes(`404`)){console.log(JSON.stringify({}));return}this.handleError(`Failed to check workflow lock`,e)}})}addWorkflowScopeOptions(e){return e.addOption(this.envOption(`--org <organizationId>`,`Organization ID`,Tt)).addOption(this.envOption(`--project <projectId>`,`Project ID`,Et))}envOption(e,t,n){return this.buildEnvIdOption(e,t,n)}async resolveWorkflowScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}async resolveWorkflowTarget(e){if(e.workUnit)return{workUnitId:e.workUnit};if(e.task)return{taskId:e.task};let t=await this.credentialsService.getWorkUnitId();if(t)return{workUnitId:t};let n=await this.credentialsService.getTaskId();return n?{taskId:n}:{}}};kt=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],kt);var At=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects`,{method:`GET`,params:e,query:t})).data,jt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects`,{method:`POST`,params:e,body:t})).data,Mt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/statuses`,{method:`GET`,params:e})).data,I=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`GET`,params:e})).data,Nt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`PATCH`,params:e,body:t})).data,Pt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`DELETE`,params:e})).data,Ft=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`GET`,params:e})).data,It=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`DELETE`,params:e,query:t})).data,Lt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Rt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/upload-url`,{method:`GET`,params:e,query:t})).data,zt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/complete`,{method:`POST`,params:e,body:t})).data,Bt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/seed`,{method:`POST`,params:e,body:t})).data,Vt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks`,{method:`GET`,params:e,query:t})).data,Ht=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts`,{method:`GET`,params:e,query:t})).data,Ut=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Wt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/statuses/{statusId}/tasks/reorder`,{method:`POST`,params:e,body:t})).data,Gt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`GET`,params:e,query:t})).data,Kt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`POST`,params:e,body:t})).data,qt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`GET`,params:e})).data,Jt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`PATCH`,params:e,body:t})).data,Yt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`DELETE`,params:e})).data,Xt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}/move`,{method:`POST`,params:e,body:t})).data,Zt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`GET`,params:e,query:t})).data,Qt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`POST`,params:e,body:t})).data,$t=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`GET`,params:e})).data,en=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`PATCH`,params:e,body:t})).data,tn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`DELETE`,params:e})).data,nn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}/progress`,{method:`GET`,params:e})).data,rn=`2024-11-05`;async function an(e){let t=new on(e);try{await t.initialize();let n=await t.listToolNames();return ln(n.includes(e.toolName)?await t.callTool(e.toolName,e.toolArgs):await t.callCapability(e.toolName,e.toolArgs,n))}finally{await t.terminate()}}var on=class{options;endpoint;sessionId;nextId=1;constructor(e){this.options=e;let t=e.serverUrl.replace(/\/+$/,``),n=encodeURIComponent(e.organizationId),r=encodeURIComponent(e.projectId);this.endpoint=`${t}/api/v1/organizations/${n}/projects/${r}/mcp`}async initialize(){let e=await this.request(`initialize`,{protocolVersion:rn,capabilities:{},clientInfo:{name:`agiflow-cli`,version:`0.0.1`}});if(e.error)throw Error(e.error.message??`Project MCP initialize failed.`)}async listToolNames(){let e=await this.request(`tools/list`);if(e.error)throw Error(e.error.message??`Project MCP tools/list failed.`);return e.result?.tools?.map(e=>e.name)??[]}async callTool(e,t){let n=await this.request(`tools/call`,{name:e,arguments:t});if(n.error)throw Error(n.error.message??`Project MCP tool failed: ${e}`);return n.result??{}}async callCapability(e,t,n){if(!n.includes(`use_capability`))throw Error(`Project MCP tool is not available: ${e}`);return this.callTool(`use_capability`,{toolName:e,toolArgs:t})}async terminate(){if(this.sessionId)try{await fetch(this.endpoint,{method:`DELETE`,headers:this.headers()})}catch{}}async request(e,t){let n=await fetch(this.endpoint,{method:`POST`,headers:this.headers(),body:JSON.stringify({jsonrpc:`2.0`,id:this.nextId++,method:e,...t===void 0?{}:{params:t}})}),r=n.headers.get(`Mcp-Session-Id`);return r&&(this.sessionId=r),sn(n)}headers(){return{Accept:`application/json, text/event-stream`,"Content-Type":`application/json`,"x-api-key":this.options.apiKey,...this.sessionId?{"Mcp-Session-Id":this.sessionId}:{}}}};async function sn(e){let t=await e.text();if(!e.ok)throw Error(`Project MCP request failed with status ${e.status}: ${un(t)}`);let n=e.headers.get(`content-type`)?.includes(`text/event-stream`)?cn(t):t;if(!n.trim())return{};try{return JSON.parse(n)}catch{throw Error(`Project MCP returned invalid JSON: ${un(n)}`)}}function cn(e){let t=e.split(/\n\n+/).map(e=>e.split(/\n/).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim()).join(`
|
|
8
|
+
`)).filter(e=>e&&e!==`[DONE]`);return t[t.length-1]??``}function ln(e){let t=e.content?.find(e=>e.type===`text`&&e.text)?.text;if(e.isError)throw Error(t??`Project MCP tool returned an error.`);if(e.structuredContent!==void 0)return e.structuredContent;if(t)try{return JSON.parse(t)}catch{return{text:t}}return e}function un(e){let t=e.replace(/\s+/g,` `).trim();return t.length>500?`${t.slice(0,500)}...`:t}var dn=`AGIFLOW_ORGANIZATION_ID`,fn=`AGIFLOW_PROJECT_ID`,pn=`AGIFLOW_TASK_ID`,mn=`AGIFLOW_WORK_UNIT_ID`,hn=100,gn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`artifact`).description(`Manage project artifacts`);this.addArtifactScopeOptions(t.command(`upload <file>`).description(`Upload an artifact (3-step: get presigned URL, PUT to storage, mark complete)`)).option(`--name <name>`,`Artifact name (defaults to filename)`).option(`--type <type>`,`Content type`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=g.default.resolve(e);h.default.existsSync(i)||(console.error(M.red(`✗`),`File not found: ${i}`),process.exit(1));let a=t.name??g.default.basename(i),o=h.default.readFileSync(i),s=h.default.statSync(i).size;console.log(M.blue(`↑`),`Uploading ${a} (${s} bytes)...`);let{url:c,key:l}=await Rt({organizationId:n,id:r},{filename:a,contentType:t.type}),u=await fetch(c,{method:`PUT`,body:o,headers:{"Content-Type":t.type??`application/octet-stream`}});if(!u.ok)throw Error(`Upload failed with status ${u.status}`);await zt({organizationId:n,id:r},{key:l}),console.log(M.green(`✓`),`Artifact uploaded: ${l}`)}catch(e){this.handleError(`Failed to upload artifact`,e)}}),this.addArtifactScopeOptions(t.command(`download [key]`).description(`Download artifacts by key, task, or work unit`)).option(`-o, --output <path>`,`Output file path`).option(`--target <folder>`,`Target folder for task or work unit artifact downloads`).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to download artifacts from`,pn)).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to download task artifacts from`,mn)).option(`--overwrite`,`Overwrite existing files`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t);if(e){await this.downloadProjectArtifactByKey(n,r,e,t);return}await this.downloadScopedArtifacts(n,r,t)}catch(e){this.handleError(`Failed to download artifact`,e)}}),this.addArtifactScopeOptions(t.command(`list`).description(`List project artifacts`)).option(`--max-keys <maxKeys>`,`Maximum number of artifacts to return`).option(`--continuation-token <token>`,`Pagination continuation token`).option(`--search <search>`,`Search artifacts by name`).option(`--labels <labels>`,`Comma-separated labels to match`).option(`--content-type <contentType>`,`Content type prefix`).option(`--status <status>`,`Artifact status (pending|uploaded)`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=this.hasListFilters(e)?await this.callProjectTool(t,n,`list_artifacts`,{maxKeys:this.parseOptionalNumber(e.maxKeys,`--max-keys`),continuationToken:e.continuationToken,search:e.search,labels:this.parseCsv(e.labels),contentType:e.contentType,status:e.status}):await Ft({organizationId:t,id:n});console.log(JSON.stringify(r,null,2))}catch(e){this.handleError(`Failed to list artifacts`,e)}}),this.addArtifactScopeOptions(t.command(`get <key>`).description(`Get artifact details by key`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=(await Ft({organizationId:n,id:r})).items.find(t=>t.key===e||t.id===e);i||(console.error(M.red(`✗`),`Artifact not found: ${e}`),process.exit(1)),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to get artifact`,e)}}),this.addArtifactScopeOptions(t.command(`delete <key>`).description(`Delete an artifact by key`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t);await It({organizationId:n,id:r},{key:e}),console.log(M.green(`✓`),`Artifact deleted: ${e}`)}catch(e){this.handleError(`Failed to delete artifact`,e)}}),this.addArtifactScopeOptions(t.command(`link <key>`).description(`Link or unlink artifact targets`)).option(`--action <action>`,`Action to perform (link|unlink)`,`link`).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to link`,mn)).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to link`,pn)).option(`--clip-json <json>`,`Clip region JSON with x, y, width, height`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=t.task?await this.resolveTaskIdOption(t.task):void 0,a=t.workUnit?await this.resolveWorkUnitIdOption(t.workUnit):void 0;if(!i&&!a)throw Error(`Specify --task, --work-unit, or both.`);if(t.action!==`link`&&t.action!==`unlink`)throw Error(`--action must be link or unlink.`);let o=await this.callProjectTool(n,r,`link_artifact`,{key:e,action:t.action,taskId:i,workUnitId:a,clip:this.parseClip(t.clipJson)});console.log(JSON.stringify(o,null,2))}catch(e){this.handleError(`Failed to link artifact`,e)}}),this.addArtifactScopeOptions(t.command(`signed-url`).description(`Get a signed upload or download URL for an artifact`)).requiredOption(`--action <action>`,`Signed URL action (upload|download)`).option(`--key <key>`,`Artifact key (required for download)`).option(`--filename <filename>`,`Filename (required for upload)`).option(`--type <type>`,`Content type for upload`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e);if(e.action===`download`){if(!e.key)throw Error(`--key is required for download signed URLs`);let r=await Lt({organizationId:t,id:n},{key:e.key});console.log(JSON.stringify({...r,key:e.key,action:`download`},null,2));return}if(e.action!==`upload`)throw Error(`--action must be upload or download`);if(!e.filename)throw Error(`--filename is required for upload signed URLs`);let r=await Rt({organizationId:t,id:n},{filename:e.filename,contentType:e.type});console.log(JSON.stringify({...r,action:`upload`},null,2))}catch(e){this.handleError(`Failed to get signed artifact URL`,e)}}),this.addArtifactScopeOptions(t.command(`seed`).description(`Seed artifacts from a JSON file`)).requiredOption(`--file <path>`,`Path to JSON file containing seed data`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=g.default.resolve(e.file);if(!h.default.existsSync(r)){console.error(M.red(`✗`),`File not found: ${r}`),process.exit(1);return}let i=h.default.readFileSync(r,`utf-8`),a;try{a=JSON.parse(i)}catch{console.error(M.red(`✗`),`Invalid JSON in ${r}`),process.exit(1);return}let o=await Bt({organizationId:t,id:n},a);console.log(JSON.stringify(o,null,2))}catch(e){this.handleError(`Failed to seed artifacts`,e)}}),this.addArtifactScopeOptions(t.command(`update <key>`).description(`Update artifact metadata`)).option(`--status <status>`,`Artifact status (pending|uploaded)`).option(`--labels <labels>`,`Comma-separated labels to set`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=await this.callProjectTool(n,r,`update_artifact`,{key:e,status:t.status,labels:this.parseCsv(t.labels)});console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to update artifact`,e)}})}addArtifactScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,dn)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,fn))}async resolveArtifactScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}async callProjectTool(e,t,n,r){let{serverUrl:i,apiKey:a}=await this.resolveApiClientContext();return an({serverUrl:i,apiKey:a,organizationId:e,projectId:(await I({organizationId:e,id:t})).id,toolName:n,toolArgs:this.compact(r)})}async downloadProjectArtifactByKey(e,t,n,r){if(r.task||r.workUnit||r.target)throw Error(`Single artifact downloads only support <key> and --output. Do not pass --task, --work-unit, or --target.`);let i=await Lt({organizationId:e,id:t},{key:n}),a=await this.fetchArtifactBuffer(i.url),o=r.output??n;h.default.writeFileSync(o,a),console.log(M.green(`✓`),`Downloaded to ${o}`)}async downloadScopedArtifacts(e,t,n){if(n.output)throw Error(`Scoped downloads write to folders. Use --target instead of --output.`);if(!!n.task==!!n.workUnit)throw Error(`Pass exactly one of --task or --work-unit.`);let r=g.default.resolve(n.target??process.cwd()),i=n.task?[await this.resolveTaskForScopedDownload(n.task)]:await this.resolveWorkUnitTasks(e,t,n.workUnit),a=await this.buildScopedDownloadPlan(e,i,r,!!n.workUnit);this.assertWritablePlan(a,!!n.overwrite),h.default.mkdirSync(r,{recursive:!0});for(let t of a){let n=await Ut({organizationId:e,taskId:t.task.id},{key:t.artifact.key}),r=await this.fetchArtifactBuffer(n.url);h.default.mkdirSync(g.default.dirname(t.outputPath),{recursive:!0}),h.default.writeFileSync(t.outputPath,r),console.log(M.green(`✓`),`Downloaded ${t.artifact.key} to ${t.outputPath}`)}this.printJson({scope:n.task?{type:`task`,id:n.task}:{type:`work-unit`,id:n.workUnit},outputDir:r,downloaded:a.length,totalArtifacts:a.length,totalTasks:i.length})}async resolveTaskForScopedDownload(e){let t=await this.resolveTaskIdOption(e);return{id:t,slug:t}}async resolveWorkUnitTasks(e,t,n){let r=await $t({organizationId:e,projectId:t,workUnitId:await this.resolveWorkUnitIdOption(n)}),i=[],a=0;for(;;){let n={limit:hn,offset:a,sort:`position`,order:`asc`,statusFilter:`all`,workUnitId:r.id},o=await Gt({organizationId:e,projectId:t},n);if(i.push(...o.items.map(e=>this.toArtifactTask(e))),a+=o.items.length,o.items.length===0||a>=o.total)return i}}async buildScopedDownloadPlan(e,t,n,r){let i=[];for(let a of t){let t=await this.listAllTaskArtifacts(e,a.id),o=r?g.default.join(n,this.sanitizePathSegment(a.slug||a.id)):n;for(let e of t)i.push({artifact:e,task:a,outputPath:g.default.join(o,this.sanitizePathSegment(e.name||g.default.basename(e.key)))})}return i}toArtifactTask(e){return{id:e.id,slug:e.slug||e.id}}async listAllTaskArtifacts(e,t){let n=[],r=0;for(;;){let i=await Ht({organizationId:e,taskId:t},{limit:hn,offset:r});if(n.push(...i.items),r+=i.items.length,i.items.length===0||r>=i.total)return n}}assertWritablePlan(e,t){let n=new Set;for(let r of e){if(n.has(r.outputPath))throw Error(`Duplicate artifact output path: ${r.outputPath}`);if(n.add(r.outputPath),!t&&h.default.existsSync(r.outputPath))throw Error(`Output file already exists: ${r.outputPath}. Pass --overwrite to replace it.`)}}async fetchArtifactBuffer(e){let t=await fetch(e);if(!t.ok)throw Error(`Download failed with status ${t.status}`);return Buffer.from(await t.arrayBuffer())}sanitizePathSegment(e){return e.replace(/[<>:"/\\|?*]/g,`_`).split(``).map(e=>e.charCodeAt(0)<32?`_`:e).join(``).trim()||`artifact`}hasListFilters(e){return!!(e.maxKeys||e.continuationToken||e.search||e.labels||e.contentType||e.status)}parseOptionalNumber(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isFinite(n))throw Error(`${t} must be numeric.`);return n}parseClip(e){let t=this.parseJsonFlag(e,`--clip-json`);if(t!==void 0){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`--clip-json must be an object.`);return t}}compact(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}};gn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],gn);var _n=class e{command;constructor(e){this.command=e}static for(t){return new e(t)}fromSchemaGroups(e){for(let t of e)this.addGroup(t);return this.command}addGroup(e){let t=d.z.toJSONSchema(e.schema),n=new Set(t.required??[]);for(let r of e.options){let e=r.source??r.name,i=t.properties?.[e],a=i?.cli,o=r.parse??a?.parse??vn(i),s=i?.description??Sn(e),l=r.defaultValue??yn(i),u=r.valueName??a?.valueName??e,d=r.flag??a?.flag??`--${xn(r.name)}`,f=r.envVars??(r.envVar?[r.envVar]:[]),p=f.length>0?!1:r.required??(l===void 0&&n.has(e)),m=o===`boolean`?d:`${d} <${u}>`,h=bn(o),g=new c.Option(m,s);if(f.some(e=>re(e))&&g.hideHelp(),p){h&&g.argParser(h),this.command.addOption(g.makeOptionMandatory());continue}h?(g.argParser(h),l!==void 0&&g.default(l),this.command.addOption(g)):(l===void 0||g.default(l),this.command.addOption(g))}}},vn=e=>e&&(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type)===`boolean`?`boolean`:`string`,yn=e=>{if(typeof e?.default==`string`||typeof e?.default==`boolean`)return e.default;if(typeof e?.default==`number`)return String(e.default)},bn=e=>{if(e===`csv`)return e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);if(e===`json`)return e=>JSON.parse(e)},xn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/_/g,`-`).toLowerCase(),Sn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),Cn=`0.0.1`,L=`AGIFLOW_ORGANIZATION_ID`,R=`AGIFLOW_PROJECT_ID`,wn=`AGIFLOW_TASK_ID`,Tn=`AGIFLOW_WORK_UNIT_ID`,En=(e,t)=>{let n={AGIFLOW_ORGANIZATION_ID:t.org,AGIFLOW_PROJECT_ID:t.project,AGIFLOW_JOB_KIND:e.kind,AGIFLOW_JOB_ID:e.id,AGIFLOW_JOB_SLUG:e.slug??``,AGIFLOW_JOB_TITLE:e.title??``,AGIFLOW_WORKFLOW_ID:t.workflowId,AGIFLOW_JOB_CONTEXT_FILE:t.contextFile};return e.kind===`work-unit`?n[Tn]=e.id:n[wn]=e.id,n},z=d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID`)}),Dn=d.z.object({jobKind:d.z.enum([`work-unit`,`task`]).describe(`Job kind (work-unit|task)`),jobId:d.z.string().min(1).describe(`Job ID`)}),On=d.z.object({format:d.z.literal(`json`).default(`json`).describe(`Output format`)}),B=(e,t)=>_n.for(e).fromSchemaGroups([...t,{schema:On,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),kn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`automation`).description(`Automation JSON commands`);t.command(`list-jobs`).description(`List runnable or claimed automation jobs`).option(`--status <statuses>`,`Comma-separated job statuses`,`planning,todo`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({limit:d.z.string().default(`50`).describe(`Max results`),claimed:d.z.boolean().optional().describe(`List claimed running jobs`),deviceId:d.z.string().optional().describe(`Filter claimed jobs by device ID`)}),options:[{name:`limit`,required:!1,defaultValue:`50`},{name:`claimed`,required:!1},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=await this.requestJson({org:t,project:n,path:`/jobs`,query:{status:e.status,limit:Number(e.limit),claimed:!!e.claimed,deviceId:e.deviceId,format:`json`}});this.printJson(r)})}),t.command(`get-job`).description(`Get a normalized automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:Dn,options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Tn,wn]}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=this.resolveJobKind(e.jobKind),i=await this.resolveJobId(e.jobId,r),a=await this.requestJson({org:t,project:n,path:`/jobs/get`,query:{jobKind:r,jobId:i,format:`json`}});this.printJson(a)})}),t.command(`claim-job`).description(`Claim an automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:Dn.extend({name:d.z.string().min(1).describe(`Run name`),deviceId:d.z.string().optional().describe(`Device ID running the job`)}),options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Tn,wn]},{name:`name`},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=this.resolveJobKind(e.jobKind),i=await this.resolveJobId(e.jobId,r),a=await this.requestJson({org:t,project:n,path:`/jobs/claim`,method:`POST`,body:{jobKind:r,jobId:i,name:e.name,deviceId:e.deviceId}});this.printJson(a)})}),t.command(`release-job`).description(`Release a claimed automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({workflowId:d.z.string().min(1).describe(`Workflow lock ID`),status:d.z.enum([`completed`,`failed`]).describe(`Release status (completed|failed)`),error:d.z.string().optional().describe(`Error message for failed runs`)}),options:[{name:`workflowId`,flag:`--workflow-id`},{name:`status`},{name:`error`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=await this.requestJson({org:t,project:n,path:`/jobs/release`,method:`POST`,body:{workflowId:e.workflowId,status:e.status,error:e.error}});this.printJson(r)})}),t.command(`dispatch`).description(`Poll ready jobs and hand each off to a consumer command (long-lived)`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({handler:d.z.string().min(1).describe(`Consumer command run per claimed job`),status:d.z.string().default(`planning,todo`).describe(`Comma-separated job statuses to poll`),maxConcurrent:d.z.string().default(`2`).describe(`Max concurrent in-flight handlers`),interval:d.z.string().default(`1200`).describe(`Seconds between polls`),limit:d.z.string().default(`50`).describe(`Jobs fetched per poll`),once:d.z.boolean().optional().describe(`Run a single poll pass then drain and exit`),deviceId:d.z.string().optional().describe(`Device ID for claim attribution`)}),options:[{name:`handler`},{name:`status`,required:!1,defaultValue:`planning,todo`},{name:`maxConcurrent`,flag:`--max-concurrent`,required:!1,defaultValue:`2`},{name:`interval`,required:!1,defaultValue:`1200`},{name:`limit`,required:!1,defaultValue:`50`},{name:`once`,required:!1},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{try{await this.runDispatch(e)}catch(e){this.logDispatch(`fatal: ${e instanceof Error?e.message:String(e)}`),process.exit(1)}})}async runDispatch(e){let{org:t,project:n}=await this.resolveAutomationRoute(e);if(!e.handler)throw Error(`Missing --handler. Pass the consumer command to run per job.`);let r={org:t,project:n,handler:e.handler,statuses:e.status??`planning,todo`,limit:Number(e.limit??`50`),maxConcurrent:Math.max(1,Number(e.maxConcurrent??`2`)),deviceId:e.deviceId,inFlight:new Map},i=Math.max(0,Number(e.interval??`1200`))*1e3,a={requested:!1},o=()=>{a.requested=!0,this.logDispatch(`shutdown requested; draining in-flight handlers`)};process.once(`SIGINT`,o),process.once(`SIGTERM`,o),this.logDispatch(`started org=${t} project=${n} status=${r.statuses} maxConcurrent=${r.maxConcurrent} interval=${i/1e3}s${e.once?` (once)`:``}`);try{do{try{await this.dispatchPass(r)}catch(e){this.logDispatch(`poll error: ${e instanceof Error?e.message:String(e)}`)}if(e.once||a.requested)break;await this.sleep(i,a)}while(!a.requested)}finally{process.off(`SIGINT`,o),process.off(`SIGTERM`,o),await Promise.allSettled(r.inFlight.values())}}async dispatchPass(e){let t=e.maxConcurrent-e.inFlight.size;if(t<=0){this.logDispatch(`at capacity (${e.inFlight.size}/${e.maxConcurrent}); skipping poll`);return}let n=await this.requestJson({org:e.org,project:e.project,path:`/jobs`,query:{status:e.statuses,limit:e.limit,claimed:!1,format:`json`}}),r=this.extractJobs(n),i=0;for(let n of r){if(i>=t)break;if(e.inFlight.has(n.id))continue;let r=await this.claimJobForDispatch(e,n);if(!r)continue;i+=1;let a=this.handleClaimedJob(e,n,r).finally(()=>{e.inFlight.delete(n.id)});e.inFlight.set(n.id,a)}}async claimJobForDispatch(e,t){let n=await this.requestJson({org:e.org,project:e.project,path:`/jobs/claim`,method:`POST`,body:{jobKind:t.kind,jobId:t.id,name:t.slug,deviceId:e.deviceId}});return n&&typeof n==`object`&&n.claimed===!0&&n.workflowId?String(n.workflowId):(this.logDispatch(`skip ${t.kind} ${t.slug}: not claimed (held elsewhere)`),null)}async handleClaimedJob(e,t,n){this.logDispatch(`claimed ${t.kind} ${t.slug} (workflow ${n}); running handler`);let r=this.writeJobContext(e.project,t),i=En(t,{org:e.org,project:e.project,workflowId:n,contextFile:r}),a=0,o;try{a=await this.spawnHandler(e.handler,i)}catch(e){a=1,o=e instanceof Error?e.message:String(e)}finally{this.removeJobContext(r)}let s=a===0?`completed`:`failed`;!o&&a!==0&&(o=`handler exited with code ${a}`),await this.releaseDispatch(e,n,s,o),this.logDispatch(`released ${t.kind} ${t.slug} as ${s}${o?`: ${o}`:``}`)}async releaseDispatch(e,t,n,r){try{await this.requestJson({org:e.org,project:e.project,path:`/jobs/release`,method:`POST`,body:{workflowId:t,status:n,error:r}})}catch(e){this.logDispatch(`release failed for workflow ${t}: ${e instanceof Error?e.message:String(e)}`)}}spawnHandler(e,t){return new Promise((n,r)=>{let i=(0,te.spawn)(e,{shell:!0,stdio:[`ignore`,`inherit`,`inherit`],env:{...process.env,...t}});i.on(`error`,r),i.on(`close`,e=>n(e??0))})}writeJobContext(e,t){let n=g.default.join(_.default.homedir(),`.agiflow`,`dispatch`,this.slugifyName(e));(0,h.mkdirSync)(n,{recursive:!0});let r=g.default.join(n,`${t.slug||t.id}.json`);return(0,h.writeFileSync)(r,JSON.stringify(t,null,2),`utf8`),r}removeJobContext(e){try{(0,h.rmSync)(e,{force:!0})}catch{}}extractJobs(e){return e&&typeof e==`object`&&Array.isArray(e.items)?e.items:[]}logDispatch(e){console.error(`[dispatch] ${e}`)}async sleep(e,t){let n=0;for(;n<e&&!t.requested;){let t=Math.min(1e3,e-n);await new Promise(e=>setTimeout(e,t)),n+=t}}async resolveAutomationRoute(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}resolveJobKind(e){if(e===`work-unit`||e===`task`)return e;throw Error(`Missing job kind. Pass --job-kind work-unit|task.`)}async resolveJobId(e,t){return e||(t===`work-unit`?this.resolveWorkUnitIdOption(void 0):this.resolveTaskIdOption(void 0))}slugifyName(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);if(!t)throw Error(`Name must contain at least one letter or number.`);return t}async requestJson(e){return this.requestUrlJson(`${this.configManager.getServerUrl().replace(/\/$/,``)}/api/v1/organizations/${e.org}/projects/${e.project}/automation${e.path}`,e)}async requestUrlJson(e,t){let n=await this.credentialsService.getApiKey();if(!n)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);let r=new URL(e);for(let[e,n]of Object.entries(t.query??{}))n!==void 0&&r.searchParams.set(e,String(n));let i=await fetch(r,{method:t.method??`GET`,headers:{"x-api-key":n,"x-client-type":`agent-cli`,"x-client-version":Cn,"Content-Type":`application/json`,Accept:`application/json`},body:t.body?JSON.stringify(t.body):void 0}),a=await i.json().catch(()=>({}));if(!i.ok){let e=typeof a==`object`&&a&&`message`in a?String(a.message):i.statusText;throw Error(e)}return a}};kn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],kn);var An=`AGIFLOW_ORGANIZATION_ID`,jn=`AGIFLOW_PROJECT_ID`,Mn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`analytics`).description(`Project analytics JSON commands`);this.addCommonOptions(t.command(`tag-distribution`).description(`Get task tag distribution`)).option(`--prefix <prefix>`,`Filter tags by prefix`).option(`--tags <tags>`,`Comma-separated exact tag values`).option(`--targets-json <json>`,`Target ratios by tag, for gap analysis`).action(e=>this.tagDistribution(e)),this.addCommonOptions(t.command(`assignee-distribution`).description(`Get task assignee distribution`)).option(`--group-by-tag <prefix>`,`Tag prefix to cross-tabulate per assignee`).action(e=>this.assigneeDistribution(e)),this.addCommonOptions(t.command(`timeline-distribution`).description(`Get task timeline distribution`)).option(`--granularity <granularity>`,`Bucket size (day|week|month)`,`week`).option(`--group-by-tag <prefix>`,`Tag prefix to cross-tabulate per time bucket`).action(e=>this.timelineDistribution(e))}async tagDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_tag_distribution`,{...this.commonToolArgs(e),prefix:e.prefix,tags:this.parseCsv(e.tags),targets:this.parseTargets(e.targetsJson)},e);this.printJson(t)})}async assigneeDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_assignee_distribution`,{...this.commonToolArgs(e),groupByTag:e.groupByTag},e);this.printJson(t)})}async timelineDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_timeline_distribution`,{...this.commonToolArgs(e),granularity:e.granularity,groupByTag:e.groupByTag},e);this.printJson(t)})}async callAnalyticsTool(e,t,n){this.requireJsonFormat(n.format,`analytics commands`),await this.setupClient();let{serverUrl:r,apiKey:i}=await this.resolveApiClientContext(),{org:a,projectId:o}=await this.resolveProjectScope(n);return an({serverUrl:r,apiKey:i,organizationId:a,projectId:o,toolName:e,toolArgs:this.compact(t)})}addCommonOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,An)).addOption(this.buildEnvIdOption(`--project <projectIdOrSlug>`,`Project ID or slug`,jn)).requiredOption(`--start-date <date>`,`Start of date range (ISO 8601)`).requiredOption(`--end-date <date>`,`End of date range (ISO 8601)`).option(`--date-field <field>`,`Date field (createdAt|dueDate|completedAt)`).option(`--status-filter <filter>`,`Status filter (active|all)`).option(`--format <format>`,`Output format (json)`,`json`)}async resolveProjectScope(e){let t=await this.resolveOrganizationId(e.org);return{org:t,projectId:(await I({organizationId:t,id:await this.resolveProjectIdOption(e.project)})).id}}commonToolArgs(e){return this.requireJsonFormat(e.format,`analytics commands`),this.compact({org:e.org,project:e.project,startDate:e.startDate,endDate:e.endDate,dateField:e.dateField,statusFilter:e.statusFilter,format:e.format})}parseTargets(e){let t=this.parseJsonFlag(e,`--targets-json`);if(t!==void 0){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`--targets-json must be an object.`);return t}}compact(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&![`org`,`project`,`format`].includes(n)&&(t[n]=r);return t}};Mn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],Mn);var Nn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault`,{method:`GET`,params:e})).data,Pn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`GET`,params:e})).data,Fn=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`PUT`,params:e,body:t})).data,In=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`DELETE`,params:e})).data,Ln=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/bulk`,{method:`POST`,params:e,body:t})).data,Rn=`AGIFLOW_ORGANIZATION_ID`,zn=`AGIFLOW_PROJECT_ID`,Bn=`AGIFLOW_ENVIRONMENT_ID`,Vn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`vault`).description(`Vault JSON commands`);this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`list`).description(`List vault entries`))).action(e=>this.list(e)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`get <key>`).description(`Get a vault entry`))).action((e,t)=>this.get(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`set <key>`).description(`Set a vault entry`))).requiredOption(`--value <value>`,`Vault entry value`).option(`--description <description>`,`Vault entry description`).option(`--secret`,`Mask this entry in list/get responses`).action((e,t)=>this.set(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`delete <key>`).description(`Delete a vault entry`))).action((e,t)=>this.delete(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`bulk-upsert`).description(`Bulk upsert vault entries`))).requiredOption(`--entries-json <json>`,`Array of entries or { "entries": [...] }`).action(e=>this.bulkUpsert(e))}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`vault commands`),await this.setupClient();let t=await this.resolveVaultScope(e),n=await Nn({organizationId:t.org,projectId:t.project,environmentId:t.environment});this.printJson({entries:n,total:Array.isArray(n)?n.length:0})})}async get(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t),r=await Pn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e});this.printJson({entry:r})})}async set(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t),r=await Fn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e},{value:t.value,description:t.description,isSecret:t.secret===!0});this.printJson({entry:r})})}async delete(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t);await In({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e}),this.printJson({deleted:!0,key:e})})}async bulkUpsert(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`vault commands`),await this.setupClient();let t=await this.resolveVaultScope(e),n=this.parseEntries(e.entriesJson),r=await Ln({organizationId:t.org,projectId:t.project,environmentId:t.environment},{entries:n});this.printJson({entries:r,total:Array.isArray(r)?r.length:0})})}addVaultScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Rn)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,zn)).addOption(this.buildEnvIdOption(`--environment <environmentId>`,`Environment ID`,Bn))}addJsonFormatOption(e){return e.option(`--format <format>`,`Output format (json)`,`json`)}async resolveVaultScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project),environment:await this.resolveEnvironmentId(e.environment)}}async resolveEnvironmentId(e){let t=e??process.env.AGIFLOW_ENVIRONMENT_ID;if(!t)throw Error(`Missing environment ID. Pass --environment or set AGIFLOW_ENVIRONMENT_ID.`);return t}parseEntries(e){let t=this.parseJsonFlag(e,`--entries-json`),n=t&&typeof t==`object`&&!Array.isArray(t)&&`entries`in t?t.entries:t;if(!Array.isArray(n))throw Error(`--entries-json must be an array or an object containing entries.`);return n.map((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`entries[${t}] must be an object.`);let n=e;if(typeof n.key!=`string`||!n.key)throw Error(`entries[${t}].key is required.`);if(typeof n.value!=`string`||!n.value)throw Error(`entries[${t}].value is required.`);return{key:n.key,value:n.value,description:typeof n.description==`string`?n.description:void 0,isSecret:typeof n.isSecret==`boolean`?n.isSecret:!1}})}};Vn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],Vn),d.z.enum([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`HEAD`]);var Hn=d.z.union([d.z.literal(200),d.z.literal(201),d.z.literal(204),d.z.literal(400),d.z.literal(401),d.z.literal(403),d.z.literal(404),d.z.literal(409),d.z.literal(422),d.z.literal(500),d.z.literal(502),d.z.literal(503)]);d.z.enum([`application/json`,`application/xml`,`text/plain`,`multipart/form-data`]),d.z.object({error:d.z.string(),message:d.z.string().optional(),statusCode:Hn,details:d.z.record(d.z.string(),d.z.unknown()).optional()}),d.z.object({total:d.z.number(),limit:d.z.number(),offset:d.z.number(),hasNext:d.z.boolean().optional(),hasPrev:d.z.boolean().optional()});var Un=d.z.object({id:d.z.enum([`apple`,`google`,`github`]),displayName:d.z.string(),flow:d.z.enum([`native-id-token`,`oauth-browser`])}).strict();d.z.object({emailPassword:d.z.boolean(),providers:d.z.array(Un)}).strict(),d.z.object({ok:d.z.boolean()}).strict(),d.z.object({name:d.z.string().min(2).max(80),email:d.z.string().max(160).email(),subject:d.z.string().min(2).max(120),message:d.z.string().min(10).max(4e3)}).strict();var Wn=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string().nullable(),role:d.z.string()}).strict();d.z.object({organizations:d.z.array(Wn)}).strict(),d.z.object({api_key:d.z.string().describe(`The API key for the agent`),key_id:d.z.string().describe(`ID of the API key`),organization_id:d.z.string().describe(`Organization ID`),organization_name:d.z.string().describe(`Organization name`),agent_user_id:d.z.string().describe(`User ID of the agent`),expires_at:d.z.number().describe(`Expiration timestamp in milliseconds`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID to exchange token for`)}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict();var Gn=d.z.object({organizationId:d.z.string(),projectId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),resourcePath:d.z.string(),scopes:d.z.string().nullable(),clientId:d.z.string(),expiresAt:d.z.string()}).strict(),Kn=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),role:d.z.string()}).strict();d.z.object({resourceContext:Gn.nullable(),organizations:d.z.array(Kn)}).strict();var qn=d.z.object({code_challenge:d.z.string().min(1)}).strict();d.z.object({success:d.z.boolean(),resourcePath:d.z.string(),organizationId:d.z.string(),projectId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable()}).strict(),d.z.object({codeChallenge:d.z.string().min(1),organizationId:d.z.string().optional(),clientId:d.z.string().optional(),projectId:d.z.string().optional(),workUnitId:d.z.string().optional(),taskId:d.z.string().optional()}).strict(),d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string()}),d.z.object({name:d.z.string().min(2).max(80).describe(`Organization display name`)}).strict(),d.z.object({version:d.z.string()}).strict();var V=d.z.object({}).strict();d.z.object({version:d.z.string()}).strict();var H=d.z.object({}).strict();d.z.object({mcpServers:d.z.object({})}).strict();var Jn=d.z.object({id:d.z.string(),mcpServerId:d.z.string(),serverName:d.z.string(),description:d.z.string().nullable(),isInternal:d.z.boolean(),scope:d.z.enum([`global`,`organization`,`project`,`task`]),isEnabled:d.z.boolean(),hasProgressiveDisclosure:d.z.boolean(),progressiveDisclosure:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}).nullable(),priority:d.z.number()}).strict();d.z.object({servers:d.z.array(Jn),projectId:d.z.string().optional()}).strict();var Yn=d.z.object({projectId:d.z.string().optional(),taskId:d.z.string().optional(),workUnitId:d.z.string().optional()}).strict();d.z.object({id:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().optional(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),serverName:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().optional(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({id:d.z.string(),organizationId:d.z.string(),projectId:d.z.string().nullable(),taskId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),progressiveDisclosure:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict();var U=d.z.object({projectId:d.z.string().optional(),taskId:d.z.string().optional(),workUnitId:d.z.string().optional()}).strict();d.z.object({progressiveDisclosure:d.z.boolean()}).strict(),d.z.object({progressiveDisclosure:d.z.boolean()}).strict();var Xn=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),serverName:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),isInternal:d.z.boolean(),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),availableTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),availableResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Xn)}).strict();var Zn=d.z.union([d.z.object({type:d.z.string(),command:d.z.string().min(1),args:d.z.array(d.z.string()).optional(),env:d.z.object({}).optional()}).strict(),d.z.object({type:d.z.string(),url:d.z.string().url(),headers:d.z.object({}).optional()}).strict()]);d.z.object({serverName:d.z.string().min(1),displayName:d.z.string().min(1),description:d.z.string().optional(),serverConfig:Zn}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({serverName:d.z.string().min(1).optional(),displayName:d.z.string().min(1).optional(),description:d.z.string().optional(),serverConfig:Zn.optional()}).strict(),d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({taskId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),taskId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({taskId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({taskId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({workUnitId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),workUnitId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({workUnitId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),workUnitId:d.z.string().min(1)}).strict();var Qn=d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),parentWorkUnitId:d.z.string().nullable(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable(),priority:d.z.enum([`low`,`medium`,`high`]).nullable(),statusId:d.z.string().nullable(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable(),ownerId:d.z.string(),estimatedEffort:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),startDate:d.z.string().nullable(),targetDate:d.z.string().nullable(),completedAt:d.z.string().nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),taskCount:d.z.number().optional().describe(`Number of tasks in this work unit`)}).strict(),$n=d.z.object({title:d.z.string().min(1).max(255).optional().describe(`Work unit title`),slug:d.z.string().optional().describe(`Work unit slug`),description:d.z.string().nullable().optional(),parentWorkUnitId:d.z.string().nullable().optional(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:d.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:d.z.string().nullable().optional(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:d.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:d.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:d.z.string().nullable().optional(),targetDate:d.z.string().nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({action:d.z.union([d.z.string(),d.z.string(),d.z.string()]),artifactId:d.z.string().min(1)}).strict();var er=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),projectId:d.z.string().nullable(),isStartedState:d.z.boolean(),isCompletionState:d.z.boolean(),isTerminalState:d.z.boolean(),isBlockedState:d.z.boolean(),isAgentPickable:d.z.boolean(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(er),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1).optional()}).strict(),d.z.object({statusIds:d.z.array(d.z.string().min(1))}).strict(),d.z.object({organizationId:d.z.string().min(1).nullable().optional(),projectId:d.z.string().nullable().optional(),isStartedState:d.z.boolean().optional(),isCompletionState:d.z.boolean().optional(),isTerminalState:d.z.boolean().optional(),isBlockedState:d.z.boolean().optional(),isAgentPickable:d.z.boolean().optional(),key:d.z.string().min(1).max(50),name:d.z.string().min(1).max(100),description:d.z.string().max(500).nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional(),color:d.z.string().nullable().optional(),isActive:d.z.boolean().optional(),isDefault:d.z.boolean().optional()}).strict();var tr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`position`,`key`]),order:d.z.enum([`asc`,`desc`])}).strict();d.z.object({projectId:d.z.string().nullable().optional(),isStartedState:d.z.boolean().optional(),isCompletionState:d.z.boolean().optional(),isTerminalState:d.z.boolean().optional(),isBlockedState:d.z.boolean().optional(),isAgentPickable:d.z.boolean().optional(),key:d.z.string().min(1).max(50).optional(),name:d.z.string().min(1).max(100).optional(),description:d.z.string().max(500).nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional(),color:d.z.string().nullable().optional(),isActive:d.z.boolean().optional(),isDefault:d.z.boolean().optional()}).strict();var nr=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),name:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),executable:d.z.string(),defaultArgs:d.z.string().nullable(),isEnabled:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict(),d.z.object({name:d.z.string().min(1).max(255),displayName:d.z.string().min(1).max(255),description:d.z.string().optional(),executable:d.z.string().min(1).max(255),defaultArgs:d.z.string().optional(),isEnabled:d.z.boolean()}).strict(),d.z.object({items:d.z.array(nr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var rr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`displayName`]),order:d.z.enum([`asc`,`desc`]),isEnabled:d.z.boolean()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),displayName:d.z.string().min(1).max(255).optional(),description:d.z.string().optional(),executable:d.z.string().min(1).max(255).optional(),defaultArgs:d.z.string().optional(),isEnabled:d.z.boolean().optional()}).strict();var ir=d.z.object({id:d.z.string(),organizationId:d.z.string(),agentTypeId:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),metadata:d.z.object({}).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict(),d.z.object({agentTypeId:d.z.string().min(1),name:d.z.string().min(1).max(255),description:d.z.string().max(1e3).nullable().optional(),isDefault:d.z.boolean()}).strict(),d.z.object({items:d.z.array(ir),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var ar=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`]),order:d.z.enum([`asc`,`desc`])}).strict(),or=d.z.object({agentTypeId:d.z.string().min(1)}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string()}).strict(),d.z.object({}),d.z.object({name:d.z.string().min(1).max(255).optional(),description:d.z.string().max(1e3).nullable().optional(),isDefault:d.z.boolean().optional()}).strict(),d.z.object({}).strict();var sr=d.z.object({id:d.z.string(),profileId:d.z.string(),credentialType:d.z.string(),customName:d.z.string().nullable(),r2Key:d.z.string(),size:d.z.number().max(9007199254740991).int(),checksum:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string(),type:d.z.enum([`gemini`,`codex`,`custom`]).optional()}).strict();var cr=d.z.object({originalSize:d.z.number().max(9007199254740991).int(),fileCount:d.z.number().min(0).max(9007199254740991).int(),checksum:d.z.string().min(64).max(64)}).strict();d.z.object({credentialType:d.z.enum([`gemini`,`codex`,`custom`]),customName:d.z.string().min(1).max(255).optional(),data:d.z.string().min(1),metadata:cr}).strict(),d.z.object({items:d.z.array(sr),total:d.z.number().min(0).max(9007199254740991).int()}).strict();var lr=d.z.object({download:d.z.boolean()}).strict(),ur=d.z.object({id:d.z.string(),agentProfileId:d.z.string(),key:d.z.string(),value:d.z.string(),description:d.z.string().nullable(),isRequired:d.z.boolean(),isSecret:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(ur),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),profileId:d.z.string()}).strict(),d.z.object({}),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),profileId:d.z.string(),key:d.z.string()}).strict(),d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().max(1e3).optional(),isRequired:d.z.boolean(),isSecret:d.z.boolean()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({variables:d.z.array(d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().max(1e3).optional(),isRequired:d.z.boolean(),isSecret:d.z.boolean()}).strict())}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string()}).strict(),d.z.object({url:d.z.string().url(),state:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),provider:d.z.enum([`github`,`gitlab`])}).strict(),d.z.object({redirectUri:d.z.string().url()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({code:d.z.string().min(1),state:d.z.string().min(1)}).strict();var dr=d.z.object({id:d.z.string(),organizationId:d.z.string(),provider:d.z.enum([`github`,`gitlab`]),scopes:d.z.array(d.z.string()),metadata:d.z.object({}).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(dr),d.z.object({});var fr=d.z.object({id:d.z.number(),name:d.z.string(),fullName:d.z.string(),cloneUrl:d.z.string(),sshUrl:d.z.string(),defaultBranch:d.z.string(),private:d.z.boolean(),owner:d.z.object({login:d.z.string(),avatarUrl:d.z.string().nullable()}).strict(),description:d.z.string().nullable(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(fr),total:d.z.number()}).strict();var pr=d.z.object({type:d.z.enum([`all`,`owner`,`public`,`private`,`member`]),sort:d.z.enum([`created`,`updated`,`pushed`,`full_name`]),direction:d.z.enum([`asc`,`desc`]),per_page:d.z.number().min(1).max(100),page:d.z.number().min(1)}).strict(),mr=d.z.object({name:d.z.string(),protected:d.z.boolean()}).strict();d.z.object({items:d.z.array(mr),total:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),owner:d.z.string().min(1),repo:d.z.string().min(1)}).strict();var hr=d.z.object({per_page:d.z.number().min(1).max(100),page:d.z.number().min(1)}).strict(),gr=d.z.object({id:d.z.string(),name:d.z.string(),type:d.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:d.z.string().optional(),version:d.z.string().optional(),metadata:d.z.object({}).optional(),is_active:d.z.boolean(),last_seen_at:d.z.string().datetime().optional(),created_at:d.z.string().datetime(),updated_at:d.z.string().datetime(),agentTypes:d.z.array(d.z.object({agentTypeId:d.z.string(),name:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),executable:d.z.string(),defaultArgs:d.z.string().nullable(),isEnabled:d.z.boolean(),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict()).optional(),activeDaemon:d.z.object({id:d.z.string(),status:d.z.string(),lastHeartbeat:d.z.string().datetime(),isActive:d.z.boolean()}).strict().nullable().optional()}).strict();d.z.object({devices:d.z.array(gr),total:d.z.number()}).strict(),d.z.object({name:d.z.string().min(1),deviceGuid:d.z.string().min(1).optional(),type:d.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:d.z.string().optional(),version:d.z.string().optional(),metadata:d.z.object({}).optional(),agentTypes:d.z.array(d.z.object({agentType:d.z.string().min(1),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict()).optional()}).strict(),d.z.object({name:d.z.string().min(1).optional(),metadata:d.z.object({}).optional(),is_active:d.z.boolean().optional()}).strict();var _r=d.z.object({id:d.z.string(),deviceId:d.z.string(),agentTypeId:d.z.string(),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean(),createdAt:d.z.string().datetime(),updatedAt:d.z.string().datetime()}).strict();d.z.object({items:d.z.array(_r),total:d.z.number()}).strict();var vr=d.z.object({deviceId:d.z.string().optional(),agentTypeId:d.z.string().optional(),hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional(),limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}).strict();d.z.object({deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict(),d.z.object({hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional()}).strict(),d.z.object({hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional()}).strict();var yr=d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),emailVerified:d.z.boolean(),image:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),twoFactorEnabled:d.z.boolean().nullable(),lastLoginMethod:d.z.string().nullable()}).strict(),br=d.z.object({id:d.z.string(),organizationId:d.z.string(),userId:d.z.string(),role:d.z.string(),createdAt:d.z.string(),description:d.z.string().nullable(),prompt:d.z.string().nullable()}).strict(),xr=d.z.object({user:yr,member:br}).strict();d.z.object({members:d.z.array(xr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Sr=d.z.object({limit:d.z.number().min(1).max(100).int().describe(`Max results`),offset:d.z.number().min(0).max(9007199254740991).int().describe(`Result offset`),sortBy:d.z.enum([`createdAt`,`name`,`email`]),sortDirection:d.z.enum([`asc`,`desc`]),filterField:d.z.enum([`role`,`createdAt`]).optional(),filterOperator:d.z.enum([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`nin`,`contains`]).optional(),filterValue:d.z.string().optional()}).strict();d.z.object({created:d.z.array(xr),errors:d.z.array(d.z.object({name:d.z.string(),error:d.z.string()}).strict()).optional()}).strict();var Cr=d.z.object({email:d.z.string().email().optional().describe(`Existing user email`),name:d.z.string().min(1).max(255).describe(`Agent member name`),description:d.z.string().optional().describe(`Agent description`),prompt:d.z.string().optional().describe(`Agent prompt`)}).strict();d.z.object({agents:d.z.array(Cr)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),description:d.z.string().optional(),prompt:d.z.string().optional()}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict();var wr=d.z.object({id:d.z.string(),teamId:d.z.string(),userId:d.z.string(),createdAt:d.z.string(),user:d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),image:d.z.string().nullable().optional()}).strict().optional()}).strict();d.z.object({members:d.z.array(wr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1)}).strict();var Tr=d.z.object({limit:d.z.number().min(1).max(100).int(),offset:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({userId:d.z.string().min(1)}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1),userId:d.z.string().min(1)}).strict();var Er=d.z.object({id:d.z.string(),teamId:d.z.string(),projectId:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({projects:d.z.array(Er),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1)}).strict();var Dr=d.z.object({limit:d.z.number().min(1).max(100).int(),offset:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({projectId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1),projectId:d.z.string().min(1)}).strict();var Or=d.z.object({id:d.z.string(),key:d.z.string().optional().describe(`Only returned on creation`),name:d.z.string().optional(),prefix:d.z.string().optional(),start:d.z.string().optional().describe(`First characters of the key`),referenceId:d.z.string(),expiresAt:d.z.string().optional(),createdAt:d.z.string(),lastRequest:d.z.string().optional(),remaining:d.z.number().optional(),rateLimitEnabled:d.z.boolean(),permissions:d.z.object({}).optional(),metadata:d.z.object({}).optional()}).strict();d.z.object({name:d.z.string().min(1).max(255).optional().describe(`Optional name for the API key`),expiresIn:d.z.number().optional().describe(`Expiration time in seconds`),userId:d.z.string().optional().describe(`Optional user ID - defaults to authenticated user if not provided`),prefix:d.z.string().optional().describe(`Prefix for the API key`),remaining:d.z.number().optional().describe(`Number of requests remaining`),metadata:d.z.object({}).optional().describe(`Additional metadata for the API key`),refillAmount:d.z.number().optional().describe(`Amount to refill on interval`),refillInterval:d.z.number().optional().describe(`Refill interval in milliseconds`),rateLimitTimeWindow:d.z.number().optional().describe(`Rate limit time window in ms`),rateLimitMax:d.z.number().optional().describe(`Maximum requests in time window`),rateLimitEnabled:d.z.boolean().optional().describe(`Enable rate limiting`),permissions:d.z.object({}).optional().describe(`Permissions for the API key`)}).strict(),d.z.object({items:d.z.array(Or),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var kr=d.z.object({userId:d.z.string().optional().describe(`Filter by user ID`),includeExpired:d.z.boolean().optional().describe(`Include expired keys`),limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`lastRequest`]),order:d.z.enum([`asc`,`desc`])}).strict();d.z.object({id:d.z.string()}).strict();var Ar=d.z.object({id:d.z.string(),activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]),title:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),projectId:d.z.string().nullable(),taskId:d.z.string().nullable(),memberId:d.z.string().nullable(),agentSessionId:d.z.string().nullable(),deviceId:d.z.string().nullable(),daemonId:d.z.string().nullable(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().nullable(),ipAddress:d.z.string().nullable(),userAgent:d.z.string().nullable(),createdAt:d.z.string()}).strict();d.z.object({items:d.z.array(Ar),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict();var jr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]).optional(),projectId:d.z.string().optional(),taskId:d.z.string().optional(),memberId:d.z.string().optional(),agentSessionId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),sort:d.z.enum([`createdAt`,`activityType`,`title`]),order:d.z.enum([`asc`,`desc`]),search:d.z.string().optional()}).strict(),Mr=d.z.object({activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]),title:d.z.string().min(1),description:d.z.string().optional(),projectId:d.z.string().optional(),taskId:d.z.string().optional(),memberId:d.z.string().optional(),agentSessionId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().optional(),ipAddress:d.z.string().optional(),userAgent:d.z.string().optional()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),activityId:d.z.string().min(1)}).strict(),d.z.object({title:d.z.string().min(1).optional(),description:d.z.string().optional(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().optional()}).strict(),d.z.object({ok:d.z.boolean()}).strict(),d.z.object({kind:d.z.enum([`feedback`,`content_report`,`user_report`]),subject:d.z.string().min(2).max(120),message:d.z.string().min(10).max(4e3),targetType:d.z.enum([`task`,`comment`,`artifact`,`member`,`project`,`workspace`]).optional(),targetId:d.z.string().min(1).max(160).optional(),reportedMemberId:d.z.string().min(1).max(160).optional(),muteRequested:d.z.boolean().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),taskId:d.z.string().min(1).describe(`Task ID or slug`)}).strict();var Nr=d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),statusId:d.z.string(),assigneeId:d.z.string().nullable(),creatorId:d.z.string(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),priority:d.z.enum([`low`,`medium`,`high`]),dueDate:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),tags:d.z.array(d.z.string()).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),status:d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string().nullable()}).strict().nullable().optional(),assignee:d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),role:d.z.string()}).strict().nullable().optional(),workUnit:d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),type:d.z.string().nullable(),priority:d.z.string().nullable(),status:d.z.string().nullable()}).strict().nullable().optional()}).strict();d.z.object({items:d.z.array(Nr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Pr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search tasks`),sort:d.z.enum([`createdAt`,`updatedAt`,`title`,`position`,`priority`,`dueDate`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`),columnId:d.z.string().optional(),statusId:d.z.string().optional(),statusIds:d.z.array(d.z.string()).optional().describe(`Comma-separated status IDs`),workUnitId:d.z.string().optional().describe(`Work unit ID`),assigneeId:d.z.string().optional().describe(`Assignee member ID`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),projectId:d.z.string().optional().describe(`Project ID`),tags:d.z.array(d.z.string()).optional().describe(`Comma-separated tags`),statusFilter:d.z.enum([`active`,`all`]).describe(`Status filter`)}).strict(),Fr=d.z.object({id:d.z.string(),name:d.z.string(),role:d.z.string(),prompt:d.z.string().nullable()}).strict().nullable();d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),statusId:d.z.string(),assigneeId:d.z.string().nullable(),creatorId:d.z.string(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),priority:d.z.enum([`low`,`medium`,`high`]),dueDate:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),tags:d.z.array(d.z.string()).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),status:d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string().nullable()}).strict().nullable().optional(),assignee:Fr,workUnit:d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),type:d.z.string().nullable(),priority:d.z.string().nullable(),status:d.z.string().nullable()}).strict().nullable().optional()}).strict();var Ir=d.z.object({title:d.z.string().min(1).max(255).optional().describe(`Task title`),slug:d.z.string().optional().describe(`Task slug`),description:d.z.string().nullable().optional(),workUnitId:d.z.string().nullable().optional(),statusId:d.z.string().min(1).optional(),assigneeId:d.z.string().nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:d.z.string().nullable().optional(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),tags:d.z.array(d.z.string()).nullable().nullable().optional()}).strict(),Lr=d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),size:d.z.number(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Lr),total:d.z.number()}).strict();var Rr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}).strict();d.z.object({url:d.z.string(),expiresIn:d.z.number()}).strict();var zr=d.z.object({key:d.z.string().min(1)}).strict(),Br=d.z.object({x:d.z.number().min(0).max(1).describe(`Left edge as fraction 0-1`),y:d.z.number().min(0).max(1).describe(`Top edge as fraction 0-1`),width:d.z.number().min(0).max(1).describe(`Width as fraction 0-1`),height:d.z.number().min(0).max(1).describe(`Height as fraction 0-1`)}).strict();d.z.object({action:d.z.union([d.z.string(),d.z.string()]),artifactId:d.z.string().min(1),clip:Br.optional()}).strict(),d.z.object({action:d.z.union([d.z.string(),d.z.string(),d.z.string()]),artifactId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),statusId:d.z.string().min(1)}).strict();var Vr=d.z.object({taskIds:d.z.array(d.z.string().min(1))}).strict(),Hr=d.z.object({id:d.z.string(),taskId:d.z.string(),memberId:d.z.string(),assigneeId:d.z.string().nullable(),content:d.z.string(),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),member:d.z.object({id:d.z.string(),name:d.z.string().nullable(),email:d.z.string()}).strict().nullable(),assignee:d.z.object({id:d.z.string(),name:d.z.string().nullable(),email:d.z.string()}).strict().nullable()}).strict(),Ur=d.z.object({assigneeId:d.z.string().nullable().nullable().optional(),content:d.z.string().min(1).max(1e4).describe(`Comment content`),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({items:d.z.array(Hr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Wr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),sort:d.z.enum([`createdAt`,`updatedAt`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),taskId:d.z.string().min(1).describe(`Task ID or slug`),commentId:d.z.string().min(1).describe(`Comment ID`)}).strict();var Gr=d.z.object({assigneeId:d.z.string().nullable().nullable().optional(),content:d.z.string().min(1).max(1e4).optional().describe(`Comment content`),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({projectId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),workUnitId:d.z.string().min(1).describe(`Work unit ID or slug`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`)}).strict(),d.z.object({title:d.z.string().min(1).max(255).describe(`Work unit title`),slug:d.z.string().optional().describe(`Work unit slug`),description:d.z.string().nullable().optional(),projectId:d.z.string().min(1).optional(),parentWorkUnitId:d.z.string().nullable().optional(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:d.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:d.z.string().nullable().optional(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:d.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:d.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:d.z.string().nullable().optional(),targetDate:d.z.string().nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({items:d.z.array(Qn),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Kr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search work units`),sort:d.z.enum([`createdAt`,`updatedAt`,`title`,`priority`,`targetDate`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`),type:d.z.enum([`epic`,`feature`,`initiative`]).optional().describe(`Work unit type`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Work unit priority`),statuses:d.z.array(d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`])).optional().describe(`Comma-separated work unit statuses`),statusId:d.z.string().optional().describe(`Kanban status ID`),excludeStatus:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).optional().describe(`Exclude status`),ownerId:d.z.string().optional().describe(`Owner member ID`),parentWorkUnitId:d.z.string().optional().describe(`Parent work unit ID`)}).strict();d.z.object({progress:d.z.number().describe(`Overall progress percentage (0-100)`),completedTasks:d.z.number().describe(`Number of completed direct tasks`),totalTasks:d.z.number().describe(`Total number of direct tasks`),completedChildWorkUnits:d.z.number().describe(`Number of completed child work units`),totalChildWorkUnits:d.z.number().describe(`Total number of child work units`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),taskId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`)}).strict();var qr=d.z.object({title:d.z.string().min(1).max(255).describe(`Task title`),slug:d.z.string().optional().describe(`Task slug`),description:d.z.string().nullable().optional(),projectId:d.z.string().min(1).optional(),workUnitId:d.z.string().nullable().optional(),statusId:d.z.string().min(1).optional(),assigneeId:d.z.string().nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:d.z.string().nullable().optional(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),tags:d.z.array(d.z.string()).nullable().nullable().optional()}).strict(),Jr=d.z.object({columnId:d.z.string().min(1),position:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1)}).strict();var Yr=d.z.object({sessionId:d.z.string().optional(),transportType:d.z.string().optional()}).strict(),Xr=d.z.object({id:d.z.string(),environmentId:d.z.string(),key:d.z.string(),value:d.z.string(),description:d.z.string().nullable(),isSecret:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(Xr),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1)}).strict(),d.z.object({}),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1),key:d.z.string().min(1)}).strict(),d.z.object({value:d.z.string().min(1),description:d.z.string().optional(),isSecret:d.z.boolean()}).strict(),d.z.object({entries:d.z.array(d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().optional(),isSecret:d.z.boolean()}).strict())}).strict();var Zr=d.z.object({id:d.z.string(),projectId:d.z.string(),name:d.z.string(),key:d.z.string(),type:d.z.string(),description:d.z.string().nullable(),isDefault:d.z.boolean(),permissions:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(Zr);var Qr=d.z.object({read:d.z.array(d.z.string()),write:d.z.array(d.z.string())}).strict();d.z.object({name:d.z.string().min(1).max(255),key:d.z.string().min(1).max(255),type:d.z.enum([`development`,`staging`,`production`,`custom`]),description:d.z.string().nullable().optional(),isDefault:d.z.boolean(),permissions:Qr.optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),key:d.z.string().min(1).max(255).optional(),type:d.z.enum([`development`,`staging`,`production`,`custom`]).optional(),description:d.z.string().nullable().optional(),isDefault:d.z.boolean().optional(),permissions:Qr.optional()}).strict(),d.z.object({message:d.z.string()}).strict();var $r=d.z.object({id:d.z.string(),organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),deviceId:d.z.string().nullable(),daemonId:d.z.string().nullable(),name:d.z.string(),status:d.z.enum([`running`,`completed`,`failed`]),contextData:d.z.string().nullable(),error:d.z.string().nullable(),startedAt:d.z.string(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),ei=d.z.object({id:d.z.string(),name:d.z.string(),startedAt:d.z.string()}).strict();d.z.object({error:d.z.string(),holder:ei}).strict(),d.z.object({name:d.z.string().min(1),workUnitId:d.z.string().optional(),taskId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),contextData:d.z.string().optional()}).strict(),d.z.object({items:d.z.array($r),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var ti=d.z.object({status:d.z.enum([`running`,`completed`,`failed`]).optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),limit:d.z.number().min(1).max(100).optional(),offset:d.z.number().min(0).optional()}).strict(),ni=d.z.object({workUnitId:d.z.string().optional(),taskId:d.z.string().optional()}).strict();d.z.object({id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).optional(),contextData:d.z.string().nullable().optional()}).strict(),d.z.object({status:d.z.enum([`completed`,`failed`]),error:d.z.string().optional()}).strict();var ri=d.z.enum([`work-unit`,`task`]),ii=d.z.object({id:d.z.string(),kind:ri,slug:d.z.string(),title:d.z.string(),description:d.z.string().nullable(),status:d.z.string(),priority:d.z.string().nullable(),createdAt:d.z.string(),payload:d.z.object({})}).strict();d.z.object({items:d.z.array(ii)}).strict();var ai=d.z.object({jobKind:ri,jobId:d.z.string().min(1),format:d.z.string()}).strict();d.z.object({claimed:d.z.boolean(),workflowId:d.z.string().optional(),job:ii.nullable().optional(),holder:d.z.object({id:d.z.string(),name:d.z.string(),deviceId:d.z.string().nullable(),startedAt:d.z.string()}).strict().optional()}).strict(),d.z.object({jobKind:ri,jobId:d.z.string().min(1),name:d.z.string().min(1),deviceId:d.z.string().optional()}).strict(),d.z.object({released:d.z.boolean(),workflowId:d.z.string(),status:d.z.enum([`completed`,`failed`]),job:ii.nullable()}).strict(),d.z.object({workflowId:d.z.string().min(1),status:d.z.enum([`completed`,`failed`]),error:d.z.string().optional()}).strict();var oi=d.z.object({key:d.z.string(),name:d.z.string(),color:d.z.string(),position:d.z.number()}).strict(),si=d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string(),icon:d.z.string(),color:d.z.string(),isBuiltIn:d.z.boolean(),statusCount:d.z.number(),starterTaskCount:d.z.number(),statuses:d.z.array(oi)}).strict();d.z.object({templates:d.z.array(si)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1).describe(`Project ID or slug`)}).strict(),d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),key:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),ownerId:d.z.string(),path:d.z.string().nullable(),templateId:d.z.string().nullable(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),color:d.z.string().nullable(),icon:d.z.string().nullable(),isArchived:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({error:d.z.string(),message:d.z.string(),feature:d.z.enum([`seats`,`projects`,`apiKeys`,`mcpServers`]),plan:d.z.string(),limit:d.z.number(),used:d.z.number(),upgradeRequired:d.z.boolean()}).strict();var ci=d.z.object({name:d.z.string().min(1).max(255).describe(`Project name`),slug:d.z.string().optional().describe(`Project slug`),description:d.z.string().nullable().optional(),organizationId:d.z.string().optional(),path:d.z.string().nullable().optional(),templateId:d.z.string().nullable().optional(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),color:d.z.string().nullable().optional(),icon:d.z.string().nullable().optional()}).strict(),li=d.z.object({id:d.z.string(),title:d.z.string(),value:d.z.number(),change:d.z.string(),trend:d.z.enum([`up`,`down`,`neutral`]),period:d.z.string()}).strict();d.z.object({activeProjects:d.z.number(),tasksInProgress:d.z.number(),completedTasks:d.z.number(),blockedTasks:d.z.number(),stats:d.z.array(li)}).strict();var ui=d.z.object({period:d.z.enum([`7`,`30`,`90`])}).strict();d.z.object({items:d.z.array(er),total:d.z.number(),limit:d.z.number().optional(),offset:d.z.number().optional()}).strict();var di=d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),role:d.z.string()}).strict().nullable(),fi=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),key:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),path:d.z.string().nullable(),templateId:d.z.string().nullable(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),color:d.z.string().nullable(),icon:d.z.string().nullable(),isArchived:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string(),owner:di}).strict();d.z.object({items:d.z.array(fi),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var pi=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search projects`),sort:d.z.enum([`createdAt`,`updatedAt`,`name`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict(),mi=d.z.object({name:d.z.string().min(1).max(255).optional().describe(`Project name`),slug:d.z.string().optional().describe(`Project slug`),description:d.z.string().nullable().optional(),organizationId:d.z.string().optional(),path:d.z.string().nullable().optional(),templateId:d.z.string().nullable().optional(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),color:d.z.string().nullable().optional(),icon:d.z.string().nullable().optional(),isArchived:d.z.boolean().optional().describe(`Whether project is archived`)}).strict(),W=d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),status:d.z.enum([`pending`,`uploaded`]),size:d.z.number().nullable(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),labels:d.z.array(d.z.string()).nullable().optional(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(W),total:d.z.number()}).strict(),d.z.object({url:d.z.string(),expiresIn:d.z.number()}).strict();var hi=d.z.object({key:d.z.string().min(1)}).strict();d.z.object({url:d.z.string(),key:d.z.string(),artifact:W}).strict();var gi=d.z.object({filename:d.z.string().min(1),contentType:d.z.string().optional()}).strict();d.z.object({artifact:W}).strict(),d.z.object({key:d.z.string().min(1)}).strict(),d.z.object({items:d.z.array(W)}).strict();var _i=d.z.object({key:d.z.string().min(1),name:d.z.string().min(1),status:d.z.enum([`pending`,`uploaded`]),size:d.z.number().nullable().optional(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),labels:d.z.array(d.z.string()).nullable().optional()}).strict();d.z.object({items:d.z.array(_i)}).strict();var vi=d.z.object({key:d.z.string().min(1)}).strict();d.z.object({balanceCents:d.z.number(),monthlyIncludedMinutes:d.z.number(),usedIncludedMinutes:d.z.number(),includedMinutesRemaining:d.z.number(),autoRechargeEnabled:d.z.boolean(),autoRechargeThresholdCents:d.z.number(),autoRechargeAmountCents:d.z.number(),overdraftLimitCents:d.z.number(),includedMinutesResetAt:d.z.string().nullable()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict(),d.z.object({checkoutUrl:d.z.string().url(),sessionId:d.z.string()}).strict(),d.z.object({amountCents:d.z.number().min(500).max(1e5),successUrl:d.z.string().url(),cancelUrl:d.z.string().url()}).strict(),d.z.object({enabled:d.z.boolean(),thresholdCents:d.z.number().min(0).max(1e5).optional(),amountCents:d.z.number().min(500).max(1e5).optional()}).strict();var yi=d.z.object({id:d.z.string(),type:d.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]),amountCents:d.z.number(),balanceAfterCents:d.z.number(),usageMinutes:d.z.number().nullable(),pricePerMinuteCents:d.z.number().nullable(),referenceType:d.z.string().nullable(),referenceId:d.z.string().nullable(),createdAt:d.z.string()}).strict();d.z.object({items:d.z.array(yi),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var bi=d.z.object({limit:d.z.number().min(1).max(100).optional(),offset:d.z.number().min(0).optional(),type:d.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]).optional(),startDate:d.z.string().optional(),endDate:d.z.string().optional()}).strict();d.z.object({periodStart:d.z.string(),periodEnd:d.z.string(),totalMinutes:d.z.number(),includedMinutesUsed:d.z.number(),paidMinutesUsed:d.z.number(),totalChargedCents:d.z.number(),sandboxCount:d.z.number()}).strict();var xi=d.z.object({startDate:d.z.string().min(1),endDate:d.z.string().min(1)}).strict(),Si=d.z.object({planKey:d.z.string(),name:d.z.string(),pricePerSeatCents:d.z.number(),billingInterval:d.z.enum([`month`,`year`]),includedMinutesPerSeat:d.z.number(),stripePriceId:d.z.string().nullable()}).strict();d.z.object({plans:d.z.array(Si)}).strict(),d.z.object({hasSubscription:d.z.boolean(),planKey:d.z.string().nullable(),planName:d.z.string().nullable(),seatCount:d.z.number(),memberCount:d.z.number(),currentPeriodStart:d.z.string().nullable(),currentPeriodEnd:d.z.string().nullable(),cancelAtPeriodEnd:d.z.boolean(),stripeSubscriptionId:d.z.string().nullable(),includedMinutes:d.z.number(),usedMinutes:d.z.number(),remainingMinutes:d.z.number()}).strict(),d.z.object({redirectUrl:d.z.string().nullable(),sessionId:d.z.string().nullable()}).strict(),d.z.object({planKey:d.z.string().min(1),discountCode:d.z.string().optional()}).strict(),d.z.object({currentSeats:d.z.number(),newSeats:d.z.number(),amountDue:d.z.number().nullable(),subtotal:d.z.number().nullable(),total:d.z.number().nullable(),prorationDate:d.z.number().nullable()}).strict();var Ci=d.z.object({seatCount:d.z.number().min(1)}).strict();d.z.object({success:d.z.boolean(),newSeatCount:d.z.number(),includedMinutes:d.z.number()}).strict(),d.z.object({seatCount:d.z.number().min(1)}).strict(),d.z.object({success:d.z.boolean(),cancelAtPeriodEnd:d.z.boolean(),periodEnd:d.z.string().nullable()}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict(),d.z.object({plan:d.z.string(),projects:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),apiKeys:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),mcpServers:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),seats:d.z.object({used:d.z.number(),limit:d.z.number()}).strict()}).strict();var wi=d.z.object({id:d.z.string(),agentSessionId:d.z.string(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),projectId:d.z.string(),organizationId:d.z.string(),sandboxInstanceId:d.z.string().nullable(),containerId:d.z.string().nullable(),processId:d.z.string().nullable(),status:d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),autoTerminate:d.z.boolean(),timeoutMinutes:d.z.number().min(-9007199254740991).max(9007199254740991).int(),command:d.z.string(),workingDirectory:d.z.string().nullable(),exitCode:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),previewUrl:d.z.string().nullable(),errorMessage:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),agentSession:d.z.object({id:d.z.string(),status:d.z.string(),currentAgentType:d.z.string().nullable()}).strict().nullable().optional(),workUnit:d.z.object({id:d.z.string(),title:d.z.string(),status:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string()}).strict().nullable().optional()}).strict();d.z.object({items:d.z.array(wi),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict();var Ti=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),status:d.z.union([d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),d.z.array(d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]))]).optional(),projectId:d.z.string().optional(),workUnitId:d.z.string().optional(),agentSessionId:d.z.string().optional()}).strict();d.z.object({id:d.z.string(),status:d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),sandboxInstanceId:d.z.string().nullable(),containerId:d.z.string().nullable(),previewUrl:d.z.string().nullable(),exitCode:d.z.number().nullable(),errorMessage:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1)}).strict(),d.z.object({message:d.z.string(),sandboxId:d.z.string(),status:d.z.string()}).strict(),d.z.object({message:d.z.string(),port:d.z.number(),url:d.z.string().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1),port:d.z.number().min(1024).max(65535).int()}).strict(),d.z.object({message:d.z.string(),port:d.z.number()}).strict();var Ei=d.z.object({port:d.z.number(),url:d.z.string().optional()}).strict();d.z.object({ports:d.z.array(Ei)}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({received:d.z.boolean(),duplicate:d.z.boolean().optional(),ignored:d.z.boolean().optional()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({priceKey:d.z.string().min(1).describe(`Stripe price lookup key`),mode:d.z.enum([`payment`,`subscription`]).describe(`Checkout mode`),discountCode:d.z.string().optional().describe(`Optional discount/promotion code`)}).strict(),d.z.object({redirectUrl:d.z.string().url().describe(`URL to redirect user to Stripe checkout`)}).strict(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({sessionId:d.z.string().min(1),organizationId:d.z.string()}),d.z.object({id:d.z.string().describe(`Session ID`),status:d.z.string().nullable().describe(`Session status`),payment_status:d.z.string().describe(`Payment status`),invoice:d.z.object({}).nullable().describe(`Invoice details`)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({url:d.z.string().url().describe(`URL to Stripe billing portal`)}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({id:d.z.string().describe(`Customer ID`),customerId:d.z.string().nullable().describe(`Stripe customer ID (null for free tier without payment info)`),organizationId:d.z.string().describe(`Organization ID`),email:d.z.string().nullable().describe(`Customer email`),name:d.z.string().nullable().describe(`Customer name`),subscriptionId:d.z.string().nullable().describe(`Active subscription ID`),subscriptionStatus:d.z.string().nullable().describe(`Current subscription status`),planKey:d.z.enum([`free`,`basic_monthly`,`basic_yearly`]).describe(`Current subscription plan`),seatCount:d.z.number().describe(`Number of seats in subscription`),currentPeriodEnd:d.z.string().nullable().describe(`End date of current billing period (renewal date)`),cancelAtPeriodEnd:d.z.boolean().describe(`Whether subscription is scheduled to cancel at period end`),createdAt:d.z.string().describe(`Customer creation date`),updatedAt:d.z.string().describe(`Customer last update date`)}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({received:d.z.boolean(),duplicate:d.z.boolean().optional(),ignored:d.z.boolean().optional()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...qn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...Yn.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),serverName:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...U.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...U.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...U.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...U.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Di=d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),Oi=d.z.object({...Kr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var ki=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict();var Ai=d.z.object({organizationId:d.z.string()});d.z.object({...tr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...rr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...ar.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...or.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string(),type:d.z.string()}),d.z.object({...lr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string(),type:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...pr.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),owner:d.z.string(),repo:d.z.string()}),d.z.object({...hr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({...vr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...vr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict();var ji=d.z.object({organizationId:d.z.string().min(1)}),Mi=d.z.object({...Sr.shape});d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.object({...Tr.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string(),userId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.object({...Dr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...kr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...jr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({stats:d.z.array(d.z.object({activityType:d.z.string(),count:d.z.number()}).strict()),total:d.z.number()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.array(Mr),d.z.array(Ar),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var Ni=d.z.object({organizationId:d.z.string()}),Pi=d.z.object({...Pr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({period:d.z.enum([`7d`,`30d`,`3m`,`12m`])}),d.z.object({items:d.z.array(d.z.object({period:d.z.string(),aiCompleted:d.z.number(),humanCompleted:d.z.number(),totalTasks:d.z.number(),totalCost:d.z.number()}).strict()),summary:d.z.object({totalCost:d.z.number(),totalTasks:d.z.number(),monthlyGrowth:d.z.number()}).strict()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({...Rr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({...zr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),statusId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict();var Fi=d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),Ii=d.z.object({...Pr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var Li=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ri=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()});d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var zi=d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),Bi=d.z.object({...Wr.shape});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Vi=d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...Yr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),projectId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),projectId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...ti.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...ni.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...ai.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict();var Hi=d.z.object({organizationId:d.z.string()}),Ui=d.z.object({...pi.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...ui.shape}),d.z.object({error:d.z.string()}).strict();var Wi=d.z.object({organizationId:d.z.string(),id:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Gi=d.z.object({organizationId:d.z.string(),id:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...vi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...hi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...gi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...bi.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...xi.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...Ci.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...Ti.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string(),port:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string(),port:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ki=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/members`,{method:`GET`,params:e,query:t})).data,qi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/members/agents`,{method:`POST`,params:e,body:t})).data,Ji=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`GET`,params:e,query:t})).data,Yi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`POST`,params:e,body:t})).data,Xi=async e=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`GET`,params:e})).data,Zi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`PATCH`,params:e,body:t})).data,Qi=async e=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`DELETE`,params:e})).data,$i=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/task-statuses`,{method:`GET`,params:e,query:t})).data,ea=`AGIFLOW_ORGANIZATION_ID`,ta=`AGIFLOW_PROJECT_ID`,na=`AGIFLOW_TASK_ID`,ra=`AGIFLOW_WORK_UNIT_ID`,ia=d.z.object({format:d.z.literal(`json`).default(`json`).describe(`Output format`)}),aa=d.z.object({tasksJson:d.z.string().min(1).describe(`Array of task objects or { "tasks": [...] }`)}),oa=d.z.object({workUnitsJson:d.z.string().min(1).describe(`Array of work unit objects or { "workUnits": [...] }`)}),sa=d.z.object({status:d.z.string().optional().describe(`Task status name, key, or ID`),assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:d.z.string().optional().describe(`Work unit ID`),acceptanceCriteriaJson:d.z.string().optional().describe(`Acceptance criteria JSON`),testCasesJson:d.z.string().optional().describe(`Test cases JSON`),devInfoJson:d.z.string().optional().describe(`Development info JSON`)}),ca=d.z.object({status:d.z.string().optional().describe(`Comma-separated status names, keys, or IDs`),assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:d.z.string().optional().describe(`Work unit ID`)}),la=d.z.object({devInfoJson:d.z.string().optional().describe(`Development info JSON`),testCasesJson:d.z.string().optional().describe(`Test cases JSON`)}),ua=d.z.object({assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),infoJson:d.z.string().optional().describe(`Comment info JSON`)}),G=()=>({name:`org`,source:`organizationId`,envVar:ea}),K=(e=`projectId`)=>({name:`project`,source:e,valueName:`projectIdOrSlug`,envVar:ta}),q=()=>({name:`task`,source:`taskId`,valueName:`taskIdOrSlug`,envVar:na}),da=()=>({name:`workUnit`,source:`workUnitId`,flag:`--work-unit`,valueName:`workUnitIdOrSlug`,envVar:ra}),J=(...e)=>e,fa=(e=[],t={})=>[{name:`limit`,required:!1,defaultValue:t.limit??`20`},{name:`offset`,required:!1,defaultValue:t.offset??`0`},{name:`search`,required:!1},{name:`sort`,required:!1,defaultValue:t.sort??`createdAt`},{name:`order`,required:!1,defaultValue:t.order??`desc`},...e.map(e=>({...e,required:e.required??!1}))],Y=(e,t)=>_n.for(e).fromSchemaGroups([...t,{schema:ia,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),X=e=>{let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t},pa=(e,t)=>{let n=e&&typeof e==`object`&&t in e?e[t]:e;if(!Array.isArray(n))throw Error(`Expected ${t} JSON to be an array or an object containing ${t}.`);return n.map((e,n)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t}[${n}] must be an object.`);return e})},Z=class extends F{async resolveOrgOption(e){return this.resolveOrganizationId(e.org)}async resolveProjectOption(e){return this.resolveProjectIdOption(e.project)}async resolveProjectRoute(e){let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e);return{org:t,projectId:await this.resolveProjectId(t,n)}}async resolveTaskOption(e){return this.resolveTaskIdOption(e.task)}async resolveWorkUnitOption(e){return this.resolveWorkUnitIdOption(e.workUnit)}async resolveProjectId(e,t){return(await I({organizationId:e,id:t})).id}async resolveStatusId(e,t,n){if(n){let r=await Mt({organizationId:e,id:n}),i=this.findStatus(r.items??[],t);if(i)return i.id}let r=await $i({organizationId:e}),i=this.findStatus(r.items??[],t);if(!i)throw Error(`Task status "${t}" was not found.`);return i.id}findStatus(e,t){let n=t.toLowerCase();return e.find(e=>e.id===t||e.key.toLowerCase()===n||e.name.toLowerCase()===n)}async resolveMemberId(e,t){if(!t)return;let n=await Ki({organizationId:e},{limit:100,offset:0,sortBy:`createdAt`,sortDirection:`desc`}),r=t.toLowerCase(),i=n.members.find(e=>{let n=e.member?.id,i=e.user?.name?.toLowerCase(),a=e.user?.email?.toLowerCase();return n===t||i===r||a===r});if(!i?.member?.id)throw Error(`Member "${t}" was not found.`);return i.member.id}baseListOptions(e){return X({limit:this.parseNumber(e.limit,20),offset:this.parseNumber(e.offset,0),sort:e.sort,order:e.order,search:e.search})}},ma=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`project`).description(`Project JSON commands`);Y(t.command(`create`).description(`Create a project`),J({schema:Hi,options:[G()]},{schema:ci,options:[{name:`name`},{name:`description`},{name:`slug`},{name:`path`},{name:`color`},{name:`icon`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List projects`),J({schema:Hi,options:[G()]},{schema:Ui,options:fa()})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a project by ID or slug`),J({schema:Gi,options:[G(),K(`projectIdOrSlug`)]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a project`),J({schema:Gi,options:[G(),K(`projectIdOrSlug`)]},{schema:mi,options:[{name:`name`},{name:`description`},{name:`slug`},{name:`path`},{name:`color`},{name:`icon`},{name:`archived`,source:`isArchived`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a project`),J({schema:Gi,options:[G(),K(`projectIdOrSlug`)]})).action(e=>this.delete(e)),Y(t.command(`status`).description(`Project status commands`).command(`list`).description(`List project statuses`),J({schema:Wi,options:[G(),K(`id`)]})).action(e=>this.statusList(e))}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=X({name:e.name,description:e.description,slug:e.slug,path:e.path,color:e.color,icon:e.icon}),r=await jt({organizationId:t},n);this.printJson({project:r})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=this.baseListOptions(e),r=await At({organizationId:t},n);this.printJson({projects:r.items,total:r.total,limit:r.limit,offset:r.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await I({organizationId:await this.resolveOrgOption(e),id:await this.resolveProjectOption(e)});this.printJson({project:t})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await this.resolveProjectId(t,n),i=X({name:e.name,description:e.description,slug:e.slug,path:e.path,color:e.color,icon:e.icon,isArchived:e.archived===!0?!0:void 0}),a=await Nt({organizationId:t,id:r},i);this.printJson({project:a})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await this.resolveProjectId(t,n);await Pt({organizationId:t,id:r}),this.printJson({deleted:!0,project:{id:r}})})}async statusList(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await Mt({organizationId:t,id:await this.resolveProjectId(t,n)});this.printJson({statuses:r.items,total:r.total})})}};ma=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ma);var ha=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task`).description(`Task JSON commands`),n=[G(),K()],r=[{name:`title`},{name:`description`},{name:`priority`},{name:`position`},{name:`dueDate`,flag:`--due-date`},{name:`tags`}],i=[{name:`status`},{name:`assignee`},{name:`workUnit`,flag:`--work-unit`},{name:`acceptanceCriteriaJson`,flag:`--acceptance-criteria-json`},{name:`testCasesJson`,flag:`--test-cases-json`},{name:`devInfoJson`,flag:`--dev-info-json`}];Y(t.command(`create`).description(`Create a task`),J({schema:Fi,options:n},{schema:qr,options:r},{schema:sa,options:i})).action(e=>this.create(e)),Y(t.command(`batch-create`).description(`Create multiple tasks`),J({schema:Fi,options:n},{schema:aa,options:[{name:`tasksJson`,flag:`--tasks-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project tasks`),J({schema:Fi,options:n},{schema:Ii,options:fa([{name:`statusFilter`,flag:`--status-filter`},{name:`priority`},{name:`tags`}])},{schema:ca,options:[{name:`status`},{name:`assignee`},{name:`workUnit`,flag:`--work-unit`}]})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a task by ID or slug`),J({schema:Li,options:[...n,q()]})).action(e=>this.get(e)),Y(t.command(`active`).description(`List active organization tasks`),J({schema:Ni,options:[G()]},{schema:Pi,options:fa([{name:`project`,source:`projectId`},{name:`priority`},{name:`assigneeId`,flag:`--assignee-id`}])})).action(e=>this.active(e)),Y(t.command(`update`).description(`Update a task`),J({schema:Li,options:[...n,q()]},{schema:Ir,options:r},{schema:sa,options:i})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task`),J({schema:Li,options:[...n,q()]})).action(e=>this.delete(e)),Y(t.command(`reorder`).description(`Reorder tasks within a status`),J({schema:Ni,options:[G()]},{schema:d.z.object({status:d.z.string().min(1).describe(`Status name, key, or ID`)}),options:[{name:`status`}]},{schema:Vr,options:[{name:`taskIds`,flag:`--task-ids`,parse:`csv`}]})).action(e=>this.reorder(e)),Y(t.command(`move`).description(`Move a task to a different column/position`),J({schema:Ri,options:[...n,q()]},{schema:Jr,options:[{name:`column`,source:`columnId`},{name:`position`}]})).action(e=>this.move(e)),Y(t.command(`status`).description(`Task status commands`).command(`list`).description(`List available task statuses`),J({schema:Ai,options:[G()]})).action(e=>this.statusList(e))}async buildTaskPayload(e){let t=typeof e.status==`string`?e.status:void 0,n=typeof e.assignee==`string`?e.assignee:void 0,r=String(e.org),i=typeof e.projectId==`string`?String(e.projectId):void 0,a=t?await this.resolveStatusId(r,t,i):void 0,o=await this.resolveMemberId(r,n);return X({title:e.title,description:e.description,statusId:a,priority:e.priority,position:typeof e.position==`string`?this.parseNumber(e.position,0):e.position,dueDate:e.dueDate,tags:this.parseCsv(typeof e.tags==`string`?e.tags:void 0),assigneeId:o,workUnitId:e.workUnit??e.workUnitId,acceptanceCriteria:this.parseJsonFlag(typeof e.acceptanceCriteriaJson==`string`?e.acceptanceCriteriaJson:void 0,`--acceptance-criteria-json`),testCases:this.parseJsonFlag(typeof e.testCasesJson==`string`?e.testCasesJson:void 0,`--test-cases-json`),devInfo:this.parseJsonFlag(typeof e.devInfoJson==`string`?e.devInfoJson:void 0,`--dev-info-json`)})}async create(e){await this.runJsonOnly(async()=>{if(this.requireJsonFormat(e.format,`task commands`),await this.setupClient(),!e.title)throw Error(`--title is required.`);let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Kt({organizationId:t,projectId:n},await this.buildTaskPayload({...e,org:t,projectId:n}));this.printJson({task:r})})}async batchCreate(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=pa(this.parseJsonFlag(e.tasksJson,`--tasks-json`),`tasks`),i=[];for(let e of r){let r=await Kt({organizationId:t,projectId:n},await this.buildTaskPayload({...e,org:t,projectId:n}));i.push(r)}this.printJson({tasks:i,total:i.length})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=this.parseCsv(e.status),i=r?await Promise.all(r.map(e=>this.resolveStatusId(t,e,n))):void 0,a=await this.resolveMemberId(t,e.assignee),o=X({...this.baseListOptions(e),statusFilter:e.statusFilter,columnId:i?.length===1?i[0]:void 0,statusIds:i,workUnitId:e.workUnit,assigneeId:a,priority:e.priority,tags:this.parseCsv(e.tags)}),s=await Gt({organizationId:t,projectId:n},o);this.printJson({tasks:s.items,total:s.total,limit:s.limit,offset:s.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await qt({organizationId:t,projectId:n,taskId:await this.resolveTaskOption(e)});this.printJson({task:r})})}async active(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=X({...this.baseListOptions(e),statusFilter:`active`,priority:e.priority,assigneeId:e.assigneeId});if(e.project){let r=await Gt({organizationId:t,projectId:await this.resolveProjectId(t,e.project)},n);this.printJson({tasks:r.items,total:r.total,limit:r.limit,offset:r.offset});return}let r=await Vt({organizationId:t},n);this.printJson({tasks:r.items,total:r.total,limit:r.limit,offset:r.offset})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Jt({organizationId:t,projectId:n,taskId:await this.resolveTaskOption(e)},await this.buildTaskPayload({...e,org:t,projectId:n}));this.printJson({task:r})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveTaskOption(e);await Yt({organizationId:t,projectId:n,taskId:r}),this.printJson({deleted:!0,task:{id:r}})})}async reorder(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveStatusId(t,e.status),r=this.parseCsv(e.taskIds);if(!r?.length)throw Error(`--task-ids must contain at least one task ID.`);await Wt({organizationId:t,statusId:n},{taskIds:r}),this.printJson({reordered:!0,statusId:n,taskIds:r})})}async move(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveTaskOption(e);if(!e.column)throw Error(`--column is required.`);let i={columnId:e.column,position:this.parseNumber(e.position,0)},a=await Xt({organizationId:t,projectId:n,taskId:r},i);this.printJson({task:a})})}async statusList(e){await this.runJsonOnly(async()=>{await this.setupClient();let t=await $i({organizationId:await this.resolveOrgOption(e)});if(e.format===`table`){let e=t.items??[],n=[`id`,`key`,`name`],r=e.map(e=>[e.id,e.key,e.name]);console.log(n.join(` `));for(let e of r)console.log(e.join(` `));return}this.printJson({statuses:t.items,total:t.total})})}};ha=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ha);var ga=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`work-unit`).description(`Work unit JSON commands`),n=[G(),K()],r=[{name:`title`},{name:`description`},{name:`type`},{name:`priority`},{name:`status`},{name:`ownerId`,flag:`--owner-id`},{name:`parentWorkUnitId`,flag:`--parent-work-unit-id`},{name:`estimatedEffort`,flag:`--estimated-effort`},{name:`startDate`,flag:`--start-date`},{name:`targetDate`,flag:`--target-date`}];Y(t.command(`batch-create`).description(`Create multiple work units`),J({schema:Di,options:n},{schema:oa,options:[{name:`workUnitsJson`,flag:`--work-units-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project work units`),J({schema:Di,options:n},{schema:Oi,options:fa([{name:`status`,source:`statuses`},{name:`excludeStatus`,flag:`--exclude-status`},{name:`type`},{name:`priority`},{name:`ownerId`,flag:`--owner-id`},{name:`parentWorkUnitId`,flag:`--parent-work-unit-id`}])})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a work unit by ID or slug`),J({schema:ki,options:[...n,da()]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a work unit`),J({schema:ki,options:[...n,da()]},{schema:$n,options:r},{schema:la,options:[{name:`devInfoJson`,flag:`--dev-info-json`},{name:`testCasesJson`,flag:`--test-cases-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a work unit`),J({schema:ki,options:[...n,da()]})).action(e=>this.delete(e)),Y(t.command(`progress`).description(`Get work unit progress`),J({schema:ki,options:[...n,da()]})).action(e=>this.progress(e))}buildPayload(e){return X({title:e.title,description:e.description,type:e.type,priority:e.priority,status:e.status,ownerId:e.ownerId,parentWorkUnitId:e.parentWorkUnitId,estimatedEffort:typeof e.estimatedEffort==`string`?this.parseNumber(e.estimatedEffort,0):e.estimatedEffort,startDate:e.startDate,targetDate:e.targetDate,devInfo:this.parseJsonFlag(typeof e.devInfoJson==`string`?e.devInfoJson:void 0,`--dev-info-json`),testCases:this.parseJsonFlag(typeof e.testCasesJson==`string`?e.testCasesJson:void 0,`--test-cases-json`)})}async batchCreate(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=pa(this.parseJsonFlag(e.workUnitsJson,`--work-units-json`),`workUnits`),i=[];for(let e of r){let r=await Qt({organizationId:t,projectId:n},this.buildPayload(e)),a=Array.isArray(e.taskIds)?e.taskIds.filter(e=>typeof e==`string`):[];for(let e of a)await Jt({organizationId:t,projectId:n,taskId:e},{workUnitId:r.id});i.push(r)}this.printJson({workUnits:i,total:i.length})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=X({...this.baseListOptions(e),statuses:this.parseCsv(e.status),excludeStatus:e.excludeStatus,type:e.type,priority:e.priority,ownerId:e.ownerId,parentWorkUnitId:e.parentWorkUnitId}),i=await Zt({organizationId:t,projectId:n},r);this.printJson({workUnits:i.items,total:i.total,limit:i.limit,offset:i.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await $t({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({workUnit:r})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await en({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)},this.buildPayload(e));this.printJson({workUnit:r})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveWorkUnitOption(e);await tn({organizationId:t,projectId:n,workUnitId:r}),this.printJson({deleted:!0,workUnit:{id:r}})})}async progress(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await nn({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({progress:r})})}};ga=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ga);var _a=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`member`).description(`Agent member JSON commands`);Y(t.command(`list`).description(`List agent members`),J({schema:ji,options:[G()]},{schema:Mi,options:[{name:`limit`,required:!1,defaultValue:`100`},{name:`offset`,required:!1,defaultValue:`0`}]})).action(e=>this.list(e)),Y(t.command(`create`).description(`Create an agent member`),J({schema:ji,options:[G()]},{schema:Cr,options:[{name:`email`},{name:`name`},{name:`description`},{name:`prompt`}]})).action(e=>this.create(e))}normalizeMembers(e){return e.filter(e=>e.member?.role===`agent`)}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`member commands`),await this.setupClient();let t=await Ki({organizationId:await this.resolveOrgOption(e)},{limit:this.parseNumber(e.limit,100),offset:this.parseNumber(e.offset,0),sortBy:`createdAt`,sortDirection:`desc`,filterField:`role`,filterOperator:`eq`,filterValue:`agent`});this.printJson({members:this.normalizeMembers(t.members),total:t.total,limit:t.limit,offset:t.offset})})}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`member commands`),await this.setupClient();let t=await qi({organizationId:await this.resolveOrgOption(e)},{agents:[X({email:e.email,name:e.name,description:e.description,prompt:e.prompt})]});this.printJson({member:t.created[0]??null,errors:t.errors??[]})})}};_a=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],_a);var va=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task-comment`).description(`Task comment JSON commands`),n=[G(),q()];Y(t.command(`create`).description(`Create a task comment`),J({schema:zi,options:n},{schema:Ur,options:[{name:`content`}]},{schema:ua,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List task comments`),J({schema:zi,options:n},{schema:Bi,options:[{name:`limit`,required:!1,defaultValue:`20`},{name:`offset`,required:!1,defaultValue:`0`},{name:`sort`,required:!1,defaultValue:`createdAt`},{name:`order`,required:!1,defaultValue:`asc`}]})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a task comment`),J({schema:Vi,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a task comment`),J({schema:Vi,options:[...n,{name:`comment`,source:`commentId`}]},{schema:Gr,options:[{name:`content`}]},{schema:ua,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task comment`),J({schema:Vi,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.delete(e))}async buildPayload(e){let t=await this.resolveOrgOption(e);return X({content:e.content,assigneeId:await this.resolveMemberId(t,e.assignee),info:this.parseJsonFlag(e.infoJson,`--info-json`)})}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Yi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e)},await this.buildPayload(e));this.printJson({comment:t})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveTaskOption(e),r=this.baseListOptions(e),i=await Ji({organizationId:t,taskId:n},r);this.printJson({comments:i.items,total:i.total,limit:i.limit,offset:i.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Xi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment});this.printJson({comment:t})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Zi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment},await this.buildPayload(e));this.printJson({comment:t})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient(),await Qi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment}),this.printJson({deleted:!0,comment:{id:e.comment}})})}};va=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],va);var Q={AuthCommand:Symbol.for(`CLI.AuthCommand`),WorkflowCommand:Symbol.for(`CLI.WorkflowCommand`),ArtifactCommand:Symbol.for(`CLI.ArtifactCommand`),AutomationCommand:Symbol.for(`CLI.AutomationCommand`),ProjectCommand:Symbol.for(`CLI.ProjectCommand`),TaskCommand:Symbol.for(`CLI.TaskCommand`),WorkUnitCommand:Symbol.for(`CLI.WorkUnitCommand`),MemberCommand:Symbol.for(`CLI.MemberCommand`),TaskCommentCommand:Symbol.for(`CLI.TaskCommentCommand`),VaultCommand:Symbol.for(`CLI.VaultCommand`),AnalyticsCommand:Symbol.for(`CLI.AnalyticsCommand`)},$=new u.Container({parent:w});$.bind(Q.AuthCommand).to(Ge),$.bind(Q.WorkflowCommand).to(kt),$.bind(Q.ArtifactCommand).to(gn),$.bind(Q.AutomationCommand).to(kn),$.bind(Q.ProjectCommand).to(ma),$.bind(Q.TaskCommand).to(ha),$.bind(Q.WorkUnitCommand).to(ga),$.bind(Q.MemberCommand).to(_a),$.bind(Q.TaskCommentCommand).to(va),$.bind(Q.VaultCommand).to(Vn),$.bind(Q.AnalyticsCommand).to(Mn),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return $}});
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./container-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./container-DDrQBLdJ.cjs");exports.CLI_TYPES=e.n,exports.cliContainer=e.t;
|
package/package.json
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require("reflect-metadata/lite");let c=require("commander"),l=require("dotenv");l=s(l,1);let u=require("inversify"),d=require("zod"),f=require("node:fs");f=s(f,1);let p=require("node:path");p=s(p,1);let m=require("pino");m=s(m,1);let h=require("fs");h=s(h,1);let g=require("path");g=s(g,1);let _=require("os");_=s(_,1);let ee=require("crypto"),te=require("child_process");var ne=`.agiflowrc`;function re(e,t=process.cwd(),n=process.env){if(y(n[e]))return!0;if(e===`AGIFLOW_API_KEY`){let e=v(t,n);return!!(ie(n.AGIFLOW_API_KEY_ENV,n)??e.apiKey)}if(e===`AGIFLOW_ORGANIZATION_ID`||e===`AGIFLOW_ORG_ID`){let e=v(t,n);return!!(y(n.AGIFLOW_ORGANIZATION_ID,n.AGIFLOW_ORG_ID)??e.organizationId)}return e===`AGIFLOW_PROJECT_ID`?!!v(t,n).projectId:!1}function v(e=process.cwd(),t=process.env){let n=oe(e);if(!n)return{};let r;try{r=l.default.parse(f.readFileSync(n))}catch{return{}}let i=y(r.AGIFLOW_ORGANIZATION_ID,r.AGIFLOW_ORG_ID),a=y(r.AGIFLOW_PROJECT_ID);return le({apiKey:ie(r.AGIFLOW_API_KEY_ENV,t),backendAgiflowApiEndpoint:y(r.BACKEND_AGIFLOW_API_ENDPOINT),organizationId:i,projectId:a})}function ie(e,t=process.env){let n=ae(e);if(n)return y(t[n])}function ae(e){let t=e?.trim();if(!t)return;let n=/^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/.exec(t);if(n)return n[1];let r=/^\$([A-Za-z_][A-Za-z0-9_]*)$/.exec(t);if(r)return r[1];if(/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))return t}function oe(e){let t=se(e);if(!t)return null;let n=p.default.join(t,ne);return ce(n)?n:null}function se(e){let t=p.default.resolve(e);for(;;){if(ce(p.default.join(t,`.git`)))return t;let e=p.default.dirname(t);if(e===t)return null;t=e}}function y(...e){for(let t of e){let e=t?.trim();if(e)return e}}function ce(e){try{return typeof f.existsSync==`function`&&f.existsSync(e)}catch{return!1}}function le(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var ue=d.z.string().url();d.z.object({VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:d.z.string().trim().optional()});function de(e=process.env,t={BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_AUTO_AGIFLOW_CLI_DOCKER_ENDPOINT:``,VITE_AUTO_AGIFLOW_CLI_ENDPOINT:``,VITE_AUTO_AGIFLOW_CLI_PROXY_ENDPOINT:``,VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:`https://api.agiflow.io`},n=fe(e)){let r=[t.VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.BACKEND_AGIFLOW_API_ENDPOINT,n?.backendAgiflowApiEndpoint];for(let e of r){let t=ue.safeParse(typeof e==`string`?e.trim():e);if(t.success)return t.data}throw Error(`Missing Agiflow API endpoint. Set VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT, INJECT_BACKEND_AGIFLOW_API_ENDPOINT, BACKEND_AGIFLOW_API_ENDPOINT, or add BACKEND_AGIFLOW_API_ENDPOINT to .agiflowrc.`)}function fe(e){return e===process.env?v():void 0}function b(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var pe=`serverUrl`,me=class{config=new Map;get(e){return this.config.get(e)}set(e,t){this.config.set(e,t)}has(e){return this.config.has(e)}getServerUrl(){let e=this.get(pe);if(e)return e;let t=de();return this.set(pe,t),t}};me=b([(0,u.injectable)()],me);function x(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}var he=class{logger;constructor(){this.logger=(0,m.default)({level:process.env.LOG_LEVEL||`info`,transport:{target:`pino-pretty`,options:{colorize:!0,translateTime:`SYS:standard`,ignore:`pid,hostname`}}})}debug(e,t){this.logger.debug(t,e)}info(e,t){this.logger.info(t,e)}warn(e,t){this.logger.warn(t,e)}error(e,t){this.logger.error(t,e)}};he=b([(0,u.injectable)(),x(`design:paramtypes`,[])],he);var ge=class{filePath;constructor(){this.filePath=g.default.join(_.default.homedir(),`.agiflow`,`credentials.json`)}async load(e={}){let t=this.readStoredFile();if(!t)return null;if(e.scope===`global`)return t.global??null;let n=this.getRepositoryScopeKey();return t.repositories?.[n]??t.global??null}async setApiKey(e,t={}){let n=this.readStoredFile()??{version:2},r=await this.load(t),i=r?.organizationId===e.organizationId,a={apiKey:e.apiKey,organizationId:e.organizationId,keyId:e.keyId,deviceId:e.deviceId??(i?r?.deviceId:void 0),deviceGuid:e.deviceGuid??r?.deviceGuid,expiresAt:e.expiresAt};this.setCredentials(n,t,a),this.writeStoredFile(n)}async getApiKey(e={}){return process.env.AGIFLOW_API_KEY||ie(process.env.AGIFLOW_API_KEY_ENV)||v().apiKey||((await this.load(e))?.apiKey??null)}async getOrganizationId(e={}){return process.env.AGIFLOW_ORGANIZATION_ID||process.env.AGIFLOW_ORG_ID||v().organizationId||((await this.load(e))?.organizationId??null)}async getProjectId(){return process.env.AGIFLOW_PROJECT_ID??v().projectId??null}async getTaskId(){return process.env.AGIFLOW_TASK_ID??null}async getWorkUnitId(){return process.env.AGIFLOW_WORK_UNIT_ID??null}async getDeviceId(e={}){return process.env.AGIFLOW_DEVICE_ID||((await this.load(e))?.deviceId??null)}async getDeviceGuid(e={}){return process.env.AGIFLOW_DEVICE_GUID||((await this.load(e))?.deviceGuid??null)}async setDeviceIdentity(e,t,n={}){let r=await this.load(n);if(!r)throw Error(`No credentials found. Run authentication first.`);let i=this.readStoredFile()??{version:2};this.setCredentials(i,n,{...r,deviceId:e,deviceGuid:t}),this.writeStoredFile(i)}async clear(e={}){try{let t=this.readStoredFile();if(!t)return;this.deleteCredentials(t,e),this.writeStoredFile(t)}catch{process.stderr.write(`[CredentialsService] failed to remove stored credentials
|
|
2
|
-
`)}}async buildAuthHeaders(e={}){let t=await this.getApiKey(e);if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);return{"x-api-key":t}}readStoredFile(){try{if(!h.default.existsSync(this.filePath))return null;let e=JSON.parse(h.default.readFileSync(this.filePath,`utf-8`));if(this.isStoredCredentialsFile(e))return e;if(this.isStoredCredentials(e))return{version:2,global:e}}catch{process.stderr.write(`[CredentialsService] credentials file is malformed, continuing without stored credentials
|
|
3
|
-
`)}return null}writeStoredFile(e){let t=this.compactStoredFile(e);if(!t.global&&!t.repositories){h.default.existsSync(this.filePath)&&h.default.unlinkSync(this.filePath);return}h.default.mkdirSync(g.default.dirname(this.filePath),{recursive:!0}),h.default.writeFileSync(this.filePath,`${JSON.stringify(t,null,2)}\n`,{mode:384})}setCredentials(e,t,n){if(t.scope===`global`){e.global=n;return}let r=this.getRepositoryScopeKey();e.repositories={...e.repositories,[r]:n}}deleteCredentials(e,t){if(t.scope===`global`){delete e.global;return}let n=this.getRepositoryScopeKey();e.repositories&&delete e.repositories[n]}compactStoredFile(e){let t=e.repositories?Object.fromEntries(Object.entries(e.repositories).filter(([,e])=>e)):void 0;return{version:2,...e.global?{global:e.global}:{},...t&&Object.keys(t).length>0?{repositories:t}:{}}}getRepositoryScopeKey(){return this.normalizePath(this.findGitRoot(process.cwd())??process.cwd())}findGitRoot(e){let t=g.default.resolve(e);for(;;){if(h.default.existsSync(g.default.join(t,`.git`)))return t;let e=g.default.dirname(t);if(e===t)return null;t=e}}normalizePath(e){let t=g.default.resolve(e),n=h.default.existsSync(t)?h.default.realpathSync.native(t):t,r=g.default.normalize(n).replace(RegExp(`${this.escapeRegExp(g.default.sep)}+$`),``);return process.platform===`win32`?r.toLowerCase():r}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}isStoredCredentialsFile(e){if(!this.isRecord(e)||e.version!==2)return!1;let t=e.global,n=e.repositories;return(t===void 0||this.isStoredCredentials(t))&&(n===void 0||this.isRecord(n)&&Object.values(n).every(e=>this.isStoredCredentials(e)))}isStoredCredentials(e){return this.isRecord(e)&&typeof e.apiKey==`string`&&typeof e.organizationId==`string`&&(e.keyId===void 0||typeof e.keyId==`string`)&&(e.deviceId===void 0||typeof e.deviceId==`string`)&&(e.deviceGuid===void 0||typeof e.deviceGuid==`string`)&&(e.expiresAt===void 0||typeof e.expiresAt==`number`)}isRecord(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}};ge=b([(0,u.injectable)(),x(`design:paramtypes`,[])],ge);var S={Logger:Symbol.for(`Logger`),ConfigManager:Symbol.for(`ConfigManager`),CredentialsService:Symbol.for(`CredentialsService`),DeviceCodeAuthService:Symbol.for(`DeviceCodeAuthService`)};function C(e,t){return function(n,r){t(n,r,e)}}var _e=`agent-cli`,ve=`0.0.1`,ye=`openid profile email`,be=`urn:ietf:params:oauth:grant-type:device_code`,xe=class{configManager;constructor(e){this.configManager=e}async requestDeviceCode(e=ye){return await this.postJson(`/api/v1/auth/device/code`,void 0,{client_id:_e,scope:e})}async pollForToken(e,t,n){let r=t;for(;;){if(n?.signal?.aborted)throw Error(`Polling aborted`);await this.sleep(r*1e3);let t=await fetch(this.url(`/api/v1/auth/device/token`),{method:`POST`,headers:this.headers(),body:JSON.stringify({grant_type:be,device_code:e,client_id:_e})});if(t.ok)return await t.json();let i=await this.parseError(t);switch(i.error){case`authorization_pending`:n?.onPending?.();break;case`slow_down`:r+=5,n?.onSlowDown?.();break;case`access_denied`:throw Error(`Authorization denied by user`);case`expired_token`:throw Error(`Device code expired. Please start the authorization process again.`);default:throw Error(i.error_description||i.message||`Token request failed: ${t.status}`)}}}async listOrganizationsWithAccessToken(e){return(await this.getJson(`/api/v1/cli/organizations`,{Authorization:`Bearer ${e}`})).organizations??[]}async listOrganizationsWithApiKey(e){return(await this.getJson(`/api/v1/cli/organizations`,{"x-api-key":e})).organizations??[]}async exchangeForAgentApiKey(e,t){let n=await this.postJson(`/api/v1/cli/exchange-for-agent`,{Authorization:`Bearer ${e}`},{organizationId:t});return{apiKey:n.api_key,keyId:n.key_id,organizationId:n.organization_id,organizationName:n.organization_name,agentUserId:n.agent_user_id,expiresAt:n.expires_at}}async getJson(e,t){let n=await fetch(this.url(e),{method:`GET`,headers:this.headers(t)});return this.parseResponse(n)}async postJson(e,t,n){let r=await fetch(this.url(e),{method:`POST`,headers:this.headers(t),body:JSON.stringify(n)});return this.parseResponse(r)}async parseResponse(e){let t=await e.json().catch(()=>({}));if(!e.ok){let n=t;throw Error(n.error_description||n.message||n.error||e.statusText)}return t}async parseError(e){return await e.json().catch(()=>({}))}headers(e){return{"Content-Type":`application/json`,Accept:`application/json`,"x-client-type":_e,"x-client-version":ve,...e}}url(e){return`${this.configManager.getServerUrl().replace(/\/$/,``)}${e}`}sleep(e){return new Promise(t=>setTimeout(t,e))}};xe=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),x(`design:paramtypes`,[Object])],xe);var w=new u.Container;w.bind(S.Logger).to(he).inSingletonScope(),w.bind(S.ConfigManager).to(me).inSingletonScope(),w.bind(S.CredentialsService).to(ge).inSingletonScope(),w.bind(S.DeviceCodeAuthService).to(xe).inSingletonScope();var Se=10,Ce=(e=0)=>t=>`\u001B[${t+e}m`,we=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,Te=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,T={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(T.modifier);var Ee=Object.keys(T.color),De=Object.keys(T.bgColor);[...Ee,...De];function Oe(){let e=new Map;for(let[t,n]of Object.entries(T)){for(let[t,r]of Object.entries(n))T[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=T[t],e.set(r[0],r[1]);Object.defineProperty(T,t,{value:n,enumerable:!1})}return Object.defineProperty(T,"codes",{value:e,enumerable:!1}),T.color.close=`\x1B[39m`,T.bgColor.close=`\x1B[49m`,T.color.ansi=Ce(),T.color.ansi256=we(),T.color.ansi16m=Te(),T.bgColor.ansi=Ce(Se),T.bgColor.ansi256=we(Se),T.bgColor.ansi16m=Te(Se),Object.defineProperties(T,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>T.rgbToAnsi256(...T.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>T.ansi256ToAnsi(T.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>T.ansi256ToAnsi(T.hexToAnsi256(e)),enumerable:!1}}),T}var E=Oe(),ke=(()=>{if(!(`navigator`in globalThis))return 0;if(globalThis.navigator.userAgentData){let e=navigator.userAgentData.brands.find(({brand:e})=>e===`Chromium`);if(e&&e.version>93)return 3}return+!!/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)})(),Ae=ke!==0&&{level:ke,hasBasic:!0,has256:ke>=2,has16m:ke>=3},je={stdout:Ae,stderr:Ae};function Me(e,t,n){let r=e.indexOf(t);if(r===-1)return e;let i=t.length,a=0,o=``;do o+=e.slice(a,r)+t+n,a=r+i,r=e.indexOf(t,a);while(r!==-1);return o+=e.slice(a),o}function Ne(e,t,n,r){let i=0,a=``;do{let o=e[r-1]===`\r`;a+=e.slice(i,o?r-1:r)+t+(o?`\r
|
|
4
|
-
`:`
|
|
5
|
-
`)+n,i=r+1,r=e.indexOf(`
|
|
6
|
-
`,i)}while(r!==-1);return a+=e.slice(i),a}var{stdout:Pe,stderr:Fe}=je,Ie=Symbol(`GENERATOR`),D=Symbol(`STYLER`),O=Symbol(`IS_EMPTY`),Le=[`ansi`,`ansi`,`ansi256`,`ansi16m`],k=Object.create(null),Re=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=Pe?Pe.level:0;e.level=t.level===void 0?n:t.level},ze=e=>{let t=(...e)=>e.join(` `);return Re(t,e),Object.setPrototypeOf(t,A.prototype),t};function A(e){return ze(e)}Object.setPrototypeOf(A.prototype,Function.prototype);for(let[e,t]of Object.entries(E))k[e]={get(){let n=j(this,He(t.open,t.close,this[D]),this[O]);return Object.defineProperty(this,e,{value:n}),n}};k.visible={get(){let e=j(this,this[D],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Be=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?E[n].ansi16m(...r):t===`ansi256`?E[n].ansi256(E.rgbToAnsi256(...r)):E[n].ansi(E.rgbToAnsi(...r)):e===`hex`?Be(`rgb`,t,n,...E.hexToRgb(...r)):E[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){k[e]={get(){let{level:t}=this;return function(...n){let r=He(Be(e,Le[t],`color`,...n),E.color.close,this[D]);return j(this,r,this[O])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);k[t]={get(){let{level:t}=this;return function(...n){let r=He(Be(e,Le[t],`bgColor`,...n),E.bgColor.close,this[D]);return j(this,r,this[O])}}}}var Ve=Object.defineProperties(()=>{},{...k,level:{enumerable:!0,get(){return this[Ie].level},set(e){this[Ie].level=e}}}),He=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},j=(e,t,n)=>{let r=(...e)=>Ue(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,Ve),r[Ie]=e,r[D]=t,r[O]=n,r},Ue=(e,t)=>{if(e.level<=0||!t)return e[O]?``:t;let n=e[D];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=Me(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
7
|
-
`);return a!==-1&&(t=Ne(t,i,r,a)),r+t+i};Object.defineProperties(A.prototype,k);var M=A();A({level:Fe?Fe.level:0});var We=`0.0.1`,Ge=class{credentialsService;authService;configManager;constructor(e,t,n){this.credentialsService=e,this.authService=t,this.configManager=n}register(e){e.command(`login`).description(`Authenticate agiflow-cli`).addOption(this.envOption(`--api-key <apiKey>`,`Use an existing Agiflow API key`,`AGIFLOW_API_KEY`)).addOption(this.envOption(`--org <organizationId>`,`Organization ID to store with credentials`,`AGIFLOW_ORGANIZATION_ID`)).option(`--global`,`Store credentials globally instead of scoping them to the current repository`).option(`--format <format>`,`Output format (text|json)`,`text`).action(async e=>{await this.run(e.format,async()=>{let t=e.apiKey?await this.loginWithApiKey(e):await this.loginWithDeviceCode(e);this.printLoginResult(t,e.format)})}),e.command(`logout`).description(`Remove stored agiflow-cli credentials`).option(`--global`,`Remove global credentials instead of credentials scoped to the current repository`).option(`--format <format>`,`Output format (text|json)`,`text`).action(async e=>{await this.run(e.format,async()=>{if(await this.credentialsService.clear(this.getCredentialsScope(e)),e.format===`json`){this.printJson({loggedOut:!0});return}console.log(M.green(`Logged out`))})})}async loginWithApiKey(e){if(!e.apiKey)throw Error(`API key is required.`);let t=await this.authService.listOrganizationsWithApiKey(e.apiKey),n=await this.resolveOrganization(t,e.org,e.format);return await this.credentialsService.setApiKey({apiKey:e.apiKey,organizationId:n.id},this.getCredentialsScope(e)),await this.ensureDeviceIdentity(e.apiKey,n.id,this.getCredentialsScope(e)),{authenticated:!0,source:`api-key`,organizationId:n.id,organizationName:n.name}}async loginWithDeviceCode(e){let t=await this.authService.requestDeviceCode(),n=t.verification_uri_complete||`${t.verification_uri}?user_code=${t.user_code}`;this.printProgress(e.format,`Open ${n}`),this.printProgress(e.format,`Enter code ${t.user_code}`);let r=await this.authService.pollForToken(t.device_code,t.interval??5),i=await this.authService.listOrganizationsWithAccessToken(r.access_token),a=await this.resolveOrganization(i,e.org,e.format),o=await this.authService.exchangeForAgentApiKey(r.access_token,a.id);return await this.credentialsService.setApiKey({apiKey:o.apiKey,keyId:o.keyId,organizationId:o.organizationId,expiresAt:o.expiresAt},this.getCredentialsScope(e)),await this.ensureDeviceIdentity(o.apiKey,o.organizationId,this.getCredentialsScope(e)),{authenticated:!0,source:`device-code`,organizationId:o.organizationId,organizationName:o.organizationName,expiresAt:o.expiresAt}}async resolveOrganization(e,t,n){if(e.length===0)throw Error(`No organizations are available for these credentials.`);if(t){let n=e.find(e=>e.id===t);if(!n)throw Error(`Organization ${t} is not available for these credentials.`);return n}if(e.length===1)return e[0];if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error(`Multiple organizations are available. Pass --org <organizationId> in non-interactive mode.`);let{select:r}=await import(`@inquirer/prompts`),i=await r({message:`Select an organization`,choices:e.map(e=>({name:`${e.name}${e.slug?` (${e.slug})`:``}`,value:e.id}))});return this.printProgress(n,`Selected organization ${i}`),e.find(e=>e.id===i)??e[0]}async run(e,t){try{this.validateFormat(e),await t()}catch(t){let n=t instanceof Error?t.message:String(t);e===`json`?this.printJson({error:n}):console.error(M.red(`Error:`),n),process.exit(1)}}async ensureDeviceIdentity(e,t,n){let r=await this.credentialsService.getDeviceGuid(n)||`cli-${(0,ee.randomUUID)()}`,i=this.configManager.getServerUrl().replace(/\/$/,``),a=await fetch(`${i}/api/v1/organizations/${t}/devices`,{method:`POST`,headers:{"x-api-key":e,"x-client-type":`agent-cli`,"x-client-version":We,"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({name:_.default.hostname(),deviceGuid:r,type:`cli`,platform:process.platform,version:We})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=typeof o==`object`&&o&&`message`in o?String(o.message):a.statusText;throw Error(e)}if(!o||typeof o!=`object`||!(`id`in o)||typeof o.id!=`string`)throw Error(`Device registration response did not include a device ID.`);await this.credentialsService.setDeviceIdentity(o.id,r,n)}getCredentialsScope(e){return e.global?{scope:`global`}:{scope:`repository`}}envOption(e,t,n){let r=new c.Option(e,t);return re(n)&&r.hideHelp(),r}validateFormat(e){if(e&&e!==`text`&&e!==`json`)throw Error(`Only text and json formats are supported.`)}printLoginResult(e,t){if(t===`json`){this.printJson(e);return}console.log(M.green(`Authenticated`)),console.log(`Organization: ${e.organizationName} (${e.organizationId})`)}printProgress(e,t){if(e===`json`){console.error(t);return}console.log(t)}printJson(e){console.log(JSON.stringify(e,null,2))}};Ge=b([(0,u.injectable)(),C(0,(0,u.inject)(S.CredentialsService)),C(1,(0,u.inject)(S.DeviceCodeAuthService)),C(2,(0,u.inject)(S.ConfigManager)),x(`design:paramtypes`,[Object,Object,Object])],Ge);var Ke=class e{static instance;authProviders=new Map;defaultNamespace=`default`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}setAuthProvider(e,t=this.defaultNamespace){this.authProviders.set(t,e)}getAuthProvider(e=this.defaultNamespace){return this.authProviders.get(e)||null}removeAuthProvider(e=this.defaultNamespace){this.authProviders.delete(e)}async getSession(e=this.defaultNamespace){let t=this.authProviders.get(e);return t?t.getSession():null}async refreshSession(e=this.defaultNamespace){let t=this.authProviders.get(e);return t?t.refreshSession():null}hasAuthProvider(e=this.defaultNamespace){return this.authProviders.has(e)}getNamespaces(){return Array.from(this.authProviders.keys())}}.getInstance(),qe=class e{static instance;configs=new Map;defaultNamespace=`default`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}setConfig(e,t=this.defaultNamespace){this.configs.set(t,e)}getConfig(e=this.defaultNamespace){return this.configs.get(e)||null}updateConfig(e,t=this.defaultNamespace){let n=this.configs.get(t);n?this.configs.set(t,{...n,...e,headers:{...n.headers,...e.headers}}):this.configs.set(t,e)}removeConfig(e=this.defaultNamespace){this.configs.delete(e)}getBaseUrl(e=this.defaultNamespace){return this.configs.get(e)?.baseUrl||null}getHeaders(e=this.defaultNamespace){return this.configs.get(e)?.headers||null}getApiKey(e=this.defaultNamespace){return this.configs.get(e)?.apiKey||null}hasConfig(e=this.defaultNamespace){return this.configs.has(e)}getNamespaces(){return Array.from(this.configs.keys())}}.getInstance(),Je=`default`,Ye=1,Xe=300,N=`Content-Type`,Ze=`application/json`,Qe=`X-API-KEY`,$e=`Authorization`,et=`Bearer`,tt=401,nt=429,rt=503,it=500,at=400,ot=500,st=`text/`,ct=.5,lt=.5,ut=class extends Error{status;statusText;data;constructor(e,t,n,r){super(e),this.status=t,this.statusText=n,this.data=r,this.name=`OpenapiRequestError`}},dt=class{baseUrl;apiKey;headers;authProvider;authNamespace;configNamespace;useGlobalAuthProvider;useGlobalConfig;retryConfig;requestInterceptor;constructor(e={}){this.authProvider=e.authProvider,this.authNamespace=e.authNamespace??Je,this.configNamespace=e.configNamespace??Je,this.useGlobalAuthProvider=e.useGlobalAuthProvider??!0,this.useGlobalConfig=e.useGlobalConfig??!0,this.retryConfig={maxRetries:e.retryConfig?.maxRetries??Ye,baseDelay:e.retryConfig?.baseDelay??Xe},this.requestInterceptor=e.requestInterceptor??null;let t=this.getEffectiveConfig(e);if(!t.baseUrl&&!this.useGlobalConfig)throw Error(`baseUrl is required for OpenapiClient (either in options or global config)`);this.baseUrl=t.baseUrl,this.apiKey=t.apiKey,this.headers=t.headers}getEffectiveConfig(e){let t=this.useGlobalConfig?qe.getConfig(this.configNamespace):null;return{baseUrl:e.baseUrl||t?.baseUrl||``,headers:{...t?.headers,...e.headers},apiKey:e.apiKey??t?.apiKey}}getRuntimeConfig(){return this.getEffectiveConfig({baseUrl:this.baseUrl,headers:this.headers,apiKey:this.apiKey})}getEffectiveAuthProvider(){return this.authProvider?this.authProvider:this.useGlobalAuthProvider?Ke.getAuthProvider(this.authNamespace):null}async setAuthHeader(e){let t=this.getEffectiveAuthProvider();if(!t)return;let n=await t.getSession();n?.data?.session?.access_token&&(e[$e]=`${et} ${n.data.session.access_token}`)}buildUrl(e,t,n,r){let i=t;if(n)for(let[e,t]of Object.entries(n))i=i.replace(`{${e}}`,encodeURIComponent(String(t)));if(r){let e=new URLSearchParams;for(let[t,n]of Object.entries(r))n!=null&&e.append(t,String(n));let t=e.toString();t&&(i+=(i.includes(`?`)?`&`:`?`)+t)}return new URL(i,e).toString()}createCustomFetch(){return async(e,t)=>{let n=t||{};n.headers||={},n.credentials=`include`,`Content-Type`in n.headers||(n.headers[N]=Ze),n.headers[N]===void 0&&delete n.headers[N];let r=this.getRuntimeConfig();r.apiKey&&(n.headers[Qe]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();if(i.status===tt&&a&&!t?.skipAuth&&(await a.refreshSession())?.data?.session)if(await this.setAuthHeader(n.headers),t?.skipRetry)i=await fetch(e,n);else{let{maxRetries:t,baseDelay:r}=this.retryConfig,a=null;for(let o=0;o<t;o++)try{if(i=await fetch(e,n),i.status>=at&&i.status<ot&&i.status!==nt)return i;if(i.status===nt||i.status===rt||i.status>=it){a=Error(`HTTP status ${i.status}`);let e=r*2**o*(ct+Math.random()*lt);await new Promise(t=>setTimeout(t,e));continue}return i}catch(e){if(a=e instanceof Error?e:Error(String(e)),o<t-1){let e=r*2**o*(ct+Math.random()*lt);await new Promise(t=>setTimeout(t,e))}}throw a||Error(`Request failed after retries`)}return i}}createFormFetch(){return async(e,t)=>{let n=t||{};n.headers||={},n.credentials=`include`;let r=this.getRuntimeConfig();r.apiKey&&(n.headers[Qe]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();return i.status===tt&&a&&!t?.skipAuth&&(await a.refreshSession())?.data?.session&&(await this.setAuthHeader(n.headers),i=await fetch(e,n)),i}}async request(e,t){let{method:n,params:r,query:i,body:a,headers:o,skipAuth:s,skipRetry:c}=t;if(this.requestInterceptor){let n=await this.requestInterceptor(e,{path:e,...t});if(n)return n}let l=this.getRuntimeConfig();if(!l.baseUrl)throw Error(`baseUrl is required for OpenapiClient (either in options or global config)`);let u=this.buildUrl(l.baseUrl,e,r,i),d={...l.headers,...o},f={method:n,headers:d,skipAuth:s,skipRetry:c};a&&n!==`GET`&&n!==`HEAD`&&(a instanceof FormData||typeof a==`object`&&a&&typeof a.append==`function`&&typeof a.entries==`function`&&a.constructor?.name===`FormData`?(f.body=a,d[N]=void 0):(f.body=JSON.stringify(a),d[N]=Ze));let p=await this.createCustomFetch()(u,f),m,h=p.headers.get(`content-type`);if(m=h?.includes(Ze)?await p.json():h?.includes(st)?await p.text():await p.blob(),!p.ok)throw new ut(`HTTP ${p.status}: ${p.statusText}`,p.status,p.statusText,m);return{data:m,status:p.status,statusText:p.statusText,headers:p.headers}}},ft=`backend-agiflow-api`,pt=e=>{qe.setConfig(e,ft)},P=((e={})=>new dt({...e,authNamespace:ft,configNamespace:ft}))(),mt=`0.0.1`,F=class{configManager;credentialsService;constructor(e,t){this.configManager=e,this.credentialsService=t}addEnvIdOption(e,t,n,r){return e.addOption(this.buildEnvIdOption(t,n,r)),e}buildEnvIdOption(e,t,n){let r=new c.Option(e,t);return re(n)&&r.hideHelp(),r}async setupClient(){let{serverUrl:e,apiKey:t}=await this.resolveApiClientContext();pt({baseUrl:e,apiKey:t,headers:{"x-client-type":`agent-cli`,"x-client-version":mt}})}async resolveApiClientContext(){let e=this.configManager.getServerUrl(),t=await this.credentialsService.getApiKey();if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);return{serverUrl:e,apiKey:t}}handleError(e,t){let n=t instanceof Error?t.message:String(t);console.error(M.red(`✗`),e,n),process.exit(1)}async runJsonOnly(e){try{await e()}catch(e){let t=e instanceof Error?e.message:String(e),n=e&&typeof e==`object`&&`data`in e?e.data:void 0;this.printJson(n===void 0?{error:t}:{error:t,details:n}),process.exit(1)}}requireJsonFormat(e,t=`this command`){if((e??`json`)!==`json`)throw Error(`Only --format json is supported for ${t}.`)}printJson(e){console.log(JSON.stringify(e,null,2))}async resolveOrganizationId(e){return this.resolveRequiredId(e,()=>this.credentialsService.getOrganizationId(),`organization ID`,`--org`)}async resolveProjectIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getProjectId(),`project ID`,`--project`)}async resolveTaskIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getTaskId(),`task ID`,`--task`)}async resolveWorkUnitIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getWorkUnitId(),`work unit ID`,`--work-unit`)}async resolveRequiredId(e,t,n,r){if(e)return e;let i=await t();if(i)return i;throw Error(`Missing ${n}. Pass ${r}, set the matching AGIFLOW_* environment variable, or add .agiflowrc defaults.`)}parseJsonFlag(e,t){if(e)try{return JSON.parse(e)}catch{throw Error(`${t} must be valid JSON.`)}}parseCsv(e){if(!e)return;let t=(Array.isArray(e)?e:e.split(`,`)).map(e=>e.trim()).filter(Boolean);return t.length>0?t:void 0}parseNumber(e,t){if(e===void 0)return t;let n=Number(e);if(!Number.isFinite(n))throw Error(`Expected a numeric value, received "${e}".`);return n}},ht=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`GET`,params:e,query:t})).data,gt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`POST`,params:e,body:t})).data,_t=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/check`,{method:`GET`,params:e,query:t})).data,vt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`GET`,params:e})).data,yt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`PATCH`,params:e,body:t})).data,bt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`DELETE`,params:e})).data,xt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}/release`,{method:`POST`,params:e,body:t})).data,St=`AGIFLOW_ORGANIZATION_ID`,Ct=`AGIFLOW_PROJECT_ID`,wt=`AGIFLOW_TASK_ID`,Tt=`AGIFLOW_WORK_UNIT_ID`,Et=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`workflow`).description(`Manage workflow locks`);this.addWorkflowScopeOptions(t.command(`create`).description(`Acquire a workflow lock`)).requiredOption(`--name <name>`,`Workflow name`).addOption(this.envOption(`--work-unit <workUnitId>`,`Work unit ID`,Tt)).addOption(this.envOption(`--task <taskId>`,`Task ID`,wt)).option(`--context <json>`,`Context data as JSON string`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await gt({organizationId:t,projectId:n},{name:e.name,workUnitId:r.workUnitId,taskId:r.taskId,contextData:e.context});console.log(M.green(`✓`),`Workflow lock acquired`),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to acquire workflow lock`,e)}}),this.addWorkflowScopeOptions(t.command(`get <id>`).description(`Get workflow details`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i=await vt({organizationId:n,projectId:r,id:e});console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to get workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`list`).description(`List workflows`)).option(`--status <status>`,`Filter by status (running|completed|failed)`).option(`--limit <limit>`,`Max results`,`20`).option(`--offset <offset>`,`Offset for pagination`,`0`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await ht({organizationId:t,projectId:n},{status:e.status,limit:Number(e.limit),offset:Number(e.offset)});console.log(JSON.stringify(r,null,2))}catch(e){this.handleError(`Failed to list workflows`,e)}}),this.addWorkflowScopeOptions(t.command(`update <id>`).description(`Update workflow metadata`)).option(`--name <name>`,`New workflow name`).option(`--context <json>`,`Updated context data as JSON string`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i={};t.name&&(i.name=t.name),t.context&&(i.contextData=t.context);let a=await yt({organizationId:n,projectId:r,id:e},i);console.log(M.green(`✓`),`Workflow updated`),console.log(JSON.stringify(a,null,2))}catch(e){this.handleError(`Failed to update workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`delete <id>`).description(`Delete workflow metadata`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t);await bt({organizationId:n,projectId:r,id:e}),console.log(JSON.stringify({deleted:!0,workflow:{id:e}},null,2))}catch(e){this.handleError(`Failed to delete workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`release <id>`).description(`Release a workflow lock`)).requiredOption(`--status <status>`,`Release status (completed|failed)`).option(`--error <error>`,`Error message (when status is failed)`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i=await xt({organizationId:n,projectId:r,id:e},{status:t.status,error:t.error});console.log(M.green(`✓`),`Workflow lock released`),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to release workflow lock`,e)}}),this.addWorkflowScopeOptions(t.command(`check`).description(`Check if a workflow lock exists`)).addOption(this.envOption(`--work-unit <workUnitId>`,`Work unit ID`,Tt)).addOption(this.envOption(`--task <taskId>`,`Task ID`,wt)).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await _t({organizationId:t,projectId:n},{workUnitId:r.workUnitId,taskId:r.taskId});console.log(M.green(`✓`),`Lock found`),console.log(JSON.stringify(i,null,2))}catch(e){if(e instanceof Error&&e.message.includes(`404`)){console.log(JSON.stringify({}));return}this.handleError(`Failed to check workflow lock`,e)}})}addWorkflowScopeOptions(e){return e.addOption(this.envOption(`--org <organizationId>`,`Organization ID`,St)).addOption(this.envOption(`--project <projectId>`,`Project ID`,Ct))}envOption(e,t,n){return this.buildEnvIdOption(e,t,n)}async resolveWorkflowScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}async resolveWorkflowTarget(e){if(e.workUnit)return{workUnitId:e.workUnit};if(e.task)return{taskId:e.task};let t=await this.credentialsService.getWorkUnitId();if(t)return{workUnitId:t};let n=await this.credentialsService.getTaskId();return n?{taskId:n}:{}}};Et=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],Et);var Dt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects`,{method:`GET`,params:e,query:t})).data,Ot=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects`,{method:`POST`,params:e,body:t})).data,kt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/statuses`,{method:`GET`,params:e})).data,I=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`GET`,params:e})).data,At=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`PATCH`,params:e,body:t})).data,jt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`DELETE`,params:e})).data,Mt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`GET`,params:e})).data,Nt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`DELETE`,params:e,query:t})).data,Pt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Ft=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/upload-url`,{method:`GET`,params:e,query:t})).data,It=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/complete`,{method:`POST`,params:e,body:t})).data,Lt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/seed`,{method:`POST`,params:e,body:t})).data,Rt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks`,{method:`GET`,params:e,query:t})).data,zt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts`,{method:`GET`,params:e,query:t})).data,Bt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Vt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/statuses/{statusId}/tasks/reorder`,{method:`POST`,params:e,body:t})).data,Ht=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`GET`,params:e,query:t})).data,Ut=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`POST`,params:e,body:t})).data,Wt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`GET`,params:e})).data,Gt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`PATCH`,params:e,body:t})).data,Kt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`DELETE`,params:e})).data,qt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}/move`,{method:`POST`,params:e,body:t})).data,Jt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`GET`,params:e,query:t})).data,Yt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`POST`,params:e,body:t})).data,Xt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`GET`,params:e})).data,Zt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`PATCH`,params:e,body:t})).data,Qt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`DELETE`,params:e})).data,$t=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}/progress`,{method:`GET`,params:e})).data,en=`2024-11-05`;async function tn(e){let t=new nn(e);try{await t.initialize();let n=await t.listToolNames();return on(n.includes(e.toolName)?await t.callTool(e.toolName,e.toolArgs):await t.callCapability(e.toolName,e.toolArgs,n))}finally{await t.terminate()}}var nn=class{options;endpoint;sessionId;nextId=1;constructor(e){this.options=e;let t=e.serverUrl.replace(/\/+$/,``),n=encodeURIComponent(e.organizationId),r=encodeURIComponent(e.projectId);this.endpoint=`${t}/api/v1/organizations/${n}/projects/${r}/mcp`}async initialize(){let e=await this.request(`initialize`,{protocolVersion:en,capabilities:{},clientInfo:{name:`agiflow-cli`,version:`0.0.1`}});if(e.error)throw Error(e.error.message??`Project MCP initialize failed.`)}async listToolNames(){let e=await this.request(`tools/list`);if(e.error)throw Error(e.error.message??`Project MCP tools/list failed.`);return e.result?.tools?.map(e=>e.name)??[]}async callTool(e,t){let n=await this.request(`tools/call`,{name:e,arguments:t});if(n.error)throw Error(n.error.message??`Project MCP tool failed: ${e}`);return n.result??{}}async callCapability(e,t,n){if(!n.includes(`use_capability`))throw Error(`Project MCP tool is not available: ${e}`);return this.callTool(`use_capability`,{toolName:e,toolArgs:t})}async terminate(){if(this.sessionId)try{await fetch(this.endpoint,{method:`DELETE`,headers:this.headers()})}catch{}}async request(e,t){let n=await fetch(this.endpoint,{method:`POST`,headers:this.headers(),body:JSON.stringify({jsonrpc:`2.0`,id:this.nextId++,method:e,...t===void 0?{}:{params:t}})}),r=n.headers.get(`Mcp-Session-Id`);return r&&(this.sessionId=r),rn(n)}headers(){return{Accept:`application/json, text/event-stream`,"Content-Type":`application/json`,"x-api-key":this.options.apiKey,...this.sessionId?{"Mcp-Session-Id":this.sessionId}:{}}}};async function rn(e){let t=await e.text();if(!e.ok)throw Error(`Project MCP request failed with status ${e.status}: ${sn(t)}`);let n=e.headers.get(`content-type`)?.includes(`text/event-stream`)?an(t):t;if(!n.trim())return{};try{return JSON.parse(n)}catch{throw Error(`Project MCP returned invalid JSON: ${sn(n)}`)}}function an(e){let t=e.split(/\n\n+/).map(e=>e.split(/\n/).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim()).join(`
|
|
8
|
-
`)).filter(e=>e&&e!==`[DONE]`);return t[t.length-1]??``}function on(e){let t=e.content?.find(e=>e.type===`text`&&e.text)?.text;if(e.isError)throw Error(t??`Project MCP tool returned an error.`);if(e.structuredContent!==void 0)return e.structuredContent;if(t)try{return JSON.parse(t)}catch{return{text:t}}return e}function sn(e){let t=e.replace(/\s+/g,` `).trim();return t.length>500?`${t.slice(0,500)}...`:t}var cn=`AGIFLOW_ORGANIZATION_ID`,ln=`AGIFLOW_PROJECT_ID`,un=`AGIFLOW_TASK_ID`,dn=`AGIFLOW_WORK_UNIT_ID`,fn=100,pn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`artifact`).description(`Manage project artifacts`);this.addArtifactScopeOptions(t.command(`upload <file>`).description(`Upload an artifact (3-step: get presigned URL, PUT to storage, mark complete)`)).option(`--name <name>`,`Artifact name (defaults to filename)`).option(`--type <type>`,`Content type`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=g.default.resolve(e);h.default.existsSync(i)||(console.error(M.red(`✗`),`File not found: ${i}`),process.exit(1));let a=t.name??g.default.basename(i),o=h.default.readFileSync(i),s=h.default.statSync(i).size;console.log(M.blue(`↑`),`Uploading ${a} (${s} bytes)...`);let{url:c,key:l}=await Ft({organizationId:n,id:r},{filename:a,contentType:t.type}),u=await fetch(c,{method:`PUT`,body:o,headers:{"Content-Type":t.type??`application/octet-stream`}});if(!u.ok)throw Error(`Upload failed with status ${u.status}`);await It({organizationId:n,id:r},{key:l}),console.log(M.green(`✓`),`Artifact uploaded: ${l}`)}catch(e){this.handleError(`Failed to upload artifact`,e)}}),this.addArtifactScopeOptions(t.command(`download [key]`).description(`Download artifacts by key, task, or work unit`)).option(`-o, --output <path>`,`Output file path`).option(`--target <folder>`,`Target folder for task or work unit artifact downloads`).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to download artifacts from`,un)).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to download task artifacts from`,dn)).option(`--overwrite`,`Overwrite existing files`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t);if(e){await this.downloadProjectArtifactByKey(n,r,e,t);return}await this.downloadScopedArtifacts(n,r,t)}catch(e){this.handleError(`Failed to download artifact`,e)}}),this.addArtifactScopeOptions(t.command(`list`).description(`List project artifacts`)).option(`--max-keys <maxKeys>`,`Maximum number of artifacts to return`).option(`--continuation-token <token>`,`Pagination continuation token`).option(`--search <search>`,`Search artifacts by name`).option(`--labels <labels>`,`Comma-separated labels to match`).option(`--content-type <contentType>`,`Content type prefix`).option(`--status <status>`,`Artifact status (pending|uploaded)`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=this.hasListFilters(e)?await this.callProjectTool(t,n,`list_artifacts`,{maxKeys:this.parseOptionalNumber(e.maxKeys,`--max-keys`),continuationToken:e.continuationToken,search:e.search,labels:this.parseCsv(e.labels),contentType:e.contentType,status:e.status}):await Mt({organizationId:t,id:n});console.log(JSON.stringify(r,null,2))}catch(e){this.handleError(`Failed to list artifacts`,e)}}),this.addArtifactScopeOptions(t.command(`get <key>`).description(`Get artifact details by key`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=(await Mt({organizationId:n,id:r})).items.find(t=>t.key===e||t.id===e);i||(console.error(M.red(`✗`),`Artifact not found: ${e}`),process.exit(1)),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to get artifact`,e)}}),this.addArtifactScopeOptions(t.command(`delete <key>`).description(`Delete an artifact by key`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t);await Nt({organizationId:n,id:r},{key:e}),console.log(M.green(`✓`),`Artifact deleted: ${e}`)}catch(e){this.handleError(`Failed to delete artifact`,e)}}),this.addArtifactScopeOptions(t.command(`link <key>`).description(`Link or unlink artifact targets`)).option(`--action <action>`,`Action to perform (link|unlink)`,`link`).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to link`,dn)).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to link`,un)).option(`--clip-json <json>`,`Clip region JSON with x, y, width, height`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=t.task?await this.resolveTaskIdOption(t.task):void 0,a=t.workUnit?await this.resolveWorkUnitIdOption(t.workUnit):void 0;if(!i&&!a)throw Error(`Specify --task, --work-unit, or both.`);if(t.action!==`link`&&t.action!==`unlink`)throw Error(`--action must be link or unlink.`);let o=await this.callProjectTool(n,r,`link_artifact`,{key:e,action:t.action,taskId:i,workUnitId:a,clip:this.parseClip(t.clipJson)});console.log(JSON.stringify(o,null,2))}catch(e){this.handleError(`Failed to link artifact`,e)}}),this.addArtifactScopeOptions(t.command(`signed-url`).description(`Get a signed upload or download URL for an artifact`)).requiredOption(`--action <action>`,`Signed URL action (upload|download)`).option(`--key <key>`,`Artifact key (required for download)`).option(`--filename <filename>`,`Filename (required for upload)`).option(`--type <type>`,`Content type for upload`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e);if(e.action===`download`){if(!e.key)throw Error(`--key is required for download signed URLs`);let r=await Pt({organizationId:t,id:n},{key:e.key});console.log(JSON.stringify({...r,key:e.key,action:`download`},null,2));return}if(e.action!==`upload`)throw Error(`--action must be upload or download`);if(!e.filename)throw Error(`--filename is required for upload signed URLs`);let r=await Ft({organizationId:t,id:n},{filename:e.filename,contentType:e.type});console.log(JSON.stringify({...r,action:`upload`},null,2))}catch(e){this.handleError(`Failed to get signed artifact URL`,e)}}),this.addArtifactScopeOptions(t.command(`seed`).description(`Seed artifacts from a JSON file`)).requiredOption(`--file <path>`,`Path to JSON file containing seed data`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=g.default.resolve(e.file);if(!h.default.existsSync(r)){console.error(M.red(`✗`),`File not found: ${r}`),process.exit(1);return}let i=h.default.readFileSync(r,`utf-8`),a;try{a=JSON.parse(i)}catch{console.error(M.red(`✗`),`Invalid JSON in ${r}`),process.exit(1);return}let o=await Lt({organizationId:t,id:n},a);console.log(JSON.stringify(o,null,2))}catch(e){this.handleError(`Failed to seed artifacts`,e)}}),this.addArtifactScopeOptions(t.command(`update <key>`).description(`Update artifact metadata`)).option(`--status <status>`,`Artifact status (pending|uploaded)`).option(`--labels <labels>`,`Comma-separated labels to set`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=await this.callProjectTool(n,r,`update_artifact`,{key:e,status:t.status,labels:this.parseCsv(t.labels)});console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to update artifact`,e)}})}addArtifactScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,cn)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,ln))}async resolveArtifactScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}async callProjectTool(e,t,n,r){let{serverUrl:i,apiKey:a}=await this.resolveApiClientContext();return tn({serverUrl:i,apiKey:a,organizationId:e,projectId:(await I({organizationId:e,id:t})).id,toolName:n,toolArgs:this.compact(r)})}async downloadProjectArtifactByKey(e,t,n,r){if(r.task||r.workUnit||r.target)throw Error(`Single artifact downloads only support <key> and --output. Do not pass --task, --work-unit, or --target.`);let i=await Pt({organizationId:e,id:t},{key:n}),a=await this.fetchArtifactBuffer(i.url),o=r.output??n;h.default.writeFileSync(o,a),console.log(M.green(`✓`),`Downloaded to ${o}`)}async downloadScopedArtifacts(e,t,n){if(n.output)throw Error(`Scoped downloads write to folders. Use --target instead of --output.`);if(!!n.task==!!n.workUnit)throw Error(`Pass exactly one of --task or --work-unit.`);let r=g.default.resolve(n.target??process.cwd()),i=n.task?[await this.resolveTaskForScopedDownload(n.task)]:await this.resolveWorkUnitTasks(e,t,n.workUnit),a=await this.buildScopedDownloadPlan(e,i,r,!!n.workUnit);this.assertWritablePlan(a,!!n.overwrite),h.default.mkdirSync(r,{recursive:!0});for(let t of a){let n=await Bt({organizationId:e,taskId:t.task.id},{key:t.artifact.key}),r=await this.fetchArtifactBuffer(n.url);h.default.mkdirSync(g.default.dirname(t.outputPath),{recursive:!0}),h.default.writeFileSync(t.outputPath,r),console.log(M.green(`✓`),`Downloaded ${t.artifact.key} to ${t.outputPath}`)}this.printJson({scope:n.task?{type:`task`,id:n.task}:{type:`work-unit`,id:n.workUnit},outputDir:r,downloaded:a.length,totalArtifacts:a.length,totalTasks:i.length})}async resolveTaskForScopedDownload(e){let t=await this.resolveTaskIdOption(e);return{id:t,slug:t}}async resolveWorkUnitTasks(e,t,n){let r=await Xt({organizationId:e,projectId:t,workUnitId:await this.resolveWorkUnitIdOption(n)}),i=[],a=0;for(;;){let n={limit:fn,offset:a,sort:`position`,order:`asc`,statusFilter:`all`,workUnitId:r.id},o=await Ht({organizationId:e,projectId:t},n);if(i.push(...o.items.map(e=>this.toArtifactTask(e))),a+=o.items.length,o.items.length===0||a>=o.total)return i}}async buildScopedDownloadPlan(e,t,n,r){let i=[];for(let a of t){let t=await this.listAllTaskArtifacts(e,a.id),o=r?g.default.join(n,this.sanitizePathSegment(a.slug||a.id)):n;for(let e of t)i.push({artifact:e,task:a,outputPath:g.default.join(o,this.sanitizePathSegment(e.name||g.default.basename(e.key)))})}return i}toArtifactTask(e){return{id:e.id,slug:e.slug||e.id}}async listAllTaskArtifacts(e,t){let n=[],r=0;for(;;){let i=await zt({organizationId:e,taskId:t},{limit:fn,offset:r});if(n.push(...i.items),r+=i.items.length,i.items.length===0||r>=i.total)return n}}assertWritablePlan(e,t){let n=new Set;for(let r of e){if(n.has(r.outputPath))throw Error(`Duplicate artifact output path: ${r.outputPath}`);if(n.add(r.outputPath),!t&&h.default.existsSync(r.outputPath))throw Error(`Output file already exists: ${r.outputPath}. Pass --overwrite to replace it.`)}}async fetchArtifactBuffer(e){let t=await fetch(e);if(!t.ok)throw Error(`Download failed with status ${t.status}`);return Buffer.from(await t.arrayBuffer())}sanitizePathSegment(e){return e.replace(/[<>:"/\\|?*]/g,`_`).split(``).map(e=>e.charCodeAt(0)<32?`_`:e).join(``).trim()||`artifact`}hasListFilters(e){return!!(e.maxKeys||e.continuationToken||e.search||e.labels||e.contentType||e.status)}parseOptionalNumber(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isFinite(n))throw Error(`${t} must be numeric.`);return n}parseClip(e){let t=this.parseJsonFlag(e,`--clip-json`);if(t!==void 0){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`--clip-json must be an object.`);return t}}compact(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}};pn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],pn);var mn=class e{command;constructor(e){this.command=e}static for(t){return new e(t)}fromSchemaGroups(e){for(let t of e)this.addGroup(t);return this.command}addGroup(e){let t=d.z.toJSONSchema(e.schema),n=new Set(t.required??[]);for(let r of e.options){let e=r.source??r.name,i=t.properties?.[e],a=i?.cli,o=r.parse??a?.parse??hn(i),s=i?.description??yn(e),l=r.defaultValue??gn(i),u=r.valueName??a?.valueName??e,d=r.flag??a?.flag??`--${vn(r.name)}`,f=r.envVars??(r.envVar?[r.envVar]:[]),p=f.length>0?!1:r.required??(l===void 0&&n.has(e)),m=o===`boolean`?d:`${d} <${u}>`,h=_n(o),g=new c.Option(m,s);if(f.some(e=>re(e))&&g.hideHelp(),p){h&&g.argParser(h),this.command.addOption(g.makeOptionMandatory());continue}h?(g.argParser(h),l!==void 0&&g.default(l),this.command.addOption(g)):(l===void 0||g.default(l),this.command.addOption(g))}}},hn=e=>e&&(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type)===`boolean`?`boolean`:`string`,gn=e=>{if(typeof e?.default==`string`||typeof e?.default==`boolean`)return e.default;if(typeof e?.default==`number`)return String(e.default)},_n=e=>{if(e===`csv`)return e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);if(e===`json`)return e=>JSON.parse(e)},vn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/_/g,`-`).toLowerCase(),yn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),bn=`0.0.1`,L=`AGIFLOW_ORGANIZATION_ID`,R=`AGIFLOW_PROJECT_ID`,xn=`AGIFLOW_TASK_ID`,Sn=`AGIFLOW_WORK_UNIT_ID`,Cn=(e,t)=>{let n={AGIFLOW_ORGANIZATION_ID:t.org,AGIFLOW_PROJECT_ID:t.project,AGIFLOW_JOB_KIND:e.kind,AGIFLOW_JOB_ID:e.id,AGIFLOW_JOB_SLUG:e.slug??``,AGIFLOW_JOB_TITLE:e.title??``,AGIFLOW_WORKFLOW_ID:t.workflowId,AGIFLOW_JOB_CONTEXT_FILE:t.contextFile};return e.kind===`work-unit`?n[Sn]=e.id:n[xn]=e.id,n},z=d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID`)}),wn=d.z.object({jobKind:d.z.enum([`work-unit`,`task`]).describe(`Job kind (work-unit|task)`),jobId:d.z.string().min(1).describe(`Job ID`)}),Tn=d.z.object({format:d.z.literal(`json`).default(`json`).describe(`Output format`)}),B=(e,t)=>mn.for(e).fromSchemaGroups([...t,{schema:Tn,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),En=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`automation`).description(`Automation JSON commands`);t.command(`list-jobs`).description(`List runnable or claimed automation jobs`).option(`--status <statuses>`,`Comma-separated job statuses`,`planning,todo`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({limit:d.z.string().default(`50`).describe(`Max results`),claimed:d.z.boolean().optional().describe(`List claimed running jobs`),deviceId:d.z.string().optional().describe(`Filter claimed jobs by device ID`)}),options:[{name:`limit`,required:!1,defaultValue:`50`},{name:`claimed`,required:!1},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=await this.requestJson({org:t,project:n,path:`/jobs`,query:{status:e.status,limit:Number(e.limit),claimed:!!e.claimed,deviceId:e.deviceId,format:`json`}});this.printJson(r)})}),t.command(`get-job`).description(`Get a normalized automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:wn,options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Sn,xn]}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=this.resolveJobKind(e.jobKind),i=await this.resolveJobId(e.jobId,r),a=await this.requestJson({org:t,project:n,path:`/jobs/get`,query:{jobKind:r,jobId:i,format:`json`}});this.printJson(a)})}),t.command(`claim-job`).description(`Claim an automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:wn.extend({name:d.z.string().min(1).describe(`Run name`),deviceId:d.z.string().optional().describe(`Device ID running the job`)}),options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Sn,xn]},{name:`name`},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=this.resolveJobKind(e.jobKind),i=await this.resolveJobId(e.jobId,r),a=await this.requestJson({org:t,project:n,path:`/jobs/claim`,method:`POST`,body:{jobKind:r,jobId:i,name:e.name,deviceId:e.deviceId}});this.printJson(a)})}),t.command(`release-job`).description(`Release a claimed automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({workflowId:d.z.string().min(1).describe(`Workflow lock ID`),status:d.z.enum([`completed`,`failed`]).describe(`Release status (completed|failed)`),error:d.z.string().optional().describe(`Error message for failed runs`)}),options:[{name:`workflowId`,flag:`--workflow-id`},{name:`status`},{name:`error`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=await this.requestJson({org:t,project:n,path:`/jobs/release`,method:`POST`,body:{workflowId:e.workflowId,status:e.status,error:e.error}});this.printJson(r)})}),t.command(`dispatch`).description(`Poll ready jobs and hand each off to a consumer command (long-lived)`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({handler:d.z.string().min(1).describe(`Consumer command run per claimed job`),status:d.z.string().default(`planning,todo`).describe(`Comma-separated job statuses to poll`),maxConcurrent:d.z.string().default(`2`).describe(`Max concurrent in-flight handlers`),interval:d.z.string().default(`1200`).describe(`Seconds between polls`),limit:d.z.string().default(`50`).describe(`Jobs fetched per poll`),once:d.z.boolean().optional().describe(`Run a single poll pass then drain and exit`),deviceId:d.z.string().optional().describe(`Device ID for claim attribution`)}),options:[{name:`handler`},{name:`status`,required:!1,defaultValue:`planning,todo`},{name:`maxConcurrent`,flag:`--max-concurrent`,required:!1,defaultValue:`2`},{name:`interval`,required:!1,defaultValue:`1200`},{name:`limit`,required:!1,defaultValue:`50`},{name:`once`,required:!1},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{try{await this.runDispatch(e)}catch(e){this.logDispatch(`fatal: ${e instanceof Error?e.message:String(e)}`),process.exit(1)}})}async runDispatch(e){let{org:t,project:n}=await this.resolveAutomationRoute(e);if(!e.handler)throw Error(`Missing --handler. Pass the consumer command to run per job.`);let r={org:t,project:n,handler:e.handler,statuses:e.status??`planning,todo`,limit:Number(e.limit??`50`),maxConcurrent:Math.max(1,Number(e.maxConcurrent??`2`)),deviceId:e.deviceId,inFlight:new Map},i=Math.max(0,Number(e.interval??`1200`))*1e3,a={requested:!1},o=()=>{a.requested=!0,this.logDispatch(`shutdown requested; draining in-flight handlers`)};process.once(`SIGINT`,o),process.once(`SIGTERM`,o),this.logDispatch(`started org=${t} project=${n} status=${r.statuses} maxConcurrent=${r.maxConcurrent} interval=${i/1e3}s${e.once?` (once)`:``}`);try{do{try{await this.dispatchPass(r)}catch(e){this.logDispatch(`poll error: ${e instanceof Error?e.message:String(e)}`)}if(e.once||a.requested)break;await this.sleep(i,a)}while(!a.requested)}finally{process.off(`SIGINT`,o),process.off(`SIGTERM`,o),await Promise.allSettled(r.inFlight.values())}}async dispatchPass(e){let t=e.maxConcurrent-e.inFlight.size;if(t<=0){this.logDispatch(`at capacity (${e.inFlight.size}/${e.maxConcurrent}); skipping poll`);return}let n=await this.requestJson({org:e.org,project:e.project,path:`/jobs`,query:{status:e.statuses,limit:e.limit,claimed:!1,format:`json`}}),r=this.extractJobs(n),i=0;for(let n of r){if(i>=t)break;if(e.inFlight.has(n.id))continue;let r=await this.claimJobForDispatch(e,n);if(!r)continue;i+=1;let a=this.handleClaimedJob(e,n,r).finally(()=>{e.inFlight.delete(n.id)});e.inFlight.set(n.id,a)}}async claimJobForDispatch(e,t){let n=await this.requestJson({org:e.org,project:e.project,path:`/jobs/claim`,method:`POST`,body:{jobKind:t.kind,jobId:t.id,name:t.slug,deviceId:e.deviceId}});return n&&typeof n==`object`&&n.claimed===!0&&n.workflowId?String(n.workflowId):(this.logDispatch(`skip ${t.kind} ${t.slug}: not claimed (held elsewhere)`),null)}async handleClaimedJob(e,t,n){this.logDispatch(`claimed ${t.kind} ${t.slug} (workflow ${n}); running handler`);let r=this.writeJobContext(e.project,t),i=Cn(t,{org:e.org,project:e.project,workflowId:n,contextFile:r}),a=0,o;try{a=await this.spawnHandler(e.handler,i)}catch(e){a=1,o=e instanceof Error?e.message:String(e)}finally{this.removeJobContext(r)}let s=a===0?`completed`:`failed`;!o&&a!==0&&(o=`handler exited with code ${a}`),await this.releaseDispatch(e,n,s,o),this.logDispatch(`released ${t.kind} ${t.slug} as ${s}${o?`: ${o}`:``}`)}async releaseDispatch(e,t,n,r){try{await this.requestJson({org:e.org,project:e.project,path:`/jobs/release`,method:`POST`,body:{workflowId:t,status:n,error:r}})}catch(e){this.logDispatch(`release failed for workflow ${t}: ${e instanceof Error?e.message:String(e)}`)}}spawnHandler(e,t){return new Promise((n,r)=>{let i=(0,te.spawn)(e,{shell:!0,stdio:[`ignore`,`inherit`,`inherit`],env:{...process.env,...t}});i.on(`error`,r),i.on(`close`,e=>n(e??0))})}writeJobContext(e,t){let n=g.default.join(_.default.homedir(),`.agiflow`,`dispatch`,this.slugifyName(e));(0,h.mkdirSync)(n,{recursive:!0});let r=g.default.join(n,`${t.slug||t.id}.json`);return(0,h.writeFileSync)(r,JSON.stringify(t,null,2),`utf8`),r}removeJobContext(e){try{(0,h.rmSync)(e,{force:!0})}catch{}}extractJobs(e){return e&&typeof e==`object`&&Array.isArray(e.items)?e.items:[]}logDispatch(e){console.error(`[dispatch] ${e}`)}async sleep(e,t){let n=0;for(;n<e&&!t.requested;){let t=Math.min(1e3,e-n);await new Promise(e=>setTimeout(e,t)),n+=t}}async resolveAutomationRoute(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}resolveJobKind(e){if(e===`work-unit`||e===`task`)return e;throw Error(`Missing job kind. Pass --job-kind work-unit|task.`)}async resolveJobId(e,t){return e||(t===`work-unit`?this.resolveWorkUnitIdOption(void 0):this.resolveTaskIdOption(void 0))}slugifyName(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);if(!t)throw Error(`Name must contain at least one letter or number.`);return t}async requestJson(e){return this.requestUrlJson(`${this.configManager.getServerUrl().replace(/\/$/,``)}/api/v1/organizations/${e.org}/projects/${e.project}/automation${e.path}`,e)}async requestUrlJson(e,t){let n=await this.credentialsService.getApiKey();if(!n)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);let r=new URL(e);for(let[e,n]of Object.entries(t.query??{}))n!==void 0&&r.searchParams.set(e,String(n));let i=await fetch(r,{method:t.method??`GET`,headers:{"x-api-key":n,"x-client-type":`agent-cli`,"x-client-version":bn,"Content-Type":`application/json`,Accept:`application/json`},body:t.body?JSON.stringify(t.body):void 0}),a=await i.json().catch(()=>({}));if(!i.ok){let e=typeof a==`object`&&a&&`message`in a?String(a.message):i.statusText;throw Error(e)}return a}};En=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],En);var Dn=`AGIFLOW_ORGANIZATION_ID`,On=`AGIFLOW_PROJECT_ID`,kn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`analytics`).description(`Project analytics JSON commands`);this.addCommonOptions(t.command(`tag-distribution`).description(`Get task tag distribution`)).option(`--prefix <prefix>`,`Filter tags by prefix`).option(`--tags <tags>`,`Comma-separated exact tag values`).option(`--targets-json <json>`,`Target ratios by tag, for gap analysis`).action(e=>this.tagDistribution(e)),this.addCommonOptions(t.command(`assignee-distribution`).description(`Get task assignee distribution`)).option(`--group-by-tag <prefix>`,`Tag prefix to cross-tabulate per assignee`).action(e=>this.assigneeDistribution(e)),this.addCommonOptions(t.command(`timeline-distribution`).description(`Get task timeline distribution`)).option(`--granularity <granularity>`,`Bucket size (day|week|month)`,`week`).option(`--group-by-tag <prefix>`,`Tag prefix to cross-tabulate per time bucket`).action(e=>this.timelineDistribution(e))}async tagDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_tag_distribution`,{...this.commonToolArgs(e),prefix:e.prefix,tags:this.parseCsv(e.tags),targets:this.parseTargets(e.targetsJson)},e);this.printJson(t)})}async assigneeDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_assignee_distribution`,{...this.commonToolArgs(e),groupByTag:e.groupByTag},e);this.printJson(t)})}async timelineDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_timeline_distribution`,{...this.commonToolArgs(e),granularity:e.granularity,groupByTag:e.groupByTag},e);this.printJson(t)})}async callAnalyticsTool(e,t,n){this.requireJsonFormat(n.format,`analytics commands`),await this.setupClient();let{serverUrl:r,apiKey:i}=await this.resolveApiClientContext(),{org:a,projectId:o}=await this.resolveProjectScope(n);return tn({serverUrl:r,apiKey:i,organizationId:a,projectId:o,toolName:e,toolArgs:this.compact(t)})}addCommonOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Dn)).addOption(this.buildEnvIdOption(`--project <projectIdOrSlug>`,`Project ID or slug`,On)).requiredOption(`--start-date <date>`,`Start of date range (ISO 8601)`).requiredOption(`--end-date <date>`,`End of date range (ISO 8601)`).option(`--date-field <field>`,`Date field (createdAt|dueDate|completedAt)`).option(`--status-filter <filter>`,`Status filter (active|all)`).option(`--format <format>`,`Output format (json)`,`json`)}async resolveProjectScope(e){let t=await this.resolveOrganizationId(e.org);return{org:t,projectId:(await I({organizationId:t,id:await this.resolveProjectIdOption(e.project)})).id}}commonToolArgs(e){return this.requireJsonFormat(e.format,`analytics commands`),this.compact({org:e.org,project:e.project,startDate:e.startDate,endDate:e.endDate,dateField:e.dateField,statusFilter:e.statusFilter,format:e.format})}parseTargets(e){let t=this.parseJsonFlag(e,`--targets-json`);if(t!==void 0){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`--targets-json must be an object.`);return t}}compact(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&![`org`,`project`,`format`].includes(n)&&(t[n]=r);return t}};kn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],kn);var An=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault`,{method:`GET`,params:e})).data,jn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`GET`,params:e})).data,Mn=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`PUT`,params:e,body:t})).data,Nn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`DELETE`,params:e})).data,Pn=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/bulk`,{method:`POST`,params:e,body:t})).data,Fn=`AGIFLOW_ORGANIZATION_ID`,In=`AGIFLOW_PROJECT_ID`,Ln=`AGIFLOW_ENVIRONMENT_ID`,Rn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`vault`).description(`Vault JSON commands`);this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`list`).description(`List vault entries`))).action(e=>this.list(e)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`get <key>`).description(`Get a vault entry`))).action((e,t)=>this.get(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`set <key>`).description(`Set a vault entry`))).requiredOption(`--value <value>`,`Vault entry value`).option(`--description <description>`,`Vault entry description`).option(`--secret`,`Mask this entry in list/get responses`).action((e,t)=>this.set(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`delete <key>`).description(`Delete a vault entry`))).action((e,t)=>this.delete(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`bulk-upsert`).description(`Bulk upsert vault entries`))).requiredOption(`--entries-json <json>`,`Array of entries or { "entries": [...] }`).action(e=>this.bulkUpsert(e))}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`vault commands`),await this.setupClient();let t=await this.resolveVaultScope(e),n=await An({organizationId:t.org,projectId:t.project,environmentId:t.environment});this.printJson({entries:n,total:Array.isArray(n)?n.length:0})})}async get(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t),r=await jn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e});this.printJson({entry:r})})}async set(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t),r=await Mn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e},{value:t.value,description:t.description,isSecret:t.secret===!0});this.printJson({entry:r})})}async delete(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t);await Nn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e}),this.printJson({deleted:!0,key:e})})}async bulkUpsert(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`vault commands`),await this.setupClient();let t=await this.resolveVaultScope(e),n=this.parseEntries(e.entriesJson),r=await Pn({organizationId:t.org,projectId:t.project,environmentId:t.environment},{entries:n});this.printJson({entries:r,total:Array.isArray(r)?r.length:0})})}addVaultScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Fn)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,In)).addOption(this.buildEnvIdOption(`--environment <environmentId>`,`Environment ID`,Ln))}addJsonFormatOption(e){return e.option(`--format <format>`,`Output format (json)`,`json`)}async resolveVaultScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project),environment:await this.resolveEnvironmentId(e.environment)}}async resolveEnvironmentId(e){let t=e??process.env.AGIFLOW_ENVIRONMENT_ID;if(!t)throw Error(`Missing environment ID. Pass --environment or set AGIFLOW_ENVIRONMENT_ID.`);return t}parseEntries(e){let t=this.parseJsonFlag(e,`--entries-json`),n=t&&typeof t==`object`&&!Array.isArray(t)&&`entries`in t?t.entries:t;if(!Array.isArray(n))throw Error(`--entries-json must be an array or an object containing entries.`);return n.map((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`entries[${t}] must be an object.`);let n=e;if(typeof n.key!=`string`||!n.key)throw Error(`entries[${t}].key is required.`);if(typeof n.value!=`string`||!n.value)throw Error(`entries[${t}].value is required.`);return{key:n.key,value:n.value,description:typeof n.description==`string`?n.description:void 0,isSecret:typeof n.isSecret==`boolean`?n.isSecret:!1}})}};Rn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],Rn),d.z.enum([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`HEAD`]);var zn=d.z.union([d.z.literal(200),d.z.literal(201),d.z.literal(204),d.z.literal(400),d.z.literal(401),d.z.literal(403),d.z.literal(404),d.z.literal(409),d.z.literal(422),d.z.literal(500),d.z.literal(502),d.z.literal(503)]);d.z.enum([`application/json`,`application/xml`,`text/plain`,`multipart/form-data`]),d.z.object({error:d.z.string(),message:d.z.string().optional(),statusCode:zn,details:d.z.record(d.z.string(),d.z.unknown()).optional()}),d.z.object({total:d.z.number(),limit:d.z.number(),offset:d.z.number(),hasNext:d.z.boolean().optional(),hasPrev:d.z.boolean().optional()});var Bn=d.z.object({id:d.z.enum([`apple`,`google`,`github`]),displayName:d.z.string(),flow:d.z.enum([`native-id-token`,`oauth-browser`])}).strict();d.z.object({emailPassword:d.z.boolean(),providers:d.z.array(Bn)}).strict(),d.z.object({ok:d.z.boolean()}).strict(),d.z.object({name:d.z.string().min(2).max(80),email:d.z.string().max(160).email(),subject:d.z.string().min(2).max(120),message:d.z.string().min(10).max(4e3)}).strict();var Vn=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string().nullable(),role:d.z.string()}).strict();d.z.object({organizations:d.z.array(Vn)}).strict(),d.z.object({api_key:d.z.string().describe(`The API key for the agent`),key_id:d.z.string().describe(`ID of the API key`),organization_id:d.z.string().describe(`Organization ID`),organization_name:d.z.string().describe(`Organization name`),agent_user_id:d.z.string().describe(`User ID of the agent`),expires_at:d.z.number().describe(`Expiration timestamp in milliseconds`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID to exchange token for`)}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict();var Hn=d.z.object({organizationId:d.z.string(),projectId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),resourcePath:d.z.string(),scopes:d.z.string().nullable(),clientId:d.z.string(),expiresAt:d.z.string()}).strict(),Un=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),role:d.z.string()}).strict();d.z.object({resourceContext:Hn.nullable(),organizations:d.z.array(Un)}).strict();var Wn=d.z.object({code_challenge:d.z.string().min(1)}).strict();d.z.object({success:d.z.boolean(),resourcePath:d.z.string(),organizationId:d.z.string(),projectId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable()}).strict(),d.z.object({codeChallenge:d.z.string().min(1),organizationId:d.z.string().optional(),clientId:d.z.string().optional(),projectId:d.z.string().optional(),workUnitId:d.z.string().optional(),taskId:d.z.string().optional()}).strict(),d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string()}),d.z.object({name:d.z.string().min(2).max(80).describe(`Organization display name`)}).strict(),d.z.object({version:d.z.string()}).strict();var V=d.z.object({}).strict();d.z.object({version:d.z.string()}).strict();var H=d.z.object({}).strict();d.z.object({mcpServers:d.z.object({})}).strict();var Gn=d.z.object({id:d.z.string(),mcpServerId:d.z.string(),serverName:d.z.string(),description:d.z.string().nullable(),isInternal:d.z.boolean(),scope:d.z.enum([`global`,`organization`,`project`,`task`]),isEnabled:d.z.boolean(),hasProgressiveDisclosure:d.z.boolean(),progressiveDisclosure:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}).nullable(),priority:d.z.number()}).strict();d.z.object({servers:d.z.array(Gn),projectId:d.z.string().optional()}).strict();var Kn=d.z.object({projectId:d.z.string().optional(),taskId:d.z.string().optional(),workUnitId:d.z.string().optional()}).strict();d.z.object({id:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().optional(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),serverName:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().optional(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({id:d.z.string(),organizationId:d.z.string(),projectId:d.z.string().nullable(),taskId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),progressiveDisclosure:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict();var qn=d.z.object({projectId:d.z.string().optional(),taskId:d.z.string().optional(),workUnitId:d.z.string().optional()}).strict();d.z.object({progressiveDisclosure:d.z.boolean()}).strict(),d.z.object({progressiveDisclosure:d.z.boolean()}).strict();var Jn=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),serverName:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),isInternal:d.z.boolean(),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),availableTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),availableResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Jn)}).strict();var Yn=d.z.union([d.z.object({type:d.z.string(),command:d.z.string().min(1),args:d.z.array(d.z.string()).optional(),env:d.z.object({}).optional()}).strict(),d.z.object({type:d.z.string(),url:d.z.string().url(),headers:d.z.object({}).optional()}).strict()]);d.z.object({serverName:d.z.string().min(1),displayName:d.z.string().min(1),description:d.z.string().optional(),serverConfig:Yn}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({serverName:d.z.string().min(1).optional(),displayName:d.z.string().min(1).optional(),description:d.z.string().optional(),serverConfig:Yn.optional()}).strict(),d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({taskId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),taskId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({taskId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({taskId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({workUnitId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),workUnitId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({workUnitId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),workUnitId:d.z.string().min(1)}).strict();var Xn=d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),parentWorkUnitId:d.z.string().nullable(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable(),priority:d.z.enum([`low`,`medium`,`high`]).nullable(),statusId:d.z.string().nullable(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable(),ownerId:d.z.string(),estimatedEffort:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),startDate:d.z.string().nullable(),targetDate:d.z.string().nullable(),completedAt:d.z.string().nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),taskCount:d.z.number().optional().describe(`Number of tasks in this work unit`)}).strict(),Zn=d.z.object({title:d.z.string().min(1).max(255).optional().describe(`Work unit title`),slug:d.z.string().optional().describe(`Work unit slug`),description:d.z.string().nullable().optional(),parentWorkUnitId:d.z.string().nullable().optional(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:d.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:d.z.string().nullable().optional(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:d.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:d.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:d.z.string().nullable().optional(),targetDate:d.z.string().nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({action:d.z.union([d.z.string(),d.z.string(),d.z.string()]),artifactId:d.z.string().min(1)}).strict();var Qn=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),projectId:d.z.string().nullable(),isStartedState:d.z.boolean(),isCompletionState:d.z.boolean(),isTerminalState:d.z.boolean(),isBlockedState:d.z.boolean(),isAgentPickable:d.z.boolean(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Qn),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1).optional()}).strict(),d.z.object({statusIds:d.z.array(d.z.string().min(1))}).strict(),d.z.object({organizationId:d.z.string().min(1).nullable().optional(),projectId:d.z.string().nullable().optional(),isStartedState:d.z.boolean().optional(),isCompletionState:d.z.boolean().optional(),isTerminalState:d.z.boolean().optional(),isBlockedState:d.z.boolean().optional(),isAgentPickable:d.z.boolean().optional(),key:d.z.string().min(1).max(50),name:d.z.string().min(1).max(100),description:d.z.string().max(500).nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional(),color:d.z.string().nullable().optional(),isActive:d.z.boolean().optional(),isDefault:d.z.boolean().optional()}).strict();var $n=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`position`,`key`]),order:d.z.enum([`asc`,`desc`])}).strict();d.z.object({projectId:d.z.string().nullable().optional(),isStartedState:d.z.boolean().optional(),isCompletionState:d.z.boolean().optional(),isTerminalState:d.z.boolean().optional(),isBlockedState:d.z.boolean().optional(),isAgentPickable:d.z.boolean().optional(),key:d.z.string().min(1).max(50).optional(),name:d.z.string().min(1).max(100).optional(),description:d.z.string().max(500).nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional(),color:d.z.string().nullable().optional(),isActive:d.z.boolean().optional(),isDefault:d.z.boolean().optional()}).strict();var er=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),name:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),executable:d.z.string(),defaultArgs:d.z.string().nullable(),isEnabled:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict(),d.z.object({name:d.z.string().min(1).max(255),displayName:d.z.string().min(1).max(255),description:d.z.string().optional(),executable:d.z.string().min(1).max(255),defaultArgs:d.z.string().optional(),isEnabled:d.z.boolean()}).strict(),d.z.object({items:d.z.array(er),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var tr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`displayName`]),order:d.z.enum([`asc`,`desc`]),isEnabled:d.z.boolean()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),displayName:d.z.string().min(1).max(255).optional(),description:d.z.string().optional(),executable:d.z.string().min(1).max(255).optional(),defaultArgs:d.z.string().optional(),isEnabled:d.z.boolean().optional()}).strict();var nr=d.z.object({id:d.z.string(),organizationId:d.z.string(),agentTypeId:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),metadata:d.z.object({}).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict(),d.z.object({agentTypeId:d.z.string().min(1),name:d.z.string().min(1).max(255),description:d.z.string().max(1e3).nullable().optional(),isDefault:d.z.boolean()}).strict(),d.z.object({items:d.z.array(nr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var rr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`]),order:d.z.enum([`asc`,`desc`])}).strict(),ir=d.z.object({agentTypeId:d.z.string().min(1)}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string()}).strict(),d.z.object({}),d.z.object({name:d.z.string().min(1).max(255).optional(),description:d.z.string().max(1e3).nullable().optional(),isDefault:d.z.boolean().optional()}).strict(),d.z.object({}).strict();var ar=d.z.object({id:d.z.string(),profileId:d.z.string(),credentialType:d.z.string(),customName:d.z.string().nullable(),r2Key:d.z.string(),size:d.z.number().max(9007199254740991).int(),checksum:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string(),type:d.z.enum([`gemini`,`codex`,`custom`]).optional()}).strict();var or=d.z.object({originalSize:d.z.number().max(9007199254740991).int(),fileCount:d.z.number().min(0).max(9007199254740991).int(),checksum:d.z.string().min(64).max(64)}).strict();d.z.object({credentialType:d.z.enum([`gemini`,`codex`,`custom`]),customName:d.z.string().min(1).max(255).optional(),data:d.z.string().min(1),metadata:or}).strict(),d.z.object({items:d.z.array(ar),total:d.z.number().min(0).max(9007199254740991).int()}).strict();var sr=d.z.object({download:d.z.boolean()}).strict(),cr=d.z.object({id:d.z.string(),agentProfileId:d.z.string(),key:d.z.string(),value:d.z.string(),description:d.z.string().nullable(),isRequired:d.z.boolean(),isSecret:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(cr),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),profileId:d.z.string()}).strict(),d.z.object({}),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),profileId:d.z.string(),key:d.z.string()}).strict(),d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().max(1e3).optional(),isRequired:d.z.boolean(),isSecret:d.z.boolean()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({variables:d.z.array(d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().max(1e3).optional(),isRequired:d.z.boolean(),isSecret:d.z.boolean()}).strict())}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string()}).strict(),d.z.object({url:d.z.string().url(),state:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),provider:d.z.enum([`github`,`gitlab`])}).strict(),d.z.object({redirectUri:d.z.string().url()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({code:d.z.string().min(1),state:d.z.string().min(1)}).strict();var lr=d.z.object({id:d.z.string(),organizationId:d.z.string(),provider:d.z.enum([`github`,`gitlab`]),scopes:d.z.array(d.z.string()),metadata:d.z.object({}).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(lr),d.z.object({});var ur=d.z.object({id:d.z.number(),name:d.z.string(),fullName:d.z.string(),cloneUrl:d.z.string(),sshUrl:d.z.string(),defaultBranch:d.z.string(),private:d.z.boolean(),owner:d.z.object({login:d.z.string(),avatarUrl:d.z.string().nullable()}).strict(),description:d.z.string().nullable(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(ur),total:d.z.number()}).strict();var dr=d.z.object({type:d.z.enum([`all`,`owner`,`public`,`private`,`member`]),sort:d.z.enum([`created`,`updated`,`pushed`,`full_name`]),direction:d.z.enum([`asc`,`desc`]),per_page:d.z.number().min(1).max(100),page:d.z.number().min(1)}).strict(),fr=d.z.object({name:d.z.string(),protected:d.z.boolean()}).strict();d.z.object({items:d.z.array(fr),total:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),owner:d.z.string().min(1),repo:d.z.string().min(1)}).strict();var pr=d.z.object({per_page:d.z.number().min(1).max(100),page:d.z.number().min(1)}).strict(),mr=d.z.object({id:d.z.string(),name:d.z.string(),type:d.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:d.z.string().optional(),version:d.z.string().optional(),metadata:d.z.object({}).optional(),is_active:d.z.boolean(),last_seen_at:d.z.string().datetime().optional(),created_at:d.z.string().datetime(),updated_at:d.z.string().datetime(),agentTypes:d.z.array(d.z.object({agentTypeId:d.z.string(),name:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),executable:d.z.string(),defaultArgs:d.z.string().nullable(),isEnabled:d.z.boolean(),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict()).optional(),activeDaemon:d.z.object({id:d.z.string(),status:d.z.string(),lastHeartbeat:d.z.string().datetime(),isActive:d.z.boolean()}).strict().nullable().optional()}).strict();d.z.object({devices:d.z.array(mr),total:d.z.number()}).strict(),d.z.object({name:d.z.string().min(1),deviceGuid:d.z.string().min(1).optional(),type:d.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:d.z.string().optional(),version:d.z.string().optional(),metadata:d.z.object({}).optional(),agentTypes:d.z.array(d.z.object({agentType:d.z.string().min(1),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict()).optional()}).strict(),d.z.object({name:d.z.string().min(1).optional(),metadata:d.z.object({}).optional(),is_active:d.z.boolean().optional()}).strict();var hr=d.z.object({id:d.z.string(),deviceId:d.z.string(),agentTypeId:d.z.string(),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean(),createdAt:d.z.string().datetime(),updatedAt:d.z.string().datetime()}).strict();d.z.object({items:d.z.array(hr),total:d.z.number()}).strict();var gr=d.z.object({deviceId:d.z.string().optional(),agentTypeId:d.z.string().optional(),hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional(),limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}).strict();d.z.object({deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict(),d.z.object({hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional()}).strict(),d.z.object({hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional()}).strict();var _r=d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),emailVerified:d.z.boolean(),image:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),twoFactorEnabled:d.z.boolean().nullable(),lastLoginMethod:d.z.string().nullable()}).strict(),vr=d.z.object({id:d.z.string(),organizationId:d.z.string(),userId:d.z.string(),role:d.z.string(),createdAt:d.z.string(),description:d.z.string().nullable(),prompt:d.z.string().nullable()}).strict(),yr=d.z.object({user:_r,member:vr}).strict();d.z.object({members:d.z.array(yr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var br=d.z.object({limit:d.z.number().min(1).max(100).int().describe(`Max results`),offset:d.z.number().min(0).max(9007199254740991).int().describe(`Result offset`),sortBy:d.z.enum([`createdAt`,`name`,`email`]),sortDirection:d.z.enum([`asc`,`desc`]),filterField:d.z.enum([`role`,`createdAt`]).optional(),filterOperator:d.z.enum([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`nin`,`contains`]).optional(),filterValue:d.z.string().optional()}).strict();d.z.object({created:d.z.array(yr),errors:d.z.array(d.z.object({name:d.z.string(),error:d.z.string()}).strict()).optional()}).strict();var xr=d.z.object({email:d.z.string().email().optional().describe(`Existing user email`),name:d.z.string().min(1).max(255).describe(`Agent member name`),description:d.z.string().optional().describe(`Agent description`),prompt:d.z.string().optional().describe(`Agent prompt`)}).strict();d.z.object({agents:d.z.array(xr)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),description:d.z.string().optional(),prompt:d.z.string().optional()}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict();var Sr=d.z.object({id:d.z.string(),teamId:d.z.string(),userId:d.z.string(),createdAt:d.z.string(),user:d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),image:d.z.string().nullable().optional()}).strict().optional()}).strict();d.z.object({members:d.z.array(Sr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1)}).strict();var Cr=d.z.object({limit:d.z.number().min(1).max(100).int(),offset:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({userId:d.z.string().min(1)}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1),userId:d.z.string().min(1)}).strict();var wr=d.z.object({id:d.z.string(),teamId:d.z.string(),projectId:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({projects:d.z.array(wr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1)}).strict();var Tr=d.z.object({limit:d.z.number().min(1).max(100).int(),offset:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({projectId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1),projectId:d.z.string().min(1)}).strict();var Er=d.z.object({id:d.z.string(),key:d.z.string().optional().describe(`Only returned on creation`),name:d.z.string().optional(),prefix:d.z.string().optional(),start:d.z.string().optional().describe(`First characters of the key`),referenceId:d.z.string(),expiresAt:d.z.string().optional(),createdAt:d.z.string(),lastRequest:d.z.string().optional(),remaining:d.z.number().optional(),rateLimitEnabled:d.z.boolean(),permissions:d.z.object({}).optional(),metadata:d.z.object({}).optional()}).strict();d.z.object({name:d.z.string().min(1).max(255).optional().describe(`Optional name for the API key`),expiresIn:d.z.number().optional().describe(`Expiration time in seconds`),userId:d.z.string().optional().describe(`Optional user ID - defaults to authenticated user if not provided`),prefix:d.z.string().optional().describe(`Prefix for the API key`),remaining:d.z.number().optional().describe(`Number of requests remaining`),metadata:d.z.object({}).optional().describe(`Additional metadata for the API key`),refillAmount:d.z.number().optional().describe(`Amount to refill on interval`),refillInterval:d.z.number().optional().describe(`Refill interval in milliseconds`),rateLimitTimeWindow:d.z.number().optional().describe(`Rate limit time window in ms`),rateLimitMax:d.z.number().optional().describe(`Maximum requests in time window`),rateLimitEnabled:d.z.boolean().optional().describe(`Enable rate limiting`),permissions:d.z.object({}).optional().describe(`Permissions for the API key`)}).strict(),d.z.object({items:d.z.array(Er),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Dr=d.z.object({userId:d.z.string().optional().describe(`Filter by user ID`),includeExpired:d.z.boolean().optional().describe(`Include expired keys`),limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`lastRequest`]),order:d.z.enum([`asc`,`desc`])}).strict();d.z.object({id:d.z.string()}).strict();var Or=d.z.object({id:d.z.string(),activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]),title:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),projectId:d.z.string().nullable(),taskId:d.z.string().nullable(),memberId:d.z.string().nullable(),agentSessionId:d.z.string().nullable(),deviceId:d.z.string().nullable(),daemonId:d.z.string().nullable(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().nullable(),ipAddress:d.z.string().nullable(),userAgent:d.z.string().nullable(),createdAt:d.z.string()}).strict();d.z.object({items:d.z.array(Or),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict();var kr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]).optional(),projectId:d.z.string().optional(),taskId:d.z.string().optional(),memberId:d.z.string().optional(),agentSessionId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),sort:d.z.enum([`createdAt`,`activityType`,`title`]),order:d.z.enum([`asc`,`desc`]),search:d.z.string().optional()}).strict(),Ar=d.z.object({activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]),title:d.z.string().min(1),description:d.z.string().optional(),projectId:d.z.string().optional(),taskId:d.z.string().optional(),memberId:d.z.string().optional(),agentSessionId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().optional(),ipAddress:d.z.string().optional(),userAgent:d.z.string().optional()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),activityId:d.z.string().min(1)}).strict(),d.z.object({title:d.z.string().min(1).optional(),description:d.z.string().optional(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().optional()}).strict(),d.z.object({ok:d.z.boolean()}).strict(),d.z.object({kind:d.z.enum([`feedback`,`content_report`,`user_report`]),subject:d.z.string().min(2).max(120),message:d.z.string().min(10).max(4e3),targetType:d.z.enum([`task`,`comment`,`artifact`,`member`,`project`,`workspace`]).optional(),targetId:d.z.string().min(1).max(160).optional(),reportedMemberId:d.z.string().min(1).max(160).optional(),muteRequested:d.z.boolean().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),taskId:d.z.string().min(1).describe(`Task ID or slug`)}).strict();var jr=d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),statusId:d.z.string(),assigneeId:d.z.string().nullable(),creatorId:d.z.string(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),priority:d.z.enum([`low`,`medium`,`high`]),dueDate:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),tags:d.z.array(d.z.string()).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),status:d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string().nullable()}).strict().nullable().optional(),assignee:d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),role:d.z.string()}).strict().nullable().optional(),workUnit:d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),type:d.z.string().nullable(),priority:d.z.string().nullable(),status:d.z.string().nullable()}).strict().nullable().optional()}).strict();d.z.object({items:d.z.array(jr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Mr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search tasks`),sort:d.z.enum([`createdAt`,`updatedAt`,`title`,`position`,`priority`,`dueDate`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`),columnId:d.z.string().optional(),statusId:d.z.string().optional(),statusIds:d.z.array(d.z.string()).optional().describe(`Comma-separated status IDs`),workUnitId:d.z.string().optional().describe(`Work unit ID`),assigneeId:d.z.string().optional().describe(`Assignee member ID`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),projectId:d.z.string().optional().describe(`Project ID`),tags:d.z.array(d.z.string()).optional().describe(`Comma-separated tags`),statusFilter:d.z.enum([`active`,`all`]).describe(`Status filter`)}).strict(),Nr=d.z.object({title:d.z.string().min(1).max(255).optional().describe(`Task title`),slug:d.z.string().optional().describe(`Task slug`),description:d.z.string().nullable().optional(),workUnitId:d.z.string().nullable().optional(),statusId:d.z.string().min(1).optional(),assigneeId:d.z.string().nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:d.z.string().nullable().optional(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),tags:d.z.array(d.z.string()).nullable().nullable().optional()}).strict(),Pr=d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),size:d.z.number(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Pr),total:d.z.number()}).strict();var Fr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}).strict();d.z.object({url:d.z.string(),expiresIn:d.z.number()}).strict();var Ir=d.z.object({key:d.z.string().min(1)}).strict(),Lr=d.z.object({x:d.z.number().min(0).max(1).describe(`Left edge as fraction 0-1`),y:d.z.number().min(0).max(1).describe(`Top edge as fraction 0-1`),width:d.z.number().min(0).max(1).describe(`Width as fraction 0-1`),height:d.z.number().min(0).max(1).describe(`Height as fraction 0-1`)}).strict();d.z.object({action:d.z.union([d.z.string(),d.z.string()]),artifactId:d.z.string().min(1),clip:Lr.optional()}).strict(),d.z.object({action:d.z.union([d.z.string(),d.z.string(),d.z.string()]),artifactId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),statusId:d.z.string().min(1)}).strict();var Rr=d.z.object({taskIds:d.z.array(d.z.string().min(1))}).strict(),zr=d.z.object({id:d.z.string(),taskId:d.z.string(),memberId:d.z.string(),assigneeId:d.z.string().nullable(),content:d.z.string(),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),member:d.z.object({id:d.z.string(),name:d.z.string().nullable(),email:d.z.string()}).strict().nullable(),assignee:d.z.object({id:d.z.string(),name:d.z.string().nullable(),email:d.z.string()}).strict().nullable()}).strict(),Br=d.z.object({assigneeId:d.z.string().nullable().nullable().optional(),content:d.z.string().min(1).max(1e4).describe(`Comment content`),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({items:d.z.array(zr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Vr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),sort:d.z.enum([`createdAt`,`updatedAt`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),taskId:d.z.string().min(1).describe(`Task ID or slug`),commentId:d.z.string().min(1).describe(`Comment ID`)}).strict();var Hr=d.z.object({assigneeId:d.z.string().nullable().nullable().optional(),content:d.z.string().min(1).max(1e4).optional().describe(`Comment content`),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({projectId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),workUnitId:d.z.string().min(1).describe(`Work unit ID or slug`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`)}).strict(),d.z.object({title:d.z.string().min(1).max(255).describe(`Work unit title`),slug:d.z.string().optional().describe(`Work unit slug`),description:d.z.string().nullable().optional(),projectId:d.z.string().min(1).optional(),parentWorkUnitId:d.z.string().nullable().optional(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:d.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:d.z.string().nullable().optional(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:d.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:d.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:d.z.string().nullable().optional(),targetDate:d.z.string().nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({items:d.z.array(Xn),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Ur=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search work units`),sort:d.z.enum([`createdAt`,`updatedAt`,`title`,`priority`,`targetDate`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`),type:d.z.enum([`epic`,`feature`,`initiative`]).optional().describe(`Work unit type`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Work unit priority`),statuses:d.z.array(d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`])).optional().describe(`Comma-separated work unit statuses`),statusId:d.z.string().optional().describe(`Kanban status ID`),excludeStatus:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).optional().describe(`Exclude status`),ownerId:d.z.string().optional().describe(`Owner member ID`),parentWorkUnitId:d.z.string().optional().describe(`Parent work unit ID`)}).strict();d.z.object({progress:d.z.number().describe(`Overall progress percentage (0-100)`),completedTasks:d.z.number().describe(`Number of completed direct tasks`),totalTasks:d.z.number().describe(`Total number of direct tasks`),completedChildWorkUnits:d.z.number().describe(`Number of completed child work units`),totalChildWorkUnits:d.z.number().describe(`Total number of child work units`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),taskId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`)}).strict();var Wr=d.z.object({title:d.z.string().min(1).max(255).describe(`Task title`),slug:d.z.string().optional().describe(`Task slug`),description:d.z.string().nullable().optional(),projectId:d.z.string().min(1).optional(),workUnitId:d.z.string().nullable().optional(),statusId:d.z.string().min(1).optional(),assigneeId:d.z.string().nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:d.z.string().nullable().optional(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),tags:d.z.array(d.z.string()).nullable().nullable().optional()}).strict(),Gr=d.z.object({columnId:d.z.string().min(1),position:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1)}).strict();var Kr=d.z.object({sessionId:d.z.string().optional(),transportType:d.z.string().optional()}).strict(),qr=d.z.object({id:d.z.string(),environmentId:d.z.string(),key:d.z.string(),value:d.z.string(),description:d.z.string().nullable(),isSecret:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(qr),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1)}).strict(),d.z.object({}),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1),key:d.z.string().min(1)}).strict(),d.z.object({value:d.z.string().min(1),description:d.z.string().optional(),isSecret:d.z.boolean()}).strict(),d.z.object({entries:d.z.array(d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().optional(),isSecret:d.z.boolean()}).strict())}).strict();var Jr=d.z.object({id:d.z.string(),projectId:d.z.string(),name:d.z.string(),key:d.z.string(),type:d.z.string(),description:d.z.string().nullable(),isDefault:d.z.boolean(),permissions:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(Jr);var Yr=d.z.object({read:d.z.array(d.z.string()),write:d.z.array(d.z.string())}).strict();d.z.object({name:d.z.string().min(1).max(255),key:d.z.string().min(1).max(255),type:d.z.enum([`development`,`staging`,`production`,`custom`]),description:d.z.string().nullable().optional(),isDefault:d.z.boolean(),permissions:Yr.optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),key:d.z.string().min(1).max(255).optional(),type:d.z.enum([`development`,`staging`,`production`,`custom`]).optional(),description:d.z.string().nullable().optional(),isDefault:d.z.boolean().optional(),permissions:Yr.optional()}).strict(),d.z.object({message:d.z.string()}).strict();var Xr=d.z.object({id:d.z.string(),organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),deviceId:d.z.string().nullable(),daemonId:d.z.string().nullable(),name:d.z.string(),status:d.z.enum([`running`,`completed`,`failed`]),contextData:d.z.string().nullable(),error:d.z.string().nullable(),startedAt:d.z.string(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),Zr=d.z.object({id:d.z.string(),name:d.z.string(),startedAt:d.z.string()}).strict();d.z.object({error:d.z.string(),holder:Zr}).strict(),d.z.object({name:d.z.string().min(1),workUnitId:d.z.string().optional(),taskId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),contextData:d.z.string().optional()}).strict(),d.z.object({items:d.z.array(Xr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Qr=d.z.object({status:d.z.enum([`running`,`completed`,`failed`]).optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),limit:d.z.number().min(1).max(100).optional(),offset:d.z.number().min(0).optional()}).strict(),$r=d.z.object({workUnitId:d.z.string().optional(),taskId:d.z.string().optional()}).strict();d.z.object({id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).optional(),contextData:d.z.string().nullable().optional()}).strict(),d.z.object({status:d.z.enum([`completed`,`failed`]),error:d.z.string().optional()}).strict();var ei=d.z.enum([`work-unit`,`task`]),ti=d.z.object({id:d.z.string(),kind:ei,slug:d.z.string(),title:d.z.string(),description:d.z.string().nullable(),status:d.z.string(),priority:d.z.string().nullable(),createdAt:d.z.string(),payload:d.z.object({})}).strict();d.z.object({items:d.z.array(ti)}).strict();var ni=d.z.object({jobKind:ei,jobId:d.z.string().min(1),format:d.z.string()}).strict();d.z.object({claimed:d.z.boolean(),workflowId:d.z.string().optional(),job:ti.nullable().optional(),holder:d.z.object({id:d.z.string(),name:d.z.string(),deviceId:d.z.string().nullable(),startedAt:d.z.string()}).strict().optional()}).strict(),d.z.object({jobKind:ei,jobId:d.z.string().min(1),name:d.z.string().min(1),deviceId:d.z.string().optional()}).strict(),d.z.object({released:d.z.boolean(),workflowId:d.z.string(),status:d.z.enum([`completed`,`failed`]),job:ti.nullable()}).strict(),d.z.object({workflowId:d.z.string().min(1),status:d.z.enum([`completed`,`failed`]),error:d.z.string().optional()}).strict();var ri=d.z.object({key:d.z.string(),name:d.z.string(),color:d.z.string(),position:d.z.number()}).strict(),ii=d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string(),icon:d.z.string(),color:d.z.string(),isBuiltIn:d.z.boolean(),statusCount:d.z.number(),starterTaskCount:d.z.number(),statuses:d.z.array(ri)}).strict();d.z.object({templates:d.z.array(ii)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1).describe(`Project ID or slug`)}).strict(),d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),key:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),ownerId:d.z.string(),path:d.z.string().nullable(),templateId:d.z.string().nullable(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),color:d.z.string().nullable(),icon:d.z.string().nullable(),isArchived:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({error:d.z.string(),message:d.z.string(),feature:d.z.enum([`seats`,`projects`,`apiKeys`,`mcpServers`]),plan:d.z.string(),limit:d.z.number(),used:d.z.number(),upgradeRequired:d.z.boolean()}).strict();var ai=d.z.object({name:d.z.string().min(1).max(255).describe(`Project name`),slug:d.z.string().optional().describe(`Project slug`),description:d.z.string().nullable().optional(),organizationId:d.z.string().optional(),path:d.z.string().nullable().optional(),templateId:d.z.string().nullable().optional(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),color:d.z.string().nullable().optional(),icon:d.z.string().nullable().optional()}).strict(),oi=d.z.object({id:d.z.string(),title:d.z.string(),value:d.z.number(),change:d.z.string(),trend:d.z.enum([`up`,`down`,`neutral`]),period:d.z.string()}).strict();d.z.object({activeProjects:d.z.number(),tasksInProgress:d.z.number(),completedTasks:d.z.number(),blockedTasks:d.z.number(),stats:d.z.array(oi)}).strict();var si=d.z.object({period:d.z.enum([`7`,`30`,`90`])}).strict();d.z.object({items:d.z.array(Qn),total:d.z.number(),limit:d.z.number().optional(),offset:d.z.number().optional()}).strict();var ci=d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),role:d.z.string()}).strict().nullable(),li=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),key:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),path:d.z.string().nullable(),templateId:d.z.string().nullable(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),color:d.z.string().nullable(),icon:d.z.string().nullable(),isArchived:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string(),owner:ci}).strict();d.z.object({items:d.z.array(li),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var ui=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search projects`),sort:d.z.enum([`createdAt`,`updatedAt`,`name`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict(),di=d.z.object({name:d.z.string().min(1).max(255).optional().describe(`Project name`),slug:d.z.string().optional().describe(`Project slug`),description:d.z.string().nullable().optional(),organizationId:d.z.string().optional(),path:d.z.string().nullable().optional(),templateId:d.z.string().nullable().optional(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),color:d.z.string().nullable().optional(),icon:d.z.string().nullable().optional(),isArchived:d.z.boolean().optional().describe(`Whether project is archived`)}).strict(),fi=d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),status:d.z.enum([`pending`,`uploaded`]),size:d.z.number().nullable(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),labels:d.z.array(d.z.string()).nullable().optional(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(fi),total:d.z.number()}).strict(),d.z.object({url:d.z.string(),expiresIn:d.z.number()}).strict();var pi=d.z.object({key:d.z.string().min(1)}).strict();d.z.object({url:d.z.string(),key:d.z.string(),artifact:fi}).strict();var mi=d.z.object({filename:d.z.string().min(1),contentType:d.z.string().optional()}).strict();d.z.object({artifact:fi}).strict(),d.z.object({key:d.z.string().min(1)}).strict(),d.z.object({items:d.z.array(fi)}).strict();var hi=d.z.object({key:d.z.string().min(1),name:d.z.string().min(1),status:d.z.enum([`pending`,`uploaded`]),size:d.z.number().nullable().optional(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),labels:d.z.array(d.z.string()).nullable().optional()}).strict();d.z.object({items:d.z.array(hi)}).strict();var gi=d.z.object({key:d.z.string().min(1)}).strict();d.z.object({balanceCents:d.z.number(),monthlyIncludedMinutes:d.z.number(),usedIncludedMinutes:d.z.number(),includedMinutesRemaining:d.z.number(),autoRechargeEnabled:d.z.boolean(),autoRechargeThresholdCents:d.z.number(),autoRechargeAmountCents:d.z.number(),overdraftLimitCents:d.z.number(),includedMinutesResetAt:d.z.string().nullable()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict(),d.z.object({checkoutUrl:d.z.string().url(),sessionId:d.z.string()}).strict(),d.z.object({amountCents:d.z.number().min(500).max(1e5),successUrl:d.z.string().url(),cancelUrl:d.z.string().url()}).strict(),d.z.object({enabled:d.z.boolean(),thresholdCents:d.z.number().min(0).max(1e5).optional(),amountCents:d.z.number().min(500).max(1e5).optional()}).strict();var _i=d.z.object({id:d.z.string(),type:d.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]),amountCents:d.z.number(),balanceAfterCents:d.z.number(),usageMinutes:d.z.number().nullable(),pricePerMinuteCents:d.z.number().nullable(),referenceType:d.z.string().nullable(),referenceId:d.z.string().nullable(),createdAt:d.z.string()}).strict();d.z.object({items:d.z.array(_i),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var vi=d.z.object({limit:d.z.number().min(1).max(100).optional(),offset:d.z.number().min(0).optional(),type:d.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]).optional(),startDate:d.z.string().optional(),endDate:d.z.string().optional()}).strict();d.z.object({periodStart:d.z.string(),periodEnd:d.z.string(),totalMinutes:d.z.number(),includedMinutesUsed:d.z.number(),paidMinutesUsed:d.z.number(),totalChargedCents:d.z.number(),sandboxCount:d.z.number()}).strict();var yi=d.z.object({startDate:d.z.string().min(1),endDate:d.z.string().min(1)}).strict(),bi=d.z.object({planKey:d.z.string(),name:d.z.string(),pricePerSeatCents:d.z.number(),billingInterval:d.z.enum([`month`,`year`]),includedMinutesPerSeat:d.z.number(),stripePriceId:d.z.string().nullable()}).strict();d.z.object({plans:d.z.array(bi)}).strict(),d.z.object({hasSubscription:d.z.boolean(),planKey:d.z.string().nullable(),planName:d.z.string().nullable(),seatCount:d.z.number(),memberCount:d.z.number(),currentPeriodStart:d.z.string().nullable(),currentPeriodEnd:d.z.string().nullable(),cancelAtPeriodEnd:d.z.boolean(),stripeSubscriptionId:d.z.string().nullable(),includedMinutes:d.z.number(),usedMinutes:d.z.number(),remainingMinutes:d.z.number()}).strict(),d.z.object({redirectUrl:d.z.string().nullable(),sessionId:d.z.string().nullable()}).strict(),d.z.object({planKey:d.z.string().min(1),discountCode:d.z.string().optional()}).strict(),d.z.object({currentSeats:d.z.number(),newSeats:d.z.number(),amountDue:d.z.number().nullable(),subtotal:d.z.number().nullable(),total:d.z.number().nullable(),prorationDate:d.z.number().nullable()}).strict();var xi=d.z.object({seatCount:d.z.number().min(1)}).strict();d.z.object({success:d.z.boolean(),newSeatCount:d.z.number(),includedMinutes:d.z.number()}).strict(),d.z.object({seatCount:d.z.number().min(1)}).strict(),d.z.object({success:d.z.boolean(),cancelAtPeriodEnd:d.z.boolean(),periodEnd:d.z.string().nullable()}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict(),d.z.object({plan:d.z.string(),projects:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),apiKeys:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),mcpServers:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),seats:d.z.object({used:d.z.number(),limit:d.z.number()}).strict()}).strict();var Si=d.z.object({id:d.z.string(),agentSessionId:d.z.string(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),projectId:d.z.string(),organizationId:d.z.string(),sandboxInstanceId:d.z.string().nullable(),containerId:d.z.string().nullable(),processId:d.z.string().nullable(),status:d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),autoTerminate:d.z.boolean(),timeoutMinutes:d.z.number().min(-9007199254740991).max(9007199254740991).int(),command:d.z.string(),workingDirectory:d.z.string().nullable(),exitCode:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),previewUrl:d.z.string().nullable(),errorMessage:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),agentSession:d.z.object({id:d.z.string(),status:d.z.string(),currentAgentType:d.z.string().nullable()}).strict().nullable().optional(),workUnit:d.z.object({id:d.z.string(),title:d.z.string(),status:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string()}).strict().nullable().optional()}).strict();d.z.object({items:d.z.array(Si),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict();var Ci=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),status:d.z.union([d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),d.z.array(d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]))]).optional(),projectId:d.z.string().optional(),workUnitId:d.z.string().optional(),agentSessionId:d.z.string().optional()}).strict();d.z.object({id:d.z.string(),status:d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),sandboxInstanceId:d.z.string().nullable(),containerId:d.z.string().nullable(),previewUrl:d.z.string().nullable(),exitCode:d.z.number().nullable(),errorMessage:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1)}).strict(),d.z.object({message:d.z.string(),sandboxId:d.z.string(),status:d.z.string()}).strict(),d.z.object({message:d.z.string(),port:d.z.number(),url:d.z.string().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1),port:d.z.number().min(1024).max(65535).int()}).strict(),d.z.object({message:d.z.string(),port:d.z.number()}).strict();var wi=d.z.object({port:d.z.number(),url:d.z.string().optional()}).strict();d.z.object({ports:d.z.array(wi)}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({received:d.z.boolean(),duplicate:d.z.boolean().optional(),ignored:d.z.boolean().optional()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({priceKey:d.z.string().min(1).describe(`Stripe price lookup key`),mode:d.z.enum([`payment`,`subscription`]).describe(`Checkout mode`),discountCode:d.z.string().optional().describe(`Optional discount/promotion code`)}).strict(),d.z.object({redirectUrl:d.z.string().url().describe(`URL to redirect user to Stripe checkout`)}).strict(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({sessionId:d.z.string().min(1),organizationId:d.z.string()}),d.z.object({id:d.z.string().describe(`Session ID`),status:d.z.string().nullable().describe(`Session status`),payment_status:d.z.string().describe(`Payment status`),invoice:d.z.object({}).nullable().describe(`Invoice details`)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({url:d.z.string().url().describe(`URL to Stripe billing portal`)}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({id:d.z.string().describe(`Customer ID`),customerId:d.z.string().nullable().describe(`Stripe customer ID (null for free tier without payment info)`),organizationId:d.z.string().describe(`Organization ID`),email:d.z.string().nullable().describe(`Customer email`),name:d.z.string().nullable().describe(`Customer name`),subscriptionId:d.z.string().nullable().describe(`Active subscription ID`),subscriptionStatus:d.z.string().nullable().describe(`Current subscription status`),planKey:d.z.enum([`free`,`basic_monthly`,`basic_yearly`]).describe(`Current subscription plan`),seatCount:d.z.number().describe(`Number of seats in subscription`),currentPeriodEnd:d.z.string().nullable().describe(`End date of current billing period (renewal date)`),cancelAtPeriodEnd:d.z.boolean().describe(`Whether subscription is scheduled to cancel at period end`),createdAt:d.z.string().describe(`Customer creation date`),updatedAt:d.z.string().describe(`Customer last update date`)}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({received:d.z.boolean(),duplicate:d.z.boolean().optional(),ignored:d.z.boolean().optional()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...Wn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...Kn.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),serverName:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ti=d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),Ei=d.z.object({...Ur.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var Di=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict();var Oi=d.z.object({organizationId:d.z.string()});d.z.object({...$n.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...tr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...rr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...ir.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string(),type:d.z.string()}),d.z.object({...sr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string(),type:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...dr.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),owner:d.z.string(),repo:d.z.string()}),d.z.object({...pr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({...gr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...gr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict();var ki=d.z.object({organizationId:d.z.string().min(1)}),Ai=d.z.object({...br.shape});d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.object({...Cr.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string(),userId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.object({...Tr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...Dr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...kr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({stats:d.z.array(d.z.object({activityType:d.z.string(),count:d.z.number()}).strict()),total:d.z.number()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.array(Ar),d.z.array(Or),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var ji=d.z.object({organizationId:d.z.string()}),Mi=d.z.object({...Mr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({period:d.z.enum([`7d`,`30d`,`3m`,`12m`])}),d.z.object({items:d.z.array(d.z.object({period:d.z.string(),aiCompleted:d.z.number(),humanCompleted:d.z.number(),totalTasks:d.z.number(),totalCost:d.z.number()}).strict()),summary:d.z.object({totalCost:d.z.number(),totalTasks:d.z.number(),monthlyGrowth:d.z.number()}).strict()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({...Fr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({...Ir.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),statusId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict();var Ni=d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),Pi=d.z.object({...Mr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var Fi=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ii=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()});d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Li=d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),Ri=d.z.object({...Vr.shape});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var zi=d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...Kr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),projectId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),projectId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...Qr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...$r.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...ni.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict();var Bi=d.z.object({organizationId:d.z.string()}),Vi=d.z.object({...ui.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...si.shape}),d.z.object({error:d.z.string()}).strict();var Hi=d.z.object({organizationId:d.z.string(),id:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ui=d.z.object({organizationId:d.z.string(),id:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...gi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...pi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...mi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...vi.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...yi.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...xi.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...Ci.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string(),port:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string(),port:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Wi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/members`,{method:`GET`,params:e,query:t})).data,Gi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/members/agents`,{method:`POST`,params:e,body:t})).data,Ki=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`GET`,params:e,query:t})).data,qi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`POST`,params:e,body:t})).data,Ji=async e=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`GET`,params:e})).data,Yi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`PATCH`,params:e,body:t})).data,Xi=async e=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`DELETE`,params:e})).data,Zi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/task-statuses`,{method:`GET`,params:e,query:t})).data,Qi=`AGIFLOW_ORGANIZATION_ID`,$i=`AGIFLOW_PROJECT_ID`,ea=`AGIFLOW_TASK_ID`,ta=`AGIFLOW_WORK_UNIT_ID`,na=d.z.object({format:d.z.literal(`json`).default(`json`).describe(`Output format`)}),ra=d.z.object({tasksJson:d.z.string().min(1).describe(`Array of task objects or { "tasks": [...] }`)}),ia=d.z.object({workUnitsJson:d.z.string().min(1).describe(`Array of work unit objects or { "workUnits": [...] }`)}),aa=d.z.object({status:d.z.string().optional().describe(`Task status name, key, or ID`),assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:d.z.string().optional().describe(`Work unit ID`),acceptanceCriteriaJson:d.z.string().optional().describe(`Acceptance criteria JSON`),testCasesJson:d.z.string().optional().describe(`Test cases JSON`),devInfoJson:d.z.string().optional().describe(`Development info JSON`)}),oa=d.z.object({status:d.z.string().optional().describe(`Comma-separated status names, keys, or IDs`),assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:d.z.string().optional().describe(`Work unit ID`)}),sa=d.z.object({devInfoJson:d.z.string().optional().describe(`Development info JSON`),testCasesJson:d.z.string().optional().describe(`Test cases JSON`)}),ca=d.z.object({assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),infoJson:d.z.string().optional().describe(`Comment info JSON`)}),U=()=>({name:`org`,source:`organizationId`,envVar:Qi}),W=(e=`projectId`)=>({name:`project`,source:e,valueName:`projectIdOrSlug`,envVar:$i}),G=()=>({name:`task`,source:`taskId`,valueName:`taskIdOrSlug`,envVar:ea}),K=()=>({name:`workUnit`,source:`workUnitId`,flag:`--work-unit`,valueName:`workUnitIdOrSlug`,envVar:ta}),q=(...e)=>e,J=(e=[],t={})=>[{name:`limit`,required:!1,defaultValue:t.limit??`20`},{name:`offset`,required:!1,defaultValue:t.offset??`0`},{name:`search`,required:!1},{name:`sort`,required:!1,defaultValue:t.sort??`createdAt`},{name:`order`,required:!1,defaultValue:t.order??`desc`},...e.map(e=>({...e,required:e.required??!1}))],Y=(e,t)=>mn.for(e).fromSchemaGroups([...t,{schema:na,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),X=e=>{let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t},la=(e,t)=>{let n=e&&typeof e==`object`&&t in e?e[t]:e;if(!Array.isArray(n))throw Error(`Expected ${t} JSON to be an array or an object containing ${t}.`);return n.map((e,n)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t}[${n}] must be an object.`);return e})},Z=class extends F{async resolveOrgOption(e){return this.resolveOrganizationId(e.org)}async resolveProjectOption(e){return this.resolveProjectIdOption(e.project)}async resolveProjectRoute(e){let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e);return{org:t,projectId:await this.resolveProjectId(t,n)}}async resolveTaskOption(e){return this.resolveTaskIdOption(e.task)}async resolveWorkUnitOption(e){return this.resolveWorkUnitIdOption(e.workUnit)}async resolveProjectId(e,t){return(await I({organizationId:e,id:t})).id}async resolveStatusId(e,t){let n=(await Zi({organizationId:e})).items??[],r=t.toLowerCase(),i=n.find(e=>e.id===t||e.key.toLowerCase()===r||e.name.toLowerCase()===r);if(!i)throw Error(`Task status "${t}" was not found.`);return i.id}async resolveMemberId(e,t){if(!t)return;let n=await Wi({organizationId:e},{limit:100,offset:0,sortBy:`createdAt`,sortDirection:`desc`}),r=t.toLowerCase(),i=n.members.find(e=>{let n=e.member?.id,i=e.user?.name?.toLowerCase(),a=e.user?.email?.toLowerCase();return n===t||i===r||a===r});if(!i?.member?.id)throw Error(`Member "${t}" was not found.`);return i.member.id}baseListOptions(e){return X({limit:this.parseNumber(e.limit,20),offset:this.parseNumber(e.offset,0),sort:e.sort,order:e.order,search:e.search})}},ua=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`project`).description(`Project JSON commands`);Y(t.command(`create`).description(`Create a project`),q({schema:Bi,options:[U()]},{schema:ai,options:[{name:`name`},{name:`description`},{name:`slug`},{name:`path`},{name:`color`},{name:`icon`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List projects`),q({schema:Bi,options:[U()]},{schema:Vi,options:J()})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a project by ID or slug`),q({schema:Ui,options:[U(),W(`projectIdOrSlug`)]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a project`),q({schema:Ui,options:[U(),W(`projectIdOrSlug`)]},{schema:di,options:[{name:`name`},{name:`description`},{name:`slug`},{name:`path`},{name:`color`},{name:`icon`},{name:`archived`,source:`isArchived`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a project`),q({schema:Ui,options:[U(),W(`projectIdOrSlug`)]})).action(e=>this.delete(e)),Y(t.command(`status`).description(`Project status commands`).command(`list`).description(`List project statuses`),q({schema:Hi,options:[U(),W(`id`)]})).action(e=>this.statusList(e))}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=X({name:e.name,description:e.description,slug:e.slug,path:e.path,color:e.color,icon:e.icon}),r=await Ot({organizationId:t},n);this.printJson({project:r})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=this.baseListOptions(e),r=await Dt({organizationId:t},n);this.printJson({projects:r.items,total:r.total,limit:r.limit,offset:r.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await I({organizationId:await this.resolveOrgOption(e),id:await this.resolveProjectOption(e)});this.printJson({project:t})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await this.resolveProjectId(t,n),i=X({name:e.name,description:e.description,slug:e.slug,path:e.path,color:e.color,icon:e.icon,isArchived:e.archived===!0?!0:void 0}),a=await At({organizationId:t,id:r},i);this.printJson({project:a})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await this.resolveProjectId(t,n);await jt({organizationId:t,id:r}),this.printJson({deleted:!0,project:{id:r}})})}async statusList(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await kt({organizationId:t,id:await this.resolveProjectId(t,n)});this.printJson({statuses:r.items,total:r.total})})}};ua=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ua);var da=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task`).description(`Task JSON commands`),n=[U(),W()],r=[{name:`title`},{name:`description`},{name:`priority`},{name:`position`},{name:`dueDate`,flag:`--due-date`},{name:`tags`}],i=[{name:`status`},{name:`assignee`},{name:`workUnit`,flag:`--work-unit`},{name:`acceptanceCriteriaJson`,flag:`--acceptance-criteria-json`},{name:`testCasesJson`,flag:`--test-cases-json`},{name:`devInfoJson`,flag:`--dev-info-json`}];Y(t.command(`create`).description(`Create a task`),q({schema:Ni,options:n},{schema:Wr,options:r},{schema:aa,options:i})).action(e=>this.create(e)),Y(t.command(`batch-create`).description(`Create multiple tasks`),q({schema:Ni,options:n},{schema:ra,options:[{name:`tasksJson`,flag:`--tasks-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project tasks`),q({schema:Ni,options:n},{schema:Pi,options:J([{name:`statusFilter`,flag:`--status-filter`},{name:`priority`},{name:`tags`}])},{schema:oa,options:[{name:`status`},{name:`assignee`},{name:`workUnit`,flag:`--work-unit`}]})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a task by ID or slug`),q({schema:Fi,options:[...n,G()]})).action(e=>this.get(e)),Y(t.command(`active`).description(`List active organization tasks`),q({schema:ji,options:[U()]},{schema:Mi,options:J([{name:`project`,source:`projectId`},{name:`priority`},{name:`assigneeId`,flag:`--assignee-id`}])})).action(e=>this.active(e)),Y(t.command(`update`).description(`Update a task`),q({schema:Fi,options:[...n,G()]},{schema:Nr,options:r},{schema:aa,options:i})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task`),q({schema:Fi,options:[...n,G()]})).action(e=>this.delete(e)),Y(t.command(`reorder`).description(`Reorder tasks within a status`),q({schema:ji,options:[U()]},{schema:d.z.object({status:d.z.string().min(1).describe(`Status name, key, or ID`)}),options:[{name:`status`}]},{schema:Rr,options:[{name:`taskIds`,flag:`--task-ids`,parse:`csv`}]})).action(e=>this.reorder(e)),Y(t.command(`move`).description(`Move a task to a different column/position`),q({schema:Ii,options:[...n,G()]},{schema:Gr,options:[{name:`column`,source:`columnId`},{name:`position`}]})).action(e=>this.move(e)),Y(t.command(`status`).description(`Task status commands`).command(`list`).description(`List available task statuses`),q({schema:Oi,options:[U()]})).action(e=>this.statusList(e))}async buildTaskPayload(e){let t=typeof e.status==`string`?e.status:void 0,n=typeof e.assignee==`string`?e.assignee:void 0,r=String(e.org),i=t?await this.resolveStatusId(r,t):void 0,a=await this.resolveMemberId(r,n);return X({title:e.title,description:e.description,statusId:i,priority:e.priority,position:typeof e.position==`string`?this.parseNumber(e.position,0):e.position,dueDate:e.dueDate,tags:this.parseCsv(typeof e.tags==`string`?e.tags:void 0),assigneeId:a,workUnitId:e.workUnit??e.workUnitId,acceptanceCriteria:this.parseJsonFlag(typeof e.acceptanceCriteriaJson==`string`?e.acceptanceCriteriaJson:void 0,`--acceptance-criteria-json`),testCases:this.parseJsonFlag(typeof e.testCasesJson==`string`?e.testCasesJson:void 0,`--test-cases-json`),devInfo:this.parseJsonFlag(typeof e.devInfoJson==`string`?e.devInfoJson:void 0,`--dev-info-json`)})}async create(e){await this.runJsonOnly(async()=>{if(this.requireJsonFormat(e.format,`task commands`),await this.setupClient(),!e.title)throw Error(`--title is required.`);let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Ut({organizationId:t,projectId:n},await this.buildTaskPayload({...e,org:t}));this.printJson({task:r})})}async batchCreate(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=la(this.parseJsonFlag(e.tasksJson,`--tasks-json`),`tasks`),i=[];for(let e of r){let r=await Ut({organizationId:t,projectId:n},await this.buildTaskPayload({...e,org:t}));i.push(r)}this.printJson({tasks:i,total:i.length})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=this.parseCsv(e.status),i=r?await Promise.all(r.map(e=>this.resolveStatusId(t,e))):void 0,a=await this.resolveMemberId(t,e.assignee),o=X({...this.baseListOptions(e),statusFilter:e.statusFilter,columnId:i?.length===1?i[0]:void 0,statusIds:i,workUnitId:e.workUnit,assigneeId:a,priority:e.priority,tags:this.parseCsv(e.tags)}),s=await Ht({organizationId:t,projectId:n},o);this.printJson({tasks:s.items,total:s.total,limit:s.limit,offset:s.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Wt({organizationId:t,projectId:n,taskId:await this.resolveTaskOption(e)});this.printJson({task:r})})}async active(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=X({...this.baseListOptions(e),statusFilter:`active`,priority:e.priority,assigneeId:e.assigneeId});if(e.project){let r=await Ht({organizationId:t,projectId:await this.resolveProjectId(t,e.project)},n);this.printJson({tasks:r.items,total:r.total,limit:r.limit,offset:r.offset});return}let r=await Rt({organizationId:t},n);this.printJson({tasks:r.items,total:r.total,limit:r.limit,offset:r.offset})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Gt({organizationId:t,projectId:n,taskId:await this.resolveTaskOption(e)},await this.buildTaskPayload({...e,org:t}));this.printJson({task:r})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveTaskOption(e);await Kt({organizationId:t,projectId:n,taskId:r}),this.printJson({deleted:!0,task:{id:r}})})}async reorder(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveStatusId(t,e.status),r=this.parseCsv(e.taskIds);if(!r?.length)throw Error(`--task-ids must contain at least one task ID.`);await Vt({organizationId:t,statusId:n},{taskIds:r}),this.printJson({reordered:!0,statusId:n,taskIds:r})})}async move(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveTaskOption(e);if(!e.column)throw Error(`--column is required.`);let i={columnId:e.column,position:this.parseNumber(e.position,0)},a=await qt({organizationId:t,projectId:n,taskId:r},i);this.printJson({task:a})})}async statusList(e){await this.runJsonOnly(async()=>{await this.setupClient();let t=await Zi({organizationId:await this.resolveOrgOption(e)});if(e.format===`table`){let e=t.items??[],n=[`id`,`key`,`name`],r=e.map(e=>[e.id,e.key,e.name]);console.log(n.join(` `));for(let e of r)console.log(e.join(` `));return}this.printJson({statuses:t.items,total:t.total})})}};da=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],da);var fa=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`work-unit`).description(`Work unit JSON commands`),n=[U(),W()],r=[{name:`title`},{name:`description`},{name:`type`},{name:`priority`},{name:`status`},{name:`ownerId`,flag:`--owner-id`},{name:`parentWorkUnitId`,flag:`--parent-work-unit-id`},{name:`estimatedEffort`,flag:`--estimated-effort`},{name:`startDate`,flag:`--start-date`},{name:`targetDate`,flag:`--target-date`}];Y(t.command(`batch-create`).description(`Create multiple work units`),q({schema:Ti,options:n},{schema:ia,options:[{name:`workUnitsJson`,flag:`--work-units-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project work units`),q({schema:Ti,options:n},{schema:Ei,options:J([{name:`status`,source:`statuses`},{name:`excludeStatus`,flag:`--exclude-status`},{name:`type`},{name:`priority`},{name:`ownerId`,flag:`--owner-id`},{name:`parentWorkUnitId`,flag:`--parent-work-unit-id`}])})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a work unit by ID or slug`),q({schema:Di,options:[...n,K()]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a work unit`),q({schema:Di,options:[...n,K()]},{schema:Zn,options:r},{schema:sa,options:[{name:`devInfoJson`,flag:`--dev-info-json`},{name:`testCasesJson`,flag:`--test-cases-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a work unit`),q({schema:Di,options:[...n,K()]})).action(e=>this.delete(e)),Y(t.command(`progress`).description(`Get work unit progress`),q({schema:Di,options:[...n,K()]})).action(e=>this.progress(e))}buildPayload(e){return X({title:e.title,description:e.description,type:e.type,priority:e.priority,status:e.status,ownerId:e.ownerId,parentWorkUnitId:e.parentWorkUnitId,estimatedEffort:typeof e.estimatedEffort==`string`?this.parseNumber(e.estimatedEffort,0):e.estimatedEffort,startDate:e.startDate,targetDate:e.targetDate,devInfo:this.parseJsonFlag(typeof e.devInfoJson==`string`?e.devInfoJson:void 0,`--dev-info-json`),testCases:this.parseJsonFlag(typeof e.testCasesJson==`string`?e.testCasesJson:void 0,`--test-cases-json`)})}async batchCreate(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=la(this.parseJsonFlag(e.workUnitsJson,`--work-units-json`),`workUnits`),i=[];for(let e of r){let r=await Yt({organizationId:t,projectId:n},this.buildPayload(e)),a=Array.isArray(e.taskIds)?e.taskIds.filter(e=>typeof e==`string`):[];for(let e of a)await Gt({organizationId:t,projectId:n,taskId:e},{workUnitId:r.id});i.push(r)}this.printJson({workUnits:i,total:i.length})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=X({...this.baseListOptions(e),statuses:this.parseCsv(e.status),excludeStatus:e.excludeStatus,type:e.type,priority:e.priority,ownerId:e.ownerId,parentWorkUnitId:e.parentWorkUnitId}),i=await Jt({organizationId:t,projectId:n},r);this.printJson({workUnits:i.items,total:i.total,limit:i.limit,offset:i.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Xt({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({workUnit:r})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Zt({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)},this.buildPayload(e));this.printJson({workUnit:r})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveWorkUnitOption(e);await Qt({organizationId:t,projectId:n,workUnitId:r}),this.printJson({deleted:!0,workUnit:{id:r}})})}async progress(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await $t({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({progress:r})})}};fa=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],fa);var pa=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`member`).description(`Agent member JSON commands`);Y(t.command(`list`).description(`List agent members`),q({schema:ki,options:[U()]},{schema:Ai,options:[{name:`limit`,required:!1,defaultValue:`100`},{name:`offset`,required:!1,defaultValue:`0`}]})).action(e=>this.list(e)),Y(t.command(`create`).description(`Create an agent member`),q({schema:ki,options:[U()]},{schema:xr,options:[{name:`email`},{name:`name`},{name:`description`},{name:`prompt`}]})).action(e=>this.create(e))}normalizeMembers(e){return e.filter(e=>e.member?.role===`agent`)}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`member commands`),await this.setupClient();let t=await Wi({organizationId:await this.resolveOrgOption(e)},{limit:this.parseNumber(e.limit,100),offset:this.parseNumber(e.offset,0),sortBy:`createdAt`,sortDirection:`desc`,filterField:`role`,filterOperator:`eq`,filterValue:`agent`});this.printJson({members:this.normalizeMembers(t.members),total:t.total,limit:t.limit,offset:t.offset})})}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`member commands`),await this.setupClient();let t=await Gi({organizationId:await this.resolveOrgOption(e)},{agents:[X({email:e.email,name:e.name,description:e.description,prompt:e.prompt})]});this.printJson({member:t.created[0]??null,errors:t.errors??[]})})}};pa=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],pa);var ma=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task-comment`).description(`Task comment JSON commands`),n=[U(),G()];Y(t.command(`create`).description(`Create a task comment`),q({schema:Li,options:n},{schema:Br,options:[{name:`content`}]},{schema:ca,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List task comments`),q({schema:Li,options:n},{schema:Ri,options:[{name:`limit`,required:!1,defaultValue:`20`},{name:`offset`,required:!1,defaultValue:`0`},{name:`sort`,required:!1,defaultValue:`createdAt`},{name:`order`,required:!1,defaultValue:`asc`}]})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a task comment`),q({schema:zi,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a task comment`),q({schema:zi,options:[...n,{name:`comment`,source:`commentId`}]},{schema:Hr,options:[{name:`content`}]},{schema:ca,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task comment`),q({schema:zi,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.delete(e))}async buildPayload(e){let t=await this.resolveOrgOption(e);return X({content:e.content,assigneeId:await this.resolveMemberId(t,e.assignee),info:this.parseJsonFlag(e.infoJson,`--info-json`)})}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await qi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e)},await this.buildPayload(e));this.printJson({comment:t})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveTaskOption(e),r=this.baseListOptions(e),i=await Ki({organizationId:t,taskId:n},r);this.printJson({comments:i.items,total:i.total,limit:i.limit,offset:i.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Ji({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment});this.printJson({comment:t})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Yi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment},await this.buildPayload(e));this.printJson({comment:t})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient(),await Xi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment}),this.printJson({deleted:!0,comment:{id:e.comment}})})}};ma=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ma);var Q={AuthCommand:Symbol.for(`CLI.AuthCommand`),WorkflowCommand:Symbol.for(`CLI.WorkflowCommand`),ArtifactCommand:Symbol.for(`CLI.ArtifactCommand`),AutomationCommand:Symbol.for(`CLI.AutomationCommand`),ProjectCommand:Symbol.for(`CLI.ProjectCommand`),TaskCommand:Symbol.for(`CLI.TaskCommand`),WorkUnitCommand:Symbol.for(`CLI.WorkUnitCommand`),MemberCommand:Symbol.for(`CLI.MemberCommand`),TaskCommentCommand:Symbol.for(`CLI.TaskCommentCommand`),VaultCommand:Symbol.for(`CLI.VaultCommand`),AnalyticsCommand:Symbol.for(`CLI.AnalyticsCommand`)},$=new u.Container({parent:w});$.bind(Q.AuthCommand).to(Ge),$.bind(Q.WorkflowCommand).to(Et),$.bind(Q.ArtifactCommand).to(pn),$.bind(Q.AutomationCommand).to(En),$.bind(Q.ProjectCommand).to(ua),$.bind(Q.TaskCommand).to(da),$.bind(Q.WorkUnitCommand).to(fa),$.bind(Q.MemberCommand).to(pa),$.bind(Q.TaskCommentCommand).to(ma),$.bind(Q.VaultCommand).to(Rn),$.bind(Q.AnalyticsCommand).to(kn),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return $}});
|