@task-handoff/node-agent 0.0.31 → 0.0.33

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.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("node:fs"),t=require("node:path"),n=require("node:child_process"),i=require("commander"),o=require("semver"),r=require("write-file-atomic"),a=require("node:crypto"),s=require("zod"),d=require("node:os");function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function m(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){var n=!1;try{n=this instanceof e}catch{}return n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var l={};const u=s.z.string().trim().min(1).max(120),p=20971520,g=512e3,z=g,f=p,b=41943040,y=s.z.string().trim().min(1).max(80),h=s.z.enum(["app-session","ai-session"]),x=s.z.enum(["image","file"]),I={scopeType:s.z.enum(["session","create-request"]),scopeId:s.z.string().trim().min(1).max(160),kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120)};s.z.object({...I,size:s.z.coerce.number().int().positive().max(p)}).strict();const v=s.z.string().regex(/^cia_[a-f0-9]{24}$/);s.z.object({attachmentId:v,...I,size:s.z.number().int().positive().max(p)}).strict(),s.z.object({offset:s.z.coerce.number().int().nonnegative()}).strict(),s.z.object({attachmentId:v,offset:s.z.number().int().nonnegative()}),s.z.object({id:v,kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120),size:s.z.number().int().positive().max(p),expiresAt:s.z.string().datetime()});const A=s.z.object({id:s.z.string().trim().min(1).max(120),kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120),size:s.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)}),S=s.z.enum(["available","expired","missing"]),k=A.extend({contentState:S.default("available")}).strict(),j=s.z.object({id:s.z.string().trim().min(1).max(240),text:s.z.string(),attachments:s.z.array(k).max(6).default([])}).strict(),w=s.z.enum(["running","waiting","idle","failed"]);s.z.object({instanceId:s.z.string().trim().min(1).max(160),sessionId:s.z.string().trim().min(1).max(120),unread:s.z.boolean(),sessionUpdatedAt:s.z.string().datetime(),updatedAt:s.z.string().datetime()}).strict();const C=s.z.enum(["thinking","tool","editing","approval","responding","unknown"]),E=s.z.object({id:s.z.string().trim().min(1).max(240).optional(),kind:s.z.string().trim().min(1).max(80).optional(),name:s.z.string().trim().min(1).max(120),inputPreview:s.z.string().trim().max(500).optional(),startedAt:s.z.string().datetime().optional()}).strict(),N=s.z.enum(["running","completed","failed","waiting"]),R=s.z.object({id:s.z.string().trim().min(1).max(240),turnId:s.z.string().trim().min(1).max(240)}).strict(),T=R.extend({type:s.z.literal("user-message"),text:s.z.string(),attachments:s.z.array(k).max(6).optional()}).strict(),P=R.extend({type:s.z.literal("ai-message"),text:s.z.string()}).strict(),_=R.extend({type:s.z.literal("activity"),activityKind:s.z.string().trim().min(1).max(120),title:s.z.string().trim().min(1).max(240),status:N.optional(),summary:s.z.string().max(4e3).optional(),input:s.z.string().max(1e5).optional(),output:s.z.string().max(1e6).optional(),paths:s.z.array(s.z.string().trim().min(1).max(4096)).max(500).optional(),exitCode:s.z.number().int().optional(),durationMs:s.z.number().int().nonnegative().optional()}).strict(),O=s.z.discriminatedUnion("type",[T,P,_]);s.z.object({sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),items:s.z.array(O),generatedAt:s.z.string().datetime()}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),turnId:s.z.string().trim().min(1).max(240),items:s.z.array(O),generatedAt:s.z.string().datetime()}).strict();const M=s.z.enum(["pending-init","running","interrupted","completed","errored","shutdown","not-found"]),L=s.z.enum(["started","interacted","interrupted"]),D=s.z.object({threadId:s.z.string().trim().min(1).max(240),path:s.z.string().trim().max(4096).optional(),status:M,activity:L.optional(),message:s.z.string().trim().max(1e3).optional(),updatedAt:s.z.string().datetime()}).strict();function U(e){return"completed"!==e.status}const F=s.z.array(D).max(50).transform(e=>e.filter(U)),V=s.z.object({toolCalls:s.z.number().int().min(0).default(0),edits:s.z.number().int().min(0).default(0),approvals:s.z.number().int().min(0).default(0)}).strict().default({toolCalls:0,edits:0,approvals:0}),q=s.z.object({send:s.z.boolean().optional(),interrupt:s.z.boolean().optional(),approval:s.z.boolean().optional(),fork:s.z.boolean().optional(),openApp:s.z.boolean().optional(),close:s.z.boolean().optional()}).strict(),$=s.z.string().trim().min(1).max(240),H=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("fork"),parentProviderSessionId:$,throughTurnId:s.z.string().trim().min(1).max(240).optional()}).strict(),s.z.object({kind:s.z.literal("subagent"),parentProviderSessionId:$}).strict()]),B=s.z.preprocess(function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const t=e;if("fork"===t.kind){const e=H.safeParse({kind:"fork",parentProviderSessionId:t.parentProviderSessionId,..."string"==typeof t.throughTurnId?{throughTurnId:t.throughTurnId}:{}});return e.success?e.data:void 0}if("subagent"===t.kind){const e=H.safeParse({kind:"subagent",parentProviderSessionId:t.parentProviderSessionId});return e.success?e.data:void 0}},H.optional()),G=s.z.union([A.extend({source:s.z.object({type:s.z.literal("inline"),encoding:s.z.literal("base64"),data:s.z.string().min(1).max(31457280)}).strict()}).strict().superRefine((e,t)=>{const n="image"===e.kind?p:g;(e.size<=0||("file"===e.kind?e.size>=n:e.size>n))&&t.addIssue({code:s.z.ZodIssueCode.custom,path:["size"],message:`Inline ${e.kind} must be between 1 byte and ${n} bytes.`})}),A.extend({source:s.z.object({type:s.z.literal("runtime-path"),path:s.z.string().trim().min(1).max(4096)}).strict()}).strict()]),K=A.extend({sourceType:s.z.enum(["inline","runtime-path"])}).strict(),W=s.z.union([s.z.object({id:s.z.string().trim().min(1).max(120),kind:x.optional(),source:s.z.object({type:s.z.literal("upload-ref")}).strict().default({type:"upload-ref"})}).strict(),s.z.object({id:s.z.string().trim().min(1).max(120),kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120),size:s.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),source:s.z.object({type:s.z.literal("runtime-path"),path:s.z.string().trim().min(1).max(4096)}).strict()}).strict()]),Y=s.z.enum(["auto","queue","steer","immediate"]),X=s.z.enum(["ask","auto-review","full-access"]),J=s.z.enum(["review","rename","goal","compact"]);s.z.object({command:J,argument:s.z.string().trim().max(4e3).optional()}).strict().superRefine((e,t)=>{"rename"!==e.command||e.argument||t.addIssue({code:"custom",path:["argument"],message:"Rename requires a thread name."}),"review"!==e.command&&"compact"!==e.command||!e.argument||t.addIssue({code:"custom",path:["argument"],message:`${e.command} does not accept an argument.`})}),s.z.object({command:J,value:s.z.string().max(4e3).optional(),turnId:s.z.string().trim().min(1).max(240).optional()}).strict(),s.z.enum(["skill","app","plugin"]);const Z=s.z.object({name:s.z.string().trim().min(1).max(240),path:s.z.string().trim().min(1).max(4096)}),Q=s.z.discriminatedUnion("kind",[Z.extend({kind:s.z.literal("skill"),path:s.z.string().trim().min(1).max(4096).refine(e=>e.startsWith("/"),"Skill paths must be absolute.")}).strict(),Z.extend({kind:s.z.literal("app"),path:s.z.string().trim().min(7).max(4096).regex(/^app:\/\/[^\s/]+$/,"App paths must use app://<id>.")}).strict(),Z.extend({kind:s.z.literal("plugin"),path:s.z.string().trim().min(10).max(4096).regex(/^plugin:\/\/[^\s/]+$/,"Plugin paths must use plugin://<id>.")}).strict()]),ee=s.z.array(Q).max(20).default([]),te=s.z.enum(["plugin","skill","file","directory","app"]),ne=s.z.object({kind:te,name:s.z.string().trim().min(1).max(240),description:s.z.string().trim().max(1e3).optional(),path:s.z.string().trim().min(1).max(4096),icon:s.z.string().trim().max(4096).optional()}).strict().superRefine((e,t)=>{"skill"!==e.kind||e.path.startsWith("/")||t.addIssue({code:"custom",path:["path"],message:"Skill paths must be absolute."}),"app"!==e.kind||/^app:\/\/[^\s/]+$/.test(e.path)||t.addIssue({code:"custom",path:["path"],message:"App paths must use app://<id>."}),"plugin"!==e.kind||/^plugin:\/\/[^\s/]+$/.test(e.path)||t.addIssue({code:"custom",path:["path"],message:"Plugin paths must use plugin://<id>."}),"file"!==e.kind&&"directory"!==e.kind||!e.path.startsWith("/")&&!e.path.split(/[\\/]+/).includes("..")||t.addIssue({code:"custom",path:["path"],message:"File and directory paths must be relative to the session cwd."})}),ie=s.z.object({category:s.z.enum(["skills","plugins","apps","files"]),code:s.z.string().trim().min(1).max(160),message:s.z.string().trim().min(1).max(2e3)}).strict();s.z.object({sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),cwd:s.z.string().trim().min(1).max(4096),candidates:s.z.array(ne).max(1e3).default([]),diagnostics:s.z.array(ie).max(20).default([])}).strict(),s.z.object({query:s.z.string().trim().max(240).default("")}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),cwd:s.z.string().trim().min(1).max(4096),query:s.z.string().trim().max(240),requestId:s.z.string().trim().min(1).max(160),candidates:s.z.array(ne.refine(e=>"file"===e.kind||"directory"===e.kind,"File search only returns files and directories.")).max(200).default([]),complete:s.z.boolean().default(!1)}).strict();const oe=s.z.object({message:s.z.string().trim().min(1).max(2e4),mode:Y.optional(),permissionMode:X.optional()}),re=oe.extend({attachments:s.z.array(G).max(6).default([]),references:ee}).strict().superRefine((e,t)=>{e.attachments.reduce((e,t)=>e+("inline"===t.source.type?t.size:0),0)>b&&t.addIssue({code:s.z.ZodIssueCode.custom,path:["attachments"],message:"Inline attachments must be 41943040 bytes or less in total."})}),ae=oe.extend({attachments:s.z.array(W).max(6).default([]),references:ee}).strict(),se=s.z.object({type:s.z.literal("runtime-path"),path:s.z.string().trim().min(1).max(4096).refine(e=>e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e),"Runtime paths must be absolute in the target controlled instance.")}).strict(),de=s.z.object({modelEntityId:s.z.string().trim().min(1).max(120),modelName:s.z.string().trim().min(1).max(240)}).strict(),ce=s.z.enum(["none","minimal","low","medium","high","xhigh","max","ultra"]);re.extend({agent:y,cwd:se,cwdFolderId:s.z.string().trim().min(1).max(120).optional(),clientRequestId:s.z.string().trim().min(1).max(160),modelSelection:de.optional(),reasoningEffort:ce.optional(),storyId:u.optional()}).strict();const me=s.z.object({mode:s.z.enum(["current-folder","worktree"]),branch:s.z.string().trim().min(1).max(1024)}).strict();ae.extend({agent:y,cwdFolderId:s.z.string().trim().min(1).max(120).optional(),gitSelection:me.optional(),clientRequestId:s.z.string().trim().min(1).max(160),modelSelection:de.optional(),reasoningEffort:ce.optional(),storyId:u.optional()}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160),modelSelection:de}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),accepted:s.z.literal(!0)}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160),reasoningEffort:ce}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),accepted:s.z.literal(!0)}).strict(),s.z.object({storyId:u.nullable()}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),storyId:u.optional()}).strict(),s.z.object({disposition:s.z.enum(["created","already-created"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),creationSource:s.z.literal("ai-session")}).strict();const le=s.z.object({mode:s.z.enum(["current","managed-worktree"]).default("current")}).strict().default({mode:"current"});s.z.object({clientRequestId:s.z.string().trim().min(1).max(160),throughTurnId:s.z.string().trim().min(1).max(240).optional(),workspace:le.optional().default({mode:"current"})}).strict(),s.z.object({disposition:s.z.enum(["created","already-created"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),creationSource:s.z.literal("ai-session")}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160)}).strict(),s.z.object({disposition:s.z.enum(["opened","already-open"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),appSessionId:s.z.string().trim().min(1).max(120),creationSource:h}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160)}).strict(),s.z.object({disposition:s.z.enum(["closed","already-closed"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),creationSource:h}).strict(),s.z.object({disposition:s.z.enum(["cleared","already-cleared"]),aiSessionId:s.z.string().trim().min(1).max(120),clearedSessionIds:s.z.array(s.z.string().trim().min(1).max(120))}).strict(),s.z.object({code:s.z.enum(["invalid-request","not-found","unsupported","provider-unavailable","materialization-failed","open-app-failed","close-failed","conflict"]),message:s.z.string().trim().min(1).max(4e3),retryable:s.z.boolean().default(!1),aiSessionId:s.z.string().trim().min(1).max(120).optional(),providerSessionId:s.z.string().trim().min(1).max(240).optional()}).strict(),s.z.object({decision:s.z.enum(["allow","deny","skip"])}).strict(),s.z.object({expectedRevision:s.z.number().int().min(0),queueIds:s.z.array(s.z.string().trim().min(1).max(120)).max(100)}).strict(),s.z.object({expectedRevision:s.z.number().int().min(0),message:s.z.string().trim().min(1).max(2e4)}).strict(),s.z.object({code:s.z.string().trim().min(1).max(160),message:s.z.string(),instanceId:s.z.string().trim().min(1).max(160).optional(),nodeId:s.z.string().trim().min(1).max(160).optional(),route:s.z.string().trim().min(1).max(4096).optional()}).strict();const ue=s.z.object({id:s.z.string().trim().min(1).max(120),messageId:s.z.string().trim().min(1).max(240).optional(),message:s.z.string().trim().min(1).max(2e4),attachments:s.z.array(K).max(6).default([]),references:ee,permissionMode:X.optional(),status:s.z.enum(["queued","sending","failed"]).default("queued"),createdAt:s.z.string().datetime(),updatedAt:s.z.string().datetime(),error:s.z.string().trim().max(4e3).optional()}).strict(),pe=s.z.object({revision:s.z.number().int().min(0).default(0),pendingCount:s.z.number().int().min(0).default(0),items:s.z.array(ue).max(100).default([])}).strict().default({revision:0,pendingCount:0,items:[]}),ge=s.z.enum(["control","realtime","adapter-snapshot","transcript-tail","transcript-scan","process-scan","app-session"]),ze=s.z.object({id:s.z.string().trim().min(1).max(240),status:s.z.enum(["running","completed"]),startedAt:s.z.string().datetime().optional(),completedAt:s.z.string().datetime().optional()}).strict(),fe=s.z.object({id:s.z.string().trim().min(1).max(240),providerTurnId:s.z.string().trim().max(240).optional(),source:ge.optional(),userPrompt:s.z.string().trim().optional(),userMessages:s.z.array(j).max(100).optional(),status:s.z.enum(["queued","running","waiting","completed","failed"]).default("running"),phase:C.optional(),summary:s.z.string().trim().max(1e3).optional(),lastMessage:s.z.string().trim().optional(),lastMessageItemId:s.z.string().trim().max(240).optional(),contextCompactions:s.z.array(ze).max(20).optional(),revision:s.z.number().int().min(0).default(0),sourcePriority:s.z.number().int().min(0).max(100).optional(),snapshotVersion:s.z.number().int().min(0).optional(),observedAt:s.z.string().datetime().optional(),startedAt:s.z.string().datetime().optional(),updatedAt:s.z.string().datetime().optional(),completedAt:s.z.string().datetime().optional()}).strict(),be=fe.pick({id:!0,providerTurnId:!0,userPrompt:!0,userMessages:!0,status:!0,phase:!0,summary:!0,lastMessage:!0,contextCompactions:!0,startedAt:!0,updatedAt:!0,completedAt:!0}).strict(),ye=s.z.object({id:s.z.string().trim().min(1).max(120),agent:y,creationSource:h.default("app-session"),appSessionId:s.z.string().trim().max(120).optional(),appId:s.z.string().trim().max(120).optional(),providerSessionId:s.z.string().trim().max(240).optional(),lineage:B,providerMeta:s.z.record(s.z.string(),s.z.unknown()).optional(),modelSelection:de.optional(),reasoningEffort:ce.optional(),storyId:u.optional(),appBindingKeys:s.z.array(s.z.string().trim().min(1).max(240)).max(20).optional(),actions:q.optional(),activeTurnId:s.z.string().trim().max(240).optional(),title:s.z.string().trim().max(240).optional(),cwd:s.z.string().trim().max(4096).optional(),cwdFolderId:s.z.string().trim().min(1).max(120).optional(),userPrompt:s.z.string().trim().optional(),turns:s.z.array(fe).max(50).optional(),status:w.default("running"),phase:C.default("unknown"),summary:s.z.string().trim().max(1e3).optional(),lastMessage:s.z.string().trim().optional(),lastMessageItemId:s.z.string().trim().max(240).optional(),currentTool:E.optional(),toolCallsSinceLastMessage:s.z.number().int().min(0).default(0),subAgents:F.default([]),transcriptPath:s.z.string().trim().max(4096).optional(),transcriptSize:s.z.number().int().min(0).optional(),startedAt:s.z.string().datetime(),updatedAt:s.z.string().datetime(),completedAt:s.z.string().datetime().optional(),error:s.z.string().trim().max(4e3).optional(),counters:V,queue:pe}).strict(),he=ye.pick({id:!0,appBindingKeys:!0,cwd:!0,error:!0,providerMeta:!0,modelSelection:!0,reasoningEffort:!0,queue:!0,subAgents:!0}).strict(),xe=fe.pick({id:!0,providerTurnId:!0,status:!0,phase:!0,revision:!0,startedAt:!0,updatedAt:!0,completedAt:!0}).extend({bodyRevision:s.z.string().trim().min(1).max(64)}).strict(),Ie=s.z.object({sessionId:s.z.string().trim().min(1).max(120),revision:s.z.string().trim().min(1).max(64),turns:s.z.array(xe).max(50)}).strict(),ve=s.z.object({sessionId:s.z.string().trim().min(1).max(120),revision:s.z.string().trim().min(1).max(64),turn:fe}).strict(),Ae=s.z.string().trim().min(1).max(64),Se=s.z.object({kind:s.z.literal("not-modified"),revision:Ae}).strict();s.z.discriminatedUnion("kind",[Se,s.z.object({kind:s.z.literal("updated"),revision:Ae,detail:he}).strict()]),s.z.discriminatedUnion("kind",[Se,s.z.object({kind:s.z.literal("updated"),revision:Ae,index:Ie}).strict()]),s.z.discriminatedUnion("kind",[Se,s.z.object({kind:s.z.literal("updated"),revision:Ae,body:ve}).strict()]);const ke=s.z.object({session:ye,provider:s.z.string().trim().min(1).max(80),action:s.z.enum(["send","queue","steer","interrupt","approval"]),decision:s.z.enum(["allow","deny","skip"]).optional(),turnId:s.z.string().trim().min(1).max(240).optional(),providerTurnId:s.z.string().trim().min(1).max(240).optional(),queueId:s.z.string().trim().min(1).max(120).optional()}).strict(),je=ke.omit({session:!0}).extend({sessionId:s.z.string().trim().min(1).max(120),messageId:s.z.string().trim().min(1).max(240).optional()}).strict();s.z.object({sessionId:s.z.string().trim().min(1).max(120),queueRevision:s.z.number().int().min(0),action:s.z.enum(["retry","remove","edit","reorder"]),queueId:s.z.string().trim().min(1).max(120).optional()}).strict(),s.z.union([je,ke.transform(function(e){const t=e.session.turns?.at(-1),n=(e.queueId?e.session.queue?.items.find(t=>t.id===e.queueId)?.messageId:void 0)||("send"===e.action||"queue"===e.action||"steer"===e.action?t?.userMessages?.at(-1)?.id:void 0);return je.parse({sessionId:e.session.id,provider:e.provider,action:e.action,...e.decision?{decision:e.decision}:{},...e.turnId||e.session.activeTurnId||t?.id?{turnId:e.turnId||e.session.activeTurnId||t?.id}:{},...e.providerTurnId||t?.providerTurnId?{providerTurnId:e.providerTurnId||t?.providerTurnId}:{},...e.queueId?{queueId:e.queueId}:{},...n?{messageId:n}:{}})})]);const we=s.z.object({id:s.z.string().trim().min(1).max(120),agent:y,creationSource:h,providerSessionId:s.z.string().trim().min(1).max(240),lineage:B,modelSelection:de.optional(),reasoningEffort:ce.optional(),storyId:u.optional(),title:s.z.string().trim().max(240).optional(),userPrompt:s.z.string().trim().optional(),lastMessage:s.z.string().trim().optional(),cwd:s.z.string().trim().min(1).max(4096),cwdFolderId:s.z.string().trim().min(1).max(120).optional(),lastActiveAt:s.z.string().datetime(),archivedAt:s.z.string().datetime()}).strict();s.z.object({schemaVersion:s.z.literal(1).default(1),items:s.z.array(we).max(1e4).default([])}).strict(),s.z.object({items:s.z.array(we).max(1e4).default([])}).strict(),s.z.object({item:we,turns:s.z.array(be).max(50).default([])}).strict(),s.z.object({disposition:s.z.enum(["resumed","already-open"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),appSessionId:s.z.string().trim().min(1).max(120).optional(),creationSource:h}).strict();const Ce=fe.omit({userMessages:!0}),Ee=ye.pick({id:!0,agent:!0,creationSource:!0,appSessionId:!0,appId:!0,providerSessionId:!0,lineage:!0,providerMeta:!0,modelSelection:!0,reasoningEffort:!0,storyId:!0,appBindingKeys:!0,actions:!0,activeTurnId:!0,title:!0,cwd:!0,cwdFolderId:!0,userPrompt:!0,turns:!0,status:!0,phase:!0,summary:!0,lastMessage:!0,lastMessageItemId:!0,currentTool:!0,toolCallsSinceLastMessage:!0,subAgents:!0,queue:!0,startedAt:!0,updatedAt:!0,error:!0}).extend({turns:s.z.array(Ce).max(50).optional(),detailRevision:s.z.string().trim().min(1).max(64).optional(),turnsRevision:s.z.string().trim().min(1).max(64).optional(),latestTurnRef:s.z.object({id:fe.shape.id,bodyRevision:s.z.string().trim().min(1).max(64)}).strict().optional(),turnCount:s.z.number().int().min(0).optional(),subAgentCount:s.z.number().int().min(0).optional(),lastUserMessageAt:s.z.string().datetime().optional()}).strict(),Ne=s.z.object({runningCount:s.z.number().int().min(0).default(0),waitingCount:s.z.number().int().min(0).default(0),staleCount:s.z.number().int().min(0).default(0),sessions:s.z.array(Ee).default([]),updatedAt:s.z.string().datetime()}).strict();s.z.object({streamId:s.z.string().trim().min(1).max(240),revision:s.z.number().int().min(0),lastEventAt:s.z.string().datetime(),snapshot:Ne}).strict(),Ne.pick({runningCount:!0,waitingCount:!0,staleCount:!0,updatedAt:!0}).extend({idleCount:s.z.number().int().min(0).default(0),problemCount:s.z.number().int().min(0).default(0),revision:s.z.number().int().min(0).optional()});const Re=s.z.enum(["provider-event","app-session-created","app-session-updated","app-session-deleted","discovery-scan","control-action","heartbeat-sync","startup"]),Te=s.z.object({streamId:s.z.string().trim().min(1).max(240),instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),revision:s.z.number().int().min(0),previousRevision:s.z.number().int().min(0).optional(),traceId:s.z.string().trim().min(1).max(160),generatedAt:s.z.string().datetime(),reason:Re}).strict(),Pe=s.z.object({meta:Te,snapshot:Ne}).strict(),_e=s.z.object({meta:Te,upserted:s.z.array(Ee).default([]),removed:s.z.array(s.z.string().trim().min(1).max(120)).default([])}).strict(),Oe=s.z.object({meta:Te,sessionIds:s.z.array(s.z.string().trim().min(1).max(120)).default([]),expiresAt:s.z.string().datetime()}).strict();s.z.object({instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240).optional(),turnId:s.z.string().trim().min(1).max(240),itemId:s.z.string().trim().min(1).max(240),delta:s.z.string().min(1),generatedAt:s.z.string().datetime()}).strict().omit({instanceId:!0,nodeId:!0,providerSessionId:!0}).strict(),s.z.object({instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),item:O,generatedAt:s.z.string().datetime()}).strict(),s.z.object({instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240).optional(),turnId:s.z.string().trim().min(1).max(240),itemId:s.z.string().trim().min(1).max(240),field:s.z.literal("output"),delta:s.z.string().min(1),generatedAt:s.z.string().datetime()}).strict().omit({instanceId:!0,nodeId:!0,providerSessionId:!0}).strict(),s.z.object({streamId:s.z.string().trim().min(1).max(240),instanceId:s.z.string().trim().min(1).max(160),sinceRevision:s.z.number().int().min(0),latestRevision:s.z.number().int().min(0),earliestRetainedRevision:s.z.number().int().min(0),syncRequired:s.z.boolean().default(!1),events:s.z.array(s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("ai-session.snapshot"),payload:Pe}).strict(),s.z.object({type:s.z.literal("ai-session.patch"),payload:_e}).strict(),s.z.object({type:s.z.literal("ai-session.removed"),payload:Oe}).strict()])).default([])}).strict();const Me=s.z.object({source:ge,sourcePriority:s.z.number().int().min(0).max(100).optional(),observedAt:s.z.string().datetime().optional(),snapshotVersion:s.z.number().int().min(0).optional()}).strict(),Le=Me.extend({type:s.z.literal("snapshot"),agent:s.z.string().trim().min(1).max(80),creationSource:h.optional(),appSessionId:s.z.string().trim().max(120).optional(),appId:s.z.string().trim().max(120).optional(),providerSessionId:s.z.string().trim().max(240).optional(),lineage:H.optional(),providerMeta:s.z.record(s.z.string(),s.z.unknown()).optional(),modelSelection:de.optional(),reasoningEffort:ce.optional(),storyId:u.optional(),appBindingKeys:s.z.array(s.z.string().trim().min(1).max(240)).max(20).optional(),actions:q.optional(),title:s.z.string().trim().max(240).optional(),cwd:s.z.string().trim().max(4096).optional(),cwdFolderId:s.z.string().trim().min(1).max(120).optional(),activeTurnId:s.z.string().trim().max(240).optional(),userPrompt:s.z.string().trim().optional(),turns:s.z.array(fe).max(50).optional(),status:w.optional(),phase:C.optional(),summary:s.z.string().trim().max(1e3).optional(),lastMessage:s.z.string().trim().optional(),lastMessageItemId:s.z.string().trim().max(240).optional(),error:s.z.string().trim().max(4e3).optional(),currentTool:E.optional(),toolCallsSinceLastMessage:s.z.number().int().min(0).optional(),subAgents:F.optional(),transcriptPath:s.z.string().trim().max(4096).optional(),transcriptSize:s.z.number().int().min(0).optional(),replaceActivity:s.z.boolean().optional()}).strict(),De=Me.extend({type:s.z.literal("event"),sessionId:s.z.string().trim().min(1).max(120),kind:s.z.enum(["lifecycle","send-ack","turn-started","user-message","assistant-message","approval-requested","turn-completed","session-error","tool-activity","sub-agent-activity","context-compaction","model-selection","reasoning-effort"]),modelSelection:de.optional(),reasoningEffort:ce.optional(),activeTurnId:s.z.string().trim().max(240).optional(),providerTurnId:s.z.string().trim().max(240).optional(),userPrompt:s.z.string().trim().optional(),userMessage:j.optional(),text:s.z.string().optional(),itemId:s.z.string().trim().max(240).optional(),status:w.optional(),phase:C.optional(),summary:s.z.string().trim().max(1e3).optional(),error:s.z.string().trim().max(4e3).optional(),currentTool:E.nullable().optional(),toolCallsSinceLastMessage:s.z.number().int().min(0).optional(),subAgents:F.optional(),contextCompaction:ze.optional(),counters:s.z.object({toolCalls:s.z.number().int().min(0).optional(),edits:s.z.number().int().min(0).optional(),approvals:s.z.number().int().min(0).optional()}).strict().optional()}).strict().superRefine((e,t)=>{if("model-selection"===e.kind?e.modelSelection||t.addIssue({code:"custom",path:["modelSelection"],message:"model-selection events require modelSelection"}):void 0!==e.modelSelection&&t.addIssue({code:"custom",path:["modelSelection"],message:"modelSelection is only valid for model-selection events"}),"reasoning-effort"===e.kind?e.reasoningEffort||t.addIssue({code:"custom",path:["reasoningEffort"],message:"reasoning-effort events require reasoningEffort"}):void 0!==e.reasoningEffort&&t.addIssue({code:"custom",path:["reasoningEffort"],message:"reasoningEffort is only valid for reasoning-effort events"}),"session-error"!==e.kind||e.error||t.addIssue({code:"custom",path:["error"],message:"session-error events require error"}),"context-compaction"===e.kind?e.contextCompaction||t.addIssue({code:"custom",path:["contextCompaction"],message:"context-compaction events require contextCompaction"}):void 0!==e.contextCompaction&&t.addIssue({code:"custom",path:["contextCompaction"],message:"contextCompaction is only valid for context-compaction events"}),"send-ack"!==e.kind&&"user-message"!==e.kind&&void 0!==e.userMessage&&t.addIssue({code:"custom",path:["userMessage"],message:"userMessage is only valid for send-ack and user-message events"}),"sub-agent-activity"===e.kind?e.subAgents||t.addIssue({code:"custom",path:["subAgents"],message:"sub-agent-activity events require subAgents"}):void 0!==e.subAgents&&t.addIssue({code:"custom",path:["subAgents"],message:"subAgents is only valid for sub-agent-activity events"}),"tool-activity"!==e.kind)return void 0!==e.currentTool&&t.addIssue({code:"custom",path:["currentTool"],message:"currentTool is only valid for tool-activity events"}),void(void 0!==e.toolCallsSinceLastMessage&&t.addIssue({code:"custom",path:["toolCallsSinceLastMessage"],message:"toolCallsSinceLastMessage is only valid for tool-activity events"}));"currentTool"in e||t.addIssue({code:"custom",path:["currentTool"],message:"tool-activity events require currentTool"}),void 0===e.toolCallsSinceLastMessage&&t.addIssue({code:"custom",path:["toolCallsSinceLastMessage"],message:"tool-activity events require toolCallsSinceLastMessage"})});s.z.discriminatedUnion("type",[Le,De]);const Ue=s.z.union([s.z.object({type:s.z.literal("schedule"),scheduleKind:s.z.literal("interval").default("interval"),intervalMs:s.z.number().int().min(1e3)}).strict(),s.z.object({type:s.z.literal("schedule"),scheduleKind:s.z.literal("daily"),timeOfDay:s.z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/),timezone:s.z.string().trim().min(1).max(120)}).strict(),s.z.object({type:s.z.literal("schedule"),scheduleKind:s.z.literal("weekly"),weekdays:s.z.array(s.z.number().int().min(0).max(6)).min(1).max(7),timeOfDay:s.z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/),timezone:s.z.string().trim().min(1).max(120)}).strict()]),Fe=s.z.union([Ue,s.z.object({type:s.z.literal("file-change"),roots:s.z.array(s.z.string().trim().min(1).max(4096)).min(1).max(50),globs:s.z.array(s.z.string().trim().min(1).max(500)).min(1).max(100),ignore:s.z.array(s.z.string().trim().min(1).max(500)).max(100).optional(),debounceMs:s.z.number().int().min(100).max(6e4).default(1500)}).strict(),s.z.object({type:s.z.literal("ai-session"),agent:s.z.string().trim().min(1).max(80).optional(),statuses:s.z.array(s.z.enum(["running","waiting","idle","failed"])).max(20).optional(),phases:s.z.array(s.z.enum(["thinking","tool","editing","approval","responding","unknown"])).max(20).optional()}).strict()]),Ve=s.z.object({promptTemplate:s.z.string().trim().min(1).max(2e4)}).strict(),qe=s.z.object({cooldownMs:s.z.number().int().min(0).max(864e5).optional(),maxConcurrentRuns:s.z.number().int().min(1).max(20).default(1),whenBusy:s.z.enum(["skip","queue"]).default("skip")}).strict(),$e=s.z.object({configHash:s.z.string().trim().min(8).max(80),name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(1e3).optional(),source:Fe,action:Ve,policy:qe.default({maxConcurrentRuns:1,whenBusy:"skip"}),createdAt:s.z.string().datetime(),updatedAt:s.z.string().datetime()}).strict(),He=s.z.object({type:s.z.literal("ai-session"),aiSessionId:s.z.string().trim().min(1).max(160)}).strict(),Be=s.z.object({configHash:s.z.string().trim().min(8).max(80),deploymentId:s.z.string().trim().min(1).max(240).optional(),instanceId:s.z.string().trim().min(1).max(160),origin:s.z.enum(["control-plane","controlled-instance"]).default("controlled-instance"),enabled:s.z.boolean().default(!0),target:He,localName:s.z.string().trim().min(1).max(160).optional(),createdAt:s.z.string().datetime(),updatedAt:s.z.string().datetime()}).strict(),Ge=s.z.object({configHash:s.z.string().trim().min(8).max(80),deploymentId:s.z.string().trim().min(1).max(240).optional(),instanceId:s.z.string().trim().min(1).max(160),status:s.z.enum(["idle","running","disabled","error"]).default("idle"),lastTriggeredAt:s.z.string().datetime().optional(),lastCompletedAt:s.z.string().datetime().optional(),lastSkippedAt:s.z.string().datetime().optional(),lastError:s.z.string().trim().max(4e3).optional(),runCount:s.z.number().int().min(0).default(0),skippedCount:s.z.number().int().min(0).default(0)}).strict(),Ke=s.z.object({id:s.z.string().trim().min(1).max(160),configHash:s.z.string().trim().min(8).max(80),deploymentId:s.z.string().trim().min(1).max(240).optional(),instanceId:s.z.string().trim().min(1).max(160),eventType:s.z.enum(["manual","schedule","file-change","ai-session"]),status:s.z.enum(["started","completed","failed","skipped"]),target:He,promptPreview:s.z.string().trim().max(500),eventSummary:s.z.string().trim().max(1e3).optional(),error:s.z.string().trim().max(4e3).optional(),startedAt:s.z.string().datetime(),completedAt:s.z.string().datetime().optional()}).strict();s.z.object({schemaVersion:s.z.literal(1).default(1),configs:s.z.array($e).default([]),deployments:s.z.array(Be).default([]),runtime:s.z.array(Ge).default([]),recentRuns:s.z.array(Ke).default([])}).strict();const We=s.z.object({config:$e,deployment:Be,runtime:Ge.optional()}).strict();s.z.object({instanceId:s.z.string().trim().min(1).max(160),sessionId:s.z.string().trim().min(1).max(160),mutation:We.optional()}).strip(),s.z.object({instanceId:s.z.string().trim().min(1).max(160),sessionId:s.z.string().trim().min(1).max(160),configHash:$e.shape.configHash}).strip();const Ye=s.z.object({instanceId:s.z.string().trim().min(1).max(160),instanceName:s.z.string().trim().min(1).max(160),deployment:Be,runtime:Ge.optional()}).strip(),Xe=Ke.extend({instanceName:s.z.string().trim().min(1).max(160).optional()}).strip(),Je=s.z.object({configHash:s.z.string().trim().min(8).max(80),config:$e,deploymentCount:s.z.number().int().min(0),enabledCount:s.z.number().int().min(0),runningCount:s.z.number().int().min(0),errorCount:s.z.number().int().min(0),ownedByControlPlane:s.z.boolean(),controlPlaneDeploymentCount:s.z.number().int().min(0),deployments:s.z.array(Ye),recentRuns:s.z.array(Xe)}).strip();s.z.object({updatedAt:s.z.string().datetime(),triggers:s.z.array(Je)}).strip(),s.z.object({name:$e.shape.name,description:$e.shape.description,source:Fe,action:Ve,policy:qe.partial().optional()}).strict(),s.z.object({scope:s.z.enum(["node","instance"]),nodeId:s.z.string().trim().min(1).max(160).optional(),instanceId:s.z.string().trim().min(1).max(160).optional(),code:s.z.string().trim().min(1).max(160),message:s.z.string().trim().min(1).max(4e3)}).strip();const Ze=s.z.string().regex(/^\d{4}-\d{2}-\d{2}$/,"Proxy protocol version must use YYYY-MM-DD format."),Qe=s.z.string().trim().min(1).max(160).regex(/^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$/),et=s.z.string().datetime(),tt=s.z.string().trim().min(32).max(4096),nt=s.z.string().trim().max(2048).transform((e,t)=>{try{return function(e){const t=new URL(e.trim());if("https:"!==t.protocol||t.username||t.password||"/"!==t.pathname||t.search||t.hash)throw new Error("Proxy origin must be an HTTPS origin without credentials, path, query, or fragment.");return t.origin}(e)}catch(e){return t.addIssue({code:"custom",message:e instanceof Error?e.message:String(e)}),s.z.NEVER}});s.z.string().trim().min(1).max(4096).transform((e,t)=>{try{return function(e){const t=e.trim();if(!t.startsWith("/")||t.startsWith("//")||t.includes("\\")||/%25/i.test(t))throw new Error("Proxy route must be a single-encoded node-agent relative route.");const n=t.split("?",1)[0];let i,o;try{i=n.split("/").map(e=>decodeURIComponent(e))}catch{throw new Error("Proxy route contains invalid percent encoding.")}if(i.some(e=>".."===e||"."===e))throw new Error("Proxy route cannot traverse outside the node-agent API.");try{o=new URL(t,"https://node-agent.invalid")}catch{throw new Error("Proxy route is invalid.")}if("https://node-agent.invalid"!==o.origin||o.username||o.password)throw new Error("Proxy route cannot select an absolute upstream URL.");return`${o.pathname}${o.search}`}(e)}catch(e){return t.addIssue({code:"custom",message:e instanceof Error?e.message:String(e)}),s.z.NEVER}});const it=s.z.enum(Object.values({ProtocolUnsupported:"CONTROL_PLANE_PROXY_PROTOCOL_UNSUPPORTED",InviteInvalid:"CONTROL_PLANE_PROXY_INVITE_INVALID",InviteExpired:"CONTROL_PLANE_PROXY_INVITE_EXPIRED",InviteConsumed:"CONTROL_PLANE_PROXY_INVITE_CONSUMED",InviteRevoked:"CONTROL_PLANE_PROXY_INVITE_REVOKED",TargetUnavailable:"CONTROL_PLANE_PROXY_TARGET_UNAVAILABLE",TargetMismatch:"CONTROL_PLANE_PROXY_TARGET_MISMATCH",BindingUnknown:"CONTROL_PLANE_PROXY_BINDING_UNKNOWN",BindingRevoked:"CONTROL_PLANE_PROXY_BINDING_REVOKED",BindingIdentityConflict:"CONTROL_PLANE_PROXY_BINDING_IDENTITY_CONFLICT",AuthenticationFailed:"CONTROL_PLANE_PROXY_AUTHENTICATION_FAILED",RouteInvalid:"CONTROL_PLANE_PROXY_ROUTE_INVALID",HeaderInvalid:"CONTROL_PLANE_PROXY_HEADER_INVALID",ResourceLimit:"CONTROL_PLANE_PROXY_RESOURCE_LIMIT",SnapshotRequired:"CONTROL_PLANE_PROXY_SNAPSHOT_REQUIRED",Unavailable:"CONTROL_PLANE_PROXY_UNAVAILABLE",TransportFailed:"CONTROL_PLANE_PROXY_TRANSPORT_FAILED"})),ot=s.z.object({code:it,message:s.z.string().trim().min(1).max(2048),retryable:s.z.boolean(),details:s.z.record(s.z.string(),s.z.unknown()).optional()}).strict(),rt=s.z.enum(["active","revoked"]),at=s.z.object({id:Qe,targetNodeId:Qe,status:rt,createdBy:Qe,expiresAt:et,revokedAt:et.optional(),createdAt:et,updatedAt:et}).strict();s.z.object({targetNodeId:Qe,expiresInSeconds:s.z.number().int().min(60).max(3600).default(600)}).strict(),s.z.object({invite:at,token:s.z.string().trim().min(24).max(512),proxyOrigin:nt,protocolVersion:Ze}).strict();const st=s.z.enum(["active","revoked"]),dt=s.z.object({id:Qe,claimId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,bindingKeyId:Qe,status:st,revision:s.z.number().int().positive(),lastError:ot.optional(),revokedAt:et.optional(),createdAt:et,updatedAt:et}).strict();s.z.object({protocolVersion:Ze,inviteToken:s.z.string().trim().min(24).max(512).optional(),claimId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe.optional(),bindingKeyId:Qe,credential:tt}).strict(),s.z.object({sourceControlPlaneId:Qe,bindingKeyId:Qe,credential:tt}).strict();const ct=s.z.object({id:Qe,name:s.z.string().trim().min(1).max(160),status:s.z.enum(["unknown","online","offline","degraded"]),health:s.z.enum(["unknown","ok","degraded","failed"]),lastSeenAt:et.optional(),capabilities:s.z.record(s.z.string(),s.z.unknown()).default({})}).strict(),mt=s.z.object({protocolVersion:Ze,binding:dt,streamId:Qe,revision:s.z.number().int().nonnegative(),observedAt:et,target:ct}).strict(),lt=s.z.object({type:s.z.literal("control-plane-proxy.event"),protocolVersion:Ze,streamId:Qe,bindingId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,revision:s.z.number().int().positive(),source:s.z.object({id:s.z.string().trim().min(1).max(512),seq:s.z.number().int().nonnegative()}).strict(),target:ct,event:s.z.object({type:s.z.string().trim().min(1).max(240),topic:s.z.string().trim().min(1).max(240),createdAt:et}).strict()}).strict(),ut=s.z.object({type:s.z.literal("control-plane-proxy.events.ready"),protocolVersion:Ze,streamId:Qe,bindingId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,latestRevision:s.z.number().int().nonnegative(),earliestRetainedRevision:s.z.number().int().nonnegative()}).strict(),pt=s.z.object({type:s.z.literal("control-plane-proxy.snapshot-required"),protocolVersion:Ze,streamId:Qe,bindingId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,sinceRevision:s.z.number().int().nonnegative(),latestRevision:s.z.number().int().nonnegative(),earliestRetainedRevision:s.z.number().int().nonnegative(),error:ot}).strict();s.z.discriminatedUnion("type",[lt,ut,pt]),s.z.object({protocolVersion:Ze,binding:dt,target:mt.shape.target}).strict(),s.z.object({id:Qe,claimId:Qe,proxyOrigin:nt,requestedName:s.z.string().trim().min(1).max(160).optional(),sourceControlPlaneId:Qe,targetNodeId:Qe.optional(),bindingKeyId:Qe,credential:tt,status:s.z.enum(["pending","compensation-required"]),createdAt:et,updatedAt:et,expiresAt:et}).strict().omit({credential:!0}),s.z.object({id:Qe,nodeId:Qe,proxyOrigin:nt,proxyBindingId:Qe,targetNodeId:Qe,sourceControlPlaneId:Qe,bindingKeyId:Qe,credential:tt,createdAt:et,updatedAt:et}).strict();const gt=s.z.string().trim().min(1).max(120),zt=s.z.object({selectModelAtCreate:s.z.boolean().default(!1),selectProviderAtCreate:s.z.boolean().default(!1),switchModelWithinProvider:s.z.boolean().default(!1),switchProviderDuringSession:s.z.boolean().default(!1)}).strip().default({selectModelAtCreate:!1,selectProviderAtCreate:!1,switchModelWithinProvider:!1,switchProviderDuringSession:!1}),ft=s.z.object({selectAtCreate:s.z.boolean().default(!1),updateDuringSession:s.z.boolean().default(!1)}).strip().default({selectAtCreate:!1,updateDuringSession:!1}),bt=s.z.object({subagents:s.z.boolean().default(!1)}).strip().default({subagents:!1}),yt=s.z.object({agent:gt,actions:s.z.object({create:s.z.boolean().default(!1),send:s.z.boolean().default(!1),queue:s.z.boolean().default(!1),steer:s.z.boolean().default(!1),interrupt:s.z.boolean().default(!1),archive:s.z.boolean().default(!1),delete:s.z.boolean().default(!1),fork:s.z.boolean().default(!1),approvalDecisions:s.z.array(s.z.enum(["allow","deny","skip"])).max(3).default([])}).passthrough(),permissionModes:s.z.array(s.z.enum(["ask","auto-review","full-access"])).max(3).default([]),timeline:s.z.object({sessionRead:s.z.boolean().default(!1),turnRead:s.z.boolean().default(!1),liveItems:s.z.boolean().default(!1)}).passthrough(),modelSelection:zt.optional(),reasoningEffort:ft.optional(),hierarchy:bt.optional()}).passthrough(),ht=s.z.array(yt).max(100).default([]),xt="2026-08-27",It=new Set(["2026-08-01","2026-08-16","2026-08-17","2026-08-20",xt]),vt=s.z.string().regex(/^\d{4}-\d{2}-\d{2}$/,"Protocol version must use YYYY-MM-DD format."),At=s.z.string().trim().min(1).max(120),St=s.z.enum(["low","medium","high"]),kt=s.z.enum(["none","friendly","pragmatic"]),jt=s.z.object({modelEntityId:s.z.string().trim().min(1).max(120),modelName:s.z.string().trim().min(1).max(240)}).strict(),wt=s.z.object({modelVerbosity:St.optional(),personality:kt.optional(),multiAgent:s.z.object({enabled:s.z.boolean().default(!0),maxConcurrentThreads:s.z.number().int().min(1).max(64).optional(),defaultModel:jt.optional(),defaultReasoningEffort:ce.optional()}).strict().default({enabled:!0})}).strict();function Ct(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e,n=t.multiAgent,i=!n||"object"!=typeof n||Array.isArray(n)?n:(()=>{const e=n,t=e.defaultModel;return{...void 0===e.enabled?{}:{enabled:e.enabled},...void 0===e.maxConcurrentThreads?{}:{maxConcurrentThreads:e.maxConcurrentThreads},...void 0===t?{}:{defaultModel:!t||"object"!=typeof t||Array.isArray(t)?t:{modelEntityId:t.modelEntityId,modelName:t.modelName}},...void 0===e.defaultReasoningEffort?{}:{defaultReasoningEffort:e.defaultReasoningEffort}}})();return{...void 0===t.modelVerbosity?{}:{modelVerbosity:t.modelVerbosity},...void 0===t.personality?{}:{personality:t.personality},...void 0===n?{}:{multiAgent:i}}}function Et(){return{features:{appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]}}}const Nt=s.z.object({sessionReadAgents:s.z.array(At).max(100).default([]),turnReadAgents:s.z.array(At).max(100).default([]),liveItemAgents:s.z.array(At).max(100).default([])}).passthrough(),Rt=s.z.object({metadataAgents:s.z.array(At).max(100).default([]),contentAgents:s.z.array(At).max(100).default([]),uploadAgents:s.z.array(At).max(100).default([]),retentionSettings:s.z.boolean().default(!1),fileSizeLimitSettings:s.z.boolean().default(!1)}).passthrough(),Tt=s.z.object({appRuntime:s.z.boolean().default(!1),tty:s.z.boolean().default(!1),gui:s.z.boolean().default(!1),browser:s.z.boolean().default(!1),browserTunnel:s.z.boolean().optional(),screenshots:s.z.boolean().default(!1),logs:s.z.boolean().default(!1),aiSessionWorkspaceSelection:s.z.boolean().default(!1),aiSessionPersistenceSettings:s.z.boolean().default(!1),privateModelCatalog:s.z.boolean().optional(),codexManagedSettings:s.z.boolean().optional(),nodeAgentConnectionUpdate:s.z.boolean().optional(),gitCliCredentialBroker:s.z.boolean().optional(),gitCredentialProxy:s.z.boolean().optional(),aiSessionTimeline:Nt.default(function(){return{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]}}),aiSessionConversationAttachments:Rt.optional(),aiSessionProviders:ht.optional()}).passthrough(),Pt=s.z.object({features:Tt.default(function(){return{appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]}})}).passthrough(),_t=s.z.object({nodeAgentUrl:s.z.string().trim().url().max(2048).refine(e=>{const t=new URL(e);return/^https?:$/.test(t.protocol)&&!t.username&&!t.password&&"/"===t.pathname&&!t.search&&!t.hash},"Node agent URL must be an HTTP(S) origin.")}).strict();function Ot(e){const t={features:{appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]}};if(!e||"object"!=typeof e||Array.isArray(e))return t;const n=e,i=n.features;if(!i||"object"!=typeof i||Array.isArray(i))return t;const o=i,r={appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]};for(const e of["appRuntime","tty","gui","browser","browserTunnel","screenshots","logs","aiSessionWorkspaceSelection","aiSessionPersistenceSettings","privateModelCatalog","codexManagedSettings","nodeAgentConnectionUpdate","gitCliCredentialBroker","gitCredentialProxy"]){const t=s.z.boolean().safeParse(o[e]);t.success&&(r[e]=t.data)}const a=Nt.safeParse(o.aiSessionTimeline);a.success&&(r.aiSessionTimeline=a.data);const d=Rt.safeParse(o.aiSessionConversationAttachments);d.success&&(r.aiSessionConversationAttachments=d.data);const c=ht.safeParse(o.aiSessionProviders);return c.success&&(r.aiSessionProviders=c.data),Pt.parse({...n,features:{...o,...r}})}function Mt(e){return Ot(e).features.aiSessionConversationAttachments}function Lt(e){return Ot(e).features.aiSessionProviders}function Dt(e,t){const n=Mt(e);return"metadata"===t?n.metadataAgents:"content"===t?n.contentAgents:n.uploadAgents}function Ut(e){return Ot(e).features.aiSessionTimeline}function Ft(e,t){const n=Ut(e);return"session-read"===t?n.sessionReadAgents:"turn-read"===t?n.turnReadAgents:n.liveItemAgents}const Vt=s.z.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$/),qt=s.z.string().datetime(),$t=s.z.record(s.z.string(),s.z.string()).default({}),Ht=s.z.record(s.z.string(),s.z.string()).default({}),Bt=s.z.object({encoding:s.z.enum(["utf8","base64"]),data:s.z.string()}).strict().superRefine((e,t)=>{"base64"===e.encoding&&Buffer.from(e.data,"base64").toString("base64")!==e.data&&t.addIssue({code:"custom",path:["data"],message:"Node tunnel binary body must use canonical base64 encoding."})}),Gt=/^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/,Kt=/^sha256:([a-fA-F0-9]{64})$/,Wt=/^(?:localhost|[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?)(?::[1-9][0-9]{0,4})?$/,Yt=/^[a-z0-9]+(?:(?:[._]|__|-+)[a-z0-9]+)*$/;function Xt(e){const t=e.trim();if(!t||t.length>512||t.includes("://")||/\s/.test(t))throw new Error("Docker image reference must not contain a URL scheme or whitespace.");const n=t.indexOf("@");if(-1!==n&&n!==t.lastIndexOf("@"))throw new Error("Docker image reference contains more than one digest separator.");const i=-1===n?void 0:t.slice(n+1),o=-1===n?t:t.slice(0,n),r=i?Kt.exec(i):void 0;if(i&&!r)throw new Error("Docker image digest must use sha256 followed by 64 hexadecimal characters.");const a=o.lastIndexOf("/"),s=o.lastIndexOf(":"),d=s>a,c=d?o.slice(s+1):void 0,m=d?o.slice(0,s):o;if(c&&!Gt.test(c))throw new Error("Docker image tag is invalid.");if(!c&&!r)throw new Error("Docker image reference must include an explicit tag or sha256 digest.");const l=m.split("/");if(!l.length||l.some(e=>!e))throw new Error("Docker image repository path is invalid.");const u=l.length>1&&(l[0].includes(".")||l[0].includes(":")||"localhost"===l[0]),p=u?l.slice(1):l;if(u&&!Wt.test(l[0].toLowerCase()))throw new Error("Docker image registry host or port is invalid.");if(!p.length||p.some(e=>!Yt.test(e)))throw new Error("Docker image repository names must be lowercase and use valid separators.");const g=l.map((e,t)=>u&&0===t?e.toLowerCase():e).join("/"),z=r?`sha256:${r[1].toLowerCase()}`:void 0;return`${g}${c?`:${c}`:""}${z?`@${z}`:""}`}function Jt(e){const t=Xt(e),n=t.indexOf("@"),i=-1===n?void 0:t.slice(n+1),o=-1===n?t:t.slice(0,n),r=o.lastIndexOf("/"),a=o.lastIndexOf(":"),s=a>r;return{reference:t,repository:s?o.slice(0,a):o,tag:s?o.slice(a+1):void 0,digest:i}}const Zt=s.z.string().trim().min(1).max(512).transform((e,t)=>{try{return Xt(e)}catch(e){return t.addIssue({code:"custom",message:e instanceof Error?e.message:String(e)}),s.z.NEVER}}),Qt=s.z.string().trim().transform((e,t)=>{const n=Kt.exec(e);return n?`sha256:${n[1].toLowerCase()}`:(t.addIssue({code:"custom",message:"Docker image digest must use sha256 followed by 64 hexadecimal characters."}),s.z.NEVER)}),en=s.z.object({modelEntityIds:s.z.array(Vt).max(64).transform(e=>[...new Set(e)]).optional(),codexModelHash:Vt.nullable().optional(),claudeModelHash:Vt.nullable().optional(),opencodeModelHash:Vt.nullable().optional()}).strict().default({}),tn=s.z.object({imageId:Vt,tag:s.z.string().trim().min(1).max(128).regex(Gt).optional()}).strict(),nn=s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("image"),imageSelection:tn}).strict(),s.z.object({type:s.z.literal("template"),environmentTemplateId:Vt}).strict()]),on=s.z.enum(["creating","ready","failed","deleting"]),rn=s.z.enum(["linux","darwin","win32","freebsd","openbsd","aix","sunos","unknown"]),an=s.z.enum(["x64","arm64","arm","ia32","ppc64","s390x","riscv64","unknown"]),sn=s.z.object({code:s.z.string().trim().min(1).max(120),message:s.z.string().trim().min(1).max(2048),phase:s.z.enum(["validate","commit","inspect","security-check","persist","delete","recovery"]).optional()}).strict(),dn=s.z.object({templateId:Vt,nodeId:Vt,imageId:Qt,name:s.z.string().trim().min(1).max(160),platform:rn,architecture:an}).strict(),cn=s.z.enum(["data","agent-home","workspace"]),mn=s.z.object({deleteVolumes:s.z.boolean()}).strict(),ln=s.z.object({role:cn,name:s.z.string().trim().min(1).max(255),mountPath:s.z.string().trim().startsWith("/").max(4096),status:s.z.enum(["deleted","retained","missing","failed"]),error:s.z.object({code:s.z.string().trim().min(1).max(120),message:s.z.string().trim().min(1).max(2048)}).strict().optional()}).strict(),un=s.z.object({instanceId:Vt,containerDeleted:s.z.boolean(),completed:s.z.boolean(),deletedVolumes:s.z.array(ln),retainedVolumes:s.z.array(ln),volumeResults:s.z.array(ln)}).strict(),pn={img_default:"market_taskhandoff_browser",img_codex:"market_taskhandoff_codex",img_ai:"market_taskhandoff_ai"};function gn(e,t){if(e&&"object"==typeof e&&!Array.isArray(e)){const t=e;return{imageId:"string"==typeof t.imageId&&pn[t.imageId]||t.imageId,..."string"==typeof t.tag?{tag:t.tag}:{}}}if("string"==typeof t)return{imageId:pn[t]||t}}const zn=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(120),kind:s.z.enum(["tty","gui","web"]),source:s.z.enum(["builtin","custom"]),availability:s.z.enum(["available","missing-dependency"]),capabilities:s.z.object({automation:s.z.enum(["cdp"]).optional(),supportsCwdSelection:s.z.boolean().default(!1)}).strict().default({supportsCwdSelection:!1}),diagnosticCode:s.z.enum(["APP_EXECUTABLE_NOT_FOUND"]).optional()}).strict(),fn=s.z.object({code:s.z.enum(["APP_CATALOG_INVALID"]),message:s.z.string().trim().min(1).max(500)}).strict(),bn=s.z.object({items:s.z.array(zn).max(256),observedAt:qt,issues:s.z.array(fn).max(32).default([])}).strict(),yn=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(160),sourceInstanceId:Vt,nodeId:Vt,imageId:Qt.optional(),internalTag:s.z.string().trim().min(1).max(512).optional(),platform:rn.optional(),architecture:an.optional(),sizeBytes:s.z.number().int().nonnegative().optional(),status:on,error:sn.optional(),createdAt:qt,updatedAt:qt}).strict().superRefine((e,t)=>{if("ready"===e.status)for(const n of["imageId","internalTag","platform","architecture","sizeBytes"])void 0===e[n]&&t.addIssue({code:"custom",path:[n],message:`Ready environment template requires ${n}.`});"failed"!==e.status||e.error||t.addIssue({code:"custom",path:["error"],message:"Failed environment template requires an error diagnostic."})}),hn=s.z.enum(["apt","dnf","brew","npm"]),xn=s.z.enum(["user","passwordless-sudo","root"]),In=s.z.object({platform:rn,arch:an,installers:s.z.array(hn).max(8),privilege:xn,installerAccess:s.z.object({npmGlobalWritable:s.z.boolean().optional()}).strict().optional()}).strict(),vn=s.z.enum(["installed","not-installed","broken","unsupported"]),An=s.z.enum(["recipe","bundled","external","none"]),Sn=s.z.object({code:s.z.enum(["BUNDLED","EXTERNALLY_MANAGED","ALREADY_INSTALLED","NOT_INSTALLED","UNSUPPORTED_PLATFORM","INSTALLER_UNAVAILABLE","INSTALLER_NOT_WRITABLE","INSUFFICIENT_PRIVILEGE","OPERATION_IN_PROGRESS"]),message:s.z.string().trim().min(1).max(500)}).strict(),kn=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(120),kind:s.z.enum(["tty","gui","web"]),description:s.z.string().trim().max(500).optional(),state:vn,managementSource:An,version:s.z.string().trim().max(120).optional(),canInstall:s.z.boolean(),canUninstall:s.z.boolean(),installReason:Sn.optional(),uninstallReason:Sn.optional(),activeJobId:Vt.optional()}).strict(),jn=s.z.enum(["install","uninstall"]),wn=s.z.enum(["queued","running","succeeded","failed","cancelled","interrupted"]),Cn=s.z.object({current:s.z.number().finite().nonnegative().optional(),total:s.z.number().finite().positive().optional(),unit:s.z.string().trim().min(1).max(40).optional()}).strict().refine(e=>void 0===e.total||void 0===e.current||e.current<=e.total,{message:"Progress current must not exceed total.",path:["current"]}),En=s.z.object({executable:s.z.string().trim().min(1).max(4096),args:s.z.array(s.z.string().max(4096)).max(128)}).strict(),Nn=s.z.object({code:s.z.string().trim().min(1).max(120).regex(/^[a-z0-9][a-z0-9._-]*$/),message:s.z.string().trim().min(1).max(4096),retryable:s.z.boolean(),sessionIds:s.z.array(Vt).max(64).optional()}).strict(),Rn=s.z.object({id:Vt,requestId:Vt.optional(),appId:Vt,operation:jn,state:wn,phase:s.z.string().trim().min(1).max(120).optional(),progress:Cn.optional(),command:En.optional(),logTail:s.z.string().max(32768).optional(),logTruncated:s.z.boolean().optional(),error:Nn.optional(),requestedAt:qt,startedAt:qt.optional(),finishedAt:qt.optional(),updatedAt:qt}).strict(),Tn=s.z.object({streamId:Vt,sequence:s.z.number().int().nonnegative(),capabilities:In,apps:s.z.array(kn).max(256),activeJobs:s.z.array(Rn).max(256),recentJobs:s.z.array(Rn).max(256),observedAt:qt}).strict(),Pn=s.z.object({requestId:Vt.optional()}).strict(),_n=s.z.object({job:Rn}).strict(),On=s.z.object({type:s.z.literal("app-management"),streamId:Vt,sequence:s.z.number().int().nonnegative(),observedAt:qt,job:Rn.optional(),snapshot:Tn.optional()}).strict().refine(e=>void 0!==e.job||void 0!==e.snapshot,{message:"An app management event requires a job or snapshot."}),Mn=s.z.object({component:s.z.enum(["control-plane","node-agent","controlled-instance"]),packageName:s.z.string().trim().max(160).optional(),packageVersion:s.z.string().trim().max(80).optional(),protocolVersion:vt.optional(),buildId:s.z.string().trim().max(160).optional(),builtAt:s.z.string().trim().max(120).optional(),gitCommit:s.z.string().trim().max(120).optional(),imageRef:s.z.string().trim().max(512).optional(),imageDigest:s.z.string().trim().max(240).optional()}).strict(),Ln=s.z.object({data:s.z.object({ok:s.z.literal(!0),role:s.z.literal("control-plane"),protocolVersion:vt,build:Mn.extend({component:s.z.literal("control-plane"),packageVersion:s.z.string().trim().min(1).max(80)}).loose(),serverTime:qt}).loose()}).loose(),Dn=s.z.enum(["stable","beta","alpha"]),Un=s.z.object({packageName:s.z.literal("@task-handoff/controlled-instance"),version:s.z.string().trim().min(1).max(80),platform:s.z.string().trim().min(1).max(40),arch:s.z.string().trim().min(1).max(40),formatVersion:s.z.number().int().positive(),launcherAbi:s.z.number().int().positive(),entrypoint:s.z.string().trim().min(1).max(512),sha256:s.z.string().regex(/^[a-f0-9]{64}$/)}).strict(),Fn=s.z.object({code:s.z.enum(["INSTANCE_RUNTIME_VERSION_MISMATCH","INSTANCE_RUNTIME_ARTIFACT_UNAVAILABLE","INSTANCE_RUNTIME_ARTIFACT_INVALID","INSTANCE_RUNTIME_INSTALL_FAILED","INSTANCE_RUNTIME_RESTART_FAILED","INSTANCE_RUNTIME_VERIFICATION_FAILED","INSTANCE_BASE_RUNTIME_INCOMPATIBLE","NODE_UPDATE_PREFLIGHT_FAILED","NODE_UPDATE_FAILED","LEGACY_INSTANCE_UPDATE_RETIRED"]),message:s.z.string().trim().min(1).max(4096),expectedVersion:s.z.string().trim().min(1).max(80).optional(),actualVersion:s.z.string().trim().min(1).max(80).optional(),retryable:s.z.boolean().default(!1)}).strict(),Vn=s.z.object({desiredVersion:s.z.string().trim().min(1).max(80),actualVersion:s.z.string().trim().min(1).max(80).optional(),phase:s.z.enum(["pending","draining","installing","restarting","verifying","matched","failed"]),attempt:s.z.number().int().nonnegative().default(0),lastAttemptAt:qt.optional(),matchedAt:qt.optional(),error:Fn.optional()}).strict(),qn=s.z.object({runningInstanceCount:s.z.number().int().nonnegative(),stoppedInstanceCount:s.z.number().int().nonnegative(),activeInstanceCount:s.z.number().int().nonnegative(),restartInstanceCount:s.z.number().int().nonnegative(),runningInstanceIds:s.z.array(Vt).max(1024).default([]),stoppedInstanceIds:s.z.array(Vt).max(1024).default([]),activeInstanceIds:s.z.array(Vt).max(1024).default([])}).strict(),$n=s.z.object({phase:s.z.enum(["queued","updating-node","restarting-node","converging-instances","succeeded","degraded","failed"]),desiredVersion:s.z.string().trim().min(1).max(80),nodeVersion:s.z.string().trim().min(1).max(80).optional(),expectedInstanceIds:s.z.array(Vt).max(1024).default([]),expectedInstanceCount:s.z.number().int().nonnegative(),matchedInstanceCount:s.z.number().int().nonnegative(),pendingInstanceCount:s.z.number().int().nonnegative(),failedInstanceCount:s.z.number().int().nonnegative(),deferredInstanceCount:s.z.number().int().nonnegative().default(0)}).strict(),Hn=s.z.object({channel:Dn.default("stable")}).strict(),Bn=s.z.object({source:s.z.literal("npm"),channel:Dn,currentVersion:s.z.string().trim().max(240).optional(),availableVersion:s.z.string().trim().min(1).max(240),artifactRef:s.z.string().trim().min(1).max(512).optional(),runtimeArtifacts:s.z.array(Un).default([]),impact:qn,updateAvailable:s.z.boolean(),supported:s.z.boolean().default(!0),reason:s.z.string().trim().max(2048).optional(),checkedAt:qt,preflightToken:s.z.string().trim().min(16).max(240).optional()}).strict(),Gn=s.z.object({id:Vt,nodeId:Vt,source:s.z.literal("npm"),channel:Dn,fromVersion:s.z.string().trim().max(240).optional(),toVersion:s.z.string().trim().min(1).max(240),artifactRef:s.z.string().trim().min(1).max(512).optional(),runtimeArtifacts:s.z.array(Un).default([]),impact:qn,rollout:$n,status:s.z.enum(["queued","updating-node","restarting-node","converging-instances","succeeded","degraded","failed"]),error:Fn.optional(),startedAt:qt.optional(),completedAt:qt.optional(),createdAt:qt,updatedAt:qt}).strict(),Kn=s.z.object({channel:Dn,targetVersion:s.z.string().trim().min(1).max(240),preflightToken:s.z.string().trim().min(16).max(240)}).strict(),Wn=s.z.object({type:s.z.enum(["branch","tag"]),name:s.z.string().trim().min(1).max(240)}).strict(),Yn=s.z.object({type:s.z.literal("commit"),commit:s.z.string().trim().regex(/^[0-9a-fA-F]{4,64}$/,"commit must be a hexadecimal Git object id")}).strict(),Xn=s.z.discriminatedUnion("type",[Wn,Yn]),Jn=s.z.object({type:s.z.enum(["none","ssh-key","https-token"]).default("none"),secretId:s.z.string().trim().min(1).max(120).optional()}).strict(),Zn=s.z.object({depth:s.z.number().int().positive().max(1e5).optional(),submodules:s.z.boolean().default(!1),lfs:s.z.boolean().default(!1),subdirectory:s.z.string().trim().max(240).refine(e=>!e.startsWith("/")&&!e.split("/").some(e=>".."===e),"subdirectory must be a relative path within the repository").transform(e=>e.split("/").filter(e=>e&&"."!==e).join("/")).default("")}).strict(),Qn=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(160),url:s.z.string().trim().min(1).max(2048),provider:s.z.string().trim().max(80).optional(),ref:Xn.default({type:"branch",name:"main"}),auth:Jn.default({type:"none"}),clone:Zn.default({submodules:!1,lfs:!1,subdirectory:""}),defaultImageSelection:tn.optional(),labels:$t,createdAt:qt,updatedAt:qt}).strict(),ei=s.z.object({id:Vt,nodeId:Vt,name:s.z.string().trim().min(1).max(160),path:s.z.string().trim().min(1).max(4096),defaultImageSelection:tn.optional(),labels:$t,createdAt:qt,updatedAt:qt}).strict(),ti=s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("git-repository"),repositoryId:Vt.optional(),url:s.z.string().trim().min(1).max(2048),provider:s.z.string().trim().max(80).optional(),ref:Xn.default({type:"branch",name:"main"}),auth:Jn.default({type:"none"}),clone:Zn.default({submodules:!1,lfs:!1,subdirectory:""})}).strict(),s.z.object({type:s.z.literal("git-template"),url:s.z.string().trim().min(1).max(2048),templateId:s.z.string().trim().min(1).max(120).optional(),ref:Xn.default({type:"branch",name:"main"}),auth:Jn.default({type:"none"}),clone:Zn.default({submodules:!1,lfs:!1,subdirectory:""})}).strict(),s.z.object({type:s.z.literal("local-folder"),localFolderId:Vt.optional(),path:s.z.string().trim().min(1).max(4096),ownerNodeId:Vt.optional()}).strict()]);function ni(e){const t=ti.parse(e);return"local-folder"===t.type?t:ti.parse({...t,auth:{type:"none"}})}const ii=ni,oi=s.z.object({mode:s.z.enum(["local-bind","git-clone","empty-volume","persistent-volume"]),path:s.z.string().trim().min(1).max(4096).default("/workspace"),volumeName:s.z.string().trim().max(240).optional(),readOnly:s.z.boolean().default(!1)}).strict(),ri=s.z.enum(["codex","claude","opencode"]),ai=s.z.enum(["openai-responses","openai-chat-completions","anthropic-messages"]),si=s.z.object({name:s.z.string().trim().min(1).max(240),order:s.z.number().int().min(0).max(1e6).default(0)}).strict(),di=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(160),source:ti,defaultImageSelection:tn.optional(),defaultNodeId:Vt.optional(),workspacePolicy:oi,labels:$t,createdAt:qt,updatedAt:qt}).strict(),ci=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(160),endpoint:s.z.string().trim().min(1).max(2048),key:s.z.string().trim().min(1).max(4096),model:s.z.string().trim().min(1).max(240),modelNames:s.z.array(si).max(256).default([]),protocols:s.z.array(ai).max(3).default([]),app:ri,enabled:s.z.boolean().default(!0),order:s.z.number().int().min(0).max(1e6).default(0),labels:$t,createdAt:qt,updatedAt:qt}).strict(),mi=ci,li=ci.omit({key:!0}).extend({keyPreview:s.z.string().trim().min(1).max(160),keySet:s.z.boolean()}).strict(),ui=li.extend({referenceCount:s.z.number().int().min(0)}).strict(),pi=s.z.object({instanceId:Vt,modelEntityIds:s.z.array(Vt).max(64).transform(e=>[...new Set(e)]).optional(),codexModelHash:Vt.optional(),claudeModelHash:Vt.optional(),opencodeModelHash:Vt.optional(),updatedAt:qt}).strict().transform(e=>({...e,modelEntityIds:e.modelEntityIds?.length?e.modelEntityIds:[...new Set([e.codexModelHash,e.claudeModelHash,e.opencodeModelHash].filter(e=>Boolean(e)))]})),gi=s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("control-plane"),name:ci.shape.name,enabled:ci.shape.enabled,order:ci.shape.order}).strict(),s.z.object({type:s.z.literal("node"),nodeId:Vt,name:ci.shape.name,enabled:ci.shape.enabled,order:ci.shape.order,referenceCount:s.z.number().int().min(0)}).strict()]),zi=s.z.object({id:Vt,model:li,locations:s.z.array(gi).min(1),referenceCount:s.z.number().int().min(0).default(0)}).strict(),fi=s.z.object({nodeId:Vt,code:s.z.string().trim().min(1).max(120),message:s.z.string().trim().min(1).max(2e3)}).strict(),bi=s.z.object({models:s.z.array(zi),nodeDiagnostics:s.z.array(fi).default([]),updatedAt:qt}).strict(),yi=ci.omit({id:!0,createdAt:!0,updatedAt:!0}).strict(),hi=yi.partial().strict(),xi=ci,Ii=s.z.object({modelSelection:en,modelEntityIds:s.z.array(Vt).max(64).transform(e=>[...new Set(e)]).optional(),codexModelHash:Vt.optional(),claudeModelHash:Vt.optional(),opencodeModelHash:Vt.optional()}).strict().transform(e=>({...e,modelEntityIds:e.modelEntityIds||e.modelSelection.modelEntityIds||[...new Set([e.codexModelHash,e.claudeModelHash,e.opencodeModelHash].filter(e=>Boolean(e)))]})),vi=s.z.enum(["market","custom"]),Ai=s.z.enum(["active","deprecated","yanked"]),Si=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("builtin"),key:s.z.string().trim().min(1).max(120)}).strict(),s.z.object({kind:s.z.literal("remote"),url:s.z.string().trim().url().max(2048),mediaType:s.z.enum(["image/png","image/jpeg","image/webp"]).optional(),digest:Qt.optional()}).strict()]),ki=s.z.array(s.z.string().trim().min(1).max(80)).default([]),ji=s.z.array(s.z.string().trim().min(1).max(120)).default([]),wi=s.z.record(s.z.string().trim().min(2).max(35),s.z.string().trim().min(1).max(4096)),Ci=s.z.object({os:s.z.string().trim().min(1).max(40),architecture:s.z.string().trim().min(1).max(40),digest:Qt.optional(),downloadSizeBytes:s.z.number().int().positive().optional(),unpackedSizeBytes:s.z.number().int().positive().optional()}).strict(),Ei=s.z.object({name:s.z.string().trim().min(1).max(128).regex(Gt),version:s.z.string().trim().min(1).max(160).optional(),reference:Zt,manifestDigest:Qt.optional(),publishedAt:qt.optional(),platforms:s.z.array(Ci).default([]),status:Ai.default("active")}).strict(),Ni=s.z.object({id:Vt,publisher:s.z.string().trim().min(1).max(160),slug:s.z.string().trim().min(1).max(160),name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().min(1).max(4096),localizedDescriptions:wi.optional(),cover:Si.optional(),repository:s.z.string().trim().min(1).max(512),defaultTag:s.z.string().trim().min(1).max(128).regex(Gt),tags:s.z.array(Ei).min(1),capabilities:ki,optionalApps:ji,defaultEnv:Ht,labels:$t,status:Ai.default("active")}).strict().superRefine((e,t)=>{e.tags.some(t=>t.name===e.defaultTag)||t.addIssue({code:"custom",path:["defaultTag"],message:"Market defaultTag must identify one of the image tags."})}),Ri=s.z.object({protocolVersion:vt,catalogId:Vt,revision:s.z.string().trim().min(1).max(240),source:s.z.enum(["embedded","remote","cache"]),generatedAt:qt,expiresAt:qt.optional(),items:s.z.array(Ni)}).strict(),Ti=s.z.object({source:s.z.enum(["embedded","remote","cache"]),state:s.z.enum(["ready","refreshing","stale","failed"]),revision:s.z.string().trim().min(1).max(240),updatedAt:qt,error:s.z.string().trim().max(4096).optional()}).strict(),Pi=s.z.object({id:Vt,origin:s.z.literal("custom"),name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(4096).optional(),localizedDescriptions:wi.optional(),cover:Si.optional(),reference:Zt,repository:s.z.string().trim().min(1).max(512),tag:s.z.string().trim().min(1).max(128).regex(Gt).optional(),pullPolicy:s.z.literal("if-not-present").default("if-not-present"),capabilities:ki,optionalApps:ji,defaultEnv:Ht,labels:$t,createdAt:qt,updatedAt:qt}).strict(),_i=Pi,Oi=s.z.object({name:s.z.string().trim().min(1).max(128).regex(Gt),version:s.z.string().trim().min(1).max(160).optional(),reference:Zt,manifestDigest:Qt.optional(),status:Ai}).strict(),Mi=s.z.object({id:Vt,origin:vi,name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(4096).optional(),localizedDescriptions:wi.optional(),cover:Si,repository:s.z.string().trim().min(1).max(512),tag:s.z.string().trim().min(1).max(128).regex(Gt).optional(),availableTags:s.z.array(Oi),reference:Zt,digest:Qt.optional(),downloadSizeBytes:s.z.number().int().positive().optional(),unpackedSizeBytes:s.z.number().int().positive().optional(),capabilities:ki,optionalApps:ji,defaultEnv:Ht,labels:$t,readOnly:s.z.boolean(),lifecycleStatus:Ai.optional(),market:s.z.object({catalogId:Vt,catalogRevision:s.z.string().trim().min(1).max(240),publisher:s.z.string().trim().min(1).max(160),version:s.z.string().trim().min(1).max(160).optional()}).strict().optional()}).strict(),Li=s.z.object({id:Vt,origin:vi,name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(4096).optional(),localizedDescriptions:wi.optional(),cover:Si.optional(),repository:s.z.string().trim().min(1).max(512),tag:s.z.string().trim().min(1).max(128).regex(Gt).optional(),requestedReference:Zt,resolvedDigest:Qt.optional(),resolvedReference:Zt.optional(),downloadSizeBytes:s.z.number().int().positive().optional(),pullPolicy:s.z.literal("if-not-present").default("if-not-present"),capabilities:ki,optionalApps:ji,defaultEnv:Ht,labels:$t,market:s.z.object({catalogId:Vt,catalogRevision:s.z.string().trim().min(1).max(240),publisher:s.z.string().trim().min(1).max(160),version:s.z.string().trim().min(1).max(160).optional()}).strict().optional(),createdAt:qt,updatedAt:qt}).strict(),Di=s.z.object({phase:s.z.enum(["checking-image","pulling-image","resolving-image","ready","failed"]),requestedReference:Zt,generation:s.z.number().int().nonnegative().default(0),error:s.z.string().trim().max(4096).optional(),startedAt:qt,updatedAt:qt}).strict(),Ui=s.z.object({instanceId:Vt,generation:s.z.number().int().nonnegative(),requestedReference:Zt,sequence:s.z.number().int().nonnegative(),observedAt:qt}).strict(),Fi=Ui.extend({data:s.z.string().min(1).max(65536),replay:s.z.boolean().optional()}).strict(),Vi=Ui.extend({outcome:s.z.enum(["succeeded","failed"])}).strict(),qi=Ui.extend({status:s.z.enum(["connecting","pulling","extracting","complete","failed"]),layers:s.z.object({total:s.z.number().int().nonnegative(),completed:s.z.number().int().nonnegative(),downloaded:s.z.number().int().nonnegative(),downloading:s.z.number().int().nonnegative(),extracting:s.z.number().int().nonnegative()}).strict(),bytes:s.z.object({current:s.z.number().finite().nonnegative(),total:s.z.number().finite().positive()}).strict().optional(),percent:s.z.number().finite().min(0).max(100).optional(),message:s.z.string().trim().min(1).max(500),terminalTail:s.z.string().max(262144).optional(),terminalTruncated:s.z.boolean().optional()}).strict();function $i(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(["id","origin","name","description","localizedDescriptions","cover","reference","repository","tag","image","registry","pullPolicy","capabilities","optionalApps","defaultEnv","labels","createdAt","updatedAt"]);for(const e of Object.keys(n))i.has(e)||t?.({imageId:"string"==typeof n.id?n.id:void 0,field:e});const o="string"==typeof n.id?n.id:void 0,r="string"==typeof n.image?n.image:void 0;void 0!==r&&t?.({imageId:o,field:"image"}),Object.prototype.hasOwnProperty.call(n,"registry")&&t?.({imageId:o,field:"registry"});let a,s="string"==typeof n.reference?n.reference:r;if(s)try{s=Xt(s)}catch{if(!s.includes("@")&&s.lastIndexOf(":")<=s.lastIndexOf("/"))try{s=Xt(`${s}:latest`),t?.({imageId:o,field:"reference:implicit-latest"})}catch{}}try{a=s?Jt(s):void 0}catch{}return{id:n.id,origin:"custom",name:n.name,description:n.description,localizedDescriptions:n.localizedDescriptions,cover:_o(n.cover,["kind","key","url","mediaType","digest"]),reference:a?.reference??s,repository:a?.repository??n.repository,tag:a?.tag??n.tag,pullPolicy:n.pullPolicy??"if-not-present",capabilities:n.capabilities,optionalApps:n.optionalApps,defaultEnv:n.defaultEnv,labels:n.labels,createdAt:n.createdAt,updatedAt:n.updatedAt}}const Hi=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("direct")}).strict(),s.z.object({kind:s.z.literal("control-plane-proxy"),proxyId:Vt,proxyBindingId:Vt,targetNodeId:Vt}).strict()]),Bi=s.z.object({pingRttMs:s.z.number().nonnegative().optional(),pingRttP95Ms:s.z.number().nonnegative().optional(),consecutiveReconnects:s.z.number().int().nonnegative(),nextRetryAt:qt.optional()}).strict(),Gi=s.z.object({nodeId:Vt,inviteId:Vt.optional()}).strict(),Ki=s.z.discriminatedUnion("status",[s.z.object({id:Vt,status:s.z.literal("pending")}).strict(),s.z.object({id:Vt,status:s.z.literal("completed"),nodeId:Vt}).strict()]),Wi=s.z.object({reachability:s.z.enum(["unknown","reachable","unreachable"]),bindingStatus:s.z.enum(["unknown","active","revoked"]),bindingRevision:s.z.number().int().positive().optional(),streamId:s.z.string().trim().min(1).max(160).optional(),revision:s.z.number().int().nonnegative().optional(),observedAt:qt.optional(),target:ct.optional(),lastError:ot.optional(),updatedAt:qt}).strict(),Yi=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(160),connectionMode:s.z.enum(["local-ipc","local-loopback","direct-http","reverse-wss","control-plane-proxy"]).default("direct-http"),connectionPath:Hi.default({kind:"direct"}),connectionEnabled:s.z.boolean().default(!0),auth:s.z.object({mode:s.z.enum(["local-static-key","paired-hmac","proxy-binding"]).default("local-static-key"),keyId:Vt.optional(),secret:s.z.string().trim().max(4096).optional(),pairedAt:qt.optional(),pairing:s.z.object({status:s.z.enum(["pending","paired","expired"]).default("pending"),joinToken:s.z.string().trim().max(4096).optional(),expiresAt:qt.optional()}).strict().optional()}).strict().default({mode:"local-static-key"}),endpoint:s.z.string().trim().max(2048).optional(),controlEndpoint:s.z.string().trim().max(2048).optional(),containerEndpoint:s.z.string().trim().max(2048).optional(),publicWebBase:s.z.string().trim().max(2048).optional(),status:s.z.enum(["unknown","online","offline","degraded"]).default("unknown"),health:s.z.enum(["unknown","ok","degraded","failed"]).default("unknown"),capabilities:s.z.record(s.z.string(),s.z.unknown()).default({}),proxyState:Wi.optional(),appInventory:bn.optional(),labels:$t,lastSeenAt:qt.optional(),createdAt:qt,updatedAt:qt}).strict().superRefine((e,t)=>{"control-plane-proxy"===e.connectionPath.kind&&"control-plane-proxy"!==e.connectionMode&&t.addIssue({code:"custom",path:["connectionPath"],message:"Control-plane proxy paths require control-plane-proxy connection mode."}),"control-plane-proxy"===e.connectionMode&&"control-plane-proxy"!==e.connectionPath.kind&&t.addIssue({code:"custom",path:["connectionPath"],message:"Control-plane proxy nodes require a control-plane-proxy connection path."})}),Xi=s.z.object({nodeId:Vt,status:s.z.enum(["unknown","online","offline","degraded"]),health:s.z.enum(["unknown","ok","degraded","failed"]),lastSeenAt:qt.nullable(),connectionPhase:s.z.enum(["connecting","handshaking","healthy","reconnecting","suspect","offline"]).nullable(),connectionDiagnostics:Bi.nullable(),proxyState:Wi.nullable()}).strict(),Ji=s.z.object({id:Vt,nodeId:Vt,name:s.z.string().trim().min(1).max(160),type:s.z.enum(["docker","kubernetes","local"]),status:s.z.enum(["unknown","online","offline","degraded"]).default("unknown"),accessStrategy:s.z.enum(["node-proxy","direct-port","kubernetes-ingress","kubernetes-port-forward"]).default("node-proxy"),capabilities:s.z.record(s.z.string(),s.z.unknown()).default({}),labels:$t,createdAt:qt,updatedAt:qt}).strict(),Zi=s.z.object({instanceId:Vt,runtimeKind:s.z.literal("docker"),state:s.z.enum(["pending","available","stopped","unavailable"]),sampledAt:qt,cpu:s.z.object({usagePercent:s.z.number().nonnegative()}).strict().optional(),memory:s.z.object({usageBytes:s.z.number().nonnegative(),limitBytes:s.z.number().nonnegative().optional(),usagePercent:s.z.number().nonnegative().optional()}).strict().optional(),network:s.z.object({rxBytes:s.z.number().nonnegative(),txBytes:s.z.number().nonnegative()}).strict().optional(),blockIo:s.z.object({readBytes:s.z.number().nonnegative(),writeBytes:s.z.number().nonnegative()}).strict().optional(),pids:s.z.number().int().nonnegative().optional(),error:s.z.string().trim().max(2048).optional()}).strict(),Qi=s.z.object({registry:s.z.boolean().default(!1),runtimeBroker:s.z.boolean().default(!1),workspaceProvisioning:s.z.object({docker:s.z.boolean().default(!1),kubernetes:s.z.boolean().default(!1),local:s.z.boolean().default(!1)}).strip().default({docker:!1,kubernetes:!1,local:!1})}).strip(),eo=s.z.object({multiEntityAssignment:s.z.boolean().default(!1),privateModelCatalog:s.z.boolean().default(!1)}).strip(),to=s.z.object({enabled:s.z.boolean().default(!1),agentTools:s.z.boolean().default(!1),sessionRetention:s.z.boolean().default(!1),maxFileBytes:s.z.number().int().positive().default(33554432),maxBatchPaths:s.z.number().int().min(1).max(100).default(20)}).strip(),no=s.z.object({modelEndpointProbe:s.z.boolean().optional(),aiSessionHistoryLimit:s.z.boolean().optional(),aiSessionAttachmentRetention:s.z.boolean().optional(),aiSessionFileAttachmentLimit:s.z.boolean().optional(),folderPlaces:s.z.boolean().optional(),localFolderNameUpdate:s.z.boolean().optional(),managedGitCredentials:Qi.optional(),managedModels:eo.optional(),stories:to.optional(),codexManagedSettings:s.z.boolean().optional()}).strip();function io(e){const t=no.safeParse(e),n=t.success?t.data:{};return{...n,managedGitCredentials:Qi.parse(n.managedGitCredentials||{}),managedModels:eo.parse(n.managedModels||{}),stories:to.parse(n.stories||{})}}const oo=s.z.object({status:s.z.enum(["healthy","congested","recovering"]),activeOutputs:s.z.number().int().nonnegative(),bufferedBytes:s.z.number().int().nonnegative(),peakBufferedBytes:s.z.number().int().nonnegative(),coalescedEvents:s.z.number().int().nonnegative(),oversizedEvents:s.z.number().int().nonnegative().optional(),peakEventBytes:s.z.number().int().nonnegative().optional(),congestedSince:qt.optional(),lastCongestedAt:qt.optional()}).strip(),ro=s.z.object({ok:s.z.boolean().optional(),role:s.z.string().optional(),nodeId:Vt.optional(),platform:rn.optional(),arch:an.optional(),protocolVersion:vt.optional(),capabilities:no.optional(),build:Mn.strip().optional(),process:s.z.object({pid:s.z.number().int().positive(),startIdentity:s.z.string().trim().min(1).optional()}).strip().optional(),listener:s.z.object({host:s.z.string().trim().min(1),port:s.z.number().int().min(1).max(65535)}).strip().optional(),instanceProxy:s.z.object({requests:s.z.number().int().nonnegative(),active:s.z.number().int().nonnegative(),completed:s.z.number().int().nonnegative(),aborted:s.z.number().int().nonnegative(),limitRejected:s.z.number().int().nonnegative(),responseBytes:s.z.number().nonnegative(),totalDurationMs:s.z.number().nonnegative(),maxResponseBytes:s.z.number().int().nonnegative()}).partial().strip().optional(),eventTransport:oo.optional(),serverTime:qt.optional()}).strip(),ao=s.z.object({bindScope:s.z.enum(["loopback","all-ipv4"]),port:s.z.number().int().min(1).max(65535)}).strict(),so=ao.extend({host:s.z.enum(["127.0.0.1","0.0.0.0"]),status:s.z.enum(["listening","error"]),source:s.z.enum(["bootstrap","persisted"]),error:s.z.string().trim().max(2048).optional()}).strict(),co=ao,mo=s.z.object({nodeId:Vt,joinToken:s.z.string().trim().min(1),expiresAt:qt}).passthrough(),lo=s.z.object({nodeId:Vt,keyId:Vt,secret:s.z.string().regex(/^[A-Za-z0-9_-]{32,128}$/),pairedAt:qt}).strict(),uo=s.z.object({id:Vt,keyId:Vt,name:s.z.string().trim().min(1).max(160).optional(),pairedAt:qt,updatedAt:qt,current:s.z.boolean()}).passthrough(),po=s.z.object({keyId:Vt,revoked:s.z.literal(!0),revokedAt:qt}).strict(),go=s.z.object({id:Vt,pairingKeyId:Vt,url:s.z.string().trim().min(1).max(2048),name:s.z.string().trim().min(1).max(160).optional(),enabled:s.z.boolean(),createdAt:qt,updatedAt:qt,status:s.z.enum(["disabled","connecting","connected","reconnecting","failed"]),pingRttMs:s.z.number().nonnegative().optional(),pingRttP95Ms:s.z.number().nonnegative().optional(),consecutiveReconnects:s.z.number().int().nonnegative().optional(),nextRetryAt:qt.optional(),lastConnectedAt:qt.optional(),lastDisconnectedAt:qt.optional(),error:s.z.string().optional()}).passthrough(),zo=s.z.object({pairing:uo,connection:s.z.object({id:Vt,pairingKeyId:Vt,url:s.z.string().trim().min(1).max(2048),name:s.z.string().trim().min(1).max(160).optional(),enabled:s.z.boolean(),createdAt:qt,updatedAt:qt}).passthrough(),tunnel:s.z.object({status:s.z.enum(["disabled","saved","connecting","connected","failed"]),error:s.z.string().trim().max(2048).optional()}).passthrough()}).passthrough(),fo=s.z.object({deleted:s.z.boolean().optional()}).passthrough(),bo=s.z.object({repository:s.z.string().trim().optional(),tag:s.z.string().trim().optional(),id:s.z.string().trim(),createdSince:s.z.string().trim().optional(),size:s.z.string().trim().optional(),sizeBytes:s.z.number().int().nonnegative().optional(),reference:s.z.string().trim().min(1),repoDigests:s.z.array(s.z.string().trim().min(1).max(512)).default([])}).passthrough(),yo=s.z.object({image:Mi,status:s.z.enum(["available","pull-required","unknown"]),localImage:bo.optional(),localSizeBytes:s.z.number().int().nonnegative().optional(),downloadSizeBytes:s.z.number().int().positive().optional(),unpackedSizeBytes:s.z.number().int().positive().optional(),error:s.z.string().trim().max(2048).optional()}).strict(),ho=s.z.lazy(()=>s.z.object({name:s.z.string().trim().min(1),path:s.z.string().trim().min(1).max(4096),children:s.z.array(ho)}).passthrough()),xo=s.z.object({kind:s.z.enum(["home","root"]),name:s.z.string().trim().min(1),path:s.z.string().trim().min(1).max(4096)}).passthrough(),Io=s.z.object({status:s.z.number().int().min(100).max(599).optional(),headers:s.z.record(s.z.string(),s.z.string()).optional(),bodyBase64:s.z.string().optional()}).passthrough(),vo=s.z.object({strategy:s.z.enum(["node-proxy","direct-port","kubernetes-ingress","kubernetes-port-forward"]).default("node-proxy"),web:s.z.string().trim().max(2048).optional(),api:s.z.string().trim().max(2048).optional(),vnc:s.z.string().trim().max(2048).optional(),tty:s.z.string().trim().max(2048).optional(),logs:s.z.string().trim().max(2048).optional(),status:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown")}).strict(),Ao=s.z.object({...vo.shape}).strict(),So=s.z.object({strategy:s.z.enum(["control-plane-proxy","direct-port","node-proxy","kubernetes-ingress","kubernetes-port-forward"]).default("control-plane-proxy"),web:s.z.string().trim().max(2048).optional(),api:s.z.string().trim().max(2048).optional(),ws:s.z.string().trim().max(2048).optional(),status:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown")}).strict().default({strategy:"control-plane-proxy",status:"unknown"}),ko=s.z.object({mode:s.z.enum(["local-bind","git-clone","empty-volume","persistent-volume"]).optional(),status:s.z.enum(["unknown","pending","ready","failed"]).default("unknown"),path:s.z.string().trim().max(4096).optional(),resolvedCommit:s.z.string().trim().max(120).optional(),error:s.z.string().trim().max(2048).optional()}).passthrough(),jo=s.z.object({id:Vt,name:s.z.string().trim().min(1).max(160),projectId:Vt.optional(),source:ti,sourceSnapshot:s.z.record(s.z.string(),s.z.unknown()).default({}),modelSelection:en,nodeId:Vt,runtimeId:Vt,imageSelection:tn.optional(),environmentSource:nn.optional(),environmentTemplateOrigin:dn.optional(),imageSnapshot:Li.optional(),imageProvisioning:Di.optional(),stateRevision:s.z.number().int().min(0).default(0),processIncarnationId:s.z.string().trim().min(1).max(120).optional(),status:s.z.enum(["created","provisioning","starting","registering","registered","running","stopping","stopped","deleting","failed","unhealthy"]).default("created"),health:s.z.enum(["unknown","ok","degraded","failed"]).default("unknown"),connectionStatus:s.z.enum(["unknown","online","offline","endpoint-unreachable"]).default("unknown"),agentStatus:s.z.enum(["unknown","online","offline"]).default("unknown"),targetStatus:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown"),uiAccessStatus:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown"),controlMode:s.z.enum(["standalone","controlled"]).default("controlled"),protocolVersion:vt.optional(),instanceVersion:s.z.string().trim().max(80).optional(),build:Mn.optional(),runtimeVersion:Vn.optional(),ready:s.z.boolean().default(!1),capabilities:Pt.default(Et),appInventory:bn.optional(),config:s.z.object({autoImportAgentConfigs:s.z.boolean().default(!0),codexConfigEnabled:s.z.boolean().default(!0),codexHomeMode:s.z.enum(["default","taskhandoff"]).default("taskhandoff"),defaultCodexPermissionMode:X.default("ask"),codexSettings:wt.optional(),aiSessionHistoryLimit:s.z.number().int().min(1).max(500).default(50),aiSessionAttachmentRetentionDays:s.z.number().int().min(0).max(365).default(30),aiSessionMaxFileAttachmentBytes:s.z.number().int().positive().max(f).default(z)}).strict().default({autoImportAgentConfigs:!0,codexConfigEnabled:!0,codexHomeMode:"taskhandoff",defaultCodexPermissionMode:"ask",aiSessionHistoryLimit:50,aiSessionAttachmentRetentionDays:30,aiSessionMaxFileAttachmentBytes:z}),workspace:ko.default({status:"unknown"}),target:vo.default({strategy:"direct-port",status:"unknown"}),access:So,apps:s.z.object({runningCount:s.z.number().int().min(0).default(0),problemCount:s.z.number().int().min(0).default(0),updatedAt:qt.optional(),revision:s.z.number().int().min(0).optional()}).strict().default({runningCount:0,problemCount:0}),aiSessions:Ne.default(()=>({runningCount:0,waitingCount:0,staleCount:0,sessions:[],updatedAt:(new Date).toISOString()})),triggers:s.z.object({enabledCount:s.z.number().int().min(0).default(0),runningCount:s.z.number().int().min(0).default(0),errorCount:s.z.number().int().min(0).default(0),configs:s.z.array(s.z.object({configHash:s.z.string().trim().min(1),config:$e,deployments:s.z.array(Be).default([]),runtime:s.z.array(Ge).default([])}).strict()).default([]),recentRuns:s.z.array(Ke).default([])}).strict().optional(),runtime:s.z.object({kind:s.z.string().trim().max(80).optional(),containerName:s.z.string().trim().max(240).optional(),containerId:s.z.string().trim().max(240).optional(),workspacePath:s.z.string().trim().max(4096).optional(),pid:s.z.number().int().positive().optional(),port:s.z.number().int().positive().max(65535).optional(),labels:s.z.record(s.z.string(),s.z.string()).default({})}).strict().default({labels:{}}),registrationToken:s.z.string().trim().min(1).max(240).optional(),lastHeartbeatAt:qt.optional(),createdAt:qt,updatedAt:qt}).strict(),wo=s.z.union([jo.transform(e=>({instance:e,gitWorkspaceProvisioningOperationId:void 0})),s.z.object({instance:jo,gitWorkspaceProvisioningOperationId:Vt.optional()}).strict()]),Co=s.z.preprocess(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e;return t.instance&&"object"==typeof t.instance&&!Array.isArray(t.instance)?{instance:No(t.instance),..."string"==typeof t.gitWorkspaceProvisioningOperationId?{gitWorkspaceProvisioningOperationId:t.gitWorkspaceProvisioningOperationId}:{}}:No(t)},wo),Eo=s.z.object({instanceId:jo.shape.id,revision:s.z.number().int().min(0),updatedAt:qt,status:jo.shape.status.unwrap(),health:jo.shape.health.unwrap(),connectionStatus:jo.shape.connectionStatus.unwrap(),accessStatus:s.z.enum(["reachable","endpoint-unreachable"]),imageProvisioning:Di.optional(),workspace:ko,runtime:jo.shape.runtime.unwrap(),runtimeVersion:Vn.optional(),ready:s.z.boolean(),lastHeartbeatAt:qt.optional()}).strict();function No(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(Object.keys(jo.shape)),o={};for(const[e,r]of Object.entries(n))i.has(e)?o[e]=r:t?.({instanceId:"string"==typeof n.id?n.id:void 0,field:e});if(n.capabilities&&"object"==typeof n.capabilities&&!Array.isArray(n.capabilities)){const e={...n.capabilities};Object.prototype.hasOwnProperty.call(e,"apps")&&(t?.({instanceId:"string"==typeof n.id?n.id:void 0,field:"capabilities.apps"}),delete e.apps),o.capabilities=Ot(e)}else o.capabilities=Ot(void 0);o.appInventory=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e;Object.keys(i).some(e=>!["observedAt","items","issues"].includes(e))&&t?.({instanceId:n,field:"appInventory"});const o={observedAt:i.observedAt,items:Array.isArray(i.items)?i.items.map(e=>{e&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(e).some(e=>!["id","name","kind","source","availability","capabilities","diagnosticCode"].includes(e))&&t?.({instanceId:n,field:"appInventory.items"});const i=_o(e,["id","name","kind","source","availability","diagnosticCode"]);return!i||"object"!=typeof i||Array.isArray(i)?i:{...i,capabilities:_o(e.capabilities,["automation","supportsCwdSelection"])}}):i.items,issues:Array.isArray(i.issues)?i.issues.map(e=>_o(e,["code","message"])):i.issues},r=bn.safeParse(o);return r.success?r.data:void 0}(n.appInventory,t,"string"==typeof n.id?n.id:void 0),o.source=Po(n.source,t,"string"==typeof n.id?n.id:void 0),o.sourceSnapshot=n.sourceSnapshot&&"object"==typeof n.sourceSnapshot&&!Array.isArray(n.sourceSnapshot)?n.sourceSnapshot:{},o.build=Ro(Mn,n.build,"build",t,"string"==typeof n.id?n.id:void 0),o.aiSessions=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e,o=Array.isArray(i.sessions)?i.sessions.flatMap((e,i)=>{const o=Ro(Ee,e,`aiSessions.sessions.${i}`,t,n);return o?[o]:[]}):[],r={runningCount:"number"==typeof i.runningCount&&Number.isInteger(i.runningCount)&&i.runningCount>=0?i.runningCount:0,waitingCount:"number"==typeof i.waitingCount&&Number.isInteger(i.waitingCount)&&i.waitingCount>=0?i.waitingCount:0,staleCount:"number"==typeof i.staleCount&&Number.isInteger(i.staleCount)&&i.staleCount>=0?i.staleCount:0,sessions:o,updatedAt:qt.safeParse(i.updatedAt).success?i.updatedAt:(new Date).toISOString()};return Object.keys(i).some(e=>!["runningCount","waitingCount","staleCount","sessions","updatedAt"].includes(e))&&t?.({instanceId:n,field:"aiSessions"}),Ne.parse(r)}(n.aiSessions,t,"string"==typeof n.id?n.id:void 0),o.triggers=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e;Object.keys(i).some(e=>!["enabledCount","runningCount","errorCount","configs","recentRuns"].includes(e))&&t?.({instanceId:n,field:"triggers"});const o=(e,i,o)=>Array.isArray(e)?e.flatMap((e,r)=>{const a=Ro(i,e,`${o}.${r}`,t,n);return a?[a]:[]}):[],r=Array.isArray(i.configs)?i.configs.flatMap((e,i)=>{if(!e||"object"!=typeof e||Array.isArray(e))return[];const r=e;Object.keys(r).some(e=>!["configHash","config","deployments","runtime"].includes(e))&&t?.({instanceId:n,field:`triggers.configs.${i}`});const a=function(e,t,n,i){if(!e||"object"!=typeof e||Array.isArray(e))return;const o=e,r=_o(o,["configHash","name","description","createdAt","updatedAt"]);if(o.source&&"object"==typeof o.source&&!Array.isArray(o.source)){const e=o.source,t="schedule"===e.type?"interval"===e.scheduleKind?["type","scheduleKind","intervalMs"]:"daily"===e.scheduleKind?["type","scheduleKind","timeOfDay","timezone"]:["type","scheduleKind","weekdays","timeOfDay","timezone"]:"file-change"===e.type?["type","roots","globs","ignore","debounceMs"]:["type","agent","statuses","phases"];r.source=_o(e,t)}return r.action=_o(o.action,["promptTemplate"]),r.policy=_o(o.policy,["cooldownMs","maxConcurrentRuns","whenBusy"]),Ro($e,r,t,n,i)}(r.config,`triggers.configs.${i}.config`,t,n);return"string"==typeof r.configHash&&a?[{configHash:r.configHash,config:a,deployments:o(r.deployments,Be,`triggers.configs.${i}.deployments`),runtime:o(r.runtime,Ge,`triggers.configs.${i}.runtime`)}]:[]}):[];return{enabledCount:"number"==typeof i.enabledCount&&Number.isInteger(i.enabledCount)&&i.enabledCount>=0?i.enabledCount:0,runningCount:"number"==typeof i.runningCount&&Number.isInteger(i.runningCount)&&i.runningCount>=0?i.runningCount:0,errorCount:"number"==typeof i.errorCount&&Number.isInteger(i.errorCount)&&i.errorCount>=0?i.errorCount:0,configs:r,recentRuns:o(i.recentRuns,Ke,"triggers.recentRuns")}}(n.triggers,t,"string"==typeof n.id?n.id:void 0),o.apps=Ro(jo.shape.apps.unwrap(),_o(n.apps,["runningCount","problemCount","updatedAt","revision"]),"apps",t,"string"==typeof n.id?n.id:void 0)||{runningCount:0,problemCount:0},o.config=Ro(jo.shape.config.unwrap(),_o(n.config,["autoImportAgentConfigs","codexConfigEnabled","codexHomeMode","defaultCodexPermissionMode","codexSettings","aiSessionHistoryLimit","aiSessionAttachmentRetentionDays","aiSessionMaxFileAttachmentBytes"]),"config",t,"string"==typeof n.id?n.id:void 0)||{autoImportAgentConfigs:!0,codexConfigEnabled:!0,codexHomeMode:"taskhandoff",defaultCodexPermissionMode:"ask",aiSessionHistoryLimit:50,aiSessionAttachmentRetentionDays:30,aiSessionMaxFileAttachmentBytes:z},o.modelSelection=Ro(en.unwrap(),_o(n.modelSelection,["modelEntityIds","codexModelHash","claudeModelHash","opencodeModelHash"]),"modelSelection",t,"string"==typeof n.id?n.id:void 0)||{},o.imageSnapshot=function(e,t,n,i){if(!e||"object"!=typeof e||Array.isArray(e))return e;const o=e,r=$i(o),{reference:a,...s}=r,d=o.requestedReference??a;let c;try{c="string"==typeof d?Jt(d):void 0}catch{}const m={img_default:"market_taskhandoff_browser",img_codex:"market_taskhandoff_codex",img_ai:"market_taskhandoff_ai"},l="string"==typeof o.id?o.id:"string"==typeof t?t:void 0,u="market"===o.origin||l&&m[l]?"market":"custom";return void 0===o.image&&void 0===o.reference||n?.({instanceId:i,field:"imageSnapshot.reference"}),{...s,id:l&&m[l]?m[l]:l,origin:u,repository:c?.repository??o.repository,tag:c?.tag??o.tag,requestedReference:c?.reference??d,resolvedDigest:o.resolvedDigest,resolvedReference:o.resolvedReference,downloadSizeBytes:o.downloadSizeBytes,market:"market"===u?_o(o.market,["catalogId","catalogRevision","publisher","version"])??{catalogId:"task_handoff_embedded",catalogRevision:"legacy",publisher:"task-handoff"}:void 0}}(n.imageSnapshot,n.imageId,t,"string"==typeof n.id?n.id:void 0);const r="string"==typeof n.imageId?{img_default:"market_taskhandoff_browser",img_codex:"market_taskhandoff_codex",img_ai:"market_taskhandoff_ai"}[n.imageId]||n.imageId:void 0,a=_o(n.imageSelection,["imageId","tag"]);o.imageSelection=a||(r?{imageId:r,tag:o.imageSnapshot?.tag}:void 0),o.imageProvisioning=Ro(Di,_o(n.imageProvisioning,["phase","requestedReference","generation","error","startedAt","updatedAt"]),"imageProvisioning",t,"string"==typeof n.id?n.id:void 0),o.runtimeVersion=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e,o=e=>{if("string"!=typeof e)return;const t=e.trim();return t&&t.length<=80?t:void 0},r=o(i.desiredVersion);if(!r)return void t?.({instanceId:n,field:"runtimeVersion.desiredVersion"});const a=new Set(Vn.shape.phase.options),s="string"==typeof i.phase?i.phase:"pending",d=a.has(s)?s:{idle:"pending",queued:"pending",checking:"pending",downloading:"installing",updating:"installing",completed:"matched",succeeded:"matched",ready:"matched",error:"failed"}[s]||"pending";let c;if(d!==s&&t?.({instanceId:n,field:"runtimeVersion.phase"}),i.error&&"object"==typeof i.error&&!Array.isArray(i.error)){const e=i.error,r="string"==typeof e.message?e.message.trim().slice(0,4096):"";if(r){const i=new Set(Fn.shape.code.options),a="string"==typeof e.code&&i.has(e.code)?e.code:"INSTANCE_RUNTIME_INSTALL_FAILED";a!==e.code&&t?.({instanceId:n,field:"runtimeVersion.error.code"});const s=o(e.expectedVersion),d=o(e.actualVersion);c={code:a,message:r,...s?{expectedVersion:s}:{},...d?{actualVersion:d}:{},retryable:!0===e.retryable}}else t?.({instanceId:n,field:"runtimeVersion.error"})}"string"==typeof i.error&&i.error.trim()&&(c={code:"INSTANCE_RUNTIME_INSTALL_FAILED",message:i.error.trim().slice(0,4096),expectedVersion:r,...o(i.actualVersion)?{actualVersion:o(i.actualVersion)}:{},retryable:!1});const m=o(i.actualVersion),l=qt.safeParse(i.lastAttemptAt),u=qt.safeParse(i.matchedAt);return void 0===i.lastAttemptAt||l.success||t?.({instanceId:n,field:"runtimeVersion.lastAttemptAt"}),void 0===i.matchedAt||u.success||t?.({instanceId:n,field:"runtimeVersion.matchedAt"}),{desiredVersion:r,...m?{actualVersion:m}:{},phase:d,attempt:"number"==typeof i.attempt&&Number.isInteger(i.attempt)&&i.attempt>=0?i.attempt:0,...l.success?{lastAttemptAt:l.data}:{},...u.success?{matchedAt:u.data}:{},...c?{error:c}:{}}}(n.runtimeVersion,t,"string"==typeof n.id?n.id:void 0),o.workspace=Ro(ko,n.workspace,"workspace",t,"string"==typeof n.id?n.id:void 0)||{status:"unknown"},o.environmentSource=Ro(nn,n.environmentSource,"environmentSource",t,"string"==typeof n.id?n.id:void 0),o.environmentTemplateOrigin=Ro(dn,n.environmentTemplateOrigin,"environmentTemplateOrigin",t,"string"==typeof n.id?n.id:void 0),o.runtime=Ro(jo.shape.runtime.unwrap(),n.runtime,"runtime",t,"string"==typeof n.id?n.id:void 0)||{labels:{}},o.target=Ro(vo,_o(n.target??n.endpoints,["strategy","web","api","vnc","tty","logs","status"]),"target",t,"string"==typeof n.id?n.id:void 0)||{strategy:"direct-port",status:"unknown"},o.access=Ro(So,_o(n.access,["strategy","web","api","ws","status"]),"access",t,"string"==typeof n.id?n.id:void 0)||{strategy:"control-plane-proxy",status:"unknown"};for(const[e,i]of Object.entries(jo.shape))Object.prototype.hasOwnProperty.call(o,e)&&!i.safeParse(o[e]).success&&i.safeParse(void 0).success&&(delete o[e],t?.({instanceId:"string"==typeof n.id?n.id:void 0,field:e}));return o}function Ro(e,t,n,i,o){if(!t||"object"!=typeof t||Array.isArray(t))return;let r=structuredClone(t),a=!1;for(let t=0;t<20;t+=1){const t=e.safeParse(r);if(t.success)return a&&i?.({instanceId:o,field:n}),t.data;let s=!1;for(const e of t.error.issues){if("unrecognized_keys"!==e.code)continue;const t=To(r,e.path);if(t&&"object"==typeof t&&!Array.isArray(t))for(const n of e.keys)Object.prototype.hasOwnProperty.call(t,n)&&(delete t[n],s=!0,a=!0)}if(!s){const a=structuredClone(r);let s=!1;for(const e of t.error.issues){if(!e.path.length||"string"!=typeof e.path.at(-1))continue;const t=To(a,e.path.slice(0,-1)),n=e.path.at(-1);t&&"object"==typeof t&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,n)&&(delete t[n],s=!0)}if(s){const t=e.safeParse(a);if(t.success)return i?.({instanceId:o,field:n}),t.data}break}}i?.({instanceId:o,field:n})}function To(e,t){let n=e;for(const e of t){if(!n||"object"!=typeof n)return;n=n[e]}return n}function Po(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return e;const i=e,o=i.type,r=ti.options.find(e=>e.shape.type.value===o);if(!r)return e;const a="local-folder"===o?["type","localFolderId","path","ownerNodeId"]:"git-template"===o?["type","url","templateId","ref","auth","clone"]:["type","repositoryId","url","provider","ref","auth","clone"],s=_o(i,a);if("local-folder"!==o){const e=function(e,t,n){const i=e&&"object"==typeof e&&!Array.isArray(e)?e:void 0,o=Xn.safeParse(_o(i,["type","name","commit"]));if(o.success)return o.data;const r="string"==typeof i?.commit?i.commit.trim():"",a="string"==typeof i?.name?i.name.trim():"",s=r?Xn.safeParse({type:"commit",commit:r}):a?Xn.safeParse({type:"tag"===i?.type?"tag":"branch",name:a}):Xn.safeParse({type:"branch",name:"main"});return s.success?(t?.({instanceId:n,field:"source.ref"}),s.data):void 0}(i.ref,t,n),o=Ro(Jn,_o(i.auth,["type","secretId"]),"source.auth",t,n),r=Ro(Zn,_o(i.clone,["depth","submodules","lfs","subdirectory"]),"source.clone",t,n);e?s.ref=e:delete s.ref,o?s.auth=o:delete s.auth,r?s.clone=r:delete s.clone}const d=Ro(r,s,"source",t,n);return d?(Object.keys(i).some(e=>!a.includes(e))&&t?.({instanceId:n,field:"source"}),d):s}function _o(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e;return Object.fromEntries(t.filter(e=>Object.prototype.hasOwnProperty.call(n,e)).map(e=>[e,n[e]]))}const Oo=s.z.object({instanceId:Vt.optional(),projectId:Vt.optional(),source:ti.optional(),nodeId:Vt.optional(),runtimeId:Vt.optional(),imageSelection:tn.optional(),instanceVersion:s.z.string().trim().max(80).optional(),protocolVersion:vt,build:Mn.optional(),controlMode:s.z.enum(["standalone","controlled"]).default("controlled"),capabilities:Pt.default(Et),appInventory:bn.optional(),target:Ao.optional(),workspace:ko.default({status:"unknown"}),registrationToken:s.z.string().trim().max(240).optional(),processIncarnationId:s.z.string().trim().min(1).max(120).optional()}).strict().superRefine((e,t)=>{It.has(e.protocolVersion)&&!e.appInventory&&t.addIssue({code:"custom",path:["appInventory"],message:"Current protocol register payload requires appInventory."})}),Mo=s.z.object({status:jo.shape.status.optional(),health:jo.shape.health.optional(),protocolVersion:vt,build:Mn.optional(),capabilities:jo.shape.capabilities.optional(),appInventory:bn.optional(),apps:jo.shape.apps.optional(),aiSessions:jo.shape.aiSessions.optional(),triggers:jo.shape.triggers.optional(),workspace:ko.optional(),target:Ao.optional(),processIncarnationId:s.z.string().trim().min(1).max(120).optional()}).strict().superRefine((e,t)=>{It.has(e.protocolVersion)&&!e.appInventory&&t.addIssue({code:"custom",path:["appInventory"],message:"Current protocol heartbeat payload requires appInventory."})}),Lo=s.z.enum(["web","telegram","wechat","dingding","lark"]),Do=s.z.object({id:Vt,channel:Lo,name:s.z.string().trim().min(1).max(160),enabled:s.z.boolean().default(!1),token:s.z.string().trim().max(4096).optional(),defaultChatId:s.z.string().trim().max(240).optional(),allowedUserIds:s.z.array(s.z.string().trim().min(1).max(240)).default([]),pollIntervalMs:s.z.number().int().positive().max(6e4).default(3e3),settings:s.z.record(s.z.string(),s.z.unknown()).default({}),createdAt:qt,updatedAt:qt}).strict(),Uo=s.z.object({id:Vt,channel:Lo,bridgeId:Vt.optional(),chatSessionId:s.z.string().trim().min(1).max(240),userId:s.z.string().trim().max(240).optional(),activeProjectId:Vt.optional(),activeInstanceId:Vt.optional(),activeAiSessionId:s.z.string().trim().min(1).max(120).optional(),lastUsedAt:qt,createdAt:qt,updatedAt:qt}).strict(),Fo=s.z.object({source:s.z.object({type:s.z.literal("chat-gateway").default("chat-gateway"),channel:Lo,bridgeId:Vt.optional(),chatSessionId:s.z.string().trim().min(1).max(240),userId:s.z.string().trim().max(240).optional()}).strict(),message:s.z.object({text:s.z.string().trim().max(2e4).default(""),attachments:s.z.array(G).max(6).default([])}).strict().superRefine((e,t)=>{e.attachments.reduce((e,t)=>e+("inline"===t.source.type?t.size:0),0)>b&&t.addIssue({code:s.z.ZodIssueCode.custom,path:["attachments"],message:"Inline attachments must be 41943040 bytes or less in total."})}),target:s.z.object({instanceId:Vt,aiSessionId:s.z.string().trim().min(1).max(120)}).strict().optional()}).strict(),Vo=s.z.object({id:Vt,instanceId:Vt,projectId:Vt.optional(),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().max(240).optional(),result:s.z.string().default(""),timeoutMs:s.z.number().positive().optional(),source:s.z.string().trim().max(120).optional(),kind:s.z.enum(["task","approval"]).default("task"),status:s.z.enum(["pending","unreachable"]).default("pending"),error:s.z.string().trim().max(2048).optional(),lastSeenAt:qt}).strict();var qo,$o,Ho=m(Object.freeze({__proto__:null,AiSessionConversationAttachmentCapabilitiesSchema:Rt,AiSessionProviderCapabilitiesSchema:ht,AiSessionProviderCapabilitySchema:yt,AiSessionTimelineCapabilitiesSchema:Nt,AppInstallPrivilegeSchema:xn,AppInstallerSchema:hn,AppManagementCommandSchema:En,AppManagementErrorSchema:Nn,AppManagementEventSchema:On,AppManagementJobResponseSchema:_n,AppManagementJobSchema:Rn,AppManagementJobStateSchema:wn,AppManagementOperationRequestSchema:Pn,AppManagementOperationSchema:jn,AppManagementProgressSchema:Cn,AppManagementSnapshotSchema:Tn,ApplyUpdateRequestSchema:Kn,BuildInfoSchema:Mn,CONTROL_PLANE_PROTOCOL_VERSION:xt,ChatBridgeConfigSchema:Do,ChatChannelSchema:Lo,ChatGatewayMessageSchema:Fo,ChatSessionBindingSchema:Uo,CodexInstanceSettingsSchema:wt,CodexModelVerbositySchema:St,CodexPersonalitySchema:kt,CodexSubagentModelSchema:jt,ControlPlaneHealthResponseSchema:Ln,ControlledInstanceCapabilitiesSchema:Pt,ControlledInstanceFeatureCapabilitiesSchema:Tt,ControlledInstanceHeartbeatSchema:Mo,ControlledInstanceRegisterSchema:Oo,ControlledInstanceSchema:jo,CreateNodeModelSchema:yi,CustomImageProfileSchema:Pi,DEFAULT_IMAGE_COVER:{kind:"builtin",key:"default-image-cover"},DeployNodeModelSchema:xi,DockerImageDigestSchema:Qt,DockerImageReferenceSchema:Zt,EnvironmentSourceSchema:nn,EnvironmentTemplateErrorSchema:sn,EnvironmentTemplateOriginSchema:dn,EnvironmentTemplateSchema:yn,EnvironmentTemplateStatusSchema:on,FederatedModelGroupSchema:zi,FederatedModelRegistrySchema:bi,FinalComputerArchSchema:an,FinalComputerCapabilitiesSchema:In,FinalComputerPlatformSchema:rn,GitAuthSchema:Jn,GitCloneOptionsSchema:Zn,GitRefSchema:Xn,GitRepositorySchema:Qn,ImageCoverSchema:Si,ImageOriginSchema:vi,ImageProfileSchema:_i,ImageProvisioningSchema:Di,ImagePullProgressSchema:qi,ImagePullTerminalEventType:{Output:"image.pull.terminal.output",Finished:"image.pull.terminal.finished",Progress:"image.pull.progress",Snapshot:"image.pull.snapshot"},ImagePullTerminalFinishedSchema:Vi,ImagePullTerminalOutputSchema:Fi,ImageSelectionSchema:tn,InstanceAccessSchema:So,InstanceAppInventoryIssueSchema:fn,InstanceAppInventoryItemSchema:zn,InstanceAppInventorySchema:bn,InstanceDeleteInputSchema:mn,InstanceDeleteResultSchema:un,InstanceImageSnapshotSchema:Li,InstanceLifecycleEventType:{Snapshot:"instance.lifecycle.snapshot"},InstanceLifecycleSnapshotSchema:Eo,InstanceResourceMetricsEventType:{Snapshot:"instance.metrics.snapshot"},InstanceResourceMetricsSchema:Zi,InstanceTargetSchema:vo,InstanceVolumeDispositionSchema:ln,InstanceVolumeRoleSchema:cn,LEGACY_MARKET_IMAGE_IDS:pn,LocalDockerImageSchema:bo,MARKET_CATALOG_PROTOCOL_VERSION:"2026-07-29",ManagedAppActionReasonSchema:Sn,ManagedAppManagementSourceSchema:An,ManagedAppProjectionSchema:kn,ManagedAppStateSchema:vn,MarketCatalogSnapshotSchema:Ri,MarketCatalogStatusSchema:Ti,MarketImagePlatformArtifactSchema:Ci,MarketImageSchema:Ni,MarketImageTagSchema:Ei,MarketLifecycleStatusSchema:Ai,ModelAppSchema:ri,ModelConfigSchema:ci,ModelLocationSchema:gi,ModelNameEntrySchema:si,ModelProtocolSchema:ai,ModelRegistryNodeDiagnosticSchema:fi,ModelSelectionSchema:en,NODE_TUNNEL_PROTOCOL_VERSION:"2026-08-01",NodeAgentCapabilitiesSchema:no,NodeAgentControlPlaneConnectionCreateResultSchema:zo,NodeAgentControlPlaneConnectionSchema:go,NodeAgentControlPlanePairingSchema:uo,NodeAgentDeleteResponseSchema:fo,NodeAgentEventTransportHealthSchema:oo,NodeAgentExternalListenerConfigSchema:ao,NodeAgentExternalListenerSchema:so,NodeAgentHealthSchema:ro,NodeAgentInstanceLifecycleResultSchema:Co,NodeAgentInstanceProxyRawResponseSchema:Io,NodeAgentManagedGitCapabilitiesSchema:Qi,NodeAgentManagedModelCapabilitiesSchema:eo,NodeAgentPairingCompleteResultSchema:lo,NodeAgentPairingInviteResponseSchema:mo,NodeAgentPairingSelfRevokeResultSchema:po,NodeAgentStoryCapabilitiesSchema:to,NodeConnectionDiagnosticsSchema:Bi,NodeConnectionPathSchema:Hi,NodeControlPlaneProxyStateSchema:Wi,NodeFolderPlaceSchema:xo,NodeFolderTreeEntrySchema:ho,NodeImageAvailabilitySchema:yo,NodeJoinInviteStatusSchema:Ki,NodeJoinedEventSchema:Gi,NodeLocalFolderSchema:ei,NodeModelAssignmentSchema:pi,NodeModelConfigSchema:mi,NodeModelPublicRecordSchema:ui,NodeRolloutSummarySchema:$n,NodeRuntimeSchema:Ji,NodeSchema:Yi,NodeStateProjectionEventSchema:Xi,NodeTunnelRequestBodySchema:Bt,NodeUpdateImpactSchema:qn,PendingRouteSchema:Vo,ProjectSchema:di,ProjectSourceSchema:ti,ProtocolVersionSchema:vt,PublicModelConfigSchema:li,RuntimeArtifactIdentitySchema:Un,RuntimeConvergenceErrorSchema:Fn,RuntimeVersionStateSchema:Vn,SelectableImageSchema:Mi,SelectableImageTagSchema:Oi,UpdateChannelSchema:Dn,UpdateCheckRequestSchema:Hn,UpdateCheckResultSchema:Bn,UpdateControlledInstanceNodeAgentConnectionSchema:_t,UpdateJobSchema:Gn,UpdateNodeAgentExternalListenerSchema:co,UpdateNodeModelAssignmentSchema:Ii,UpdateNodeModelSchema:hi,WorkspacePolicySchema:oi,WorkspaceStatusSchema:ko,aiSessionConversationAttachmentCapabilities:Mt,aiSessionConversationAttachmentCapabilityAgents:Dt,aiSessionProviderCapabilities:Lt,aiSessionProviderCapability:function(e,t){return Lt(e).find(e=>e.agent===t)},aiSessionTimelineCapabilities:Ut,aiSessionTimelineCapabilityAgents:Ft,controlledInstanceAcceptsTraffic:function(e){return!1!==e.ready&&(!e.runtimeVersion||["matched","failed"].includes(e.runtimeVersion.phase))},decodeNodeTunnelRequestBody:function(e){if(null==e)return;const t=Bt.parse(e);return"utf8"===t.encoding?t.data:Buffer.from(t.data,"base64")},encodeNodeTunnelRequestBody:function(e){if(null!=e){if("string"==typeof e)return{encoding:"utf8",data:e};if(Buffer.isBuffer(e))return{encoding:"base64",data:e.toString("base64")};if(e instanceof ArrayBuffer)return{encoding:"base64",data:Buffer.from(e).toString("base64")};if(ArrayBuffer.isView(e))return{encoding:"base64",data:Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64")};throw new TypeError("Node tunnel request body must be a string or binary buffer.")}},migrateLegacyImageSelection:gn,modelConfigHash:function(e){const t={app:ri.parse(e.app),endpoint:ci.shape.endpoint.parse(e.endpoint),key:ci.shape.key.parse(e.key),model:ci.shape.model.parse(e.model)};return`mdl_${a.createHash("sha256").update(JSON.stringify(t)).digest("hex")}`},normalizeControlledInstanceCapabilities:Ot,normalizeDockerImageReference:Xt,normalizeNodeAgentCapabilities:io,parseCodexInstanceSettings:function(e){return wt.parse(Ct(e))},parseDockerImageReference:Jt,parseStoredControlledInstance:function(e,t){return jo.parse(No(e,t))},projectSourceWithoutGitCredential:ni,projectSourceWithoutLegacyGitSecretId:ii,safeParseStoredControlledInstance:function(e,t){return jo.safeParse(No(e,t))},sanitizeCodexInstanceSettings:Ct,sanitizeCrossVersionControlledInstanceHeartbeat:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=["status","health","protocolVersion","build","capabilities","appInventory","apps","aiSessions","triggers","workspace","target","processIncarnationId"],i=new Set(n);for(const n of Object.keys(e))i.has(n)||t?.({field:n,action:"ignored"});return _o(e,n)},sanitizeCrossVersionControlledInstanceRegister:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=["instanceId","projectId","source","nodeId","runtimeId","imageSelection","instanceVersion","protocolVersion","build","controlMode","capabilities","appInventory","target","workspace","registrationToken","processIncarnationId"],o=new Set([...i,"imageId"]);for(const e of Object.keys(n))o.has(e)||t?.({field:e,action:"ignored"});return Object.prototype.hasOwnProperty.call(n,"imageId")&&t?.({field:"imageId",action:"migrated"}),{..._o(n,i),imageSelection:gn(n.imageSelection,n.imageId)}},sanitizeStoredControlledInstance:No,sanitizeStoredEnvironmentTemplate:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(["id","name","sourceInstanceId","nodeId","imageId","internalTag","platform","architecture","sizeBytes","status","error","createdAt","updatedAt"]),o="string"==typeof n.id?n.id:void 0;for(const e of Object.keys(n))i.has(e)||t?.({templateId:o,field:e});const r=_o(n,[...i]);if(n.error&&"object"==typeof n.error&&!Array.isArray(n.error)){const e=n.error;for(const n of Object.keys(e))["code","message","phase"].includes(n)||t?.({templateId:o,field:`error.${n}`});r.error=_o(e,["code","message","phase"])}return r},sanitizeStoredImageProfile:$i,sanitizeStoredMarketCatalogSnapshot:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=["protocolVersion","catalogId","revision","source","generatedAt","expiresAt","items"];for(const e of Object.keys(n))i.includes(e)||t?.({field:e});const o=Array.isArray(n.items)?n.items.flatMap(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return t?.({field:"items"}),[];const n=e,i=["id","publisher","slug","name","description","localizedDescriptions","cover","repository","defaultTag","tags","capabilities","optionalApps","defaultEnv","labels","status"];for(const e of Object.keys(n))i.includes(e)||t?.({itemId:"string"==typeof n.id?n.id:void 0,field:e});const o=Ni.safeParse(_o(n,i));return o.success?[o.data]:(t?.({itemId:"string"==typeof n.id?n.id:void 0,field:"invalid-record"}),[])}):n.items;return{..._o(n,i),items:o}},sanitizeStoredNode:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(["id","name","connectionMode","connectionPath","connectionEnabled","auth","endpoint","controlEndpoint","containerEndpoint","publicWebBase","status","health","capabilities","proxyState","appInventory","labels","lastSeenAt","createdAt","updatedAt"]);for(const e of Object.keys(n))i.has(e)||t?.({field:e});const o=n.auth&&"object"==typeof n.auth&&!Array.isArray(n.auth)?_o(n.auth,["mode","keyId","secret","pairedAt","pairing"]):n.auth;o&&"object"==typeof o&&"pairing"in o&&(o.pairing=_o(o.pairing,["status","joinToken","expiresAt"]));const r=n.connectionPath&&"object"==typeof n.connectionPath&&!Array.isArray(n.connectionPath)?"control-plane-proxy"===n.connectionPath.kind?_o(n.connectionPath,["kind","proxyId","proxyBindingId","targetNodeId"]):_o(n.connectionPath,["kind"]):{kind:"direct"},a=n.proxyState&&"object"==typeof n.proxyState&&!Array.isArray(n.proxyState)?_o(n.proxyState,["reachability","bindingStatus","bindingRevision","streamId","revision","observedAt","target","lastError","updatedAt"]):n.proxyState;if(a&&"object"==typeof a){const e=a;e.target=_o(e.target,["id","name","status","health","lastSeenAt","capabilities"]),e.lastError=_o(e.lastError,["code","message","retryable","details"])}return{...Object.fromEntries(Object.entries(n).filter(([e])=>i.has(e))),auth:o,connectionPath:r,proxyState:a}},sanitizeStoredNodeLocalFolder:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e,{defaultImageId:n,...i}=t;return{...i,defaultImageSelection:gn(t.defaultImageSelection,n)}},sanitizeStoredProject:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e,{defaultImageId:n,defaultRuntimeId:i,...o}=t;return{...o,source:Po(t.source),defaultImageSelection:gn(t.defaultImageSelection,n)}},supportsAiSessionAttachmentRetentionSettings:function(e){return Mt(e).retentionSettings},supportsAiSessionConversationAttachmentCapability:function(e,t,n){return Dt(e,n).includes(t)},supportsAiSessionFileSizeLimitSettings:function(e){return!0===Mt(e).fileSizeLimitSettings},supportsAiSessionPersistenceSettings:function(e){return Ot(e).features.aiSessionPersistenceSettings},supportsAiSessionTimelineCapability:function(e,t,n){return Ft(e,n).includes(t)},supportsAiSessionWorkspaceSelection:function(e){return Ot(e).features.aiSessionWorkspaceSelection},supportsBrowserTunnel:function(e){return Ot(e).features.browserTunnel},supportsControlledInstanceCodexManagedSettings:function(e){return Ot(e).features.codexManagedSettings},supportsControlledInstanceNodeAgentConnectionUpdate:function(e){return Ot(e).features.nodeAgentConnectionUpdate},supportsControlledInstancePrivateModelCatalog:function(e){return Ot(e).features.privateModelCatalog},supportsGitCliCredentialBroker:function(e){const t=Ot(e).features;return t.gitCredentialProxy||t.gitCliCredentialBroker},supportsGitCredentialProxy:function(e){return Ot(e).features.gitCredentialProxy},supportsNodeAiSessionFileAttachmentLimit:function(e){return!0===no.safeParse(e).data?.aiSessionFileAttachmentLimit},supportsNodeCodexManagedSettings:function(e){return!0===io(e).codexManagedSettings},supportsNodeFolderPlaces:function(e){return!0===no.safeParse(e).data?.folderPlaces},supportsNodeGitCredentialRuntimeBroker:function(e){return io(e).managedGitCredentials.runtimeBroker},supportsNodeGitWorkspaceProvisioning:function(e,t){return io(e).managedGitCredentials.workspaceProvisioning[t]},supportsNodeLocalFolderNameUpdate:function(e){return!0===no.safeParse(e).data?.localFolderNameUpdate},supportsNodeManagedGitCredentialRegistry:function(e){return io(e).managedGitCredentials.registry},supportsNodeMultiEntityModelAssignment:function(e){return io(e).managedModels.multiEntityAssignment},supportsNodePrivateModelCatalog:function(e){return io(e).managedModels.privateModelCatalog},supportsNodeStories:function(e){return io(e).stories.enabled}})),Bo=function(){if($o)return qo;$o=1;const t=e,{spawnSync:i}=n;return qo={processStartIdentity:function(e,n=process.platform){if(Number.isInteger(e)&&!(e<=0)){if("linux"===n)try{const n=t.readFileSync(`/proc/${e}/stat`,"utf8"),i=n.lastIndexOf(")");if(i<0)return;const o=n.slice(i+2).trim().split(/\s+/)[19];return o?`linux:${o}`:void 0}catch{return}if(["darwin","freebsd","openbsd","aix","sunos"].includes(n)){const t=i("ps",["-o","lstart=","-p",String(e)],{encoding:"utf8",timeout:1e3}),o=0===t.status?t.stdout.trim().replace(/\s+/g," "):"";return o?`${n}:${o}`:void 0}if("win32"===n){const t=i("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-Process -Id ${e} -ErrorAction Stop).StartTime.ToUniversalTime().Ticks`],{encoding:"utf8",timeout:2e3}),n=0===t.status?t.stdout.trim():"";return/^\d+$/.test(n)?`win32:${n}`:void 0}}}}}();class Go extends Error{code;lockPath;owner;constructor(e,t,n={}){const i=t?.pid?` pid ${t.pid}`:"";super(`${n.label||"Process"} is already running${i}. Lock: ${e}`),this.name="ProcessSingletonError",this.code=n.code||"PROCESS_ALREADY_RUNNING",this.lockPath=e,this.owner=t}}function Ko(e){return t.join(e,"owner.json")}function Wo(e){return t.join(e,"initializing.json")}function Yo(e){return t.join(e,"recovering.json")}function Xo(e){return Number.isInteger(e)&&Number(e)>0}const Jo=function(t){try{const n=JSON.parse(e.readFileSync(Ko(t),"utf8"));if(Xo(n.pid)&&"string"==typeof n.startTime){const e=n;return{pid:e.pid,hostname:"string"==typeof e.hostname&&e.hostname?e.hostname:d.hostname(),component:e.component||"server-update",command:"string"==typeof e.command?e.command:"",acquiredAt:"string"==typeof e.createdAt&&Number.isFinite(Date.parse(e.createdAt))?e.createdAt:new Date(0).toISOString(),token:"string"==typeof e.token&&e.token?e.token:`legacy:${e.pid}:${e.startTime}`,startIdentity:e.startTime.startsWith("linux:")?e.startTime:`linux:${e.startTime}`}}if(!(Xo(n.pid)&&"string"==typeof n.hostname&&n.hostname&&"string"==typeof n.command&&"string"==typeof n.acquiredAt&&Number.isFinite(Date.parse(n.acquiredAt))&&"string"==typeof n.token&&n.token))return;return n}catch{return}};function Zo(e){if(!Xo(e))return!1;try{return process.kill(Number(e),0),!0}catch(e){return"EPERM"===e.code}}function Qo(e){if(!e||!Zo(e.pid))return!1;if(!e.startIdentity)return!0;const t=Bo.processStartIdentity(e.pid);return void 0===t||t===e.startIdentity}function er(n,i){const o=t.join(n,`.owner-${i.token}.tmp`);e.writeFileSync(o,`${JSON.stringify(i,null,2)}\n`,{encoding:"utf8",mode:384,flag:"wx"});const r=nr(n);if(r?.token!==i.token)throw or(o),new Error(`Process lock initialization was superseded: ${n}`);e.renameSync(o,Ko(n)),or(Wo(n))}function tr(n,i,o){const r=Jo(n);if(r?.token!==i.token)return!1;const s={...i};for(const[e,t]of Object.entries(o))void 0===t?delete s[e]:Object.assign(s,{[e]:t});const d=t.join(n,`.owner-update-${i.token}-${a.randomUUID()}.tmp`);try{if(e.writeFileSync(d,`${JSON.stringify(s,null,2)}\n`,{encoding:"utf8",mode:384,flag:"wx"}),Jo(n)?.token!==i.token)return!1;e.renameSync(d,Ko(n));for(const e of Object.keys(i))delete i[e];return Object.assign(i,s),!0}catch(e){if("ENOENT"===e.code)return!1;throw e}finally{or(d)}}function nr(t){try{return JSON.parse(e.readFileSync(Wo(t),"utf8"))}catch{return}}function ir(e){const t=nr(e);return Xo(t?.pid)&&Qo({pid:t.pid,startIdentity:t.startIdentity})}function or(t){try{e.unlinkSync(t)}catch(e){if("ENOENT"!==e.code)throw e}}function rr(){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,20)}function ar(t){try{const n=nr(t),i=Date.parse(n?.startedAt||"");return Number.isFinite(i)?Math.max(0,Date.now()-i):Math.max(0,Date.now()-e.statSync(t).mtimeMs)}catch{return 0}}function sr(n,i){try{return e.writeFileSync(Yo(n),`${JSON.stringify({token:i,pid:process.pid,startedAt:(new Date).toISOString()})}\n`,{encoding:"utf8",mode:384,flag:"wx"}),!0}catch(o){if("EEXIST"===o.code)return!!function(n){const i=Yo(n),o=dr(i),r=Date.parse(o?.startedAt||"");if(Zo(o?.pid)||Number.isFinite(r)&&Date.now()-r<2e3)return!1;const s=t.join(n,`.recovering-${a.randomUUID()}.stale`);try{e.renameSync(i,s)}catch(e){if(["ENOENT","EEXIST"].includes(e.code||""))return!1;throw e}const d=dr(s);if(d?.token===o?.token)return or(s),!0;try{e.linkSync(s,i)}catch(e){if("EEXIST"!==e.code)throw e}finally{or(s)}return!1}(n)&&sr(n,i);if("ENOENT"===o.code)return!1;throw o}}function dr(t){try{return JSON.parse(e.readFileSync(t,"utf8"))}catch{return}}function cr(e,t){return dr(Yo(e))?.token===t}const mr="/run/task-handoff-server-update.lock";function lr(t){const n={};if(!e.existsSync(t))return n;for(const i of e.readFileSync(t,"utf8").split(/\r?\n/)){if(!i||i.startsWith("#"))continue;const e=i.indexOf("=");e>0&&(n[i.slice(0,e)]=i.slice(e+1))}return n}var ur,pr=m(Object.freeze({__proto__:null,SERVER_UPDATE_LOCK_PATH:mr,acquireServerUpdateLock:function(n=mr,i={}){return function(n,i={}){e.mkdirSync(t.dirname(n),{recursive:!0});const o=Bo.processStartIdentity(process.pid),r={pid:process.pid,hostname:d.hostname(),command:process.argv.join(" "),acquiredAt:(new Date).toISOString(),token:a.randomUUID(),...void 0!==i.component?{component:i.component}:{},...o?{startIdentity:o}:{},...void 0!==i.dataDir?{dataDir:i.dataDir}:{},...void 0!==i.host?{host:i.host}:{},...void 0!==i.port?{port:i.port}:{},...void 0!==i.instanceId?{instanceId:i.instanceId}:{}};for(let t=0;t<5;t+=1)try{return e.mkdirSync(n),e.writeFileSync(Wo(n),`${JSON.stringify({token:r.token,pid:r.pid,startIdentity:r.startIdentity,startedAt:(new Date).toISOString()})}\n`,{encoding:"utf8",mode:384,flag:"wx"}),er(n,r),{lockPath:n,owner:r,updateDetails:e=>tr(n,r,e),release(){const t=Jo(n);t?.token===r.token&&e.rmSync(n,{recursive:!0,force:!0})}}}catch(o){if("EEXIST"!==o.code)throw o;const r=Jo(n);if(Qo(r))throw new Go(n,r,i.error);if(!r&&(ir(n)||ar(n)<(i.incompleteLockStaleMs??2e3))){if(t+1<5){rr();continue}throw new Go(n,void 0,i.error)}const s=a.randomUUID();if(!sr(n,s)){if(t+1<5){rr();continue}throw new Go(n,Jo(n),i.error)}const d=Jo(n);if(Qo(d))throw or(Yo(n)),new Go(n,d,i.error);if(r?.token&&d?.token!==r.token){or(Yo(n));continue}if(!cr(n,s))continue;e.rmSync(n,{recursive:!0,force:!0})}const s=Jo(n);throw new Go(n,s,i.error)}(n,{component:"server-update",incompleteLockStaleMs:i.legacyGraceMs??3e4,error:{label:"TaskHandoff server update",code:"SERVER_UPDATE_ALREADY_RUNNING"}}).release},cleanUpServerUpdateLockOnSignals:function(e){const t=new Map;for(const n of["SIGINT","SIGTERM","SIGHUP"]){const i=()=>{e(),process.removeListener(n,i),process.kill(process.pid,n)};t.set(n,i),process.on(n,i)}return()=>{for(const[e,n]of t)process.removeListener(e,n)}},currentServerInstallArgs:function(t={}){const n=lr(t.controlPlaneEnvFile||"/etc/task-handoff/control-plane.env"),i=lr(t.nodeAgentEnvFile||"/etc/task-handoff/node-agent.env");return["--service-user",(o=t.nodeAgentUnitFile||"/etc/systemd/system/task-handoff-node-agent.service",e.existsSync(o)&&e.readFileSync(o,"utf8").match(/^User=(.+)$/m)?.[1]||"root"),"--control-plane-data-dir",n.TASK_HANDOFF_CONTROL_PLANE_DATA_DIR||"/var/lib/task-handoff/control-plane","--node-agent-data-dir",i.TASK_HANDOFF_NODE_AGENT_DATA_DIR||"/var/lib/task-handoff/node-agent","--control-plane-host",n.TASK_HANDOFF_CONTROL_PLANE_HOST||"0.0.0.0","--control-plane-port",n.TASK_HANDOFF_CONTROL_PLANE_PORT||"8081","--node-agent-host",i.TASK_HANDOFF_NODE_AGENT_HOST||"127.0.0.1","--node-agent-port",i.TASK_HANDOFF_NODE_AGENT_PORT||"8091","--node-agent-ipc-path",i.TASK_HANDOFF_NODE_AGENT_IPC_PATH||"/run/task-handoff/node-agent.sock","--auth-mode",n.TASK_HANDOFF_CONTROL_PLANE_AUTH_MODE||"password",...n.TASK_HANDOFF_CONTROL_PLANE_STATIC_DIR?["--static-dir",n.TASK_HANDOFF_CONTROL_PLANE_STATIC_DIR]:[]];var o},globalPrefixFromModulePath:function(e){let n=t.resolve(e);for(;n!==t.dirname(n);){if("node_modules"===t.basename(n)&&"lib"===t.basename(t.dirname(n)))return t.dirname(t.dirname(n));n=t.dirname(n)}}})),gr=function(){if(ur)return l;ur=1,Object.defineProperty(l,"__esModule",{value:!0});const a=e,s=t,{spawnSync:d}=n,{Command:c,InvalidArgumentError:m}=i,u=o,p=r,{ControlPlaneHealthResponseSchema:g}=Ho,{acquireServerUpdateLock:z,cleanUpServerUpdateLockOnSignals:f,globalPrefixFromModulePath:b}=pr;function y(e){const t=g.safeParse(e);return t.success?t.data.data.build.packageVersion:void 0}function h(e){if(!s.isAbsolute(e))throw new m("must be an absolute path");return s.resolve(e)}const x=(new c).name("task-handoff-node-update-worker").description("Apply a detached TaskHandoff node update.").requiredOption("--job-file <path>","persisted update job file").requiredOption("--target-version <version>","exact semantic version",function(e){if(e.trim()!==e||/^[v=]/.test(e)||null===u.valid(e))throw new m("must be an exact semantic version");return e}).option("--service <name>","systemd service to restart","task-handoff-node-agent.service").option("--npm-command <path>","npm executable",process.env.TASK_HANDOFF_NPM_COMMAND||"npm").option("--control-plane-health-url <url>","local control-plane health endpoint",function(e){let t;try{t=new URL(e)}catch{throw new m("must be a valid loopback HTTP URL")}if(!["http:","https:"].includes(t.protocol)||!["127.0.0.1","localhost","::1"].includes(t.hostname))throw new m("must be a valid loopback HTTP URL");return t.toString()}).option("--install-prefix <path>","authoritative npm global prefix",h).option("--node-agent-ipc-path <path>","node-agent readiness socket",h).option("--registry <url>","npm registry URL").option("--standalone","complete the temporary job after service verification").parse(process.argv).opts(),I=x.jobFile,v=x.targetVersion,A=x.service,S=x.npmCommand,k=x.controlPlaneHealthUrl,j=x.installPrefix,w=x.nodeAgentIpcPath,C=x.registry,E=new Set(["succeeded","degraded","failed"]),N=new Set(["@task-handoff/node-agent","@task-handoff/server"]),R=["/etc/task-handoff/control-plane.env","/etc/task-handoff/node-agent.env","/etc/systemd/system/task-handoff-control-plane.service","/etc/systemd/system/task-handoff-node-agent.service"];function T(e,t){const n=JSON.parse(a.readFileSync(I,"utf8"));process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_CAS_HOOK&&function(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}(s.resolve(process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_CAS_HOOK))({jobFile:I,observed:n});const i=`${I}.worker-lock`;a.mkdirSync(i);try{const n=JSON.parse(a.readFileSync(I,"utf8"));if(E.has(n.status)||!e.includes(n.status))return!1;const i="function"==typeof t?t(n):t,o={...n,...i,updatedAt:(new Date).toISOString()};return p.sync(I,`${JSON.stringify(o,null,2)}\n`,{encoding:"utf8"}),!0}finally{a.rmdirSync(i)}}function P(e,t){const n=d(e,t,{stdio:"inherit"});if(0!==n.status)throw new Error(`${e} exited with status ${n.status??"unknown"}`)}function _(e,t,n){const i=n?s.join(t,...n.split("/"),"node_modules",...e.split("/"),"package.json"):s.join(t,...e.split("/"),"package.json");try{return JSON.parse(a.readFileSync(i,"utf8")).version}catch(e){if("ENOENT"===e?.code)return;throw e}}function O(e,t){const n=_(e,t);if(n!==v)throw new Error(`Updated ${e} verification failed: expected ${v}, found ${n||"unknown"}.`)}function M(e){const t=["view",`${e}@${v}`,"dist.integrity","--json"];C&&t.push("--registry",C);const n=d(S,t,{encoding:"utf8"});if(0!==n.status)throw new Error(`Could not verify the ${e} npm artifact integrity.`);let i;try{i=JSON.parse(n.stdout)}catch{throw new Error(`npm returned invalid ${e} artifact integrity metadata.`)}if("string"!=typeof i||!/^sha(?:256|384|512)-[A-Za-z0-9+/=]+$/.test(i))throw new Error(`npm returned invalid ${e} artifact integrity metadata.`);return i}async function L(e,t=v,n=6e4){const i=Date.now()+n;let o="not reachable";for(;Date.now()<i;){try{if(process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_HEALTH_FILE){const e=y(JSON.parse(a.readFileSync(process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_HEALTH_FILE,"utf8")));if(e===t)return;o=`reported version ${String(e||"unknown")}`,await new Promise(e=>setTimeout(e,10));continue}const n=await fetch(e,{headers:{"cache-control":"no-cache"},signal:AbortSignal.timeout(2e3)}),i=y(await n.json().catch(()=>({})));if(n.ok&&i===t)return;o=n.ok?`reported version ${String(i||"unknown")}`:`returned HTTP ${n.status}`}catch(e){o=e instanceof Error?e.message:String(e)}await new Promise(e=>setTimeout(e,500))}throw new Error(`Control plane did not become healthy at ${e} with version ${t}: ${o}.`)}function D(e,t=3e4){const n=Date.now()+t;for(;Date.now()<n;){try{if(a.statSync(e).isSocket())return}catch{}Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,250)}throw new Error(`Node agent socket was not ready after ${t}ms: ${e}`)}function U(e,t,n){const i=["install","--global","--prefix",e,`${t}@${n}`];C&&i.push("--registry",C),P(S,i)}return async function(){let e,t,n;try{if(!T(["queued"],e=>({status:"updating-node",rollout:{...e.rollout,phase:"updating-node"},startedAt:(new Date).toISOString(),error:void 0})))return;e=z(process.env.TASK_HANDOFF_SERVER_UPDATE_LOCK_PATH||void 0),t=f(e);const i=function(){const e=JSON.parse(a.readFileSync(I,"utf8")),t=`@${v}#`;if("string"!=typeof e.artifactRef||!e.artifactRef.startsWith("npm:")||!e.artifactRef.includes(t))throw new Error(`Update job does not pin npm integrity for version ${v}.`);const n=e.artifactRef.indexOf(t),i=e.artifactRef.slice(4,n),o=e.artifactRef.slice(n+t.length);if(!N.has(i)||!o)throw new Error("Update job does not identify a supported immutable npm artifact.");const r=M(i);if(r!==o)throw new Error(`${i} npm artifact integrity mismatch: expected ${o}, found ${String(r||"unknown")}.`);return{packageName:i,integrity:r}}(),o=i.packageName,r=b(process.argv[1]);if(j&&r&&j!==r)throw Object.assign(new Error(`Update prefix ${j} does not match the running package prefix ${r}.`),{code:"UPDATE_INSTALL_PREFIX_MISMATCH"});const c=r?void 0:d(S,["prefix","--global"],{encoding:"utf8"});if(c&&0!==c.status)throw new Error("Could not determine the npm global prefix.");const m=j||r||c?.stdout.trim();if(!m)throw new Error("Could not determine the npm global prefix.");const l=d(S,["root","--global","--prefix",m],{encoding:"utf8"});if(0!==l.status)throw new Error("Could not determine the npm global module root.");const u=l.stdout.trim(),g=[o];"@task-handoff/server"===o&&void 0!==_("@task-handoff/node-agent",u)&&g.push("@task-handoff/node-agent");const y=new Map(g.map(e=>[e,_(e,u)])),h="@task-handoff/server"===o?function(){const e=process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_CONFIGURATION_ROOT;return e?R.map(t=>s.join(e,t.slice(1))):R}().map(e=>{try{const t=a.statSync(e);return{file:e,contents:a.readFileSync(e),mode:t.mode}}catch(t){if("ENOENT"===t?.code)return{file:e};throw t}}):[];let C=!1;n=async()=>{for(const e of[...g].reverse()){const t=y.get(e);t&&U(m,e,t)}if("@task-handoff/server"===o){C&&(function(e){for(const t of e)t.contents?(a.mkdirSync(s.dirname(t.file),{recursive:!0}),p.sync(t.file,t.contents,{mode:t.mode})):a.rmSync(t.file,{force:!0})}(h),P("systemctl",["daemon-reload"])),P("systemctl",["restart","task-handoff-control-plane.service"]);const e=y.get("@task-handoff/server");k&&e&&await L(k,e)}P("systemctl",["restart",A]),w&&D(w)};const E=new Map([[o,i.integrity]]);for(const e of g.slice(1))E.set(e,M(e));for(const e of g){if(U(m,e,v),M(e)!==E.get(e))throw new Error(`${e} npm artifact integrity changed during installation.`);O(e,u)}if("@task-handoff/server"===o){if(function(e){for(const t of["@task-handoff/control-plane","@task-handoff/node-agent","@task-handoff/controlled-instance"]){const n=_(t,e,"@task-handoff/server")||_(t,e);if(n!==v)throw new Error(`Updated @task-handoff/server does not provide ${t} ${v}; found ${n||"unknown"}.`)}}(u),!k)throw new Error("A control-plane health URL is required for a complete server update.");C=!0,function(e){P(s.join(e,"bin","task-handoff"),["install","--preserve-current","--materialize-only"])}(m),P("systemctl",["restart","task-handoff-control-plane.service"]),await L(k)}if(!T(["updating-node"],e=>({status:"restarting-node",rollout:{...e.rollout,phase:"restarting-node"}})))return;P("systemctl",["restart",A]),w&&D(w),x.standalone&&T(["restarting-node"],e=>({status:"succeeded",rollout:{...e.rollout,phase:"succeeded",nodeVersion:v},completedAt:(new Date).toISOString()}))}catch(e){let t;if(n)try{await n()}catch(e){t=e}const i=[e instanceof Error?e.message:String(e),t?`Rollback failed: ${t instanceof Error?t.message:String(t)}`:void 0].filter(Boolean).join(" ");T(["queued","updating-node","restarting-node"],t=>({status:"failed",rollout:{...t.rollout,phase:"failed"},error:{code:e&&"object"==typeof e&&"code"in e&&"string"==typeof e.code?e.code:"NODE_UPDATE_FAILED",message:i,retryable:e&&"object"==typeof e&&"code"in e&&"SERVER_UPDATE_ALREADY_RUNNING"===e.code},completedAt:(new Date).toISOString()})),console.error(e),process.exitCode=1}finally{t?.(),e?.()}}(),l}(),zr=c(gr);module.exports=zr;
2
+ "use strict";var e=require("node:fs"),t=require("node:path"),n=require("node:child_process"),i=require("commander"),o=require("semver"),r=require("write-file-atomic"),a=require("node:crypto"),s=require("zod"),c=require("node:os");function d(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function m(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){var n=!1;try{n=this instanceof e}catch{}return n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var l={};const u=s.z.string().trim().min(1).max(120),p=20971520,g=512e3,z=g,f=p,b=41943040,y=s.z.string().trim().min(1).max(80),h=s.z.enum(["app-session","ai-session"]),x=s.z.enum(["image","file"]),I={scopeType:s.z.enum(["session","create-request"]),scopeId:s.z.string().trim().min(1).max(160),kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120)};s.z.object({...I,size:s.z.coerce.number().int().positive().max(p)}).strict();const S=s.z.string().regex(/^cia_[a-f0-9]{24}$/);s.z.object({attachmentId:S,...I,size:s.z.number().int().positive().max(p)}).strict(),s.z.object({offset:s.z.coerce.number().int().nonnegative()}).strict(),s.z.object({attachmentId:S,offset:s.z.number().int().nonnegative()}),s.z.object({id:S,kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120),size:s.z.number().int().positive().max(p),expiresAt:s.z.string().datetime()});const A=s.z.object({id:s.z.string().trim().min(1).max(120),kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120),size:s.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)}),v=s.z.enum(["available","expired","missing"]),k=A.extend({contentState:v.default("available")}).strict(),j=s.z.object({id:s.z.string().trim().min(1).max(240),text:s.z.string(),attachments:s.z.array(k).max(6).default([])}).strict(),C=s.z.enum(["running","waiting","idle","failed"]);s.z.object({instanceId:s.z.string().trim().min(1).max(160),sessionId:s.z.string().trim().min(1).max(120),unread:s.z.boolean(),sessionUpdatedAt:s.z.string().datetime(),updatedAt:s.z.string().datetime()}).strict();const w=s.z.enum(["thinking","tool","editing","approval","responding","unknown"]),E=s.z.object({id:s.z.string().trim().min(1).max(240).optional(),kind:s.z.string().trim().min(1).max(80).optional(),name:s.z.string().trim().min(1).max(120),inputPreview:s.z.string().trim().max(500).optional(),startedAt:s.z.string().datetime().optional()}).strict(),N=s.z.enum(["running","completed","failed","waiting"]),R=s.z.object({id:s.z.string().trim().min(1).max(240),turnId:s.z.string().trim().min(1).max(240)}).strict(),T=R.extend({type:s.z.literal("user-message"),text:s.z.string(),attachments:s.z.array(k).max(6).optional()}).strict(),P=R.extend({type:s.z.literal("ai-message"),text:s.z.string()}).strict(),_=R.extend({type:s.z.literal("activity"),activityKind:s.z.string().trim().min(1).max(120),title:s.z.string().trim().min(1).max(240),status:N.optional(),summary:s.z.string().max(4e3).optional(),input:s.z.string().max(1e5).optional(),output:s.z.string().max(1e6).optional(),paths:s.z.array(s.z.string().trim().min(1).max(4096)).max(500).optional(),exitCode:s.z.number().int().optional(),durationMs:s.z.number().int().nonnegative().optional()}).strict(),O=s.z.discriminatedUnion("type",[T,P,_]);s.z.object({sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),items:s.z.array(O),generatedAt:s.z.string().datetime()}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),turnId:s.z.string().trim().min(1).max(240),items:s.z.array(O),generatedAt:s.z.string().datetime()}).strict();const M=s.z.enum(["pending-init","running","interrupted","completed","errored","shutdown","not-found"]),L=s.z.enum(["started","interacted","interrupted"]),D=s.z.object({threadId:s.z.string().trim().min(1).max(240),path:s.z.string().trim().max(4096).optional(),status:M,activity:L.optional(),message:s.z.string().trim().max(1e3).optional(),updatedAt:s.z.string().datetime()}).strict();function F(e){return"completed"!==e.status}const U=s.z.array(D).max(50).transform(e=>e.filter(F)),V=s.z.object({toolCalls:s.z.number().int().min(0).default(0),edits:s.z.number().int().min(0).default(0),approvals:s.z.number().int().min(0).default(0)}).strict().default({toolCalls:0,edits:0,approvals:0}),q=s.z.object({send:s.z.boolean().optional(),interrupt:s.z.boolean().optional(),approval:s.z.boolean().optional(),fork:s.z.boolean().optional(),rename:s.z.boolean().optional(),openApp:s.z.boolean().optional(),close:s.z.boolean().optional()}),$=s.z.string().trim().min(1).max(240),H=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("fork"),parentProviderSessionId:$,throughTurnId:s.z.string().trim().min(1).max(240).optional()}).strict(),s.z.object({kind:s.z.literal("subagent"),parentProviderSessionId:$}).strict()]),B=s.z.preprocess(function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;const t=e;if("fork"===t.kind){const e=H.safeParse({kind:"fork",parentProviderSessionId:t.parentProviderSessionId,..."string"==typeof t.throughTurnId?{throughTurnId:t.throughTurnId}:{}});return e.success?e.data:void 0}if("subagent"===t.kind){const e=H.safeParse({kind:"subagent",parentProviderSessionId:t.parentProviderSessionId});return e.success?e.data:void 0}},H.optional()),G=s.z.union([A.extend({source:s.z.object({type:s.z.literal("inline"),encoding:s.z.literal("base64"),data:s.z.string().min(1).max(31457280)}).strict()}).strict().superRefine((e,t)=>{const n="image"===e.kind?p:g;(e.size<=0||("file"===e.kind?e.size>=n:e.size>n))&&t.addIssue({code:s.z.ZodIssueCode.custom,path:["size"],message:`Inline ${e.kind} must be between 1 byte and ${n} bytes.`})}),A.extend({source:s.z.object({type:s.z.literal("runtime-path"),path:s.z.string().trim().min(1).max(4096)}).strict()}).strict()]),K=A.extend({sourceType:s.z.enum(["inline","runtime-path"])}).strict(),W=s.z.union([s.z.object({id:s.z.string().trim().min(1).max(120),kind:x.optional(),source:s.z.object({type:s.z.literal("upload-ref")}).strict().default({type:"upload-ref"})}).strict(),s.z.object({id:s.z.string().trim().min(1).max(120),kind:x,name:s.z.string().trim().min(1).max(240),mime:s.z.string().trim().min(1).max(120),size:s.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),source:s.z.object({type:s.z.literal("runtime-path"),path:s.z.string().trim().min(1).max(4096)}).strict()}).strict()]),Y=s.z.enum(["auto","queue","steer","immediate"]),X=s.z.enum(["ask","auto-review","full-access"]),J=s.z.enum(["review","rename","goal","compact"]);s.z.object({command:J,argument:s.z.string().trim().max(4e3).optional()}).strict().superRefine((e,t)=>{"rename"!==e.command||e.argument||t.addIssue({code:"custom",path:["argument"],message:"Rename requires a thread name."}),"review"!==e.command&&"compact"!==e.command||!e.argument||t.addIssue({code:"custom",path:["argument"],message:`${e.command} does not accept an argument.`})}),s.z.object({command:J,value:s.z.string().max(4e3).optional(),turnId:s.z.string().trim().min(1).max(240).optional()}).strict(),s.z.object({title:s.z.string().trim().max(120),expectedTitle:s.z.string().trim().max(240).optional(),clientRequestId:s.z.string().trim().min(1).max(160)}).strict(),s.z.object({disposition:s.z.enum(["renamed","already-named"]),aiSessionId:s.z.string().trim().min(1).max(120),appSessionId:s.z.string().trim().min(1).max(120).optional(),title:s.z.string().trim().max(120)}).strict(),s.z.enum(["skill","app","plugin"]);const Z=s.z.object({name:s.z.string().trim().min(1).max(240),path:s.z.string().trim().min(1).max(4096)}),Q=s.z.discriminatedUnion("kind",[Z.extend({kind:s.z.literal("skill"),path:s.z.string().trim().min(1).max(4096).refine(e=>e.startsWith("/"),"Skill paths must be absolute.")}).strict(),Z.extend({kind:s.z.literal("app"),path:s.z.string().trim().min(7).max(4096).regex(/^app:\/\/[^\s/]+$/,"App paths must use app://<id>.")}).strict(),Z.extend({kind:s.z.literal("plugin"),path:s.z.string().trim().min(10).max(4096).regex(/^plugin:\/\/[^\s/]+$/,"Plugin paths must use plugin://<id>.")}).strict()]),ee=s.z.array(Q).max(20).default([]),te=s.z.enum(["plugin","skill","file","directory","app"]),ne=s.z.object({kind:te,name:s.z.string().trim().min(1).max(240),description:s.z.string().trim().max(1e3).optional(),path:s.z.string().trim().min(1).max(4096),icon:s.z.string().trim().max(4096).optional()}).strict().superRefine((e,t)=>{"skill"!==e.kind||e.path.startsWith("/")||t.addIssue({code:"custom",path:["path"],message:"Skill paths must be absolute."}),"app"!==e.kind||/^app:\/\/[^\s/]+$/.test(e.path)||t.addIssue({code:"custom",path:["path"],message:"App paths must use app://<id>."}),"plugin"!==e.kind||/^plugin:\/\/[^\s/]+$/.test(e.path)||t.addIssue({code:"custom",path:["path"],message:"Plugin paths must use plugin://<id>."}),"file"!==e.kind&&"directory"!==e.kind||!e.path.startsWith("/")&&!e.path.split(/[\\/]+/).includes("..")||t.addIssue({code:"custom",path:["path"],message:"File and directory paths must be relative to the session cwd."})}),ie=s.z.object({category:s.z.enum(["skills","plugins","apps","files"]),code:s.z.string().trim().min(1).max(160),message:s.z.string().trim().min(1).max(2e3)}).strict();s.z.object({sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),cwd:s.z.string().trim().min(1).max(4096),candidates:s.z.array(ne).max(1e3).default([]),diagnostics:s.z.array(ie).max(20).default([])}).strict(),s.z.object({query:s.z.string().trim().max(240).default("")}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),cwd:s.z.string().trim().min(1).max(4096),query:s.z.string().trim().max(240),requestId:s.z.string().trim().min(1).max(160),candidates:s.z.array(ne.refine(e=>"file"===e.kind||"directory"===e.kind,"File search only returns files and directories.")).max(200).default([]),complete:s.z.boolean().default(!1)}).strict();const oe=s.z.object({message:s.z.string().trim().min(1).max(2e4),mode:Y.optional(),permissionMode:X.optional()}),re=oe.extend({attachments:s.z.array(G).max(6).default([]),references:ee}).strict().superRefine((e,t)=>{e.attachments.reduce((e,t)=>e+("inline"===t.source.type?t.size:0),0)>b&&t.addIssue({code:s.z.ZodIssueCode.custom,path:["attachments"],message:"Inline attachments must be 41943040 bytes or less in total."})}),ae=oe.extend({attachments:s.z.array(W).max(6).default([]),references:ee}).strict(),se=s.z.object({type:s.z.literal("runtime-path"),path:s.z.string().trim().min(1).max(4096).refine(e=>e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e),"Runtime paths must be absolute in the target controlled instance.")}).strict(),ce=s.z.object({modelEntityId:s.z.string().trim().min(1).max(120),modelName:s.z.string().trim().min(1).max(240)}).strict(),de=s.z.enum(["none","minimal","low","medium","high","xhigh","max","ultra"]);re.extend({agent:y,cwd:se,cwdFolderId:s.z.string().trim().min(1).max(120).optional(),clientRequestId:s.z.string().trim().min(1).max(160),modelSelection:ce.optional(),reasoningEffort:de.optional(),storyId:u.optional()}).strict();const me=s.z.object({mode:s.z.enum(["current-folder","worktree"]),branch:s.z.string().trim().min(1).max(1024)}).strict();ae.extend({agent:y,cwdFolderId:s.z.string().trim().min(1).max(120).optional(),gitSelection:me.optional(),clientRequestId:s.z.string().trim().min(1).max(160),modelSelection:ce.optional(),reasoningEffort:de.optional(),storyId:u.optional()}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160),modelSelection:ce}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),accepted:s.z.literal(!0)}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160),reasoningEffort:de}).strict(),s.z.object({cwdFolderId:s.z.string().trim().min(1).max(120).optional(),branch:s.z.string().trim().min(1).max(1024)}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),accepted:s.z.literal(!0)}).strict(),s.z.object({storyId:u.nullable()}).strict(),s.z.object({sessionId:s.z.string().trim().min(1).max(120),storyId:u.optional()}).strict(),s.z.object({disposition:s.z.enum(["created","already-created"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),creationSource:s.z.literal("ai-session")}).strict();const le=s.z.object({mode:s.z.enum(["current","managed-worktree"]).default("current")}).strict().default({mode:"current"});s.z.object({clientRequestId:s.z.string().trim().min(1).max(160),throughTurnId:s.z.string().trim().min(1).max(240).optional(),workspace:le.optional().default({mode:"current"})}).strict(),s.z.object({disposition:s.z.enum(["created","already-created"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),creationSource:s.z.literal("ai-session")}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160)}).strict(),s.z.object({disposition:s.z.enum(["opened","already-open"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),appSessionId:s.z.string().trim().min(1).max(120),creationSource:h}).strict(),s.z.object({clientRequestId:s.z.string().trim().min(1).max(160)}).strict(),s.z.object({disposition:s.z.enum(["closed","already-closed"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),creationSource:h}).strict(),s.z.object({disposition:s.z.enum(["cleared","already-cleared"]),aiSessionId:s.z.string().trim().min(1).max(120),clearedSessionIds:s.z.array(s.z.string().trim().min(1).max(120))}).strict(),s.z.object({code:s.z.enum(["invalid-request","not-found","unsupported","provider-unavailable","materialization-failed","open-app-failed","close-failed","conflict"]),message:s.z.string().trim().min(1).max(4e3),retryable:s.z.boolean().default(!1),aiSessionId:s.z.string().trim().min(1).max(120).optional(),providerSessionId:s.z.string().trim().min(1).max(240).optional()}).strict(),s.z.object({decision:s.z.enum(["allow","deny","skip"])}).strict(),s.z.object({expectedRevision:s.z.number().int().min(0),queueIds:s.z.array(s.z.string().trim().min(1).max(120)).max(100)}).strict(),s.z.object({expectedRevision:s.z.number().int().min(0),message:s.z.string().trim().min(1).max(2e4)}).strict(),s.z.object({code:s.z.string().trim().min(1).max(160),message:s.z.string(),instanceId:s.z.string().trim().min(1).max(160).optional(),nodeId:s.z.string().trim().min(1).max(160).optional(),route:s.z.string().trim().min(1).max(4096).optional()}).strict();const ue=s.z.object({id:s.z.string().trim().min(1).max(120),messageId:s.z.string().trim().min(1).max(240).optional(),message:s.z.string().trim().min(1).max(2e4),attachments:s.z.array(K).max(6).default([]),references:ee,permissionMode:X.optional(),status:s.z.enum(["queued","sending","failed"]).default("queued"),createdAt:s.z.string().datetime(),updatedAt:s.z.string().datetime(),error:s.z.string().trim().max(4e3).optional()}).strict(),pe=s.z.object({revision:s.z.number().int().min(0).default(0),pendingCount:s.z.number().int().min(0).default(0),items:s.z.array(ue).max(100).default([])}).strict().default({revision:0,pendingCount:0,items:[]}),ge=s.z.enum(["control","realtime","adapter-snapshot","transcript-tail","transcript-scan","process-scan","app-session"]),ze=s.z.object({id:s.z.string().trim().min(1).max(240),status:s.z.enum(["running","completed"]),startedAt:s.z.string().datetime().optional(),completedAt:s.z.string().datetime().optional()}).strict(),fe=s.z.object({id:s.z.string().trim().min(1).max(240),providerTurnId:s.z.string().trim().max(240).optional(),source:ge.optional(),userPrompt:s.z.string().trim().optional(),userMessages:s.z.array(j).max(100).optional(),status:s.z.enum(["queued","running","waiting","completed","failed"]).default("running"),phase:w.optional(),summary:s.z.string().trim().max(1e3).optional(),lastMessage:s.z.string().trim().optional(),lastMessageItemId:s.z.string().trim().max(240).optional(),contextCompactions:s.z.array(ze).max(20).optional(),revision:s.z.number().int().min(0).default(0),sourcePriority:s.z.number().int().min(0).max(100).optional(),snapshotVersion:s.z.number().int().min(0).optional(),observedAt:s.z.string().datetime().optional(),startedAt:s.z.string().datetime().optional(),updatedAt:s.z.string().datetime().optional(),completedAt:s.z.string().datetime().optional()}).strict(),be=fe.pick({id:!0,providerTurnId:!0,userPrompt:!0,userMessages:!0,status:!0,phase:!0,summary:!0,lastMessage:!0,contextCompactions:!0,startedAt:!0,updatedAt:!0,completedAt:!0}).strict(),ye=s.z.object({id:s.z.string().trim().min(1).max(120),agent:y,creationSource:h.default("app-session"),appSessionId:s.z.string().trim().max(120).optional(),appId:s.z.string().trim().max(120).optional(),providerSessionId:s.z.string().trim().max(240).optional(),lineage:B,providerMeta:s.z.record(s.z.string(),s.z.unknown()).optional(),modelSelection:ce.optional(),reasoningEffort:de.optional(),storyId:u.optional(),appBindingKeys:s.z.array(s.z.string().trim().min(1).max(240)).max(20).optional(),actions:q.optional(),activeTurnId:s.z.string().trim().max(240).optional(),title:s.z.string().trim().max(240).optional(),cwd:s.z.string().trim().max(4096).optional(),cwdFolderId:s.z.string().trim().min(1).max(120).optional(),userPrompt:s.z.string().trim().optional(),turns:s.z.array(fe).max(50).optional(),status:C.default("running"),phase:w.default("unknown"),summary:s.z.string().trim().max(1e3).optional(),lastMessage:s.z.string().trim().optional(),lastMessageItemId:s.z.string().trim().max(240).optional(),currentTool:E.optional(),toolCallsSinceLastMessage:s.z.number().int().min(0).default(0),subAgents:U.default([]),transcriptPath:s.z.string().trim().max(4096).optional(),transcriptSize:s.z.number().int().min(0).optional(),startedAt:s.z.string().datetime(),updatedAt:s.z.string().datetime(),completedAt:s.z.string().datetime().optional(),error:s.z.string().trim().max(4e3).optional(),counters:V,queue:pe}).strict(),he=ye.pick({id:!0,appBindingKeys:!0,cwd:!0,error:!0,providerMeta:!0,modelSelection:!0,reasoningEffort:!0,queue:!0,subAgents:!0}).strict(),xe=fe.pick({id:!0,providerTurnId:!0,status:!0,phase:!0,revision:!0,startedAt:!0,updatedAt:!0,completedAt:!0}).extend({bodyRevision:s.z.string().trim().min(1).max(64)}).strict(),Ie=s.z.object({sessionId:s.z.string().trim().min(1).max(120),revision:s.z.string().trim().min(1).max(64),turns:s.z.array(xe).max(50)}).strict(),Se=s.z.object({sessionId:s.z.string().trim().min(1).max(120),revision:s.z.string().trim().min(1).max(64),turn:fe}).strict(),Ae=s.z.string().trim().min(1).max(64),ve=s.z.object({kind:s.z.literal("not-modified"),revision:Ae}).strict();s.z.discriminatedUnion("kind",[ve,s.z.object({kind:s.z.literal("updated"),revision:Ae,detail:he}).strict()]),s.z.discriminatedUnion("kind",[ve,s.z.object({kind:s.z.literal("updated"),revision:Ae,index:Ie}).strict()]),s.z.discriminatedUnion("kind",[ve,s.z.object({kind:s.z.literal("updated"),revision:Ae,body:Se}).strict()]);const ke=s.z.object({session:ye,provider:s.z.string().trim().min(1).max(80),action:s.z.enum(["send","queue","steer","interrupt","approval"]),decision:s.z.enum(["allow","deny","skip"]).optional(),turnId:s.z.string().trim().min(1).max(240).optional(),providerTurnId:s.z.string().trim().min(1).max(240).optional(),queueId:s.z.string().trim().min(1).max(120).optional()}).strict(),je=ke.omit({session:!0}).extend({sessionId:s.z.string().trim().min(1).max(120),messageId:s.z.string().trim().min(1).max(240).optional()}).strict();s.z.object({sessionId:s.z.string().trim().min(1).max(120),queueRevision:s.z.number().int().min(0),action:s.z.enum(["retry","remove","edit","reorder"]),queueId:s.z.string().trim().min(1).max(120).optional()}).strict(),s.z.union([je,ke.transform(function(e){const t=e.session.turns?.at(-1),n=(e.queueId?e.session.queue?.items.find(t=>t.id===e.queueId)?.messageId:void 0)||("send"===e.action||"queue"===e.action||"steer"===e.action?t?.userMessages?.at(-1)?.id:void 0);return je.parse({sessionId:e.session.id,provider:e.provider,action:e.action,...e.decision?{decision:e.decision}:{},...e.turnId||e.session.activeTurnId||t?.id?{turnId:e.turnId||e.session.activeTurnId||t?.id}:{},...e.providerTurnId||t?.providerTurnId?{providerTurnId:e.providerTurnId||t?.providerTurnId}:{},...e.queueId?{queueId:e.queueId}:{},...n?{messageId:n}:{}})})]);const Ce=s.z.object({id:s.z.string().trim().min(1).max(120),agent:y,creationSource:h,providerSessionId:s.z.string().trim().min(1).max(240),lineage:B,modelSelection:ce.optional(),reasoningEffort:de.optional(),storyId:u.optional(),title:s.z.string().trim().max(240).optional(),userPrompt:s.z.string().trim().optional(),lastMessage:s.z.string().trim().optional(),cwd:s.z.string().trim().min(1).max(4096),cwdFolderId:s.z.string().trim().min(1).max(120).optional(),lastActiveAt:s.z.string().datetime(),archivedAt:s.z.string().datetime()}).strict();s.z.object({schemaVersion:s.z.literal(1).default(1),items:s.z.array(Ce).max(1e4).default([])}).strict(),s.z.object({items:s.z.array(Ce).max(1e4).default([])}).strict(),s.z.object({item:Ce,turns:s.z.array(be).max(50).default([])}).strict(),s.z.object({disposition:s.z.enum(["resumed","already-open"]),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),appSessionId:s.z.string().trim().min(1).max(120).optional(),creationSource:h}).strict();const we=fe.omit({userMessages:!0}),Ee=ye.pick({id:!0,agent:!0,creationSource:!0,appSessionId:!0,appId:!0,providerSessionId:!0,lineage:!0,providerMeta:!0,modelSelection:!0,reasoningEffort:!0,storyId:!0,appBindingKeys:!0,actions:!0,activeTurnId:!0,title:!0,cwd:!0,cwdFolderId:!0,userPrompt:!0,turns:!0,status:!0,phase:!0,summary:!0,lastMessage:!0,lastMessageItemId:!0,currentTool:!0,toolCallsSinceLastMessage:!0,subAgents:!0,queue:!0,startedAt:!0,updatedAt:!0,error:!0}).extend({turns:s.z.array(we).max(50).optional(),detailRevision:s.z.string().trim().min(1).max(64).optional(),turnsRevision:s.z.string().trim().min(1).max(64).optional(),latestTurnRef:s.z.object({id:fe.shape.id,bodyRevision:s.z.string().trim().min(1).max(64)}).strict().optional(),turnCount:s.z.number().int().min(0).optional(),subAgentCount:s.z.number().int().min(0).optional(),lastUserMessageAt:s.z.string().datetime().optional()}).strict(),Ne=s.z.object({runningCount:s.z.number().int().min(0).default(0),waitingCount:s.z.number().int().min(0).default(0),staleCount:s.z.number().int().min(0).default(0),sessions:s.z.array(Ee).default([]),updatedAt:s.z.string().datetime()}).strict();s.z.object({streamId:s.z.string().trim().min(1).max(240),revision:s.z.number().int().min(0),lastEventAt:s.z.string().datetime(),snapshot:Ne}).strict(),Ne.pick({runningCount:!0,waitingCount:!0,staleCount:!0,updatedAt:!0}).extend({idleCount:s.z.number().int().min(0).default(0),problemCount:s.z.number().int().min(0).default(0),revision:s.z.number().int().min(0).optional()});const Re=s.z.enum(["provider-event","app-session-created","app-session-updated","app-session-deleted","discovery-scan","control-action","heartbeat-sync","startup"]),Te=s.z.object({streamId:s.z.string().trim().min(1).max(240),instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),revision:s.z.number().int().min(0),previousRevision:s.z.number().int().min(0).optional(),traceId:s.z.string().trim().min(1).max(160),generatedAt:s.z.string().datetime(),reason:Re}).strict(),Pe=s.z.object({meta:Te,snapshot:Ne}).strict(),_e=s.z.object({meta:Te,upserted:s.z.array(Ee).default([]),removed:s.z.array(s.z.string().trim().min(1).max(120)).default([])}).strict(),Oe=s.z.object({meta:Te,sessionIds:s.z.array(s.z.string().trim().min(1).max(120)).default([]),expiresAt:s.z.string().datetime()}).strict();s.z.object({instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240).optional(),turnId:s.z.string().trim().min(1).max(240),itemId:s.z.string().trim().min(1).max(240),delta:s.z.string().min(1),generatedAt:s.z.string().datetime()}).strict().omit({instanceId:!0,nodeId:!0,providerSessionId:!0}).strict(),s.z.object({instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240),item:O,generatedAt:s.z.string().datetime()}).strict(),s.z.object({instanceId:s.z.string().trim().min(1).max(160),nodeId:s.z.string().trim().min(1).max(160).optional(),sessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().min(1).max(240).optional(),turnId:s.z.string().trim().min(1).max(240),itemId:s.z.string().trim().min(1).max(240),field:s.z.literal("output"),delta:s.z.string().min(1),generatedAt:s.z.string().datetime()}).strict().omit({instanceId:!0,nodeId:!0,providerSessionId:!0}).strict(),s.z.object({streamId:s.z.string().trim().min(1).max(240),instanceId:s.z.string().trim().min(1).max(160),sinceRevision:s.z.number().int().min(0),latestRevision:s.z.number().int().min(0),earliestRetainedRevision:s.z.number().int().min(0),syncRequired:s.z.boolean().default(!1),events:s.z.array(s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("ai-session.snapshot"),payload:Pe}).strict(),s.z.object({type:s.z.literal("ai-session.patch"),payload:_e}).strict(),s.z.object({type:s.z.literal("ai-session.removed"),payload:Oe}).strict()])).default([])}).strict();const Me=s.z.object({source:ge,sourcePriority:s.z.number().int().min(0).max(100).optional(),observedAt:s.z.string().datetime().optional(),snapshotVersion:s.z.number().int().min(0).optional()}).strict(),Le=Me.extend({type:s.z.literal("snapshot"),agent:s.z.string().trim().min(1).max(80),creationSource:h.optional(),appSessionId:s.z.string().trim().max(120).optional(),appId:s.z.string().trim().max(120).optional(),providerSessionId:s.z.string().trim().max(240).optional(),lineage:H.optional(),providerMeta:s.z.record(s.z.string(),s.z.unknown()).optional(),modelSelection:ce.optional(),reasoningEffort:de.optional(),storyId:u.optional(),appBindingKeys:s.z.array(s.z.string().trim().min(1).max(240)).max(20).optional(),actions:q.optional(),title:s.z.string().trim().max(240).optional(),cwd:s.z.string().trim().max(4096).optional(),cwdFolderId:s.z.string().trim().min(1).max(120).optional(),activeTurnId:s.z.string().trim().max(240).optional(),userPrompt:s.z.string().trim().optional(),turns:s.z.array(fe).max(50).optional(),status:C.optional(),phase:w.optional(),summary:s.z.string().trim().max(1e3).optional(),lastMessage:s.z.string().trim().optional(),lastMessageItemId:s.z.string().trim().max(240).optional(),error:s.z.string().trim().max(4e3).optional(),currentTool:E.optional(),toolCallsSinceLastMessage:s.z.number().int().min(0).optional(),subAgents:U.optional(),transcriptPath:s.z.string().trim().max(4096).optional(),transcriptSize:s.z.number().int().min(0).optional(),replaceActivity:s.z.boolean().optional()}).strict(),De=Me.extend({type:s.z.literal("event"),sessionId:s.z.string().trim().min(1).max(120),kind:s.z.enum(["lifecycle","send-ack","turn-started","user-message","assistant-message","approval-requested","turn-completed","session-error","tool-activity","sub-agent-activity","context-compaction","model-selection","reasoning-effort"]),modelSelection:ce.optional(),reasoningEffort:de.optional(),activeTurnId:s.z.string().trim().max(240).optional(),providerTurnId:s.z.string().trim().max(240).optional(),userPrompt:s.z.string().trim().optional(),userMessage:j.optional(),text:s.z.string().optional(),itemId:s.z.string().trim().max(240).optional(),status:C.optional(),phase:w.optional(),summary:s.z.string().trim().max(1e3).optional(),error:s.z.string().trim().max(4e3).optional(),currentTool:E.nullable().optional(),toolCallsSinceLastMessage:s.z.number().int().min(0).optional(),subAgents:U.optional(),contextCompaction:ze.optional(),counters:s.z.object({toolCalls:s.z.number().int().min(0).optional(),edits:s.z.number().int().min(0).optional(),approvals:s.z.number().int().min(0).optional()}).strict().optional()}).strict().superRefine((e,t)=>{if("model-selection"===e.kind?e.modelSelection||t.addIssue({code:"custom",path:["modelSelection"],message:"model-selection events require modelSelection"}):void 0!==e.modelSelection&&t.addIssue({code:"custom",path:["modelSelection"],message:"modelSelection is only valid for model-selection events"}),"reasoning-effort"===e.kind?e.reasoningEffort||t.addIssue({code:"custom",path:["reasoningEffort"],message:"reasoning-effort events require reasoningEffort"}):void 0!==e.reasoningEffort&&t.addIssue({code:"custom",path:["reasoningEffort"],message:"reasoningEffort is only valid for reasoning-effort events"}),"session-error"!==e.kind||e.error||t.addIssue({code:"custom",path:["error"],message:"session-error events require error"}),"context-compaction"===e.kind?e.contextCompaction||t.addIssue({code:"custom",path:["contextCompaction"],message:"context-compaction events require contextCompaction"}):void 0!==e.contextCompaction&&t.addIssue({code:"custom",path:["contextCompaction"],message:"contextCompaction is only valid for context-compaction events"}),"send-ack"!==e.kind&&"user-message"!==e.kind&&void 0!==e.userMessage&&t.addIssue({code:"custom",path:["userMessage"],message:"userMessage is only valid for send-ack and user-message events"}),"sub-agent-activity"===e.kind?e.subAgents||t.addIssue({code:"custom",path:["subAgents"],message:"sub-agent-activity events require subAgents"}):void 0!==e.subAgents&&t.addIssue({code:"custom",path:["subAgents"],message:"subAgents is only valid for sub-agent-activity events"}),"tool-activity"!==e.kind)return void 0!==e.currentTool&&t.addIssue({code:"custom",path:["currentTool"],message:"currentTool is only valid for tool-activity events"}),void(void 0!==e.toolCallsSinceLastMessage&&t.addIssue({code:"custom",path:["toolCallsSinceLastMessage"],message:"toolCallsSinceLastMessage is only valid for tool-activity events"}));"currentTool"in e||t.addIssue({code:"custom",path:["currentTool"],message:"tool-activity events require currentTool"}),void 0===e.toolCallsSinceLastMessage&&t.addIssue({code:"custom",path:["toolCallsSinceLastMessage"],message:"tool-activity events require toolCallsSinceLastMessage"})});s.z.discriminatedUnion("type",[Le,De]);const Fe=s.z.union([s.z.object({type:s.z.literal("schedule"),scheduleKind:s.z.literal("interval").default("interval"),intervalMs:s.z.number().int().min(1e3)}).strict(),s.z.object({type:s.z.literal("schedule"),scheduleKind:s.z.literal("daily"),timeOfDay:s.z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/),timezone:s.z.string().trim().min(1).max(120)}).strict(),s.z.object({type:s.z.literal("schedule"),scheduleKind:s.z.literal("weekly"),weekdays:s.z.array(s.z.number().int().min(0).max(6)).min(1).max(7),timeOfDay:s.z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/),timezone:s.z.string().trim().min(1).max(120)}).strict()]),Ue=s.z.union([Fe,s.z.object({type:s.z.literal("file-change"),roots:s.z.array(s.z.string().trim().min(1).max(4096)).min(1).max(50),globs:s.z.array(s.z.string().trim().min(1).max(500)).min(1).max(100),ignore:s.z.array(s.z.string().trim().min(1).max(500)).max(100).optional(),debounceMs:s.z.number().int().min(100).max(6e4).default(1500)}).strict(),s.z.object({type:s.z.literal("ai-session"),agent:s.z.string().trim().min(1).max(80).optional(),statuses:s.z.array(s.z.enum(["running","waiting","idle","failed"])).max(20).optional(),phases:s.z.array(s.z.enum(["thinking","tool","editing","approval","responding","unknown"])).max(20).optional()}).strict()]),Ve=s.z.object({promptTemplate:s.z.string().trim().min(1).max(2e4)}).strict(),qe=s.z.object({cooldownMs:s.z.number().int().min(0).max(864e5).optional(),maxConcurrentRuns:s.z.number().int().min(1).max(20).default(1),whenBusy:s.z.enum(["skip","queue"]).default("skip")}).strict(),$e=s.z.object({configHash:s.z.string().trim().min(8).max(80),name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(1e3).optional(),source:Ue,action:Ve,policy:qe.default({maxConcurrentRuns:1,whenBusy:"skip"}),createdAt:s.z.string().datetime(),updatedAt:s.z.string().datetime()}).strict(),He=s.z.object({type:s.z.literal("ai-session"),aiSessionId:s.z.string().trim().min(1).max(160)}).strict(),Be=s.z.object({configHash:s.z.string().trim().min(8).max(80),deploymentId:s.z.string().trim().min(1).max(240).optional(),instanceId:s.z.string().trim().min(1).max(160),origin:s.z.enum(["control-plane","controlled-instance"]).default("controlled-instance"),enabled:s.z.boolean().default(!0),target:He,localName:s.z.string().trim().min(1).max(160).optional(),createdAt:s.z.string().datetime(),updatedAt:s.z.string().datetime()}).strict(),Ge=s.z.object({configHash:s.z.string().trim().min(8).max(80),deploymentId:s.z.string().trim().min(1).max(240).optional(),instanceId:s.z.string().trim().min(1).max(160),status:s.z.enum(["idle","running","disabled","error"]).default("idle"),lastTriggeredAt:s.z.string().datetime().optional(),lastCompletedAt:s.z.string().datetime().optional(),lastSkippedAt:s.z.string().datetime().optional(),lastError:s.z.string().trim().max(4e3).optional(),runCount:s.z.number().int().min(0).default(0),skippedCount:s.z.number().int().min(0).default(0)}).strict(),Ke=s.z.object({id:s.z.string().trim().min(1).max(160),configHash:s.z.string().trim().min(8).max(80),deploymentId:s.z.string().trim().min(1).max(240).optional(),instanceId:s.z.string().trim().min(1).max(160),eventType:s.z.enum(["manual","schedule","file-change","ai-session"]),status:s.z.enum(["started","completed","failed","skipped"]),target:He,promptPreview:s.z.string().trim().max(500),eventSummary:s.z.string().trim().max(1e3).optional(),error:s.z.string().trim().max(4e3).optional(),startedAt:s.z.string().datetime(),completedAt:s.z.string().datetime().optional()}).strict();s.z.object({schemaVersion:s.z.literal(1).default(1),configs:s.z.array($e).default([]),deployments:s.z.array(Be).default([]),runtime:s.z.array(Ge).default([]),recentRuns:s.z.array(Ke).default([])}).strict();const We=s.z.object({config:$e,deployment:Be,runtime:Ge.optional()}).strict();s.z.object({instanceId:s.z.string().trim().min(1).max(160),sessionId:s.z.string().trim().min(1).max(160),mutation:We.optional()}).strip(),s.z.object({instanceId:s.z.string().trim().min(1).max(160),sessionId:s.z.string().trim().min(1).max(160),configHash:$e.shape.configHash}).strip();const Ye=s.z.object({instanceId:s.z.string().trim().min(1).max(160),instanceName:s.z.string().trim().min(1).max(160),deployment:Be,runtime:Ge.optional()}).strip(),Xe=Ke.extend({instanceName:s.z.string().trim().min(1).max(160).optional()}).strip(),Je=s.z.object({configHash:s.z.string().trim().min(8).max(80),config:$e,deploymentCount:s.z.number().int().min(0),enabledCount:s.z.number().int().min(0),runningCount:s.z.number().int().min(0),errorCount:s.z.number().int().min(0),ownedByControlPlane:s.z.boolean(),controlPlaneDeploymentCount:s.z.number().int().min(0),deployments:s.z.array(Ye),recentRuns:s.z.array(Xe)}).strip();s.z.object({updatedAt:s.z.string().datetime(),triggers:s.z.array(Je)}).strip(),s.z.object({name:$e.shape.name,description:$e.shape.description,source:Ue,action:Ve,policy:qe.partial().optional()}).strict(),s.z.object({scope:s.z.enum(["node","instance"]),nodeId:s.z.string().trim().min(1).max(160).optional(),instanceId:s.z.string().trim().min(1).max(160).optional(),code:s.z.string().trim().min(1).max(160),message:s.z.string().trim().min(1).max(4e3)}).strip();const Ze=s.z.string().regex(/^\d{4}-\d{2}-\d{2}$/,"Proxy protocol version must use YYYY-MM-DD format."),Qe=s.z.string().trim().min(1).max(160).regex(/^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$/),et=s.z.string().datetime(),tt=s.z.string().trim().min(32).max(4096),nt=s.z.string().trim().max(2048).transform((e,t)=>{try{return function(e){const t=new URL(e.trim());if("https:"!==t.protocol||t.username||t.password||"/"!==t.pathname||t.search||t.hash)throw new Error("Proxy origin must be an HTTPS origin without credentials, path, query, or fragment.");return t.origin}(e)}catch(e){return t.addIssue({code:"custom",message:e instanceof Error?e.message:String(e)}),s.z.NEVER}});s.z.string().trim().min(1).max(4096).transform((e,t)=>{try{return function(e){const t=e.trim();if(!t.startsWith("/")||t.startsWith("//")||t.includes("\\")||/%25/i.test(t))throw new Error("Proxy route must be a single-encoded node-agent relative route.");const n=t.split("?",1)[0];let i,o;try{i=n.split("/").map(e=>decodeURIComponent(e))}catch{throw new Error("Proxy route contains invalid percent encoding.")}if(i.some(e=>".."===e||"."===e))throw new Error("Proxy route cannot traverse outside the node-agent API.");try{o=new URL(t,"https://node-agent.invalid")}catch{throw new Error("Proxy route is invalid.")}if("https://node-agent.invalid"!==o.origin||o.username||o.password)throw new Error("Proxy route cannot select an absolute upstream URL.");return`${o.pathname}${o.search}`}(e)}catch(e){return t.addIssue({code:"custom",message:e instanceof Error?e.message:String(e)}),s.z.NEVER}});const it=s.z.enum(Object.values({ProtocolUnsupported:"CONTROL_PLANE_PROXY_PROTOCOL_UNSUPPORTED",InviteInvalid:"CONTROL_PLANE_PROXY_INVITE_INVALID",InviteExpired:"CONTROL_PLANE_PROXY_INVITE_EXPIRED",InviteConsumed:"CONTROL_PLANE_PROXY_INVITE_CONSUMED",InviteRevoked:"CONTROL_PLANE_PROXY_INVITE_REVOKED",TargetUnavailable:"CONTROL_PLANE_PROXY_TARGET_UNAVAILABLE",TargetMismatch:"CONTROL_PLANE_PROXY_TARGET_MISMATCH",BindingUnknown:"CONTROL_PLANE_PROXY_BINDING_UNKNOWN",BindingRevoked:"CONTROL_PLANE_PROXY_BINDING_REVOKED",BindingIdentityConflict:"CONTROL_PLANE_PROXY_BINDING_IDENTITY_CONFLICT",AuthenticationFailed:"CONTROL_PLANE_PROXY_AUTHENTICATION_FAILED",RouteInvalid:"CONTROL_PLANE_PROXY_ROUTE_INVALID",HeaderInvalid:"CONTROL_PLANE_PROXY_HEADER_INVALID",ResourceLimit:"CONTROL_PLANE_PROXY_RESOURCE_LIMIT",SnapshotRequired:"CONTROL_PLANE_PROXY_SNAPSHOT_REQUIRED",Unavailable:"CONTROL_PLANE_PROXY_UNAVAILABLE",TransportFailed:"CONTROL_PLANE_PROXY_TRANSPORT_FAILED"})),ot=s.z.object({code:it,message:s.z.string().trim().min(1).max(2048),retryable:s.z.boolean(),details:s.z.record(s.z.string(),s.z.unknown()).optional()}).strict(),rt=s.z.enum(["active","revoked"]),at=s.z.object({id:Qe,targetNodeId:Qe,status:rt,createdBy:Qe,expiresAt:et,revokedAt:et.optional(),createdAt:et,updatedAt:et}).strict();s.z.object({targetNodeId:Qe,expiresInSeconds:s.z.number().int().min(60).max(3600).default(600)}).strict(),s.z.object({invite:at,token:s.z.string().trim().min(24).max(512),proxyOrigin:nt,protocolVersion:Ze}).strict();const st=s.z.enum(["active","revoked"]),ct=s.z.object({id:Qe,claimId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,bindingKeyId:Qe,status:st,revision:s.z.number().int().positive(),lastError:ot.optional(),revokedAt:et.optional(),createdAt:et,updatedAt:et}).strict();s.z.object({protocolVersion:Ze,inviteToken:s.z.string().trim().min(24).max(512).optional(),claimId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe.optional(),bindingKeyId:Qe,credential:tt}).strict(),s.z.object({sourceControlPlaneId:Qe,bindingKeyId:Qe,credential:tt}).strict();const dt=s.z.object({id:Qe,name:s.z.string().trim().min(1).max(160),status:s.z.enum(["unknown","online","offline","degraded"]),health:s.z.enum(["unknown","ok","degraded","failed"]),lastSeenAt:et.optional(),capabilities:s.z.record(s.z.string(),s.z.unknown()).default({})}).strict(),mt=s.z.object({protocolVersion:Ze,binding:ct,streamId:Qe,revision:s.z.number().int().nonnegative(),observedAt:et,target:dt}).strict(),lt=s.z.object({type:s.z.literal("control-plane-proxy.event"),protocolVersion:Ze,streamId:Qe,bindingId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,revision:s.z.number().int().positive(),source:s.z.object({id:s.z.string().trim().min(1).max(512),seq:s.z.number().int().nonnegative()}).strict(),target:dt,event:s.z.object({type:s.z.string().trim().min(1).max(240),topic:s.z.string().trim().min(1).max(240),createdAt:et}).strict()}).strict(),ut=s.z.object({type:s.z.literal("control-plane-proxy.events.ready"),protocolVersion:Ze,streamId:Qe,bindingId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,latestRevision:s.z.number().int().nonnegative(),earliestRetainedRevision:s.z.number().int().nonnegative()}).strict(),pt=s.z.object({type:s.z.literal("control-plane-proxy.snapshot-required"),protocolVersion:Ze,streamId:Qe,bindingId:Qe,sourceControlPlaneId:Qe,targetNodeId:Qe,sinceRevision:s.z.number().int().nonnegative(),latestRevision:s.z.number().int().nonnegative(),earliestRetainedRevision:s.z.number().int().nonnegative(),error:ot}).strict();s.z.discriminatedUnion("type",[lt,ut,pt]),s.z.object({protocolVersion:Ze,binding:ct,target:mt.shape.target}).strict(),s.z.object({id:Qe,claimId:Qe,proxyOrigin:nt,requestedName:s.z.string().trim().min(1).max(160).optional(),sourceControlPlaneId:Qe,targetNodeId:Qe.optional(),bindingKeyId:Qe,credential:tt,status:s.z.enum(["pending","compensation-required"]),createdAt:et,updatedAt:et,expiresAt:et}).strict().omit({credential:!0}),s.z.object({id:Qe,nodeId:Qe,proxyOrigin:nt,proxyBindingId:Qe,targetNodeId:Qe,sourceControlPlaneId:Qe,bindingKeyId:Qe,credential:tt,createdAt:et,updatedAt:et}).strict();const gt=s.z.string().trim().min(1).max(120),zt=s.z.object({selectModelAtCreate:s.z.boolean().default(!1),selectProviderAtCreate:s.z.boolean().default(!1),switchModelWithinProvider:s.z.boolean().default(!1),switchProviderDuringSession:s.z.boolean().default(!1)}).strip().default({selectModelAtCreate:!1,selectProviderAtCreate:!1,switchModelWithinProvider:!1,switchProviderDuringSession:!1}),ft=s.z.object({selectAtCreate:s.z.boolean().default(!1),updateDuringSession:s.z.boolean().default(!1)}).strip().default({selectAtCreate:!1,updateDuringSession:!1}),bt=s.z.object({subagents:s.z.boolean().default(!1)}).strip().default({subagents:!1}),yt=s.z.object({agent:gt,actions:s.z.object({create:s.z.boolean().default(!1),send:s.z.boolean().default(!1),queue:s.z.boolean().default(!1),steer:s.z.boolean().default(!1),interrupt:s.z.boolean().default(!1),archive:s.z.boolean().default(!1),delete:s.z.boolean().default(!1),fork:s.z.boolean().default(!1),rename:s.z.boolean().default(!1),approvalDecisions:s.z.array(s.z.enum(["allow","deny","skip"])).max(3).default([])}).passthrough(),permissionModes:s.z.array(s.z.enum(["ask","auto-review","full-access"])).max(3).default([]),timeline:s.z.object({sessionRead:s.z.boolean().default(!1),turnRead:s.z.boolean().default(!1),liveItems:s.z.boolean().default(!1)}).passthrough(),modelSelection:zt.optional(),reasoningEffort:ft.optional(),hierarchy:bt.optional()}).passthrough(),ht=s.z.array(yt).max(100).default([]),xt="2026-09-17",It="2026-09-17",St=new Set(["2026-08-01","2026-08-16","2026-08-17","2026-08-20",xt]),At=s.z.string().regex(/^\d{4}-\d{2}-\d{2}$/,"Protocol version must use YYYY-MM-DD format."),vt=s.z.string().trim().min(1).max(120),kt=s.z.enum(["low","medium","high"]),jt=s.z.enum(["none","friendly","pragmatic"]),Ct=s.z.object({modelEntityId:s.z.string().trim().min(1).max(120),modelName:s.z.string().trim().min(1).max(240)}).strict(),wt=s.z.object({modelVerbosity:kt.optional(),personality:jt.optional(),multiAgent:s.z.object({enabled:s.z.boolean().default(!0),maxConcurrentThreads:s.z.number().int().min(1).max(64).optional(),defaultModel:Ct.optional(),defaultReasoningEffort:de.optional()}).strict().default({enabled:!0})}).strict();function Et(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e,n=t.multiAgent,i=!n||"object"!=typeof n||Array.isArray(n)?n:(()=>{const e=n,t=e.defaultModel;return{...void 0===e.enabled?{}:{enabled:e.enabled},...void 0===e.maxConcurrentThreads?{}:{maxConcurrentThreads:e.maxConcurrentThreads},...void 0===t?{}:{defaultModel:!t||"object"!=typeof t||Array.isArray(t)?t:{modelEntityId:t.modelEntityId,modelName:t.modelName}},...void 0===e.defaultReasoningEffort?{}:{defaultReasoningEffort:e.defaultReasoningEffort}}})();return{...void 0===t.modelVerbosity?{}:{modelVerbosity:t.modelVerbosity},...void 0===t.personality?{}:{personality:t.personality},...void 0===n?{}:{multiAgent:i}}}function Nt(){return{features:{appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionWorkspaceCheckout:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]}}}const Rt=s.z.object({sessionReadAgents:s.z.array(vt).max(100).default([]),turnReadAgents:s.z.array(vt).max(100).default([]),liveItemAgents:s.z.array(vt).max(100).default([])}).passthrough(),Tt=s.z.object({metadataAgents:s.z.array(vt).max(100).default([]),contentAgents:s.z.array(vt).max(100).default([]),uploadAgents:s.z.array(vt).max(100).default([]),retentionSettings:s.z.boolean().default(!1),fileSizeLimitSettings:s.z.boolean().default(!1)}).passthrough(),Pt=s.z.object({appRuntime:s.z.boolean().default(!1),tty:s.z.boolean().default(!1),gui:s.z.boolean().default(!1),browser:s.z.boolean().default(!1),browserTunnel:s.z.boolean().optional(),screenshots:s.z.boolean().default(!1),logs:s.z.boolean().default(!1),aiSessionWorkspaceSelection:s.z.boolean().default(!1),aiSessionWorkspaceCheckout:s.z.boolean().optional(),aiSessionPersistenceSettings:s.z.boolean().default(!1),privateModelCatalog:s.z.boolean().optional(),codexManagedSettings:s.z.boolean().optional(),nodeAgentConnectionUpdate:s.z.boolean().optional(),gitCliCredentialBroker:s.z.boolean().optional(),gitCredentialProxy:s.z.boolean().optional(),aiSessionTimeline:Rt.default(function(){return{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]}}),aiSessionConversationAttachments:Tt.optional(),aiSessionProviders:ht.optional()}).passthrough(),_t=s.z.object({features:Pt.default(function(){return{appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionWorkspaceCheckout:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]}})}).passthrough(),Ot=s.z.object({nodeAgentUrl:s.z.string().trim().url().max(2048).refine(e=>{const t=new URL(e);return/^https?:$/.test(t.protocol)&&!t.username&&!t.password&&"/"===t.pathname&&!t.search&&!t.hash},"Node agent URL must be an HTTP(S) origin.")}).strict();function Mt(e){const t={features:{appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionWorkspaceCheckout:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]}};if(!e||"object"!=typeof e||Array.isArray(e))return t;const n=e,i=n.features;if(!i||"object"!=typeof i||Array.isArray(i))return t;const o=i,r={appRuntime:!1,tty:!1,gui:!1,browser:!1,browserTunnel:!1,screenshots:!1,logs:!1,aiSessionWorkspaceSelection:!1,aiSessionWorkspaceCheckout:!1,aiSessionPersistenceSettings:!1,privateModelCatalog:!1,codexManagedSettings:!1,nodeAgentConnectionUpdate:!1,gitCliCredentialBroker:!1,gitCredentialProxy:!1,aiSessionTimeline:{sessionReadAgents:[],turnReadAgents:[],liveItemAgents:[]},aiSessionConversationAttachments:{metadataAgents:[],contentAgents:[],uploadAgents:[],retentionSettings:!1,fileSizeLimitSettings:!1},aiSessionProviders:[]};for(const e of["appRuntime","tty","gui","browser","browserTunnel","screenshots","logs","aiSessionWorkspaceSelection","aiSessionWorkspaceCheckout","aiSessionPersistenceSettings","privateModelCatalog","codexManagedSettings","nodeAgentConnectionUpdate","gitCliCredentialBroker","gitCredentialProxy"]){const t=s.z.boolean().safeParse(o[e]);t.success&&(r[e]=t.data)}const a=Rt.safeParse(o.aiSessionTimeline);a.success&&(r.aiSessionTimeline=a.data);const c=Tt.safeParse(o.aiSessionConversationAttachments);c.success&&(r.aiSessionConversationAttachments=c.data);const d=ht.safeParse(o.aiSessionProviders);return d.success&&(r.aiSessionProviders=d.data),_t.parse({...n,features:{...o,...r}})}function Lt(e){return Mt(e).features.aiSessionConversationAttachments}function Dt(e){return Mt(e).features.aiSessionProviders}function Ft(e,t){const n=Lt(e);return"metadata"===t?n.metadataAgents:"content"===t?n.contentAgents:n.uploadAgents}function Ut(e){return Mt(e).features.aiSessionTimeline}function Vt(e,t){const n=Ut(e);return"session-read"===t?n.sessionReadAgents:"turn-read"===t?n.turnReadAgents:n.liveItemAgents}const qt=s.z.string().trim().min(1).max(120).regex(/^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$/),$t=s.z.string().datetime(),Ht=s.z.record(s.z.string(),s.z.string()).default({}),Bt=s.z.record(s.z.string(),s.z.string()).default({}),Gt=s.z.object({encoding:s.z.enum(["utf8","base64"]),data:s.z.string()}).strict().superRefine((e,t)=>{"base64"===e.encoding&&Buffer.from(e.data,"base64").toString("base64")!==e.data&&t.addIssue({code:"custom",path:["data"],message:"Node tunnel binary body must use canonical base64 encoding."})}),Kt=/^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/,Wt=/^sha256:([a-fA-F0-9]{64})$/,Yt=/^(?:localhost|[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?)(?::[1-9][0-9]{0,4})?$/,Xt=/^[a-z0-9]+(?:(?:[._]|__|-+)[a-z0-9]+)*$/;function Jt(e){const t=e.trim();if(!t||t.length>512||t.includes("://")||/\s/.test(t))throw new Error("Docker image reference must not contain a URL scheme or whitespace.");const n=t.indexOf("@");if(-1!==n&&n!==t.lastIndexOf("@"))throw new Error("Docker image reference contains more than one digest separator.");const i=-1===n?void 0:t.slice(n+1),o=-1===n?t:t.slice(0,n),r=i?Wt.exec(i):void 0;if(i&&!r)throw new Error("Docker image digest must use sha256 followed by 64 hexadecimal characters.");const a=o.lastIndexOf("/"),s=o.lastIndexOf(":"),c=s>a,d=c?o.slice(s+1):void 0,m=c?o.slice(0,s):o;if(d&&!Kt.test(d))throw new Error("Docker image tag is invalid.");if(!d&&!r)throw new Error("Docker image reference must include an explicit tag or sha256 digest.");const l=m.split("/");if(!l.length||l.some(e=>!e))throw new Error("Docker image repository path is invalid.");const u=l.length>1&&(l[0].includes(".")||l[0].includes(":")||"localhost"===l[0]),p=u?l.slice(1):l;if(u&&!Yt.test(l[0].toLowerCase()))throw new Error("Docker image registry host or port is invalid.");if(!p.length||p.some(e=>!Xt.test(e)))throw new Error("Docker image repository names must be lowercase and use valid separators.");const g=l.map((e,t)=>u&&0===t?e.toLowerCase():e).join("/"),z=r?`sha256:${r[1].toLowerCase()}`:void 0;return`${g}${d?`:${d}`:""}${z?`@${z}`:""}`}function Zt(e){const t=Jt(e),n=t.indexOf("@"),i=-1===n?void 0:t.slice(n+1),o=-1===n?t:t.slice(0,n),r=o.lastIndexOf("/"),a=o.lastIndexOf(":"),s=a>r;return{reference:t,repository:s?o.slice(0,a):o,tag:s?o.slice(a+1):void 0,digest:i}}const Qt=s.z.string().trim().min(1).max(512).transform((e,t)=>{try{return Jt(e)}catch(e){return t.addIssue({code:"custom",message:e instanceof Error?e.message:String(e)}),s.z.NEVER}}),en=s.z.string().trim().transform((e,t)=>{const n=Wt.exec(e);return n?`sha256:${n[1].toLowerCase()}`:(t.addIssue({code:"custom",message:"Docker image digest must use sha256 followed by 64 hexadecimal characters."}),s.z.NEVER)}),tn=s.z.object({modelEntityIds:s.z.array(qt).max(64).transform(e=>[...new Set(e)]).optional(),codexModelHash:qt.nullable().optional(),claudeModelHash:qt.nullable().optional(),opencodeModelHash:qt.nullable().optional()}).strict().default({}),nn=s.z.object({imageId:qt,tag:s.z.string().trim().min(1).max(128).regex(Kt).optional()}).strict(),on=s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("image"),imageSelection:nn}).strict(),s.z.object({type:s.z.literal("template"),environmentTemplateId:qt}).strict()]),rn=s.z.enum(["creating","ready","failed","deleting"]),an=s.z.enum(["linux","darwin","win32","freebsd","openbsd","aix","sunos","unknown"]),sn=s.z.enum(["x64","arm64","arm","ia32","ppc64","s390x","riscv64","unknown"]),cn=s.z.object({code:s.z.string().trim().min(1).max(120),message:s.z.string().trim().min(1).max(2048),phase:s.z.enum(["validate","commit","inspect","security-check","persist","delete","recovery"]).optional()}).strict(),dn=s.z.object({templateId:qt,nodeId:qt,imageId:en,name:s.z.string().trim().min(1).max(160),platform:an,architecture:sn}).strict(),mn=s.z.enum(["data","agent-home","workspace"]),ln=s.z.object({deleteVolumes:s.z.boolean()}).strict(),un=s.z.object({role:mn,name:s.z.string().trim().min(1).max(255),mountPath:s.z.string().trim().startsWith("/").max(4096),status:s.z.enum(["deleted","retained","missing","failed"]),error:s.z.object({code:s.z.string().trim().min(1).max(120),message:s.z.string().trim().min(1).max(2048)}).strict().optional()}).strict(),pn=s.z.object({instanceId:qt,containerDeleted:s.z.boolean(),completed:s.z.boolean(),deletedVolumes:s.z.array(un),retainedVolumes:s.z.array(un),volumeResults:s.z.array(un)}).strict(),gn={img_default:"market_taskhandoff_browser",img_codex:"market_taskhandoff_codex",img_ai:"market_taskhandoff_ai"};function zn(e,t){if(e&&"object"==typeof e&&!Array.isArray(e)){const t=e;return{imageId:"string"==typeof t.imageId&&gn[t.imageId]||t.imageId,..."string"==typeof t.tag?{tag:t.tag}:{}}}if("string"==typeof t)return{imageId:gn[t]||t}}const fn=s.z.object({id:qt,name:s.z.string().trim().min(1).max(120),kind:s.z.enum(["tty","gui","web"]),source:s.z.enum(["builtin","custom"]),availability:s.z.enum(["available","missing-dependency"]),capabilities:s.z.object({automation:s.z.enum(["cdp"]).optional(),supportsCwdSelection:s.z.boolean().default(!1)}).strict().default({supportsCwdSelection:!1}),diagnosticCode:s.z.enum(["APP_EXECUTABLE_NOT_FOUND"]).optional()}).strict(),bn=s.z.object({code:s.z.enum(["APP_CATALOG_INVALID"]),message:s.z.string().trim().min(1).max(500)}).strict(),yn=s.z.object({items:s.z.array(fn).max(256),observedAt:$t,issues:s.z.array(bn).max(32).default([])}).strict(),hn=s.z.object({id:qt,name:s.z.string().trim().min(1).max(160),sourceInstanceId:qt,nodeId:qt,imageId:en.optional(),internalTag:s.z.string().trim().min(1).max(512).optional(),platform:an.optional(),architecture:sn.optional(),sizeBytes:s.z.number().int().nonnegative().optional(),status:rn,error:cn.optional(),createdAt:$t,updatedAt:$t}).strict().superRefine((e,t)=>{if("ready"===e.status)for(const n of["imageId","internalTag","platform","architecture","sizeBytes"])void 0===e[n]&&t.addIssue({code:"custom",path:[n],message:`Ready environment template requires ${n}.`});"failed"!==e.status||e.error||t.addIssue({code:"custom",path:["error"],message:"Failed environment template requires an error diagnostic."})}),xn=s.z.enum(["apt","dnf","brew","npm"]),In=s.z.enum(["user","passwordless-sudo","root"]),Sn=s.z.object({platform:an,arch:sn,installers:s.z.array(xn).max(8),privilege:In,installerAccess:s.z.object({npmGlobalWritable:s.z.boolean().optional()}).strict().optional()}).strict(),An=s.z.enum(["installed","not-installed","broken","unsupported"]),vn=s.z.enum(["recipe","bundled","external","none"]),kn=s.z.object({code:s.z.enum(["BUNDLED","EXTERNALLY_MANAGED","ALREADY_INSTALLED","NOT_INSTALLED","UNSUPPORTED_PLATFORM","INSTALLER_UNAVAILABLE","INSTALLER_NOT_WRITABLE","INSUFFICIENT_PRIVILEGE","OPERATION_IN_PROGRESS"]),message:s.z.string().trim().min(1).max(500)}).strict(),jn=s.z.object({id:qt,name:s.z.string().trim().min(1).max(120),kind:s.z.enum(["tty","gui","web"]),description:s.z.string().trim().max(500).optional(),state:An,managementSource:vn,version:s.z.string().trim().max(120).optional(),canInstall:s.z.boolean(),canUninstall:s.z.boolean(),installReason:kn.optional(),uninstallReason:kn.optional(),activeJobId:qt.optional()}).strict(),Cn=s.z.enum(["install","uninstall"]),wn=s.z.enum(["queued","running","succeeded","failed","cancelled","interrupted"]),En=s.z.object({current:s.z.number().finite().nonnegative().optional(),total:s.z.number().finite().positive().optional(),unit:s.z.string().trim().min(1).max(40).optional()}).strict().refine(e=>void 0===e.total||void 0===e.current||e.current<=e.total,{message:"Progress current must not exceed total.",path:["current"]}),Nn=s.z.object({executable:s.z.string().trim().min(1).max(4096),args:s.z.array(s.z.string().max(4096)).max(128)}).strict(),Rn=s.z.object({code:s.z.string().trim().min(1).max(120).regex(/^[a-z0-9][a-z0-9._-]*$/),message:s.z.string().trim().min(1).max(4096),retryable:s.z.boolean(),sessionIds:s.z.array(qt).max(64).optional()}).strict(),Tn=s.z.object({id:qt,requestId:qt.optional(),appId:qt,operation:Cn,state:wn,phase:s.z.string().trim().min(1).max(120).optional(),progress:En.optional(),command:Nn.optional(),logTail:s.z.string().max(32768).optional(),logTruncated:s.z.boolean().optional(),error:Rn.optional(),requestedAt:$t,startedAt:$t.optional(),finishedAt:$t.optional(),updatedAt:$t}).strict(),Pn=s.z.object({streamId:qt,sequence:s.z.number().int().nonnegative(),capabilities:Sn,apps:s.z.array(jn).max(256),activeJobs:s.z.array(Tn).max(256),recentJobs:s.z.array(Tn).max(256),observedAt:$t}).strict(),_n=s.z.object({requestId:qt.optional()}).strict(),On=s.z.object({job:Tn}).strict(),Mn=s.z.object({type:s.z.literal("app-management"),streamId:qt,sequence:s.z.number().int().nonnegative(),observedAt:$t,job:Tn.optional(),snapshot:Pn.optional()}).strict().refine(e=>void 0!==e.job||void 0!==e.snapshot,{message:"An app management event requires a job or snapshot."}),Ln=s.z.object({component:s.z.enum(["control-plane","node-agent","controlled-instance"]),packageName:s.z.string().trim().max(160).optional(),packageVersion:s.z.string().trim().max(80).optional(),protocolVersion:At.optional(),buildId:s.z.string().trim().max(160).optional(),builtAt:s.z.string().trim().max(120).optional(),gitCommit:s.z.string().trim().max(120).optional(),imageRef:s.z.string().trim().max(512).optional(),imageDigest:s.z.string().trim().max(240).optional()}).strict(),Dn=s.z.object({data:s.z.object({ok:s.z.literal(!0),role:s.z.literal("control-plane"),protocolVersion:At,build:Ln.extend({component:s.z.literal("control-plane"),packageVersion:s.z.string().trim().min(1).max(80)}).loose(),serverTime:$t}).loose()}).loose(),Fn=s.z.enum(["stable","beta","alpha"]),Un=s.z.object({packageName:s.z.literal("@task-handoff/controlled-instance"),version:s.z.string().trim().min(1).max(80),platform:s.z.string().trim().min(1).max(40),arch:s.z.string().trim().min(1).max(40),formatVersion:s.z.number().int().positive(),launcherAbi:s.z.number().int().positive(),entrypoint:s.z.string().trim().min(1).max(512),sha256:s.z.string().regex(/^[a-f0-9]{64}$/)}).strict(),Vn=s.z.object({code:s.z.enum(["INSTANCE_RUNTIME_VERSION_MISMATCH","INSTANCE_RUNTIME_ARTIFACT_UNAVAILABLE","INSTANCE_RUNTIME_ARTIFACT_INVALID","INSTANCE_RUNTIME_INSTALL_FAILED","INSTANCE_RUNTIME_RESTART_FAILED","INSTANCE_RUNTIME_VERIFICATION_FAILED","INSTANCE_BASE_RUNTIME_INCOMPATIBLE","NODE_UPDATE_PREFLIGHT_FAILED","NODE_UPDATE_FAILED","LEGACY_INSTANCE_UPDATE_RETIRED"]),message:s.z.string().trim().min(1).max(4096),expectedVersion:s.z.string().trim().min(1).max(80).optional(),actualVersion:s.z.string().trim().min(1).max(80).optional(),retryable:s.z.boolean().default(!1)}).strict(),qn=s.z.object({desiredVersion:s.z.string().trim().min(1).max(80),actualVersion:s.z.string().trim().min(1).max(80).optional(),phase:s.z.enum(["pending","draining","installing","restarting","verifying","matched","failed"]),attempt:s.z.number().int().nonnegative().default(0),lastAttemptAt:$t.optional(),matchedAt:$t.optional(),error:Vn.optional()}).strict(),$n=s.z.object({runningInstanceCount:s.z.number().int().nonnegative(),stoppedInstanceCount:s.z.number().int().nonnegative(),activeInstanceCount:s.z.number().int().nonnegative(),restartInstanceCount:s.z.number().int().nonnegative(),runningInstanceIds:s.z.array(qt).max(1024).default([]),stoppedInstanceIds:s.z.array(qt).max(1024).default([]),activeInstanceIds:s.z.array(qt).max(1024).default([])}).strict(),Hn=s.z.object({phase:s.z.enum(["queued","updating-node","restarting-node","converging-instances","succeeded","degraded","failed"]),desiredVersion:s.z.string().trim().min(1).max(80),nodeVersion:s.z.string().trim().min(1).max(80).optional(),expectedInstanceIds:s.z.array(qt).max(1024).default([]),expectedInstanceCount:s.z.number().int().nonnegative(),matchedInstanceCount:s.z.number().int().nonnegative(),pendingInstanceCount:s.z.number().int().nonnegative(),failedInstanceCount:s.z.number().int().nonnegative(),deferredInstanceCount:s.z.number().int().nonnegative().default(0)}).strict(),Bn=s.z.object({channel:Fn.default("stable")}).strict(),Gn=s.z.object({source:s.z.literal("npm"),channel:Fn,currentVersion:s.z.string().trim().max(240).optional(),availableVersion:s.z.string().trim().min(1).max(240),artifactRef:s.z.string().trim().min(1).max(512).optional(),runtimeArtifacts:s.z.array(Un).default([]),impact:$n,updateAvailable:s.z.boolean(),supported:s.z.boolean().default(!0),reason:s.z.string().trim().max(2048).optional(),checkedAt:$t,preflightToken:s.z.string().trim().min(16).max(240).optional()}).strict(),Kn=s.z.object({id:qt,nodeId:qt,source:s.z.literal("npm"),channel:Fn,fromVersion:s.z.string().trim().max(240).optional(),toVersion:s.z.string().trim().min(1).max(240),artifactRef:s.z.string().trim().min(1).max(512).optional(),runtimeArtifacts:s.z.array(Un).default([]),impact:$n,rollout:Hn,status:s.z.enum(["queued","updating-node","restarting-node","converging-instances","succeeded","degraded","failed"]),error:Vn.optional(),startedAt:$t.optional(),completedAt:$t.optional(),createdAt:$t,updatedAt:$t}).strict(),Wn=s.z.object({channel:Fn,targetVersion:s.z.string().trim().min(1).max(240),preflightToken:s.z.string().trim().min(16).max(240)}).strict(),Yn=s.z.object({type:s.z.enum(["branch","tag"]),name:s.z.string().trim().min(1).max(240)}).strict(),Xn=s.z.object({type:s.z.literal("commit"),commit:s.z.string().trim().regex(/^[0-9a-fA-F]{4,64}$/,"commit must be a hexadecimal Git object id")}).strict(),Jn=s.z.discriminatedUnion("type",[Yn,Xn]),Zn=s.z.object({type:s.z.enum(["none","ssh-key","https-token"]).default("none"),secretId:s.z.string().trim().min(1).max(120).optional()}).strict(),Qn=s.z.object({depth:s.z.number().int().positive().max(1e5).optional(),submodules:s.z.boolean().default(!1),lfs:s.z.boolean().default(!1),subdirectory:s.z.string().trim().max(240).refine(e=>!e.startsWith("/")&&!e.split("/").some(e=>".."===e),"subdirectory must be a relative path within the repository").transform(e=>e.split("/").filter(e=>e&&"."!==e).join("/")).default("")}).strict(),ei=s.z.object({id:qt,name:s.z.string().trim().min(1).max(160),url:s.z.string().trim().min(1).max(2048),provider:s.z.string().trim().max(80).optional(),ref:Jn.default({type:"branch",name:"main"}),auth:Zn.default({type:"none"}),clone:Qn.default({submodules:!1,lfs:!1,subdirectory:""}),defaultImageSelection:nn.optional(),labels:Ht,createdAt:$t,updatedAt:$t}).strict(),ti=s.z.object({id:qt,nodeId:qt,name:s.z.string().trim().min(1).max(160),path:s.z.string().trim().min(1).max(4096),defaultImageSelection:nn.optional(),labels:Ht,createdAt:$t,updatedAt:$t}).strict(),ni=s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("git-repository"),repositoryId:qt.optional(),url:s.z.string().trim().min(1).max(2048),provider:s.z.string().trim().max(80).optional(),ref:Jn.default({type:"branch",name:"main"}),auth:Zn.default({type:"none"}),clone:Qn.default({submodules:!1,lfs:!1,subdirectory:""})}).strict(),s.z.object({type:s.z.literal("git-template"),url:s.z.string().trim().min(1).max(2048),templateId:s.z.string().trim().min(1).max(120).optional(),ref:Jn.default({type:"branch",name:"main"}),auth:Zn.default({type:"none"}),clone:Qn.default({submodules:!1,lfs:!1,subdirectory:""})}).strict(),s.z.object({type:s.z.literal("local-folder"),localFolderId:qt.optional(),path:s.z.string().trim().min(1).max(4096),ownerNodeId:qt.optional()}).strict()]);function ii(e){const t=ni.parse(e);return"local-folder"===t.type?t:ni.parse({...t,auth:{type:"none"}})}const oi=ii,ri=s.z.object({mode:s.z.enum(["local-bind","git-clone","empty-volume","persistent-volume"]),path:s.z.string().trim().min(1).max(4096).default("/workspace"),volumeName:s.z.string().trim().max(240).optional(),readOnly:s.z.boolean().default(!1)}).strict(),ai=s.z.enum(["codex","claude","opencode"]),si=s.z.enum(["openai-responses","openai-chat-completions","anthropic-messages"]),ci=s.z.object({name:s.z.string().trim().min(1).max(240),order:s.z.number().int().min(0).max(1e6).default(0)}).strict(),di=s.z.object({id:qt,name:s.z.string().trim().min(1).max(160),source:ni,defaultImageSelection:nn.optional(),defaultNodeId:qt.optional(),workspacePolicy:ri,labels:Ht,createdAt:$t,updatedAt:$t}).strict(),mi=s.z.object({id:qt,name:s.z.string().trim().min(1).max(160),endpoint:s.z.string().trim().min(1).max(2048),key:s.z.string().trim().min(1).max(4096),model:s.z.string().trim().min(1).max(240),modelNames:s.z.array(ci).max(256).default([]),protocols:s.z.array(si).max(3).default([]),app:ai,enabled:s.z.boolean().default(!0),order:s.z.number().int().min(0).max(1e6).default(0),labels:Ht,createdAt:$t,updatedAt:$t}).strict(),li=mi,ui=mi.omit({key:!0}).extend({keyPreview:s.z.string().trim().min(1).max(160),keySet:s.z.boolean()}).strict(),pi=ui.extend({referenceCount:s.z.number().int().min(0)}).strict(),gi=s.z.object({instanceId:qt,modelEntityIds:s.z.array(qt).max(64).transform(e=>[...new Set(e)]).optional(),codexModelHash:qt.optional(),claudeModelHash:qt.optional(),opencodeModelHash:qt.optional(),updatedAt:$t}).strict().transform(e=>({...e,modelEntityIds:e.modelEntityIds?.length?e.modelEntityIds:[...new Set([e.codexModelHash,e.claudeModelHash,e.opencodeModelHash].filter(e=>Boolean(e)))]})),zi=s.z.discriminatedUnion("type",[s.z.object({type:s.z.literal("control-plane"),name:mi.shape.name,enabled:mi.shape.enabled,order:mi.shape.order}).strict(),s.z.object({type:s.z.literal("node"),nodeId:qt,name:mi.shape.name,enabled:mi.shape.enabled,order:mi.shape.order,referenceCount:s.z.number().int().min(0)}).strict()]),fi=s.z.object({id:qt,model:ui,locations:s.z.array(zi).min(1),referenceCount:s.z.number().int().min(0).default(0)}).strict(),bi=s.z.object({nodeId:qt,code:s.z.string().trim().min(1).max(120),message:s.z.string().trim().min(1).max(2e3)}).strict(),yi=s.z.object({models:s.z.array(fi),nodeDiagnostics:s.z.array(bi).default([]),updatedAt:$t}).strict(),hi=mi.omit({id:!0,createdAt:!0,updatedAt:!0}).strict(),xi=hi.partial().strict(),Ii=mi,Si=s.z.object({modelSelection:tn,modelEntityIds:s.z.array(qt).max(64).transform(e=>[...new Set(e)]).optional(),codexModelHash:qt.optional(),claudeModelHash:qt.optional(),opencodeModelHash:qt.optional()}).strict().transform(e=>({...e,modelEntityIds:e.modelEntityIds||e.modelSelection.modelEntityIds||[...new Set([e.codexModelHash,e.claudeModelHash,e.opencodeModelHash].filter(e=>Boolean(e)))]})),Ai=s.z.enum(["market","custom"]),vi=s.z.enum(["active","deprecated","yanked"]),ki=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("builtin"),key:s.z.string().trim().min(1).max(120)}).strict(),s.z.object({kind:s.z.literal("remote"),url:s.z.string().trim().url().max(2048),mediaType:s.z.enum(["image/png","image/jpeg","image/webp"]).optional(),digest:en.optional()}).strict()]),ji=s.z.array(s.z.string().trim().min(1).max(80)).default([]),Ci=s.z.array(s.z.string().trim().min(1).max(120)).default([]),wi=s.z.record(s.z.string().trim().min(2).max(35),s.z.string().trim().min(1).max(4096)),Ei=s.z.object({os:s.z.string().trim().min(1).max(40),architecture:s.z.string().trim().min(1).max(40),digest:en.optional(),downloadSizeBytes:s.z.number().int().positive().optional(),unpackedSizeBytes:s.z.number().int().positive().optional()}).strict(),Ni=s.z.object({name:s.z.string().trim().min(1).max(128).regex(Kt),version:s.z.string().trim().min(1).max(160).optional(),reference:Qt,manifestDigest:en.optional(),publishedAt:$t.optional(),platforms:s.z.array(Ei).default([]),status:vi.default("active")}).strict(),Ri=s.z.object({id:qt,publisher:s.z.string().trim().min(1).max(160),slug:s.z.string().trim().min(1).max(160),name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().min(1).max(4096),localizedDescriptions:wi.optional(),cover:ki.optional(),repository:s.z.string().trim().min(1).max(512),defaultTag:s.z.string().trim().min(1).max(128).regex(Kt),tags:s.z.array(Ni).min(1),capabilities:ji,optionalApps:Ci,defaultEnv:Bt,labels:Ht,status:vi.default("active")}).strict().superRefine((e,t)=>{e.tags.some(t=>t.name===e.defaultTag)||t.addIssue({code:"custom",path:["defaultTag"],message:"Market defaultTag must identify one of the image tags."})}),Ti=s.z.object({protocolVersion:At,catalogId:qt,revision:s.z.string().trim().min(1).max(240),source:s.z.enum(["embedded","remote","cache"]),generatedAt:$t,expiresAt:$t.optional(),items:s.z.array(Ri)}).strict(),Pi=s.z.object({source:s.z.enum(["embedded","remote","cache"]),state:s.z.enum(["ready","refreshing","stale","failed"]),revision:s.z.string().trim().min(1).max(240),updatedAt:$t,error:s.z.string().trim().max(4096).optional()}).strict(),_i=s.z.object({id:qt,origin:s.z.literal("custom"),name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(4096).optional(),localizedDescriptions:wi.optional(),cover:ki.optional(),reference:Qt,repository:s.z.string().trim().min(1).max(512),tag:s.z.string().trim().min(1).max(128).regex(Kt).optional(),pullPolicy:s.z.literal("if-not-present").default("if-not-present"),capabilities:ji,optionalApps:Ci,defaultEnv:Bt,labels:Ht,createdAt:$t,updatedAt:$t}).strict(),Oi=_i,Mi=s.z.object({name:s.z.string().trim().min(1).max(128).regex(Kt),version:s.z.string().trim().min(1).max(160).optional(),reference:Qt,manifestDigest:en.optional(),status:vi}).strict(),Li=s.z.object({id:qt,origin:Ai,name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(4096).optional(),localizedDescriptions:wi.optional(),cover:ki,repository:s.z.string().trim().min(1).max(512),tag:s.z.string().trim().min(1).max(128).regex(Kt).optional(),availableTags:s.z.array(Mi),reference:Qt,digest:en.optional(),downloadSizeBytes:s.z.number().int().positive().optional(),unpackedSizeBytes:s.z.number().int().positive().optional(),capabilities:ji,optionalApps:Ci,defaultEnv:Bt,labels:Ht,readOnly:s.z.boolean(),lifecycleStatus:vi.optional(),market:s.z.object({catalogId:qt,catalogRevision:s.z.string().trim().min(1).max(240),publisher:s.z.string().trim().min(1).max(160),version:s.z.string().trim().min(1).max(160).optional()}).strict().optional()}).strict(),Di=s.z.object({id:qt,origin:Ai,name:s.z.string().trim().min(1).max(160),description:s.z.string().trim().max(4096).optional(),localizedDescriptions:wi.optional(),cover:ki.optional(),repository:s.z.string().trim().min(1).max(512),tag:s.z.string().trim().min(1).max(128).regex(Kt).optional(),requestedReference:Qt,resolvedDigest:en.optional(),resolvedReference:Qt.optional(),downloadSizeBytes:s.z.number().int().positive().optional(),pullPolicy:s.z.literal("if-not-present").default("if-not-present"),capabilities:ji,optionalApps:Ci,defaultEnv:Bt,labels:Ht,market:s.z.object({catalogId:qt,catalogRevision:s.z.string().trim().min(1).max(240),publisher:s.z.string().trim().min(1).max(160),version:s.z.string().trim().min(1).max(160).optional()}).strict().optional(),createdAt:$t,updatedAt:$t}).strict(),Fi=s.z.object({phase:s.z.enum(["checking-image","pulling-image","resolving-image","ready","failed"]),requestedReference:Qt,generation:s.z.number().int().nonnegative().default(0),error:s.z.string().trim().max(4096).optional(),startedAt:$t,updatedAt:$t}).strict(),Ui=s.z.object({instanceId:qt,generation:s.z.number().int().nonnegative(),requestedReference:Qt,sequence:s.z.number().int().nonnegative(),observedAt:$t}).strict(),Vi=Ui.extend({data:s.z.string().min(1).max(65536),replay:s.z.boolean().optional()}).strict(),qi=Ui.extend({outcome:s.z.enum(["succeeded","failed"])}).strict(),$i=Ui.extend({status:s.z.enum(["connecting","pulling","extracting","complete","failed"]),layers:s.z.object({total:s.z.number().int().nonnegative(),completed:s.z.number().int().nonnegative(),downloaded:s.z.number().int().nonnegative(),downloading:s.z.number().int().nonnegative(),extracting:s.z.number().int().nonnegative()}).strict(),bytes:s.z.object({current:s.z.number().finite().nonnegative(),total:s.z.number().finite().positive()}).strict().optional(),percent:s.z.number().finite().min(0).max(100).optional(),message:s.z.string().trim().min(1).max(500),terminalTail:s.z.string().max(262144).optional(),terminalTruncated:s.z.boolean().optional()}).strict();function Hi(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(["id","origin","name","description","localizedDescriptions","cover","reference","repository","tag","image","registry","pullPolicy","capabilities","optionalApps","defaultEnv","labels","createdAt","updatedAt"]);for(const e of Object.keys(n))i.has(e)||t?.({imageId:"string"==typeof n.id?n.id:void 0,field:e});const o="string"==typeof n.id?n.id:void 0,r="string"==typeof n.image?n.image:void 0;void 0!==r&&t?.({imageId:o,field:"image"}),Object.prototype.hasOwnProperty.call(n,"registry")&&t?.({imageId:o,field:"registry"});let a,s="string"==typeof n.reference?n.reference:r;if(s)try{s=Jt(s)}catch{if(!s.includes("@")&&s.lastIndexOf(":")<=s.lastIndexOf("/"))try{s=Jt(`${s}:latest`),t?.({imageId:o,field:"reference:implicit-latest"})}catch{}}try{a=s?Zt(s):void 0}catch{}return{id:n.id,origin:"custom",name:n.name,description:n.description,localizedDescriptions:n.localizedDescriptions,cover:Oo(n.cover,["kind","key","url","mediaType","digest"]),reference:a?.reference??s,repository:a?.repository??n.repository,tag:a?.tag??n.tag,pullPolicy:n.pullPolicy??"if-not-present",capabilities:n.capabilities,optionalApps:n.optionalApps,defaultEnv:n.defaultEnv,labels:n.labels,createdAt:n.createdAt,updatedAt:n.updatedAt}}const Bi=s.z.discriminatedUnion("kind",[s.z.object({kind:s.z.literal("direct")}).strict(),s.z.object({kind:s.z.literal("control-plane-proxy"),proxyId:qt,proxyBindingId:qt,targetNodeId:qt}).strict()]),Gi=s.z.object({pingRttMs:s.z.number().nonnegative().optional(),pingRttP95Ms:s.z.number().nonnegative().optional(),consecutiveReconnects:s.z.number().int().nonnegative(),nextRetryAt:$t.optional()}).strict(),Ki=s.z.object({nodeId:qt,inviteId:qt.optional()}).strict(),Wi=s.z.discriminatedUnion("status",[s.z.object({id:qt,status:s.z.literal("pending")}).strict(),s.z.object({id:qt,status:s.z.literal("completed"),nodeId:qt}).strict()]),Yi=s.z.object({reachability:s.z.enum(["unknown","reachable","unreachable"]),bindingStatus:s.z.enum(["unknown","active","revoked"]),bindingRevision:s.z.number().int().positive().optional(),streamId:s.z.string().trim().min(1).max(160).optional(),revision:s.z.number().int().nonnegative().optional(),observedAt:$t.optional(),target:dt.optional(),lastError:ot.optional(),updatedAt:$t}).strict(),Xi=s.z.object({id:qt,name:s.z.string().trim().min(1).max(160),connectionMode:s.z.enum(["local-ipc","local-loopback","direct-http","reverse-wss","control-plane-proxy"]).default("direct-http"),connectionPath:Bi.default({kind:"direct"}),connectionEnabled:s.z.boolean().default(!0),auth:s.z.object({mode:s.z.enum(["local-static-key","paired-hmac","proxy-binding"]).default("local-static-key"),keyId:qt.optional(),secret:s.z.string().trim().max(4096).optional(),pairedAt:$t.optional(),pairing:s.z.object({status:s.z.enum(["pending","paired","expired"]).default("pending"),joinToken:s.z.string().trim().max(4096).optional(),expiresAt:$t.optional()}).strict().optional()}).strict().default({mode:"local-static-key"}),endpoint:s.z.string().trim().max(2048).optional(),controlEndpoint:s.z.string().trim().max(2048).optional(),containerEndpoint:s.z.string().trim().max(2048).optional(),publicWebBase:s.z.string().trim().max(2048).optional(),status:s.z.enum(["unknown","online","offline","degraded"]).default("unknown"),health:s.z.enum(["unknown","ok","degraded","failed"]).default("unknown"),capabilities:s.z.record(s.z.string(),s.z.unknown()).default({}),proxyState:Yi.optional(),appInventory:yn.optional(),labels:Ht,lastSeenAt:$t.optional(),createdAt:$t,updatedAt:$t}).strict().superRefine((e,t)=>{"control-plane-proxy"===e.connectionPath.kind&&"control-plane-proxy"!==e.connectionMode&&t.addIssue({code:"custom",path:["connectionPath"],message:"Control-plane proxy paths require control-plane-proxy connection mode."}),"control-plane-proxy"===e.connectionMode&&"control-plane-proxy"!==e.connectionPath.kind&&t.addIssue({code:"custom",path:["connectionPath"],message:"Control-plane proxy nodes require a control-plane-proxy connection path."})}),Ji=s.z.object({nodeId:qt,status:s.z.enum(["unknown","online","offline","degraded"]),health:s.z.enum(["unknown","ok","degraded","failed"]),lastSeenAt:$t.nullable(),connectionPhase:s.z.enum(["connecting","handshaking","healthy","reconnecting","suspect","offline"]).nullable(),connectionDiagnostics:Gi.nullable(),proxyState:Yi.nullable()}).strict(),Zi=s.z.object({id:qt,nodeId:qt,name:s.z.string().trim().min(1).max(160),type:s.z.enum(["docker","kubernetes","local"]),status:s.z.enum(["unknown","online","offline","degraded"]).default("unknown"),accessStrategy:s.z.enum(["node-proxy","direct-port","kubernetes-ingress","kubernetes-port-forward"]).default("node-proxy"),capabilities:s.z.record(s.z.string(),s.z.unknown()).default({}),labels:Ht,createdAt:$t,updatedAt:$t}).strict(),Qi=s.z.object({instanceId:qt,runtimeKind:s.z.literal("docker"),state:s.z.enum(["pending","available","stopped","unavailable"]),sampledAt:$t,cpu:s.z.object({usagePercent:s.z.number().nonnegative()}).strict().optional(),memory:s.z.object({usageBytes:s.z.number().nonnegative(),limitBytes:s.z.number().nonnegative().optional(),usagePercent:s.z.number().nonnegative().optional()}).strict().optional(),network:s.z.object({rxBytes:s.z.number().nonnegative(),txBytes:s.z.number().nonnegative()}).strict().optional(),blockIo:s.z.object({readBytes:s.z.number().nonnegative(),writeBytes:s.z.number().nonnegative()}).strict().optional(),pids:s.z.number().int().nonnegative().optional(),error:s.z.string().trim().max(2048).optional()}).strict(),eo=s.z.object({registry:s.z.boolean().default(!1),runtimeBroker:s.z.boolean().default(!1),workspaceProvisioning:s.z.object({docker:s.z.boolean().default(!1),kubernetes:s.z.boolean().default(!1),local:s.z.boolean().default(!1)}).strip().default({docker:!1,kubernetes:!1,local:!1})}).strip(),to=s.z.object({multiEntityAssignment:s.z.boolean().default(!1),privateModelCatalog:s.z.boolean().default(!1)}).strip(),no=s.z.object({enabled:s.z.boolean().default(!1),agentTools:s.z.boolean().default(!1),sessionRetention:s.z.boolean().default(!1),maxFileBytes:s.z.number().int().positive().default(33554432),maxBatchPaths:s.z.number().int().min(1).max(100).default(20)}).strip(),io=s.z.object({modelEndpointProbe:s.z.boolean().optional(),aiSessionHistoryLimit:s.z.boolean().optional(),aiSessionAttachmentRetention:s.z.boolean().optional(),aiSessionFileAttachmentLimit:s.z.boolean().optional(),folderPlaces:s.z.boolean().optional(),localFolderNameUpdate:s.z.boolean().optional(),managedGitCredentials:eo.optional(),managedModels:to.optional(),stories:no.optional(),codexManagedSettings:s.z.boolean().optional()}).strip();function oo(e){const t=io.safeParse(e),n=t.success?t.data:{};return{...n,managedGitCredentials:eo.parse(n.managedGitCredentials||{}),managedModels:to.parse(n.managedModels||{}),stories:no.parse(n.stories||{})}}const ro=s.z.object({status:s.z.enum(["healthy","congested","recovering"]),activeOutputs:s.z.number().int().nonnegative(),bufferedBytes:s.z.number().int().nonnegative(),peakBufferedBytes:s.z.number().int().nonnegative(),coalescedEvents:s.z.number().int().nonnegative(),oversizedEvents:s.z.number().int().nonnegative().optional(),peakEventBytes:s.z.number().int().nonnegative().optional(),congestedSince:$t.optional(),lastCongestedAt:$t.optional()}).strip(),ao=s.z.object({ok:s.z.boolean().optional(),role:s.z.string().optional(),nodeId:qt.optional(),platform:an.optional(),arch:sn.optional(),protocolVersion:At.optional(),capabilities:io.optional(),build:Ln.strip().optional(),process:s.z.object({pid:s.z.number().int().positive(),startIdentity:s.z.string().trim().min(1).optional()}).strip().optional(),listener:s.z.object({host:s.z.string().trim().min(1),port:s.z.number().int().min(1).max(65535)}).strip().optional(),instanceProxy:s.z.object({requests:s.z.number().int().nonnegative(),active:s.z.number().int().nonnegative(),completed:s.z.number().int().nonnegative(),aborted:s.z.number().int().nonnegative(),limitRejected:s.z.number().int().nonnegative(),responseBytes:s.z.number().nonnegative(),totalDurationMs:s.z.number().nonnegative(),maxResponseBytes:s.z.number().int().nonnegative()}).partial().strip().optional(),eventTransport:ro.optional(),serverTime:$t.optional()}).strip(),so=s.z.object({bindScope:s.z.enum(["loopback","all-ipv4"]),port:s.z.number().int().min(1).max(65535)}).strict(),co=so.extend({host:s.z.enum(["127.0.0.1","0.0.0.0"]),status:s.z.enum(["listening","error"]),source:s.z.enum(["bootstrap","persisted"]),error:s.z.string().trim().max(2048).optional()}).strict(),mo=so,lo=s.z.object({nodeId:qt,joinToken:s.z.string().trim().min(1),expiresAt:$t}).passthrough(),uo=s.z.object({nodeId:qt,keyId:qt,secret:s.z.string().regex(/^[A-Za-z0-9_-]{32,128}$/),pairedAt:$t}).strict(),po=s.z.object({id:qt,keyId:qt,name:s.z.string().trim().min(1).max(160).optional(),pairedAt:$t,updatedAt:$t,current:s.z.boolean()}).passthrough(),go=s.z.object({keyId:qt,revoked:s.z.literal(!0),revokedAt:$t}).strict(),zo=s.z.object({id:qt,pairingKeyId:qt,url:s.z.string().trim().min(1).max(2048),name:s.z.string().trim().min(1).max(160).optional(),enabled:s.z.boolean(),createdAt:$t,updatedAt:$t,status:s.z.enum(["disabled","connecting","connected","reconnecting","failed"]),pingRttMs:s.z.number().nonnegative().optional(),pingRttP95Ms:s.z.number().nonnegative().optional(),consecutiveReconnects:s.z.number().int().nonnegative().optional(),nextRetryAt:$t.optional(),lastConnectedAt:$t.optional(),lastDisconnectedAt:$t.optional(),error:s.z.string().optional()}).passthrough(),fo=s.z.object({pairing:po,connection:s.z.object({id:qt,pairingKeyId:qt,url:s.z.string().trim().min(1).max(2048),name:s.z.string().trim().min(1).max(160).optional(),enabled:s.z.boolean(),createdAt:$t,updatedAt:$t}).passthrough(),tunnel:s.z.object({status:s.z.enum(["disabled","saved","connecting","connected","failed"]),error:s.z.string().trim().max(2048).optional()}).passthrough()}).passthrough(),bo=s.z.object({deleted:s.z.boolean().optional()}).passthrough(),yo=s.z.object({repository:s.z.string().trim().optional(),tag:s.z.string().trim().optional(),id:s.z.string().trim(),createdSince:s.z.string().trim().optional(),size:s.z.string().trim().optional(),sizeBytes:s.z.number().int().nonnegative().optional(),reference:s.z.string().trim().min(1),repoDigests:s.z.array(s.z.string().trim().min(1).max(512)).default([])}).passthrough(),ho=s.z.object({image:Li,status:s.z.enum(["available","pull-required","unknown"]),localImage:yo.optional(),localSizeBytes:s.z.number().int().nonnegative().optional(),downloadSizeBytes:s.z.number().int().positive().optional(),unpackedSizeBytes:s.z.number().int().positive().optional(),error:s.z.string().trim().max(2048).optional()}).strict(),xo=s.z.lazy(()=>s.z.object({name:s.z.string().trim().min(1),path:s.z.string().trim().min(1).max(4096),children:s.z.array(xo)}).passthrough()),Io=s.z.object({kind:s.z.enum(["home","root"]),name:s.z.string().trim().min(1),path:s.z.string().trim().min(1).max(4096)}).passthrough(),So=s.z.object({status:s.z.number().int().min(100).max(599).optional(),headers:s.z.record(s.z.string(),s.z.string()).optional(),bodyBase64:s.z.string().optional()}).passthrough(),Ao=s.z.object({strategy:s.z.enum(["node-proxy","direct-port","kubernetes-ingress","kubernetes-port-forward"]).default("node-proxy"),web:s.z.string().trim().max(2048).optional(),api:s.z.string().trim().max(2048).optional(),vnc:s.z.string().trim().max(2048).optional(),tty:s.z.string().trim().max(2048).optional(),logs:s.z.string().trim().max(2048).optional(),status:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown")}).strict(),vo=s.z.object({...Ao.shape}).strict(),ko=s.z.object({strategy:s.z.enum(["control-plane-proxy","direct-port","node-proxy","kubernetes-ingress","kubernetes-port-forward"]).default("control-plane-proxy"),web:s.z.string().trim().max(2048).optional(),api:s.z.string().trim().max(2048).optional(),ws:s.z.string().trim().max(2048).optional(),status:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown")}).strict().default({strategy:"control-plane-proxy",status:"unknown"}),jo=s.z.object({mode:s.z.enum(["local-bind","git-clone","empty-volume","persistent-volume"]).optional(),status:s.z.enum(["unknown","pending","ready","failed"]).default("unknown"),path:s.z.string().trim().max(4096).optional(),resolvedCommit:s.z.string().trim().max(120).optional(),error:s.z.string().trim().max(2048).optional()}).passthrough(),Co=s.z.object({id:qt,name:s.z.string().trim().min(1).max(160),projectId:qt.optional(),source:ni,sourceSnapshot:s.z.record(s.z.string(),s.z.unknown()).default({}),modelSelection:tn,nodeId:qt,runtimeId:qt,imageSelection:nn.optional(),environmentSource:on.optional(),environmentTemplateOrigin:dn.optional(),imageSnapshot:Di.optional(),imageProvisioning:Fi.optional(),stateRevision:s.z.number().int().min(0).default(0),processIncarnationId:s.z.string().trim().min(1).max(120).optional(),status:s.z.enum(["created","provisioning","starting","registering","registered","running","stopping","stopped","deleting","failed","unhealthy"]).default("created"),health:s.z.enum(["unknown","ok","degraded","failed"]).default("unknown"),connectionStatus:s.z.enum(["unknown","online","offline","endpoint-unreachable"]).default("unknown"),agentStatus:s.z.enum(["unknown","online","offline"]).default("unknown"),targetStatus:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown"),uiAccessStatus:s.z.enum(["unknown","reachable","endpoint-unreachable"]).default("unknown"),controlMode:s.z.enum(["standalone","controlled"]).default("controlled"),protocolVersion:At.optional(),instanceVersion:s.z.string().trim().max(80).optional(),build:Ln.optional(),runtimeVersion:qn.optional(),ready:s.z.boolean().default(!1),capabilities:_t.default(Nt),appInventory:yn.optional(),config:s.z.object({autoImportAgentConfigs:s.z.boolean().default(!0),codexConfigEnabled:s.z.boolean().default(!0),codexHomeMode:s.z.enum(["default","taskhandoff"]).default("taskhandoff"),defaultCodexPermissionMode:X.default("ask"),codexSettings:wt.optional(),aiSessionHistoryLimit:s.z.number().int().min(1).max(500).default(50),aiSessionAttachmentRetentionDays:s.z.number().int().min(0).max(365).default(30),aiSessionMaxFileAttachmentBytes:s.z.number().int().positive().max(f).default(z)}).strict().default({autoImportAgentConfigs:!0,codexConfigEnabled:!0,codexHomeMode:"taskhandoff",defaultCodexPermissionMode:"ask",aiSessionHistoryLimit:50,aiSessionAttachmentRetentionDays:30,aiSessionMaxFileAttachmentBytes:z}),workspace:jo.default({status:"unknown"}),target:Ao.default({strategy:"direct-port",status:"unknown"}),access:ko,apps:s.z.object({runningCount:s.z.number().int().min(0).default(0),problemCount:s.z.number().int().min(0).default(0),updatedAt:$t.optional(),revision:s.z.number().int().min(0).optional()}).strict().default({runningCount:0,problemCount:0}),aiSessions:Ne.default(()=>({runningCount:0,waitingCount:0,staleCount:0,sessions:[],updatedAt:(new Date).toISOString()})),triggers:s.z.object({enabledCount:s.z.number().int().min(0).default(0),runningCount:s.z.number().int().min(0).default(0),errorCount:s.z.number().int().min(0).default(0),configs:s.z.array(s.z.object({configHash:s.z.string().trim().min(1),config:$e,deployments:s.z.array(Be).default([]),runtime:s.z.array(Ge).default([])}).strict()).default([]),recentRuns:s.z.array(Ke).default([])}).strict().optional(),runtime:s.z.object({kind:s.z.string().trim().max(80).optional(),containerName:s.z.string().trim().max(240).optional(),containerId:s.z.string().trim().max(240).optional(),workspacePath:s.z.string().trim().max(4096).optional(),pid:s.z.number().int().positive().optional(),port:s.z.number().int().positive().max(65535).optional(),labels:s.z.record(s.z.string(),s.z.string()).default({})}).strict().default({labels:{}}),registrationToken:s.z.string().trim().min(1).max(240).optional(),lastHeartbeatAt:$t.optional(),createdAt:$t,updatedAt:$t}).strict(),wo=s.z.union([Co.transform(e=>({instance:e,gitWorkspaceProvisioningOperationId:void 0})),s.z.object({instance:Co,gitWorkspaceProvisioningOperationId:qt.optional()}).strict()]),Eo=s.z.preprocess(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e;return t.instance&&"object"==typeof t.instance&&!Array.isArray(t.instance)?{instance:Ro(t.instance),..."string"==typeof t.gitWorkspaceProvisioningOperationId?{gitWorkspaceProvisioningOperationId:t.gitWorkspaceProvisioningOperationId}:{}}:Ro(t)},wo),No=s.z.object({instanceId:Co.shape.id,revision:s.z.number().int().min(0),updatedAt:$t,status:Co.shape.status.unwrap(),health:Co.shape.health.unwrap(),connectionStatus:Co.shape.connectionStatus.unwrap(),accessStatus:s.z.enum(["reachable","endpoint-unreachable"]),imageProvisioning:Fi.optional(),workspace:jo,runtime:Co.shape.runtime.unwrap(),runtimeVersion:qn.optional(),ready:s.z.boolean(),lastHeartbeatAt:$t.optional()}).strict();function Ro(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(Object.keys(Co.shape)),o={};for(const[e,r]of Object.entries(n))i.has(e)?o[e]=r:t?.({instanceId:"string"==typeof n.id?n.id:void 0,field:e});if(n.capabilities&&"object"==typeof n.capabilities&&!Array.isArray(n.capabilities)){const e={...n.capabilities};Object.prototype.hasOwnProperty.call(e,"apps")&&(t?.({instanceId:"string"==typeof n.id?n.id:void 0,field:"capabilities.apps"}),delete e.apps),o.capabilities=Mt(e)}else o.capabilities=Mt(void 0);o.appInventory=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e;Object.keys(i).some(e=>!["observedAt","items","issues"].includes(e))&&t?.({instanceId:n,field:"appInventory"});const o={observedAt:i.observedAt,items:Array.isArray(i.items)?i.items.map(e=>{e&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(e).some(e=>!["id","name","kind","source","availability","capabilities","diagnosticCode"].includes(e))&&t?.({instanceId:n,field:"appInventory.items"});const i=Oo(e,["id","name","kind","source","availability","diagnosticCode"]);return!i||"object"!=typeof i||Array.isArray(i)?i:{...i,capabilities:Oo(e.capabilities,["automation","supportsCwdSelection"])}}):i.items,issues:Array.isArray(i.issues)?i.issues.map(e=>Oo(e,["code","message"])):i.issues},r=yn.safeParse(o);return r.success?r.data:void 0}(n.appInventory,t,"string"==typeof n.id?n.id:void 0),o.source=_o(n.source,t,"string"==typeof n.id?n.id:void 0),o.sourceSnapshot=n.sourceSnapshot&&"object"==typeof n.sourceSnapshot&&!Array.isArray(n.sourceSnapshot)?n.sourceSnapshot:{},o.build=To(Ln,n.build,"build",t,"string"==typeof n.id?n.id:void 0),o.aiSessions=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e,o=Array.isArray(i.sessions)?i.sessions.flatMap((e,i)=>{const o=To(Ee,e,`aiSessions.sessions.${i}`,t,n);return o?[o]:[]}):[],r={runningCount:"number"==typeof i.runningCount&&Number.isInteger(i.runningCount)&&i.runningCount>=0?i.runningCount:0,waitingCount:"number"==typeof i.waitingCount&&Number.isInteger(i.waitingCount)&&i.waitingCount>=0?i.waitingCount:0,staleCount:"number"==typeof i.staleCount&&Number.isInteger(i.staleCount)&&i.staleCount>=0?i.staleCount:0,sessions:o,updatedAt:$t.safeParse(i.updatedAt).success?i.updatedAt:(new Date).toISOString()};return Object.keys(i).some(e=>!["runningCount","waitingCount","staleCount","sessions","updatedAt"].includes(e))&&t?.({instanceId:n,field:"aiSessions"}),Ne.parse(r)}(n.aiSessions,t,"string"==typeof n.id?n.id:void 0),o.triggers=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e;Object.keys(i).some(e=>!["enabledCount","runningCount","errorCount","configs","recentRuns"].includes(e))&&t?.({instanceId:n,field:"triggers"});const o=(e,i,o)=>Array.isArray(e)?e.flatMap((e,r)=>{const a=To(i,e,`${o}.${r}`,t,n);return a?[a]:[]}):[],r=Array.isArray(i.configs)?i.configs.flatMap((e,i)=>{if(!e||"object"!=typeof e||Array.isArray(e))return[];const r=e;Object.keys(r).some(e=>!["configHash","config","deployments","runtime"].includes(e))&&t?.({instanceId:n,field:`triggers.configs.${i}`});const a=function(e,t,n,i){if(!e||"object"!=typeof e||Array.isArray(e))return;const o=e,r=Oo(o,["configHash","name","description","createdAt","updatedAt"]);if(o.source&&"object"==typeof o.source&&!Array.isArray(o.source)){const e=o.source,t="schedule"===e.type?"interval"===e.scheduleKind?["type","scheduleKind","intervalMs"]:"daily"===e.scheduleKind?["type","scheduleKind","timeOfDay","timezone"]:["type","scheduleKind","weekdays","timeOfDay","timezone"]:"file-change"===e.type?["type","roots","globs","ignore","debounceMs"]:["type","agent","statuses","phases"];r.source=Oo(e,t)}return r.action=Oo(o.action,["promptTemplate"]),r.policy=Oo(o.policy,["cooldownMs","maxConcurrentRuns","whenBusy"]),To($e,r,t,n,i)}(r.config,`triggers.configs.${i}.config`,t,n);return"string"==typeof r.configHash&&a?[{configHash:r.configHash,config:a,deployments:o(r.deployments,Be,`triggers.configs.${i}.deployments`),runtime:o(r.runtime,Ge,`triggers.configs.${i}.runtime`)}]:[]}):[];return{enabledCount:"number"==typeof i.enabledCount&&Number.isInteger(i.enabledCount)&&i.enabledCount>=0?i.enabledCount:0,runningCount:"number"==typeof i.runningCount&&Number.isInteger(i.runningCount)&&i.runningCount>=0?i.runningCount:0,errorCount:"number"==typeof i.errorCount&&Number.isInteger(i.errorCount)&&i.errorCount>=0?i.errorCount:0,configs:r,recentRuns:o(i.recentRuns,Ke,"triggers.recentRuns")}}(n.triggers,t,"string"==typeof n.id?n.id:void 0),o.apps=To(Co.shape.apps.unwrap(),Oo(n.apps,["runningCount","problemCount","updatedAt","revision"]),"apps",t,"string"==typeof n.id?n.id:void 0)||{runningCount:0,problemCount:0},o.config=To(Co.shape.config.unwrap(),Oo(n.config,["autoImportAgentConfigs","codexConfigEnabled","codexHomeMode","defaultCodexPermissionMode","codexSettings","aiSessionHistoryLimit","aiSessionAttachmentRetentionDays","aiSessionMaxFileAttachmentBytes"]),"config",t,"string"==typeof n.id?n.id:void 0)||{autoImportAgentConfigs:!0,codexConfigEnabled:!0,codexHomeMode:"taskhandoff",defaultCodexPermissionMode:"ask",aiSessionHistoryLimit:50,aiSessionAttachmentRetentionDays:30,aiSessionMaxFileAttachmentBytes:z},o.modelSelection=To(tn.unwrap(),Oo(n.modelSelection,["modelEntityIds","codexModelHash","claudeModelHash","opencodeModelHash"]),"modelSelection",t,"string"==typeof n.id?n.id:void 0)||{},o.imageSnapshot=function(e,t,n,i){if(!e||"object"!=typeof e||Array.isArray(e))return e;const o=e,r=Hi(o),{reference:a,...s}=r,c=o.requestedReference??a;let d;try{d="string"==typeof c?Zt(c):void 0}catch{}const m={img_default:"market_taskhandoff_browser",img_codex:"market_taskhandoff_codex",img_ai:"market_taskhandoff_ai"},l="string"==typeof o.id?o.id:"string"==typeof t?t:void 0,u="market"===o.origin||l&&m[l]?"market":"custom";return void 0===o.image&&void 0===o.reference||n?.({instanceId:i,field:"imageSnapshot.reference"}),{...s,id:l&&m[l]?m[l]:l,origin:u,repository:d?.repository??o.repository,tag:d?.tag??o.tag,requestedReference:d?.reference??c,resolvedDigest:o.resolvedDigest,resolvedReference:o.resolvedReference,downloadSizeBytes:o.downloadSizeBytes,market:"market"===u?Oo(o.market,["catalogId","catalogRevision","publisher","version"])??{catalogId:"task_handoff_embedded",catalogRevision:"legacy",publisher:"task-handoff"}:void 0}}(n.imageSnapshot,n.imageId,t,"string"==typeof n.id?n.id:void 0);const r="string"==typeof n.imageId?{img_default:"market_taskhandoff_browser",img_codex:"market_taskhandoff_codex",img_ai:"market_taskhandoff_ai"}[n.imageId]||n.imageId:void 0,a=Oo(n.imageSelection,["imageId","tag"]);o.imageSelection=a||(r?{imageId:r,tag:o.imageSnapshot?.tag}:void 0),o.imageProvisioning=To(Fi,Oo(n.imageProvisioning,["phase","requestedReference","generation","error","startedAt","updatedAt"]),"imageProvisioning",t,"string"==typeof n.id?n.id:void 0),o.runtimeVersion=function(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return;const i=e,o=e=>{if("string"!=typeof e)return;const t=e.trim();return t&&t.length<=80?t:void 0},r=o(i.desiredVersion);if(!r)return void t?.({instanceId:n,field:"runtimeVersion.desiredVersion"});const a=new Set(qn.shape.phase.options),s="string"==typeof i.phase?i.phase:"pending",c=a.has(s)?s:{idle:"pending",queued:"pending",checking:"pending",downloading:"installing",updating:"installing",completed:"matched",succeeded:"matched",ready:"matched",error:"failed"}[s]||"pending";let d;if(c!==s&&t?.({instanceId:n,field:"runtimeVersion.phase"}),i.error&&"object"==typeof i.error&&!Array.isArray(i.error)){const e=i.error,r="string"==typeof e.message?e.message.trim().slice(0,4096):"";if(r){const i=new Set(Vn.shape.code.options),a="string"==typeof e.code&&i.has(e.code)?e.code:"INSTANCE_RUNTIME_INSTALL_FAILED";a!==e.code&&t?.({instanceId:n,field:"runtimeVersion.error.code"});const s=o(e.expectedVersion),c=o(e.actualVersion);d={code:a,message:r,...s?{expectedVersion:s}:{},...c?{actualVersion:c}:{},retryable:!0===e.retryable}}else t?.({instanceId:n,field:"runtimeVersion.error"})}"string"==typeof i.error&&i.error.trim()&&(d={code:"INSTANCE_RUNTIME_INSTALL_FAILED",message:i.error.trim().slice(0,4096),expectedVersion:r,...o(i.actualVersion)?{actualVersion:o(i.actualVersion)}:{},retryable:!1});const m=o(i.actualVersion),l=$t.safeParse(i.lastAttemptAt),u=$t.safeParse(i.matchedAt);return void 0===i.lastAttemptAt||l.success||t?.({instanceId:n,field:"runtimeVersion.lastAttemptAt"}),void 0===i.matchedAt||u.success||t?.({instanceId:n,field:"runtimeVersion.matchedAt"}),{desiredVersion:r,...m?{actualVersion:m}:{},phase:c,attempt:"number"==typeof i.attempt&&Number.isInteger(i.attempt)&&i.attempt>=0?i.attempt:0,...l.success?{lastAttemptAt:l.data}:{},...u.success?{matchedAt:u.data}:{},...d?{error:d}:{}}}(n.runtimeVersion,t,"string"==typeof n.id?n.id:void 0),o.workspace=To(jo,n.workspace,"workspace",t,"string"==typeof n.id?n.id:void 0)||{status:"unknown"},o.environmentSource=To(on,n.environmentSource,"environmentSource",t,"string"==typeof n.id?n.id:void 0),o.environmentTemplateOrigin=To(dn,n.environmentTemplateOrigin,"environmentTemplateOrigin",t,"string"==typeof n.id?n.id:void 0),o.runtime=To(Co.shape.runtime.unwrap(),n.runtime,"runtime",t,"string"==typeof n.id?n.id:void 0)||{labels:{}},o.target=To(Ao,Oo(n.target??n.endpoints,["strategy","web","api","vnc","tty","logs","status"]),"target",t,"string"==typeof n.id?n.id:void 0)||{strategy:"direct-port",status:"unknown"},o.access=To(ko,Oo(n.access,["strategy","web","api","ws","status"]),"access",t,"string"==typeof n.id?n.id:void 0)||{strategy:"control-plane-proxy",status:"unknown"};for(const[e,i]of Object.entries(Co.shape))Object.prototype.hasOwnProperty.call(o,e)&&!i.safeParse(o[e]).success&&i.safeParse(void 0).success&&(delete o[e],t?.({instanceId:"string"==typeof n.id?n.id:void 0,field:e}));return o}function To(e,t,n,i,o){if(!t||"object"!=typeof t||Array.isArray(t))return;let r=structuredClone(t),a=!1;for(let t=0;t<20;t+=1){const t=e.safeParse(r);if(t.success)return a&&i?.({instanceId:o,field:n}),t.data;let s=!1;for(const e of t.error.issues){if("unrecognized_keys"!==e.code)continue;const t=Po(r,e.path);if(t&&"object"==typeof t&&!Array.isArray(t))for(const n of e.keys)Object.prototype.hasOwnProperty.call(t,n)&&(delete t[n],s=!0,a=!0)}if(!s){const a=structuredClone(r);let s=!1;for(const e of t.error.issues){if(!e.path.length||"string"!=typeof e.path.at(-1))continue;const t=Po(a,e.path.slice(0,-1)),n=e.path.at(-1);t&&"object"==typeof t&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,n)&&(delete t[n],s=!0)}if(s){const t=e.safeParse(a);if(t.success)return i?.({instanceId:o,field:n}),t.data}break}}i?.({instanceId:o,field:n})}function Po(e,t){let n=e;for(const e of t){if(!n||"object"!=typeof n)return;n=n[e]}return n}function _o(e,t,n){if(!e||"object"!=typeof e||Array.isArray(e))return e;const i=e,o=i.type,r=ni.options.find(e=>e.shape.type.value===o);if(!r)return e;const a="local-folder"===o?["type","localFolderId","path","ownerNodeId"]:"git-template"===o?["type","url","templateId","ref","auth","clone"]:["type","repositoryId","url","provider","ref","auth","clone"],s=Oo(i,a);if("local-folder"!==o){const e=function(e,t,n){const i=e&&"object"==typeof e&&!Array.isArray(e)?e:void 0,o=Jn.safeParse(Oo(i,["type","name","commit"]));if(o.success)return o.data;const r="string"==typeof i?.commit?i.commit.trim():"",a="string"==typeof i?.name?i.name.trim():"",s=r?Jn.safeParse({type:"commit",commit:r}):a?Jn.safeParse({type:"tag"===i?.type?"tag":"branch",name:a}):Jn.safeParse({type:"branch",name:"main"});return s.success?(t?.({instanceId:n,field:"source.ref"}),s.data):void 0}(i.ref,t,n),o=To(Zn,Oo(i.auth,["type","secretId"]),"source.auth",t,n),r=To(Qn,Oo(i.clone,["depth","submodules","lfs","subdirectory"]),"source.clone",t,n);e?s.ref=e:delete s.ref,o?s.auth=o:delete s.auth,r?s.clone=r:delete s.clone}const c=To(r,s,"source",t,n);return c?(Object.keys(i).some(e=>!a.includes(e))&&t?.({instanceId:n,field:"source"}),c):s}function Oo(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e;return Object.fromEntries(t.filter(e=>Object.prototype.hasOwnProperty.call(n,e)).map(e=>[e,n[e]]))}const Mo=s.z.object({instanceId:qt.optional(),projectId:qt.optional(),source:ni.optional(),nodeId:qt.optional(),runtimeId:qt.optional(),imageSelection:nn.optional(),instanceVersion:s.z.string().trim().max(80).optional(),protocolVersion:At,build:Ln.optional(),controlMode:s.z.enum(["standalone","controlled"]).default("controlled"),capabilities:_t.default(Nt),appInventory:yn.optional(),target:vo.optional(),workspace:jo.default({status:"unknown"}),registrationToken:s.z.string().trim().max(240).optional(),processIncarnationId:s.z.string().trim().min(1).max(120).optional()}).strict().superRefine((e,t)=>{St.has(e.protocolVersion)&&!e.appInventory&&t.addIssue({code:"custom",path:["appInventory"],message:"Current protocol register payload requires appInventory."})}),Lo=s.z.object({status:Co.shape.status.optional(),health:Co.shape.health.optional(),protocolVersion:At,build:Ln.optional(),capabilities:Co.shape.capabilities.optional(),appInventory:yn.optional(),apps:Co.shape.apps.optional(),aiSessions:Co.shape.aiSessions.optional(),triggers:Co.shape.triggers.optional(),workspace:jo.optional(),target:vo.optional(),processIncarnationId:s.z.string().trim().min(1).max(120).optional()}).strict().superRefine((e,t)=>{St.has(e.protocolVersion)&&!e.appInventory&&t.addIssue({code:"custom",path:["appInventory"],message:"Current protocol heartbeat payload requires appInventory."})}),Do=s.z.enum(["web","telegram","wechat","dingding","lark"]),Fo=s.z.object({id:qt,channel:Do,name:s.z.string().trim().min(1).max(160),enabled:s.z.boolean().default(!1),token:s.z.string().trim().max(4096).optional(),defaultChatId:s.z.string().trim().max(240).optional(),allowedUserIds:s.z.array(s.z.string().trim().min(1).max(240)).default([]),pollIntervalMs:s.z.number().int().positive().max(6e4).default(3e3),settings:s.z.record(s.z.string(),s.z.unknown()).default({}),createdAt:$t,updatedAt:$t}).strict(),Uo=s.z.object({id:qt,channel:Do,bridgeId:qt.optional(),chatSessionId:s.z.string().trim().min(1).max(240),userId:s.z.string().trim().max(240).optional(),activeProjectId:qt.optional(),activeInstanceId:qt.optional(),activeAiSessionId:s.z.string().trim().min(1).max(120).optional(),lastUsedAt:$t,createdAt:$t,updatedAt:$t}).strict(),Vo=s.z.object({source:s.z.object({type:s.z.literal("chat-gateway").default("chat-gateway"),channel:Do,bridgeId:qt.optional(),chatSessionId:s.z.string().trim().min(1).max(240),userId:s.z.string().trim().max(240).optional()}).strict(),message:s.z.object({text:s.z.string().trim().max(2e4).default(""),attachments:s.z.array(G).max(6).default([])}).strict().superRefine((e,t)=>{e.attachments.reduce((e,t)=>e+("inline"===t.source.type?t.size:0),0)>b&&t.addIssue({code:s.z.ZodIssueCode.custom,path:["attachments"],message:"Inline attachments must be 41943040 bytes or less in total."})}),target:s.z.object({instanceId:qt,aiSessionId:s.z.string().trim().min(1).max(120)}).strict().optional()}).strict(),qo=s.z.object({id:qt,instanceId:qt,projectId:qt.optional(),aiSessionId:s.z.string().trim().min(1).max(120),providerSessionId:s.z.string().trim().max(240).optional(),result:s.z.string().default(""),timeoutMs:s.z.number().positive().optional(),source:s.z.string().trim().max(120).optional(),kind:s.z.enum(["task","approval"]).default("task"),status:s.z.enum(["pending","unreachable"]).default("pending"),error:s.z.string().trim().max(2048).optional(),lastSeenAt:$t}).strict();var $o,Ho,Bo=m(Object.freeze({__proto__:null,AI_SESSION_RENAME_PROTOCOL_VERSION:It,AiSessionConversationAttachmentCapabilitiesSchema:Tt,AiSessionProviderCapabilitiesSchema:ht,AiSessionProviderCapabilitySchema:yt,AiSessionTimelineCapabilitiesSchema:Rt,AppInstallPrivilegeSchema:In,AppInstallerSchema:xn,AppManagementCommandSchema:Nn,AppManagementErrorSchema:Rn,AppManagementEventSchema:Mn,AppManagementJobResponseSchema:On,AppManagementJobSchema:Tn,AppManagementJobStateSchema:wn,AppManagementOperationRequestSchema:_n,AppManagementOperationSchema:Cn,AppManagementProgressSchema:En,AppManagementSnapshotSchema:Pn,ApplyUpdateRequestSchema:Wn,BuildInfoSchema:Ln,CONTROL_PLANE_PROTOCOL_VERSION:xt,ChatBridgeConfigSchema:Fo,ChatChannelSchema:Do,ChatGatewayMessageSchema:Vo,ChatSessionBindingSchema:Uo,CodexInstanceSettingsSchema:wt,CodexModelVerbositySchema:kt,CodexPersonalitySchema:jt,CodexSubagentModelSchema:Ct,ControlPlaneHealthResponseSchema:Dn,ControlledInstanceCapabilitiesSchema:_t,ControlledInstanceFeatureCapabilitiesSchema:Pt,ControlledInstanceHeartbeatSchema:Lo,ControlledInstanceRegisterSchema:Mo,ControlledInstanceSchema:Co,CreateNodeModelSchema:hi,CustomImageProfileSchema:_i,DEFAULT_IMAGE_COVER:{kind:"builtin",key:"default-image-cover"},DeployNodeModelSchema:Ii,DockerImageDigestSchema:en,DockerImageReferenceSchema:Qt,EnvironmentSourceSchema:on,EnvironmentTemplateErrorSchema:cn,EnvironmentTemplateOriginSchema:dn,EnvironmentTemplateSchema:hn,EnvironmentTemplateStatusSchema:rn,FederatedModelGroupSchema:fi,FederatedModelRegistrySchema:yi,FinalComputerArchSchema:sn,FinalComputerCapabilitiesSchema:Sn,FinalComputerPlatformSchema:an,GitAuthSchema:Zn,GitCloneOptionsSchema:Qn,GitRefSchema:Jn,GitRepositorySchema:ei,ImageCoverSchema:ki,ImageOriginSchema:Ai,ImageProfileSchema:Oi,ImageProvisioningSchema:Fi,ImagePullProgressSchema:$i,ImagePullTerminalEventType:{Output:"image.pull.terminal.output",Finished:"image.pull.terminal.finished",Progress:"image.pull.progress",Snapshot:"image.pull.snapshot"},ImagePullTerminalFinishedSchema:qi,ImagePullTerminalOutputSchema:Vi,ImageSelectionSchema:nn,InstanceAccessSchema:ko,InstanceAppInventoryIssueSchema:bn,InstanceAppInventoryItemSchema:fn,InstanceAppInventorySchema:yn,InstanceDeleteInputSchema:ln,InstanceDeleteResultSchema:pn,InstanceImageSnapshotSchema:Di,InstanceLifecycleEventType:{Snapshot:"instance.lifecycle.snapshot"},InstanceLifecycleSnapshotSchema:No,InstanceResourceMetricsEventType:{Snapshot:"instance.metrics.snapshot"},InstanceResourceMetricsSchema:Qi,InstanceTargetSchema:Ao,InstanceVolumeDispositionSchema:un,InstanceVolumeRoleSchema:mn,LEGACY_MARKET_IMAGE_IDS:gn,LocalDockerImageSchema:yo,MARKET_CATALOG_PROTOCOL_VERSION:"2026-07-29",ManagedAppActionReasonSchema:kn,ManagedAppManagementSourceSchema:vn,ManagedAppProjectionSchema:jn,ManagedAppStateSchema:An,MarketCatalogSnapshotSchema:Ti,MarketCatalogStatusSchema:Pi,MarketImagePlatformArtifactSchema:Ei,MarketImageSchema:Ri,MarketImageTagSchema:Ni,MarketLifecycleStatusSchema:vi,ModelAppSchema:ai,ModelConfigSchema:mi,ModelLocationSchema:zi,ModelNameEntrySchema:ci,ModelProtocolSchema:si,ModelRegistryNodeDiagnosticSchema:bi,ModelSelectionSchema:tn,NODE_AGENT_PROTOCOL_VERSION_HEADER:"x-task-handoff-node-agent-protocol-version",NODE_TUNNEL_PROTOCOL_VERSION:"2026-08-01",NodeAgentCapabilitiesSchema:io,NodeAgentControlPlaneConnectionCreateResultSchema:fo,NodeAgentControlPlaneConnectionSchema:zo,NodeAgentControlPlanePairingSchema:po,NodeAgentDeleteResponseSchema:bo,NodeAgentEventTransportHealthSchema:ro,NodeAgentExternalListenerConfigSchema:so,NodeAgentExternalListenerSchema:co,NodeAgentHealthSchema:ao,NodeAgentInstanceLifecycleResultSchema:Eo,NodeAgentInstanceProxyRawResponseSchema:So,NodeAgentManagedGitCapabilitiesSchema:eo,NodeAgentManagedModelCapabilitiesSchema:to,NodeAgentPairingCompleteResultSchema:uo,NodeAgentPairingInviteResponseSchema:lo,NodeAgentPairingSelfRevokeResultSchema:go,NodeAgentStoryCapabilitiesSchema:no,NodeConnectionDiagnosticsSchema:Gi,NodeConnectionPathSchema:Bi,NodeControlPlaneProxyStateSchema:Yi,NodeFolderPlaceSchema:Io,NodeFolderTreeEntrySchema:xo,NodeImageAvailabilitySchema:ho,NodeJoinInviteStatusSchema:Wi,NodeJoinedEventSchema:Ki,NodeLocalFolderSchema:ti,NodeModelAssignmentSchema:gi,NodeModelConfigSchema:li,NodeModelPublicRecordSchema:pi,NodeRolloutSummarySchema:Hn,NodeRuntimeSchema:Zi,NodeSchema:Xi,NodeStateProjectionEventSchema:Ji,NodeTunnelRequestBodySchema:Gt,NodeUpdateImpactSchema:$n,PendingRouteSchema:qo,ProjectSchema:di,ProjectSourceSchema:ni,ProtocolVersionSchema:At,PublicModelConfigSchema:ui,RuntimeArtifactIdentitySchema:Un,RuntimeConvergenceErrorSchema:Vn,RuntimeVersionStateSchema:qn,SelectableImageSchema:Li,SelectableImageTagSchema:Mi,UpdateChannelSchema:Fn,UpdateCheckRequestSchema:Bn,UpdateCheckResultSchema:Gn,UpdateControlledInstanceNodeAgentConnectionSchema:Ot,UpdateJobSchema:Kn,UpdateNodeAgentExternalListenerSchema:mo,UpdateNodeModelAssignmentSchema:Si,UpdateNodeModelSchema:xi,WorkspacePolicySchema:ri,WorkspaceStatusSchema:jo,aiSessionConversationAttachmentCapabilities:Lt,aiSessionConversationAttachmentCapabilityAgents:Ft,aiSessionProviderCapabilities:Dt,aiSessionProviderCapability:function(e,t){return Dt(e).find(e=>e.agent===t)},aiSessionTimelineCapabilities:Ut,aiSessionTimelineCapabilityAgents:Vt,controlledInstanceAcceptsTraffic:function(e){return!1!==e.ready&&(!e.runtimeVersion||["matched","failed"].includes(e.runtimeVersion.phase))},decodeNodeTunnelRequestBody:function(e){if(null==e)return;const t=Gt.parse(e);return"utf8"===t.encoding?t.data:Buffer.from(t.data,"base64")},encodeNodeTunnelRequestBody:function(e){if(null!=e){if("string"==typeof e)return{encoding:"utf8",data:e};if(Buffer.isBuffer(e))return{encoding:"base64",data:e.toString("base64")};if(e instanceof ArrayBuffer)return{encoding:"base64",data:Buffer.from(e).toString("base64")};if(ArrayBuffer.isView(e))return{encoding:"base64",data:Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64")};throw new TypeError("Node tunnel request body must be a string or binary buffer.")}},migrateLegacyImageSelection:zn,modelConfigHash:function(e){const t={app:ai.parse(e.app),endpoint:mi.shape.endpoint.parse(e.endpoint),key:mi.shape.key.parse(e.key),model:mi.shape.model.parse(e.model)};return`mdl_${a.createHash("sha256").update(JSON.stringify(t)).digest("hex")}`},normalizeControlledInstanceCapabilities:Mt,normalizeDockerImageReference:Jt,normalizeNodeAgentCapabilities:oo,parseCodexInstanceSettings:function(e){return wt.parse(Et(e))},parseDockerImageReference:Zt,parseStoredControlledInstance:function(e,t){return Co.parse(Ro(e,t))},projectControlledInstanceHeartbeatForNodeAgentProtocol:function(e,t){if(t&&t>=It)return e;const n=e.aiSessions;if(!n||"object"!=typeof n||Array.isArray(n))return e;const i=n.sessions;if(!Array.isArray(i))return e;let o=!1;const r=i.map(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e.actions;if(!t||"object"!=typeof t||Array.isArray(t)||!("rename"in t))return e;const{rename:n,...i}=t;return o=!0,{...e,actions:i}});return o?{...e,aiSessions:{...n,sessions:r}}:e},projectSourceWithoutGitCredential:ii,projectSourceWithoutLegacyGitSecretId:oi,safeParseStoredControlledInstance:function(e,t){return Co.safeParse(Ro(e,t))},sanitizeCodexInstanceSettings:Et,sanitizeCrossVersionControlledInstanceHeartbeat:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=["status","health","protocolVersion","build","capabilities","appInventory","apps","aiSessions","triggers","workspace","target","processIncarnationId"],i=new Set(n);for(const n of Object.keys(e))i.has(n)||t?.({field:n,action:"ignored"});return Oo(e,n)},sanitizeCrossVersionControlledInstanceRegister:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=["instanceId","projectId","source","nodeId","runtimeId","imageSelection","instanceVersion","protocolVersion","build","controlMode","capabilities","appInventory","target","workspace","registrationToken","processIncarnationId"],o=new Set([...i,"imageId"]);for(const e of Object.keys(n))o.has(e)||t?.({field:e,action:"ignored"});return Object.prototype.hasOwnProperty.call(n,"imageId")&&t?.({field:"imageId",action:"migrated"}),{...Oo(n,i),imageSelection:zn(n.imageSelection,n.imageId)}},sanitizeStoredControlledInstance:Ro,sanitizeStoredEnvironmentTemplate:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(["id","name","sourceInstanceId","nodeId","imageId","internalTag","platform","architecture","sizeBytes","status","error","createdAt","updatedAt"]),o="string"==typeof n.id?n.id:void 0;for(const e of Object.keys(n))i.has(e)||t?.({templateId:o,field:e});const r=Oo(n,[...i]);if(n.error&&"object"==typeof n.error&&!Array.isArray(n.error)){const e=n.error;for(const n of Object.keys(e))["code","message","phase"].includes(n)||t?.({templateId:o,field:`error.${n}`});r.error=Oo(e,["code","message","phase"])}return r},sanitizeStoredImageProfile:Hi,sanitizeStoredMarketCatalogSnapshot:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=["protocolVersion","catalogId","revision","source","generatedAt","expiresAt","items"];for(const e of Object.keys(n))i.includes(e)||t?.({field:e});const o=Array.isArray(n.items)?n.items.flatMap(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return t?.({field:"items"}),[];const n=e,i=["id","publisher","slug","name","description","localizedDescriptions","cover","repository","defaultTag","tags","capabilities","optionalApps","defaultEnv","labels","status"];for(const e of Object.keys(n))i.includes(e)||t?.({itemId:"string"==typeof n.id?n.id:void 0,field:e});const o=Ri.safeParse(Oo(n,i));return o.success?[o.data]:(t?.({itemId:"string"==typeof n.id?n.id:void 0,field:"invalid-record"}),[])}):n.items;return{...Oo(n,i),items:o}},sanitizeStoredNode:function(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return e;const n=e,i=new Set(["id","name","connectionMode","connectionPath","connectionEnabled","auth","endpoint","controlEndpoint","containerEndpoint","publicWebBase","status","health","capabilities","proxyState","appInventory","labels","lastSeenAt","createdAt","updatedAt"]);for(const e of Object.keys(n))i.has(e)||t?.({field:e});const o=n.auth&&"object"==typeof n.auth&&!Array.isArray(n.auth)?Oo(n.auth,["mode","keyId","secret","pairedAt","pairing"]):n.auth;o&&"object"==typeof o&&"pairing"in o&&(o.pairing=Oo(o.pairing,["status","joinToken","expiresAt"]));const r=n.connectionPath&&"object"==typeof n.connectionPath&&!Array.isArray(n.connectionPath)?"control-plane-proxy"===n.connectionPath.kind?Oo(n.connectionPath,["kind","proxyId","proxyBindingId","targetNodeId"]):Oo(n.connectionPath,["kind"]):{kind:"direct"},a=n.proxyState&&"object"==typeof n.proxyState&&!Array.isArray(n.proxyState)?Oo(n.proxyState,["reachability","bindingStatus","bindingRevision","streamId","revision","observedAt","target","lastError","updatedAt"]):n.proxyState;if(a&&"object"==typeof a){const e=a;e.target=Oo(e.target,["id","name","status","health","lastSeenAt","capabilities"]),e.lastError=Oo(e.lastError,["code","message","retryable","details"])}return{...Object.fromEntries(Object.entries(n).filter(([e])=>i.has(e))),auth:o,connectionPath:r,proxyState:a}},sanitizeStoredNodeLocalFolder:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e,{defaultImageId:n,...i}=t;return{...i,defaultImageSelection:zn(t.defaultImageSelection,n)}},sanitizeStoredProject:function(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e,{defaultImageId:n,defaultRuntimeId:i,...o}=t;return{...o,source:_o(t.source),defaultImageSelection:zn(t.defaultImageSelection,n)}},supportsAiSessionAttachmentRetentionSettings:function(e){return Lt(e).retentionSettings},supportsAiSessionConversationAttachmentCapability:function(e,t,n){return Ft(e,n).includes(t)},supportsAiSessionFileSizeLimitSettings:function(e){return!0===Lt(e).fileSizeLimitSettings},supportsAiSessionPersistenceSettings:function(e){return Mt(e).features.aiSessionPersistenceSettings},supportsAiSessionTimelineCapability:function(e,t,n){return Vt(e,n).includes(t)},supportsAiSessionWorkspaceCheckout:function(e){return Mt(e).features.aiSessionWorkspaceCheckout},supportsAiSessionWorkspaceSelection:function(e){return Mt(e).features.aiSessionWorkspaceSelection},supportsBrowserTunnel:function(e){return Mt(e).features.browserTunnel},supportsControlledInstanceCodexManagedSettings:function(e){return Mt(e).features.codexManagedSettings},supportsControlledInstanceNodeAgentConnectionUpdate:function(e){return Mt(e).features.nodeAgentConnectionUpdate},supportsControlledInstancePrivateModelCatalog:function(e){return Mt(e).features.privateModelCatalog},supportsGitCliCredentialBroker:function(e){const t=Mt(e).features;return t.gitCredentialProxy||t.gitCliCredentialBroker},supportsGitCredentialProxy:function(e){return Mt(e).features.gitCredentialProxy},supportsNodeAiSessionFileAttachmentLimit:function(e){return!0===io.safeParse(e).data?.aiSessionFileAttachmentLimit},supportsNodeCodexManagedSettings:function(e){return!0===oo(e).codexManagedSettings},supportsNodeFolderPlaces:function(e){return!0===io.safeParse(e).data?.folderPlaces},supportsNodeGitCredentialRuntimeBroker:function(e){return oo(e).managedGitCredentials.runtimeBroker},supportsNodeGitWorkspaceProvisioning:function(e,t){return oo(e).managedGitCredentials.workspaceProvisioning[t]},supportsNodeLocalFolderNameUpdate:function(e){return!0===io.safeParse(e).data?.localFolderNameUpdate},supportsNodeManagedGitCredentialRegistry:function(e){return oo(e).managedGitCredentials.registry},supportsNodeMultiEntityModelAssignment:function(e){return oo(e).managedModels.multiEntityAssignment},supportsNodePrivateModelCatalog:function(e){return oo(e).managedModels.privateModelCatalog},supportsNodeStories:function(e){return oo(e).stories.enabled}})),Go=function(){if(Ho)return $o;Ho=1;const t=e,{spawnSync:i}=n;return $o={processStartIdentity:function(e,n=process.platform){if(Number.isInteger(e)&&!(e<=0)){if("linux"===n)try{const n=t.readFileSync(`/proc/${e}/stat`,"utf8"),i=n.lastIndexOf(")");if(i<0)return;const o=n.slice(i+2).trim().split(/\s+/)[19];return o?`linux:${o}`:void 0}catch{return}if(["darwin","freebsd","openbsd","aix","sunos"].includes(n)){const t=i("ps",["-o","lstart=","-p",String(e)],{encoding:"utf8",timeout:1e3}),o=0===t.status?t.stdout.trim().replace(/\s+/g," "):"";return o?`${n}:${o}`:void 0}if("win32"===n){const t=i("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-Process -Id ${e} -ErrorAction Stop).StartTime.ToUniversalTime().Ticks`],{encoding:"utf8",timeout:2e3}),n=0===t.status?t.stdout.trim():"";return/^\d+$/.test(n)?`win32:${n}`:void 0}}}}}();class Ko extends Error{code;lockPath;owner;constructor(e,t,n={}){const i=t?.pid?` pid ${t.pid}`:"";super(`${n.label||"Process"} is already running${i}. Lock: ${e}`),this.name="ProcessSingletonError",this.code=n.code||"PROCESS_ALREADY_RUNNING",this.lockPath=e,this.owner=t}}function Wo(e){return t.join(e,"owner.json")}function Yo(e){return t.join(e,"initializing.json")}function Xo(e){return t.join(e,"recovering.json")}function Jo(e){return Number.isInteger(e)&&Number(e)>0}const Zo=function(t){try{const n=JSON.parse(e.readFileSync(Wo(t),"utf8"));if(Jo(n.pid)&&"string"==typeof n.startTime){const e=n;return{pid:e.pid,hostname:"string"==typeof e.hostname&&e.hostname?e.hostname:c.hostname(),component:e.component||"server-update",command:"string"==typeof e.command?e.command:"",acquiredAt:"string"==typeof e.createdAt&&Number.isFinite(Date.parse(e.createdAt))?e.createdAt:new Date(0).toISOString(),token:"string"==typeof e.token&&e.token?e.token:`legacy:${e.pid}:${e.startTime}`,startIdentity:e.startTime.startsWith("linux:")?e.startTime:`linux:${e.startTime}`}}if(!(Jo(n.pid)&&"string"==typeof n.hostname&&n.hostname&&"string"==typeof n.command&&"string"==typeof n.acquiredAt&&Number.isFinite(Date.parse(n.acquiredAt))&&"string"==typeof n.token&&n.token))return;return n}catch{return}};function Qo(e){if(!Jo(e))return!1;try{return process.kill(Number(e),0),!0}catch(e){return"EPERM"===e.code}}function er(e){if(!e||!Qo(e.pid))return!1;if(!e.startIdentity)return!0;const t=Go.processStartIdentity(e.pid);return void 0===t||t===e.startIdentity}function tr(n,i){const o=t.join(n,`.owner-${i.token}.tmp`);e.writeFileSync(o,`${JSON.stringify(i,null,2)}\n`,{encoding:"utf8",mode:384,flag:"wx"});const r=ir(n);if(r?.token!==i.token)throw rr(o),new Error(`Process lock initialization was superseded: ${n}`);e.renameSync(o,Wo(n)),rr(Yo(n))}function nr(n,i,o){const r=Zo(n);if(r?.token!==i.token)return!1;const s={...i};for(const[e,t]of Object.entries(o))void 0===t?delete s[e]:Object.assign(s,{[e]:t});const c=t.join(n,`.owner-update-${i.token}-${a.randomUUID()}.tmp`);try{if(e.writeFileSync(c,`${JSON.stringify(s,null,2)}\n`,{encoding:"utf8",mode:384,flag:"wx"}),Zo(n)?.token!==i.token)return!1;e.renameSync(c,Wo(n));for(const e of Object.keys(i))delete i[e];return Object.assign(i,s),!0}catch(e){if("ENOENT"===e.code)return!1;throw e}finally{rr(c)}}function ir(t){try{return JSON.parse(e.readFileSync(Yo(t),"utf8"))}catch{return}}function or(e){const t=ir(e);return Jo(t?.pid)&&er({pid:t.pid,startIdentity:t.startIdentity})}function rr(t){try{e.unlinkSync(t)}catch(e){if("ENOENT"!==e.code)throw e}}function ar(){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,20)}function sr(t){try{const n=ir(t),i=Date.parse(n?.startedAt||"");return Number.isFinite(i)?Math.max(0,Date.now()-i):Math.max(0,Date.now()-e.statSync(t).mtimeMs)}catch{return 0}}function cr(n,i){try{return e.writeFileSync(Xo(n),`${JSON.stringify({token:i,pid:process.pid,startedAt:(new Date).toISOString()})}\n`,{encoding:"utf8",mode:384,flag:"wx"}),!0}catch(o){if("EEXIST"===o.code)return!!function(n){const i=Xo(n),o=dr(i),r=Date.parse(o?.startedAt||"");if(Qo(o?.pid)||Number.isFinite(r)&&Date.now()-r<2e3)return!1;const s=t.join(n,`.recovering-${a.randomUUID()}.stale`);try{e.renameSync(i,s)}catch(e){if(["ENOENT","EEXIST"].includes(e.code||""))return!1;throw e}const c=dr(s);if(c?.token===o?.token)return rr(s),!0;try{e.linkSync(s,i)}catch(e){if("EEXIST"!==e.code)throw e}finally{rr(s)}return!1}(n)&&cr(n,i);if("ENOENT"===o.code)return!1;throw o}}function dr(t){try{return JSON.parse(e.readFileSync(t,"utf8"))}catch{return}}function mr(e,t){return dr(Xo(e))?.token===t}const lr="/run/task-handoff-server-update.lock";function ur(t){const n={};if(!e.existsSync(t))return n;for(const i of e.readFileSync(t,"utf8").split(/\r?\n/)){if(!i||i.startsWith("#"))continue;const e=i.indexOf("=");e>0&&(n[i.slice(0,e)]=i.slice(e+1))}return n}var pr,gr=m(Object.freeze({__proto__:null,SERVER_UPDATE_LOCK_PATH:lr,acquireServerUpdateLock:function(n=lr,i={}){return function(n,i={}){e.mkdirSync(t.dirname(n),{recursive:!0});const o=Go.processStartIdentity(process.pid),r={pid:process.pid,hostname:c.hostname(),command:process.argv.join(" "),acquiredAt:(new Date).toISOString(),token:a.randomUUID(),...void 0!==i.component?{component:i.component}:{},...o?{startIdentity:o}:{},...void 0!==i.dataDir?{dataDir:i.dataDir}:{},...void 0!==i.host?{host:i.host}:{},...void 0!==i.port?{port:i.port}:{},...void 0!==i.instanceId?{instanceId:i.instanceId}:{}};for(let t=0;t<5;t+=1)try{return e.mkdirSync(n),e.writeFileSync(Yo(n),`${JSON.stringify({token:r.token,pid:r.pid,startIdentity:r.startIdentity,startedAt:(new Date).toISOString()})}\n`,{encoding:"utf8",mode:384,flag:"wx"}),tr(n,r),{lockPath:n,owner:r,updateDetails:e=>nr(n,r,e),release(){const t=Zo(n);t?.token===r.token&&e.rmSync(n,{recursive:!0,force:!0})}}}catch(o){if("EEXIST"!==o.code)throw o;const r=Zo(n);if(er(r))throw new Ko(n,r,i.error);if(!r&&(or(n)||sr(n)<(i.incompleteLockStaleMs??2e3))){if(t+1<5){ar();continue}throw new Ko(n,void 0,i.error)}const s=a.randomUUID();if(!cr(n,s)){if(t+1<5){ar();continue}throw new Ko(n,Zo(n),i.error)}const c=Zo(n);if(er(c))throw rr(Xo(n)),new Ko(n,c,i.error);if(r?.token&&c?.token!==r.token){rr(Xo(n));continue}if(!mr(n,s))continue;e.rmSync(n,{recursive:!0,force:!0})}const s=Zo(n);throw new Ko(n,s,i.error)}(n,{component:"server-update",incompleteLockStaleMs:i.legacyGraceMs??3e4,error:{label:"TaskHandoff server update",code:"SERVER_UPDATE_ALREADY_RUNNING"}}).release},cleanUpServerUpdateLockOnSignals:function(e){const t=new Map;for(const n of["SIGINT","SIGTERM","SIGHUP"]){const i=()=>{e(),process.removeListener(n,i),process.kill(process.pid,n)};t.set(n,i),process.on(n,i)}return()=>{for(const[e,n]of t)process.removeListener(e,n)}},currentServerInstallArgs:function(t={}){const n=ur(t.controlPlaneEnvFile||"/etc/task-handoff/control-plane.env"),i=ur(t.nodeAgentEnvFile||"/etc/task-handoff/node-agent.env");return["--service-user",(o=t.nodeAgentUnitFile||"/etc/systemd/system/task-handoff-node-agent.service",e.existsSync(o)&&e.readFileSync(o,"utf8").match(/^User=(.+)$/m)?.[1]||"root"),"--control-plane-data-dir",n.TASK_HANDOFF_CONTROL_PLANE_DATA_DIR||"/var/lib/task-handoff/control-plane","--node-agent-data-dir",i.TASK_HANDOFF_NODE_AGENT_DATA_DIR||"/var/lib/task-handoff/node-agent","--control-plane-host",n.TASK_HANDOFF_CONTROL_PLANE_HOST||"0.0.0.0","--control-plane-port",n.TASK_HANDOFF_CONTROL_PLANE_PORT||"8081","--node-agent-host",i.TASK_HANDOFF_NODE_AGENT_HOST||"127.0.0.1","--node-agent-port",i.TASK_HANDOFF_NODE_AGENT_PORT||"8091","--node-agent-ipc-path",i.TASK_HANDOFF_NODE_AGENT_IPC_PATH||"/run/task-handoff/node-agent.sock","--auth-mode",n.TASK_HANDOFF_CONTROL_PLANE_AUTH_MODE||"password",...i.NPM_CONFIG_REGISTRY?["--npm-registry",i.NPM_CONFIG_REGISTRY]:[],...n.TASK_HANDOFF_CONTROL_PLANE_STATIC_DIR?["--static-dir",n.TASK_HANDOFF_CONTROL_PLANE_STATIC_DIR]:[]];var o},globalPrefixFromModulePath:function(e){let n=t.resolve(e);for(;n!==t.dirname(n);){if("node_modules"===t.basename(n)&&"lib"===t.basename(t.dirname(n)))return t.dirname(t.dirname(n));n=t.dirname(n)}}})),zr=function(){if(pr)return l;pr=1,Object.defineProperty(l,"__esModule",{value:!0});const a=e,s=t,{spawnSync:c}=n,{Command:d,InvalidArgumentError:m}=i,u=o,p=r,{ControlPlaneHealthResponseSchema:g}=Bo,{acquireServerUpdateLock:z,cleanUpServerUpdateLockOnSignals:f,globalPrefixFromModulePath:b}=gr;function y(e){const t=g.safeParse(e);return t.success?t.data.data.build.packageVersion:void 0}function h(e){if(!s.isAbsolute(e))throw new m("must be an absolute path");return s.resolve(e)}const x=(new d).name("task-handoff-node-update-worker").description("Apply a detached TaskHandoff node update.").requiredOption("--job-file <path>","persisted update job file").requiredOption("--target-version <version>","exact semantic version",function(e){if(e.trim()!==e||/^[v=]/.test(e)||null===u.valid(e))throw new m("must be an exact semantic version");return e}).option("--service <name>","systemd service to restart","task-handoff-node-agent.service").option("--npm-command <path>","npm executable",process.env.TASK_HANDOFF_NPM_COMMAND||"npm").option("--control-plane-health-url <url>","local control-plane health endpoint",function(e){let t;try{t=new URL(e)}catch{throw new m("must be a valid loopback HTTP URL")}if(!["http:","https:"].includes(t.protocol)||!["127.0.0.1","localhost","::1"].includes(t.hostname))throw new m("must be a valid loopback HTTP URL");return t.toString()}).option("--install-prefix <path>","authoritative npm global prefix",h).option("--node-agent-ipc-path <path>","node-agent readiness socket",h).option("--registry <url>","npm registry URL").option("--standalone","complete the temporary job after service verification").parse(process.argv).opts(),I=x.jobFile,S=x.targetVersion,A=x.service,v=x.npmCommand,k=x.controlPlaneHealthUrl,j=x.installPrefix,C=x.nodeAgentIpcPath,w=x.registry,E=new Set(["succeeded","degraded","failed"]),N=new Set(["@task-handoff/node-agent","@task-handoff/server"]),R=["/etc/task-handoff/control-plane.env","/etc/task-handoff/node-agent.env","/etc/systemd/system/task-handoff-control-plane.service","/etc/systemd/system/task-handoff-node-agent.service"];function T(e,t){const n=JSON.parse(a.readFileSync(I,"utf8"));process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_CAS_HOOK&&function(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}(s.resolve(process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_CAS_HOOK))({jobFile:I,observed:n});const i=`${I}.worker-lock`;a.mkdirSync(i);try{const n=JSON.parse(a.readFileSync(I,"utf8"));if(E.has(n.status)||!e.includes(n.status))return!1;const i="function"==typeof t?t(n):t,o={...n,...i,updatedAt:(new Date).toISOString()};return p.sync(I,`${JSON.stringify(o,null,2)}\n`,{encoding:"utf8"}),!0}finally{a.rmdirSync(i)}}function P(e,t){const n=c(e,t,{stdio:"inherit"});if(0!==n.status)throw new Error(`${e} exited with status ${n.status??"unknown"}`)}function _(e,t,n){const i=n?s.join(t,...n.split("/"),"node_modules",...e.split("/"),"package.json"):s.join(t,...e.split("/"),"package.json");try{return JSON.parse(a.readFileSync(i,"utf8")).version}catch(e){if("ENOENT"===e?.code)return;throw e}}function O(e,t){const n=_(e,t);if(n!==S)throw new Error(`Updated ${e} verification failed: expected ${S}, found ${n||"unknown"}.`)}function M(e){const t=["view",`${e}@${S}`,"dist.integrity","--json"];w&&t.push("--registry",w);const n=c(v,t,{encoding:"utf8"});if(0!==n.status)throw new Error(`Could not verify the ${e} npm artifact integrity.`);let i;try{i=JSON.parse(n.stdout)}catch{throw new Error(`npm returned invalid ${e} artifact integrity metadata.`)}if("string"!=typeof i||!/^sha(?:256|384|512)-[A-Za-z0-9+/=]+$/.test(i))throw new Error(`npm returned invalid ${e} artifact integrity metadata.`);return i}async function L(e,t=S,n=6e4){const i=Date.now()+n;let o="not reachable";for(;Date.now()<i;){try{if(process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_HEALTH_FILE){const e=y(JSON.parse(a.readFileSync(process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_HEALTH_FILE,"utf8")));if(e===t)return;o=`reported version ${String(e||"unknown")}`,await new Promise(e=>setTimeout(e,10));continue}const n=await fetch(e,{headers:{"cache-control":"no-cache"},signal:AbortSignal.timeout(2e3)}),i=y(await n.json().catch(()=>({})));if(n.ok&&i===t)return;o=n.ok?`reported version ${String(i||"unknown")}`:`returned HTTP ${n.status}`}catch(e){o=e instanceof Error?e.message:String(e)}await new Promise(e=>setTimeout(e,500))}throw new Error(`Control plane did not become healthy at ${e} with version ${t}: ${o}.`)}function D(e,t=3e4){const n=Date.now()+t;for(;Date.now()<n;){try{if(a.statSync(e).isSocket())return}catch{}Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,250)}throw new Error(`Node agent socket was not ready after ${t}ms: ${e}`)}function F(e,t,n){const i=["install","--global","--prefix",e,`${t}@${n}`];w&&i.push("--registry",w),P(v,i)}return async function(){let e,t,n;try{if(!T(["queued"],e=>({status:"updating-node",rollout:{...e.rollout,phase:"updating-node"},startedAt:(new Date).toISOString(),error:void 0})))return;e=z(process.env.TASK_HANDOFF_SERVER_UPDATE_LOCK_PATH||void 0),t=f(e);const i=function(){const e=JSON.parse(a.readFileSync(I,"utf8")),t=`@${S}#`;if("string"!=typeof e.artifactRef||!e.artifactRef.startsWith("npm:")||!e.artifactRef.includes(t))throw new Error(`Update job does not pin npm integrity for version ${S}.`);const n=e.artifactRef.indexOf(t),i=e.artifactRef.slice(4,n),o=e.artifactRef.slice(n+t.length);if(!N.has(i)||!o)throw new Error("Update job does not identify a supported immutable npm artifact.");const r=M(i);if(r!==o)throw new Error(`${i} npm artifact integrity mismatch: expected ${o}, found ${String(r||"unknown")}.`);return{packageName:i,integrity:r}}(),o=i.packageName,r=b(process.argv[1]);if(j&&r&&j!==r)throw Object.assign(new Error(`Update prefix ${j} does not match the running package prefix ${r}.`),{code:"UPDATE_INSTALL_PREFIX_MISMATCH"});const d=r?void 0:c(v,["prefix","--global"],{encoding:"utf8"});if(d&&0!==d.status)throw new Error("Could not determine the npm global prefix.");const m=j||r||d?.stdout.trim();if(!m)throw new Error("Could not determine the npm global prefix.");const l=c(v,["root","--global","--prefix",m],{encoding:"utf8"});if(0!==l.status)throw new Error("Could not determine the npm global module root.");const u=l.stdout.trim(),g=[o];"@task-handoff/server"===o&&void 0!==_("@task-handoff/node-agent",u)&&g.push("@task-handoff/node-agent");const y=new Map(g.map(e=>[e,_(e,u)])),h="@task-handoff/server"===o?function(){const e=process.env.TASK_HANDOFF_UPDATE_WORKER_TEST_CONFIGURATION_ROOT;return e?R.map(t=>s.join(e,t.slice(1))):R}().map(e=>{try{const t=a.statSync(e);return{file:e,contents:a.readFileSync(e),mode:t.mode}}catch(t){if("ENOENT"===t?.code)return{file:e};throw t}}):[];let w=!1;n=async()=>{for(const e of[...g].reverse()){const t=y.get(e);t&&F(m,e,t)}if("@task-handoff/server"===o){w&&(function(e){for(const t of e)t.contents?(a.mkdirSync(s.dirname(t.file),{recursive:!0}),p.sync(t.file,t.contents,{mode:t.mode})):a.rmSync(t.file,{force:!0})}(h),P("systemctl",["daemon-reload"])),P("systemctl",["restart","task-handoff-control-plane.service"]);const e=y.get("@task-handoff/server");k&&e&&await L(k,e)}P("systemctl",["restart",A]),C&&D(C)};const E=new Map([[o,i.integrity]]);for(const e of g.slice(1))E.set(e,M(e));for(const e of g){if(F(m,e,S),M(e)!==E.get(e))throw new Error(`${e} npm artifact integrity changed during installation.`);O(e,u)}if("@task-handoff/server"===o){if(function(e){for(const t of["@task-handoff/control-plane","@task-handoff/node-agent","@task-handoff/controlled-instance"]){const n=_(t,e,"@task-handoff/server")||_(t,e);if(n!==S)throw new Error(`Updated @task-handoff/server does not provide ${t} ${S}; found ${n||"unknown"}.`)}}(u),!k)throw new Error("A control-plane health URL is required for a complete server update.");w=!0,function(e){P(s.join(e,"bin","task-handoff"),["install","--preserve-current","--materialize-only"])}(m),P("systemctl",["restart","task-handoff-control-plane.service"]),await L(k)}if(!T(["updating-node"],e=>({status:"restarting-node",rollout:{...e.rollout,phase:"restarting-node"}})))return;P("systemctl",["restart",A]),C&&D(C),x.standalone&&T(["restarting-node"],e=>({status:"succeeded",rollout:{...e.rollout,phase:"succeeded",nodeVersion:S},completedAt:(new Date).toISOString()}))}catch(e){let t;if(n)try{await n()}catch(e){t=e}const i=[e instanceof Error?e.message:String(e),t?`Rollback failed: ${t instanceof Error?t.message:String(t)}`:void 0].filter(Boolean).join(" ");T(["queued","updating-node","restarting-node"],t=>({status:"failed",rollout:{...t.rollout,phase:"failed"},error:{code:e&&"object"==typeof e&&"code"in e&&"string"==typeof e.code?e.code:"NODE_UPDATE_FAILED",message:i,retryable:e&&"object"==typeof e&&"code"in e&&"SERVER_UPDATE_ALREADY_RUNNING"===e.code},completedAt:(new Date).toISOString()})),console.error(e),process.exitCode=1}finally{t?.(),e?.()}}(),l}(),fr=d(zr);module.exports=fr;