@agiflowai/cli 0.0.4 → 0.0.5
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-DCjNfDrN.cjs +8 -0
- package/dist/index.cjs +1 -1
- package/package.json +1 -1
- package/dist/container-CdrWCxTR.cjs +0 -7
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-DCjNfDrN.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("inversify"),u=require("zod"),d=require("pino");d=s(d,1);let f=require("fs");f=s(f,1);let p=require("path");p=s(p,1);let m=require("os");m=s(m,1);let h=require("crypto"),g=require("child_process");var ee=u.z.string().url();u.z.object({VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:u.z.string().trim().optional()});function te(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`}){let n=[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];for(let e of n){let t=ee.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, or BACKEND_AGIFLOW_API_ENDPOINT.`)}function _(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 ne=`serverUrl`,re=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(ne);if(e)return e;let t=te();return this.set(ne,t),t}};re=_([(0,l.injectable)()],re);function v(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}var ie=class{logger;constructor(){this.logger=(0,d.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)}};ie=_([(0,l.injectable)(),v(`design:paramtypes`,[])],ie);var ae=class{filePath;constructor(){this.filePath=p.default.join(m.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||((await this.load(e))?.apiKey??null)}async getOrganizationId(e={}){return process.env.AGIFLOW_ORGANIZATION_ID||((await this.load(e))?.organizationId??null)}async getProjectId(){return process.env.AGIFLOW_PROJECT_ID??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 or run authentication.`);return{"x-api-key":t}}readStoredFile(){try{if(!f.default.existsSync(this.filePath))return null;let e=JSON.parse(f.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){f.default.existsSync(this.filePath)&&f.default.unlinkSync(this.filePath);return}f.default.mkdirSync(p.default.dirname(this.filePath),{recursive:!0}),f.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=p.default.resolve(e);for(;;){if(f.default.existsSync(p.default.join(t,`.git`)))return t;let e=p.default.dirname(t);if(e===t)return null;t=e}}normalizePath(e){let t=p.default.resolve(e),n=f.default.existsSync(t)?f.default.realpathSync.native(t):t,r=p.default.normalize(n).replace(RegExp(`${this.escapeRegExp(p.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)}};ae=_([(0,l.injectable)(),v(`design:paramtypes`,[])],ae);var y={Logger:Symbol.for(`Logger`),ConfigManager:Symbol.for(`ConfigManager`),CredentialsService:Symbol.for(`CredentialsService`),DeviceCodeAuthService:Symbol.for(`DeviceCodeAuthService`)};function b(e,t){return function(n,r){t(n,r,e)}}var oe=`agent-cli`,se=`0.0.1`,ce=`openid profile email`,le=`urn:ietf:params:oauth:grant-type:device_code`,ue=class{configManager;constructor(e){this.configManager=e}async requestDeviceCode(e=ce){return await this.postJson(`/api/v1/auth/device/code`,void 0,{client_id:oe,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:le,device_code:e,client_id:oe})});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":oe,"x-client-version":se,...e}}url(e){return`${this.configManager.getServerUrl().replace(/\/$/,``)}${e}`}sleep(e){return new Promise(t=>setTimeout(t,e))}};ue=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),v(`design:paramtypes`,[Object])],ue);var x=new l.Container;x.bind(y.Logger).to(ie).inSingletonScope(),x.bind(y.ConfigManager).to(re).inSingletonScope(),x.bind(y.CredentialsService).to(ae).inSingletonScope(),x.bind(y.DeviceCodeAuthService).to(ue).inSingletonScope();var de=10,fe=(e=0)=>t=>`\u001B[${t+e}m`,pe=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,me=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,S={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(S.modifier);var he=Object.keys(S.color),ge=Object.keys(S.bgColor);[...he,...ge];function _e(){let e=new Map;for(let[t,n]of Object.entries(S)){for(let[t,r]of Object.entries(n))S[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=S[t],e.set(r[0],r[1]);Object.defineProperty(S,t,{value:n,enumerable:!1})}return Object.defineProperty(S,"codes",{value:e,enumerable:!1}),S.color.close=`\x1B[39m`,S.bgColor.close=`\x1B[49m`,S.color.ansi=fe(),S.color.ansi256=pe(),S.color.ansi16m=me(),S.bgColor.ansi=fe(de),S.bgColor.ansi256=pe(de),S.bgColor.ansi16m=me(de),Object.defineProperties(S,{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=>S.rgbToAnsi256(...S.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)=>S.ansi256ToAnsi(S.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>S.ansi256ToAnsi(S.hexToAnsi256(e)),enumerable:!1}}),S}var C=_e(),w=(()=>{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)})(),ve=w!==0&&{level:w,hasBasic:!0,has256:w>=2,has16m:w>=3},ye={stdout:ve,stderr:ve};function be(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 xe(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:Se,stderr:Ce}=ye,we=Symbol(`GENERATOR`),T=Symbol(`STYLER`),E=Symbol(`IS_EMPTY`),Te=[`ansi`,`ansi`,`ansi256`,`ansi16m`],D=Object.create(null),Ee=(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=Se?Se.level:0;e.level=t.level===void 0?n:t.level},De=e=>{let t=(...e)=>e.join(` `);return Ee(t,e),Object.setPrototypeOf(t,O.prototype),t};function O(e){return De(e)}Object.setPrototypeOf(O.prototype,Function.prototype);for(let[e,t]of Object.entries(C))D[e]={get(){let n=k(this,Ae(t.open,t.close,this[T]),this[E]);return Object.defineProperty(this,e,{value:n}),n}};D.visible={get(){let e=k(this,this[T],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Oe=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?C[n].ansi16m(...r):t===`ansi256`?C[n].ansi256(C.rgbToAnsi256(...r)):C[n].ansi(C.rgbToAnsi(...r)):e===`hex`?Oe(`rgb`,t,n,...C.hexToRgb(...r)):C[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){D[e]={get(){let{level:t}=this;return function(...n){let r=Ae(Oe(e,Te[t],`color`,...n),C.color.close,this[T]);return k(this,r,this[E])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);D[t]={get(){let{level:t}=this;return function(...n){let r=Ae(Oe(e,Te[t],`bgColor`,...n),C.bgColor.close,this[T]);return k(this,r,this[E])}}}}var ke=Object.defineProperties(()=>{},{...D,level:{enumerable:!0,get(){return this[we].level},set(e){this[we].level=e}}}),Ae=(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}},k=(e,t,n)=>{let r=(...e)=>je(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,ke),r[we]=e,r[T]=t,r[E]=n,r},je=(e,t)=>{if(e.level<=0||!t)return e[E]?``:t;let n=e[T];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=be(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
7
|
+
`);return a!==-1&&(t=xe(t,i,r,a)),r+t+i};Object.defineProperties(O.prototype,D);var A=O();O({level:Ce?Ce.level:0});var Me=`0.0.1`,Ne=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`).option(`--api-key <apiKey>`,`Use an existing Agiflow API key`).option(`--org <organizationId>`,`Organization ID to store with credentials`).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(A.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(A.red(`Error:`),n),process.exit(1)}}async ensureDeviceIdentity(e,t,n){let r=await this.credentialsService.getDeviceGuid(n)||`cli-${(0,h.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":Me,"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({name:m.default.hostname(),deviceGuid:r,type:`cli`,platform:process.platform,version:Me})}),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`}}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(A.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))}};Ne=_([(0,l.injectable)(),b(0,(0,l.inject)(y.CredentialsService)),b(1,(0,l.inject)(y.DeviceCodeAuthService)),b(2,(0,l.inject)(y.ConfigManager)),v(`design:paramtypes`,[Object,Object,Object])],Ne);var Pe=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(),Fe=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(),Ie=`default`,Le=1,Re=300,j=`Content-Type`,ze=`application/json`,Be=`X-API-KEY`,Ve=`Authorization`,He=`Bearer`,Ue=401,We=429,Ge=503,Ke=500,qe=400,Je=500,Ye=`text/`,Xe=.5,Ze=.5,Qe=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`}},$e=class{baseUrl;apiKey;headers;authProvider;authNamespace;configNamespace;useGlobalAuthProvider;useGlobalConfig;retryConfig;requestInterceptor;constructor(e={}){this.authProvider=e.authProvider,this.authNamespace=e.authNamespace??Ie,this.configNamespace=e.configNamespace??Ie,this.useGlobalAuthProvider=e.useGlobalAuthProvider??!0,this.useGlobalConfig=e.useGlobalConfig??!0,this.retryConfig={maxRetries:e.retryConfig?.maxRetries??Le,baseDelay:e.retryConfig?.baseDelay??Re},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?Fe.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?Pe.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[Ve]=`${He} ${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[j]=ze),n.headers[j]===void 0&&delete n.headers[j];let r=this.getRuntimeConfig();r.apiKey&&(n.headers[Be]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();if(i.status===Ue&&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>=qe&&i.status<Je&&i.status!==We)return i;if(i.status===We||i.status===Ge||i.status>=Ke){a=Error(`HTTP status ${i.status}`);let e=r*2**o*(Xe+Math.random()*Ze);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*(Xe+Math.random()*Ze);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[Be]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();return i.status===Ue&&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[j]=void 0):(f.body=JSON.stringify(a),d[j]=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(Ye)?await p.text():await p.blob(),!p.ok)throw new Qe(`HTTP ${p.status}: ${p.statusText}`,p.status,p.statusText,m);return{data:m,status:p.status,statusText:p.statusText,headers:p.headers}}},et=`backend-agiflow-api`,tt=e=>{Fe.setConfig(e,et)},M=((e={})=>new $e({...e,authNamespace:et,configNamespace:et}))(),nt=`0.0.1`,N=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 process.env[n]&&r.hideHelp(),r}async setupClient(){let{serverUrl:e,apiKey:t}=await this.resolveApiClientContext();tt({baseUrl:e,apiKey:t,headers:{"x-client-type":`agent-cli`,"x-client-version":nt}})}async resolveApiClientContext(){let e=this.configManager.getServerUrl(),t=await this.credentialsService.getApiKey();if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY or run authentication.`);return{serverUrl:e,apiKey:t}}handleError(e,t){let n=t instanceof Error?t.message:String(t);console.error(A.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} or set the matching AGIFLOW_* environment variable.`)}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}},rt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`GET`,params:e,query:t})).data,it=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`POST`,params:e,body:t})).data,at=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/check`,{method:`GET`,params:e,query:t})).data,ot=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`GET`,params:e})).data,st=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`PATCH`,params:e,body:t})).data,ct=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`DELETE`,params:e})).data,lt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}/release`,{method:`POST`,params:e,body:t})).data,ut=`AGIFLOW_ORGANIZATION_ID`,dt=`AGIFLOW_PROJECT_ID`,ft=`AGIFLOW_TASK_ID`,pt=`AGIFLOW_WORK_UNIT_ID`,mt=class extends N{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`,pt)).addOption(this.envOption(`--task <taskId>`,`Task ID`,ft)).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 it({organizationId:t,projectId:n},{name:e.name,workUnitId:r.workUnitId,taskId:r.taskId,contextData:e.context});console.log(A.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 ot({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 rt({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(A.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 lt({organizationId:n,projectId:r,id:e},{status:t.status,error:t.error});console.log(A.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`,pt)).addOption(this.envOption(`--task <taskId>`,`Task ID`,ft)).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await at({organizationId:t,projectId:n},{workUnitId:r.workUnitId,taskId:r.taskId});console.log(A.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`,ut)).addOption(this.envOption(`--project <projectId>`,`Project ID`,dt))}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}:{}}};mt=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],mt);var ht=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects`,{method:`GET`,params:e,query:t})).data,gt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects`,{method:`POST`,params:e,body:t})).data,_t=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/statuses`,{method:`GET`,params:e})).data,P=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`GET`,params:e})).data,vt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`PATCH`,params:e,body:t})).data,yt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`DELETE`,params:e})).data,bt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`GET`,params:e})).data,xt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`DELETE`,params:e,query:t})).data,St=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Ct=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/upload-url`,{method:`GET`,params:e,query:t})).data,wt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/complete`,{method:`POST`,params:e,body:t})).data,Tt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/seed`,{method:`POST`,params:e,body:t})).data,Et=`2024-11-05`;async function Dt(e){let t=new Ot(e);try{await t.initialize();let n=await t.listToolNames();return jt(n.includes(e.toolName)?await t.callTool(e.toolName,e.toolArgs):await t.callCapability(e.toolName,e.toolArgs,n))}finally{await t.terminate()}}var Ot=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:Et,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),kt(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 kt(e){let t=await e.text();if(!e.ok)throw Error(`Project MCP request failed with status ${e.status}: ${Mt(t)}`);let n=e.headers.get(`content-type`)?.includes(`text/event-stream`)?At(t):t;if(!n.trim())return{};try{return JSON.parse(n)}catch{throw Error(`Project MCP returned invalid JSON: ${Mt(n)}`)}}function At(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 jt(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 Mt(e){let t=e.replace(/\s+/g,` `).trim();return t.length>500?`${t.slice(0,500)}...`:t}var Nt=`AGIFLOW_ORGANIZATION_ID`,Pt=`AGIFLOW_PROJECT_ID`,Ft=`AGIFLOW_TASK_ID`,It=`AGIFLOW_WORK_UNIT_ID`,Lt=class extends N{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=p.default.resolve(e);f.default.existsSync(i)||(console.error(A.red(`✗`),`File not found: ${i}`),process.exit(1));let a=t.name??p.default.basename(i),o=f.default.readFileSync(i),s=f.default.statSync(i).size;console.log(A.blue(`↑`),`Uploading ${a} (${s} bytes)...`);let{url:c,key:l}=await Ct({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 wt({organizationId:n,id:r},{key:l}),console.log(A.green(`✓`),`Artifact uploaded: ${l}`)}catch(e){this.handleError(`Failed to upload artifact`,e)}}),this.addArtifactScopeOptions(t.command(`download <key>`).description(`Download an artifact by key`)).option(`-o, --output <path>`,`Output file path`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=(await St({organizationId:n,id:r},{key:e})).url,a=await fetch(i);if(!a.ok)throw Error(`Download failed with status ${a.status}`);let o=Buffer.from(await a.arrayBuffer()),s=t.output??e;f.default.writeFileSync(s,o),console.log(A.green(`✓`),`Downloaded to ${s}`)}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 bt({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 bt({organizationId:n,id:r})).items.find(t=>t.key===e||t.id===e);i||(console.error(A.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 xt({organizationId:n,id:r},{key:e}),console.log(A.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`,It)).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to link`,Ft)).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 St({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 Ct({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=p.default.resolve(e.file);if(!f.default.existsSync(r)){console.error(A.red(`✗`),`File not found: ${r}`),process.exit(1);return}let i=f.default.readFileSync(r,`utf-8`),a;try{a=JSON.parse(i)}catch{console.error(A.red(`✗`),`Invalid JSON in ${r}`),process.exit(1);return}let o=await Tt({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`,Nt)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,Pt))}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 Dt({serverUrl:i,apiKey:a,organizationId:e,projectId:(await P({organizationId:e,id:t})).id,toolName:n,toolArgs:this.compact(r)})}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}};Lt=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Lt);var Rt=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=u.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??zt(i),s=i?.description??Ut(e),l=r.defaultValue??Bt(i),u=r.valueName??a?.valueName??e,d=r.flag??a?.flag??`--${Ht(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=Vt(o),g=new c.Option(m,s);if(f.some(e=>process.env[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))}}},zt=e=>e&&(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type)===`boolean`?`boolean`:`string`,Bt=e=>{if(typeof e?.default==`string`||typeof e?.default==`boolean`)return e.default;if(typeof e?.default==`number`)return String(e.default)},Vt=e=>{if(e===`csv`)return e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);if(e===`json`)return e=>JSON.parse(e)},Ht=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/_/g,`-`).toLowerCase(),Ut=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),Wt=`0.0.1`,F=`AGIFLOW_ORGANIZATION_ID`,I=`AGIFLOW_PROJECT_ID`,Gt=`AGIFLOW_TASK_ID`,Kt=`AGIFLOW_WORK_UNIT_ID`,qt=(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[Kt]=e.id:n[Gt]=e.id,n},L=u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID`)}),Jt=u.z.object({jobKind:u.z.enum([`work-unit`,`task`]).describe(`Job kind (work-unit|task)`),jobId:u.z.string().min(1).describe(`Job ID`)}),Yt=u.z.object({format:u.z.literal(`json`).default(`json`).describe(`Output format`)}),R=(e,t)=>Rt.for(e).fromSchemaGroups([...t,{schema:Yt,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),Xt=class extends N{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`),R(t.commands.at(-1),[{schema:L,options:[{name:`org`,source:`organizationId`,envVar:F},{name:`project`,source:`projectId`,envVar:I}]},{schema:u.z.object({limit:u.z.string().default(`50`).describe(`Max results`),claimed:u.z.boolean().optional().describe(`List claimed running jobs`),deviceId:u.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`),R(t.commands.at(-1),[{schema:L,options:[{name:`org`,source:`organizationId`,envVar:F},{name:`project`,source:`projectId`,envVar:I}]},{schema:Jt,options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Kt,Gt]}]}]).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`),R(t.commands.at(-1),[{schema:L,options:[{name:`org`,source:`organizationId`,envVar:F},{name:`project`,source:`projectId`,envVar:I}]},{schema:Jt.extend({name:u.z.string().min(1).describe(`Run name`),deviceId:u.z.string().optional().describe(`Device ID running the job`)}),options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Kt,Gt]},{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`),R(t.commands.at(-1),[{schema:L,options:[{name:`org`,source:`organizationId`,envVar:F},{name:`project`,source:`projectId`,envVar:I}]},{schema:u.z.object({workflowId:u.z.string().min(1).describe(`Workflow lock ID`),status:u.z.enum([`completed`,`failed`]).describe(`Release status (completed|failed)`),error:u.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)`),R(t.commands.at(-1),[{schema:L,options:[{name:`org`,source:`organizationId`,envVar:F},{name:`project`,source:`projectId`,envVar:I}]},{schema:u.z.object({handler:u.z.string().min(1).describe(`Consumer command run per claimed job`),status:u.z.string().default(`planning,todo`).describe(`Comma-separated job statuses to poll`),maxConcurrent:u.z.string().default(`2`).describe(`Max concurrent in-flight handlers`),interval:u.z.string().default(`1200`).describe(`Seconds between polls`),limit:u.z.string().default(`50`).describe(`Jobs fetched per poll`),once:u.z.boolean().optional().describe(`Run a single poll pass then drain and exit`),deviceId:u.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=qt(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,g.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=p.default.join(m.default.homedir(),`.agiflow`,`dispatch`,this.slugifyName(e));(0,f.mkdirSync)(n,{recursive:!0});let r=p.default.join(n,`${t.slug||t.id}.json`);return(0,f.writeFileSync)(r,JSON.stringify(t,null,2),`utf8`),r}removeJobContext(e){try{(0,f.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 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":Wt,"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}};Xt=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Xt);var Zt=`AGIFLOW_ORGANIZATION_ID`,Qt=`AGIFLOW_PROJECT_ID`,$t=class extends N{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 Dt({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`,Zt)).addOption(this.buildEnvIdOption(`--project <projectIdOrSlug>`,`Project ID or slug`,Qt)).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 P({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}};$t=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],$t);var en=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault`,{method:`GET`,params:e})).data,tn=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`GET`,params:e})).data,nn=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`PUT`,params:e,body:t})).data,rn=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`DELETE`,params:e})).data,an=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/bulk`,{method:`POST`,params:e,body:t})).data,on=`AGIFLOW_ORGANIZATION_ID`,sn=`AGIFLOW_PROJECT_ID`,cn=`AGIFLOW_ENVIRONMENT_ID`,ln=class extends N{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 en({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 tn({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 nn({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 rn({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 an({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`,on)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,sn)).addOption(this.buildEnvIdOption(`--environment <environmentId>`,`Environment ID`,cn))}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}})}};ln=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],ln),u.z.enum([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`HEAD`]);var un=u.z.union([u.z.literal(200),u.z.literal(201),u.z.literal(204),u.z.literal(400),u.z.literal(401),u.z.literal(403),u.z.literal(404),u.z.literal(409),u.z.literal(422),u.z.literal(500),u.z.literal(502),u.z.literal(503)]);u.z.enum([`application/json`,`application/xml`,`text/plain`,`multipart/form-data`]),u.z.object({error:u.z.string(),message:u.z.string().optional(),statusCode:un,details:u.z.record(u.z.string(),u.z.unknown()).optional()}),u.z.object({total:u.z.number(),limit:u.z.number(),offset:u.z.number(),hasNext:u.z.boolean().optional(),hasPrev:u.z.boolean().optional()});var dn=u.z.object({id:u.z.enum([`apple`,`google`,`github`]),displayName:u.z.string(),flow:u.z.enum([`native-id-token`,`oauth-browser`])}).strict();u.z.object({emailPassword:u.z.boolean(),providers:u.z.array(dn)}).strict(),u.z.object({ok:u.z.boolean()}).strict(),u.z.object({name:u.z.string().min(2).max(80),email:u.z.string().max(160).email(),subject:u.z.string().min(2).max(120),message:u.z.string().min(10).max(4e3)}).strict();var fn=u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string().nullable(),role:u.z.string()}).strict();u.z.object({organizations:u.z.array(fn)}).strict(),u.z.object({api_key:u.z.string().describe(`The API key for the agent`),key_id:u.z.string().describe(`ID of the API key`),organization_id:u.z.string().describe(`Organization ID`),organization_name:u.z.string().describe(`Organization name`),agent_user_id:u.z.string().describe(`User ID of the agent`),expires_at:u.z.number().describe(`Expiration timestamp in milliseconds`)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID to exchange token for`)}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict();var pn=u.z.object({organizationId:u.z.string(),projectId:u.z.string().nullable(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable(),resourcePath:u.z.string(),scopes:u.z.string().nullable(),clientId:u.z.string(),expiresAt:u.z.string()}).strict(),mn=u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string(),role:u.z.string()}).strict();u.z.object({resourceContext:pn.nullable(),organizations:u.z.array(mn)}).strict();var hn=u.z.object({code_challenge:u.z.string().min(1)}).strict();u.z.object({success:u.z.boolean(),resourcePath:u.z.string(),organizationId:u.z.string(),projectId:u.z.string().nullable(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable()}).strict(),u.z.object({codeChallenge:u.z.string().min(1),organizationId:u.z.string().optional(),clientId:u.z.string().optional(),projectId:u.z.string().optional(),workUnitId:u.z.string().optional(),taskId:u.z.string().optional()}).strict(),u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string()}),u.z.object({name:u.z.string().min(2).max(80).describe(`Organization display name`)}).strict(),u.z.object({version:u.z.string()}).strict();var z=u.z.object({}).strict();u.z.object({version:u.z.string()}).strict();var B=u.z.object({}).strict();u.z.object({mcpServers:u.z.object({})}).strict();var gn=u.z.object({id:u.z.string(),mcpServerId:u.z.string(),serverName:u.z.string(),description:u.z.string().nullable(),isInternal:u.z.boolean(),scope:u.z.enum([`global`,`organization`,`project`,`task`]),isEnabled:u.z.boolean(),hasProgressiveDisclosure:u.z.boolean(),progressiveDisclosure:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}).nullable(),priority:u.z.number()}).strict();u.z.object({servers:u.z.array(gn),projectId:u.z.string().optional()}).strict();var _n=u.z.object({projectId:u.z.string().optional(),taskId:u.z.string().optional(),workUnitId:u.z.string().optional()}).strict();u.z.object({id:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean(),priority:u.z.number().min(-9007199254740991).max(9007199254740991).int(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),mcpServerId:u.z.string().min(1),serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().optional(),priority:u.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({serverName:u.z.string(),isEnabled:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}),priority:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),serverName:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().optional(),priority:u.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({id:u.z.string(),organizationId:u.z.string(),projectId:u.z.string().nullable(),taskId:u.z.string().nullable(),workUnitId:u.z.string().nullable(),progressiveDisclosure:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}).strict();var V=u.z.object({projectId:u.z.string().optional(),taskId:u.z.string().optional(),workUnitId:u.z.string().optional()}).strict();u.z.object({progressiveDisclosure:u.z.boolean()}).strict(),u.z.object({progressiveDisclosure:u.z.boolean()}).strict();var vn=u.z.object({id:u.z.string(),organizationId:u.z.string().nullable(),serverName:u.z.string(),displayName:u.z.string(),description:u.z.string().nullable(),isInternal:u.z.boolean(),serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),availableTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),availableResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(vn)}).strict();var yn=u.z.union([u.z.object({type:u.z.string(),command:u.z.string().min(1),args:u.z.array(u.z.string()).optional(),env:u.z.object({}).optional()}).strict(),u.z.object({type:u.z.string(),url:u.z.string().url(),headers:u.z.object({}).optional()}).strict()]);u.z.object({serverName:u.z.string().min(1),displayName:u.z.string().min(1),description:u.z.string().optional(),serverConfig:yn}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({serverName:u.z.string().min(1).optional(),displayName:u.z.string().min(1).optional(),description:u.z.string().optional(),serverConfig:yn.optional()}).strict(),u.z.object({mcpServers:u.z.object({})}).strict(),u.z.object({taskId:u.z.string().min(1)}).strict(),u.z.object({id:u.z.string(),taskId:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean().nullable(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({taskId:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string().min(1),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({serverName:u.z.string(),isEnabled:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}),priority:u.z.number()}).strict(),u.z.object({taskId:u.z.string().min(1),id:u.z.string().min(1)}).strict(),u.z.object({serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({mcpServers:u.z.object({})}).strict(),u.z.object({workUnitId:u.z.string().min(1)}).strict(),u.z.object({id:u.z.string(),workUnitId:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean().nullable(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({workUnitId:u.z.string().min(1),id:u.z.string().min(1)}).strict(),u.z.object({serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),workUnitId:u.z.string().min(1)}).strict();var bn=u.z.object({id:u.z.string(),title:u.z.string(),slug:u.z.string(),description:u.z.string().nullable(),projectId:u.z.string(),parentWorkUnitId:u.z.string().nullable(),type:u.z.enum([`epic`,`feature`,`initiative`]).nullable(),priority:u.z.enum([`low`,`medium`,`high`]).nullable(),statusId:u.z.string().nullable(),status:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable(),ownerId:u.z.string(),estimatedEffort:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),startDate:u.z.string().nullable(),targetDate:u.z.string().nullable(),completedAt:u.z.string().nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),taskCount:u.z.number().optional().describe(`Number of tasks in this work unit`)}).strict(),xn=u.z.object({title:u.z.string().min(1).max(255).optional().describe(`Work unit title`),slug:u.z.string().optional().describe(`Work unit slug`),description:u.z.string().nullable().optional(),parentWorkUnitId:u.z.string().nullable().optional(),type:u.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:u.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:u.z.string().nullable().optional(),status:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:u.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:u.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:u.z.string().nullable().optional(),targetDate:u.z.string().nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict();u.z.object({action:u.z.union([u.z.string(),u.z.string(),u.z.string()]),artifactId:u.z.string().min(1)}).strict();var Sn=u.z.object({id:u.z.string(),organizationId:u.z.string().nullable(),projectId:u.z.string().nullable(),isStartedState:u.z.boolean(),isCompletionState:u.z.boolean(),isTerminalState:u.z.boolean(),isBlockedState:u.z.boolean(),isAgentPickable:u.z.boolean(),key:u.z.string(),name:u.z.string(),description:u.z.string().nullable(),position:u.z.number().min(-9007199254740991).max(9007199254740991).int(),color:u.z.string().nullable(),isActive:u.z.boolean(),isDefault:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(Sn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1).optional()}).strict(),u.z.object({statusIds:u.z.array(u.z.string().min(1))}).strict(),u.z.object({organizationId:u.z.string().min(1).nullable().optional(),projectId:u.z.string().nullable().optional(),isStartedState:u.z.boolean().optional(),isCompletionState:u.z.boolean().optional(),isTerminalState:u.z.boolean().optional(),isBlockedState:u.z.boolean().optional(),isAgentPickable:u.z.boolean().optional(),key:u.z.string().min(1).max(50),name:u.z.string().min(1).max(100),description:u.z.string().max(500).nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional(),color:u.z.string().nullable().optional(),isActive:u.z.boolean().optional(),isDefault:u.z.boolean().optional()}).strict();var Cn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`,`position`,`key`]),order:u.z.enum([`asc`,`desc`])}).strict();u.z.object({projectId:u.z.string().nullable().optional(),isStartedState:u.z.boolean().optional(),isCompletionState:u.z.boolean().optional(),isTerminalState:u.z.boolean().optional(),isBlockedState:u.z.boolean().optional(),isAgentPickable:u.z.boolean().optional(),key:u.z.string().min(1).max(50).optional(),name:u.z.string().min(1).max(100).optional(),description:u.z.string().max(500).nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional(),color:u.z.string().nullable().optional(),isActive:u.z.boolean().optional(),isDefault:u.z.boolean().optional()}).strict();var wn=u.z.object({id:u.z.string(),organizationId:u.z.string().nullable(),name:u.z.string(),displayName:u.z.string(),description:u.z.string().nullable(),executable:u.z.string(),defaultArgs:u.z.string().nullable(),isEnabled:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`)}).strict(),u.z.object({name:u.z.string().min(1).max(255),displayName:u.z.string().min(1).max(255),description:u.z.string().optional(),executable:u.z.string().min(1).max(255),defaultArgs:u.z.string().optional(),isEnabled:u.z.boolean()}).strict(),u.z.object({items:u.z.array(wn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Tn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`,`displayName`]),order:u.z.enum([`asc`,`desc`]),isEnabled:u.z.boolean()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).max(255).optional(),displayName:u.z.string().min(1).max(255).optional(),description:u.z.string().optional(),executable:u.z.string().min(1).max(255).optional(),defaultArgs:u.z.string().optional(),isEnabled:u.z.boolean().optional()}).strict();var En=u.z.object({id:u.z.string(),organizationId:u.z.string(),agentTypeId:u.z.string(),name:u.z.string(),description:u.z.string().nullable(),isActive:u.z.boolean(),isDefault:u.z.boolean(),metadata:u.z.object({}).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`)}).strict(),u.z.object({agentTypeId:u.z.string().min(1),name:u.z.string().min(1).max(255),description:u.z.string().max(1e3).nullable().optional(),isDefault:u.z.boolean()}).strict(),u.z.object({items:u.z.array(En),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Dn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`]),order:u.z.enum([`asc`,`desc`])}).strict(),On=u.z.object({agentTypeId:u.z.string().min(1)}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string()}).strict(),u.z.object({}),u.z.object({name:u.z.string().min(1).max(255).optional(),description:u.z.string().max(1e3).nullable().optional(),isDefault:u.z.boolean().optional()}).strict(),u.z.object({}).strict();var kn=u.z.object({id:u.z.string(),profileId:u.z.string(),credentialType:u.z.string(),customName:u.z.string().nullable(),r2Key:u.z.string(),size:u.z.number().max(9007199254740991).int(),checksum:u.z.string(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string(),type:u.z.enum([`gemini`,`codex`,`custom`]).optional()}).strict();var An=u.z.object({originalSize:u.z.number().max(9007199254740991).int(),fileCount:u.z.number().min(0).max(9007199254740991).int(),checksum:u.z.string().min(64).max(64)}).strict();u.z.object({credentialType:u.z.enum([`gemini`,`codex`,`custom`]),customName:u.z.string().min(1).max(255).optional(),data:u.z.string().min(1),metadata:An}).strict(),u.z.object({items:u.z.array(kn),total:u.z.number().min(0).max(9007199254740991).int()}).strict();var jn=u.z.object({download:u.z.boolean()}).strict(),Mn=u.z.object({id:u.z.string(),agentProfileId:u.z.string(),key:u.z.string(),value:u.z.string(),description:u.z.string().nullable(),isRequired:u.z.boolean(),isSecret:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(Mn),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),profileId:u.z.string()}).strict(),u.z.object({}),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),profileId:u.z.string(),key:u.z.string()}).strict(),u.z.object({key:u.z.string().min(1).max(255),value:u.z.string().min(1),description:u.z.string().max(1e3).optional(),isRequired:u.z.boolean(),isSecret:u.z.boolean()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({variables:u.z.array(u.z.object({key:u.z.string().min(1).max(255),value:u.z.string().min(1),description:u.z.string().max(1e3).optional(),isRequired:u.z.boolean(),isSecret:u.z.boolean()}).strict())}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string()}).strict(),u.z.object({url:u.z.string().url(),state:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),provider:u.z.enum([`github`,`gitlab`])}).strict(),u.z.object({redirectUri:u.z.string().url()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({code:u.z.string().min(1),state:u.z.string().min(1)}).strict();var Nn=u.z.object({id:u.z.string(),organizationId:u.z.string(),provider:u.z.enum([`github`,`gitlab`]),scopes:u.z.array(u.z.string()),metadata:u.z.object({}).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(Nn),u.z.object({});var Pn=u.z.object({id:u.z.number(),name:u.z.string(),fullName:u.z.string(),cloneUrl:u.z.string(),sshUrl:u.z.string(),defaultBranch:u.z.string(),private:u.z.boolean(),owner:u.z.object({login:u.z.string(),avatarUrl:u.z.string().nullable()}).strict(),description:u.z.string().nullable(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(Pn),total:u.z.number()}).strict();var Fn=u.z.object({type:u.z.enum([`all`,`owner`,`public`,`private`,`member`]),sort:u.z.enum([`created`,`updated`,`pushed`,`full_name`]),direction:u.z.enum([`asc`,`desc`]),per_page:u.z.number().min(1).max(100),page:u.z.number().min(1)}).strict(),In=u.z.object({name:u.z.string(),protected:u.z.boolean()}).strict();u.z.object({items:u.z.array(In),total:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),owner:u.z.string().min(1),repo:u.z.string().min(1)}).strict();var Ln=u.z.object({per_page:u.z.number().min(1).max(100),page:u.z.number().min(1)}).strict(),Rn=u.z.object({id:u.z.string(),name:u.z.string(),type:u.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:u.z.string().optional(),version:u.z.string().optional(),metadata:u.z.object({}).optional(),is_active:u.z.boolean(),last_seen_at:u.z.string().datetime().optional(),created_at:u.z.string().datetime(),updated_at:u.z.string().datetime(),agentTypes:u.z.array(u.z.object({agentTypeId:u.z.string(),name:u.z.string(),displayName:u.z.string(),description:u.z.string().nullable(),executable:u.z.string(),defaultArgs:u.z.string().nullable(),isEnabled:u.z.boolean(),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean()}).strict()).optional(),activeDaemon:u.z.object({id:u.z.string(),status:u.z.string(),lastHeartbeat:u.z.string().datetime(),isActive:u.z.boolean()}).strict().nullable().optional()}).strict();u.z.object({devices:u.z.array(Rn),total:u.z.number()}).strict(),u.z.object({name:u.z.string().min(1),deviceGuid:u.z.string().min(1).optional(),type:u.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:u.z.string().optional(),version:u.z.string().optional(),metadata:u.z.object({}).optional(),agentTypes:u.z.array(u.z.object({agentType:u.z.string().min(1),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean()}).strict()).optional()}).strict(),u.z.object({name:u.z.string().min(1).optional(),metadata:u.z.object({}).optional(),is_active:u.z.boolean().optional()}).strict();var zn=u.z.object({id:u.z.string(),deviceId:u.z.string(),agentTypeId:u.z.string(),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean(),createdAt:u.z.string().datetime(),updatedAt:u.z.string().datetime()}).strict();u.z.object({items:u.z.array(zn),total:u.z.number()}).strict();var Bn=u.z.object({deviceId:u.z.string().optional(),agentTypeId:u.z.string().optional(),hostEnabled:u.z.boolean().optional(),dockerEnabled:u.z.boolean().optional(),hostAuthed:u.z.boolean().optional(),dockerAuthed:u.z.boolean().optional(),limit:u.z.number().min(1).max(100),offset:u.z.number().min(0)}).strict();u.z.object({deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean()}).strict(),u.z.object({hostEnabled:u.z.boolean().optional(),dockerEnabled:u.z.boolean().optional(),hostAuthed:u.z.boolean().optional(),dockerAuthed:u.z.boolean().optional()}).strict(),u.z.object({hostEnabled:u.z.boolean().optional(),dockerEnabled:u.z.boolean().optional(),hostAuthed:u.z.boolean().optional(),dockerAuthed:u.z.boolean().optional()}).strict();var Vn=u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),emailVerified:u.z.boolean(),image:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),twoFactorEnabled:u.z.boolean().nullable(),lastLoginMethod:u.z.string().nullable()}).strict(),Hn=u.z.object({id:u.z.string(),organizationId:u.z.string(),userId:u.z.string(),role:u.z.string(),createdAt:u.z.string(),description:u.z.string().nullable(),prompt:u.z.string().nullable()}).strict(),Un=u.z.object({user:Vn,member:Hn}).strict();u.z.object({members:u.z.array(Un),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Wn=u.z.object({limit:u.z.number().min(1).max(100).int().describe(`Max results`),offset:u.z.number().min(0).max(9007199254740991).int().describe(`Result offset`),sortBy:u.z.enum([`createdAt`,`name`,`email`]),sortDirection:u.z.enum([`asc`,`desc`]),filterField:u.z.enum([`role`,`createdAt`]).optional(),filterOperator:u.z.enum([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`nin`,`contains`]).optional(),filterValue:u.z.string().optional()}).strict();u.z.object({created:u.z.array(Un),errors:u.z.array(u.z.object({name:u.z.string(),error:u.z.string()}).strict()).optional()}).strict();var Gn=u.z.object({email:u.z.string().email().optional().describe(`Existing user email`),name:u.z.string().min(1).max(255).describe(`Agent member name`),description:u.z.string().optional().describe(`Agent description`),prompt:u.z.string().optional().describe(`Agent prompt`)}).strict();u.z.object({agents:u.z.array(Gn)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).max(255).optional(),description:u.z.string().optional(),prompt:u.z.string().optional()}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict();var Kn=u.z.object({id:u.z.string(),teamId:u.z.string(),userId:u.z.string(),createdAt:u.z.string(),user:u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),image:u.z.string().nullable().optional()}).strict().optional()}).strict();u.z.object({members:u.z.array(Kn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1)}).strict();var qn=u.z.object({limit:u.z.number().min(1).max(100).int(),offset:u.z.number().min(0).max(9007199254740991).int()}).strict();u.z.object({userId:u.z.string().min(1)}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1),userId:u.z.string().min(1)}).strict();var Jn=u.z.object({id:u.z.string(),teamId:u.z.string(),projectId:u.z.string(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({projects:u.z.array(Jn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1)}).strict();var Yn=u.z.object({limit:u.z.number().min(1).max(100).int(),offset:u.z.number().min(0).max(9007199254740991).int()}).strict();u.z.object({projectId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1),projectId:u.z.string().min(1)}).strict();var Xn=u.z.object({id:u.z.string(),key:u.z.string().optional().describe(`Only returned on creation`),name:u.z.string().optional(),prefix:u.z.string().optional(),start:u.z.string().optional().describe(`First characters of the key`),referenceId:u.z.string(),expiresAt:u.z.string().optional(),createdAt:u.z.string(),lastRequest:u.z.string().optional(),remaining:u.z.number().optional(),rateLimitEnabled:u.z.boolean(),permissions:u.z.object({}).optional(),metadata:u.z.object({}).optional()}).strict();u.z.object({name:u.z.string().min(1).max(255).optional().describe(`Optional name for the API key`),expiresIn:u.z.number().optional().describe(`Expiration time in seconds`),userId:u.z.string().optional().describe(`Optional user ID - defaults to authenticated user if not provided`),prefix:u.z.string().optional().describe(`Prefix for the API key`),remaining:u.z.number().optional().describe(`Number of requests remaining`),metadata:u.z.object({}).optional().describe(`Additional metadata for the API key`),refillAmount:u.z.number().optional().describe(`Amount to refill on interval`),refillInterval:u.z.number().optional().describe(`Refill interval in milliseconds`),rateLimitTimeWindow:u.z.number().optional().describe(`Rate limit time window in ms`),rateLimitMax:u.z.number().optional().describe(`Maximum requests in time window`),rateLimitEnabled:u.z.boolean().optional().describe(`Enable rate limiting`),permissions:u.z.object({}).optional().describe(`Permissions for the API key`)}).strict(),u.z.object({items:u.z.array(Xn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Zn=u.z.object({userId:u.z.string().optional().describe(`Filter by user ID`),includeExpired:u.z.boolean().optional().describe(`Include expired keys`),limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`,`lastRequest`]),order:u.z.enum([`asc`,`desc`])}).strict();u.z.object({id:u.z.string()}).strict();var Qn=u.z.object({id:u.z.string(),activityType:u.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:u.z.string(),description:u.z.string().nullable(),organizationId:u.z.string(),projectId:u.z.string().nullable(),taskId:u.z.string().nullable(),memberId:u.z.string().nullable(),agentSessionId:u.z.string().nullable(),deviceId:u.z.string().nullable(),daemonId:u.z.string().nullable(),metadata:u.z.object({duration:u.z.string().optional(),success:u.z.boolean().optional(),errorMessage:u.z.string().optional(),priority:u.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:u.z.number().nullable().optional(),previousStatus:u.z.string().optional(),newStatus:u.z.string().optional(),assignedFrom:u.z.string().optional(),assignedTo:u.z.string().optional(),branch:u.z.string().optional(),commits:u.z.number().nullable().optional(),repository:u.z.string().optional(),participants:u.z.number().nullable().optional(),messages:u.z.number().nullable().optional(),discussionTopic:u.z.string().optional(),agentType:u.z.string().optional(),executionTime:u.z.number().nullable().optional(),resourcesUsed:u.z.object({cpu:u.z.number().nullable().optional(),memory:u.z.number().nullable().optional()}).strict().optional(),oldValue:u.z.any().optional(),newValue:u.z.any().optional(),changes:u.z.object({}).optional(),tags:u.z.array(u.z.string()).optional(),relatedEntityId:u.z.string().optional(),relatedEntityType:u.z.string().optional()}).strict().nullable(),ipAddress:u.z.string().nullable(),userAgent:u.z.string().nullable(),createdAt:u.z.string()}).strict();u.z.object({items:u.z.array(Qn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`)}).strict();var $n=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),activityType:u.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:u.z.string().optional(),taskId:u.z.string().optional(),memberId:u.z.string().optional(),agentSessionId:u.z.string().optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),sort:u.z.enum([`createdAt`,`activityType`,`title`]),order:u.z.enum([`asc`,`desc`]),search:u.z.string().optional()}).strict(),er=u.z.object({activityType:u.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:u.z.string().min(1),description:u.z.string().optional(),projectId:u.z.string().optional(),taskId:u.z.string().optional(),memberId:u.z.string().optional(),agentSessionId:u.z.string().optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),metadata:u.z.object({duration:u.z.string().optional(),success:u.z.boolean().optional(),errorMessage:u.z.string().optional(),priority:u.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:u.z.number().nullable().optional(),previousStatus:u.z.string().optional(),newStatus:u.z.string().optional(),assignedFrom:u.z.string().optional(),assignedTo:u.z.string().optional(),branch:u.z.string().optional(),commits:u.z.number().nullable().optional(),repository:u.z.string().optional(),participants:u.z.number().nullable().optional(),messages:u.z.number().nullable().optional(),discussionTopic:u.z.string().optional(),agentType:u.z.string().optional(),executionTime:u.z.number().nullable().optional(),resourcesUsed:u.z.object({cpu:u.z.number().nullable().optional(),memory:u.z.number().nullable().optional()}).strict().optional(),oldValue:u.z.any().optional(),newValue:u.z.any().optional(),changes:u.z.object({}).optional(),tags:u.z.array(u.z.string()).optional(),relatedEntityId:u.z.string().optional(),relatedEntityType:u.z.string().optional()}).strict().optional(),ipAddress:u.z.string().optional(),userAgent:u.z.string().optional()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),activityId:u.z.string().min(1)}).strict(),u.z.object({title:u.z.string().min(1).optional(),description:u.z.string().optional(),metadata:u.z.object({duration:u.z.string().optional(),success:u.z.boolean().optional(),errorMessage:u.z.string().optional(),priority:u.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:u.z.number().nullable().optional(),previousStatus:u.z.string().optional(),newStatus:u.z.string().optional(),assignedFrom:u.z.string().optional(),assignedTo:u.z.string().optional(),branch:u.z.string().optional(),commits:u.z.number().nullable().optional(),repository:u.z.string().optional(),participants:u.z.number().nullable().optional(),messages:u.z.number().nullable().optional(),discussionTopic:u.z.string().optional(),agentType:u.z.string().optional(),executionTime:u.z.number().nullable().optional(),resourcesUsed:u.z.object({cpu:u.z.number().nullable().optional(),memory:u.z.number().nullable().optional()}).strict().optional(),oldValue:u.z.any().optional(),newValue:u.z.any().optional(),changes:u.z.object({}).optional(),tags:u.z.array(u.z.string()).optional(),relatedEntityId:u.z.string().optional(),relatedEntityType:u.z.string().optional()}).strict().optional()}).strict(),u.z.object({ok:u.z.boolean()}).strict(),u.z.object({kind:u.z.enum([`feedback`,`content_report`,`user_report`]),subject:u.z.string().min(2).max(120),message:u.z.string().min(10).max(4e3),targetType:u.z.enum([`task`,`comment`,`artifact`,`member`,`project`,`workspace`]).optional(),targetId:u.z.string().min(1).max(160).optional(),reportedMemberId:u.z.string().min(1).max(160).optional(),muteRequested:u.z.boolean().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),taskId:u.z.string().min(1).describe(`Task ID or slug`)}).strict();var tr=u.z.object({id:u.z.string(),title:u.z.string(),slug:u.z.string(),description:u.z.string().nullable(),projectId:u.z.string(),workUnitId:u.z.string().nullable(),statusId:u.z.string(),assigneeId:u.z.string().nullable(),creatorId:u.z.string(),position:u.z.number().min(-9007199254740991).max(9007199254740991).int(),priority:u.z.enum([`low`,`medium`,`high`]),dueDate:u.z.string().nullable(),startedAt:u.z.string().nullable(),completedAt:u.z.string().nullable(),acceptanceCriteria:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),tags:u.z.array(u.z.string()).nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),status:u.z.object({id:u.z.string(),key:u.z.string(),name:u.z.string(),description:u.z.string().nullable(),position:u.z.number(),color:u.z.string().nullable(),isActive:u.z.boolean(),isDefault:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict().nullable().optional(),project:u.z.object({id:u.z.string(),name:u.z.string(),description:u.z.string().nullable()}).strict().nullable().optional(),assignee:u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),role:u.z.string()}).strict().nullable().optional(),workUnit:u.z.object({id:u.z.string(),title:u.z.string(),slug:u.z.string(),type:u.z.string().nullable(),priority:u.z.string().nullable(),status:u.z.string().nullable()}).strict().nullable().optional()}).strict();u.z.object({items:u.z.array(tr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var nr=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),search:u.z.string().optional().describe(`Search tasks`),sort:u.z.enum([`createdAt`,`updatedAt`,`title`,`position`,`priority`,`dueDate`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`),columnId:u.z.string().optional(),statusId:u.z.string().optional(),statusIds:u.z.array(u.z.string()).optional().describe(`Comma-separated status IDs`),workUnitId:u.z.string().optional().describe(`Work unit ID`),assigneeId:u.z.string().optional().describe(`Assignee member ID`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),projectId:u.z.string().optional().describe(`Project ID`),tags:u.z.array(u.z.string()).optional().describe(`Comma-separated tags`),statusFilter:u.z.enum([`active`,`all`]).describe(`Status filter`)}).strict(),rr=u.z.object({title:u.z.string().min(1).max(255).optional().describe(`Task title`),slug:u.z.string().optional().describe(`Task slug`),description:u.z.string().nullable().optional(),workUnitId:u.z.string().nullable().optional(),statusId:u.z.string().min(1).optional(),assigneeId:u.z.string().nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:u.z.string().nullable().optional(),acceptanceCriteria:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),tags:u.z.array(u.z.string()).nullable().nullable().optional()}).strict(),ir=u.z.object({id:u.z.string(),key:u.z.string(),name:u.z.string(),size:u.z.number(),contentType:u.z.string().optional(),isPreviewable:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(ir),total:u.z.number()}).strict();var ar=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0)}).strict();u.z.object({url:u.z.string(),expiresIn:u.z.number()}).strict();var or=u.z.object({key:u.z.string().min(1)}).strict(),sr=u.z.object({x:u.z.number().min(0).max(1).describe(`Left edge as fraction 0-1`),y:u.z.number().min(0).max(1).describe(`Top edge as fraction 0-1`),width:u.z.number().min(0).max(1).describe(`Width as fraction 0-1`),height:u.z.number().min(0).max(1).describe(`Height as fraction 0-1`)}).strict();u.z.object({action:u.z.union([u.z.string(),u.z.string()]),artifactId:u.z.string().min(1),clip:sr.optional()}).strict(),u.z.object({action:u.z.union([u.z.string(),u.z.string(),u.z.string()]),artifactId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),statusId:u.z.string().min(1)}).strict();var cr=u.z.object({taskIds:u.z.array(u.z.string().min(1))}).strict(),lr=u.z.object({id:u.z.string(),taskId:u.z.string(),memberId:u.z.string(),assigneeId:u.z.string().nullable(),content:u.z.string(),info:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),member:u.z.object({id:u.z.string(),name:u.z.string().nullable(),email:u.z.string()}).strict().nullable(),assignee:u.z.object({id:u.z.string(),name:u.z.string().nullable(),email:u.z.string()}).strict().nullable()}).strict(),ur=u.z.object({assigneeId:u.z.string().nullable().nullable().optional(),content:u.z.string().min(1).max(1e4).describe(`Comment content`),info:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict();u.z.object({items:u.z.array(lr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var dr=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),sort:u.z.enum([`createdAt`,`updatedAt`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),taskId:u.z.string().min(1).describe(`Task ID or slug`),commentId:u.z.string().min(1).describe(`Comment ID`)}).strict();var fr=u.z.object({assigneeId:u.z.string().nullable().nullable().optional(),content:u.z.string().min(1).max(1e4).optional().describe(`Comment content`),info:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict();u.z.object({mcpServers:u.z.object({})}).strict(),u.z.object({projectId:u.z.string().min(1)}).strict(),u.z.object({id:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean().nullable(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string().min(1),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({serverName:u.z.string(),isEnabled:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}),priority:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1),id:u.z.string().min(1)}).strict(),u.z.object({serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),workUnitId:u.z.string().min(1).describe(`Work unit ID or slug`)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`)}).strict(),u.z.object({title:u.z.string().min(1).max(255).describe(`Work unit title`),slug:u.z.string().optional().describe(`Work unit slug`),description:u.z.string().nullable().optional(),projectId:u.z.string().min(1).optional(),parentWorkUnitId:u.z.string().nullable().optional(),type:u.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:u.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:u.z.string().nullable().optional(),status:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:u.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:u.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:u.z.string().nullable().optional(),targetDate:u.z.string().nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({items:u.z.array(bn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var pr=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),search:u.z.string().optional().describe(`Search work units`),sort:u.z.enum([`createdAt`,`updatedAt`,`title`,`priority`,`targetDate`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`),type:u.z.enum([`epic`,`feature`,`initiative`]).optional().describe(`Work unit type`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Work unit priority`),statuses:u.z.array(u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`])).optional().describe(`Comma-separated work unit statuses`),statusId:u.z.string().optional().describe(`Kanban status ID`),excludeStatus:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).optional().describe(`Exclude status`),ownerId:u.z.string().optional().describe(`Owner member ID`),parentWorkUnitId:u.z.string().optional().describe(`Parent work unit ID`)}).strict();u.z.object({progress:u.z.number().describe(`Overall progress percentage (0-100)`),completedTasks:u.z.number().describe(`Number of completed direct tasks`),totalTasks:u.z.number().describe(`Total number of direct tasks`),completedChildWorkUnits:u.z.number().describe(`Number of completed child work units`),totalChildWorkUnits:u.z.number().describe(`Total number of child work units`)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),taskId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`)}).strict();var mr=u.z.object({title:u.z.string().min(1).max(255).describe(`Task title`),slug:u.z.string().optional().describe(`Task slug`),description:u.z.string().nullable().optional(),projectId:u.z.string().min(1).optional(),workUnitId:u.z.string().nullable().optional(),statusId:u.z.string().min(1).optional(),assigneeId:u.z.string().nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:u.z.string().nullable().optional(),acceptanceCriteria:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),tags:u.z.array(u.z.string()).nullable().nullable().optional()}).strict(),hr=u.z.object({columnId:u.z.string().min(1),position:u.z.number().min(0).max(9007199254740991).int()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1)}).strict();var gr=u.z.object({sessionId:u.z.string().optional(),transportType:u.z.string().optional()}).strict(),_r=u.z.object({id:u.z.string(),environmentId:u.z.string(),key:u.z.string(),value:u.z.string(),description:u.z.string().nullable(),isSecret:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(_r),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),environmentId:u.z.string().min(1)}).strict(),u.z.object({}),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),environmentId:u.z.string().min(1),key:u.z.string().min(1)}).strict(),u.z.object({value:u.z.string().min(1),description:u.z.string().optional(),isSecret:u.z.boolean()}).strict(),u.z.object({entries:u.z.array(u.z.object({key:u.z.string().min(1).max(255),value:u.z.string().min(1),description:u.z.string().optional(),isSecret:u.z.boolean()}).strict())}).strict();var vr=u.z.object({id:u.z.string(),projectId:u.z.string(),name:u.z.string(),key:u.z.string(),type:u.z.string(),description:u.z.string().nullable(),isDefault:u.z.boolean(),permissions:u.z.string(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(vr);var yr=u.z.object({read:u.z.array(u.z.string()),write:u.z.array(u.z.string())}).strict();u.z.object({name:u.z.string().min(1).max(255),key:u.z.string().min(1).max(255),type:u.z.enum([`development`,`staging`,`production`,`custom`]),description:u.z.string().nullable().optional(),isDefault:u.z.boolean(),permissions:yr.optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),environmentId:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).max(255).optional(),key:u.z.string().min(1).max(255).optional(),type:u.z.enum([`development`,`staging`,`production`,`custom`]).optional(),description:u.z.string().nullable().optional(),isDefault:u.z.boolean().optional(),permissions:yr.optional()}).strict(),u.z.object({message:u.z.string()}).strict();var br=u.z.object({id:u.z.string(),organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable(),deviceId:u.z.string().nullable(),daemonId:u.z.string().nullable(),name:u.z.string(),status:u.z.enum([`running`,`completed`,`failed`]),contextData:u.z.string().nullable(),error:u.z.string().nullable(),startedAt:u.z.string(),completedAt:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),xr=u.z.object({id:u.z.string(),name:u.z.string(),startedAt:u.z.string()}).strict();u.z.object({error:u.z.string(),holder:xr}).strict(),u.z.object({name:u.z.string().min(1),workUnitId:u.z.string().optional(),taskId:u.z.string().optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),contextData:u.z.string().optional()}).strict(),u.z.object({items:u.z.array(br),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Sr=u.z.object({status:u.z.enum([`running`,`completed`,`failed`]).optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),limit:u.z.number().min(1).max(100).optional(),offset:u.z.number().min(0).optional()}).strict(),Cr=u.z.object({workUnitId:u.z.string().optional(),taskId:u.z.string().optional()}).strict();u.z.object({id:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).optional(),contextData:u.z.string().nullable().optional()}).strict(),u.z.object({status:u.z.enum([`completed`,`failed`]),error:u.z.string().optional()}).strict();var wr=u.z.enum([`work-unit`,`task`]),Tr=u.z.object({id:u.z.string(),kind:wr,slug:u.z.string(),title:u.z.string(),description:u.z.string().nullable(),status:u.z.string(),priority:u.z.string().nullable(),createdAt:u.z.string(),payload:u.z.object({})}).strict();u.z.object({items:u.z.array(Tr)}).strict();var Er=u.z.object({jobKind:wr,jobId:u.z.string().min(1),format:u.z.string()}).strict();u.z.object({claimed:u.z.boolean(),workflowId:u.z.string().optional(),job:Tr.nullable().optional(),holder:u.z.object({id:u.z.string(),name:u.z.string(),deviceId:u.z.string().nullable(),startedAt:u.z.string()}).strict().optional()}).strict(),u.z.object({jobKind:wr,jobId:u.z.string().min(1),name:u.z.string().min(1),deviceId:u.z.string().optional()}).strict(),u.z.object({released:u.z.boolean(),workflowId:u.z.string(),status:u.z.enum([`completed`,`failed`]),job:Tr.nullable()}).strict(),u.z.object({workflowId:u.z.string().min(1),status:u.z.enum([`completed`,`failed`]),error:u.z.string().optional()}).strict();var Dr=u.z.object({key:u.z.string(),name:u.z.string(),color:u.z.string(),position:u.z.number()}).strict(),Or=u.z.object({id:u.z.string(),name:u.z.string(),description:u.z.string(),icon:u.z.string(),color:u.z.string(),isBuiltIn:u.z.boolean(),statusCount:u.z.number(),starterTaskCount:u.z.number(),statuses:u.z.array(Dr)}).strict();u.z.object({templates:u.z.array(Or)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1).describe(`Project ID or slug`)}).strict(),u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string(),key:u.z.string(),description:u.z.string().nullable(),organizationId:u.z.string(),ownerId:u.z.string(),path:u.z.string().nullable(),templateId:u.z.string().nullable(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),color:u.z.string().nullable(),icon:u.z.string().nullable(),isArchived:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({error:u.z.string(),message:u.z.string(),feature:u.z.enum([`seats`,`projects`,`apiKeys`,`mcpServers`]),plan:u.z.string(),limit:u.z.number(),used:u.z.number(),upgradeRequired:u.z.boolean()}).strict();var kr=u.z.object({name:u.z.string().min(1).max(255).describe(`Project name`),slug:u.z.string().optional().describe(`Project slug`),description:u.z.string().nullable().optional(),organizationId:u.z.string().optional(),path:u.z.string().nullable().optional(),templateId:u.z.string().nullable().optional(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),color:u.z.string().nullable().optional(),icon:u.z.string().nullable().optional()}).strict(),Ar=u.z.object({id:u.z.string(),title:u.z.string(),value:u.z.number(),change:u.z.string(),trend:u.z.enum([`up`,`down`,`neutral`]),period:u.z.string()}).strict();u.z.object({activeProjects:u.z.number(),tasksInProgress:u.z.number(),completedTasks:u.z.number(),blockedTasks:u.z.number(),stats:u.z.array(Ar)}).strict();var jr=u.z.object({period:u.z.enum([`7`,`30`,`90`])}).strict();u.z.object({items:u.z.array(Sn),total:u.z.number(),limit:u.z.number().optional(),offset:u.z.number().optional()}).strict();var Mr=u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),role:u.z.string()}).strict().nullable(),Nr=u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string(),key:u.z.string(),description:u.z.string().nullable(),organizationId:u.z.string(),path:u.z.string().nullable(),templateId:u.z.string().nullable(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),color:u.z.string().nullable(),icon:u.z.string().nullable(),isArchived:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string(),owner:Mr}).strict();u.z.object({items:u.z.array(Nr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Pr=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),search:u.z.string().optional().describe(`Search projects`),sort:u.z.enum([`createdAt`,`updatedAt`,`name`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict(),Fr=u.z.object({name:u.z.string().min(1).max(255).optional().describe(`Project name`),slug:u.z.string().optional().describe(`Project slug`),description:u.z.string().nullable().optional(),organizationId:u.z.string().optional(),path:u.z.string().nullable().optional(),templateId:u.z.string().nullable().optional(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),color:u.z.string().nullable().optional(),icon:u.z.string().nullable().optional(),isArchived:u.z.boolean().optional().describe(`Whether project is archived`)}).strict(),H=u.z.object({id:u.z.string(),key:u.z.string(),name:u.z.string(),status:u.z.enum([`pending`,`uploaded`]),size:u.z.number().nullable(),contentType:u.z.string().optional(),isPreviewable:u.z.boolean(),labels:u.z.array(u.z.string()).nullable().optional(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(H),total:u.z.number()}).strict(),u.z.object({url:u.z.string(),expiresIn:u.z.number()}).strict();var Ir=u.z.object({key:u.z.string().min(1)}).strict();u.z.object({url:u.z.string(),key:u.z.string(),artifact:H}).strict();var Lr=u.z.object({filename:u.z.string().min(1),contentType:u.z.string().optional()}).strict();u.z.object({artifact:H}).strict(),u.z.object({key:u.z.string().min(1)}).strict(),u.z.object({items:u.z.array(H)}).strict();var Rr=u.z.object({key:u.z.string().min(1),name:u.z.string().min(1),status:u.z.enum([`pending`,`uploaded`]),size:u.z.number().nullable().optional(),contentType:u.z.string().optional(),isPreviewable:u.z.boolean(),labels:u.z.array(u.z.string()).nullable().optional()}).strict();u.z.object({items:u.z.array(Rr)}).strict();var zr=u.z.object({key:u.z.string().min(1)}).strict();u.z.object({balanceCents:u.z.number(),monthlyIncludedMinutes:u.z.number(),usedIncludedMinutes:u.z.number(),includedMinutesRemaining:u.z.number(),autoRechargeEnabled:u.z.boolean(),autoRechargeThresholdCents:u.z.number(),autoRechargeAmountCents:u.z.number(),overdraftLimitCents:u.z.number(),includedMinutesResetAt:u.z.string().nullable()}).strict(),u.z.object({organizationId:u.z.string().min(1)}).strict(),u.z.object({checkoutUrl:u.z.string().url(),sessionId:u.z.string()}).strict(),u.z.object({amountCents:u.z.number().min(500).max(1e5),successUrl:u.z.string().url(),cancelUrl:u.z.string().url()}).strict(),u.z.object({enabled:u.z.boolean(),thresholdCents:u.z.number().min(0).max(1e5).optional(),amountCents:u.z.number().min(500).max(1e5).optional()}).strict();var Br=u.z.object({id:u.z.string(),type:u.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]),amountCents:u.z.number(),balanceAfterCents:u.z.number(),usageMinutes:u.z.number().nullable(),pricePerMinuteCents:u.z.number().nullable(),referenceType:u.z.string().nullable(),referenceId:u.z.string().nullable(),createdAt:u.z.string()}).strict();u.z.object({items:u.z.array(Br),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Vr=u.z.object({limit:u.z.number().min(1).max(100).optional(),offset:u.z.number().min(0).optional(),type:u.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]).optional(),startDate:u.z.string().optional(),endDate:u.z.string().optional()}).strict();u.z.object({periodStart:u.z.string(),periodEnd:u.z.string(),totalMinutes:u.z.number(),includedMinutesUsed:u.z.number(),paidMinutesUsed:u.z.number(),totalChargedCents:u.z.number(),sandboxCount:u.z.number()}).strict();var Hr=u.z.object({startDate:u.z.string().min(1),endDate:u.z.string().min(1)}).strict(),Ur=u.z.object({planKey:u.z.string(),name:u.z.string(),pricePerSeatCents:u.z.number(),billingInterval:u.z.enum([`month`,`year`]),includedMinutesPerSeat:u.z.number(),stripePriceId:u.z.string().nullable()}).strict();u.z.object({plans:u.z.array(Ur)}).strict(),u.z.object({hasSubscription:u.z.boolean(),planKey:u.z.string().nullable(),planName:u.z.string().nullable(),seatCount:u.z.number(),memberCount:u.z.number(),currentPeriodStart:u.z.string().nullable(),currentPeriodEnd:u.z.string().nullable(),cancelAtPeriodEnd:u.z.boolean(),stripeSubscriptionId:u.z.string().nullable(),includedMinutes:u.z.number(),usedMinutes:u.z.number(),remainingMinutes:u.z.number()}).strict(),u.z.object({redirectUrl:u.z.string().nullable(),sessionId:u.z.string().nullable()}).strict(),u.z.object({planKey:u.z.string().min(1),discountCode:u.z.string().optional()}).strict(),u.z.object({currentSeats:u.z.number(),newSeats:u.z.number(),amountDue:u.z.number().nullable(),subtotal:u.z.number().nullable(),total:u.z.number().nullable(),prorationDate:u.z.number().nullable()}).strict();var Wr=u.z.object({seatCount:u.z.number().min(1)}).strict();u.z.object({success:u.z.boolean(),newSeatCount:u.z.number(),includedMinutes:u.z.number()}).strict(),u.z.object({seatCount:u.z.number().min(1)}).strict(),u.z.object({success:u.z.boolean(),cancelAtPeriodEnd:u.z.boolean(),periodEnd:u.z.string().nullable()}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict(),u.z.object({plan:u.z.string(),projects:u.z.object({used:u.z.number(),limit:u.z.number()}).strict(),apiKeys:u.z.object({used:u.z.number(),limit:u.z.number()}).strict(),mcpServers:u.z.object({used:u.z.number(),limit:u.z.number()}).strict(),seats:u.z.object({used:u.z.number(),limit:u.z.number()}).strict()}).strict();var Gr=u.z.object({id:u.z.string(),agentSessionId:u.z.string(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable(),projectId:u.z.string(),organizationId:u.z.string(),sandboxInstanceId:u.z.string().nullable(),containerId:u.z.string().nullable(),processId:u.z.string().nullable(),status:u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),autoTerminate:u.z.boolean(),timeoutMinutes:u.z.number().min(-9007199254740991).max(9007199254740991).int(),command:u.z.string(),workingDirectory:u.z.string().nullable(),exitCode:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),previewUrl:u.z.string().nullable(),errorMessage:u.z.string().nullable(),startedAt:u.z.string().nullable(),completedAt:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),agentSession:u.z.object({id:u.z.string(),status:u.z.string(),currentAgentType:u.z.string().nullable()}).strict().nullable().optional(),workUnit:u.z.object({id:u.z.string(),title:u.z.string(),status:u.z.string()}).strict().nullable().optional(),project:u.z.object({id:u.z.string(),name:u.z.string()}).strict().nullable().optional()}).strict();u.z.object({items:u.z.array(Gr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1)}).strict();var Kr=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),status:u.z.union([u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),u.z.array(u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]))]).optional(),projectId:u.z.string().optional(),workUnitId:u.z.string().optional(),agentSessionId:u.z.string().optional()}).strict();u.z.object({id:u.z.string(),status:u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),sandboxInstanceId:u.z.string().nullable(),containerId:u.z.string().nullable(),previewUrl:u.z.string().nullable(),exitCode:u.z.number().nullable(),errorMessage:u.z.string().nullable(),startedAt:u.z.string().nullable(),completedAt:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),sandboxId:u.z.string().min(1)}).strict(),u.z.object({message:u.z.string(),sandboxId:u.z.string(),status:u.z.string()}).strict(),u.z.object({message:u.z.string(),port:u.z.number(),url:u.z.string().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1),sandboxId:u.z.string().min(1),port:u.z.number().min(1024).max(65535).int()}).strict(),u.z.object({message:u.z.string(),port:u.z.number()}).strict();var qr=u.z.object({port:u.z.number(),url:u.z.string().optional()}).strict();u.z.object({ports:u.z.array(qr)}).strict(),u.z.object({organizationId:u.z.string().min(1),sandboxId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({received:u.z.boolean(),duplicate:u.z.boolean().optional(),ignored:u.z.boolean().optional()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({priceKey:u.z.string().min(1).describe(`Stripe price lookup key`),mode:u.z.enum([`payment`,`subscription`]).describe(`Checkout mode`),discountCode:u.z.string().optional().describe(`Optional discount/promotion code`)}).strict(),u.z.object({redirectUrl:u.z.string().url().describe(`URL to redirect user to Stripe checkout`)}).strict(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({sessionId:u.z.string().min(1),organizationId:u.z.string()}),u.z.object({id:u.z.string().describe(`Session ID`),status:u.z.string().nullable().describe(`Session status`),payment_status:u.z.string().describe(`Payment status`),invoice:u.z.object({}).nullable().describe(`Invoice details`)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({url:u.z.string().url().describe(`URL to Stripe billing portal`)}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({id:u.z.string().describe(`Customer ID`),customerId:u.z.string().nullable().describe(`Stripe customer ID (null for free tier without payment info)`),organizationId:u.z.string().describe(`Organization ID`),email:u.z.string().nullable().describe(`Customer email`),name:u.z.string().nullable().describe(`Customer name`),subscriptionId:u.z.string().nullable().describe(`Active subscription ID`),subscriptionStatus:u.z.string().nullable().describe(`Current subscription status`),planKey:u.z.enum([`free`,`basic_monthly`,`basic_yearly`]).describe(`Current subscription plan`),seatCount:u.z.number().describe(`Number of seats in subscription`),currentPeriodEnd:u.z.string().nullable().describe(`End date of current billing period (renewal date)`),cancelAtPeriodEnd:u.z.boolean().describe(`Whether subscription is scheduled to cancel at period end`),createdAt:u.z.string().describe(`Customer creation date`),updatedAt:u.z.string().describe(`Customer last update date`)}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({received:u.z.boolean(),duplicate:u.z.boolean().optional(),ignored:u.z.boolean().optional()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...hn.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...B.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...B.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...B.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...B.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...B.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...B.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({..._n.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),serverName:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...V.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...V.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...V.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...V.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var Jr=u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),Yr=u.z.object({...pr.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict();var U=u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict();var Xr=u.z.object({organizationId:u.z.string()});u.z.object({...Cn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Tn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Dn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...On.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string(),type:u.z.string()}),u.z.object({...jn.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string(),type:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),key:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...Fn.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),owner:u.z.string(),repo:u.z.string()}),u.z.object({...Ln.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({...Bn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...Bn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict();var Zr=u.z.object({organizationId:u.z.string().min(1)}),Qr=u.z.object({...Wn.shape});u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.object({...qn.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string(),userId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.object({...Yn.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Zn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...$n.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({stats:u.z.array(u.z.object({activityType:u.z.string(),count:u.z.number()}).strict()),total:u.z.number()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.array(er),u.z.array(Qn),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),activityId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),activityId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),activityId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict();var $r=u.z.object({organizationId:u.z.string()}),ei=u.z.object({...nr.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({period:u.z.enum([`7d`,`30d`,`3m`,`12m`])}),u.z.object({items:u.z.array(u.z.object({period:u.z.string(),aiCompleted:u.z.number(),humanCompleted:u.z.number(),totalTasks:u.z.number(),totalCost:u.z.number()}).strict()),summary:u.z.object({totalCost:u.z.number(),totalTasks:u.z.number(),monthlyGrowth:u.z.number()}).strict()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({...ar.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({...or.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),statusId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict();var ti=u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),ni=u.z.object({...nr.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict();var ri=u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var ii=u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()});u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var ai=u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),oi=u.z.object({...dr.shape});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var si=u.z.object({organizationId:u.z.string(),taskId:u.z.string(),commentId:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),commentId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),commentId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...gr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string(),key:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),projectId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),projectId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...Sr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...Cr.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...Er.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict();var ci=u.z.object({organizationId:u.z.string()}),li=u.z.object({...Pr.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...jr.shape}),u.z.object({error:u.z.string()}).strict();var ui=u.z.object({organizationId:u.z.string(),id:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var di=u.z.object({organizationId:u.z.string(),id:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({...zr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({...Ir.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({...Lr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Vr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Hr.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Wr.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Kr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string(),port:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string(),port:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var fi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks`,{method:`GET`,params:e,query:t})).data,pi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/statuses/{statusId}/tasks/reorder`,{method:`POST`,params:e,body:t})).data,mi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`GET`,params:e,query:t})).data,hi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`POST`,params:e,body:t})).data,gi=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`GET`,params:e})).data,_i=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`PATCH`,params:e,body:t})).data,vi=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`DELETE`,params:e})).data,yi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}/move`,{method:`POST`,params:e,body:t})).data,bi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`GET`,params:e,query:t})).data,xi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`POST`,params:e,body:t})).data,Si=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`GET`,params:e})).data,Ci=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`PATCH`,params:e,body:t})).data,wi=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`DELETE`,params:e})).data,Ti=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}/progress`,{method:`GET`,params:e})).data,Ei=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/members`,{method:`GET`,params:e,query:t})).data,Di=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/members/agents`,{method:`POST`,params:e,body:t})).data,Oi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`GET`,params:e,query:t})).data,ki=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`POST`,params:e,body:t})).data,Ai=async e=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`GET`,params:e})).data,ji=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`PATCH`,params:e,body:t})).data,Mi=async e=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`DELETE`,params:e})).data,Ni=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/task-statuses`,{method:`GET`,params:e,query:t})).data,Pi=`AGIFLOW_ORGANIZATION_ID`,Fi=`AGIFLOW_PROJECT_ID`,Ii=`AGIFLOW_TASK_ID`,Li=`AGIFLOW_WORK_UNIT_ID`,Ri=u.z.object({format:u.z.literal(`json`).default(`json`).describe(`Output format`)}),zi=u.z.object({tasksJson:u.z.string().min(1).describe(`Array of task objects or { "tasks": [...] }`)}),Bi=u.z.object({workUnitsJson:u.z.string().min(1).describe(`Array of work unit objects or { "workUnits": [...] }`)}),Vi=u.z.object({status:u.z.string().optional().describe(`Task status name, key, or ID`),assignee:u.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:u.z.string().optional().describe(`Work unit ID`),acceptanceCriteriaJson:u.z.string().optional().describe(`Acceptance criteria JSON`),testCasesJson:u.z.string().optional().describe(`Test cases JSON`),devInfoJson:u.z.string().optional().describe(`Development info JSON`)}),Hi=u.z.object({status:u.z.string().optional().describe(`Comma-separated status names, keys, or IDs`),assignee:u.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:u.z.string().optional().describe(`Work unit ID`)}),Ui=u.z.object({devInfoJson:u.z.string().optional().describe(`Development info JSON`),testCasesJson:u.z.string().optional().describe(`Test cases JSON`)}),Wi=u.z.object({assignee:u.z.string().optional().describe(`Assignee member ID, name, or email`),infoJson:u.z.string().optional().describe(`Comment info JSON`)}),W=()=>({name:`org`,source:`organizationId`,envVar:Pi}),G=(e=`projectId`)=>({name:`project`,source:e,valueName:`projectIdOrSlug`,envVar:Fi}),K=()=>({name:`task`,source:`taskId`,valueName:`taskIdOrSlug`,envVar:Ii}),q=()=>({name:`workUnit`,source:`workUnitId`,flag:`--work-unit`,valueName:`workUnitIdOrSlug`,envVar:Li}),J=(...e)=>e,Gi=(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)=>Rt.for(e).fromSchemaGroups([...t,{schema:Ri,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},Ki=(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 N{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 P({organizationId:e,id:t})).id}async resolveStatusId(e,t){let n=(await Ni({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 Ei({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})}},qi=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:ci,options:[W()]},{schema:kr,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:ci,options:[W()]},{schema:li,options:Gi()})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a project by ID or slug`),J({schema:di,options:[W(),G(`projectIdOrSlug`)]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a project`),J({schema:di,options:[W(),G(`projectIdOrSlug`)]},{schema:Fr,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:di,options:[W(),G(`projectIdOrSlug`)]})).action(e=>this.delete(e)),Y(t.command(`status`).description(`Project status commands`).command(`list`).description(`List project statuses`),J({schema:ui,options:[W(),G(`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 gt({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 ht({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 P({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 vt({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 yt({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 _t({organizationId:t,id:await this.resolveProjectId(t,n)});this.printJson({statuses:r.items,total:r.total})})}};qi=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],qi);var Ji=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task`).description(`Task JSON commands`),n=[W(),G()],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:ti,options:n},{schema:mr,options:r},{schema:Vi,options:i})).action(e=>this.create(e)),Y(t.command(`batch-create`).description(`Create multiple tasks`),J({schema:ti,options:n},{schema:zi,options:[{name:`tasksJson`,flag:`--tasks-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project tasks`),J({schema:ti,options:n},{schema:ni,options:Gi([{name:`statusFilter`,flag:`--status-filter`},{name:`priority`},{name:`tags`}])},{schema:Hi,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:ri,options:[...n,K()]})).action(e=>this.get(e)),Y(t.command(`active`).description(`List active organization tasks`),J({schema:$r,options:[W()]},{schema:ei,options:Gi([{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:ri,options:[...n,K()]},{schema:rr,options:r},{schema:Vi,options:i})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task`),J({schema:ri,options:[...n,K()]})).action(e=>this.delete(e)),Y(t.command(`reorder`).description(`Reorder tasks within a status`),J({schema:$r,options:[W()]},{schema:u.z.object({status:u.z.string().min(1).describe(`Status name, key, or ID`)}),options:[{name:`status`}]},{schema:cr,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:ii,options:[...n,K()]},{schema:hr,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:Xr,options:[W()]})).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 hi({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=Ki(this.parseJsonFlag(e.tasksJson,`--tasks-json`),`tasks`),i=[];for(let e of r){let r=await hi({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 mi({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 gi({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 mi({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 fi({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 _i({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 vi({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 pi({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 yi({organizationId:t,projectId:n,taskId:r},i);this.printJson({task:a})})}async statusList(e){await this.runJsonOnly(async()=>{await this.setupClient();let t=await Ni({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})})}};Ji=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Ji);var Yi=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`work-unit`).description(`Work unit JSON commands`),n=[W(),G()],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:Jr,options:n},{schema:Bi,options:[{name:`workUnitsJson`,flag:`--work-units-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project work units`),J({schema:Jr,options:n},{schema:Yr,options:Gi([{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:U,options:[...n,q()]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a work unit`),J({schema:U,options:[...n,q()]},{schema:xn,options:r},{schema:Ui,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:U,options:[...n,q()]})).action(e=>this.delete(e)),Y(t.command(`progress`).description(`Get work unit progress`),J({schema:U,options:[...n,q()]})).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=Ki(this.parseJsonFlag(e.workUnitsJson,`--work-units-json`),`workUnits`),i=[];for(let e of r){let r=await xi({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 _i({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 bi({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 Si({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 Ci({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 wi({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 Ti({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({progress:r})})}};Yi=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Yi);var Xi=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:Zr,options:[W()]},{schema:Qr,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:Zr,options:[W()]},{schema:Gn,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 Ei({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 Di({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??[]})})}};Xi=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Xi);var Zi=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task-comment`).description(`Task comment JSON commands`),n=[W(),K()];Y(t.command(`create`).description(`Create a task comment`),J({schema:ai,options:n},{schema:ur,options:[{name:`content`}]},{schema:Wi,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List task comments`),J({schema:ai,options:n},{schema:oi,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:si,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a task comment`),J({schema:si,options:[...n,{name:`comment`,source:`commentId`}]},{schema:fr,options:[{name:`content`}]},{schema:Wi,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task comment`),J({schema:si,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 ki({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 Oi({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 Ai({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 ji({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 Mi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment}),this.printJson({deleted:!0,comment:{id:e.comment}})})}};Zi=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Zi);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 l.Container({parent:x});$.bind(Q.AuthCommand).to(Ne),$.bind(Q.WorkflowCommand).to(mt),$.bind(Q.ArtifactCommand).to(Lt),$.bind(Q.AutomationCommand).to(Xt),$.bind(Q.ProjectCommand).to(qi),$.bind(Q.TaskCommand).to(Ji),$.bind(Q.WorkUnitCommand).to(Yi),$.bind(Q.MemberCommand).to(Xi),$.bind(Q.TaskCommentCommand).to(Zi),$.bind(Q.VaultCommand).to(ln),$.bind(Q.AnalyticsCommand).to($t),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-DCjNfDrN.cjs");exports.CLI_TYPES=e.n,exports.cliContainer=e.t;
|
package/package.json
CHANGED
|
@@ -1,7 +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("inversify"),u=require("zod"),d=require("pino");d=s(d,1);let f=require("fs");f=s(f,1);let p=require("path");p=s(p,1);let m=require("os");m=s(m,1);let h=require("crypto"),g=require("child_process");var ee=u.z.string().url();u.z.object({VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:u.z.string().trim().optional()});function te(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`}){let n=[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];for(let e of n){let t=ee.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, or BACKEND_AGIFLOW_API_ENDPOINT.`)}function _(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 ne=`serverUrl`,re=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(ne);if(e)return e;let t=te();return this.set(ne,t),t}};re=_([(0,l.injectable)()],re);function v(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}var ie=class{logger;constructor(){this.logger=(0,d.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)}};ie=_([(0,l.injectable)(),v(`design:paramtypes`,[])],ie);var ae=class{filePath;constructor(){this.filePath=p.default.join(m.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||((await this.load(e))?.apiKey??null)}async getOrganizationId(e={}){return process.env.AGIFLOW_ORGANIZATION_ID||((await this.load(e))?.organizationId??null)}async getProjectId(){return process.env.AGIFLOW_PROJECT_ID??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 or run authentication.`);return{"x-api-key":t}}readStoredFile(){try{if(!f.default.existsSync(this.filePath))return null;let e=JSON.parse(f.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){f.default.existsSync(this.filePath)&&f.default.unlinkSync(this.filePath);return}f.default.mkdirSync(p.default.dirname(this.filePath),{recursive:!0}),f.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=p.default.resolve(e);for(;;){if(f.default.existsSync(p.default.join(t,`.git`)))return t;let e=p.default.dirname(t);if(e===t)return null;t=e}}normalizePath(e){let t=p.default.resolve(e),n=f.default.existsSync(t)?f.default.realpathSync.native(t):t,r=p.default.normalize(n).replace(RegExp(`${this.escapeRegExp(p.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)}};ae=_([(0,l.injectable)(),v(`design:paramtypes`,[])],ae);var y={Logger:Symbol.for(`Logger`),ConfigManager:Symbol.for(`ConfigManager`),CredentialsService:Symbol.for(`CredentialsService`),DeviceCodeAuthService:Symbol.for(`DeviceCodeAuthService`)};function b(e,t){return function(n,r){t(n,r,e)}}var oe=`agent-cli`,se=`0.0.1`,ce=`openid profile email`,le=`urn:ietf:params:oauth:grant-type:device_code`,ue=class{configManager;constructor(e){this.configManager=e}async requestDeviceCode(e=ce){return await this.postJson(`/api/v1/auth/device/code`,void 0,{client_id:oe,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:le,device_code:e,client_id:oe})});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":oe,"x-client-version":se,...e}}url(e){return`${this.configManager.getServerUrl().replace(/\/$/,``)}${e}`}sleep(e){return new Promise(t=>setTimeout(t,e))}};ue=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),v(`design:paramtypes`,[Object])],ue);var x=new l.Container;x.bind(y.Logger).to(ie).inSingletonScope(),x.bind(y.ConfigManager).to(re).inSingletonScope(),x.bind(y.CredentialsService).to(ae).inSingletonScope(),x.bind(y.DeviceCodeAuthService).to(ue).inSingletonScope();var de=10,fe=(e=0)=>t=>`\u001B[${t+e}m`,pe=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,me=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,S={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(S.modifier);var he=Object.keys(S.color),ge=Object.keys(S.bgColor);[...he,...ge];function _e(){let e=new Map;for(let[t,n]of Object.entries(S)){for(let[t,r]of Object.entries(n))S[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=S[t],e.set(r[0],r[1]);Object.defineProperty(S,t,{value:n,enumerable:!1})}return Object.defineProperty(S,"codes",{value:e,enumerable:!1}),S.color.close=`\x1B[39m`,S.bgColor.close=`\x1B[49m`,S.color.ansi=fe(),S.color.ansi256=pe(),S.color.ansi16m=me(),S.bgColor.ansi=fe(de),S.bgColor.ansi256=pe(de),S.bgColor.ansi16m=me(de),Object.defineProperties(S,{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=>S.rgbToAnsi256(...S.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)=>S.ansi256ToAnsi(S.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>S.ansi256ToAnsi(S.hexToAnsi256(e)),enumerable:!1}}),S}var C=_e(),w=(()=>{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)})(),ve=w!==0&&{level:w,hasBasic:!0,has256:w>=2,has16m:w>=3},ye={stdout:ve,stderr:ve};function be(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 xe(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:Se,stderr:Ce}=ye,we=Symbol(`GENERATOR`),T=Symbol(`STYLER`),E=Symbol(`IS_EMPTY`),Te=[`ansi`,`ansi`,`ansi256`,`ansi16m`],D=Object.create(null),Ee=(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=Se?Se.level:0;e.level=t.level===void 0?n:t.level},De=e=>{let t=(...e)=>e.join(` `);return Ee(t,e),Object.setPrototypeOf(t,O.prototype),t};function O(e){return De(e)}Object.setPrototypeOf(O.prototype,Function.prototype);for(let[e,t]of Object.entries(C))D[e]={get(){let n=k(this,Ae(t.open,t.close,this[T]),this[E]);return Object.defineProperty(this,e,{value:n}),n}};D.visible={get(){let e=k(this,this[T],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Oe=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?C[n].ansi16m(...r):t===`ansi256`?C[n].ansi256(C.rgbToAnsi256(...r)):C[n].ansi(C.rgbToAnsi(...r)):e===`hex`?Oe(`rgb`,t,n,...C.hexToRgb(...r)):C[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){D[e]={get(){let{level:t}=this;return function(...n){let r=Ae(Oe(e,Te[t],`color`,...n),C.color.close,this[T]);return k(this,r,this[E])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);D[t]={get(){let{level:t}=this;return function(...n){let r=Ae(Oe(e,Te[t],`bgColor`,...n),C.bgColor.close,this[T]);return k(this,r,this[E])}}}}var ke=Object.defineProperties(()=>{},{...D,level:{enumerable:!0,get(){return this[we].level},set(e){this[we].level=e}}}),Ae=(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}},k=(e,t,n)=>{let r=(...e)=>je(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,ke),r[we]=e,r[T]=t,r[E]=n,r},je=(e,t)=>{if(e.level<=0||!t)return e[E]?``:t;let n=e[T];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=be(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
7
|
-
`);return a!==-1&&(t=xe(t,i,r,a)),r+t+i};Object.defineProperties(O.prototype,D);var A=O();O({level:Ce?Ce.level:0});var Me=`0.0.1`,Ne=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`).option(`--api-key <apiKey>`,`Use an existing Agiflow API key`).option(`--org <organizationId>`,`Organization ID to store with credentials`).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(A.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(A.red(`Error:`),n),process.exit(1)}}async ensureDeviceIdentity(e,t,n){let r=await this.credentialsService.getDeviceGuid(n)||`cli-${(0,h.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":Me,"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({name:m.default.hostname(),deviceGuid:r,type:`cli`,platform:process.platform,version:Me})}),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`}}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(A.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))}};Ne=_([(0,l.injectable)(),b(0,(0,l.inject)(y.CredentialsService)),b(1,(0,l.inject)(y.DeviceCodeAuthService)),b(2,(0,l.inject)(y.ConfigManager)),v(`design:paramtypes`,[Object,Object,Object])],Ne);var Pe=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(),Fe=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(),Ie=`default`,Le=1,Re=300,j=`Content-Type`,ze=`application/json`,Be=`X-API-KEY`,Ve=`Authorization`,He=`Bearer`,Ue=401,We=429,Ge=503,Ke=500,qe=400,Je=500,Ye=`text/`,Xe=.5,Ze=.5,Qe=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`}},$e=class{baseUrl;apiKey;headers;authProvider;authNamespace;configNamespace;useGlobalAuthProvider;useGlobalConfig;retryConfig;requestInterceptor;constructor(e={}){this.authProvider=e.authProvider,this.authNamespace=e.authNamespace??Ie,this.configNamespace=e.configNamespace??Ie,this.useGlobalAuthProvider=e.useGlobalAuthProvider??!0,this.useGlobalConfig=e.useGlobalConfig??!0,this.retryConfig={maxRetries:e.retryConfig?.maxRetries??Le,baseDelay:e.retryConfig?.baseDelay??Re},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?Fe.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?Pe.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[Ve]=`${He} ${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[j]=ze),n.headers[j]===void 0&&delete n.headers[j];let r=this.getRuntimeConfig();r.apiKey&&(n.headers[Be]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();if(i.status===Ue&&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>=qe&&i.status<Je&&i.status!==We)return i;if(i.status===We||i.status===Ge||i.status>=Ke){a=Error(`HTTP status ${i.status}`);let e=r*2**o*(Xe+Math.random()*Ze);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*(Xe+Math.random()*Ze);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[Be]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();return i.status===Ue&&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[j]=void 0):(f.body=JSON.stringify(a),d[j]=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(Ye)?await p.text():await p.blob(),!p.ok)throw new Qe(`HTTP ${p.status}: ${p.statusText}`,p.status,p.statusText,m);return{data:m,status:p.status,statusText:p.statusText,headers:p.headers}}},et=`backend-agiflow-api`,tt=e=>{Fe.setConfig(e,et)},M=((e={})=>new $e({...e,authNamespace:et,configNamespace:et}))(),nt=`0.0.1`,N=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 process.env[n]&&r.hideHelp(),r}async setupClient(){let e=this.configManager.getServerUrl(),t=await this.credentialsService.getApiKey();if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY or run authentication.`);tt({baseUrl:e,apiKey:t,headers:{"x-client-type":`agent-cli`,"x-client-version":nt}})}handleError(e,t){let n=t instanceof Error?t.message:String(t);console.error(A.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} or set the matching AGIFLOW_* environment variable.`)}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}},rt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`GET`,params:e,query:t})).data,it=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`POST`,params:e,body:t})).data,at=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/check`,{method:`GET`,params:e,query:t})).data,ot=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`GET`,params:e})).data,st=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`PATCH`,params:e,body:t})).data,ct=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}/release`,{method:`POST`,params:e,body:t})).data,lt=`AGIFLOW_ORGANIZATION_ID`,ut=`AGIFLOW_PROJECT_ID`,dt=`AGIFLOW_TASK_ID`,ft=`AGIFLOW_WORK_UNIT_ID`,pt=class extends N{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`,ft)).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 it({organizationId:t,projectId:n},{name:e.name,workUnitId:r.workUnitId,taskId:r.taskId,contextData:e.context});console.log(A.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 ot({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 rt({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(A.green(`✓`),`Workflow updated`),console.log(JSON.stringify(a,null,2))}catch(e){this.handleError(`Failed to update 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 ct({organizationId:n,projectId:r,id:e},{status:t.status,error:t.error});console.log(A.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`,ft)).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 at({organizationId:t,projectId:n},{workUnitId:r.workUnitId,taskId:r.taskId});console.log(A.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`,lt)).addOption(this.envOption(`--project <projectId>`,`Project ID`,ut))}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}:{}}};pt=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],pt);var mt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects`,{method:`GET`,params:e,query:t})).data,ht=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects`,{method:`POST`,params:e,body:t})).data,gt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`GET`,params:e})).data,_t=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`PATCH`,params:e,body:t})).data,vt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`DELETE`,params:e})).data,yt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`GET`,params:e})).data,bt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`DELETE`,params:e,query:t})).data,xt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/download`,{method:`GET`,params:e,query:t})).data,St=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/upload-url`,{method:`GET`,params:e,query:t})).data,Ct=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/complete`,{method:`POST`,params:e,body:t})).data,wt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/seed`,{method:`POST`,params:e,body:t})).data,Tt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks`,{method:`GET`,params:e,query:t})).data,Et=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts`,{method:`PATCH`,params:e,body:t})).data,Dt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/statuses/{statusId}/tasks/reorder`,{method:`POST`,params:e,body:t})).data,Ot=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`GET`,params:e,query:t})).data,kt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`POST`,params:e,body:t})).data,At=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`GET`,params:e})).data,jt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`PATCH`,params:e,body:t})).data,Mt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`DELETE`,params:e})).data,Nt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}/move`,{method:`POST`,params:e,body:t})).data,Pt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/work-units/{workUnitId}/artifacts`,{method:`PATCH`,params:e,body:t})).data,Ft=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`GET`,params:e,query:t})).data,It=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`POST`,params:e,body:t})).data,Lt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`GET`,params:e})).data,Rt=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`PATCH`,params:e,body:t})).data,zt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`DELETE`,params:e})).data,Bt=async e=>(await M.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}/progress`,{method:`GET`,params:e})).data,Vt=`AGIFLOW_ORGANIZATION_ID`,Ht=`AGIFLOW_PROJECT_ID`,Ut=`AGIFLOW_TASK_ID`,Wt=`AGIFLOW_WORK_UNIT_ID`,Gt=class extends N{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=p.default.resolve(e);f.default.existsSync(i)||(console.error(A.red(`✗`),`File not found: ${i}`),process.exit(1));let a=t.name??p.default.basename(i),o=f.default.readFileSync(i),s=f.default.statSync(i).size;console.log(A.blue(`↑`),`Uploading ${a} (${s} bytes)...`);let{url:c,key:l}=await St({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 Ct({organizationId:n,id:r},{key:l}),console.log(A.green(`✓`),`Artifact uploaded: ${l}`)}catch(e){this.handleError(`Failed to upload artifact`,e)}}),this.addArtifactScopeOptions(t.command(`download <key>`).description(`Download an artifact by key`)).option(`-o, --output <path>`,`Output file path`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=(await xt({organizationId:n,id:r},{key:e})).url,a=await fetch(i);if(!a.ok)throw Error(`Download failed with status ${a.status}`);let o=Buffer.from(await a.arrayBuffer()),s=t.output??e;f.default.writeFileSync(s,o),console.log(A.green(`✓`),`Downloaded to ${s}`)}catch(e){this.handleError(`Failed to download artifact`,e)}}),this.addArtifactScopeOptions(t.command(`list`).description(`List project artifacts`)).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=await yt({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 yt({organizationId:n,id:r})).items.find(t=>t.key===e||t.id===e);i||(console.error(A.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 bt({organizationId:n,id:r},{key:e}),console.log(A.green(`✓`),`Artifact deleted: ${e}`)}catch(e){this.handleError(`Failed to delete artifact`,e)}}),t.command(`link <key>`).description(`Link artifact to a work unit or task`).addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Vt)).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to link`,Wt)).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to link`,Ut)).action(async(e,t)=>{try{await this.setupClient();let n=await this.resolveOrganizationId(t.org),r=!!t.task,i=!!t.workUnit;if(r&&i){console.error(A.red(`✗`),`Specify exactly one of --task or --work-unit, not both`),process.exit(1);return}if(!r&&!i){console.error(A.red(`✗`),`Specify exactly one of --task or --work-unit`),process.exit(1);return}if(r){let r=await this.resolveTaskIdOption(t.task);await Et({organizationId:n,taskId:r},{action:`attach`,artifactId:e}),console.log(JSON.stringify({artifactKey:e,linkedTo:{type:`task`,id:r}},null,2))}else{let r=await this.resolveWorkUnitIdOption(t.workUnit);await Pt({organizationId:n,workUnitId:r},{action:`attach`,artifactId:e}),console.log(JSON.stringify({artifactKey:e,linkedTo:{type:`work-unit`,id:r}},null,2))}}catch(e){this.handleError(`Failed to link artifact`,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=p.default.resolve(e.file);if(!f.default.existsSync(r)){console.error(A.red(`✗`),`File not found: ${r}`),process.exit(1);return}let i=f.default.readFileSync(r,`utf-8`),a;try{a=JSON.parse(i)}catch{console.error(A.red(`✗`),`Invalid JSON in ${r}`),process.exit(1);return}let o=await wt({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 <artifactId>`).description(`Update artifact metadata`)).option(`--name <name>`,`New artifact name`).action((e,t)=>{console.log(A.yellow(`⚠`),`Artifact update endpoint not yet available in API`)})}addArtifactScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Vt)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,Ht))}async resolveArtifactScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}};Gt=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Gt);var Kt=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=u.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??qt(i),s=i?.description??Zt(e),l=r.defaultValue??Jt(i),u=r.valueName??a?.valueName??e,d=r.flag??a?.flag??`--${Xt(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=Yt(o),g=new c.Option(m,s);if(f.some(e=>process.env[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))}}},qt=e=>e&&(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type)===`boolean`?`boolean`:`string`,Jt=e=>{if(typeof e?.default==`string`||typeof e?.default==`boolean`)return e.default;if(typeof e?.default==`number`)return String(e.default)},Yt=e=>{if(e===`csv`)return e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);if(e===`json`)return e=>JSON.parse(e)},Xt=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/_/g,`-`).toLowerCase(),Zt=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),Qt=`0.0.1`,P=`AGIFLOW_ORGANIZATION_ID`,F=`AGIFLOW_PROJECT_ID`,$t=`AGIFLOW_TASK_ID`,en=`AGIFLOW_WORK_UNIT_ID`,tn=(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[en]=e.id:n[$t]=e.id,n},I=u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID`)}),nn=u.z.object({jobKind:u.z.enum([`work-unit`,`task`]).describe(`Job kind (work-unit|task)`),jobId:u.z.string().min(1).describe(`Job ID`)}),rn=u.z.object({format:u.z.literal(`json`).default(`json`).describe(`Output format`)}),L=(e,t)=>Kt.for(e).fromSchemaGroups([...t,{schema:rn,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),an=class extends N{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`),L(t.commands.at(-1),[{schema:I,options:[{name:`org`,source:`organizationId`,envVar:P},{name:`project`,source:`projectId`,envVar:F}]},{schema:u.z.object({limit:u.z.string().default(`50`).describe(`Max results`),claimed:u.z.boolean().optional().describe(`List claimed running jobs`),deviceId:u.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`),L(t.commands.at(-1),[{schema:I,options:[{name:`org`,source:`organizationId`,envVar:P},{name:`project`,source:`projectId`,envVar:F}]},{schema:nn,options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[en,$t]}]}]).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`),L(t.commands.at(-1),[{schema:I,options:[{name:`org`,source:`organizationId`,envVar:P},{name:`project`,source:`projectId`,envVar:F}]},{schema:nn.extend({name:u.z.string().min(1).describe(`Run name`),deviceId:u.z.string().optional().describe(`Device ID running the job`)}),options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[en,$t]},{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`),L(t.commands.at(-1),[{schema:I,options:[{name:`org`,source:`organizationId`,envVar:P},{name:`project`,source:`projectId`,envVar:F}]},{schema:u.z.object({workflowId:u.z.string().min(1).describe(`Workflow lock ID`),status:u.z.enum([`completed`,`failed`]).describe(`Release status (completed|failed)`),error:u.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)`),L(t.commands.at(-1),[{schema:I,options:[{name:`org`,source:`organizationId`,envVar:P},{name:`project`,source:`projectId`,envVar:F}]},{schema:u.z.object({handler:u.z.string().min(1).describe(`Consumer command run per claimed job`),status:u.z.string().default(`planning,todo`).describe(`Comma-separated job statuses to poll`),maxConcurrent:u.z.string().default(`2`).describe(`Max concurrent in-flight handlers`),interval:u.z.string().default(`1200`).describe(`Seconds between polls`),limit:u.z.string().default(`50`).describe(`Jobs fetched per poll`),once:u.z.boolean().optional().describe(`Run a single poll pass then drain and exit`),deviceId:u.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=tn(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,g.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=p.default.join(m.default.homedir(),`.agiflow`,`dispatch`,this.slugifyName(e));(0,f.mkdirSync)(n,{recursive:!0});let r=p.default.join(n,`${t.slug||t.id}.json`);return(0,f.writeFileSync)(r,JSON.stringify(t,null,2),`utf8`),r}removeJobContext(e){try{(0,f.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 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":Qt,"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}};an=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],an),u.z.enum([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`HEAD`]);var on=u.z.union([u.z.literal(200),u.z.literal(201),u.z.literal(204),u.z.literal(400),u.z.literal(401),u.z.literal(403),u.z.literal(404),u.z.literal(409),u.z.literal(422),u.z.literal(500),u.z.literal(502),u.z.literal(503)]);u.z.enum([`application/json`,`application/xml`,`text/plain`,`multipart/form-data`]),u.z.object({error:u.z.string(),message:u.z.string().optional(),statusCode:on,details:u.z.record(u.z.string(),u.z.unknown()).optional()}),u.z.object({total:u.z.number(),limit:u.z.number(),offset:u.z.number(),hasNext:u.z.boolean().optional(),hasPrev:u.z.boolean().optional()});var sn=u.z.object({id:u.z.enum([`apple`,`google`,`github`]),displayName:u.z.string(),flow:u.z.enum([`native-id-token`,`oauth-browser`])}).strict();u.z.object({emailPassword:u.z.boolean(),providers:u.z.array(sn)}).strict(),u.z.object({ok:u.z.boolean()}).strict(),u.z.object({name:u.z.string().min(2).max(80),email:u.z.string().max(160).email(),subject:u.z.string().min(2).max(120),message:u.z.string().min(10).max(4e3)}).strict();var cn=u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string().nullable(),role:u.z.string()}).strict();u.z.object({organizations:u.z.array(cn)}).strict(),u.z.object({api_key:u.z.string().describe(`The API key for the agent`),key_id:u.z.string().describe(`ID of the API key`),organization_id:u.z.string().describe(`Organization ID`),organization_name:u.z.string().describe(`Organization name`),agent_user_id:u.z.string().describe(`User ID of the agent`),expires_at:u.z.number().describe(`Expiration timestamp in milliseconds`)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID to exchange token for`)}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict();var ln=u.z.object({organizationId:u.z.string(),projectId:u.z.string().nullable(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable(),resourcePath:u.z.string(),scopes:u.z.string().nullable(),clientId:u.z.string(),expiresAt:u.z.string()}).strict(),un=u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string(),role:u.z.string()}).strict();u.z.object({resourceContext:ln.nullable(),organizations:u.z.array(un)}).strict();var dn=u.z.object({code_challenge:u.z.string().min(1)}).strict();u.z.object({success:u.z.boolean(),resourcePath:u.z.string(),organizationId:u.z.string(),projectId:u.z.string().nullable(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable()}).strict(),u.z.object({codeChallenge:u.z.string().min(1),organizationId:u.z.string().optional(),clientId:u.z.string().optional(),projectId:u.z.string().optional(),workUnitId:u.z.string().optional(),taskId:u.z.string().optional()}).strict(),u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string()}),u.z.object({name:u.z.string().min(2).max(80).describe(`Organization display name`)}).strict(),u.z.object({version:u.z.string()}).strict();var R=u.z.object({}).strict();u.z.object({version:u.z.string()}).strict();var z=u.z.object({}).strict();u.z.object({mcpServers:u.z.object({})}).strict();var fn=u.z.object({id:u.z.string(),mcpServerId:u.z.string(),serverName:u.z.string(),description:u.z.string().nullable(),isInternal:u.z.boolean(),scope:u.z.enum([`global`,`organization`,`project`,`task`]),isEnabled:u.z.boolean(),hasProgressiveDisclosure:u.z.boolean(),progressiveDisclosure:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}).nullable(),priority:u.z.number()}).strict();u.z.object({servers:u.z.array(fn),projectId:u.z.string().optional()}).strict();var pn=u.z.object({projectId:u.z.string().optional(),taskId:u.z.string().optional(),workUnitId:u.z.string().optional()}).strict();u.z.object({id:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean(),priority:u.z.number().min(-9007199254740991).max(9007199254740991).int(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),mcpServerId:u.z.string().min(1),serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().optional(),priority:u.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({serverName:u.z.string(),isEnabled:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}),priority:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),serverName:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().optional(),priority:u.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({id:u.z.string(),organizationId:u.z.string(),projectId:u.z.string().nullable(),taskId:u.z.string().nullable(),workUnitId:u.z.string().nullable(),progressiveDisclosure:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}).strict();var B=u.z.object({projectId:u.z.string().optional(),taskId:u.z.string().optional(),workUnitId:u.z.string().optional()}).strict();u.z.object({progressiveDisclosure:u.z.boolean()}).strict(),u.z.object({progressiveDisclosure:u.z.boolean()}).strict();var mn=u.z.object({id:u.z.string(),organizationId:u.z.string().nullable(),serverName:u.z.string(),displayName:u.z.string(),description:u.z.string().nullable(),isInternal:u.z.boolean(),serverConfig:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),availableTools:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),availableResources:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(mn)}).strict();var hn=u.z.union([u.z.object({type:u.z.string(),command:u.z.string().min(1),args:u.z.array(u.z.string()).optional(),env:u.z.object({}).optional()}).strict(),u.z.object({type:u.z.string(),url:u.z.string().url(),headers:u.z.object({}).optional()}).strict()]);u.z.object({serverName:u.z.string().min(1),displayName:u.z.string().min(1),description:u.z.string().optional(),serverConfig:hn}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({serverName:u.z.string().min(1).optional(),displayName:u.z.string().min(1).optional(),description:u.z.string().optional(),serverConfig:hn.optional()}).strict(),u.z.object({mcpServers:u.z.object({})}).strict(),u.z.object({taskId:u.z.string().min(1)}).strict(),u.z.object({id:u.z.string(),taskId:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean().nullable(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({taskId:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string().min(1),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({serverName:u.z.string(),isEnabled:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}),priority:u.z.number()}).strict(),u.z.object({taskId:u.z.string().min(1),id:u.z.string().min(1)}).strict(),u.z.object({serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({mcpServers:u.z.object({})}).strict(),u.z.object({workUnitId:u.z.string().min(1)}).strict(),u.z.object({id:u.z.string(),workUnitId:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean().nullable(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({workUnitId:u.z.string().min(1),id:u.z.string().min(1)}).strict(),u.z.object({serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),workUnitId:u.z.string().min(1)}).strict();var gn=u.z.object({id:u.z.string(),title:u.z.string(),slug:u.z.string(),description:u.z.string().nullable(),projectId:u.z.string(),parentWorkUnitId:u.z.string().nullable(),type:u.z.enum([`epic`,`feature`,`initiative`]).nullable(),priority:u.z.enum([`low`,`medium`,`high`]).nullable(),statusId:u.z.string().nullable(),status:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable(),ownerId:u.z.string(),estimatedEffort:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),startDate:u.z.string().nullable(),targetDate:u.z.string().nullable(),completedAt:u.z.string().nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),taskCount:u.z.number().optional().describe(`Number of tasks in this work unit`)}).strict(),_n=u.z.object({title:u.z.string().min(1).max(255).optional().describe(`Work unit title`),slug:u.z.string().optional().describe(`Work unit slug`),description:u.z.string().nullable().optional(),parentWorkUnitId:u.z.string().nullable().optional(),type:u.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:u.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:u.z.string().nullable().optional(),status:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:u.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:u.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:u.z.string().nullable().optional(),targetDate:u.z.string().nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict();u.z.object({action:u.z.union([u.z.string(),u.z.string(),u.z.string()]),artifactId:u.z.string().min(1)}).strict();var vn=u.z.object({id:u.z.string(),organizationId:u.z.string().nullable(),projectId:u.z.string().nullable(),isStartedState:u.z.boolean(),isCompletionState:u.z.boolean(),isTerminalState:u.z.boolean(),isBlockedState:u.z.boolean(),isAgentPickable:u.z.boolean(),key:u.z.string(),name:u.z.string(),description:u.z.string().nullable(),position:u.z.number().min(-9007199254740991).max(9007199254740991).int(),color:u.z.string().nullable(),isActive:u.z.boolean(),isDefault:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(vn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1).optional()}).strict(),u.z.object({statusIds:u.z.array(u.z.string().min(1))}).strict(),u.z.object({organizationId:u.z.string().min(1).nullable().optional(),projectId:u.z.string().nullable().optional(),isStartedState:u.z.boolean().optional(),isCompletionState:u.z.boolean().optional(),isTerminalState:u.z.boolean().optional(),isBlockedState:u.z.boolean().optional(),isAgentPickable:u.z.boolean().optional(),key:u.z.string().min(1).max(50),name:u.z.string().min(1).max(100),description:u.z.string().max(500).nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional(),color:u.z.string().nullable().optional(),isActive:u.z.boolean().optional(),isDefault:u.z.boolean().optional()}).strict();var yn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`,`position`,`key`]),order:u.z.enum([`asc`,`desc`])}).strict();u.z.object({projectId:u.z.string().nullable().optional(),isStartedState:u.z.boolean().optional(),isCompletionState:u.z.boolean().optional(),isTerminalState:u.z.boolean().optional(),isBlockedState:u.z.boolean().optional(),isAgentPickable:u.z.boolean().optional(),key:u.z.string().min(1).max(50).optional(),name:u.z.string().min(1).max(100).optional(),description:u.z.string().max(500).nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional(),color:u.z.string().nullable().optional(),isActive:u.z.boolean().optional(),isDefault:u.z.boolean().optional()}).strict();var bn=u.z.object({id:u.z.string(),organizationId:u.z.string().nullable(),name:u.z.string(),displayName:u.z.string(),description:u.z.string().nullable(),executable:u.z.string(),defaultArgs:u.z.string().nullable(),isEnabled:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`)}).strict(),u.z.object({name:u.z.string().min(1).max(255),displayName:u.z.string().min(1).max(255),description:u.z.string().optional(),executable:u.z.string().min(1).max(255),defaultArgs:u.z.string().optional(),isEnabled:u.z.boolean()}).strict(),u.z.object({items:u.z.array(bn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var xn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`,`displayName`]),order:u.z.enum([`asc`,`desc`]),isEnabled:u.z.boolean()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).max(255).optional(),displayName:u.z.string().min(1).max(255).optional(),description:u.z.string().optional(),executable:u.z.string().min(1).max(255).optional(),defaultArgs:u.z.string().optional(),isEnabled:u.z.boolean().optional()}).strict();var Sn=u.z.object({id:u.z.string(),organizationId:u.z.string(),agentTypeId:u.z.string(),name:u.z.string(),description:u.z.string().nullable(),isActive:u.z.boolean(),isDefault:u.z.boolean(),metadata:u.z.object({}).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`)}).strict(),u.z.object({agentTypeId:u.z.string().min(1),name:u.z.string().min(1).max(255),description:u.z.string().max(1e3).nullable().optional(),isDefault:u.z.boolean()}).strict(),u.z.object({items:u.z.array(Sn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Cn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`]),order:u.z.enum([`asc`,`desc`])}).strict(),wn=u.z.object({agentTypeId:u.z.string().min(1)}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string()}).strict(),u.z.object({}),u.z.object({name:u.z.string().min(1).max(255).optional(),description:u.z.string().max(1e3).nullable().optional(),isDefault:u.z.boolean().optional()}).strict(),u.z.object({}).strict();var Tn=u.z.object({id:u.z.string(),profileId:u.z.string(),credentialType:u.z.string(),customName:u.z.string().nullable(),r2Key:u.z.string(),size:u.z.number().max(9007199254740991).int(),checksum:u.z.string(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string(),type:u.z.enum([`gemini`,`codex`,`custom`]).optional()}).strict();var En=u.z.object({originalSize:u.z.number().max(9007199254740991).int(),fileCount:u.z.number().min(0).max(9007199254740991).int(),checksum:u.z.string().min(64).max(64)}).strict();u.z.object({credentialType:u.z.enum([`gemini`,`codex`,`custom`]),customName:u.z.string().min(1).max(255).optional(),data:u.z.string().min(1),metadata:En}).strict(),u.z.object({items:u.z.array(Tn),total:u.z.number().min(0).max(9007199254740991).int()}).strict();var Dn=u.z.object({download:u.z.boolean()}).strict(),On=u.z.object({id:u.z.string(),agentProfileId:u.z.string(),key:u.z.string(),value:u.z.string(),description:u.z.string().nullable(),isRequired:u.z.boolean(),isSecret:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(On),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),profileId:u.z.string()}).strict(),u.z.object({}),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),profileId:u.z.string(),key:u.z.string()}).strict(),u.z.object({key:u.z.string().min(1).max(255),value:u.z.string().min(1),description:u.z.string().max(1e3).optional(),isRequired:u.z.boolean(),isSecret:u.z.boolean()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({variables:u.z.array(u.z.object({key:u.z.string().min(1).max(255),value:u.z.string().min(1),description:u.z.string().max(1e3).optional(),isRequired:u.z.boolean(),isSecret:u.z.boolean()}).strict())}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string()}).strict(),u.z.object({url:u.z.string().url(),state:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),provider:u.z.enum([`github`,`gitlab`])}).strict(),u.z.object({redirectUri:u.z.string().url()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({code:u.z.string().min(1),state:u.z.string().min(1)}).strict();var kn=u.z.object({id:u.z.string(),organizationId:u.z.string(),provider:u.z.enum([`github`,`gitlab`]),scopes:u.z.array(u.z.string()),metadata:u.z.object({}).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(kn),u.z.object({});var An=u.z.object({id:u.z.number(),name:u.z.string(),fullName:u.z.string(),cloneUrl:u.z.string(),sshUrl:u.z.string(),defaultBranch:u.z.string(),private:u.z.boolean(),owner:u.z.object({login:u.z.string(),avatarUrl:u.z.string().nullable()}).strict(),description:u.z.string().nullable(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(An),total:u.z.number()}).strict();var jn=u.z.object({type:u.z.enum([`all`,`owner`,`public`,`private`,`member`]),sort:u.z.enum([`created`,`updated`,`pushed`,`full_name`]),direction:u.z.enum([`asc`,`desc`]),per_page:u.z.number().min(1).max(100),page:u.z.number().min(1)}).strict(),Mn=u.z.object({name:u.z.string(),protected:u.z.boolean()}).strict();u.z.object({items:u.z.array(Mn),total:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),owner:u.z.string().min(1),repo:u.z.string().min(1)}).strict();var Nn=u.z.object({per_page:u.z.number().min(1).max(100),page:u.z.number().min(1)}).strict(),Pn=u.z.object({id:u.z.string(),name:u.z.string(),type:u.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:u.z.string().optional(),version:u.z.string().optional(),metadata:u.z.object({}).optional(),is_active:u.z.boolean(),last_seen_at:u.z.string().datetime().optional(),created_at:u.z.string().datetime(),updated_at:u.z.string().datetime(),agentTypes:u.z.array(u.z.object({agentTypeId:u.z.string(),name:u.z.string(),displayName:u.z.string(),description:u.z.string().nullable(),executable:u.z.string(),defaultArgs:u.z.string().nullable(),isEnabled:u.z.boolean(),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean()}).strict()).optional(),activeDaemon:u.z.object({id:u.z.string(),status:u.z.string(),lastHeartbeat:u.z.string().datetime(),isActive:u.z.boolean()}).strict().nullable().optional()}).strict();u.z.object({devices:u.z.array(Pn),total:u.z.number()}).strict(),u.z.object({name:u.z.string().min(1),deviceGuid:u.z.string().min(1).optional(),type:u.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:u.z.string().optional(),version:u.z.string().optional(),metadata:u.z.object({}).optional(),agentTypes:u.z.array(u.z.object({agentType:u.z.string().min(1),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean()}).strict()).optional()}).strict(),u.z.object({name:u.z.string().min(1).optional(),metadata:u.z.object({}).optional(),is_active:u.z.boolean().optional()}).strict();var Fn=u.z.object({id:u.z.string(),deviceId:u.z.string(),agentTypeId:u.z.string(),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean(),createdAt:u.z.string().datetime(),updatedAt:u.z.string().datetime()}).strict();u.z.object({items:u.z.array(Fn),total:u.z.number()}).strict();var In=u.z.object({deviceId:u.z.string().optional(),agentTypeId:u.z.string().optional(),hostEnabled:u.z.boolean().optional(),dockerEnabled:u.z.boolean().optional(),hostAuthed:u.z.boolean().optional(),dockerAuthed:u.z.boolean().optional(),limit:u.z.number().min(1).max(100),offset:u.z.number().min(0)}).strict();u.z.object({deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),hostEnabled:u.z.boolean(),dockerEnabled:u.z.boolean(),hostAuthed:u.z.boolean(),dockerAuthed:u.z.boolean()}).strict(),u.z.object({hostEnabled:u.z.boolean().optional(),dockerEnabled:u.z.boolean().optional(),hostAuthed:u.z.boolean().optional(),dockerAuthed:u.z.boolean().optional()}).strict(),u.z.object({hostEnabled:u.z.boolean().optional(),dockerEnabled:u.z.boolean().optional(),hostAuthed:u.z.boolean().optional(),dockerAuthed:u.z.boolean().optional()}).strict();var Ln=u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),emailVerified:u.z.boolean(),image:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),twoFactorEnabled:u.z.boolean().nullable(),lastLoginMethod:u.z.string().nullable()}).strict(),Rn=u.z.object({id:u.z.string(),organizationId:u.z.string(),userId:u.z.string(),role:u.z.string(),createdAt:u.z.string(),description:u.z.string().nullable(),prompt:u.z.string().nullable()}).strict(),zn=u.z.object({user:Ln,member:Rn}).strict();u.z.object({members:u.z.array(zn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Bn=u.z.object({limit:u.z.number().min(1).max(100).int().describe(`Max results`),offset:u.z.number().min(0).max(9007199254740991).int().describe(`Result offset`),sortBy:u.z.enum([`createdAt`,`name`,`email`]),sortDirection:u.z.enum([`asc`,`desc`]),filterField:u.z.enum([`role`,`createdAt`]).optional(),filterOperator:u.z.enum([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`nin`,`contains`]).optional(),filterValue:u.z.string().optional()}).strict();u.z.object({created:u.z.array(zn),errors:u.z.array(u.z.object({name:u.z.string(),error:u.z.string()}).strict()).optional()}).strict();var Vn=u.z.object({email:u.z.string().email().optional().describe(`Existing user email`),name:u.z.string().min(1).max(255).describe(`Agent member name`),description:u.z.string().optional().describe(`Agent description`),prompt:u.z.string().optional().describe(`Agent prompt`)}).strict();u.z.object({agents:u.z.array(Vn)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).max(255).optional(),description:u.z.string().optional(),prompt:u.z.string().optional()}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict();var Hn=u.z.object({id:u.z.string(),teamId:u.z.string(),userId:u.z.string(),createdAt:u.z.string(),user:u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),image:u.z.string().nullable().optional()}).strict().optional()}).strict();u.z.object({members:u.z.array(Hn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1)}).strict();var Un=u.z.object({limit:u.z.number().min(1).max(100).int(),offset:u.z.number().min(0).max(9007199254740991).int()}).strict();u.z.object({userId:u.z.string().min(1)}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1),userId:u.z.string().min(1)}).strict();var Wn=u.z.object({id:u.z.string(),teamId:u.z.string(),projectId:u.z.string(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({projects:u.z.array(Wn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1)}).strict();var Gn=u.z.object({limit:u.z.number().min(1).max(100).int(),offset:u.z.number().min(0).max(9007199254740991).int()}).strict();u.z.object({projectId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),teamId:u.z.string().min(1),projectId:u.z.string().min(1)}).strict();var Kn=u.z.object({id:u.z.string(),key:u.z.string().optional().describe(`Only returned on creation`),name:u.z.string().optional(),prefix:u.z.string().optional(),start:u.z.string().optional().describe(`First characters of the key`),referenceId:u.z.string(),expiresAt:u.z.string().optional(),createdAt:u.z.string(),lastRequest:u.z.string().optional(),remaining:u.z.number().optional(),rateLimitEnabled:u.z.boolean(),permissions:u.z.object({}).optional(),metadata:u.z.object({}).optional()}).strict();u.z.object({name:u.z.string().min(1).max(255).optional().describe(`Optional name for the API key`),expiresIn:u.z.number().optional().describe(`Expiration time in seconds`),userId:u.z.string().optional().describe(`Optional user ID - defaults to authenticated user if not provided`),prefix:u.z.string().optional().describe(`Prefix for the API key`),remaining:u.z.number().optional().describe(`Number of requests remaining`),metadata:u.z.object({}).optional().describe(`Additional metadata for the API key`),refillAmount:u.z.number().optional().describe(`Amount to refill on interval`),refillInterval:u.z.number().optional().describe(`Refill interval in milliseconds`),rateLimitTimeWindow:u.z.number().optional().describe(`Rate limit time window in ms`),rateLimitMax:u.z.number().optional().describe(`Maximum requests in time window`),rateLimitEnabled:u.z.boolean().optional().describe(`Enable rate limiting`),permissions:u.z.object({}).optional().describe(`Permissions for the API key`)}).strict(),u.z.object({items:u.z.array(Kn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var qn=u.z.object({userId:u.z.string().optional().describe(`Filter by user ID`),includeExpired:u.z.boolean().optional().describe(`Include expired keys`),limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),search:u.z.string().optional(),sort:u.z.enum([`createdAt`,`updatedAt`,`name`,`lastRequest`]),order:u.z.enum([`asc`,`desc`])}).strict();u.z.object({id:u.z.string()}).strict();var Jn=u.z.object({id:u.z.string(),activityType:u.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:u.z.string(),description:u.z.string().nullable(),organizationId:u.z.string(),projectId:u.z.string().nullable(),taskId:u.z.string().nullable(),memberId:u.z.string().nullable(),agentSessionId:u.z.string().nullable(),deviceId:u.z.string().nullable(),daemonId:u.z.string().nullable(),metadata:u.z.object({duration:u.z.string().optional(),success:u.z.boolean().optional(),errorMessage:u.z.string().optional(),priority:u.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:u.z.number().nullable().optional(),previousStatus:u.z.string().optional(),newStatus:u.z.string().optional(),assignedFrom:u.z.string().optional(),assignedTo:u.z.string().optional(),branch:u.z.string().optional(),commits:u.z.number().nullable().optional(),repository:u.z.string().optional(),participants:u.z.number().nullable().optional(),messages:u.z.number().nullable().optional(),discussionTopic:u.z.string().optional(),agentType:u.z.string().optional(),executionTime:u.z.number().nullable().optional(),resourcesUsed:u.z.object({cpu:u.z.number().nullable().optional(),memory:u.z.number().nullable().optional()}).strict().optional(),oldValue:u.z.any().optional(),newValue:u.z.any().optional(),changes:u.z.object({}).optional(),tags:u.z.array(u.z.string()).optional(),relatedEntityId:u.z.string().optional(),relatedEntityType:u.z.string().optional()}).strict().nullable(),ipAddress:u.z.string().nullable(),userAgent:u.z.string().nullable(),createdAt:u.z.string()}).strict();u.z.object({items:u.z.array(Jn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`)}).strict();var Yn=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),activityType:u.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:u.z.string().optional(),taskId:u.z.string().optional(),memberId:u.z.string().optional(),agentSessionId:u.z.string().optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),sort:u.z.enum([`createdAt`,`activityType`,`title`]),order:u.z.enum([`asc`,`desc`]),search:u.z.string().optional()}).strict(),Xn=u.z.object({activityType:u.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:u.z.string().min(1),description:u.z.string().optional(),projectId:u.z.string().optional(),taskId:u.z.string().optional(),memberId:u.z.string().optional(),agentSessionId:u.z.string().optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),metadata:u.z.object({duration:u.z.string().optional(),success:u.z.boolean().optional(),errorMessage:u.z.string().optional(),priority:u.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:u.z.number().nullable().optional(),previousStatus:u.z.string().optional(),newStatus:u.z.string().optional(),assignedFrom:u.z.string().optional(),assignedTo:u.z.string().optional(),branch:u.z.string().optional(),commits:u.z.number().nullable().optional(),repository:u.z.string().optional(),participants:u.z.number().nullable().optional(),messages:u.z.number().nullable().optional(),discussionTopic:u.z.string().optional(),agentType:u.z.string().optional(),executionTime:u.z.number().nullable().optional(),resourcesUsed:u.z.object({cpu:u.z.number().nullable().optional(),memory:u.z.number().nullable().optional()}).strict().optional(),oldValue:u.z.any().optional(),newValue:u.z.any().optional(),changes:u.z.object({}).optional(),tags:u.z.array(u.z.string()).optional(),relatedEntityId:u.z.string().optional(),relatedEntityType:u.z.string().optional()}).strict().optional(),ipAddress:u.z.string().optional(),userAgent:u.z.string().optional()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),activityId:u.z.string().min(1)}).strict(),u.z.object({title:u.z.string().min(1).optional(),description:u.z.string().optional(),metadata:u.z.object({duration:u.z.string().optional(),success:u.z.boolean().optional(),errorMessage:u.z.string().optional(),priority:u.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:u.z.number().nullable().optional(),previousStatus:u.z.string().optional(),newStatus:u.z.string().optional(),assignedFrom:u.z.string().optional(),assignedTo:u.z.string().optional(),branch:u.z.string().optional(),commits:u.z.number().nullable().optional(),repository:u.z.string().optional(),participants:u.z.number().nullable().optional(),messages:u.z.number().nullable().optional(),discussionTopic:u.z.string().optional(),agentType:u.z.string().optional(),executionTime:u.z.number().nullable().optional(),resourcesUsed:u.z.object({cpu:u.z.number().nullable().optional(),memory:u.z.number().nullable().optional()}).strict().optional(),oldValue:u.z.any().optional(),newValue:u.z.any().optional(),changes:u.z.object({}).optional(),tags:u.z.array(u.z.string()).optional(),relatedEntityId:u.z.string().optional(),relatedEntityType:u.z.string().optional()}).strict().optional()}).strict(),u.z.object({ok:u.z.boolean()}).strict(),u.z.object({kind:u.z.enum([`feedback`,`content_report`,`user_report`]),subject:u.z.string().min(2).max(120),message:u.z.string().min(10).max(4e3),targetType:u.z.enum([`task`,`comment`,`artifact`,`member`,`project`,`workspace`]).optional(),targetId:u.z.string().min(1).max(160).optional(),reportedMemberId:u.z.string().min(1).max(160).optional(),muteRequested:u.z.boolean().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),taskId:u.z.string().min(1).describe(`Task ID or slug`)}).strict();var Zn=u.z.object({id:u.z.string(),title:u.z.string(),slug:u.z.string(),description:u.z.string().nullable(),projectId:u.z.string(),workUnitId:u.z.string().nullable(),statusId:u.z.string(),assigneeId:u.z.string().nullable(),creatorId:u.z.string(),position:u.z.number().min(-9007199254740991).max(9007199254740991).int(),priority:u.z.enum([`low`,`medium`,`high`]),dueDate:u.z.string().nullable(),startedAt:u.z.string().nullable(),completedAt:u.z.string().nullable(),acceptanceCriteria:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),tags:u.z.array(u.z.string()).nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),status:u.z.object({id:u.z.string(),key:u.z.string(),name:u.z.string(),description:u.z.string().nullable(),position:u.z.number(),color:u.z.string().nullable(),isActive:u.z.boolean(),isDefault:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict().nullable().optional(),project:u.z.object({id:u.z.string(),name:u.z.string(),description:u.z.string().nullable()}).strict().nullable().optional(),assignee:u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),role:u.z.string()}).strict().nullable().optional(),workUnit:u.z.object({id:u.z.string(),title:u.z.string(),slug:u.z.string(),type:u.z.string().nullable(),priority:u.z.string().nullable(),status:u.z.string().nullable()}).strict().nullable().optional()}).strict();u.z.object({items:u.z.array(Zn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Qn=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),search:u.z.string().optional().describe(`Search tasks`),sort:u.z.enum([`createdAt`,`updatedAt`,`title`,`position`,`priority`,`dueDate`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`),columnId:u.z.string().optional(),statusId:u.z.string().optional(),statusIds:u.z.array(u.z.string()).optional().describe(`Comma-separated status IDs`),workUnitId:u.z.string().optional().describe(`Work unit ID`),assigneeId:u.z.string().optional().describe(`Assignee member ID`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),projectId:u.z.string().optional().describe(`Project ID`),tags:u.z.array(u.z.string()).optional().describe(`Comma-separated tags`),statusFilter:u.z.enum([`active`,`all`]).describe(`Status filter`)}).strict(),$n=u.z.object({title:u.z.string().min(1).max(255).optional().describe(`Task title`),slug:u.z.string().optional().describe(`Task slug`),description:u.z.string().nullable().optional(),workUnitId:u.z.string().nullable().optional(),statusId:u.z.string().min(1).optional(),assigneeId:u.z.string().nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:u.z.string().nullable().optional(),acceptanceCriteria:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),tags:u.z.array(u.z.string()).nullable().nullable().optional()}).strict(),er=u.z.object({id:u.z.string(),key:u.z.string(),name:u.z.string(),size:u.z.number(),contentType:u.z.string().optional(),isPreviewable:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(er),total:u.z.number()}).strict();var tr=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0)}).strict();u.z.object({url:u.z.string(),expiresIn:u.z.number()}).strict();var nr=u.z.object({key:u.z.string().min(1)}).strict(),rr=u.z.object({x:u.z.number().min(0).max(1).describe(`Left edge as fraction 0-1`),y:u.z.number().min(0).max(1).describe(`Top edge as fraction 0-1`),width:u.z.number().min(0).max(1).describe(`Width as fraction 0-1`),height:u.z.number().min(0).max(1).describe(`Height as fraction 0-1`)}).strict();u.z.object({action:u.z.union([u.z.string(),u.z.string()]),artifactId:u.z.string().min(1),clip:rr.optional()}).strict(),u.z.object({action:u.z.union([u.z.string(),u.z.string(),u.z.string()]),artifactId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),statusId:u.z.string().min(1)}).strict();var ir=u.z.object({taskIds:u.z.array(u.z.string().min(1))}).strict(),ar=u.z.object({id:u.z.string(),taskId:u.z.string(),memberId:u.z.string(),assigneeId:u.z.string().nullable(),content:u.z.string(),info:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),member:u.z.object({id:u.z.string(),name:u.z.string().nullable(),email:u.z.string()}).strict().nullable(),assignee:u.z.object({id:u.z.string(),name:u.z.string().nullable(),email:u.z.string()}).strict().nullable()}).strict(),or=u.z.object({assigneeId:u.z.string().nullable().nullable().optional(),content:u.z.string().min(1).max(1e4).describe(`Comment content`),info:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict();u.z.object({items:u.z.array(ar),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var sr=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),sort:u.z.enum([`createdAt`,`updatedAt`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),taskId:u.z.string().min(1).describe(`Task ID or slug`),commentId:u.z.string().min(1).describe(`Comment ID`)}).strict();var cr=u.z.object({assigneeId:u.z.string().nullable().nullable().optional(),content:u.z.string().min(1).max(1e4).optional().describe(`Comment content`),info:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict();u.z.object({mcpServers:u.z.object({})}).strict(),u.z.object({projectId:u.z.string().min(1)}).strict(),u.z.object({id:u.z.string(),projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string(),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),isEnabled:u.z.boolean().nullable(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({projectId:u.z.string(),organizationId:u.z.string(),mcpServerId:u.z.string().min(1),serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({serverName:u.z.string(),isEnabled:u.z.boolean(),disabledTools:u.z.array(u.z.string()).nullable(),disabledResources:u.z.array(u.z.string()).nullable(),serverConfig:u.z.object({}),priority:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1),id:u.z.string().min(1)}).strict(),u.z.object({serverConfigOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledToolsOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),disabledResourcesOverride:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),isEnabled:u.z.boolean().nullable().optional(),priorityOverride:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),workUnitId:u.z.string().min(1).describe(`Work unit ID or slug`)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`)}).strict(),u.z.object({title:u.z.string().min(1).max(255).describe(`Work unit title`),slug:u.z.string().optional().describe(`Work unit slug`),description:u.z.string().nullable().optional(),projectId:u.z.string().min(1).optional(),parentWorkUnitId:u.z.string().nullable().optional(),type:u.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:u.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:u.z.string().nullable().optional(),status:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:u.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:u.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:u.z.string().nullable().optional(),targetDate:u.z.string().nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional()}).strict(),u.z.object({items:u.z.array(gn),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var lr=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),search:u.z.string().optional().describe(`Search work units`),sort:u.z.enum([`createdAt`,`updatedAt`,`title`,`priority`,`targetDate`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`),type:u.z.enum([`epic`,`feature`,`initiative`]).optional().describe(`Work unit type`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Work unit priority`),statuses:u.z.array(u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`])).optional().describe(`Comma-separated work unit statuses`),statusId:u.z.string().optional().describe(`Kanban status ID`),excludeStatus:u.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).optional().describe(`Exclude status`),ownerId:u.z.string().optional().describe(`Owner member ID`),parentWorkUnitId:u.z.string().optional().describe(`Parent work unit ID`)}).strict();u.z.object({progress:u.z.number().describe(`Overall progress percentage (0-100)`),completedTasks:u.z.number().describe(`Number of completed direct tasks`),totalTasks:u.z.number().describe(`Total number of direct tasks`),completedChildWorkUnits:u.z.number().describe(`Number of completed child work units`),totalChildWorkUnits:u.z.number().describe(`Total number of child work units`)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),taskId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`)}).strict();var ur=u.z.object({title:u.z.string().min(1).max(255).describe(`Task title`),slug:u.z.string().optional().describe(`Task slug`),description:u.z.string().nullable().optional(),projectId:u.z.string().min(1).optional(),workUnitId:u.z.string().nullable().optional(),statusId:u.z.string().min(1).optional(),assigneeId:u.z.string().nullable().optional(),position:u.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:u.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:u.z.string().nullable().optional(),acceptanceCriteria:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),testCases:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),tags:u.z.array(u.z.string()).nullable().nullable().optional()}).strict(),dr=u.z.object({columnId:u.z.string().min(1),position:u.z.number().min(0).max(9007199254740991).int()}).strict();u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1)}).strict();var fr=u.z.object({sessionId:u.z.string().optional(),transportType:u.z.string().optional()}).strict(),pr=u.z.object({id:u.z.string(),environmentId:u.z.string(),key:u.z.string(),value:u.z.string(),description:u.z.string().nullable(),isSecret:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(pr),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),environmentId:u.z.string().min(1)}).strict(),u.z.object({}),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),environmentId:u.z.string().min(1),key:u.z.string().min(1)}).strict(),u.z.object({value:u.z.string().min(1),description:u.z.string().optional(),isSecret:u.z.boolean()}).strict(),u.z.object({entries:u.z.array(u.z.object({key:u.z.string().min(1).max(255),value:u.z.string().min(1),description:u.z.string().optional(),isSecret:u.z.boolean()}).strict())}).strict();var mr=u.z.object({id:u.z.string(),projectId:u.z.string(),name:u.z.string(),key:u.z.string(),type:u.z.string(),description:u.z.string().nullable(),isDefault:u.z.boolean(),permissions:u.z.string(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.array(mr);var hr=u.z.object({read:u.z.array(u.z.string()),write:u.z.array(u.z.string())}).strict();u.z.object({name:u.z.string().min(1).max(255),key:u.z.string().min(1).max(255),type:u.z.enum([`development`,`staging`,`production`,`custom`]),description:u.z.string().nullable().optional(),isDefault:u.z.boolean(),permissions:hr.optional()}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),projectId:u.z.string().min(1).describe(`Project ID or slug`),environmentId:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).max(255).optional(),key:u.z.string().min(1).max(255).optional(),type:u.z.enum([`development`,`staging`,`production`,`custom`]).optional(),description:u.z.string().nullable().optional(),isDefault:u.z.boolean().optional(),permissions:hr.optional()}).strict(),u.z.object({message:u.z.string()}).strict();var gr=u.z.object({id:u.z.string(),organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable(),deviceId:u.z.string().nullable(),daemonId:u.z.string().nullable(),name:u.z.string(),status:u.z.enum([`running`,`completed`,`failed`]),contextData:u.z.string().nullable(),error:u.z.string().nullable(),startedAt:u.z.string(),completedAt:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),_r=u.z.object({id:u.z.string(),name:u.z.string(),startedAt:u.z.string()}).strict();u.z.object({error:u.z.string(),holder:_r}).strict(),u.z.object({name:u.z.string().min(1),workUnitId:u.z.string().optional(),taskId:u.z.string().optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),contextData:u.z.string().optional()}).strict(),u.z.object({items:u.z.array(gr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var vr=u.z.object({status:u.z.enum([`running`,`completed`,`failed`]).optional(),deviceId:u.z.string().optional(),daemonId:u.z.string().optional(),limit:u.z.number().min(1).max(100).optional(),offset:u.z.number().min(0).optional()}).strict(),yr=u.z.object({workUnitId:u.z.string().optional(),taskId:u.z.string().optional()}).strict();u.z.object({id:u.z.string().min(1)}).strict(),u.z.object({name:u.z.string().min(1).optional(),contextData:u.z.string().nullable().optional()}).strict(),u.z.object({status:u.z.enum([`completed`,`failed`]),error:u.z.string().optional()}).strict();var br=u.z.enum([`work-unit`,`task`]),xr=u.z.object({id:u.z.string(),kind:br,slug:u.z.string(),title:u.z.string(),description:u.z.string().nullable(),status:u.z.string(),priority:u.z.string().nullable(),createdAt:u.z.string(),payload:u.z.object({})}).strict();u.z.object({items:u.z.array(xr)}).strict();var Sr=u.z.object({jobKind:br,jobId:u.z.string().min(1),format:u.z.string()}).strict();u.z.object({claimed:u.z.boolean(),workflowId:u.z.string().optional(),job:xr.nullable().optional(),holder:u.z.object({id:u.z.string(),name:u.z.string(),deviceId:u.z.string().nullable(),startedAt:u.z.string()}).strict().optional()}).strict(),u.z.object({jobKind:br,jobId:u.z.string().min(1),name:u.z.string().min(1),deviceId:u.z.string().optional()}).strict(),u.z.object({released:u.z.boolean(),workflowId:u.z.string(),status:u.z.enum([`completed`,`failed`]),job:xr.nullable()}).strict(),u.z.object({workflowId:u.z.string().min(1),status:u.z.enum([`completed`,`failed`]),error:u.z.string().optional()}).strict();var Cr=u.z.object({key:u.z.string(),name:u.z.string(),color:u.z.string(),position:u.z.number()}).strict(),wr=u.z.object({id:u.z.string(),name:u.z.string(),description:u.z.string(),icon:u.z.string(),color:u.z.string(),isBuiltIn:u.z.boolean(),statusCount:u.z.number(),starterTaskCount:u.z.number(),statuses:u.z.array(Cr)}).strict();u.z.object({templates:u.z.array(wr)}).strict(),u.z.object({organizationId:u.z.string().min(1).describe(`Organization ID`),id:u.z.string().min(1).describe(`Project ID or slug`)}).strict(),u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string(),key:u.z.string(),description:u.z.string().nullable(),organizationId:u.z.string(),ownerId:u.z.string(),path:u.z.string().nullable(),templateId:u.z.string().nullable(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),color:u.z.string().nullable(),icon:u.z.string().nullable(),isArchived:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({error:u.z.string(),message:u.z.string(),feature:u.z.enum([`seats`,`projects`,`apiKeys`,`mcpServers`]),plan:u.z.string(),limit:u.z.number(),used:u.z.number(),upgradeRequired:u.z.boolean()}).strict();var Tr=u.z.object({name:u.z.string().min(1).max(255).describe(`Project name`),slug:u.z.string().optional().describe(`Project slug`),description:u.z.string().nullable().optional(),organizationId:u.z.string().optional(),path:u.z.string().nullable().optional(),templateId:u.z.string().nullable().optional(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),color:u.z.string().nullable().optional(),icon:u.z.string().nullable().optional()}).strict(),Er=u.z.object({id:u.z.string(),title:u.z.string(),value:u.z.number(),change:u.z.string(),trend:u.z.enum([`up`,`down`,`neutral`]),period:u.z.string()}).strict();u.z.object({activeProjects:u.z.number(),tasksInProgress:u.z.number(),completedTasks:u.z.number(),blockedTasks:u.z.number(),stats:u.z.array(Er)}).strict();var Dr=u.z.object({period:u.z.enum([`7`,`30`,`90`])}).strict();u.z.object({items:u.z.array(vn),total:u.z.number(),limit:u.z.number().optional(),offset:u.z.number().optional()}).strict();var Or=u.z.object({id:u.z.string(),name:u.z.string(),email:u.z.string(),role:u.z.string()}).strict().nullable(),kr=u.z.object({id:u.z.string(),name:u.z.string(),slug:u.z.string(),key:u.z.string(),description:u.z.string().nullable(),organizationId:u.z.string(),path:u.z.string().nullable(),templateId:u.z.string().nullable(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable(),color:u.z.string().nullable(),icon:u.z.string().nullable(),isArchived:u.z.boolean(),createdAt:u.z.string(),updatedAt:u.z.string(),owner:Or}).strict();u.z.object({items:u.z.array(kr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Ar=u.z.object({limit:u.z.number().min(1).max(100).describe(`Max results`),offset:u.z.number().min(0).describe(`Result offset`),search:u.z.string().optional().describe(`Search projects`),sort:u.z.enum([`createdAt`,`updatedAt`,`name`]).describe(`Sort field`),order:u.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict(),jr=u.z.object({name:u.z.string().min(1).max(255).optional().describe(`Project name`),slug:u.z.string().optional().describe(`Project slug`),description:u.z.string().nullable().optional(),organizationId:u.z.string().optional(),path:u.z.string().nullable().optional(),templateId:u.z.string().nullable().optional(),hooks:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),devInfo:u.z.union([u.z.union([u.z.string(),u.z.number(),u.z.boolean(),u.z.any()]),u.z.object({}),u.z.array(u.z.any())]).nullable().optional(),color:u.z.string().nullable().optional(),icon:u.z.string().nullable().optional(),isArchived:u.z.boolean().optional().describe(`Whether project is archived`)}).strict(),V=u.z.object({id:u.z.string(),key:u.z.string(),name:u.z.string(),status:u.z.enum([`pending`,`uploaded`]),size:u.z.number().nullable(),contentType:u.z.string().optional(),isPreviewable:u.z.boolean(),labels:u.z.array(u.z.string()).nullable().optional(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict();u.z.object({items:u.z.array(V),total:u.z.number()}).strict(),u.z.object({url:u.z.string(),expiresIn:u.z.number()}).strict();var Mr=u.z.object({key:u.z.string().min(1)}).strict();u.z.object({url:u.z.string(),key:u.z.string(),artifact:V}).strict();var Nr=u.z.object({filename:u.z.string().min(1),contentType:u.z.string().optional()}).strict();u.z.object({artifact:V}).strict(),u.z.object({key:u.z.string().min(1)}).strict(),u.z.object({items:u.z.array(V)}).strict();var Pr=u.z.object({key:u.z.string().min(1),name:u.z.string().min(1),status:u.z.enum([`pending`,`uploaded`]),size:u.z.number().nullable().optional(),contentType:u.z.string().optional(),isPreviewable:u.z.boolean(),labels:u.z.array(u.z.string()).nullable().optional()}).strict();u.z.object({items:u.z.array(Pr)}).strict();var Fr=u.z.object({key:u.z.string().min(1)}).strict();u.z.object({balanceCents:u.z.number(),monthlyIncludedMinutes:u.z.number(),usedIncludedMinutes:u.z.number(),includedMinutesRemaining:u.z.number(),autoRechargeEnabled:u.z.boolean(),autoRechargeThresholdCents:u.z.number(),autoRechargeAmountCents:u.z.number(),overdraftLimitCents:u.z.number(),includedMinutesResetAt:u.z.string().nullable()}).strict(),u.z.object({organizationId:u.z.string().min(1)}).strict(),u.z.object({checkoutUrl:u.z.string().url(),sessionId:u.z.string()}).strict(),u.z.object({amountCents:u.z.number().min(500).max(1e5),successUrl:u.z.string().url(),cancelUrl:u.z.string().url()}).strict(),u.z.object({enabled:u.z.boolean(),thresholdCents:u.z.number().min(0).max(1e5).optional(),amountCents:u.z.number().min(500).max(1e5).optional()}).strict();var Ir=u.z.object({id:u.z.string(),type:u.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]),amountCents:u.z.number(),balanceAfterCents:u.z.number(),usageMinutes:u.z.number().nullable(),pricePerMinuteCents:u.z.number().nullable(),referenceType:u.z.string().nullable(),referenceId:u.z.string().nullable(),createdAt:u.z.string()}).strict();u.z.object({items:u.z.array(Ir),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict();var Lr=u.z.object({limit:u.z.number().min(1).max(100).optional(),offset:u.z.number().min(0).optional(),type:u.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]).optional(),startDate:u.z.string().optional(),endDate:u.z.string().optional()}).strict();u.z.object({periodStart:u.z.string(),periodEnd:u.z.string(),totalMinutes:u.z.number(),includedMinutesUsed:u.z.number(),paidMinutesUsed:u.z.number(),totalChargedCents:u.z.number(),sandboxCount:u.z.number()}).strict();var Rr=u.z.object({startDate:u.z.string().min(1),endDate:u.z.string().min(1)}).strict(),zr=u.z.object({planKey:u.z.string(),name:u.z.string(),pricePerSeatCents:u.z.number(),billingInterval:u.z.enum([`month`,`year`]),includedMinutesPerSeat:u.z.number(),stripePriceId:u.z.string().nullable()}).strict();u.z.object({plans:u.z.array(zr)}).strict(),u.z.object({hasSubscription:u.z.boolean(),planKey:u.z.string().nullable(),planName:u.z.string().nullable(),seatCount:u.z.number(),memberCount:u.z.number(),currentPeriodStart:u.z.string().nullable(),currentPeriodEnd:u.z.string().nullable(),cancelAtPeriodEnd:u.z.boolean(),stripeSubscriptionId:u.z.string().nullable(),includedMinutes:u.z.number(),usedMinutes:u.z.number(),remainingMinutes:u.z.number()}).strict(),u.z.object({redirectUrl:u.z.string().nullable(),sessionId:u.z.string().nullable()}).strict(),u.z.object({planKey:u.z.string().min(1),discountCode:u.z.string().optional()}).strict(),u.z.object({currentSeats:u.z.number(),newSeats:u.z.number(),amountDue:u.z.number().nullable(),subtotal:u.z.number().nullable(),total:u.z.number().nullable(),prorationDate:u.z.number().nullable()}).strict();var Br=u.z.object({seatCount:u.z.number().min(1)}).strict();u.z.object({success:u.z.boolean(),newSeatCount:u.z.number(),includedMinutes:u.z.number()}).strict(),u.z.object({seatCount:u.z.number().min(1)}).strict(),u.z.object({success:u.z.boolean(),cancelAtPeriodEnd:u.z.boolean(),periodEnd:u.z.string().nullable()}).strict(),u.z.object({success:u.z.boolean(),message:u.z.string()}).strict(),u.z.object({plan:u.z.string(),projects:u.z.object({used:u.z.number(),limit:u.z.number()}).strict(),apiKeys:u.z.object({used:u.z.number(),limit:u.z.number()}).strict(),mcpServers:u.z.object({used:u.z.number(),limit:u.z.number()}).strict(),seats:u.z.object({used:u.z.number(),limit:u.z.number()}).strict()}).strict();var Vr=u.z.object({id:u.z.string(),agentSessionId:u.z.string(),workUnitId:u.z.string().nullable(),taskId:u.z.string().nullable(),projectId:u.z.string(),organizationId:u.z.string(),sandboxInstanceId:u.z.string().nullable(),containerId:u.z.string().nullable(),processId:u.z.string().nullable(),status:u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),autoTerminate:u.z.boolean(),timeoutMinutes:u.z.number().min(-9007199254740991).max(9007199254740991).int(),command:u.z.string(),workingDirectory:u.z.string().nullable(),exitCode:u.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),previewUrl:u.z.string().nullable(),errorMessage:u.z.string().nullable(),startedAt:u.z.string().nullable(),completedAt:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string(),agentSession:u.z.object({id:u.z.string(),status:u.z.string(),currentAgentType:u.z.string().nullable()}).strict().nullable().optional(),workUnit:u.z.object({id:u.z.string(),title:u.z.string(),status:u.z.string()}).strict().nullable().optional(),project:u.z.object({id:u.z.string(),name:u.z.string()}).strict().nullable().optional()}).strict();u.z.object({items:u.z.array(Vr),total:u.z.number(),limit:u.z.number(),offset:u.z.number()}).strict(),u.z.object({organizationId:u.z.string().min(1)}).strict();var Hr=u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0),status:u.z.union([u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),u.z.array(u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]))]).optional(),projectId:u.z.string().optional(),workUnitId:u.z.string().optional(),agentSessionId:u.z.string().optional()}).strict();u.z.object({id:u.z.string(),status:u.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),sandboxInstanceId:u.z.string().nullable(),containerId:u.z.string().nullable(),previewUrl:u.z.string().nullable(),exitCode:u.z.number().nullable(),errorMessage:u.z.string().nullable(),startedAt:u.z.string().nullable(),completedAt:u.z.string().nullable(),createdAt:u.z.string(),updatedAt:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),sandboxId:u.z.string().min(1)}).strict(),u.z.object({message:u.z.string(),sandboxId:u.z.string(),status:u.z.string()}).strict(),u.z.object({message:u.z.string(),port:u.z.number(),url:u.z.string().optional()}).strict(),u.z.object({organizationId:u.z.string().min(1),sandboxId:u.z.string().min(1),port:u.z.number().min(1024).max(65535).int()}).strict(),u.z.object({message:u.z.string(),port:u.z.number()}).strict();var Ur=u.z.object({port:u.z.number(),url:u.z.string().optional()}).strict();u.z.object({ports:u.z.array(Ur)}).strict(),u.z.object({organizationId:u.z.string().min(1),sandboxId:u.z.string().min(1)}).strict(),u.z.object({organizationId:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({received:u.z.boolean(),duplicate:u.z.boolean().optional(),ignored:u.z.boolean().optional()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({priceKey:u.z.string().min(1).describe(`Stripe price lookup key`),mode:u.z.enum([`payment`,`subscription`]).describe(`Checkout mode`),discountCode:u.z.string().optional().describe(`Optional discount/promotion code`)}).strict(),u.z.object({redirectUrl:u.z.string().url().describe(`URL to redirect user to Stripe checkout`)}).strict(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({sessionId:u.z.string().min(1),organizationId:u.z.string()}),u.z.object({id:u.z.string().describe(`Session ID`),status:u.z.string().nullable().describe(`Session status`),payment_status:u.z.string().describe(`Payment status`),invoice:u.z.object({}).nullable().describe(`Invoice details`)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({url:u.z.string().url().describe(`URL to Stripe billing portal`)}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({id:u.z.string().describe(`Customer ID`),customerId:u.z.string().nullable().describe(`Stripe customer ID (null for free tier without payment info)`),organizationId:u.z.string().describe(`Organization ID`),email:u.z.string().nullable().describe(`Customer email`),name:u.z.string().nullable().describe(`Customer name`),subscriptionId:u.z.string().nullable().describe(`Active subscription ID`),subscriptionStatus:u.z.string().nullable().describe(`Current subscription status`),planKey:u.z.enum([`free`,`basic_monthly`,`basic_yearly`]).describe(`Current subscription plan`),seatCount:u.z.number().describe(`Number of seats in subscription`),currentPeriodEnd:u.z.string().nullable().describe(`End date of current billing period (renewal date)`),cancelAtPeriodEnd:u.z.boolean().describe(`Whether subscription is scheduled to cancel at period end`),createdAt:u.z.string().describe(`Customer creation date`),updatedAt:u.z.string().describe(`Customer last update date`)}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({received:u.z.boolean(),duplicate:u.z.boolean().optional(),ignored:u.z.boolean().optional()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...dn.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...z.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({version:u.z.string()}),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({...R.shape}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...pn.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),serverName:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...B.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...B.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...B.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...B.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var Wr=u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),Gr=u.z.object({...lr.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict();var H=u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),workUnitId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict();var Kr=u.z.object({organizationId:u.z.string()});u.z.object({...yn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...xn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Cn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...wn.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string(),type:u.z.string()}),u.z.object({...Dn.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string(),type:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),key:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),profileId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),provider:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...jn.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),owner:u.z.string(),repo:u.z.string()}),u.z.object({...Nn.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({...In.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1),deviceId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),deviceId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...In.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceAgentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1),agentTypeId:u.z.string().min(1)}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),deviceId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict();var qr=u.z.object({organizationId:u.z.string().min(1)}),Jr=u.z.object({...Bn.shape});u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.object({...Un.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string(),userId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.object({...Gn.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),teamId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...qn.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Yn.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({stats:u.z.array(u.z.object({activityType:u.z.string(),count:u.z.number()}).strict()),total:u.z.number()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({limit:u.z.number().min(1).max(100),offset:u.z.number().min(0)}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.array(Xn),u.z.array(Jn),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),activityId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),activityId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),activityId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict();var Yr=u.z.object({organizationId:u.z.string()}),Xr=u.z.object({...Qn.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({period:u.z.enum([`7d`,`30d`,`3m`,`12m`])}),u.z.object({items:u.z.array(u.z.object({period:u.z.string(),aiCompleted:u.z.number(),humanCompleted:u.z.number(),totalTasks:u.z.number(),totalCost:u.z.number()}).strict()),summary:u.z.object({totalCost:u.z.number(),totalTasks:u.z.number(),monthlyGrowth:u.z.number()}).strict()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({...tr.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.object({...nr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),statusId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.void(),u.z.object({error:u.z.string()}).strict();var Zr=u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),Qr=u.z.object({...Qn.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict();var $r=u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var ei=u.z.object({organizationId:u.z.string(),projectId:u.z.string(),taskId:u.z.string()});u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var ti=u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),ni=u.z.object({...sr.shape});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var ri=u.z.object({organizationId:u.z.string(),taskId:u.z.string(),commentId:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),commentId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),taskId:u.z.string(),commentId:u.z.string()}),u.z.void(),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...fr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string(),key:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string(),key:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),projectId:u.z.string().min(1)}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1),projectId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),environmentId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...vr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...yr.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.object({...Sr.shape}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),projectId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict();var ii=u.z.object({organizationId:u.z.string()}),ai=u.z.object({...Ar.shape});u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string().min(1)}),u.z.object({...Dr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var oi=u.z.object({organizationId:u.z.string(),id:u.z.string()});u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({...Fr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({...Mr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.object({...Nr.shape}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),id:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Lr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Rr.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Br.shape}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.void(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({...Hr.shape}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string()}),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string(),port:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string(),port:u.z.string()}),u.z.void(),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict(),u.z.object({organizationId:u.z.string(),sandboxId:u.z.string()}),u.z.object({message:u.z.string()}).strict(),u.z.object({error:u.z.string()}).strict();var si=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/members`,{method:`GET`,params:e,query:t})).data,ci=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/members/agents`,{method:`POST`,params:e,body:t})).data,li=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`GET`,params:e,query:t})).data,ui=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`POST`,params:e,body:t})).data,di=async e=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`GET`,params:e})).data,fi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`PATCH`,params:e,body:t})).data,pi=async e=>(await M.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`DELETE`,params:e})).data,mi=async(e,t)=>(await M.request(`/api/v1/organizations/{organizationId}/task-statuses`,{method:`GET`,params:e,query:t})).data,hi=`AGIFLOW_ORGANIZATION_ID`,gi=`AGIFLOW_PROJECT_ID`,_i=`AGIFLOW_TASK_ID`,vi=`AGIFLOW_WORK_UNIT_ID`,yi=u.z.object({format:u.z.literal(`json`).default(`json`).describe(`Output format`)}),bi=u.z.object({tasksJson:u.z.string().min(1).describe(`Array of task objects or { "tasks": [...] }`)}),xi=u.z.object({workUnitsJson:u.z.string().min(1).describe(`Array of work unit objects or { "workUnits": [...] }`)}),Si=u.z.object({status:u.z.string().optional().describe(`Task status name, key, or ID`),assignee:u.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:u.z.string().optional().describe(`Work unit ID`),acceptanceCriteriaJson:u.z.string().optional().describe(`Acceptance criteria JSON`),testCasesJson:u.z.string().optional().describe(`Test cases JSON`),devInfoJson:u.z.string().optional().describe(`Development info JSON`)}),Ci=u.z.object({status:u.z.string().optional().describe(`Comma-separated status names, keys, or IDs`),assignee:u.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:u.z.string().optional().describe(`Work unit ID`)}),wi=u.z.object({devInfoJson:u.z.string().optional().describe(`Development info JSON`),testCasesJson:u.z.string().optional().describe(`Test cases JSON`)}),Ti=u.z.object({assignee:u.z.string().optional().describe(`Assignee member ID, name, or email`),infoJson:u.z.string().optional().describe(`Comment info JSON`)}),U=()=>({name:`org`,source:`organizationId`,envVar:hi}),W=(e=`projectId`)=>({name:`project`,source:e,valueName:`projectIdOrSlug`,envVar:gi}),G=()=>({name:`task`,source:`taskId`,valueName:`taskIdOrSlug`,envVar:_i}),K=()=>({name:`workUnit`,source:`workUnitId`,flag:`--work-unit`,valueName:`workUnitIdOrSlug`,envVar:vi}),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)=>Kt.for(e).fromSchemaGroups([...t,{schema:yi,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},Ei=(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 N{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 gt({organizationId:e,id:t})).id}async resolveStatusId(e,t){let n=(await mi({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 si({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})}},Di=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:ii,options:[U()]},{schema:Tr,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:ii,options:[U()]},{schema:ai,options:J()})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a project by ID or slug`),q({schema:oi,options:[U(),W(`projectIdOrSlug`)]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a project`),q({schema:oi,options:[U(),W(`projectIdOrSlug`)]},{schema:jr,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:oi,options:[U(),W(`projectIdOrSlug`)]})).action(e=>this.delete(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 ht({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 mt({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 gt({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 _t({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 vt({organizationId:t,id:r}),this.printJson({deleted:!0,project:{id:r}})})}};Di=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Di);var Oi=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:Zr,options:n},{schema:ur,options:r},{schema:Si,options:i})).action(e=>this.create(e)),Y(t.command(`batch-create`).description(`Create multiple tasks`),q({schema:Zr,options:n},{schema:bi,options:[{name:`tasksJson`,flag:`--tasks-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project tasks`),q({schema:Zr,options:n},{schema:Qr,options:J([{name:`statusFilter`,flag:`--status-filter`},{name:`priority`},{name:`tags`}])},{schema:Ci,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:$r,options:[...n,G()]})).action(e=>this.get(e)),Y(t.command(`active`).description(`List active organization tasks`),q({schema:Yr,options:[U()]},{schema:Xr,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:$r,options:[...n,G()]},{schema:$n,options:r},{schema:Si,options:i})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task`),q({schema:$r,options:[...n,G()]})).action(e=>this.delete(e)),Y(t.command(`reorder`).description(`Reorder tasks within a status`),q({schema:Yr,options:[U()]},{schema:u.z.object({status:u.z.string().min(1).describe(`Status name, key, or ID`)}),options:[{name:`status`}]},{schema:ir,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:ei,options:[...n,G()]},{schema:dr,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:Kr,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 kt({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=Ei(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}));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 Ot({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 At({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 Ot({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 Tt({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}));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 Mt({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 Dt({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 Nt({organizationId:t,projectId:n,taskId:r},i);this.printJson({task:a})})}async statusList(e){await this.runJsonOnly(async()=>{await this.setupClient();let t=await mi({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})})}};Oi=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Oi);var ki=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:Wr,options:n},{schema:xi,options:[{name:`workUnitsJson`,flag:`--work-units-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project work units`),q({schema:Wr,options:n},{schema:Gr,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:H,options:[...n,K()]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a work unit`),q({schema:H,options:[...n,K()]},{schema:_n,options:r},{schema:wi,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:H,options:[...n,K()]})).action(e=>this.delete(e)),Y(t.command(`progress`).description(`Get work unit progress`),q({schema:H,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=Ei(this.parseJsonFlag(e.workUnitsJson,`--work-units-json`),`workUnits`),i=[];for(let e of r){let r=await It({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 Ft({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 Lt({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 Rt({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 zt({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 Bt({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({progress:r})})}};ki=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],ki);var Ai=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:qr,options:[U()]},{schema:Jr,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:qr,options:[U()]},{schema:Vn,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 si({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 ci({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??[]})})}};Ai=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],Ai);var ji=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:ti,options:n},{schema:or,options:[{name:`content`}]},{schema:Ti,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List task comments`),q({schema:ti,options:n},{schema:ni,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:ri,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a task comment`),q({schema:ri,options:[...n,{name:`comment`,source:`commentId`}]},{schema:cr,options:[{name:`content`}]},{schema:Ti,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task comment`),q({schema:ri,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 ui({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 li({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 di({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 fi({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 pi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment}),this.printJson({deleted:!0,comment:{id:e.comment}})})}};ji=_([(0,l.injectable)(),b(0,(0,l.inject)(y.ConfigManager)),b(1,(0,l.inject)(y.CredentialsService)),v(`design:paramtypes`,[Object,Object])],ji);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`)},$=new l.Container({parent:x});$.bind(Q.AuthCommand).to(Ne),$.bind(Q.WorkflowCommand).to(pt),$.bind(Q.ArtifactCommand).to(Gt),$.bind(Q.AutomationCommand).to(an),$.bind(Q.ProjectCommand).to(Di),$.bind(Q.TaskCommand).to(Oi),$.bind(Q.WorkUnitCommand).to(ki),$.bind(Q.MemberCommand).to(Ai),$.bind(Q.TaskCommentCommand).to(ji),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 $}});
|