@agiflowai/cli 0.0.5 → 0.0.6
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/README.md +12 -1
- package/dist/cli.cjs +1 -1
- package/dist/container-vSLx97cM.cjs +8 -0
- package/dist/index.cjs +1 -1
- package/package.json +1 -1
- package/dist/container-DCjNfDrN.cjs +0 -8
package/README.md
CHANGED
|
@@ -54,6 +54,16 @@ You can also avoid stored credentials and provide an API key through the environ
|
|
|
54
54
|
export AGIFLOW_API_KEY="..."
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
For repo-local automation, create `.agiflowrc` at the git repository root and map the API key from an existing environment variable:
|
|
58
|
+
|
|
59
|
+
```dotenv
|
|
60
|
+
AGIFLOW_ORGANIZATION_ID=org-id
|
|
61
|
+
AGIFLOW_API_KEY_ENV=$AGIFLOW_MCP_API_KEY
|
|
62
|
+
AGIFLOW_PROJECT_ID=project-id-or-slug
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`AGIFLOW_API_KEY_ENV` supports `$VAR` and `${VAR}` references. It should point at an environment variable that contains the real API key; do not store the secret itself in `.agiflowrc`.
|
|
66
|
+
|
|
57
67
|
To remove stored credentials:
|
|
58
68
|
|
|
59
69
|
```bash
|
|
@@ -67,13 +77,14 @@ These variables can replace repeated command flags:
|
|
|
67
77
|
```bash
|
|
68
78
|
export AGIFLOW_API_KEY="..."
|
|
69
79
|
export AGIFLOW_ORGANIZATION_ID="org-id"
|
|
80
|
+
export AGIFLOW_ORG_ID="org-id"
|
|
70
81
|
export AGIFLOW_PROJECT_ID="project-id"
|
|
71
82
|
export AGIFLOW_TASK_ID="task-id"
|
|
72
83
|
export AGIFLOW_WORK_UNIT_ID="work-unit-id"
|
|
73
84
|
export AGIFLOW_DEVICE_ID="device-id"
|
|
74
85
|
```
|
|
75
86
|
|
|
76
|
-
Flags take precedence over stored
|
|
87
|
+
Flags take precedence over environment variables, `.agiflowrc`, and stored credentials. Stored credentials only provide API key and organization fallback.
|
|
77
88
|
|
|
78
89
|
## Output Formats
|
|
79
90
|
|
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-vSLx97cM.cjs");require("reflect-metadata/lite");let t=require("commander"),n=require("dotenv");n=e.r(n,1);var r=process.stdout.write.bind(process.stdout);process.stdout.write=()=>!0;try{n.default.config({debug:!1})}finally{process.stdout.write=r}async function i(){let n=new t.Command,r=new Set([`automation`,`project`,`task`,`work-unit`,`member`,`task-comment`,`vault`,`analytics`]),i=process.argv.slice(2).some(e=>r.has(e)),a=process.stderr.write.bind(process.stderr);n.name(`agiflow-cli`).description(`Command-line interface for Agiflow workflow and artifact management`).option(`-v, --verbose`,`enable verbose logging`).option(`--debug`,`enable debug mode`),n.exitOverride(),n.configureOutput({writeErr:e=>{i||a(e)}});let o=e.t.get(e.n.AuthCommand),s=e.t.get(e.n.WorkflowCommand),c=e.t.get(e.n.ArtifactCommand),l=e.t.get(e.n.AutomationCommand),u=e.t.get(e.n.ProjectCommand),d=e.t.get(e.n.TaskCommand),f=e.t.get(e.n.WorkUnitCommand),p=e.t.get(e.n.MemberCommand),m=e.t.get(e.n.TaskCommentCommand),h=e.t.get(e.n.VaultCommand),g=e.t.get(e.n.AnalyticsCommand);o.register(n),s.register(n),c.register(n),l.register(n),u.register(n),d.register(n),f.register(n),p.register(n),m.register(n),h.register(n),g.register(n);try{await n.parseAsync(process.argv)}catch(e){if(e instanceof t.CommanderError&&e.code===`commander.helpDisplayed`&&process.exit(e.exitCode),i){let t=e instanceof Error?e.message:String(e);console.log(JSON.stringify({error:t},null,2)),process.exit(1)}console.error(`[cli] error`,e.message),n.opts().debug&&e instanceof Error&&console.error(e.stack),process.exit(1)}}i();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require("reflect-metadata/lite");let c=require("commander"),l=require("dotenv");l=s(l,1);let u=require("inversify"),d=require("zod"),f=require("node:fs");f=s(f,1);let p=require("node:path");p=s(p,1);let m=require("pino");m=s(m,1);let h=require("fs");h=s(h,1);let g=require("path");g=s(g,1);let _=require("os");_=s(_,1);let ee=require("crypto"),te=require("child_process");var ne=`.agiflowrc`;function re(e,t=process.cwd(),n=process.env){if(y(n[e]))return!0;if(e===`AGIFLOW_API_KEY`){let e=v(t,n);return!!(ie(n.AGIFLOW_API_KEY_ENV,n)??e.apiKey)}if(e===`AGIFLOW_ORGANIZATION_ID`||e===`AGIFLOW_ORG_ID`){let e=v(t,n);return!!(y(n.AGIFLOW_ORGANIZATION_ID,n.AGIFLOW_ORG_ID)??e.organizationId)}return e===`AGIFLOW_PROJECT_ID`?!!v(t,n).projectId:!1}function v(e=process.cwd(),t=process.env){let n=oe(e);if(!n)return{};let r;try{r=l.default.parse(f.readFileSync(n))}catch{return{}}let i=y(r.AGIFLOW_ORGANIZATION_ID,r.AGIFLOW_ORG_ID),a=y(r.AGIFLOW_PROJECT_ID);return le({apiKey:ie(r.AGIFLOW_API_KEY_ENV,t),backendAgiflowApiEndpoint:y(r.BACKEND_AGIFLOW_API_ENDPOINT),organizationId:i,projectId:a})}function ie(e,t=process.env){let n=ae(e);if(n)return y(t[n])}function ae(e){let t=e?.trim();if(!t)return;let n=/^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/.exec(t);if(n)return n[1];let r=/^\$([A-Za-z_][A-Za-z0-9_]*)$/.exec(t);if(r)return r[1];if(/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))return t}function oe(e){let t=se(e);if(!t)return null;let n=p.default.join(t,ne);return ce(n)?n:null}function se(e){let t=p.default.resolve(e);for(;;){if(ce(p.default.join(t,`.git`)))return t;let e=p.default.dirname(t);if(e===t)return null;t=e}}function y(...e){for(let t of e){let e=t?.trim();if(e)return e}}function ce(e){try{return typeof f.existsSync==`function`&&f.existsSync(e)}catch{return!1}}function le(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}var ue=d.z.string().url();d.z.object({VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:d.z.string().trim().optional()});function de(e=process.env,t={BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_AUTO_AGIFLOW_CLI_DOCKER_ENDPOINT:``,VITE_AUTO_AGIFLOW_CLI_ENDPOINT:``,VITE_AUTO_AGIFLOW_CLI_PROXY_ENDPOINT:``,VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT:`https://api.agiflow.io`},n=fe(e)){let r=[t.VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.INJECT_BACKEND_AGIFLOW_API_ENDPOINT,e.BACKEND_AGIFLOW_API_ENDPOINT,n?.backendAgiflowApiEndpoint];for(let e of r){let t=ue.safeParse(typeof e==`string`?e.trim():e);if(t.success)return t.data}throw Error(`Missing Agiflow API endpoint. Set VITE_INJECT_BACKEND_AGIFLOW_API_ENDPOINT, INJECT_BACKEND_AGIFLOW_API_ENDPOINT, BACKEND_AGIFLOW_API_ENDPOINT, or add BACKEND_AGIFLOW_API_ENDPOINT to .agiflowrc.`)}function fe(e){return e===process.env?v():void 0}function b(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var pe=`serverUrl`,me=class{config=new Map;get(e){return this.config.get(e)}set(e,t){this.config.set(e,t)}has(e){return this.config.has(e)}getServerUrl(){let e=this.get(pe);if(e)return e;let t=de();return this.set(pe,t),t}};me=b([(0,u.injectable)()],me);function x(e,t){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(e,t)}var he=class{logger;constructor(){this.logger=(0,m.default)({level:process.env.LOG_LEVEL||`info`,transport:{target:`pino-pretty`,options:{colorize:!0,translateTime:`SYS:standard`,ignore:`pid,hostname`}}})}debug(e,t){this.logger.debug(t,e)}info(e,t){this.logger.info(t,e)}warn(e,t){this.logger.warn(t,e)}error(e,t){this.logger.error(t,e)}};he=b([(0,u.injectable)(),x(`design:paramtypes`,[])],he);var ge=class{filePath;constructor(){this.filePath=g.default.join(_.default.homedir(),`.agiflow`,`credentials.json`)}async load(e={}){let t=this.readStoredFile();if(!t)return null;if(e.scope===`global`)return t.global??null;let n=this.getRepositoryScopeKey();return t.repositories?.[n]??t.global??null}async setApiKey(e,t={}){let n=this.readStoredFile()??{version:2},r=await this.load(t),i=r?.organizationId===e.organizationId,a={apiKey:e.apiKey,organizationId:e.organizationId,keyId:e.keyId,deviceId:e.deviceId??(i?r?.deviceId:void 0),deviceGuid:e.deviceGuid??r?.deviceGuid,expiresAt:e.expiresAt};this.setCredentials(n,t,a),this.writeStoredFile(n)}async getApiKey(e={}){return process.env.AGIFLOW_API_KEY||ie(process.env.AGIFLOW_API_KEY_ENV)||v().apiKey||((await this.load(e))?.apiKey??null)}async getOrganizationId(e={}){return process.env.AGIFLOW_ORGANIZATION_ID||process.env.AGIFLOW_ORG_ID||v().organizationId||((await this.load(e))?.organizationId??null)}async getProjectId(){return process.env.AGIFLOW_PROJECT_ID??v().projectId??null}async getTaskId(){return process.env.AGIFLOW_TASK_ID??null}async getWorkUnitId(){return process.env.AGIFLOW_WORK_UNIT_ID??null}async getDeviceId(e={}){return process.env.AGIFLOW_DEVICE_ID||((await this.load(e))?.deviceId??null)}async getDeviceGuid(e={}){return process.env.AGIFLOW_DEVICE_GUID||((await this.load(e))?.deviceGuid??null)}async setDeviceIdentity(e,t,n={}){let r=await this.load(n);if(!r)throw Error(`No credentials found. Run authentication first.`);let i=this.readStoredFile()??{version:2};this.setCredentials(i,n,{...r,deviceId:e,deviceGuid:t}),this.writeStoredFile(i)}async clear(e={}){try{let t=this.readStoredFile();if(!t)return;this.deleteCredentials(t,e),this.writeStoredFile(t)}catch{process.stderr.write(`[CredentialsService] failed to remove stored credentials
|
|
2
|
+
`)}}async buildAuthHeaders(e={}){let t=await this.getApiKey(e);if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);return{"x-api-key":t}}readStoredFile(){try{if(!h.default.existsSync(this.filePath))return null;let e=JSON.parse(h.default.readFileSync(this.filePath,`utf-8`));if(this.isStoredCredentialsFile(e))return e;if(this.isStoredCredentials(e))return{version:2,global:e}}catch{process.stderr.write(`[CredentialsService] credentials file is malformed, continuing without stored credentials
|
|
3
|
+
`)}return null}writeStoredFile(e){let t=this.compactStoredFile(e);if(!t.global&&!t.repositories){h.default.existsSync(this.filePath)&&h.default.unlinkSync(this.filePath);return}h.default.mkdirSync(g.default.dirname(this.filePath),{recursive:!0}),h.default.writeFileSync(this.filePath,`${JSON.stringify(t,null,2)}\n`,{mode:384})}setCredentials(e,t,n){if(t.scope===`global`){e.global=n;return}let r=this.getRepositoryScopeKey();e.repositories={...e.repositories,[r]:n}}deleteCredentials(e,t){if(t.scope===`global`){delete e.global;return}let n=this.getRepositoryScopeKey();e.repositories&&delete e.repositories[n]}compactStoredFile(e){let t=e.repositories?Object.fromEntries(Object.entries(e.repositories).filter(([,e])=>e)):void 0;return{version:2,...e.global?{global:e.global}:{},...t&&Object.keys(t).length>0?{repositories:t}:{}}}getRepositoryScopeKey(){return this.normalizePath(this.findGitRoot(process.cwd())??process.cwd())}findGitRoot(e){let t=g.default.resolve(e);for(;;){if(h.default.existsSync(g.default.join(t,`.git`)))return t;let e=g.default.dirname(t);if(e===t)return null;t=e}}normalizePath(e){let t=g.default.resolve(e),n=h.default.existsSync(t)?h.default.realpathSync.native(t):t,r=g.default.normalize(n).replace(RegExp(`${this.escapeRegExp(g.default.sep)}+$`),``);return process.platform===`win32`?r.toLowerCase():r}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}isStoredCredentialsFile(e){if(!this.isRecord(e)||e.version!==2)return!1;let t=e.global,n=e.repositories;return(t===void 0||this.isStoredCredentials(t))&&(n===void 0||this.isRecord(n)&&Object.values(n).every(e=>this.isStoredCredentials(e)))}isStoredCredentials(e){return this.isRecord(e)&&typeof e.apiKey==`string`&&typeof e.organizationId==`string`&&(e.keyId===void 0||typeof e.keyId==`string`)&&(e.deviceId===void 0||typeof e.deviceId==`string`)&&(e.deviceGuid===void 0||typeof e.deviceGuid==`string`)&&(e.expiresAt===void 0||typeof e.expiresAt==`number`)}isRecord(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}};ge=b([(0,u.injectable)(),x(`design:paramtypes`,[])],ge);var S={Logger:Symbol.for(`Logger`),ConfigManager:Symbol.for(`ConfigManager`),CredentialsService:Symbol.for(`CredentialsService`),DeviceCodeAuthService:Symbol.for(`DeviceCodeAuthService`)};function C(e,t){return function(n,r){t(n,r,e)}}var _e=`agent-cli`,ve=`0.0.1`,ye=`openid profile email`,be=`urn:ietf:params:oauth:grant-type:device_code`,xe=class{configManager;constructor(e){this.configManager=e}async requestDeviceCode(e=ye){return await this.postJson(`/api/v1/auth/device/code`,void 0,{client_id:_e,scope:e})}async pollForToken(e,t,n){let r=t;for(;;){if(n?.signal?.aborted)throw Error(`Polling aborted`);await this.sleep(r*1e3);let t=await fetch(this.url(`/api/v1/auth/device/token`),{method:`POST`,headers:this.headers(),body:JSON.stringify({grant_type:be,device_code:e,client_id:_e})});if(t.ok)return await t.json();let i=await this.parseError(t);switch(i.error){case`authorization_pending`:n?.onPending?.();break;case`slow_down`:r+=5,n?.onSlowDown?.();break;case`access_denied`:throw Error(`Authorization denied by user`);case`expired_token`:throw Error(`Device code expired. Please start the authorization process again.`);default:throw Error(i.error_description||i.message||`Token request failed: ${t.status}`)}}}async listOrganizationsWithAccessToken(e){return(await this.getJson(`/api/v1/cli/organizations`,{Authorization:`Bearer ${e}`})).organizations??[]}async listOrganizationsWithApiKey(e){return(await this.getJson(`/api/v1/cli/organizations`,{"x-api-key":e})).organizations??[]}async exchangeForAgentApiKey(e,t){let n=await this.postJson(`/api/v1/cli/exchange-for-agent`,{Authorization:`Bearer ${e}`},{organizationId:t});return{apiKey:n.api_key,keyId:n.key_id,organizationId:n.organization_id,organizationName:n.organization_name,agentUserId:n.agent_user_id,expiresAt:n.expires_at}}async getJson(e,t){let n=await fetch(this.url(e),{method:`GET`,headers:this.headers(t)});return this.parseResponse(n)}async postJson(e,t,n){let r=await fetch(this.url(e),{method:`POST`,headers:this.headers(t),body:JSON.stringify(n)});return this.parseResponse(r)}async parseResponse(e){let t=await e.json().catch(()=>({}));if(!e.ok){let n=t;throw Error(n.error_description||n.message||n.error||e.statusText)}return t}async parseError(e){return await e.json().catch(()=>({}))}headers(e){return{"Content-Type":`application/json`,Accept:`application/json`,"x-client-type":_e,"x-client-version":ve,...e}}url(e){return`${this.configManager.getServerUrl().replace(/\/$/,``)}${e}`}sleep(e){return new Promise(t=>setTimeout(t,e))}};xe=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),x(`design:paramtypes`,[Object])],xe);var w=new u.Container;w.bind(S.Logger).to(he).inSingletonScope(),w.bind(S.ConfigManager).to(me).inSingletonScope(),w.bind(S.CredentialsService).to(ge).inSingletonScope(),w.bind(S.DeviceCodeAuthService).to(xe).inSingletonScope();var Se=10,Ce=(e=0)=>t=>`\u001B[${t+e}m`,we=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,Te=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,T={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(T.modifier);var Ee=Object.keys(T.color),De=Object.keys(T.bgColor);[...Ee,...De];function Oe(){let e=new Map;for(let[t,n]of Object.entries(T)){for(let[t,r]of Object.entries(n))T[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=T[t],e.set(r[0],r[1]);Object.defineProperty(T,t,{value:n,enumerable:!1})}return Object.defineProperty(T,"codes",{value:e,enumerable:!1}),T.color.close=`\x1B[39m`,T.bgColor.close=`\x1B[49m`,T.color.ansi=Ce(),T.color.ansi256=we(),T.color.ansi16m=Te(),T.bgColor.ansi=Ce(Se),T.bgColor.ansi256=we(Se),T.bgColor.ansi16m=Te(Se),Object.defineProperties(T,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>T.rgbToAnsi256(...T.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>T.ansi256ToAnsi(T.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>T.ansi256ToAnsi(T.hexToAnsi256(e)),enumerable:!1}}),T}var E=Oe(),ke=(()=>{if(!(`navigator`in globalThis))return 0;if(globalThis.navigator.userAgentData){let e=navigator.userAgentData.brands.find(({brand:e})=>e===`Chromium`);if(e&&e.version>93)return 3}return+!!/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)})(),Ae=ke!==0&&{level:ke,hasBasic:!0,has256:ke>=2,has16m:ke>=3},je={stdout:Ae,stderr:Ae};function Me(e,t,n){let r=e.indexOf(t);if(r===-1)return e;let i=t.length,a=0,o=``;do o+=e.slice(a,r)+t+n,a=r+i,r=e.indexOf(t,a);while(r!==-1);return o+=e.slice(a),o}function Ne(e,t,n,r){let i=0,a=``;do{let o=e[r-1]===`\r`;a+=e.slice(i,o?r-1:r)+t+(o?`\r
|
|
4
|
+
`:`
|
|
5
|
+
`)+n,i=r+1,r=e.indexOf(`
|
|
6
|
+
`,i)}while(r!==-1);return a+=e.slice(i),a}var{stdout:Pe,stderr:Fe}=je,Ie=Symbol(`GENERATOR`),D=Symbol(`STYLER`),O=Symbol(`IS_EMPTY`),Le=[`ansi`,`ansi`,`ansi256`,`ansi16m`],k=Object.create(null),Re=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=Pe?Pe.level:0;e.level=t.level===void 0?n:t.level},ze=e=>{let t=(...e)=>e.join(` `);return Re(t,e),Object.setPrototypeOf(t,A.prototype),t};function A(e){return ze(e)}Object.setPrototypeOf(A.prototype,Function.prototype);for(let[e,t]of Object.entries(E))k[e]={get(){let n=j(this,He(t.open,t.close,this[D]),this[O]);return Object.defineProperty(this,e,{value:n}),n}};k.visible={get(){let e=j(this,this[D],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Be=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?E[n].ansi16m(...r):t===`ansi256`?E[n].ansi256(E.rgbToAnsi256(...r)):E[n].ansi(E.rgbToAnsi(...r)):e===`hex`?Be(`rgb`,t,n,...E.hexToRgb(...r)):E[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){k[e]={get(){let{level:t}=this;return function(...n){let r=He(Be(e,Le[t],`color`,...n),E.color.close,this[D]);return j(this,r,this[O])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);k[t]={get(){let{level:t}=this;return function(...n){let r=He(Be(e,Le[t],`bgColor`,...n),E.bgColor.close,this[D]);return j(this,r,this[O])}}}}var Ve=Object.defineProperties(()=>{},{...k,level:{enumerable:!0,get(){return this[Ie].level},set(e){this[Ie].level=e}}}),He=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},j=(e,t,n)=>{let r=(...e)=>Ue(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,Ve),r[Ie]=e,r[D]=t,r[O]=n,r},Ue=(e,t)=>{if(e.level<=0||!t)return e[O]?``:t;let n=e[D];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=Me(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
7
|
+
`);return a!==-1&&(t=Ne(t,i,r,a)),r+t+i};Object.defineProperties(A.prototype,k);var M=A();A({level:Fe?Fe.level:0});var We=`0.0.1`,Ge=class{credentialsService;authService;configManager;constructor(e,t,n){this.credentialsService=e,this.authService=t,this.configManager=n}register(e){e.command(`login`).description(`Authenticate agiflow-cli`).addOption(this.envOption(`--api-key <apiKey>`,`Use an existing Agiflow API key`,`AGIFLOW_API_KEY`)).addOption(this.envOption(`--org <organizationId>`,`Organization ID to store with credentials`,`AGIFLOW_ORGANIZATION_ID`)).option(`--global`,`Store credentials globally instead of scoping them to the current repository`).option(`--format <format>`,`Output format (text|json)`,`text`).action(async e=>{await this.run(e.format,async()=>{let t=e.apiKey?await this.loginWithApiKey(e):await this.loginWithDeviceCode(e);this.printLoginResult(t,e.format)})}),e.command(`logout`).description(`Remove stored agiflow-cli credentials`).option(`--global`,`Remove global credentials instead of credentials scoped to the current repository`).option(`--format <format>`,`Output format (text|json)`,`text`).action(async e=>{await this.run(e.format,async()=>{if(await this.credentialsService.clear(this.getCredentialsScope(e)),e.format===`json`){this.printJson({loggedOut:!0});return}console.log(M.green(`Logged out`))})})}async loginWithApiKey(e){if(!e.apiKey)throw Error(`API key is required.`);let t=await this.authService.listOrganizationsWithApiKey(e.apiKey),n=await this.resolveOrganization(t,e.org,e.format);return await this.credentialsService.setApiKey({apiKey:e.apiKey,organizationId:n.id},this.getCredentialsScope(e)),await this.ensureDeviceIdentity(e.apiKey,n.id,this.getCredentialsScope(e)),{authenticated:!0,source:`api-key`,organizationId:n.id,organizationName:n.name}}async loginWithDeviceCode(e){let t=await this.authService.requestDeviceCode(),n=t.verification_uri_complete||`${t.verification_uri}?user_code=${t.user_code}`;this.printProgress(e.format,`Open ${n}`),this.printProgress(e.format,`Enter code ${t.user_code}`);let r=await this.authService.pollForToken(t.device_code,t.interval??5),i=await this.authService.listOrganizationsWithAccessToken(r.access_token),a=await this.resolveOrganization(i,e.org,e.format),o=await this.authService.exchangeForAgentApiKey(r.access_token,a.id);return await this.credentialsService.setApiKey({apiKey:o.apiKey,keyId:o.keyId,organizationId:o.organizationId,expiresAt:o.expiresAt},this.getCredentialsScope(e)),await this.ensureDeviceIdentity(o.apiKey,o.organizationId,this.getCredentialsScope(e)),{authenticated:!0,source:`device-code`,organizationId:o.organizationId,organizationName:o.organizationName,expiresAt:o.expiresAt}}async resolveOrganization(e,t,n){if(e.length===0)throw Error(`No organizations are available for these credentials.`);if(t){let n=e.find(e=>e.id===t);if(!n)throw Error(`Organization ${t} is not available for these credentials.`);return n}if(e.length===1)return e[0];if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error(`Multiple organizations are available. Pass --org <organizationId> in non-interactive mode.`);let{select:r}=await import(`@inquirer/prompts`),i=await r({message:`Select an organization`,choices:e.map(e=>({name:`${e.name}${e.slug?` (${e.slug})`:``}`,value:e.id}))});return this.printProgress(n,`Selected organization ${i}`),e.find(e=>e.id===i)??e[0]}async run(e,t){try{this.validateFormat(e),await t()}catch(t){let n=t instanceof Error?t.message:String(t);e===`json`?this.printJson({error:n}):console.error(M.red(`Error:`),n),process.exit(1)}}async ensureDeviceIdentity(e,t,n){let r=await this.credentialsService.getDeviceGuid(n)||`cli-${(0,ee.randomUUID)()}`,i=this.configManager.getServerUrl().replace(/\/$/,``),a=await fetch(`${i}/api/v1/organizations/${t}/devices`,{method:`POST`,headers:{"x-api-key":e,"x-client-type":`agent-cli`,"x-client-version":We,"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({name:_.default.hostname(),deviceGuid:r,type:`cli`,platform:process.platform,version:We})}),o=await a.json().catch(()=>({}));if(!a.ok){let e=typeof o==`object`&&o&&`message`in o?String(o.message):a.statusText;throw Error(e)}if(!o||typeof o!=`object`||!(`id`in o)||typeof o.id!=`string`)throw Error(`Device registration response did not include a device ID.`);await this.credentialsService.setDeviceIdentity(o.id,r,n)}getCredentialsScope(e){return e.global?{scope:`global`}:{scope:`repository`}}envOption(e,t,n){let r=new c.Option(e,t);return re(n)&&r.hideHelp(),r}validateFormat(e){if(e&&e!==`text`&&e!==`json`)throw Error(`Only text and json formats are supported.`)}printLoginResult(e,t){if(t===`json`){this.printJson(e);return}console.log(M.green(`Authenticated`)),console.log(`Organization: ${e.organizationName} (${e.organizationId})`)}printProgress(e,t){if(e===`json`){console.error(t);return}console.log(t)}printJson(e){console.log(JSON.stringify(e,null,2))}};Ge=b([(0,u.injectable)(),C(0,(0,u.inject)(S.CredentialsService)),C(1,(0,u.inject)(S.DeviceCodeAuthService)),C(2,(0,u.inject)(S.ConfigManager)),x(`design:paramtypes`,[Object,Object,Object])],Ge);var Ke=class e{static instance;authProviders=new Map;defaultNamespace=`default`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}setAuthProvider(e,t=this.defaultNamespace){this.authProviders.set(t,e)}getAuthProvider(e=this.defaultNamespace){return this.authProviders.get(e)||null}removeAuthProvider(e=this.defaultNamespace){this.authProviders.delete(e)}async getSession(e=this.defaultNamespace){let t=this.authProviders.get(e);return t?t.getSession():null}async refreshSession(e=this.defaultNamespace){let t=this.authProviders.get(e);return t?t.refreshSession():null}hasAuthProvider(e=this.defaultNamespace){return this.authProviders.has(e)}getNamespaces(){return Array.from(this.authProviders.keys())}}.getInstance(),qe=class e{static instance;configs=new Map;defaultNamespace=`default`;constructor(){}static getInstance(){return e.instance||=new e,e.instance}setConfig(e,t=this.defaultNamespace){this.configs.set(t,e)}getConfig(e=this.defaultNamespace){return this.configs.get(e)||null}updateConfig(e,t=this.defaultNamespace){let n=this.configs.get(t);n?this.configs.set(t,{...n,...e,headers:{...n.headers,...e.headers}}):this.configs.set(t,e)}removeConfig(e=this.defaultNamespace){this.configs.delete(e)}getBaseUrl(e=this.defaultNamespace){return this.configs.get(e)?.baseUrl||null}getHeaders(e=this.defaultNamespace){return this.configs.get(e)?.headers||null}getApiKey(e=this.defaultNamespace){return this.configs.get(e)?.apiKey||null}hasConfig(e=this.defaultNamespace){return this.configs.has(e)}getNamespaces(){return Array.from(this.configs.keys())}}.getInstance(),Je=`default`,Ye=1,Xe=300,N=`Content-Type`,Ze=`application/json`,Qe=`X-API-KEY`,$e=`Authorization`,et=`Bearer`,tt=401,nt=429,rt=503,it=500,at=400,ot=500,st=`text/`,ct=.5,lt=.5,ut=class extends Error{status;statusText;data;constructor(e,t,n,r){super(e),this.status=t,this.statusText=n,this.data=r,this.name=`OpenapiRequestError`}},dt=class{baseUrl;apiKey;headers;authProvider;authNamespace;configNamespace;useGlobalAuthProvider;useGlobalConfig;retryConfig;requestInterceptor;constructor(e={}){this.authProvider=e.authProvider,this.authNamespace=e.authNamespace??Je,this.configNamespace=e.configNamespace??Je,this.useGlobalAuthProvider=e.useGlobalAuthProvider??!0,this.useGlobalConfig=e.useGlobalConfig??!0,this.retryConfig={maxRetries:e.retryConfig?.maxRetries??Ye,baseDelay:e.retryConfig?.baseDelay??Xe},this.requestInterceptor=e.requestInterceptor??null;let t=this.getEffectiveConfig(e);if(!t.baseUrl&&!this.useGlobalConfig)throw Error(`baseUrl is required for OpenapiClient (either in options or global config)`);this.baseUrl=t.baseUrl,this.apiKey=t.apiKey,this.headers=t.headers}getEffectiveConfig(e){let t=this.useGlobalConfig?qe.getConfig(this.configNamespace):null;return{baseUrl:e.baseUrl||t?.baseUrl||``,headers:{...t?.headers,...e.headers},apiKey:e.apiKey??t?.apiKey}}getRuntimeConfig(){return this.getEffectiveConfig({baseUrl:this.baseUrl,headers:this.headers,apiKey:this.apiKey})}getEffectiveAuthProvider(){return this.authProvider?this.authProvider:this.useGlobalAuthProvider?Ke.getAuthProvider(this.authNamespace):null}async setAuthHeader(e){let t=this.getEffectiveAuthProvider();if(!t)return;let n=await t.getSession();n?.data?.session?.access_token&&(e[$e]=`${et} ${n.data.session.access_token}`)}buildUrl(e,t,n,r){let i=t;if(n)for(let[e,t]of Object.entries(n))i=i.replace(`{${e}}`,encodeURIComponent(String(t)));if(r){let e=new URLSearchParams;for(let[t,n]of Object.entries(r))n!=null&&e.append(t,String(n));let t=e.toString();t&&(i+=(i.includes(`?`)?`&`:`?`)+t)}return new URL(i,e).toString()}createCustomFetch(){return async(e,t)=>{let n=t||{};n.headers||={},n.credentials=`include`,`Content-Type`in n.headers||(n.headers[N]=Ze),n.headers[N]===void 0&&delete n.headers[N];let r=this.getRuntimeConfig();r.apiKey&&(n.headers[Qe]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();if(i.status===tt&&a&&!t?.skipAuth&&(await a.refreshSession())?.data?.session)if(await this.setAuthHeader(n.headers),t?.skipRetry)i=await fetch(e,n);else{let{maxRetries:t,baseDelay:r}=this.retryConfig,a=null;for(let o=0;o<t;o++)try{if(i=await fetch(e,n),i.status>=at&&i.status<ot&&i.status!==nt)return i;if(i.status===nt||i.status===rt||i.status>=it){a=Error(`HTTP status ${i.status}`);let e=r*2**o*(ct+Math.random()*lt);await new Promise(t=>setTimeout(t,e));continue}return i}catch(e){if(a=e instanceof Error?e:Error(String(e)),o<t-1){let e=r*2**o*(ct+Math.random()*lt);await new Promise(t=>setTimeout(t,e))}}throw a||Error(`Request failed after retries`)}return i}}createFormFetch(){return async(e,t)=>{let n=t||{};n.headers||={},n.credentials=`include`;let r=this.getRuntimeConfig();r.apiKey&&(n.headers[Qe]=r.apiKey),t?.skipAuth||await this.setAuthHeader(n.headers);let i=await fetch(e,n),a=this.getEffectiveAuthProvider();return i.status===tt&&a&&!t?.skipAuth&&(await a.refreshSession())?.data?.session&&(await this.setAuthHeader(n.headers),i=await fetch(e,n)),i}}async request(e,t){let{method:n,params:r,query:i,body:a,headers:o,skipAuth:s,skipRetry:c}=t;if(this.requestInterceptor){let n=await this.requestInterceptor(e,{path:e,...t});if(n)return n}let l=this.getRuntimeConfig();if(!l.baseUrl)throw Error(`baseUrl is required for OpenapiClient (either in options or global config)`);let u=this.buildUrl(l.baseUrl,e,r,i),d={...l.headers,...o},f={method:n,headers:d,skipAuth:s,skipRetry:c};a&&n!==`GET`&&n!==`HEAD`&&(a instanceof FormData||typeof a==`object`&&a&&typeof a.append==`function`&&typeof a.entries==`function`&&a.constructor?.name===`FormData`?(f.body=a,d[N]=void 0):(f.body=JSON.stringify(a),d[N]=Ze));let p=await this.createCustomFetch()(u,f),m,h=p.headers.get(`content-type`);if(m=h?.includes(Ze)?await p.json():h?.includes(st)?await p.text():await p.blob(),!p.ok)throw new ut(`HTTP ${p.status}: ${p.statusText}`,p.status,p.statusText,m);return{data:m,status:p.status,statusText:p.statusText,headers:p.headers}}},ft=`backend-agiflow-api`,pt=e=>{qe.setConfig(e,ft)},P=((e={})=>new dt({...e,authNamespace:ft,configNamespace:ft}))(),mt=`0.0.1`,F=class{configManager;credentialsService;constructor(e,t){this.configManager=e,this.credentialsService=t}addEnvIdOption(e,t,n,r){return e.addOption(this.buildEnvIdOption(t,n,r)),e}buildEnvIdOption(e,t,n){let r=new c.Option(e,t);return re(n)&&r.hideHelp(),r}async setupClient(){let{serverUrl:e,apiKey:t}=await this.resolveApiClientContext();pt({baseUrl:e,apiKey:t,headers:{"x-client-type":`agent-cli`,"x-client-version":mt}})}async resolveApiClientContext(){let e=this.configManager.getServerUrl(),t=await this.credentialsService.getApiKey();if(!t)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);return{serverUrl:e,apiKey:t}}handleError(e,t){let n=t instanceof Error?t.message:String(t);console.error(M.red(`✗`),e,n),process.exit(1)}async runJsonOnly(e){try{await e()}catch(e){let t=e instanceof Error?e.message:String(e),n=e&&typeof e==`object`&&`data`in e?e.data:void 0;this.printJson(n===void 0?{error:t}:{error:t,details:n}),process.exit(1)}}requireJsonFormat(e,t=`this command`){if((e??`json`)!==`json`)throw Error(`Only --format json is supported for ${t}.`)}printJson(e){console.log(JSON.stringify(e,null,2))}async resolveOrganizationId(e){return this.resolveRequiredId(e,()=>this.credentialsService.getOrganizationId(),`organization ID`,`--org`)}async resolveProjectIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getProjectId(),`project ID`,`--project`)}async resolveTaskIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getTaskId(),`task ID`,`--task`)}async resolveWorkUnitIdOption(e){return this.resolveRequiredId(e,()=>this.credentialsService.getWorkUnitId(),`work unit ID`,`--work-unit`)}async resolveRequiredId(e,t,n,r){if(e)return e;let i=await t();if(i)return i;throw Error(`Missing ${n}. Pass ${r}, set the matching AGIFLOW_* environment variable, or add .agiflowrc defaults.`)}parseJsonFlag(e,t){if(e)try{return JSON.parse(e)}catch{throw Error(`${t} must be valid JSON.`)}}parseCsv(e){if(!e)return;let t=(Array.isArray(e)?e:e.split(`,`)).map(e=>e.trim()).filter(Boolean);return t.length>0?t:void 0}parseNumber(e,t){if(e===void 0)return t;let n=Number(e);if(!Number.isFinite(n))throw Error(`Expected a numeric value, received "${e}".`);return n}},ht=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`GET`,params:e,query:t})).data,gt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows`,{method:`POST`,params:e,body:t})).data,_t=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/check`,{method:`GET`,params:e,query:t})).data,vt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`GET`,params:e})).data,yt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`PATCH`,params:e,body:t})).data,bt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}`,{method:`DELETE`,params:e})).data,xt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/workflows/{id}/release`,{method:`POST`,params:e,body:t})).data,St=`AGIFLOW_ORGANIZATION_ID`,Ct=`AGIFLOW_PROJECT_ID`,wt=`AGIFLOW_TASK_ID`,Tt=`AGIFLOW_WORK_UNIT_ID`,Et=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`workflow`).description(`Manage workflow locks`);this.addWorkflowScopeOptions(t.command(`create`).description(`Acquire a workflow lock`)).requiredOption(`--name <name>`,`Workflow name`).addOption(this.envOption(`--work-unit <workUnitId>`,`Work unit ID`,Tt)).addOption(this.envOption(`--task <taskId>`,`Task ID`,wt)).option(`--context <json>`,`Context data as JSON string`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await gt({organizationId:t,projectId:n},{name:e.name,workUnitId:r.workUnitId,taskId:r.taskId,contextData:e.context});console.log(M.green(`✓`),`Workflow lock acquired`),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to acquire workflow lock`,e)}}),this.addWorkflowScopeOptions(t.command(`get <id>`).description(`Get workflow details`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i=await vt({organizationId:n,projectId:r,id:e});console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to get workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`list`).description(`List workflows`)).option(`--status <status>`,`Filter by status (running|completed|failed)`).option(`--limit <limit>`,`Max results`,`20`).option(`--offset <offset>`,`Offset for pagination`,`0`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await ht({organizationId:t,projectId:n},{status:e.status,limit:Number(e.limit),offset:Number(e.offset)});console.log(JSON.stringify(r,null,2))}catch(e){this.handleError(`Failed to list workflows`,e)}}),this.addWorkflowScopeOptions(t.command(`update <id>`).description(`Update workflow metadata`)).option(`--name <name>`,`New workflow name`).option(`--context <json>`,`Updated context data as JSON string`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i={};t.name&&(i.name=t.name),t.context&&(i.contextData=t.context);let a=await yt({organizationId:n,projectId:r,id:e},i);console.log(M.green(`✓`),`Workflow updated`),console.log(JSON.stringify(a,null,2))}catch(e){this.handleError(`Failed to update workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`delete <id>`).description(`Delete workflow metadata`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t);await bt({organizationId:n,projectId:r,id:e}),console.log(JSON.stringify({deleted:!0,workflow:{id:e}},null,2))}catch(e){this.handleError(`Failed to delete workflow`,e)}}),this.addWorkflowScopeOptions(t.command(`release <id>`).description(`Release a workflow lock`)).requiredOption(`--status <status>`,`Release status (completed|failed)`).option(`--error <error>`,`Error message (when status is failed)`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveWorkflowScope(t),i=await xt({organizationId:n,projectId:r,id:e},{status:t.status,error:t.error});console.log(M.green(`✓`),`Workflow lock released`),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to release workflow lock`,e)}}),this.addWorkflowScopeOptions(t.command(`check`).description(`Check if a workflow lock exists`)).addOption(this.envOption(`--work-unit <workUnitId>`,`Work unit ID`,Tt)).addOption(this.envOption(`--task <taskId>`,`Task ID`,wt)).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveWorkflowScope(e),r=await this.resolveWorkflowTarget(e),i=await _t({organizationId:t,projectId:n},{workUnitId:r.workUnitId,taskId:r.taskId});console.log(M.green(`✓`),`Lock found`),console.log(JSON.stringify(i,null,2))}catch(e){if(e instanceof Error&&e.message.includes(`404`)){console.log(JSON.stringify({}));return}this.handleError(`Failed to check workflow lock`,e)}})}addWorkflowScopeOptions(e){return e.addOption(this.envOption(`--org <organizationId>`,`Organization ID`,St)).addOption(this.envOption(`--project <projectId>`,`Project ID`,Ct))}envOption(e,t,n){return this.buildEnvIdOption(e,t,n)}async resolveWorkflowScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}async resolveWorkflowTarget(e){if(e.workUnit)return{workUnitId:e.workUnit};if(e.task)return{taskId:e.task};let t=await this.credentialsService.getWorkUnitId();if(t)return{workUnitId:t};let n=await this.credentialsService.getTaskId();return n?{taskId:n}:{}}};Et=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],Et);var Dt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects`,{method:`GET`,params:e,query:t})).data,Ot=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects`,{method:`POST`,params:e,body:t})).data,kt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/statuses`,{method:`GET`,params:e})).data,I=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`GET`,params:e})).data,At=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`PATCH`,params:e,body:t})).data,jt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}`,{method:`DELETE`,params:e})).data,Mt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`GET`,params:e})).data,Nt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts`,{method:`DELETE`,params:e,query:t})).data,Pt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Ft=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/upload-url`,{method:`GET`,params:e,query:t})).data,It=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/complete`,{method:`POST`,params:e,body:t})).data,Lt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{id}/artifacts/seed`,{method:`POST`,params:e,body:t})).data,Rt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks`,{method:`GET`,params:e,query:t})).data,zt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts`,{method:`GET`,params:e,query:t})).data,Bt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/artifacts/download`,{method:`GET`,params:e,query:t})).data,Vt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/statuses/{statusId}/tasks/reorder`,{method:`POST`,params:e,body:t})).data,Ht=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`GET`,params:e,query:t})).data,Ut=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks`,{method:`POST`,params:e,body:t})).data,Wt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`GET`,params:e})).data,Gt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`PATCH`,params:e,body:t})).data,Kt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}`,{method:`DELETE`,params:e})).data,qt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/tasks/{taskId}/move`,{method:`POST`,params:e,body:t})).data,Jt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`GET`,params:e,query:t})).data,Yt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units`,{method:`POST`,params:e,body:t})).data,Xt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`GET`,params:e})).data,Zt=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`PATCH`,params:e,body:t})).data,Qt=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}`,{method:`DELETE`,params:e})).data,$t=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/work-units/{workUnitId}/progress`,{method:`GET`,params:e})).data,en=`2024-11-05`;async function tn(e){let t=new nn(e);try{await t.initialize();let n=await t.listToolNames();return on(n.includes(e.toolName)?await t.callTool(e.toolName,e.toolArgs):await t.callCapability(e.toolName,e.toolArgs,n))}finally{await t.terminate()}}var nn=class{options;endpoint;sessionId;nextId=1;constructor(e){this.options=e;let t=e.serverUrl.replace(/\/+$/,``),n=encodeURIComponent(e.organizationId),r=encodeURIComponent(e.projectId);this.endpoint=`${t}/api/v1/organizations/${n}/projects/${r}/mcp`}async initialize(){let e=await this.request(`initialize`,{protocolVersion:en,capabilities:{},clientInfo:{name:`agiflow-cli`,version:`0.0.1`}});if(e.error)throw Error(e.error.message??`Project MCP initialize failed.`)}async listToolNames(){let e=await this.request(`tools/list`);if(e.error)throw Error(e.error.message??`Project MCP tools/list failed.`);return e.result?.tools?.map(e=>e.name)??[]}async callTool(e,t){let n=await this.request(`tools/call`,{name:e,arguments:t});if(n.error)throw Error(n.error.message??`Project MCP tool failed: ${e}`);return n.result??{}}async callCapability(e,t,n){if(!n.includes(`use_capability`))throw Error(`Project MCP tool is not available: ${e}`);return this.callTool(`use_capability`,{toolName:e,toolArgs:t})}async terminate(){if(this.sessionId)try{await fetch(this.endpoint,{method:`DELETE`,headers:this.headers()})}catch{}}async request(e,t){let n=await fetch(this.endpoint,{method:`POST`,headers:this.headers(),body:JSON.stringify({jsonrpc:`2.0`,id:this.nextId++,method:e,...t===void 0?{}:{params:t}})}),r=n.headers.get(`Mcp-Session-Id`);return r&&(this.sessionId=r),rn(n)}headers(){return{Accept:`application/json, text/event-stream`,"Content-Type":`application/json`,"x-api-key":this.options.apiKey,...this.sessionId?{"Mcp-Session-Id":this.sessionId}:{}}}};async function rn(e){let t=await e.text();if(!e.ok)throw Error(`Project MCP request failed with status ${e.status}: ${sn(t)}`);let n=e.headers.get(`content-type`)?.includes(`text/event-stream`)?an(t):t;if(!n.trim())return{};try{return JSON.parse(n)}catch{throw Error(`Project MCP returned invalid JSON: ${sn(n)}`)}}function an(e){let t=e.split(/\n\n+/).map(e=>e.split(/\n/).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim()).join(`
|
|
8
|
+
`)).filter(e=>e&&e!==`[DONE]`);return t[t.length-1]??``}function on(e){let t=e.content?.find(e=>e.type===`text`&&e.text)?.text;if(e.isError)throw Error(t??`Project MCP tool returned an error.`);if(e.structuredContent!==void 0)return e.structuredContent;if(t)try{return JSON.parse(t)}catch{return{text:t}}return e}function sn(e){let t=e.replace(/\s+/g,` `).trim();return t.length>500?`${t.slice(0,500)}...`:t}var cn=`AGIFLOW_ORGANIZATION_ID`,ln=`AGIFLOW_PROJECT_ID`,un=`AGIFLOW_TASK_ID`,dn=`AGIFLOW_WORK_UNIT_ID`,fn=100,pn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`artifact`).description(`Manage project artifacts`);this.addArtifactScopeOptions(t.command(`upload <file>`).description(`Upload an artifact (3-step: get presigned URL, PUT to storage, mark complete)`)).option(`--name <name>`,`Artifact name (defaults to filename)`).option(`--type <type>`,`Content type`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=g.default.resolve(e);h.default.existsSync(i)||(console.error(M.red(`✗`),`File not found: ${i}`),process.exit(1));let a=t.name??g.default.basename(i),o=h.default.readFileSync(i),s=h.default.statSync(i).size;console.log(M.blue(`↑`),`Uploading ${a} (${s} bytes)...`);let{url:c,key:l}=await Ft({organizationId:n,id:r},{filename:a,contentType:t.type}),u=await fetch(c,{method:`PUT`,body:o,headers:{"Content-Type":t.type??`application/octet-stream`}});if(!u.ok)throw Error(`Upload failed with status ${u.status}`);await It({organizationId:n,id:r},{key:l}),console.log(M.green(`✓`),`Artifact uploaded: ${l}`)}catch(e){this.handleError(`Failed to upload artifact`,e)}}),this.addArtifactScopeOptions(t.command(`download [key]`).description(`Download artifacts by key, task, or work unit`)).option(`-o, --output <path>`,`Output file path`).option(`--target <folder>`,`Target folder for task or work unit artifact downloads`).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to download artifacts from`,un)).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to download task artifacts from`,dn)).option(`--overwrite`,`Overwrite existing files`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t);if(e){await this.downloadProjectArtifactByKey(n,r,e,t);return}await this.downloadScopedArtifacts(n,r,t)}catch(e){this.handleError(`Failed to download artifact`,e)}}),this.addArtifactScopeOptions(t.command(`list`).description(`List project artifacts`)).option(`--max-keys <maxKeys>`,`Maximum number of artifacts to return`).option(`--continuation-token <token>`,`Pagination continuation token`).option(`--search <search>`,`Search artifacts by name`).option(`--labels <labels>`,`Comma-separated labels to match`).option(`--content-type <contentType>`,`Content type prefix`).option(`--status <status>`,`Artifact status (pending|uploaded)`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=this.hasListFilters(e)?await this.callProjectTool(t,n,`list_artifacts`,{maxKeys:this.parseOptionalNumber(e.maxKeys,`--max-keys`),continuationToken:e.continuationToken,search:e.search,labels:this.parseCsv(e.labels),contentType:e.contentType,status:e.status}):await Mt({organizationId:t,id:n});console.log(JSON.stringify(r,null,2))}catch(e){this.handleError(`Failed to list artifacts`,e)}}),this.addArtifactScopeOptions(t.command(`get <key>`).description(`Get artifact details by key`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=(await Mt({organizationId:n,id:r})).items.find(t=>t.key===e||t.id===e);i||(console.error(M.red(`✗`),`Artifact not found: ${e}`),process.exit(1)),console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to get artifact`,e)}}),this.addArtifactScopeOptions(t.command(`delete <key>`).description(`Delete an artifact by key`)).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t);await Nt({organizationId:n,id:r},{key:e}),console.log(M.green(`✓`),`Artifact deleted: ${e}`)}catch(e){this.handleError(`Failed to delete artifact`,e)}}),this.addArtifactScopeOptions(t.command(`link <key>`).description(`Link or unlink artifact targets`)).option(`--action <action>`,`Action to perform (link|unlink)`,`link`).addOption(this.buildEnvIdOption(`--work-unit <workUnitId>`,`Work unit ID to link`,dn)).addOption(this.buildEnvIdOption(`--task <taskId>`,`Task ID to link`,un)).option(`--clip-json <json>`,`Clip region JSON with x, y, width, height`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=t.task?await this.resolveTaskIdOption(t.task):void 0,a=t.workUnit?await this.resolveWorkUnitIdOption(t.workUnit):void 0;if(!i&&!a)throw Error(`Specify --task, --work-unit, or both.`);if(t.action!==`link`&&t.action!==`unlink`)throw Error(`--action must be link or unlink.`);let o=await this.callProjectTool(n,r,`link_artifact`,{key:e,action:t.action,taskId:i,workUnitId:a,clip:this.parseClip(t.clipJson)});console.log(JSON.stringify(o,null,2))}catch(e){this.handleError(`Failed to link artifact`,e)}}),this.addArtifactScopeOptions(t.command(`signed-url`).description(`Get a signed upload or download URL for an artifact`)).requiredOption(`--action <action>`,`Signed URL action (upload|download)`).option(`--key <key>`,`Artifact key (required for download)`).option(`--filename <filename>`,`Filename (required for upload)`).option(`--type <type>`,`Content type for upload`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e);if(e.action===`download`){if(!e.key)throw Error(`--key is required for download signed URLs`);let r=await Pt({organizationId:t,id:n},{key:e.key});console.log(JSON.stringify({...r,key:e.key,action:`download`},null,2));return}if(e.action!==`upload`)throw Error(`--action must be upload or download`);if(!e.filename)throw Error(`--filename is required for upload signed URLs`);let r=await Ft({organizationId:t,id:n},{filename:e.filename,contentType:e.type});console.log(JSON.stringify({...r,action:`upload`},null,2))}catch(e){this.handleError(`Failed to get signed artifact URL`,e)}}),this.addArtifactScopeOptions(t.command(`seed`).description(`Seed artifacts from a JSON file`)).requiredOption(`--file <path>`,`Path to JSON file containing seed data`).action(async e=>{try{await this.setupClient();let{org:t,project:n}=await this.resolveArtifactScope(e),r=g.default.resolve(e.file);if(!h.default.existsSync(r)){console.error(M.red(`✗`),`File not found: ${r}`),process.exit(1);return}let i=h.default.readFileSync(r,`utf-8`),a;try{a=JSON.parse(i)}catch{console.error(M.red(`✗`),`Invalid JSON in ${r}`),process.exit(1);return}let o=await Lt({organizationId:t,id:n},a);console.log(JSON.stringify(o,null,2))}catch(e){this.handleError(`Failed to seed artifacts`,e)}}),this.addArtifactScopeOptions(t.command(`update <key>`).description(`Update artifact metadata`)).option(`--status <status>`,`Artifact status (pending|uploaded)`).option(`--labels <labels>`,`Comma-separated labels to set`).action(async(e,t)=>{try{await this.setupClient();let{org:n,project:r}=await this.resolveArtifactScope(t),i=await this.callProjectTool(n,r,`update_artifact`,{key:e,status:t.status,labels:this.parseCsv(t.labels)});console.log(JSON.stringify(i,null,2))}catch(e){this.handleError(`Failed to update artifact`,e)}})}addArtifactScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,cn)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,ln))}async resolveArtifactScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}async callProjectTool(e,t,n,r){let{serverUrl:i,apiKey:a}=await this.resolveApiClientContext();return tn({serverUrl:i,apiKey:a,organizationId:e,projectId:(await I({organizationId:e,id:t})).id,toolName:n,toolArgs:this.compact(r)})}async downloadProjectArtifactByKey(e,t,n,r){if(r.task||r.workUnit||r.target)throw Error(`Single artifact downloads only support <key> and --output. Do not pass --task, --work-unit, or --target.`);let i=await Pt({organizationId:e,id:t},{key:n}),a=await this.fetchArtifactBuffer(i.url),o=r.output??n;h.default.writeFileSync(o,a),console.log(M.green(`✓`),`Downloaded to ${o}`)}async downloadScopedArtifacts(e,t,n){if(n.output)throw Error(`Scoped downloads write to folders. Use --target instead of --output.`);if(!!n.task==!!n.workUnit)throw Error(`Pass exactly one of --task or --work-unit.`);let r=g.default.resolve(n.target??process.cwd()),i=n.task?[await this.resolveTaskForScopedDownload(n.task)]:await this.resolveWorkUnitTasks(e,t,n.workUnit),a=await this.buildScopedDownloadPlan(e,i,r,!!n.workUnit);this.assertWritablePlan(a,!!n.overwrite),h.default.mkdirSync(r,{recursive:!0});for(let t of a){let n=await Bt({organizationId:e,taskId:t.task.id},{key:t.artifact.key}),r=await this.fetchArtifactBuffer(n.url);h.default.mkdirSync(g.default.dirname(t.outputPath),{recursive:!0}),h.default.writeFileSync(t.outputPath,r),console.log(M.green(`✓`),`Downloaded ${t.artifact.key} to ${t.outputPath}`)}this.printJson({scope:n.task?{type:`task`,id:n.task}:{type:`work-unit`,id:n.workUnit},outputDir:r,downloaded:a.length,totalArtifacts:a.length,totalTasks:i.length})}async resolveTaskForScopedDownload(e){let t=await this.resolveTaskIdOption(e);return{id:t,slug:t}}async resolveWorkUnitTasks(e,t,n){let r=await Xt({organizationId:e,projectId:t,workUnitId:await this.resolveWorkUnitIdOption(n)}),i=[],a=0;for(;;){let n={limit:fn,offset:a,sort:`position`,order:`asc`,statusFilter:`all`,workUnitId:r.id},o=await Ht({organizationId:e,projectId:t},n);if(i.push(...o.items.map(e=>this.toArtifactTask(e))),a+=o.items.length,o.items.length===0||a>=o.total)return i}}async buildScopedDownloadPlan(e,t,n,r){let i=[];for(let a of t){let t=await this.listAllTaskArtifacts(e,a.id),o=r?g.default.join(n,this.sanitizePathSegment(a.slug||a.id)):n;for(let e of t)i.push({artifact:e,task:a,outputPath:g.default.join(o,this.sanitizePathSegment(e.name||g.default.basename(e.key)))})}return i}toArtifactTask(e){return{id:e.id,slug:e.slug||e.id}}async listAllTaskArtifacts(e,t){let n=[],r=0;for(;;){let i=await zt({organizationId:e,taskId:t},{limit:fn,offset:r});if(n.push(...i.items),r+=i.items.length,i.items.length===0||r>=i.total)return n}}assertWritablePlan(e,t){let n=new Set;for(let r of e){if(n.has(r.outputPath))throw Error(`Duplicate artifact output path: ${r.outputPath}`);if(n.add(r.outputPath),!t&&h.default.existsSync(r.outputPath))throw Error(`Output file already exists: ${r.outputPath}. Pass --overwrite to replace it.`)}}async fetchArtifactBuffer(e){let t=await fetch(e);if(!t.ok)throw Error(`Download failed with status ${t.status}`);return Buffer.from(await t.arrayBuffer())}sanitizePathSegment(e){return e.replace(/[<>:"/\\|?*]/g,`_`).split(``).map(e=>e.charCodeAt(0)<32?`_`:e).join(``).trim()||`artifact`}hasListFilters(e){return!!(e.maxKeys||e.continuationToken||e.search||e.labels||e.contentType||e.status)}parseOptionalNumber(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isFinite(n))throw Error(`${t} must be numeric.`);return n}parseClip(e){let t=this.parseJsonFlag(e,`--clip-json`);if(t!==void 0){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`--clip-json must be an object.`);return t}}compact(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}};pn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],pn);var mn=class e{command;constructor(e){this.command=e}static for(t){return new e(t)}fromSchemaGroups(e){for(let t of e)this.addGroup(t);return this.command}addGroup(e){let t=d.z.toJSONSchema(e.schema),n=new Set(t.required??[]);for(let r of e.options){let e=r.source??r.name,i=t.properties?.[e],a=i?.cli,o=r.parse??a?.parse??hn(i),s=i?.description??yn(e),l=r.defaultValue??gn(i),u=r.valueName??a?.valueName??e,d=r.flag??a?.flag??`--${vn(r.name)}`,f=r.envVars??(r.envVar?[r.envVar]:[]),p=f.length>0?!1:r.required??(l===void 0&&n.has(e)),m=o===`boolean`?d:`${d} <${u}>`,h=_n(o),g=new c.Option(m,s);if(f.some(e=>re(e))&&g.hideHelp(),p){h&&g.argParser(h),this.command.addOption(g.makeOptionMandatory());continue}h?(g.argParser(h),l!==void 0&&g.default(l),this.command.addOption(g)):(l===void 0||g.default(l),this.command.addOption(g))}}},hn=e=>e&&(Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type)===`boolean`?`boolean`:`string`,gn=e=>{if(typeof e?.default==`string`||typeof e?.default==`boolean`)return e.default;if(typeof e?.default==`number`)return String(e.default)},_n=e=>{if(e===`csv`)return e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);if(e===`json`)return e=>JSON.parse(e)},vn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/_/g,`-`).toLowerCase(),yn=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),bn=`0.0.1`,L=`AGIFLOW_ORGANIZATION_ID`,R=`AGIFLOW_PROJECT_ID`,xn=`AGIFLOW_TASK_ID`,Sn=`AGIFLOW_WORK_UNIT_ID`,Cn=(e,t)=>{let n={AGIFLOW_ORGANIZATION_ID:t.org,AGIFLOW_PROJECT_ID:t.project,AGIFLOW_JOB_KIND:e.kind,AGIFLOW_JOB_ID:e.id,AGIFLOW_JOB_SLUG:e.slug??``,AGIFLOW_JOB_TITLE:e.title??``,AGIFLOW_WORKFLOW_ID:t.workflowId,AGIFLOW_JOB_CONTEXT_FILE:t.contextFile};return e.kind===`work-unit`?n[Sn]=e.id:n[xn]=e.id,n},z=d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID`)}),wn=d.z.object({jobKind:d.z.enum([`work-unit`,`task`]).describe(`Job kind (work-unit|task)`),jobId:d.z.string().min(1).describe(`Job ID`)}),Tn=d.z.object({format:d.z.literal(`json`).default(`json`).describe(`Output format`)}),B=(e,t)=>mn.for(e).fromSchemaGroups([...t,{schema:Tn,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),En=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`automation`).description(`Automation JSON commands`);t.command(`list-jobs`).description(`List runnable or claimed automation jobs`).option(`--status <statuses>`,`Comma-separated job statuses`,`planning,todo`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({limit:d.z.string().default(`50`).describe(`Max results`),claimed:d.z.boolean().optional().describe(`List claimed running jobs`),deviceId:d.z.string().optional().describe(`Filter claimed jobs by device ID`)}),options:[{name:`limit`,required:!1,defaultValue:`50`},{name:`claimed`,required:!1},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=await this.requestJson({org:t,project:n,path:`/jobs`,query:{status:e.status,limit:Number(e.limit),claimed:!!e.claimed,deviceId:e.deviceId,format:`json`}});this.printJson(r)})}),t.command(`get-job`).description(`Get a normalized automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:wn,options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Sn,xn]}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=this.resolveJobKind(e.jobKind),i=await this.resolveJobId(e.jobId,r),a=await this.requestJson({org:t,project:n,path:`/jobs/get`,query:{jobKind:r,jobId:i,format:`json`}});this.printJson(a)})}),t.command(`claim-job`).description(`Claim an automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:wn.extend({name:d.z.string().min(1).describe(`Run name`),deviceId:d.z.string().optional().describe(`Device ID running the job`)}),options:[{name:`jobKind`,flag:`--job-kind`},{name:`jobId`,flag:`--job-id`,envVars:[Sn,xn]},{name:`name`},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=this.resolveJobKind(e.jobKind),i=await this.resolveJobId(e.jobId,r),a=await this.requestJson({org:t,project:n,path:`/jobs/claim`,method:`POST`,body:{jobKind:r,jobId:i,name:e.name,deviceId:e.deviceId}});this.printJson(a)})}),t.command(`release-job`).description(`Release a claimed automation job`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({workflowId:d.z.string().min(1).describe(`Workflow lock ID`),status:d.z.enum([`completed`,`failed`]).describe(`Release status (completed|failed)`),error:d.z.string().optional().describe(`Error message for failed runs`)}),options:[{name:`workflowId`,flag:`--workflow-id`},{name:`status`},{name:`error`,required:!1}]}]).action(async e=>{await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`automation commands`);let{org:t,project:n}=await this.resolveAutomationRoute(e),r=await this.requestJson({org:t,project:n,path:`/jobs/release`,method:`POST`,body:{workflowId:e.workflowId,status:e.status,error:e.error}});this.printJson(r)})}),t.command(`dispatch`).description(`Poll ready jobs and hand each off to a consumer command (long-lived)`),B(t.commands.at(-1),[{schema:z,options:[{name:`org`,source:`organizationId`,envVar:L},{name:`project`,source:`projectId`,envVar:R}]},{schema:d.z.object({handler:d.z.string().min(1).describe(`Consumer command run per claimed job`),status:d.z.string().default(`planning,todo`).describe(`Comma-separated job statuses to poll`),maxConcurrent:d.z.string().default(`2`).describe(`Max concurrent in-flight handlers`),interval:d.z.string().default(`1200`).describe(`Seconds between polls`),limit:d.z.string().default(`50`).describe(`Jobs fetched per poll`),once:d.z.boolean().optional().describe(`Run a single poll pass then drain and exit`),deviceId:d.z.string().optional().describe(`Device ID for claim attribution`)}),options:[{name:`handler`},{name:`status`,required:!1,defaultValue:`planning,todo`},{name:`maxConcurrent`,flag:`--max-concurrent`,required:!1,defaultValue:`2`},{name:`interval`,required:!1,defaultValue:`1200`},{name:`limit`,required:!1,defaultValue:`50`},{name:`once`,required:!1},{name:`deviceId`,flag:`--device-id`,required:!1}]}]).action(async e=>{try{await this.runDispatch(e)}catch(e){this.logDispatch(`fatal: ${e instanceof Error?e.message:String(e)}`),process.exit(1)}})}async runDispatch(e){let{org:t,project:n}=await this.resolveAutomationRoute(e);if(!e.handler)throw Error(`Missing --handler. Pass the consumer command to run per job.`);let r={org:t,project:n,handler:e.handler,statuses:e.status??`planning,todo`,limit:Number(e.limit??`50`),maxConcurrent:Math.max(1,Number(e.maxConcurrent??`2`)),deviceId:e.deviceId,inFlight:new Map},i=Math.max(0,Number(e.interval??`1200`))*1e3,a={requested:!1},o=()=>{a.requested=!0,this.logDispatch(`shutdown requested; draining in-flight handlers`)};process.once(`SIGINT`,o),process.once(`SIGTERM`,o),this.logDispatch(`started org=${t} project=${n} status=${r.statuses} maxConcurrent=${r.maxConcurrent} interval=${i/1e3}s${e.once?` (once)`:``}`);try{do{try{await this.dispatchPass(r)}catch(e){this.logDispatch(`poll error: ${e instanceof Error?e.message:String(e)}`)}if(e.once||a.requested)break;await this.sleep(i,a)}while(!a.requested)}finally{process.off(`SIGINT`,o),process.off(`SIGTERM`,o),await Promise.allSettled(r.inFlight.values())}}async dispatchPass(e){let t=e.maxConcurrent-e.inFlight.size;if(t<=0){this.logDispatch(`at capacity (${e.inFlight.size}/${e.maxConcurrent}); skipping poll`);return}let n=await this.requestJson({org:e.org,project:e.project,path:`/jobs`,query:{status:e.statuses,limit:e.limit,claimed:!1,format:`json`}}),r=this.extractJobs(n),i=0;for(let n of r){if(i>=t)break;if(e.inFlight.has(n.id))continue;let r=await this.claimJobForDispatch(e,n);if(!r)continue;i+=1;let a=this.handleClaimedJob(e,n,r).finally(()=>{e.inFlight.delete(n.id)});e.inFlight.set(n.id,a)}}async claimJobForDispatch(e,t){let n=await this.requestJson({org:e.org,project:e.project,path:`/jobs/claim`,method:`POST`,body:{jobKind:t.kind,jobId:t.id,name:t.slug,deviceId:e.deviceId}});return n&&typeof n==`object`&&n.claimed===!0&&n.workflowId?String(n.workflowId):(this.logDispatch(`skip ${t.kind} ${t.slug}: not claimed (held elsewhere)`),null)}async handleClaimedJob(e,t,n){this.logDispatch(`claimed ${t.kind} ${t.slug} (workflow ${n}); running handler`);let r=this.writeJobContext(e.project,t),i=Cn(t,{org:e.org,project:e.project,workflowId:n,contextFile:r}),a=0,o;try{a=await this.spawnHandler(e.handler,i)}catch(e){a=1,o=e instanceof Error?e.message:String(e)}finally{this.removeJobContext(r)}let s=a===0?`completed`:`failed`;!o&&a!==0&&(o=`handler exited with code ${a}`),await this.releaseDispatch(e,n,s,o),this.logDispatch(`released ${t.kind} ${t.slug} as ${s}${o?`: ${o}`:``}`)}async releaseDispatch(e,t,n,r){try{await this.requestJson({org:e.org,project:e.project,path:`/jobs/release`,method:`POST`,body:{workflowId:t,status:n,error:r}})}catch(e){this.logDispatch(`release failed for workflow ${t}: ${e instanceof Error?e.message:String(e)}`)}}spawnHandler(e,t){return new Promise((n,r)=>{let i=(0,te.spawn)(e,{shell:!0,stdio:[`ignore`,`inherit`,`inherit`],env:{...process.env,...t}});i.on(`error`,r),i.on(`close`,e=>n(e??0))})}writeJobContext(e,t){let n=g.default.join(_.default.homedir(),`.agiflow`,`dispatch`,this.slugifyName(e));(0,h.mkdirSync)(n,{recursive:!0});let r=g.default.join(n,`${t.slug||t.id}.json`);return(0,h.writeFileSync)(r,JSON.stringify(t,null,2),`utf8`),r}removeJobContext(e){try{(0,h.rmSync)(e,{force:!0})}catch{}}extractJobs(e){return e&&typeof e==`object`&&Array.isArray(e.items)?e.items:[]}logDispatch(e){console.error(`[dispatch] ${e}`)}async sleep(e,t){let n=0;for(;n<e&&!t.requested;){let t=Math.min(1e3,e-n);await new Promise(e=>setTimeout(e,t)),n+=t}}async resolveAutomationRoute(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project)}}resolveJobKind(e){if(e===`work-unit`||e===`task`)return e;throw Error(`Missing job kind. Pass --job-kind work-unit|task.`)}async resolveJobId(e,t){return e||(t===`work-unit`?this.resolveWorkUnitIdOption(void 0):this.resolveTaskIdOption(void 0))}slugifyName(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);if(!t)throw Error(`Name must contain at least one letter or number.`);return t}async requestJson(e){return this.requestUrlJson(`${this.configManager.getServerUrl().replace(/\/$/,``)}/api/v1/organizations/${e.org}/projects/${e.project}/automation${e.path}`,e)}async requestUrlJson(e,t){let n=await this.credentialsService.getApiKey();if(!n)throw Error(`No API key found. Set AGIFLOW_API_KEY, map AGIFLOW_API_KEY_ENV in .agiflowrc, or run authentication.`);let r=new URL(e);for(let[e,n]of Object.entries(t.query??{}))n!==void 0&&r.searchParams.set(e,String(n));let i=await fetch(r,{method:t.method??`GET`,headers:{"x-api-key":n,"x-client-type":`agent-cli`,"x-client-version":bn,"Content-Type":`application/json`,Accept:`application/json`},body:t.body?JSON.stringify(t.body):void 0}),a=await i.json().catch(()=>({}));if(!i.ok){let e=typeof a==`object`&&a&&`message`in a?String(a.message):i.statusText;throw Error(e)}return a}};En=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],En);var Dn=`AGIFLOW_ORGANIZATION_ID`,On=`AGIFLOW_PROJECT_ID`,kn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`analytics`).description(`Project analytics JSON commands`);this.addCommonOptions(t.command(`tag-distribution`).description(`Get task tag distribution`)).option(`--prefix <prefix>`,`Filter tags by prefix`).option(`--tags <tags>`,`Comma-separated exact tag values`).option(`--targets-json <json>`,`Target ratios by tag, for gap analysis`).action(e=>this.tagDistribution(e)),this.addCommonOptions(t.command(`assignee-distribution`).description(`Get task assignee distribution`)).option(`--group-by-tag <prefix>`,`Tag prefix to cross-tabulate per assignee`).action(e=>this.assigneeDistribution(e)),this.addCommonOptions(t.command(`timeline-distribution`).description(`Get task timeline distribution`)).option(`--granularity <granularity>`,`Bucket size (day|week|month)`,`week`).option(`--group-by-tag <prefix>`,`Tag prefix to cross-tabulate per time bucket`).action(e=>this.timelineDistribution(e))}async tagDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_tag_distribution`,{...this.commonToolArgs(e),prefix:e.prefix,tags:this.parseCsv(e.tags),targets:this.parseTargets(e.targetsJson)},e);this.printJson(t)})}async assigneeDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_assignee_distribution`,{...this.commonToolArgs(e),groupByTag:e.groupByTag},e);this.printJson(t)})}async timelineDistribution(e){await this.runJsonOnly(async()=>{let t=await this.callAnalyticsTool(`get_timeline_distribution`,{...this.commonToolArgs(e),granularity:e.granularity,groupByTag:e.groupByTag},e);this.printJson(t)})}async callAnalyticsTool(e,t,n){this.requireJsonFormat(n.format,`analytics commands`),await this.setupClient();let{serverUrl:r,apiKey:i}=await this.resolveApiClientContext(),{org:a,projectId:o}=await this.resolveProjectScope(n);return tn({serverUrl:r,apiKey:i,organizationId:a,projectId:o,toolName:e,toolArgs:this.compact(t)})}addCommonOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Dn)).addOption(this.buildEnvIdOption(`--project <projectIdOrSlug>`,`Project ID or slug`,On)).requiredOption(`--start-date <date>`,`Start of date range (ISO 8601)`).requiredOption(`--end-date <date>`,`End of date range (ISO 8601)`).option(`--date-field <field>`,`Date field (createdAt|dueDate|completedAt)`).option(`--status-filter <filter>`,`Status filter (active|all)`).option(`--format <format>`,`Output format (json)`,`json`)}async resolveProjectScope(e){let t=await this.resolveOrganizationId(e.org);return{org:t,projectId:(await I({organizationId:t,id:await this.resolveProjectIdOption(e.project)})).id}}commonToolArgs(e){return this.requireJsonFormat(e.format,`analytics commands`),this.compact({org:e.org,project:e.project,startDate:e.startDate,endDate:e.endDate,dateField:e.dateField,statusFilter:e.statusFilter,format:e.format})}parseTargets(e){let t=this.parseJsonFlag(e,`--targets-json`);if(t!==void 0){if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`--targets-json must be an object.`);return t}}compact(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&![`org`,`project`,`format`].includes(n)&&(t[n]=r);return t}};kn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],kn);var An=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault`,{method:`GET`,params:e})).data,jn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`GET`,params:e})).data,Mn=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`PUT`,params:e,body:t})).data,Nn=async e=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/{key}`,{method:`DELETE`,params:e})).data,Pn=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/projects/{projectId}/environments/{environmentId}/vault/bulk`,{method:`POST`,params:e,body:t})).data,Fn=`AGIFLOW_ORGANIZATION_ID`,In=`AGIFLOW_PROJECT_ID`,Ln=`AGIFLOW_ENVIRONMENT_ID`,Rn=class extends F{constructor(e,t){super(e,t)}register(e){let t=e.command(`vault`).description(`Vault JSON commands`);this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`list`).description(`List vault entries`))).action(e=>this.list(e)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`get <key>`).description(`Get a vault entry`))).action((e,t)=>this.get(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`set <key>`).description(`Set a vault entry`))).requiredOption(`--value <value>`,`Vault entry value`).option(`--description <description>`,`Vault entry description`).option(`--secret`,`Mask this entry in list/get responses`).action((e,t)=>this.set(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`delete <key>`).description(`Delete a vault entry`))).action((e,t)=>this.delete(e,t)),this.addJsonFormatOption(this.addVaultScopeOptions(t.command(`bulk-upsert`).description(`Bulk upsert vault entries`))).requiredOption(`--entries-json <json>`,`Array of entries or { "entries": [...] }`).action(e=>this.bulkUpsert(e))}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`vault commands`),await this.setupClient();let t=await this.resolveVaultScope(e),n=await An({organizationId:t.org,projectId:t.project,environmentId:t.environment});this.printJson({entries:n,total:Array.isArray(n)?n.length:0})})}async get(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t),r=await jn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e});this.printJson({entry:r})})}async set(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t),r=await Mn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e},{value:t.value,description:t.description,isSecret:t.secret===!0});this.printJson({entry:r})})}async delete(e,t){await this.runJsonOnly(async()=>{this.requireJsonFormat(t.format,`vault commands`),await this.setupClient();let n=await this.resolveVaultScope(t);await Nn({organizationId:n.org,projectId:n.project,environmentId:n.environment,key:e}),this.printJson({deleted:!0,key:e})})}async bulkUpsert(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`vault commands`),await this.setupClient();let t=await this.resolveVaultScope(e),n=this.parseEntries(e.entriesJson),r=await Pn({organizationId:t.org,projectId:t.project,environmentId:t.environment},{entries:n});this.printJson({entries:r,total:Array.isArray(r)?r.length:0})})}addVaultScopeOptions(e){return e.addOption(this.buildEnvIdOption(`--org <organizationId>`,`Organization ID`,Fn)).addOption(this.buildEnvIdOption(`--project <projectId>`,`Project ID`,In)).addOption(this.buildEnvIdOption(`--environment <environmentId>`,`Environment ID`,Ln))}addJsonFormatOption(e){return e.option(`--format <format>`,`Output format (json)`,`json`)}async resolveVaultScope(e){return{org:await this.resolveOrganizationId(e.org),project:await this.resolveProjectIdOption(e.project),environment:await this.resolveEnvironmentId(e.environment)}}async resolveEnvironmentId(e){let t=e??process.env.AGIFLOW_ENVIRONMENT_ID;if(!t)throw Error(`Missing environment ID. Pass --environment or set AGIFLOW_ENVIRONMENT_ID.`);return t}parseEntries(e){let t=this.parseJsonFlag(e,`--entries-json`),n=t&&typeof t==`object`&&!Array.isArray(t)&&`entries`in t?t.entries:t;if(!Array.isArray(n))throw Error(`--entries-json must be an array or an object containing entries.`);return n.map((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`entries[${t}] must be an object.`);let n=e;if(typeof n.key!=`string`||!n.key)throw Error(`entries[${t}].key is required.`);if(typeof n.value!=`string`||!n.value)throw Error(`entries[${t}].value is required.`);return{key:n.key,value:n.value,description:typeof n.description==`string`?n.description:void 0,isSecret:typeof n.isSecret==`boolean`?n.isSecret:!1}})}};Rn=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],Rn),d.z.enum([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`HEAD`]);var zn=d.z.union([d.z.literal(200),d.z.literal(201),d.z.literal(204),d.z.literal(400),d.z.literal(401),d.z.literal(403),d.z.literal(404),d.z.literal(409),d.z.literal(422),d.z.literal(500),d.z.literal(502),d.z.literal(503)]);d.z.enum([`application/json`,`application/xml`,`text/plain`,`multipart/form-data`]),d.z.object({error:d.z.string(),message:d.z.string().optional(),statusCode:zn,details:d.z.record(d.z.string(),d.z.unknown()).optional()}),d.z.object({total:d.z.number(),limit:d.z.number(),offset:d.z.number(),hasNext:d.z.boolean().optional(),hasPrev:d.z.boolean().optional()});var Bn=d.z.object({id:d.z.enum([`apple`,`google`,`github`]),displayName:d.z.string(),flow:d.z.enum([`native-id-token`,`oauth-browser`])}).strict();d.z.object({emailPassword:d.z.boolean(),providers:d.z.array(Bn)}).strict(),d.z.object({ok:d.z.boolean()}).strict(),d.z.object({name:d.z.string().min(2).max(80),email:d.z.string().max(160).email(),subject:d.z.string().min(2).max(120),message:d.z.string().min(10).max(4e3)}).strict();var Vn=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string().nullable(),role:d.z.string()}).strict();d.z.object({organizations:d.z.array(Vn)}).strict(),d.z.object({api_key:d.z.string().describe(`The API key for the agent`),key_id:d.z.string().describe(`ID of the API key`),organization_id:d.z.string().describe(`Organization ID`),organization_name:d.z.string().describe(`Organization name`),agent_user_id:d.z.string().describe(`User ID of the agent`),expires_at:d.z.number().describe(`Expiration timestamp in milliseconds`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID to exchange token for`)}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict();var Hn=d.z.object({organizationId:d.z.string(),projectId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),resourcePath:d.z.string(),scopes:d.z.string().nullable(),clientId:d.z.string(),expiresAt:d.z.string()}).strict(),Un=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),role:d.z.string()}).strict();d.z.object({resourceContext:Hn.nullable(),organizations:d.z.array(Un)}).strict();var Wn=d.z.object({code_challenge:d.z.string().min(1)}).strict();d.z.object({success:d.z.boolean(),resourcePath:d.z.string(),organizationId:d.z.string(),projectId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable()}).strict(),d.z.object({codeChallenge:d.z.string().min(1),organizationId:d.z.string().optional(),clientId:d.z.string().optional(),projectId:d.z.string().optional(),workUnitId:d.z.string().optional(),taskId:d.z.string().optional()}).strict(),d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string()}),d.z.object({name:d.z.string().min(2).max(80).describe(`Organization display name`)}).strict(),d.z.object({version:d.z.string()}).strict();var V=d.z.object({}).strict();d.z.object({version:d.z.string()}).strict();var H=d.z.object({}).strict();d.z.object({mcpServers:d.z.object({})}).strict();var Gn=d.z.object({id:d.z.string(),mcpServerId:d.z.string(),serverName:d.z.string(),description:d.z.string().nullable(),isInternal:d.z.boolean(),scope:d.z.enum([`global`,`organization`,`project`,`task`]),isEnabled:d.z.boolean(),hasProgressiveDisclosure:d.z.boolean(),progressiveDisclosure:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}).nullable(),priority:d.z.number()}).strict();d.z.object({servers:d.z.array(Gn),projectId:d.z.string().optional()}).strict();var Kn=d.z.object({projectId:d.z.string().optional(),taskId:d.z.string().optional(),workUnitId:d.z.string().optional()}).strict();d.z.object({id:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().optional(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),serverName:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().optional(),priority:d.z.number().min(-9007199254740991).max(9007199254740991).int().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({id:d.z.string(),organizationId:d.z.string(),projectId:d.z.string().nullable(),taskId:d.z.string().nullable(),workUnitId:d.z.string().nullable(),progressiveDisclosure:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict();var qn=d.z.object({projectId:d.z.string().optional(),taskId:d.z.string().optional(),workUnitId:d.z.string().optional()}).strict();d.z.object({progressiveDisclosure:d.z.boolean()}).strict(),d.z.object({progressiveDisclosure:d.z.boolean()}).strict();var Jn=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),serverName:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),isInternal:d.z.boolean(),serverConfig:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),availableTools:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),availableResources:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Jn)}).strict();var Yn=d.z.union([d.z.object({type:d.z.string(),command:d.z.string().min(1),args:d.z.array(d.z.string()).optional(),env:d.z.object({}).optional()}).strict(),d.z.object({type:d.z.string(),url:d.z.string().url(),headers:d.z.object({}).optional()}).strict()]);d.z.object({serverName:d.z.string().min(1),displayName:d.z.string().min(1),description:d.z.string().optional(),serverConfig:Yn}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({serverName:d.z.string().min(1).optional(),displayName:d.z.string().min(1).optional(),description:d.z.string().optional(),serverConfig:Yn.optional()}).strict(),d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({taskId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),taskId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({taskId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({taskId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({workUnitId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),workUnitId:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({workUnitId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),workUnitId:d.z.string().min(1)}).strict();var Xn=d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),parentWorkUnitId:d.z.string().nullable(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable(),priority:d.z.enum([`low`,`medium`,`high`]).nullable(),statusId:d.z.string().nullable(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable(),ownerId:d.z.string(),estimatedEffort:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),startDate:d.z.string().nullable(),targetDate:d.z.string().nullable(),completedAt:d.z.string().nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),taskCount:d.z.number().optional().describe(`Number of tasks in this work unit`)}).strict(),Zn=d.z.object({title:d.z.string().min(1).max(255).optional().describe(`Work unit title`),slug:d.z.string().optional().describe(`Work unit slug`),description:d.z.string().nullable().optional(),parentWorkUnitId:d.z.string().nullable().optional(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:d.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:d.z.string().nullable().optional(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:d.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:d.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:d.z.string().nullable().optional(),targetDate:d.z.string().nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({action:d.z.union([d.z.string(),d.z.string(),d.z.string()]),artifactId:d.z.string().min(1)}).strict();var Qn=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),projectId:d.z.string().nullable(),isStartedState:d.z.boolean(),isCompletionState:d.z.boolean(),isTerminalState:d.z.boolean(),isBlockedState:d.z.boolean(),isAgentPickable:d.z.boolean(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Qn),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1).optional()}).strict(),d.z.object({statusIds:d.z.array(d.z.string().min(1))}).strict(),d.z.object({organizationId:d.z.string().min(1).nullable().optional(),projectId:d.z.string().nullable().optional(),isStartedState:d.z.boolean().optional(),isCompletionState:d.z.boolean().optional(),isTerminalState:d.z.boolean().optional(),isBlockedState:d.z.boolean().optional(),isAgentPickable:d.z.boolean().optional(),key:d.z.string().min(1).max(50),name:d.z.string().min(1).max(100),description:d.z.string().max(500).nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional(),color:d.z.string().nullable().optional(),isActive:d.z.boolean().optional(),isDefault:d.z.boolean().optional()}).strict();var $n=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`position`,`key`]),order:d.z.enum([`asc`,`desc`])}).strict();d.z.object({projectId:d.z.string().nullable().optional(),isStartedState:d.z.boolean().optional(),isCompletionState:d.z.boolean().optional(),isTerminalState:d.z.boolean().optional(),isBlockedState:d.z.boolean().optional(),isAgentPickable:d.z.boolean().optional(),key:d.z.string().min(1).max(50).optional(),name:d.z.string().min(1).max(100).optional(),description:d.z.string().max(500).nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional(),color:d.z.string().nullable().optional(),isActive:d.z.boolean().optional(),isDefault:d.z.boolean().optional()}).strict();var er=d.z.object({id:d.z.string(),organizationId:d.z.string().nullable(),name:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),executable:d.z.string(),defaultArgs:d.z.string().nullable(),isEnabled:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict(),d.z.object({name:d.z.string().min(1).max(255),displayName:d.z.string().min(1).max(255),description:d.z.string().optional(),executable:d.z.string().min(1).max(255),defaultArgs:d.z.string().optional(),isEnabled:d.z.boolean()}).strict(),d.z.object({items:d.z.array(er),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var tr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`displayName`]),order:d.z.enum([`asc`,`desc`]),isEnabled:d.z.boolean()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),displayName:d.z.string().min(1).max(255).optional(),description:d.z.string().optional(),executable:d.z.string().min(1).max(255).optional(),defaultArgs:d.z.string().optional(),isEnabled:d.z.boolean().optional()}).strict();var nr=d.z.object({id:d.z.string(),organizationId:d.z.string(),agentTypeId:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),metadata:d.z.object({}).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict(),d.z.object({agentTypeId:d.z.string().min(1),name:d.z.string().min(1).max(255),description:d.z.string().max(1e3).nullable().optional(),isDefault:d.z.boolean()}).strict(),d.z.object({items:d.z.array(nr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var rr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`]),order:d.z.enum([`asc`,`desc`])}).strict(),ir=d.z.object({agentTypeId:d.z.string().min(1)}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string()}).strict(),d.z.object({}),d.z.object({name:d.z.string().min(1).max(255).optional(),description:d.z.string().max(1e3).nullable().optional(),isDefault:d.z.boolean().optional()}).strict(),d.z.object({}).strict();var ar=d.z.object({id:d.z.string(),profileId:d.z.string(),credentialType:d.z.string(),customName:d.z.string().nullable(),r2Key:d.z.string(),size:d.z.number().max(9007199254740991).int(),checksum:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string(),type:d.z.enum([`gemini`,`codex`,`custom`]).optional()}).strict();var or=d.z.object({originalSize:d.z.number().max(9007199254740991).int(),fileCount:d.z.number().min(0).max(9007199254740991).int(),checksum:d.z.string().min(64).max(64)}).strict();d.z.object({credentialType:d.z.enum([`gemini`,`codex`,`custom`]),customName:d.z.string().min(1).max(255).optional(),data:d.z.string().min(1),metadata:or}).strict(),d.z.object({items:d.z.array(ar),total:d.z.number().min(0).max(9007199254740991).int()}).strict();var sr=d.z.object({download:d.z.boolean()}).strict(),cr=d.z.object({id:d.z.string(),agentProfileId:d.z.string(),key:d.z.string(),value:d.z.string(),description:d.z.string().nullable(),isRequired:d.z.boolean(),isSecret:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(cr),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),profileId:d.z.string()}).strict(),d.z.object({}),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),profileId:d.z.string(),key:d.z.string()}).strict(),d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().max(1e3).optional(),isRequired:d.z.boolean(),isSecret:d.z.boolean()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({variables:d.z.array(d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().max(1e3).optional(),isRequired:d.z.boolean(),isSecret:d.z.boolean()}).strict())}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string()}).strict(),d.z.object({url:d.z.string().url(),state:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),provider:d.z.enum([`github`,`gitlab`])}).strict(),d.z.object({redirectUri:d.z.string().url()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({code:d.z.string().min(1),state:d.z.string().min(1)}).strict();var lr=d.z.object({id:d.z.string(),organizationId:d.z.string(),provider:d.z.enum([`github`,`gitlab`]),scopes:d.z.array(d.z.string()),metadata:d.z.object({}).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(lr),d.z.object({});var ur=d.z.object({id:d.z.number(),name:d.z.string(),fullName:d.z.string(),cloneUrl:d.z.string(),sshUrl:d.z.string(),defaultBranch:d.z.string(),private:d.z.boolean(),owner:d.z.object({login:d.z.string(),avatarUrl:d.z.string().nullable()}).strict(),description:d.z.string().nullable(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(ur),total:d.z.number()}).strict();var dr=d.z.object({type:d.z.enum([`all`,`owner`,`public`,`private`,`member`]),sort:d.z.enum([`created`,`updated`,`pushed`,`full_name`]),direction:d.z.enum([`asc`,`desc`]),per_page:d.z.number().min(1).max(100),page:d.z.number().min(1)}).strict(),fr=d.z.object({name:d.z.string(),protected:d.z.boolean()}).strict();d.z.object({items:d.z.array(fr),total:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),owner:d.z.string().min(1),repo:d.z.string().min(1)}).strict();var pr=d.z.object({per_page:d.z.number().min(1).max(100),page:d.z.number().min(1)}).strict(),mr=d.z.object({id:d.z.string(),name:d.z.string(),type:d.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:d.z.string().optional(),version:d.z.string().optional(),metadata:d.z.object({}).optional(),is_active:d.z.boolean(),last_seen_at:d.z.string().datetime().optional(),created_at:d.z.string().datetime(),updated_at:d.z.string().datetime(),agentTypes:d.z.array(d.z.object({agentTypeId:d.z.string(),name:d.z.string(),displayName:d.z.string(),description:d.z.string().nullable(),executable:d.z.string(),defaultArgs:d.z.string().nullable(),isEnabled:d.z.boolean(),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict()).optional(),activeDaemon:d.z.object({id:d.z.string(),status:d.z.string(),lastHeartbeat:d.z.string().datetime(),isActive:d.z.boolean()}).strict().nullable().optional()}).strict();d.z.object({devices:d.z.array(mr),total:d.z.number()}).strict(),d.z.object({name:d.z.string().min(1),deviceGuid:d.z.string().min(1).optional(),type:d.z.enum([`cli`,`desktop`,`mobile`,`web`]),platform:d.z.string().optional(),version:d.z.string().optional(),metadata:d.z.object({}).optional(),agentTypes:d.z.array(d.z.object({agentType:d.z.string().min(1),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict()).optional()}).strict(),d.z.object({name:d.z.string().min(1).optional(),metadata:d.z.object({}).optional(),is_active:d.z.boolean().optional()}).strict();var hr=d.z.object({id:d.z.string(),deviceId:d.z.string(),agentTypeId:d.z.string(),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean(),createdAt:d.z.string().datetime(),updatedAt:d.z.string().datetime()}).strict();d.z.object({items:d.z.array(hr),total:d.z.number()}).strict();var gr=d.z.object({deviceId:d.z.string().optional(),agentTypeId:d.z.string().optional(),hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional(),limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}).strict();d.z.object({deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),hostEnabled:d.z.boolean(),dockerEnabled:d.z.boolean(),hostAuthed:d.z.boolean(),dockerAuthed:d.z.boolean()}).strict(),d.z.object({hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional()}).strict(),d.z.object({hostEnabled:d.z.boolean().optional(),dockerEnabled:d.z.boolean().optional(),hostAuthed:d.z.boolean().optional(),dockerAuthed:d.z.boolean().optional()}).strict();var _r=d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),emailVerified:d.z.boolean(),image:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),twoFactorEnabled:d.z.boolean().nullable(),lastLoginMethod:d.z.string().nullable()}).strict(),vr=d.z.object({id:d.z.string(),organizationId:d.z.string(),userId:d.z.string(),role:d.z.string(),createdAt:d.z.string(),description:d.z.string().nullable(),prompt:d.z.string().nullable()}).strict(),yr=d.z.object({user:_r,member:vr}).strict();d.z.object({members:d.z.array(yr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var br=d.z.object({limit:d.z.number().min(1).max(100).int().describe(`Max results`),offset:d.z.number().min(0).max(9007199254740991).int().describe(`Result offset`),sortBy:d.z.enum([`createdAt`,`name`,`email`]),sortDirection:d.z.enum([`asc`,`desc`]),filterField:d.z.enum([`role`,`createdAt`]).optional(),filterOperator:d.z.enum([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`nin`,`contains`]).optional(),filterValue:d.z.string().optional()}).strict();d.z.object({created:d.z.array(yr),errors:d.z.array(d.z.object({name:d.z.string(),error:d.z.string()}).strict()).optional()}).strict();var xr=d.z.object({email:d.z.string().email().optional().describe(`Existing user email`),name:d.z.string().min(1).max(255).describe(`Agent member name`),description:d.z.string().optional().describe(`Agent description`),prompt:d.z.string().optional().describe(`Agent prompt`)}).strict();d.z.object({agents:d.z.array(xr)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),description:d.z.string().optional(),prompt:d.z.string().optional()}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict();var Sr=d.z.object({id:d.z.string(),teamId:d.z.string(),userId:d.z.string(),createdAt:d.z.string(),user:d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),image:d.z.string().nullable().optional()}).strict().optional()}).strict();d.z.object({members:d.z.array(Sr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1)}).strict();var Cr=d.z.object({limit:d.z.number().min(1).max(100).int(),offset:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({userId:d.z.string().min(1)}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1),userId:d.z.string().min(1)}).strict();var wr=d.z.object({id:d.z.string(),teamId:d.z.string(),projectId:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({projects:d.z.array(wr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1)}).strict();var Tr=d.z.object({limit:d.z.number().min(1).max(100).int(),offset:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({projectId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),teamId:d.z.string().min(1),projectId:d.z.string().min(1)}).strict();var Er=d.z.object({id:d.z.string(),key:d.z.string().optional().describe(`Only returned on creation`),name:d.z.string().optional(),prefix:d.z.string().optional(),start:d.z.string().optional().describe(`First characters of the key`),referenceId:d.z.string(),expiresAt:d.z.string().optional(),createdAt:d.z.string(),lastRequest:d.z.string().optional(),remaining:d.z.number().optional(),rateLimitEnabled:d.z.boolean(),permissions:d.z.object({}).optional(),metadata:d.z.object({}).optional()}).strict();d.z.object({name:d.z.string().min(1).max(255).optional().describe(`Optional name for the API key`),expiresIn:d.z.number().optional().describe(`Expiration time in seconds`),userId:d.z.string().optional().describe(`Optional user ID - defaults to authenticated user if not provided`),prefix:d.z.string().optional().describe(`Prefix for the API key`),remaining:d.z.number().optional().describe(`Number of requests remaining`),metadata:d.z.object({}).optional().describe(`Additional metadata for the API key`),refillAmount:d.z.number().optional().describe(`Amount to refill on interval`),refillInterval:d.z.number().optional().describe(`Refill interval in milliseconds`),rateLimitTimeWindow:d.z.number().optional().describe(`Rate limit time window in ms`),rateLimitMax:d.z.number().optional().describe(`Maximum requests in time window`),rateLimitEnabled:d.z.boolean().optional().describe(`Enable rate limiting`),permissions:d.z.object({}).optional().describe(`Permissions for the API key`)}).strict(),d.z.object({items:d.z.array(Er),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Dr=d.z.object({userId:d.z.string().optional().describe(`Filter by user ID`),includeExpired:d.z.boolean().optional().describe(`Include expired keys`),limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),search:d.z.string().optional(),sort:d.z.enum([`createdAt`,`updatedAt`,`name`,`lastRequest`]),order:d.z.enum([`asc`,`desc`])}).strict();d.z.object({id:d.z.string()}).strict();var Or=d.z.object({id:d.z.string(),activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]),title:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),projectId:d.z.string().nullable(),taskId:d.z.string().nullable(),memberId:d.z.string().nullable(),agentSessionId:d.z.string().nullable(),deviceId:d.z.string().nullable(),daemonId:d.z.string().nullable(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().nullable(),ipAddress:d.z.string().nullable(),userAgent:d.z.string().nullable(),createdAt:d.z.string()}).strict();d.z.object({items:d.z.array(Or),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`)}).strict();var kr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]).optional(),projectId:d.z.string().optional(),taskId:d.z.string().optional(),memberId:d.z.string().optional(),agentSessionId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),sort:d.z.enum([`createdAt`,`activityType`,`title`]),order:d.z.enum([`asc`,`desc`]),search:d.z.string().optional()}).strict(),Ar=d.z.object({activityType:d.z.enum([`ai_completion`,`task_created`,`task_updated`,`task_completed`,`task_assigned`,`task_deleted`,`work_unit_created`,`work_unit_updated`,`work_unit_deleted`,`branch_created`,`collaboration`,`project_created`,`project_updated`,`agent_started`,`agent_stopped`,`agent_error`,`comment_added`,`device_connected`,`device_disconnected`,`member_joined`,`member_left`]),title:d.z.string().min(1),description:d.z.string().optional(),projectId:d.z.string().optional(),taskId:d.z.string().optional(),memberId:d.z.string().optional(),agentSessionId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().optional(),ipAddress:d.z.string().optional(),userAgent:d.z.string().optional()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),activityId:d.z.string().min(1)}).strict(),d.z.object({title:d.z.string().min(1).optional(),description:d.z.string().optional(),metadata:d.z.object({duration:d.z.string().optional(),success:d.z.boolean().optional(),errorMessage:d.z.string().optional(),priority:d.z.enum([`low`,`medium`,`high`]).optional(),estimatedHours:d.z.number().nullable().optional(),previousStatus:d.z.string().optional(),newStatus:d.z.string().optional(),assignedFrom:d.z.string().optional(),assignedTo:d.z.string().optional(),branch:d.z.string().optional(),commits:d.z.number().nullable().optional(),repository:d.z.string().optional(),participants:d.z.number().nullable().optional(),messages:d.z.number().nullable().optional(),discussionTopic:d.z.string().optional(),agentType:d.z.string().optional(),executionTime:d.z.number().nullable().optional(),resourcesUsed:d.z.object({cpu:d.z.number().nullable().optional(),memory:d.z.number().nullable().optional()}).strict().optional(),oldValue:d.z.any().optional(),newValue:d.z.any().optional(),changes:d.z.object({}).optional(),tags:d.z.array(d.z.string()).optional(),relatedEntityId:d.z.string().optional(),relatedEntityType:d.z.string().optional()}).strict().optional()}).strict(),d.z.object({ok:d.z.boolean()}).strict(),d.z.object({kind:d.z.enum([`feedback`,`content_report`,`user_report`]),subject:d.z.string().min(2).max(120),message:d.z.string().min(10).max(4e3),targetType:d.z.enum([`task`,`comment`,`artifact`,`member`,`project`,`workspace`]).optional(),targetId:d.z.string().min(1).max(160).optional(),reportedMemberId:d.z.string().min(1).max(160).optional(),muteRequested:d.z.boolean().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),taskId:d.z.string().min(1).describe(`Task ID or slug`)}).strict();var jr=d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),description:d.z.string().nullable(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),statusId:d.z.string(),assigneeId:d.z.string().nullable(),creatorId:d.z.string(),position:d.z.number().min(-9007199254740991).max(9007199254740991).int(),priority:d.z.enum([`low`,`medium`,`high`]),dueDate:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),tags:d.z.array(d.z.string()).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),status:d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),description:d.z.string().nullable(),position:d.z.number(),color:d.z.string().nullable(),isActive:d.z.boolean(),isDefault:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string().nullable()}).strict().nullable().optional(),assignee:d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),role:d.z.string()}).strict().nullable().optional(),workUnit:d.z.object({id:d.z.string(),title:d.z.string(),slug:d.z.string(),type:d.z.string().nullable(),priority:d.z.string().nullable(),status:d.z.string().nullable()}).strict().nullable().optional()}).strict();d.z.object({items:d.z.array(jr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Mr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search tasks`),sort:d.z.enum([`createdAt`,`updatedAt`,`title`,`position`,`priority`,`dueDate`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`),columnId:d.z.string().optional(),statusId:d.z.string().optional(),statusIds:d.z.array(d.z.string()).optional().describe(`Comma-separated status IDs`),workUnitId:d.z.string().optional().describe(`Work unit ID`),assigneeId:d.z.string().optional().describe(`Assignee member ID`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),projectId:d.z.string().optional().describe(`Project ID`),tags:d.z.array(d.z.string()).optional().describe(`Comma-separated tags`),statusFilter:d.z.enum([`active`,`all`]).describe(`Status filter`)}).strict(),Nr=d.z.object({title:d.z.string().min(1).max(255).optional().describe(`Task title`),slug:d.z.string().optional().describe(`Task slug`),description:d.z.string().nullable().optional(),workUnitId:d.z.string().nullable().optional(),statusId:d.z.string().min(1).optional(),assigneeId:d.z.string().nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:d.z.string().nullable().optional(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),tags:d.z.array(d.z.string()).nullable().nullable().optional()}).strict(),Pr=d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),size:d.z.number(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(Pr),total:d.z.number()}).strict();var Fr=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}).strict();d.z.object({url:d.z.string(),expiresIn:d.z.number()}).strict();var Ir=d.z.object({key:d.z.string().min(1)}).strict(),Lr=d.z.object({x:d.z.number().min(0).max(1).describe(`Left edge as fraction 0-1`),y:d.z.number().min(0).max(1).describe(`Top edge as fraction 0-1`),width:d.z.number().min(0).max(1).describe(`Width as fraction 0-1`),height:d.z.number().min(0).max(1).describe(`Height as fraction 0-1`)}).strict();d.z.object({action:d.z.union([d.z.string(),d.z.string()]),artifactId:d.z.string().min(1),clip:Lr.optional()}).strict(),d.z.object({action:d.z.union([d.z.string(),d.z.string(),d.z.string()]),artifactId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),statusId:d.z.string().min(1)}).strict();var Rr=d.z.object({taskIds:d.z.array(d.z.string().min(1))}).strict(),zr=d.z.object({id:d.z.string(),taskId:d.z.string(),memberId:d.z.string(),assigneeId:d.z.string().nullable(),content:d.z.string(),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),member:d.z.object({id:d.z.string(),name:d.z.string().nullable(),email:d.z.string()}).strict().nullable(),assignee:d.z.object({id:d.z.string(),name:d.z.string().nullable(),email:d.z.string()}).strict().nullable()}).strict(),Br=d.z.object({assigneeId:d.z.string().nullable().nullable().optional(),content:d.z.string().min(1).max(1e4).describe(`Comment content`),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({items:d.z.array(zr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Vr=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),sort:d.z.enum([`createdAt`,`updatedAt`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),taskId:d.z.string().min(1).describe(`Task ID or slug`),commentId:d.z.string().min(1).describe(`Comment ID`)}).strict();var Hr=d.z.object({assigneeId:d.z.string().nullable().nullable().optional(),content:d.z.string().min(1).max(1e4).optional().describe(`Comment content`),info:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict();d.z.object({mcpServers:d.z.object({})}).strict(),d.z.object({projectId:d.z.string().min(1)}).strict(),d.z.object({id:d.z.string(),projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string(),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),isEnabled:d.z.boolean().nullable(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({projectId:d.z.string(),organizationId:d.z.string(),mcpServerId:d.z.string().min(1),serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({serverName:d.z.string(),isEnabled:d.z.boolean(),disabledTools:d.z.array(d.z.string()).nullable(),disabledResources:d.z.array(d.z.string()).nullable(),serverConfig:d.z.object({}),priority:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1),id:d.z.string().min(1)}).strict(),d.z.object({serverConfigOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledToolsOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),disabledResourcesOverride:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),isEnabled:d.z.boolean().nullable().optional(),priorityOverride:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable().optional(),metadata:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),workUnitId:d.z.string().min(1).describe(`Work unit ID or slug`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`)}).strict(),d.z.object({title:d.z.string().min(1).max(255).describe(`Work unit title`),slug:d.z.string().optional().describe(`Work unit slug`),description:d.z.string().nullable().optional(),projectId:d.z.string().min(1).optional(),parentWorkUnitId:d.z.string().nullable().optional(),type:d.z.enum([`epic`,`feature`,`initiative`]).nullable().optional(),priority:d.z.enum([`low`,`medium`,`high`]).nullable().optional(),statusId:d.z.string().nullable().optional(),status:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).nullable().optional(),ownerId:d.z.string().min(1).optional().describe(`Owner member ID`),estimatedEffort:d.z.number().min(0).max(9007199254740991).int().nullable().optional(),startDate:d.z.string().nullable().optional(),targetDate:d.z.string().nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional()}).strict(),d.z.object({items:d.z.array(Xn),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Ur=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search work units`),sort:d.z.enum([`createdAt`,`updatedAt`,`title`,`priority`,`targetDate`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`),type:d.z.enum([`epic`,`feature`,`initiative`]).optional().describe(`Work unit type`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Work unit priority`),statuses:d.z.array(d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`])).optional().describe(`Comma-separated work unit statuses`),statusId:d.z.string().optional().describe(`Kanban status ID`),excludeStatus:d.z.enum([`planning`,`in_progress`,`blocked`,`completed`,`cancelled`]).optional().describe(`Exclude status`),ownerId:d.z.string().optional().describe(`Owner member ID`),parentWorkUnitId:d.z.string().optional().describe(`Parent work unit ID`)}).strict();d.z.object({progress:d.z.number().describe(`Overall progress percentage (0-100)`),completedTasks:d.z.number().describe(`Number of completed direct tasks`),totalTasks:d.z.number().describe(`Total number of direct tasks`),completedChildWorkUnits:d.z.number().describe(`Number of completed child work units`),totalChildWorkUnits:d.z.number().describe(`Total number of child work units`)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),taskId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`)}).strict();var Wr=d.z.object({title:d.z.string().min(1).max(255).describe(`Task title`),slug:d.z.string().optional().describe(`Task slug`),description:d.z.string().nullable().optional(),projectId:d.z.string().min(1).optional(),workUnitId:d.z.string().nullable().optional(),statusId:d.z.string().min(1).optional(),assigneeId:d.z.string().nullable().optional(),position:d.z.number().min(0).max(9007199254740991).int().optional().describe(`Task position`),priority:d.z.enum([`low`,`medium`,`high`]).optional().describe(`Task priority`),dueDate:d.z.string().nullable().optional(),acceptanceCriteria:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),testCases:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),tags:d.z.array(d.z.string()).nullable().nullable().optional()}).strict(),Gr=d.z.object({columnId:d.z.string().min(1),position:d.z.number().min(0).max(9007199254740991).int()}).strict();d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1)}).strict();var Kr=d.z.object({sessionId:d.z.string().optional(),transportType:d.z.string().optional()}).strict(),qr=d.z.object({id:d.z.string(),environmentId:d.z.string(),key:d.z.string(),value:d.z.string(),description:d.z.string().nullable(),isSecret:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(qr),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1)}).strict(),d.z.object({}),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1),key:d.z.string().min(1)}).strict(),d.z.object({value:d.z.string().min(1),description:d.z.string().optional(),isSecret:d.z.boolean()}).strict(),d.z.object({entries:d.z.array(d.z.object({key:d.z.string().min(1).max(255),value:d.z.string().min(1),description:d.z.string().optional(),isSecret:d.z.boolean()}).strict())}).strict();var Jr=d.z.object({id:d.z.string(),projectId:d.z.string(),name:d.z.string(),key:d.z.string(),type:d.z.string(),description:d.z.string().nullable(),isDefault:d.z.boolean(),permissions:d.z.string(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.array(Jr);var Yr=d.z.object({read:d.z.array(d.z.string()),write:d.z.array(d.z.string())}).strict();d.z.object({name:d.z.string().min(1).max(255),key:d.z.string().min(1).max(255),type:d.z.enum([`development`,`staging`,`production`,`custom`]),description:d.z.string().nullable().optional(),isDefault:d.z.boolean(),permissions:Yr.optional()}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),projectId:d.z.string().min(1).describe(`Project ID or slug`),environmentId:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).max(255).optional(),key:d.z.string().min(1).max(255).optional(),type:d.z.enum([`development`,`staging`,`production`,`custom`]).optional(),description:d.z.string().nullable().optional(),isDefault:d.z.boolean().optional(),permissions:Yr.optional()}).strict(),d.z.object({message:d.z.string()}).strict();var Xr=d.z.object({id:d.z.string(),organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),deviceId:d.z.string().nullable(),daemonId:d.z.string().nullable(),name:d.z.string(),status:d.z.enum([`running`,`completed`,`failed`]),contextData:d.z.string().nullable(),error:d.z.string().nullable(),startedAt:d.z.string(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),Zr=d.z.object({id:d.z.string(),name:d.z.string(),startedAt:d.z.string()}).strict();d.z.object({error:d.z.string(),holder:Zr}).strict(),d.z.object({name:d.z.string().min(1),workUnitId:d.z.string().optional(),taskId:d.z.string().optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),contextData:d.z.string().optional()}).strict(),d.z.object({items:d.z.array(Xr),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var Qr=d.z.object({status:d.z.enum([`running`,`completed`,`failed`]).optional(),deviceId:d.z.string().optional(),daemonId:d.z.string().optional(),limit:d.z.number().min(1).max(100).optional(),offset:d.z.number().min(0).optional()}).strict(),$r=d.z.object({workUnitId:d.z.string().optional(),taskId:d.z.string().optional()}).strict();d.z.object({id:d.z.string().min(1)}).strict(),d.z.object({name:d.z.string().min(1).optional(),contextData:d.z.string().nullable().optional()}).strict(),d.z.object({status:d.z.enum([`completed`,`failed`]),error:d.z.string().optional()}).strict();var ei=d.z.enum([`work-unit`,`task`]),ti=d.z.object({id:d.z.string(),kind:ei,slug:d.z.string(),title:d.z.string(),description:d.z.string().nullable(),status:d.z.string(),priority:d.z.string().nullable(),createdAt:d.z.string(),payload:d.z.object({})}).strict();d.z.object({items:d.z.array(ti)}).strict();var ni=d.z.object({jobKind:ei,jobId:d.z.string().min(1),format:d.z.string()}).strict();d.z.object({claimed:d.z.boolean(),workflowId:d.z.string().optional(),job:ti.nullable().optional(),holder:d.z.object({id:d.z.string(),name:d.z.string(),deviceId:d.z.string().nullable(),startedAt:d.z.string()}).strict().optional()}).strict(),d.z.object({jobKind:ei,jobId:d.z.string().min(1),name:d.z.string().min(1),deviceId:d.z.string().optional()}).strict(),d.z.object({released:d.z.boolean(),workflowId:d.z.string(),status:d.z.enum([`completed`,`failed`]),job:ti.nullable()}).strict(),d.z.object({workflowId:d.z.string().min(1),status:d.z.enum([`completed`,`failed`]),error:d.z.string().optional()}).strict();var ri=d.z.object({key:d.z.string(),name:d.z.string(),color:d.z.string(),position:d.z.number()}).strict(),ii=d.z.object({id:d.z.string(),name:d.z.string(),description:d.z.string(),icon:d.z.string(),color:d.z.string(),isBuiltIn:d.z.boolean(),statusCount:d.z.number(),starterTaskCount:d.z.number(),statuses:d.z.array(ri)}).strict();d.z.object({templates:d.z.array(ii)}).strict(),d.z.object({organizationId:d.z.string().min(1).describe(`Organization ID`),id:d.z.string().min(1).describe(`Project ID or slug`)}).strict(),d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),key:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),ownerId:d.z.string(),path:d.z.string().nullable(),templateId:d.z.string().nullable(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),color:d.z.string().nullable(),icon:d.z.string().nullable(),isArchived:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({error:d.z.string(),message:d.z.string(),feature:d.z.enum([`seats`,`projects`,`apiKeys`,`mcpServers`]),plan:d.z.string(),limit:d.z.number(),used:d.z.number(),upgradeRequired:d.z.boolean()}).strict();var ai=d.z.object({name:d.z.string().min(1).max(255).describe(`Project name`),slug:d.z.string().optional().describe(`Project slug`),description:d.z.string().nullable().optional(),organizationId:d.z.string().optional(),path:d.z.string().nullable().optional(),templateId:d.z.string().nullable().optional(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),color:d.z.string().nullable().optional(),icon:d.z.string().nullable().optional()}).strict(),oi=d.z.object({id:d.z.string(),title:d.z.string(),value:d.z.number(),change:d.z.string(),trend:d.z.enum([`up`,`down`,`neutral`]),period:d.z.string()}).strict();d.z.object({activeProjects:d.z.number(),tasksInProgress:d.z.number(),completedTasks:d.z.number(),blockedTasks:d.z.number(),stats:d.z.array(oi)}).strict();var si=d.z.object({period:d.z.enum([`7`,`30`,`90`])}).strict();d.z.object({items:d.z.array(Qn),total:d.z.number(),limit:d.z.number().optional(),offset:d.z.number().optional()}).strict();var ci=d.z.object({id:d.z.string(),name:d.z.string(),email:d.z.string(),role:d.z.string()}).strict().nullable(),li=d.z.object({id:d.z.string(),name:d.z.string(),slug:d.z.string(),key:d.z.string(),description:d.z.string().nullable(),organizationId:d.z.string(),path:d.z.string().nullable(),templateId:d.z.string().nullable(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable(),color:d.z.string().nullable(),icon:d.z.string().nullable(),isArchived:d.z.boolean(),createdAt:d.z.string(),updatedAt:d.z.string(),owner:ci}).strict();d.z.object({items:d.z.array(li),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var ui=d.z.object({limit:d.z.number().min(1).max(100).describe(`Max results`),offset:d.z.number().min(0).describe(`Result offset`),search:d.z.string().optional().describe(`Search projects`),sort:d.z.enum([`createdAt`,`updatedAt`,`name`]).describe(`Sort field`),order:d.z.enum([`asc`,`desc`]).describe(`Sort order`)}).strict(),di=d.z.object({name:d.z.string().min(1).max(255).optional().describe(`Project name`),slug:d.z.string().optional().describe(`Project slug`),description:d.z.string().nullable().optional(),organizationId:d.z.string().optional(),path:d.z.string().nullable().optional(),templateId:d.z.string().nullable().optional(),hooks:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),devInfo:d.z.union([d.z.union([d.z.string(),d.z.number(),d.z.boolean(),d.z.any()]),d.z.object({}),d.z.array(d.z.any())]).nullable().optional(),color:d.z.string().nullable().optional(),icon:d.z.string().nullable().optional(),isArchived:d.z.boolean().optional().describe(`Whether project is archived`)}).strict(),fi=d.z.object({id:d.z.string(),key:d.z.string(),name:d.z.string(),status:d.z.enum([`pending`,`uploaded`]),size:d.z.number().nullable(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),labels:d.z.array(d.z.string()).nullable().optional(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict();d.z.object({items:d.z.array(fi),total:d.z.number()}).strict(),d.z.object({url:d.z.string(),expiresIn:d.z.number()}).strict();var pi=d.z.object({key:d.z.string().min(1)}).strict();d.z.object({url:d.z.string(),key:d.z.string(),artifact:fi}).strict();var mi=d.z.object({filename:d.z.string().min(1),contentType:d.z.string().optional()}).strict();d.z.object({artifact:fi}).strict(),d.z.object({key:d.z.string().min(1)}).strict(),d.z.object({items:d.z.array(fi)}).strict();var hi=d.z.object({key:d.z.string().min(1),name:d.z.string().min(1),status:d.z.enum([`pending`,`uploaded`]),size:d.z.number().nullable().optional(),contentType:d.z.string().optional(),isPreviewable:d.z.boolean(),labels:d.z.array(d.z.string()).nullable().optional()}).strict();d.z.object({items:d.z.array(hi)}).strict();var gi=d.z.object({key:d.z.string().min(1)}).strict();d.z.object({balanceCents:d.z.number(),monthlyIncludedMinutes:d.z.number(),usedIncludedMinutes:d.z.number(),includedMinutesRemaining:d.z.number(),autoRechargeEnabled:d.z.boolean(),autoRechargeThresholdCents:d.z.number(),autoRechargeAmountCents:d.z.number(),overdraftLimitCents:d.z.number(),includedMinutesResetAt:d.z.string().nullable()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict(),d.z.object({checkoutUrl:d.z.string().url(),sessionId:d.z.string()}).strict(),d.z.object({amountCents:d.z.number().min(500).max(1e5),successUrl:d.z.string().url(),cancelUrl:d.z.string().url()}).strict(),d.z.object({enabled:d.z.boolean(),thresholdCents:d.z.number().min(0).max(1e5).optional(),amountCents:d.z.number().min(500).max(1e5).optional()}).strict();var _i=d.z.object({id:d.z.string(),type:d.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]),amountCents:d.z.number(),balanceAfterCents:d.z.number(),usageMinutes:d.z.number().nullable(),pricePerMinuteCents:d.z.number().nullable(),referenceType:d.z.string().nullable(),referenceId:d.z.string().nullable(),createdAt:d.z.string()}).strict();d.z.object({items:d.z.array(_i),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict();var vi=d.z.object({limit:d.z.number().min(1).max(100).optional(),offset:d.z.number().min(0).optional(),type:d.z.enum([`top_up`,`auto_recharge`,`usage`,`refund`,`subscription_credit`,`adjustment`]).optional(),startDate:d.z.string().optional(),endDate:d.z.string().optional()}).strict();d.z.object({periodStart:d.z.string(),periodEnd:d.z.string(),totalMinutes:d.z.number(),includedMinutesUsed:d.z.number(),paidMinutesUsed:d.z.number(),totalChargedCents:d.z.number(),sandboxCount:d.z.number()}).strict();var yi=d.z.object({startDate:d.z.string().min(1),endDate:d.z.string().min(1)}).strict(),bi=d.z.object({planKey:d.z.string(),name:d.z.string(),pricePerSeatCents:d.z.number(),billingInterval:d.z.enum([`month`,`year`]),includedMinutesPerSeat:d.z.number(),stripePriceId:d.z.string().nullable()}).strict();d.z.object({plans:d.z.array(bi)}).strict(),d.z.object({hasSubscription:d.z.boolean(),planKey:d.z.string().nullable(),planName:d.z.string().nullable(),seatCount:d.z.number(),memberCount:d.z.number(),currentPeriodStart:d.z.string().nullable(),currentPeriodEnd:d.z.string().nullable(),cancelAtPeriodEnd:d.z.boolean(),stripeSubscriptionId:d.z.string().nullable(),includedMinutes:d.z.number(),usedMinutes:d.z.number(),remainingMinutes:d.z.number()}).strict(),d.z.object({redirectUrl:d.z.string().nullable(),sessionId:d.z.string().nullable()}).strict(),d.z.object({planKey:d.z.string().min(1),discountCode:d.z.string().optional()}).strict(),d.z.object({currentSeats:d.z.number(),newSeats:d.z.number(),amountDue:d.z.number().nullable(),subtotal:d.z.number().nullable(),total:d.z.number().nullable(),prorationDate:d.z.number().nullable()}).strict();var xi=d.z.object({seatCount:d.z.number().min(1)}).strict();d.z.object({success:d.z.boolean(),newSeatCount:d.z.number(),includedMinutes:d.z.number()}).strict(),d.z.object({seatCount:d.z.number().min(1)}).strict(),d.z.object({success:d.z.boolean(),cancelAtPeriodEnd:d.z.boolean(),periodEnd:d.z.string().nullable()}).strict(),d.z.object({success:d.z.boolean(),message:d.z.string()}).strict(),d.z.object({plan:d.z.string(),projects:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),apiKeys:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),mcpServers:d.z.object({used:d.z.number(),limit:d.z.number()}).strict(),seats:d.z.object({used:d.z.number(),limit:d.z.number()}).strict()}).strict();var Si=d.z.object({id:d.z.string(),agentSessionId:d.z.string(),workUnitId:d.z.string().nullable(),taskId:d.z.string().nullable(),projectId:d.z.string(),organizationId:d.z.string(),sandboxInstanceId:d.z.string().nullable(),containerId:d.z.string().nullable(),processId:d.z.string().nullable(),status:d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),autoTerminate:d.z.boolean(),timeoutMinutes:d.z.number().min(-9007199254740991).max(9007199254740991).int(),command:d.z.string(),workingDirectory:d.z.string().nullable(),exitCode:d.z.number().min(-9007199254740991).max(9007199254740991).int().nullable(),previewUrl:d.z.string().nullable(),errorMessage:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string(),agentSession:d.z.object({id:d.z.string(),status:d.z.string(),currentAgentType:d.z.string().nullable()}).strict().nullable().optional(),workUnit:d.z.object({id:d.z.string(),title:d.z.string(),status:d.z.string()}).strict().nullable().optional(),project:d.z.object({id:d.z.string(),name:d.z.string()}).strict().nullable().optional()}).strict();d.z.object({items:d.z.array(Si),total:d.z.number(),limit:d.z.number(),offset:d.z.number()}).strict(),d.z.object({organizationId:d.z.string().min(1)}).strict();var Ci=d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0),status:d.z.union([d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),d.z.array(d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]))]).optional(),projectId:d.z.string().optional(),workUnitId:d.z.string().optional(),agentSessionId:d.z.string().optional()}).strict();d.z.object({id:d.z.string(),status:d.z.enum([`pending`,`starting`,`running`,`completed`,`failed`,`stopped`]),sandboxInstanceId:d.z.string().nullable(),containerId:d.z.string().nullable(),previewUrl:d.z.string().nullable(),exitCode:d.z.number().nullable(),errorMessage:d.z.string().nullable(),startedAt:d.z.string().nullable(),completedAt:d.z.string().nullable(),createdAt:d.z.string(),updatedAt:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1)}).strict(),d.z.object({message:d.z.string(),sandboxId:d.z.string(),status:d.z.string()}).strict(),d.z.object({message:d.z.string(),port:d.z.number(),url:d.z.string().optional()}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1),port:d.z.number().min(1024).max(65535).int()}).strict(),d.z.object({message:d.z.string(),port:d.z.number()}).strict();var wi=d.z.object({port:d.z.number(),url:d.z.string().optional()}).strict();d.z.object({ports:d.z.array(wi)}).strict(),d.z.object({organizationId:d.z.string().min(1),sandboxId:d.z.string().min(1)}).strict(),d.z.object({organizationId:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({received:d.z.boolean(),duplicate:d.z.boolean().optional(),ignored:d.z.boolean().optional()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({priceKey:d.z.string().min(1).describe(`Stripe price lookup key`),mode:d.z.enum([`payment`,`subscription`]).describe(`Checkout mode`),discountCode:d.z.string().optional().describe(`Optional discount/promotion code`)}).strict(),d.z.object({redirectUrl:d.z.string().url().describe(`URL to redirect user to Stripe checkout`)}).strict(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({sessionId:d.z.string().min(1),organizationId:d.z.string()}),d.z.object({id:d.z.string().describe(`Session ID`),status:d.z.string().nullable().describe(`Session status`),payment_status:d.z.string().describe(`Payment status`),invoice:d.z.object({}).nullable().describe(`Invoice details`)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({url:d.z.string().url().describe(`URL to Stripe billing portal`)}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({id:d.z.string().describe(`Customer ID`),customerId:d.z.string().nullable().describe(`Stripe customer ID (null for free tier without payment info)`),organizationId:d.z.string().describe(`Organization ID`),email:d.z.string().nullable().describe(`Customer email`),name:d.z.string().nullable().describe(`Customer name`),subscriptionId:d.z.string().nullable().describe(`Active subscription ID`),subscriptionStatus:d.z.string().nullable().describe(`Current subscription status`),planKey:d.z.enum([`free`,`basic_monthly`,`basic_yearly`]).describe(`Current subscription plan`),seatCount:d.z.number().describe(`Number of seats in subscription`),currentPeriodEnd:d.z.string().nullable().describe(`End date of current billing period (renewal date)`),cancelAtPeriodEnd:d.z.boolean().describe(`Whether subscription is scheduled to cancel at period end`),createdAt:d.z.string().describe(`Customer creation date`),updatedAt:d.z.string().describe(`Customer last update date`)}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({received:d.z.boolean(),duplicate:d.z.boolean().optional(),ignored:d.z.boolean().optional()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...Wn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...H.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({version:d.z.string()}),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({...V.shape}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...Kn.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),serverName:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...qn.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ti=d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),Ei=d.z.object({...Ur.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var Di=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),workUnitId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict();var Oi=d.z.object({organizationId:d.z.string()});d.z.object({...$n.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...tr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...rr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...ir.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string(),type:d.z.string()}),d.z.object({...sr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string(),type:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),profileId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),provider:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...dr.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),owner:d.z.string(),repo:d.z.string()}),d.z.object({...pr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({...gr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1),deviceId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),deviceId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...gr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceAgentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1),agentTypeId:d.z.string().min(1)}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),deviceId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict();var ki=d.z.object({organizationId:d.z.string().min(1)}),Ai=d.z.object({...br.shape});d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.object({...Cr.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string(),userId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.object({...Tr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),teamId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...Dr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...kr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({stats:d.z.array(d.z.object({activityType:d.z.string(),count:d.z.number()}).strict()),total:d.z.number()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({limit:d.z.number().min(1).max(100),offset:d.z.number().min(0)}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.array(Ar),d.z.array(Or),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),activityId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var ji=d.z.object({organizationId:d.z.string()}),Mi=d.z.object({...Mr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({period:d.z.enum([`7d`,`30d`,`3m`,`12m`])}),d.z.object({items:d.z.array(d.z.object({period:d.z.string(),aiCompleted:d.z.number(),humanCompleted:d.z.number(),totalTasks:d.z.number(),totalCost:d.z.number()}).strict()),summary:d.z.object({totalCost:d.z.number(),totalTasks:d.z.number(),monthlyGrowth:d.z.number()}).strict()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({...Fr.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.object({...Ir.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),statusId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.void(),d.z.object({error:d.z.string()}).strict();var Ni=d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),Pi=d.z.object({...Mr.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict();var Fi=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ii=d.z.object({organizationId:d.z.string(),projectId:d.z.string(),taskId:d.z.string()});d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Li=d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),Ri=d.z.object({...Vr.shape});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var zi=d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),taskId:d.z.string(),commentId:d.z.string()}),d.z.void(),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...Kr.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string(),key:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),projectId:d.z.string().min(1)}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1),projectId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),environmentId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...Qr.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...$r.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.object({...ni.shape}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),projectId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict();var Bi=d.z.object({organizationId:d.z.string()}),Vi=d.z.object({...ui.shape});d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string().min(1)}),d.z.object({...si.shape}),d.z.object({error:d.z.string()}).strict();var Hi=d.z.object({organizationId:d.z.string(),id:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Ui=d.z.object({organizationId:d.z.string(),id:d.z.string()});d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...gi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...pi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.object({...mi.shape}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),id:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...vi.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...yi.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...xi.shape}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.void(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({...Ci.shape}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string()}),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string(),port:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string(),port:d.z.string()}),d.z.void(),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict(),d.z.object({organizationId:d.z.string(),sandboxId:d.z.string()}),d.z.object({message:d.z.string()}).strict(),d.z.object({error:d.z.string()}).strict();var Wi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/members`,{method:`GET`,params:e,query:t})).data,Gi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/members/agents`,{method:`POST`,params:e,body:t})).data,Ki=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`GET`,params:e,query:t})).data,qi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments`,{method:`POST`,params:e,body:t})).data,Ji=async e=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`GET`,params:e})).data,Yi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`PATCH`,params:e,body:t})).data,Xi=async e=>(await P.request(`/api/v1/organizations/{organizationId}/tasks/{taskId}/comments/{commentId}`,{method:`DELETE`,params:e})).data,Zi=async(e,t)=>(await P.request(`/api/v1/organizations/{organizationId}/task-statuses`,{method:`GET`,params:e,query:t})).data,Qi=`AGIFLOW_ORGANIZATION_ID`,$i=`AGIFLOW_PROJECT_ID`,ea=`AGIFLOW_TASK_ID`,ta=`AGIFLOW_WORK_UNIT_ID`,na=d.z.object({format:d.z.literal(`json`).default(`json`).describe(`Output format`)}),ra=d.z.object({tasksJson:d.z.string().min(1).describe(`Array of task objects or { "tasks": [...] }`)}),ia=d.z.object({workUnitsJson:d.z.string().min(1).describe(`Array of work unit objects or { "workUnits": [...] }`)}),aa=d.z.object({status:d.z.string().optional().describe(`Task status name, key, or ID`),assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:d.z.string().optional().describe(`Work unit ID`),acceptanceCriteriaJson:d.z.string().optional().describe(`Acceptance criteria JSON`),testCasesJson:d.z.string().optional().describe(`Test cases JSON`),devInfoJson:d.z.string().optional().describe(`Development info JSON`)}),oa=d.z.object({status:d.z.string().optional().describe(`Comma-separated status names, keys, or IDs`),assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),workUnit:d.z.string().optional().describe(`Work unit ID`)}),sa=d.z.object({devInfoJson:d.z.string().optional().describe(`Development info JSON`),testCasesJson:d.z.string().optional().describe(`Test cases JSON`)}),ca=d.z.object({assignee:d.z.string().optional().describe(`Assignee member ID, name, or email`),infoJson:d.z.string().optional().describe(`Comment info JSON`)}),U=()=>({name:`org`,source:`organizationId`,envVar:Qi}),W=(e=`projectId`)=>({name:`project`,source:e,valueName:`projectIdOrSlug`,envVar:$i}),G=()=>({name:`task`,source:`taskId`,valueName:`taskIdOrSlug`,envVar:ea}),K=()=>({name:`workUnit`,source:`workUnitId`,flag:`--work-unit`,valueName:`workUnitIdOrSlug`,envVar:ta}),q=(...e)=>e,J=(e=[],t={})=>[{name:`limit`,required:!1,defaultValue:t.limit??`20`},{name:`offset`,required:!1,defaultValue:t.offset??`0`},{name:`search`,required:!1},{name:`sort`,required:!1,defaultValue:t.sort??`createdAt`},{name:`order`,required:!1,defaultValue:t.order??`desc`},...e.map(e=>({...e,required:e.required??!1}))],Y=(e,t)=>mn.for(e).fromSchemaGroups([...t,{schema:na,options:[{name:`format`,required:!1,defaultValue:`json`}]}]),X=e=>{let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t},la=(e,t)=>{let n=e&&typeof e==`object`&&t in e?e[t]:e;if(!Array.isArray(n))throw Error(`Expected ${t} JSON to be an array or an object containing ${t}.`);return n.map((e,n)=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t}[${n}] must be an object.`);return e})},Z=class extends F{async resolveOrgOption(e){return this.resolveOrganizationId(e.org)}async resolveProjectOption(e){return this.resolveProjectIdOption(e.project)}async resolveProjectRoute(e){let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e);return{org:t,projectId:await this.resolveProjectId(t,n)}}async resolveTaskOption(e){return this.resolveTaskIdOption(e.task)}async resolveWorkUnitOption(e){return this.resolveWorkUnitIdOption(e.workUnit)}async resolveProjectId(e,t){return(await I({organizationId:e,id:t})).id}async resolveStatusId(e,t){let n=(await Zi({organizationId:e})).items??[],r=t.toLowerCase(),i=n.find(e=>e.id===t||e.key.toLowerCase()===r||e.name.toLowerCase()===r);if(!i)throw Error(`Task status "${t}" was not found.`);return i.id}async resolveMemberId(e,t){if(!t)return;let n=await Wi({organizationId:e},{limit:100,offset:0,sortBy:`createdAt`,sortDirection:`desc`}),r=t.toLowerCase(),i=n.members.find(e=>{let n=e.member?.id,i=e.user?.name?.toLowerCase(),a=e.user?.email?.toLowerCase();return n===t||i===r||a===r});if(!i?.member?.id)throw Error(`Member "${t}" was not found.`);return i.member.id}baseListOptions(e){return X({limit:this.parseNumber(e.limit,20),offset:this.parseNumber(e.offset,0),sort:e.sort,order:e.order,search:e.search})}},ua=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`project`).description(`Project JSON commands`);Y(t.command(`create`).description(`Create a project`),q({schema:Bi,options:[U()]},{schema:ai,options:[{name:`name`},{name:`description`},{name:`slug`},{name:`path`},{name:`color`},{name:`icon`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List projects`),q({schema:Bi,options:[U()]},{schema:Vi,options:J()})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a project by ID or slug`),q({schema:Ui,options:[U(),W(`projectIdOrSlug`)]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a project`),q({schema:Ui,options:[U(),W(`projectIdOrSlug`)]},{schema:di,options:[{name:`name`},{name:`description`},{name:`slug`},{name:`path`},{name:`color`},{name:`icon`},{name:`archived`,source:`isArchived`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a project`),q({schema:Ui,options:[U(),W(`projectIdOrSlug`)]})).action(e=>this.delete(e)),Y(t.command(`status`).description(`Project status commands`).command(`list`).description(`List project statuses`),q({schema:Hi,options:[U(),W(`id`)]})).action(e=>this.statusList(e))}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=X({name:e.name,description:e.description,slug:e.slug,path:e.path,color:e.color,icon:e.icon}),r=await Ot({organizationId:t},n);this.printJson({project:r})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=this.baseListOptions(e),r=await Dt({organizationId:t},n);this.printJson({projects:r.items,total:r.total,limit:r.limit,offset:r.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await I({organizationId:await this.resolveOrgOption(e),id:await this.resolveProjectOption(e)});this.printJson({project:t})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await this.resolveProjectId(t,n),i=X({name:e.name,description:e.description,slug:e.slug,path:e.path,color:e.color,icon:e.icon,isArchived:e.archived===!0?!0:void 0}),a=await At({organizationId:t,id:r},i);this.printJson({project:a})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await this.resolveProjectId(t,n);await jt({organizationId:t,id:r}),this.printJson({deleted:!0,project:{id:r}})})}async statusList(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`project commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveProjectOption(e),r=await kt({organizationId:t,id:await this.resolveProjectId(t,n)});this.printJson({statuses:r.items,total:r.total})})}};ua=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ua);var da=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task`).description(`Task JSON commands`),n=[U(),W()],r=[{name:`title`},{name:`description`},{name:`priority`},{name:`position`},{name:`dueDate`,flag:`--due-date`},{name:`tags`}],i=[{name:`status`},{name:`assignee`},{name:`workUnit`,flag:`--work-unit`},{name:`acceptanceCriteriaJson`,flag:`--acceptance-criteria-json`},{name:`testCasesJson`,flag:`--test-cases-json`},{name:`devInfoJson`,flag:`--dev-info-json`}];Y(t.command(`create`).description(`Create a task`),q({schema:Ni,options:n},{schema:Wr,options:r},{schema:aa,options:i})).action(e=>this.create(e)),Y(t.command(`batch-create`).description(`Create multiple tasks`),q({schema:Ni,options:n},{schema:ra,options:[{name:`tasksJson`,flag:`--tasks-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project tasks`),q({schema:Ni,options:n},{schema:Pi,options:J([{name:`statusFilter`,flag:`--status-filter`},{name:`priority`},{name:`tags`}])},{schema:oa,options:[{name:`status`},{name:`assignee`},{name:`workUnit`,flag:`--work-unit`}]})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a task by ID or slug`),q({schema:Fi,options:[...n,G()]})).action(e=>this.get(e)),Y(t.command(`active`).description(`List active organization tasks`),q({schema:ji,options:[U()]},{schema:Mi,options:J([{name:`project`,source:`projectId`},{name:`priority`},{name:`assigneeId`,flag:`--assignee-id`}])})).action(e=>this.active(e)),Y(t.command(`update`).description(`Update a task`),q({schema:Fi,options:[...n,G()]},{schema:Nr,options:r},{schema:aa,options:i})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task`),q({schema:Fi,options:[...n,G()]})).action(e=>this.delete(e)),Y(t.command(`reorder`).description(`Reorder tasks within a status`),q({schema:ji,options:[U()]},{schema:d.z.object({status:d.z.string().min(1).describe(`Status name, key, or ID`)}),options:[{name:`status`}]},{schema:Rr,options:[{name:`taskIds`,flag:`--task-ids`,parse:`csv`}]})).action(e=>this.reorder(e)),Y(t.command(`move`).description(`Move a task to a different column/position`),q({schema:Ii,options:[...n,G()]},{schema:Gr,options:[{name:`column`,source:`columnId`},{name:`position`}]})).action(e=>this.move(e)),Y(t.command(`status`).description(`Task status commands`).command(`list`).description(`List available task statuses`),q({schema:Oi,options:[U()]})).action(e=>this.statusList(e))}async buildTaskPayload(e){let t=typeof e.status==`string`?e.status:void 0,n=typeof e.assignee==`string`?e.assignee:void 0,r=String(e.org),i=t?await this.resolveStatusId(r,t):void 0,a=await this.resolveMemberId(r,n);return X({title:e.title,description:e.description,statusId:i,priority:e.priority,position:typeof e.position==`string`?this.parseNumber(e.position,0):e.position,dueDate:e.dueDate,tags:this.parseCsv(typeof e.tags==`string`?e.tags:void 0),assigneeId:a,workUnitId:e.workUnit??e.workUnitId,acceptanceCriteria:this.parseJsonFlag(typeof e.acceptanceCriteriaJson==`string`?e.acceptanceCriteriaJson:void 0,`--acceptance-criteria-json`),testCases:this.parseJsonFlag(typeof e.testCasesJson==`string`?e.testCasesJson:void 0,`--test-cases-json`),devInfo:this.parseJsonFlag(typeof e.devInfoJson==`string`?e.devInfoJson:void 0,`--dev-info-json`)})}async create(e){await this.runJsonOnly(async()=>{if(this.requireJsonFormat(e.format,`task commands`),await this.setupClient(),!e.title)throw Error(`--title is required.`);let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Ut({organizationId:t,projectId:n},await this.buildTaskPayload({...e,org:t}));this.printJson({task:r})})}async batchCreate(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=la(this.parseJsonFlag(e.tasksJson,`--tasks-json`),`tasks`),i=[];for(let e of r){let r=await Ut({organizationId:t,projectId:n},await this.buildTaskPayload({...e,org:t}));i.push(r)}this.printJson({tasks:i,total:i.length})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=this.parseCsv(e.status),i=r?await Promise.all(r.map(e=>this.resolveStatusId(t,e))):void 0,a=await this.resolveMemberId(t,e.assignee),o=X({...this.baseListOptions(e),statusFilter:e.statusFilter,columnId:i?.length===1?i[0]:void 0,statusIds:i,workUnitId:e.workUnit,assigneeId:a,priority:e.priority,tags:this.parseCsv(e.tags)}),s=await Ht({organizationId:t,projectId:n},o);this.printJson({tasks:s.items,total:s.total,limit:s.limit,offset:s.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Wt({organizationId:t,projectId:n,taskId:await this.resolveTaskOption(e)});this.printJson({task:r})})}async active(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=X({...this.baseListOptions(e),statusFilter:`active`,priority:e.priority,assigneeId:e.assigneeId});if(e.project){let r=await Ht({organizationId:t,projectId:await this.resolveProjectId(t,e.project)},n);this.printJson({tasks:r.items,total:r.total,limit:r.limit,offset:r.offset});return}let r=await Rt({organizationId:t},n);this.printJson({tasks:r.items,total:r.total,limit:r.limit,offset:r.offset})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Gt({organizationId:t,projectId:n,taskId:await this.resolveTaskOption(e)},await this.buildTaskPayload({...e,org:t}));this.printJson({task:r})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveTaskOption(e);await Kt({organizationId:t,projectId:n,taskId:r}),this.printJson({deleted:!0,task:{id:r}})})}async reorder(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveStatusId(t,e.status),r=this.parseCsv(e.taskIds);if(!r?.length)throw Error(`--task-ids must contain at least one task ID.`);await Vt({organizationId:t,statusId:n},{taskIds:r}),this.printJson({reordered:!0,statusId:n,taskIds:r})})}async move(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveTaskOption(e);if(!e.column)throw Error(`--column is required.`);let i={columnId:e.column,position:this.parseNumber(e.position,0)},a=await qt({organizationId:t,projectId:n,taskId:r},i);this.printJson({task:a})})}async statusList(e){await this.runJsonOnly(async()=>{await this.setupClient();let t=await Zi({organizationId:await this.resolveOrgOption(e)});if(e.format===`table`){let e=t.items??[],n=[`id`,`key`,`name`],r=e.map(e=>[e.id,e.key,e.name]);console.log(n.join(` `));for(let e of r)console.log(e.join(` `));return}this.printJson({statuses:t.items,total:t.total})})}};da=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],da);var fa=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`work-unit`).description(`Work unit JSON commands`),n=[U(),W()],r=[{name:`title`},{name:`description`},{name:`type`},{name:`priority`},{name:`status`},{name:`ownerId`,flag:`--owner-id`},{name:`parentWorkUnitId`,flag:`--parent-work-unit-id`},{name:`estimatedEffort`,flag:`--estimated-effort`},{name:`startDate`,flag:`--start-date`},{name:`targetDate`,flag:`--target-date`}];Y(t.command(`batch-create`).description(`Create multiple work units`),q({schema:Ti,options:n},{schema:ia,options:[{name:`workUnitsJson`,flag:`--work-units-json`}]})).action(e=>this.batchCreate(e)),Y(t.command(`list`).description(`List project work units`),q({schema:Ti,options:n},{schema:Ei,options:J([{name:`status`,source:`statuses`},{name:`excludeStatus`,flag:`--exclude-status`},{name:`type`},{name:`priority`},{name:`ownerId`,flag:`--owner-id`},{name:`parentWorkUnitId`,flag:`--parent-work-unit-id`}])})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a work unit by ID or slug`),q({schema:Di,options:[...n,K()]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a work unit`),q({schema:Di,options:[...n,K()]},{schema:Zn,options:r},{schema:sa,options:[{name:`devInfoJson`,flag:`--dev-info-json`},{name:`testCasesJson`,flag:`--test-cases-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a work unit`),q({schema:Di,options:[...n,K()]})).action(e=>this.delete(e)),Y(t.command(`progress`).description(`Get work unit progress`),q({schema:Di,options:[...n,K()]})).action(e=>this.progress(e))}buildPayload(e){return X({title:e.title,description:e.description,type:e.type,priority:e.priority,status:e.status,ownerId:e.ownerId,parentWorkUnitId:e.parentWorkUnitId,estimatedEffort:typeof e.estimatedEffort==`string`?this.parseNumber(e.estimatedEffort,0):e.estimatedEffort,startDate:e.startDate,targetDate:e.targetDate,devInfo:this.parseJsonFlag(typeof e.devInfoJson==`string`?e.devInfoJson:void 0,`--dev-info-json`),testCases:this.parseJsonFlag(typeof e.testCasesJson==`string`?e.testCasesJson:void 0,`--test-cases-json`)})}async batchCreate(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=la(this.parseJsonFlag(e.workUnitsJson,`--work-units-json`),`workUnits`),i=[];for(let e of r){let r=await Yt({organizationId:t,projectId:n},this.buildPayload(e)),a=Array.isArray(e.taskIds)?e.taskIds.filter(e=>typeof e==`string`):[];for(let e of a)await Gt({organizationId:t,projectId:n,taskId:e},{workUnitId:r.id});i.push(r)}this.printJson({workUnits:i,total:i.length})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=X({...this.baseListOptions(e),statuses:this.parseCsv(e.status),excludeStatus:e.excludeStatus,type:e.type,priority:e.priority,ownerId:e.ownerId,parentWorkUnitId:e.parentWorkUnitId}),i=await Jt({organizationId:t,projectId:n},r);this.printJson({workUnits:i.items,total:i.total,limit:i.limit,offset:i.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Xt({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({workUnit:r})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await Zt({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)},this.buildPayload(e));this.printJson({workUnit:r})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await this.resolveWorkUnitOption(e);await Qt({organizationId:t,projectId:n,workUnitId:r}),this.printJson({deleted:!0,workUnit:{id:r}})})}async progress(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`work-unit commands`),await this.setupClient();let{org:t,projectId:n}=await this.resolveProjectRoute(e),r=await $t({organizationId:t,projectId:n,workUnitId:await this.resolveWorkUnitOption(e)});this.printJson({progress:r})})}};fa=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],fa);var pa=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`member`).description(`Agent member JSON commands`);Y(t.command(`list`).description(`List agent members`),q({schema:ki,options:[U()]},{schema:Ai,options:[{name:`limit`,required:!1,defaultValue:`100`},{name:`offset`,required:!1,defaultValue:`0`}]})).action(e=>this.list(e)),Y(t.command(`create`).description(`Create an agent member`),q({schema:ki,options:[U()]},{schema:xr,options:[{name:`email`},{name:`name`},{name:`description`},{name:`prompt`}]})).action(e=>this.create(e))}normalizeMembers(e){return e.filter(e=>e.member?.role===`agent`)}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`member commands`),await this.setupClient();let t=await Wi({organizationId:await this.resolveOrgOption(e)},{limit:this.parseNumber(e.limit,100),offset:this.parseNumber(e.offset,0),sortBy:`createdAt`,sortDirection:`desc`,filterField:`role`,filterOperator:`eq`,filterValue:`agent`});this.printJson({members:this.normalizeMembers(t.members),total:t.total,limit:t.limit,offset:t.offset})})}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`member commands`),await this.setupClient();let t=await Gi({organizationId:await this.resolveOrgOption(e)},{agents:[X({email:e.email,name:e.name,description:e.description,prompt:e.prompt})]});this.printJson({member:t.created[0]??null,errors:t.errors??[]})})}};pa=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],pa);var ma=class extends Z{constructor(e,t){super(e,t)}register(e){let t=e.command(`task-comment`).description(`Task comment JSON commands`),n=[U(),G()];Y(t.command(`create`).description(`Create a task comment`),q({schema:Li,options:n},{schema:Br,options:[{name:`content`}]},{schema:ca,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.create(e)),Y(t.command(`list`).description(`List task comments`),q({schema:Li,options:n},{schema:Ri,options:[{name:`limit`,required:!1,defaultValue:`20`},{name:`offset`,required:!1,defaultValue:`0`},{name:`sort`,required:!1,defaultValue:`createdAt`},{name:`order`,required:!1,defaultValue:`asc`}]})).action(e=>this.list(e)),Y(t.command(`get`).description(`Get a task comment`),q({schema:zi,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.get(e)),Y(t.command(`update`).description(`Update a task comment`),q({schema:zi,options:[...n,{name:`comment`,source:`commentId`}]},{schema:Hr,options:[{name:`content`}]},{schema:ca,options:[{name:`assignee`},{name:`infoJson`,flag:`--info-json`}]})).action(e=>this.update(e)),Y(t.command(`delete`).description(`Delete a task comment`),q({schema:zi,options:[...n,{name:`comment`,source:`commentId`}]})).action(e=>this.delete(e))}async buildPayload(e){let t=await this.resolveOrgOption(e);return X({content:e.content,assigneeId:await this.resolveMemberId(t,e.assignee),info:this.parseJsonFlag(e.infoJson,`--info-json`)})}async create(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await qi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e)},await this.buildPayload(e));this.printJson({comment:t})})}async list(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await this.resolveOrgOption(e),n=await this.resolveTaskOption(e),r=this.baseListOptions(e),i=await Ki({organizationId:t,taskId:n},r);this.printJson({comments:i.items,total:i.total,limit:i.limit,offset:i.offset})})}async get(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Ji({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment});this.printJson({comment:t})})}async update(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient();let t=await Yi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment},await this.buildPayload(e));this.printJson({comment:t})})}async delete(e){await this.runJsonOnly(async()=>{this.requireJsonFormat(e.format,`task-comment commands`),await this.setupClient(),await Xi({organizationId:await this.resolveOrgOption(e),taskId:await this.resolveTaskOption(e),commentId:e.comment}),this.printJson({deleted:!0,comment:{id:e.comment}})})}};ma=b([(0,u.injectable)(),C(0,(0,u.inject)(S.ConfigManager)),C(1,(0,u.inject)(S.CredentialsService)),x(`design:paramtypes`,[Object,Object])],ma);var Q={AuthCommand:Symbol.for(`CLI.AuthCommand`),WorkflowCommand:Symbol.for(`CLI.WorkflowCommand`),ArtifactCommand:Symbol.for(`CLI.ArtifactCommand`),AutomationCommand:Symbol.for(`CLI.AutomationCommand`),ProjectCommand:Symbol.for(`CLI.ProjectCommand`),TaskCommand:Symbol.for(`CLI.TaskCommand`),WorkUnitCommand:Symbol.for(`CLI.WorkUnitCommand`),MemberCommand:Symbol.for(`CLI.MemberCommand`),TaskCommentCommand:Symbol.for(`CLI.TaskCommentCommand`),VaultCommand:Symbol.for(`CLI.VaultCommand`),AnalyticsCommand:Symbol.for(`CLI.AnalyticsCommand`)},$=new u.Container({parent:w});$.bind(Q.AuthCommand).to(Ge),$.bind(Q.WorkflowCommand).to(Et),$.bind(Q.ArtifactCommand).to(pn),$.bind(Q.AutomationCommand).to(En),$.bind(Q.ProjectCommand).to(ua),$.bind(Q.TaskCommand).to(da),$.bind(Q.WorkUnitCommand).to(fa),$.bind(Q.MemberCommand).to(pa),$.bind(Q.TaskCommentCommand).to(ma),$.bind(Q.VaultCommand).to(Rn),$.bind(Q.AnalyticsCommand).to(kn),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return $}});
|
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-vSLx97cM.cjs");exports.CLI_TYPES=e.n,exports.cliContainer=e.t;
|
package/package.json
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require("reflect-metadata/lite");let c=require("commander"),l=require("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 $}});
|