@makaio/framework 1.0.0-dev-1783615060726 → 1.0.0-dev-1783687982716
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/adapter-CA8rPIUz.mjs +1 -0
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/index.d.mts +38 -3
- package/dist/adapters/index.mjs +4 -4
- package/dist/bus/index.mjs +1 -1
- package/dist/client-DaR4mzqn.mjs +1 -0
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/config/index.d.mts +12 -12
- package/dist/contracts/extension/index.d.mts +3 -3
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +120 -68
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/provider/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/workflow/index.d.mts +3 -3
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{definition-DePb3ke-.d.mts → definition-s9PIua2B.d.mts} +1 -1
- package/dist/drizzle/0024_external_settlement_fingerprint.sql +1 -0
- package/dist/drizzle/0025_external_registration_frame.sql +1 -0
- package/dist/drizzle/meta/_journal.json +14 -0
- package/dist/{index-BSprsrul.d.mts → index-B4ZddkPI.d.mts} +171 -132
- package/dist/{index-DWu3qrwe.d.mts → index-B9d_8_V2.d.mts} +8 -8
- package/dist/{index-Qd1Qom8M.d.mts → index-BUrNl0QJ.d.mts} +36 -36
- package/dist/{index-2fK9iSHI.d.mts → index-BWIkf5oJ.d.mts} +6 -6
- package/dist/{index-Cx1Bm6WD.d.mts → index-Bc82MC0z.d.mts} +4 -4
- package/dist/{index-S7lj2TLp.d.mts → index-CAhKyxfm.d.mts} +481 -101
- package/dist/{index-DZPNuWMc.d.mts → index-CmHdpW0E.d.mts} +11 -11
- package/dist/{index-C9FCWOhp.d.mts → index-D4gn93gL.d.mts} +4 -4
- package/dist/{index-DLNRgZPo2.d.mts → index-D94cDExW2.d.mts} +15 -15
- package/dist/{index-D8wmMJLi.d.mts → index-DLDQDXhD.d.mts} +3 -3
- package/dist/{index-DKaEpPFS.d.mts → index-DNfNwGu6.d.mts} +9 -9
- package/dist/{index-BMbmoarE.d.mts → index-DTBQOCar.d.mts} +16 -16
- package/dist/{index-DZ14azod.d.mts → index-DTkGyKKA.d.mts} +174 -15
- package/dist/{index-DEzdNQum.d.mts → index-Di84JjS0.d.mts} +2 -2
- package/dist/{index-DoEF9LAc.d.mts → index-DsLpP5ek.d.mts} +1 -1
- package/dist/{index-CaerrEDH.d.mts → index-NkNbYFud.d.mts} +1 -1
- package/dist/{index-CqCe7Phc.d.mts → index-mU2lnU7O.d.mts} +6 -6
- package/dist/{index-BbQpQ1N3.d.mts → index-oePgeOph.d.mts} +87 -3
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/loop-gate-handlers-o2B5FPdF.mjs +1 -0
- package/dist/{namespace-j7vFsmYL.d.mts → namespace-3yGm4WF9.d.mts} +2 -2
- package/dist/{namespace-D8P8Sxce2.d.mts → namespace-6sIu5nBI2.d.mts} +2 -2
- package/dist/{namespace-CZK2ff3B.d.mts → namespace-B9V9R3AY.d.mts} +22 -22
- package/dist/{namespace-Ceg3zkt2.d.mts → namespace-BGIeqwfU.d.mts} +20 -20
- package/dist/{namespace-CfvtDD_U.d.mts → namespace-BLER-Qom.d.mts} +2 -2
- package/dist/{namespace-Dc94fHZW.d.mts → namespace-Dm454cNM.d.mts} +36 -36
- package/dist/{namespace-DuUCiVmK.d.mts → namespace-d_0I6P7N.d.mts} +58 -58
- package/dist/package-Co_GO3UD.mjs +7 -0
- package/dist/{package-B6mEMD8r.d.mts → package-DmVZxufT.d.mts} +1 -1
- package/dist/package.json +1 -1
- package/dist/{schema-B9goOieO.d.mts → schema-B5vHi7Uu.d.mts} +1 -1
- package/dist/{schemas-CoFCV42v.d.mts → schemas-B_t6oOK-.d.mts} +2 -2
- package/dist/{schemas-D512XweP.d.mts → schemas-CJ2JvA7d.d.mts} +3 -3
- package/dist/{schemas-Br-rSxPE2.d.mts → schemas-CNUk34qC2.d.mts} +19 -19
- package/dist/schemas-CVo8qAK-.mjs +1 -0
- package/dist/{schemas-lnE9YoG7.d.mts → schemas-CscdPqCt.d.mts} +3 -3
- package/dist/services/adapter-subsystem/index.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +14 -14
- package/dist/services/execution-target/index.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +12 -12
- package/dist/services/filesystem/schemas.d.mts +6 -6
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +65 -65
- package/dist/services/session/index.d.mts +5 -5
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/settings/namespace.d.mts +19 -19
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tray-menu/index.d.mts +2 -2
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/session-DBfQkgdy.mjs +1 -0
- package/dist/{session-lineage-NBFNVkUE.d.mts → session-lineage-C1M7-O3C.d.mts} +1 -1
- package/dist/{transition-CmI3q3FA.d.mts → transition-OzGXyy3p.d.mts} +1 -1
- package/dist/{types-VwMx5_lS.d.mts → types-1a2D10yb.d.mts} +13 -2
- package/dist/{types-BNW5n6qm.d.mts → types-BMS6yfLS.d.mts} +1 -1
- package/dist/{types-Dhou-Itn.d.mts → types-BSilhlYE.d.mts} +64 -50
- package/dist/workflow-C3dgVwTY.mjs +1 -0
- package/dist/workflow-engine/index.d.mts +323 -55
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.d.mts +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/package.json +1 -1
- package/dist/adapter-Lx6K7yQS.mjs +0 -1
- package/dist/client-l1Rq5p6X.mjs +0 -1
- package/dist/loop-gate-handlers-Bjmat-K3.mjs +0 -1
- package/dist/package-BQn_RTo7.mjs +0 -1
- package/dist/schemas-CkOigLAT.mjs +0 -1
- package/dist/session-D5rVMqmE.mjs +0 -1
- package/dist/workflow-C1z7I5CI.mjs +0 -1
package/dist/adapters/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{o as e,t}from"../chunk-DTipWd-i.mjs";import{t as n}from"../cleanEnvForAdapter-BooAgM2R.mjs";import{i as r,n as i,r as a,t as o}from"../cursor-storage-luQAg7E_.mjs";import{_ as s,a as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,n as _,o as ee,p as v,r as te,s as
|
|
1
|
+
import{o as e,t}from"../chunk-DTipWd-i.mjs";import{t as n}from"../cleanEnvForAdapter-BooAgM2R.mjs";import{i as r,n as i,r as a,t as o}from"../cursor-storage-luQAg7E_.mjs";import{_ as s,a as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,n as _,o as ee,p as v,r as te,s as ne,t as re,u as y,v as b}from"../ajv-B5dPIck0.mjs";import{z as x}from"zod";import*as ie from"node:fs";import{AuthenticationError as ae,DirectoryNotFoundError as oe,ModelUnavailableError as se,QuotaExceededError as ce,RateLimitError as le,createBusNamespace as ue}from"@makaio/framework/core";import{MakaioBus as S,NoHandlerError as de,RequestError as fe}from"@makaio/framework/bus";import{AdapterSubjects as C,AgentSubjects as w,AgentToolApproveSchema as T,HarnessSubjects as E,MCP_CALL_TOOL_NAME as pe,McpSubjects as D,RequestCorrelationContextSchema as O,SessionContextSchema as k,SessionSubjects as A}from"@makaio/framework/contracts";import{TurnStorageSubjects as me}from"@makaio/framework/services/turn";import{CredentialRefSchema as he}from"@makaio/framework/contracts/config";import{runPostUserMessageHooks as ge,runPreUserMessageHooks as _e}from"@makaio/framework/hooks";import{activateProviderContextStrict as ve,buildProviderContext as j}from"@makaio/framework/services/provider-context";import ye from"node:os";import{AgentStorageSubjects as M}from"@makaio/framework/services/session";import{DeferredPromise as N,resolveTimeouts as be}from"@makaio/framework/utils";import*as xe from"node:process";function Se(e,t,n){let r=ue(e,t,n),i=S.registerNamespace(r);return Object.assign(i,{definition:r})}function P(e){let t=[];try{return JSON.stringify(e,function(e,n){if(typeof n==`bigint`)return n.toString();if(typeof n==`object`&&n){for(;t.length>0&&t[t.length-1]!==this;)t.pop();if(t.includes(n))return`[Circular]`;t.push(n)}return n},2)??`[Non-serializable value]`}catch{try{return String(e)}catch{return`[Non-serializable value]`}}}function Ce(e){return e.replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`'`,`'`)}function we(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length===0?`context`:/^[A-Za-z_]/.test(t)?t:`context_${t}`}function F(e,t){let n=we(e);return`<${n}>\n${Ce(t)}\n</${n}>`}function Te(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`&&typeof t.description==`string`&&(t.compatibility===void 0||typeof t.compatibility==`string`)}function Ee(e){if(typeof e!=`object`||!e)return!1;let t=e,n=t.metadata,r=n;return typeof t.name==`string`&&typeof t.content==`string`&&(t.license===void 0||typeof t.license==`string`)&&(t.compatibility===void 0||typeof t.compatibility==`string`)&&(t.allowedTools===void 0||typeof t.allowedTools==`string`)&&(n===void 0||typeof n==`object`&&!!n&&Object.values(r??{}).every(e=>typeof e==`string`))}function De(e){if(!Array.isArray(e))return;let t=e.filter(Te).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>e.compatibility?`- ${e.name}: ${e.description} Compatibility: ${e.compatibility}`:`- ${e.name}: ${e.description}`);return t.length>0?t.join(`
|
|
2
2
|
`):void 0}function Oe(e){if(!Array.isArray(e))return;let t=e.filter(Ee).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=[`## ${e.name}`];return e.compatibility&&t.push(`Compatibility: ${e.compatibility}`),t.push(e.content),t.join(`
|
|
3
3
|
`)});return t.length>0?t.join(`
|
|
4
4
|
|
|
5
5
|
`):void 0}function ke(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&typeof t.name==`string`&&typeof t.priority==`number`&&typeof t.renderedContent==`string`}function Ae(e){if(!Array.isArray(e))return;let t=e.filter(ke).map(e=>`## ${e.name}\n${e.renderedContent}`);return t.length>0?t.join(`
|
|
6
6
|
|
|
7
|
-
`):void 0}const
|
|
7
|
+
`):void 0}const je=[`skillCatalog`,`skills`,`contextRules`];function Me(e){if(!e)return[];let t=[],n={skillCatalog:De,skills:Oe,contextRules:Ae};for(let r of je)Ne(t,r,e[r],n[r]);let r=new Set(je),i=Object.keys(e).filter(t=>e[t]==null?!1:!r.has(t)).sort();for(let n of i)t.push({tag:n,content:P(e[n])});return t}function Ne(e,t,n,r){if(n==null)return;let i=r(n);if(i!==void 0){e.push({tag:t,content:i});return}Array.isArray(n)&&n.length===0||e.push({tag:t,content:P(n)})}function Pe(e){return e.length===0?``:e.map(e=>F(e.tag,e.content)).join(`
|
|
8
8
|
|
|
9
|
-
`)}function
|
|
9
|
+
`)}function Fe(e){let t=new Set(e),n={hasAll:e=>e.every(e=>t.has(e)),hasAny:e=>e.some(e=>t.has(e))};for(let t of e){let e=t.split(`:`).map((e,t)=>t===0?e:e.charAt(0).toUpperCase()+e.slice(1)).join(``);n[e]=!0}return n}function I(e){if(typeof e==`string`)return{role:`user`,blocks:[{type:`text`,content:e}],message:e};let t=Array.isArray(e.blocks)?e.blocks:[e.blocks],n=t.find(e=>e.type===`text`);return{role:e.role??`user`,blocks:t,message:n?.content}}function Ie(e,t){return{discriminator:e,handlers:t}}function Le(e,t){return{discriminator:e,handlers:t}}async function Re(e,t,n){let r=Array.isArray(e)?e:[e];for(let e of r){let r=e[t.discriminator],i=t.handlers[r];i&&await i(e,n)}}function ze(e,t,n){let r=Array.isArray(e)?e:[e];for(let e of r){let r=e[t.discriminator],i=t.handlers[r];if(i&&i(e,n)instanceof Promise)throw Error(`processDiscriminatedItemsSync: Handler for '${r}' returned a Promise. Use processDiscriminatedItems (async) instead, or ensure all handlers are synchronous.`)}}function L(e){return e?.trim()||void 0}function Be(e){return[...new Set(e.flatMap(e=>e.credentialEnvVars?Object.values(e.credentialEnvVars):[]))]}function R(e,t=e?[e]:[]){let n={},r=Be(t);if(e?.credentialEnvVars)for(let[t,r]of Object.entries(e.credentialEnvVars))n[t]=he.parse(`env:${r}`);return{providerConfigId:`test-provider-config-id`,definitionId:e?.id??`test`,credentialRefs:n,...e?.credentialEnvVars?{credentialEnvVars:{...e.credentialEnvVars}}:void 0,...r.length>0?{ambientCredentialEnvVars:r}:{},...e?.endpoints?{endpointOverrides:{...e.endpoints}}:{}}}function Ve(e,t,n,r=n?[n]:[]){return{...e,bus:t,agentId:crypto.randomUUID(),adapterId:crypto.randomUUID(),adapterName:e?.adapterName??`test-adapter`,providerContext:e?.providerContext??R(n,r)}}const He=`MAKAIO_CONFORMANCE_PROVIDER`,Ue=`MAKAIO_CONFORMANCE_PRIMARY_MODEL`,We=`MAKAIO_CONFORMANCE_SECONDARY_MODEL`,z=`MAKAIO_CONFORMANCE_PROVIDER_DEFINITIONS`;function Ge(e){let t=[],n=new Set;for(let r of e)n.has(r.id)||(n.add(r.id),t.push(r));return t}function Ke(e){let t=L(e);if(!t)return[];let n;try{n=JSON.parse(t)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${z} must contain valid JSON: ${t}`,{cause:e})}if(!Array.isArray(n))throw Error(`${z} must be a JSON array`);for(let[e,t]of n.entries())if(!t||typeof t!=`object`||typeof t.id!=`string`)throw Error(`${z}[${e}] must be a provider object with an id`);return n}function qe(e,t,n,r){let i=new Map;for(let e of[...r,...n])i.set(e.id,e);let a=t.map(e=>i.get(e)).filter(e=>!!e),o=t.filter(e=>!i.has(e));if(o.length>0)throw Error(`[${e}] Conformance provider catalog is missing provider definitions: ${o.join(`, `)}. Run through yarn test:conformance so provider contributions are loaded.`);return Ge(a)}function B(e,t,n,r,i){if(r)return r;let a=n===`primary`?`fastModel/defaultModel`:`defaultModel`;throw Error(`[${e}] Provider '${t.id}' cannot be used for conformance tests: missing ${a}. Set ${i} or add a model to the provider definition.`)}function Je(e){let t=e.readEnv??(e=>process.env[e]),n=e.providerEnvVar??`MAKAIO_CONFORMANCE_PROVIDER`,r=e.primaryModelEnvVar??`MAKAIO_CONFORMANCE_PRIMARY_MODEL`,i=e.secondaryModelEnvVar??`MAKAIO_CONFORMANCE_SECONDARY_MODEL`,a=Ke(t(z)),o=qe(e.adapterName,e.providerIds,e.providerDefinitions??[],a),s=L(t(n)),c=s??e.defaultProviderId,l=o.find(e=>e.id===c);if(!l){let t=o.map(e=>e.id).join(`, `);throw Error(`[${e.adapterName}] Unknown conformance provider '${c}' from ${s?n:`defaultProviderId`}. Available providers: ${t}`)}let u=B(e.adapterName,l,`primary`,L(t(r))??l.primaryTestModel??l.fastModel??l.defaultModel,r),d=B(e.adapterName,l,`secondary`,L(t(i))??l.secondaryTestModel??l.defaultModel,i);return{provider:l,providers:o,providerContext:R(l,o),primaryModel:{definitionId:l.id,modelName:u,...e.reasoningEffort?{reasoningEffort:e.reasoningEffort}:void 0},secondaryModel:{definitionId:l.id,modelName:d,...e.reasoningEffort?{reasoningEffort:e.reasoningEffort}:void 0}}}async function Ye(e,t,n,r){let i=n===void 0?await e.requestOptional(E.getDefault,{adapterName:t,clientId:r}):await e.requestOptional(E.get,{id:n});return i.handled?i.data.nativeTools.disabled:[]}function Xe(e){switch(e.type){case`text`:return e.content;case`image`:return`[Image]`;case`document`:return`[Document]`;case`attachment`:return`[Attachment: ${e.displayName??e.fileName}]`;case`reasoning`:return`[Reasoning]\n${e.content}`;case`tool_call`:return`[Tool: ${e.name}]\n${JSON.stringify(e.args,null,2)}`;case`tool_output`:return`[Tool ${e.isError?`Error`:`Result`}]\n${e.output}`}}function Ze(e){return e.map(e=>{let t=e.role??`user`;return`${t.charAt(0).toUpperCase()+t.slice(1)}: ${(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(Xe).join(`
|
|
10
10
|
`)}`}).join(`
|
|
11
|
-
`)}function Ze(e){throw Error(`Unhandled MessageBlock variant: ${JSON.stringify(e)}`)}function Qe(e){switch(e.type){case`text`:return e.content;case`reasoning`:return e.content;case`tool_call`:return`[Tool: ${e.name}]\n${JSON.stringify(e.args)}`;case`tool_output`:return`[Tool ${e.isError?`Error`:`Result`} ${e.toolCallId}]\n${e.output}`;case`image`:return`[Image]`;case`document`:return`[Document]`;case`attachment`:return`[Attachment: ${e.displayName?.trim()?e.displayName:e.fileName||`Attachment`}]`;default:return Ze(e)}}function V(e,t,n,r,i){let a=e??(i?t:void 0);if(!a)throw Error(`[${r}] toGlobalToolApproval: ${n} must come from tool approval context`+(i?` or trusted payload`:``));return a}function H(e,t,n,r=!1){return V(e,t,`sessionId`,n,r)}function $e(e,t,n,r={}){let i=r.allowPayloadIdentityFallback??!1;if(i){let e=[t.agentId,t.adapterId,t.adapterName,t.adapterSessionId],r=e.filter(Boolean).length;if(r>0&&r<e.length)throw Error(`[${n}] toGlobalToolApproval: context must supply all four identity fields (agentId, adapterId, adapterName, adapterSessionId) or none — partial context with allowPayloadIdentityFallback creates a mixed-source identity tuple`)}let a=H(t.sessionId,e.sessionId,n,r.allowPayloadSessionFallback??!1);return{...e,agentId:V(t.agentId,e.agentId,`agentId`,n,i),adapterId:V(t.adapterId,e.adapterId,`adapterId`,n,i),adapterName:V(t.adapterName,e.adapterName,`adapterName`,n,i),adapterSessionId:V(t.adapterSessionId,e.adapterSessionId,`adapterSessionId`,n,i),sessionId:a}}const et={request:E.request.extend({sessionId:S.string().optional()}),response:E.response};function tt(e,t,n){return function(r,i,a){return r.on(e,async e=>{try{let r=typeof i==`function`?await i():i,o=t(e.payload,r),s=await a.request(T.toolApprove,o);e.setResult(n(s))}catch(t){console.error(`[createToolApprovalHandler] Tool approval request failed:`,t);let r=t instanceof Error?`: ${t.message}`:``;e.setResult(n({action:`deny`,message:`Tool approval request failed${r}`,shouldAbort:!0}))}})}}function U(e){return e&&e.split(`;`)[0].trim().toLowerCase()||`application/octet-stream`}function nt(e){let t=U(e);return t.startsWith(`text/`)?!0:[`application/json`,`application/xml`,`application/sql`,`application/graphql`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/toml`].includes(t)}function rt(e){if(!e.credentialEnvVars)return;let t={};for(let[n,r]of Object.entries(e.credentialEnvVars)){let e=process.env[r];e!==void 0&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}function W(){return{providerConfigId:`sentinel`,definitionId:`unresolved`,credentialRefs:{}}}var it=class{abortController;terminated=!1;constructor(e){this.abortController=e??new AbortController}get signal(){return this.abortController.signal}get isTerminated(){return this.terminated}abort(e){this.terminated||(this.terminated=!0,this.abortController.abort(),e&&Promise.resolve(e()).catch(e=>{console.error(`Error during session cleanup:`,e)}))}onAbort(e){this.abortController.signal.addEventListener(`abort`,e)}},at=class{queue=[];enqueue(e){if(e.deliveryMode===`replace`){for(let t of this.queue)t.state===`queued`&&(t.supersededBy=e.messageId,t.markCompleted({outcome:`superseded`,supersededBy:e.messageId}));this.removeSuperseded()}if(e.internalRetry&&e.deliveryMode===`enqueue`){this.enqueueInternalRetry(e);return}this.queue.push(e)}enqueueInternalRetry(e){let t=this.queue.findIndex(e=>e.deliveryMode!==`immediate`&&!e.internalRetry);if(t===-1){this.queue.push(e);return}this.queue.splice(t,0,e)}removeSuperseded(){for(let e=this.queue.length-1;e>=0;e--)this.queue[e].supersededBy&&this.queue.splice(e,1)}dequeue(){return this.queue.shift()}peek(){return this.queue[0]}isEmpty(){return this.queue.length===0}size(){return this.queue.length}clear(){this.queue.length=0}findImmediate(){return this.queue.find(e=>e.deliveryMode===`immediate`)}removeImmediate(e){let t=this.queue.indexOf(e);t>=0&&this.queue.splice(t,1)}drainEnqueued(){let e=[];for(let t=this.queue.length-1;t>=0;t--)this.queue[t].deliveryMode===`enqueue`&&e.unshift(this.queue.splice(t,1)[0]);return e}};async function G(e,t){let n=t.getCurrentTurn(),r=t.extractContent??ot;if(n?.canAcceptImmediate()){let i=e.findImmediate();if(i)if(e.removeImmediate(i),(await n.pause()).turnEnded)i.markCompleted({outcome:`rejected`});else{let a=n.getMessageHandle(),o=e.drainEnqueued(),s=[];a&&!a.isProcessed&&(s.push(r(a)),a.supersededBy=i.messageId,a.markCompleted({outcome:`superseded`,supersededBy:i.messageId}));for(let e of o)s.push(r(e)),e.supersededBy=i.messageId,e.markCompleted({outcome:`merged`,mergedInto:i.messageId});let c=t.collectMergeExtra?.(a,o);return await t.onBeforeImmediateTurn?.(),await t.startNewTurn(i,s,c),!0}}let i=e.peek();return(!n||n.isCompleted()||i?.internalRetry===!0&&n.getMessageHandle().isProcessed)&&i?i.deliveryMode===`immediate`&&n?.isCompleted()?(e.dequeue(),i.markCompleted({outcome:`rejected`}),G(e,t)):(e.dequeue(),await t.startNewTurn(i),!0):!1}function ot(e){return e.message.message}const st=[`active`,`step_finished`,`turn_finished`,`processing_finished`];function ct(e,t){if(e===t)return null;let n=[];switch(t){case`processing_started`:break;case`turn_started`:([`idle`,`processing_finished`,`paused`].includes(e)||e===`active`)&&n.push(`processing_started`);break;case`step_started`:[`idle`,`processing_finished`,`paused`].includes(e)||e===`active`?n.push(`processing_started`,`turn_started`):[`processing_started`,`turn_finished`].includes(e)&&n.push(`turn_started`);break;case`step_finished`:break;case`turn_finished`:e===`step_started`&&n.push(`step_finished`);break;case`processing_finished`:e===`step_started`?n.push(`step_finished`,`turn_finished`):[`turn_started`,`step_finished`].includes(e)&&n.push(`turn_finished`);break}return{isCompletionState:st.includes(t),statesToEmit:[...n,t]}}var K=class{messageId;message;deliveryMode;responseSchema;internalRetry;deferredCompletion;deferredAcknowledgement;state;isAcknowledged=void 0;completionResult=void 0;completionStarted=!1;completionTransforms=[];completionObservers=[];mergedInto;mergedFrom;supersededBy;deferredAdapterSessionId=new M;_adapterSessionId;_messageHistory;_cacheStrategy;_turnContext;constructor(e,t,n,r,i,a,o=!1,s){this.messageId=e,this.message=t,this.deliveryMode=n,this.responseSchema=a,this.internalRetry=o,this.deferredCompletion=new M,this.deferredAcknowledgement=new M,this.state=`queued`,this._messageHistory=r,this._cacheStrategy=s,this._turnContext=i}get messageHistory(){return this._messageHistory}set messageHistory(e){this._messageHistory=e}get cacheStrategy(){return this._cacheStrategy}set cacheStrategy(e){this._cacheStrategy=e}get turnContext(){return this._turnContext}set turnContext(e){this._turnContext=e}get adapterSessionId(){return this._adapterSessionId}set adapterSessionId(e){e&&!this._adapterSessionId&&(this._adapterSessionId=e,this.deferredAdapterSessionId.resolve(e))}waitForAdapterSessionId(){return this._adapterSessionId?Promise.resolve(this._adapterSessionId):this.deferredAdapterSessionId.getPromise()}get isProcessed(){return this.state===`completed`||this.state===`cancelled`}getState(){return this.state}updateState(e){this.state=e}async cancel(){return this.updateState(`cancelled`),this.completionStarted=!0,this.completionResult={outcome:`cancelled`},this.deferredAcknowledgement.reject(Error(`Message cancelled`)),this.deferredCompletion.resolve(this.completionResult),!0}markAcknowledged(e=!0){this.isAcknowledged===void 0&&(this.isAcknowledged=e,this.updateState(`acknowledged`),this.deferredAcknowledgement.resolve(e))}addCompletionTransform(e){if(this.completionStarted)throw Error(`Cannot add a completion transform after completion has started`);this.completionTransforms.push(e)}addCompletionObserver(e){if(this.completionStarted)throw Error(`Cannot add a completion observer after completion has started`);this.completionObservers.push(e)}markCompleted(e){this.completionStarted?console.warn(`markCompleted called for messageId: ${this.messageId} but already completed.`):(this.completionStarted=!0,this.updateState(`completed`),this.isAcknowledged===void 0&&(this.isAcknowledged=!1,this.deferredAcknowledgement.resolve(!1)),this.resolveCompletion(e))}async resolveCompletion(e){let t=e;try{for(let e of this.completionTransforms)t=await e(t)}catch(e){t={outcome:`error`,error:e instanceof Error?e:String(e)}}this.completionResult=t,this.notifyCompletionObservers(t),this.deferredCompletion.resolve(t)}notifyCompletionObservers(e){for(let t of this.completionObservers)try{t(e)}catch(e){console.warn(`[MessageHandle] completion observer failed for messageId: ${this.messageId}`,e)}}async waitForAcknowledgment(e){if(this.isAcknowledged!==void 0)return this.isAcknowledged;if(e){let t=await Promise.race([this.deferredAcknowledgement.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Acknowledgment timeout`)),e))]);if(t instanceof Error)throw this.markCompleted({outcome:`error`,error:t}),t;return t}return this.deferredAcknowledgement.getPromise()}async waitForCompletion(e){if(this.completionResult)return this.completionResult;if(e){let t=await Promise.race([this.deferredCompletion.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Completion timeout`)),e))]);if(t instanceof Error)throw t;return t}return this.deferredCompletion.getPromise()}};function lt(e,t,n){let r=n!==void 0&&!e.isProcessed;return e.markCompleted(t),r?e.waitForCompletion().then(async t=>{try{await n(e,t)}catch(t){console.warn(`[MessageHandle] completion notification failed for messageId: ${e.messageId}`,t)}}):Promise.resolve()}var q=class{agentId;adapterSessionId;sessionId;pendingMessageHandle;scopedBus;globalBus;filteredBus;errorHandler;deferredInterrupt;emittery=new r;processingState=`idle`;adapterId;timeouts;lastResult=null;config;model;providerConfigId;cwd;currentReasoningEffort;supportedReasoningLevels;env;_currentTurnNumber=0;_pendingCanonicalTurnNumber;adapterName;systemPrompt;constructor(e){let t=e.cwd??ye.tmpdir();if(!re.existsSync(t))throw new ae(t);this.agentId=e.agentId??crypto.randomUUID(),this.scopedBus=e.bus,this.globalBus=e.globalBus??C,this.filteredBus=e.bus.withFilter({agentId:this.agentId}),this.adapterId=e.adapterId,this.adapterName=e.adapterName,this.adapterSessionId=e.adapterSessionId,this.sessionId=e.sessionId,this.timeouts=e.timeouts??be([]),this.errorHandler=e.errorHandler,this.model=e.model,this.providerConfigId=e.providerConfigId,this.cwd=t,this.currentReasoningEffort=e.reasoningEffort,this.supportedReasoningLevels=e.supportedReasoningLevels,this.config=e,this.env=n(e?.env??xe.env)}getProcessingState(){return this.processingState}handlePause(e){this.updateProcessingState(`paused`)}captureSystemPrompt(e){e!==void 0&&(this.systemPrompt=e)}async updateProcessingState(e){let t=ct(this.processingState,e);if(!t)return;let{statesToEmit:n}=t;this.processingState=e;for(let e of n)await this.emittery.emit(`processingStateChanged`,e)}onProcessingStateChanged(e){return this.emittery.on(`processingStateChanged`,e)}async onceProcessingStateChanged(e){return this.emittery.once(`processingStateChanged`,e)}getConfirmedAdapterSessionId(){return this.adapterSessionId}createMessageHandle(e,t){let n=new K(t?.messageId??crypto.randomUUID(),e,t?.deliveryMode??`enqueue`,t?.messageHistory,t?.turnContext,t?.responseSchema,t?.internalRetry??!1,t?.cacheStrategy);return n.adapterSessionId=this.adapterSessionId,t?.internalRetry||this.config.onMessageSent?.(n),n}markToolRefreshPending(){}setCanonicalTurnNumber(e){if(!Number.isInteger(e)||e<1)throw RangeError(`setCanonicalTurnNumber: expected positive integer, got ${e}`);if(e<=this._currentTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} ≤ current (${this._currentTurnNumber})`);if(this._pendingCanonicalTurnNumber!==void 0&&e<this._pendingCanonicalTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} < pending (${this._pendingCanonicalTurnNumber})`);this._pendingCanonicalTurnNumber=e}consumeTurnNumber(){return this._pendingCanonicalTurnNumber===void 0?(this._currentTurnNumber+=1,this._currentTurnNumber):(this._currentTurnNumber=this._pendingCanonicalTurnNumber,this._pendingCanonicalTurnNumber=void 0,this._currentTurnNumber)}get currentTurnNumber(){return this._currentTurnNumber}get pendingTurnNumber(){return this._pendingCanonicalTurnNumber}async changeModelInPlace(e){return!1}async changeCwdInPlace(e){return!1}async changeReasoningInPlace(e){return!1}handleError(e,t=!1){let n=e instanceof Error?e:Error(String(e));console.warn(`[AIAgentConnector:handleError] pendingMessageHandle=${this.pendingMessageHandle?.messageId}, errorType=${n.name}, terminate=${t}`),this.errorHandler?.(n,t),this.pendingMessageHandle&&(this.pendingMessageHandle.markCompleted({outcome:`error`,error:n}),this.pendingMessageHandle=void 0,this.handlePause(`error`)),t&&this.abort()}handleToolApprovalDenied(e,t){e!==`not_requested`&&queueMicrotask(()=>{this.handleError(Error(`Tool use denied by approval handler: ${t}`),!1)})}getAgentId(){return this.agentId}getAdapterName(){return this.adapterName}getTimeoutMs(e){return this.timeouts.values[e]}requestToolApproval(e,t){return this.scopedBus.request(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId,sessionId:this.sessionId})}async requestToolApprovalWithHandling(e,t){return this.requestToolApproval(e,t).catch(e=>{let t=e;throw(e instanceof de||e instanceof ue)&&(t=Error(`Tool approval request failed, make sure that there's a handler registered: `+e.message)),this.handleError(t,!1),e})}emit(e,t){return this.scopedBus.emit(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId})}on(e,t,n){return this.filteredBus.on(e,t,n)}once(e,t){return this.filteredBus.once(e,t)}logLowLevelEvent(e){}},ut=class{config;bus;sessionId;currentTurn;constructor(e){this.config=e,this.bus=e.bus}async abort(){await this.currentTurn?.pause()}async sendMessage(e,t){throw Error(`Use processQueue instead`)}async getAdapterSessionId(){return this.sessionId}},J=class{state;bus;adapterId;adapterName;stateChangedCallback;constructor(e,t,n,r){this.bus=e,this.adapterId=t,this.adapterName=n,this.state=r}onStateChanged(e){this.stateChangedCallback=e}async transitionTo(e){let t=this.state;this.state=e,await this.emitStateChange(t,e),await this.stateChangedCallback?.(t,e)}getState(){return this.state}getMessageHandle(){return this.activeMessageHandle}markAcknowledged(){this.activeMessageHandle.markAcknowledged()}markCompleted(e){this.activeMessageHandle.markCompleted(e)}},dt=class extends J{activeMessageHandle;connectorBus;agentId;turnSubjects;aborted=!1;constructor(e,t){super(e.bus,e.adapterId,e.adapterName,t),this.connectorBus=e.bus,this.agentId=e.agentId,this.activeMessageHandle=e.messageHandle,this.turnSubjects=e.turnSubjects}async emitStateChange(e,t){let n={adapterId:this.adapterId,agentId:this.agentId,oldState:e,newState:t,timestamp:Date.now()};switch(await this.connectorBus.emit(this.turnSubjects.state_changed,n),t){case`turn_started`:await this.connectorBus.emit(this.turnSubjects.turn_started,n);break;case`step_started`:await this.connectorBus.emit(this.turnSubjects.step_started,n);break;case`step_finished`:await this.connectorBus.emit(this.turnSubjects.step_finished,n);break;case`turn_finished`:await this.connectorBus.emit(this.turnSubjects.turn_finished,n);break}}async start(){await this.transitionTo(`turn_started`)}async markStepStarted(){(this.state===`turn_started`||this.state===`step_finished`)&&await this.transitionTo(`step_started`)}async markStepFinished(){this.state===`step_started`&&await this.transitionTo(`step_finished`)}async markTurnFinished(){await this.transitionTo(`turn_finished`)}async pause(){if(this.state===`turn_finished`)return{stateBeforePause:this.state,turnEnded:!0};let e=this.state;return this.aborted=!0,{stateBeforePause:e,turnEnded:!1}}async resume(e){throw Error(`${this.adapterName} does not support resume - create new turn with merged content`)}isPaused(){return this.aborted}isCompleted(){return this.state===`turn_finished`}canAcceptImmediate(){return this.state!==`turn_finished`&&!this.aborted}},ft=class extends q{turnEventsWired=!1;getWireSessionConfig(){}wireSessionEvents(){if(this.turnEventsWired)return;this.turnEventsWired=!0;let e=this.getTurnSubjects(),t=this.getWireSessionConfig();this.on(e.turn_started,(async()=>{try{await t?.onTurnStarted?.()}catch(e){console.error(`[ProceduralAgentConnector] onTurnStarted hook failed:`,e)}await this.updateProcessingState(`turn_started`)})),this.on(e.step_started,(async()=>{await this.updateProcessingState(`step_started`)})),this.on(e.step_finished,(async()=>{await this.updateProcessingState(`step_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()&&await e.processQueue(t)})),this.on(e.turn_finished,(async()=>{await this.updateProcessingState(`turn_finished`);let e=async()=>{await this.updateProcessingState(`processing_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()?await e.processQueue(t):await this.updateProcessingState(`idle`)};t?.onTurnFinished?await t.onTurnFinished(e):await e()}))}async processUserMessages(e){let[t]=e,n=await this.ensureSession(),r=this.getSessionQueue();return r.enqueue(t),t.adapterSessionId=this.adapterSessionId,(this.getProcessingState()===`idle`||this.getProcessingState()===`paused`)&&await this.updateProcessingState(`active`),await n.processQueue(r),new Set([t])}async initialize(e){this.getSession()||(this.captureSystemPrompt(e?.systemPrompt),await this.ensureSession())}async start(e,t){this.captureSystemPrompt(t?.systemPrompt);let n=await this.sendMessage(e,t);return{adapterSessionId:await this.getAdapterSessionId(),messageHandle:n,agentId:this.agentId}}async complete(){for(;this.getProcessingState()!==`idle`&&this.getProcessingState()!==`paused`;)await this.onceProcessingStateChanged();return this.lastResult}acceptsImmediate(){return this.getSession()?.getCurrentTurn()?.canAcceptImmediate()??!1}};function pt(e,t,n,r,i,a,o){let s=t=>async(n,r)=>{let i=t,a={...r,agentId:i.agentId,adapterId:i.adapterId,adapterName:i.adapterName,adapterSessionId:i.adapterSessionId,messageId:i.messageId};await e.emit(n,a)};return t.on(n,(async t=>{let n=r?t.payload[r]:t.payload;if(!n||typeof n!=`object`)return;let c=a[n[i]];if(!c)return;let l=await o(n),u=s(l);if(typeof c==`function`)await c(l,u);else{let{sessionId:t,...n}=l;await e.emit(c,n)}}))}var Y=class{currentMessageId;currentTurnId;emitGlobal;constructor(e){this.emitGlobal=e.emitGlobal}getCurrentMessageId(){return this.currentMessageId}setCurrentTurnId(e){this.currentTurnId=e}clearCurrentTurnId(){this.currentTurnId=void 0}getCurrentTurnId(){return this.currentTurnId}acknowledge(e,t){let{messageId:n,message:r,mergedFrom:i}=e;this.currentMessageId=n,this.emitGlobal(T.user_message.acknowledged,{messageId:n,mergedFrom:i,...t!==void 0&&{turnId:t}}),this.emitGlobal(T.turn.started,{messageId:n,content:r,mergedFrom:i,...t!==void 0&&{turnId:t}})}complete(e,t,n){let{messageId:r}=e;this.currentMessageId===r&&(this.currentMessageId=void 0),this.currentTurnId===n&&(this.currentTurnId=void 0),this.emitGlobal(T.turn.completed,{messageId:r,message:t.result?.message,outcome:t.outcome,error:t.error instanceof Error?t.error.message:typeof t.error==`string`?t.error:void 0,...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation},...n!==void 0&&{turnId:n}}),this.emitGlobal(T.user_message.completed,{messageId:r,outcome:t.outcome,supersededBy:t.supersededBy,mergedInto:t.mergedInto,...n!==void 0&&{turnId:n}})}track(e,t,n,r){let i=r?r.turnId:this.currentTurnId;n!==void 0&&e.addCompletionTransform(async e=>{try{return await n(e)}catch(t){let n={status:`failed`,errors:[{message:t instanceof Error?t.message:`Structured output validation failed`,instancePath:``,schemaPath:`#`}]};return{...e,structuredOutputValidation:n}}}),e.waitForAcknowledgment().then(()=>{this.acknowledge(e,i)}),e.waitForCompletion().then(n=>{this.complete(e,n,i),t&&t(e.messageId,n,i)})}},X=class{pending=[];register(e,t,n){let r=n??crypto.randomUUID();return this.pending.push({correlationId:r,toolName:e,args:t,nativeId:n,registeredAt:Date.now()}),r}resolve(e){if(e.nativeId){let t=this.pending.findIndex(t=>t.nativeId===e.nativeId);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`nativeId`,toolName:e.toolName,args:e.args}}}if(e.toolName){let t=this.pending.findIndex(t=>t.toolName===e.toolName);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`toolName`,toolName:e.toolName,args:e.args}}}if(!e.nativeId&&!e.toolName&&this.pending.length>0){let[e]=this.pending.splice(0,1);return{correlationId:e.correlationId,strategy:`oldest`,toolName:e.toolName,args:e.args}}return{correlationId:null,strategy:`none`}}clear(){this.pending=[]}};function mt(e){if(e instanceof ce||e instanceof ie||e instanceof oe||e instanceof se)return e.code}function Z(e,t){if(t)return e?.find(e=>e.name===t)?.supportedReasoningLevels}function ht(e){let{config:t,overrides:n}=e,r=n?.providerContext??t.providerContext;r===void 0&&console.warn(`[AIAgent] No providerContext available for agent "${t.agentId}" — falling back to sentinel. This indicates the orchestrator did not populate a provider context before calling startAgent.`);let i=r??W();return{bus:t.adapterBus,globalBus:t.globalBus,agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:i,model:n?.model??t.model,cwd:n?.cwd??t.cwd,env:t.env,adapterSessionId:n?.adapterSessionId??t.adapterSessionId,sessionId:t.sessionId,resumeAdapterSessionId:n?.resumeAdapterSessionId??t.resumeAdapterSessionId,reasoningEffort:e.currentReasoningEffort,supportedReasoningLevels:Z(e.availableModels,n?.model??t.model),allowedTools:t.allowedTools,disallowedTools:t.disallowedTools,allowedDirectories:t.allowedDirectories,providerConfig:t.adapterConfig,mcpSessionContext:n?.mcpSessionContext??t.mcpSessionContext,toolLedger:t.toolLedger,...t.nativeFork!==void 0&&{nativeFork:t.nativeFork},ephemeral:t.ephemeral,clientId:t.clientId,clientProfileName:t.clientProfileName,harnessId:t.harnessId,errorHandler:(t,n)=>{let r=mt(t);e.emitError({error:t.message,...r&&{errorCategory:r}})}}}function gt(e){let{structuredOutputManager:t,getConnector:n,sessionId:r,messageHandle:i,responseSchema:a}=e;return async e=>{if(e.outcome!==`completed`)return e;let o=await t.validateTerminalResult({responseSchema:a,message:e.result?.message,sessionId:r,retryTurn:async({attemptNumber:e,validationErrors:t})=>{let r=n();return r?(await(await r.sendMessage(i.message,{deliveryMode:`enqueue`,internalRetry:!0,messageId:`${i.messageId}:structured-output-retry:${e}`,messageHistory:i.messageHistory,responseSchema:a,turnContext:{...i.turnContext,structuredOutputRetry:{attemptNumber:e,validationErrors:t,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}})).waitForCompletion()).result?.message??``:``}});return{...e,result:e.result!==null&&e.result!==void 0?{...e.result,message:o.message}:e.result,structuredOutputValidation:o.structuredOutputValidation}}}function Q(e,t,n){return!t||n.includes(`structuredOutput`)?e:{...e,structuredOutput:`Respond ONLY with valid JSON conforming to this schema:\n${JSON.stringify(t.schema,null,2)}\nDo not include any other text, markdown formatting, or explanation.`}}var $=class e{agentId;adapterId;sessionId;adapterCapabilities;globalBus;getConnector;shouldUseNativeResume;hasResumeTarget;setPendingStartMode;onMessageHandle;onBeforeDispatch;ephemeral;constructor(e){this.agentId=e.agentId,this.adapterId=e.adapterId,this.sessionId=e.sessionId,this.adapterCapabilities=e.adapterCapabilities??[],this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.shouldUseNativeResume=e.shouldUseNativeResume,this.hasResumeTarget=e.hasResumeTarget,this.setPendingStartMode=e.setPendingStartMode,this.onMessageHandle=e.onMessageHandle,this.onBeforeDispatch=e.onBeforeDispatch,this.ephemeral=e.ephemeral??!1}static deriveStartMode(e,t,n=!1){return e?.nativeFork?`fork`:e?t?`resume`:e.isFirstTurn?`fresh`:`rotation`:n?`resume`:`fresh`}deriveAndSetPendingStartMode(t){let n=this.shouldUseNativeResume(t),r=e.deriveStartMode(t,n,this.hasResumeTarget());return this.setPendingStartMode(r),n}async executeSendMessage(e){await this.onBeforeDispatch?.();let t=this.getConnector(),n=e.sessionContext?k.parse(e.sessionContext):void 0,r=await this.resolvePreUserMessageTurn({message:e.message,sessionContext:n,cwd:t.cwd,messageId:e.messageId}),i=this.deriveAndSetPendingStartMode(r.sessionContext),a=I(r.message),o=await t.sendMessage(a,{deliveryMode:e.deliveryMode,messageId:e.messageId,messageHistory:i?void 0:r.sessionContext?.messageHistory,cacheStrategy:i?void 0:r.sessionContext?.cacheStrategy,turnContext:Q(r.sessionContext?.turnContext,e.responseSchema,this.adapterCapabilities),...e.responseSchema!==void 0&&{responseSchema:e.responseSchema}});return this.firePostUserMessageHooks(o.messageId),await this.onMessageHandle(o,e.turnId),{messageId:o.messageId}}async executeStart(e,t,n,r){await this.onBeforeDispatch?.();let i=this.getConnector(),a=t?.sessionContext?k.parse(t.sessionContext):void 0,o=await this.resolvePreUserMessageTurn({message:e,sessionContext:a,cwd:i.cwd}),s=this.deriveAndSetPendingStartMode(o.sessionContext),c=I(o.message),l={systemPrompt:n,messageHistory:s?void 0:o.sessionContext?.messageHistory,cacheStrategy:s?void 0:o.sessionContext?.cacheStrategy,turnContext:Q(o.sessionContext?.turnContext,r,this.adapterCapabilities),...r!==void 0&&{responseSchema:r}},u=await i.start(c,l);return this.firePostUserMessageHooks(u.messageHandle.messageId),await this.onMessageHandle(u.messageHandle,void 0),u}async resolvePreUserMessageTurn(e){return this.ephemeral?{message:e.message,sessionContext:e.sessionContext}:ge({agentId:this.agentId,adapterId:this.adapterId,message:e.message,sessionId:this.sessionId,cwd:e.cwd,sessionContext:e.sessionContext,messageId:e.messageId},this.globalBus)}firePostUserMessageHooks(e){he({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,messageId:e},this.globalBus).catch(e=>{console.error(`[AIAgent] PostUserMessage hook error:`,e)})}};function _t(e){let t=e.globalBus.withFilter({agentId:e.agentId});return[t.on(T.sendMessage,e.onSendMessage),t.on(T.interrupt,e.onInterrupt),t.on(T.getCapabilities,t=>{t.setResult(e.getCapabilities())}),t.on(T.cwd.change,e.onCwdChange),t.on(T.model.change,e.onModelChange),t.on(T.mcp.servers.set,e.onMcpServersSet),t.on(T.credential.change,e.onCredentialChange)]}var vt=class{emitUsagePayload;emitContextWindowUpdatedPayload;emitToolUsePayload;emitToolOutputPayload;emitAdapterLogPayload;emitStepStartedPayload;emitStepFinishedPayload;toolCallTracker;getBlockIndex;incrementBlockIndex;getUsageModel;constructor(e){this.emitUsagePayload=e.emitUsage,this.emitContextWindowUpdatedPayload=e.emitContextWindowUpdated,this.emitToolUsePayload=e.emitToolUse,this.emitToolOutputPayload=e.emitToolOutput,this.emitAdapterLogPayload=e.emitAdapterLog,this.emitStepStartedPayload=e.emitStepStarted,this.emitStepFinishedPayload=e.emitStepFinished,this.toolCallTracker=e.toolCallTracker,this.getBlockIndex=e.getBlockIndex,this.incrementBlockIndex=e.incrementBlockIndex,this.getUsageModel=e.getUsageModel}async trackUsage(e){await this.emitUsagePayload({...e,model:this.getUsageModel()??`unknown`})}async emitContextWindowUpdate(e){let{currentTokens:t,maxTokens:n,cachedTokens:r}=e,i=n>0&&Number.isFinite(n)&&Number.isFinite(t),a=i?Math.min(100,t/n*100):0,o=i?a>=80?`critical`:a>=60?`warn`:`ok`:`critical`;await this.emitContextWindowUpdatedPayload({currentTokens:t,maxTokens:n,cachedTokens:r,percentage:a,level:o})}async emitToolUse(e,t,n){let r=this.toolCallTracker.register(e,t,n);return await this.emitToolUsePayload({toolName:e,args:t,toolCallId:r}),r}async emitToolOutput(e,t){let{correlationId:n,strategy:r,toolName:i,args:a}=this.toolCallTracker.resolve(t);if(!n){await this.emitAdapterLogPayload({level:`warn`,message:`Tool output arrived with no pending tool calls. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()});let n=crypto.randomUUID();return await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:t.toolName??i}),{toolCallId:n,toolName:t.toolName??i??`unknown`}}return r===`oldest`&&await this.emitAdapterLogPayload({level:`warn`,message:`Tool output correlation used fallback. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()}),await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:i,args:a}),{toolCallId:n,toolName:i??`unknown`,args:a}}async emitStepStarted(e,t,n){await this.emitStepStartedPayload({stepType:e,blockIndex:this.getBlockIndex(),blockData:t,content:n})}async emitStepFinished(e,t){await this.emitStepFinishedPayload({stepType:e,blockIndex:this.getBlockIndex(),content:t}),this.incrementBlockIndex()}},yt=class{sessionClosedEmitted=!1;agentStartedEmitted=!1;agentCompleteEmitted=!1;pendingErrorCategory;config;constructor(e){this.config=e}async emitStart(e){this.agentStartedEmitted=!0,this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0,await this.config.emitStarted(e)}resetTurnState(){this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0}async emitCompletion(e){if(this.agentCompleteEmitted)return;await this.config.onBeforeEmitCompletion(),this.agentCompleteEmitted=!0,this.config.clearToolCallTracker();let t=this.pendingErrorCategory;this.pendingErrorCategory=void 0,this.config.globalBus.requestOptional(j.updateStatus,{agentId:this.config.agentId,status:`idle`}),await this.config.emitComplete({...e,...t&&{errorCategory:t}})}emitError(e){this.config.clearToolCallTracker(),this.pendingErrorCategory=e.errorCategory}emitSessionClosed(e){this.sessionClosedEmitted||(this.sessionClosedEmitted=!0,this.config.emitSessionClosed({reason:e}).catch(e=>{console.warn(`[AIAgent] Failed to emit session.closed for agent ${this.config.agentId}:`,e)}))}},bt=class{config;constructor(e){this.config=e}resolveConfirmedAdapterSessionId(){let e=this.config.getConnectorAdapterSessionId()??this.config.getLastKnownAdapterSessionId();return e!==void 0&&this.config.setLastKnownAdapterSessionId(e),e}resolveEventMetadata(e,t){if(!t)return{};let n=this.config.getEventMetadataDefaults();return{clientId:e.clientId??n.clientId,providerConfigId:e.providerConfigId??n.providerConfigId,occurredAt:e.occurredAt??n.occurredAt}}async enrichPayload(e,t,n){let r=e,i=t??this.config.getCurrentMessageId(),a=r.turnId??this.config.getCurrentTurnId(),o=this.resolveConfirmedAdapterSessionId(),{clientId:s,providerConfigId:c,occurredAt:l}=this.resolveEventMetadata(r,n?.includeEventMetadata??!0),u=this.config.getAgentContextBase();return{...e,agentId:u.agentId,adapterId:u.adapterId,adapterName:u.adapterName,...o!==void 0&&{adapterSessionId:o},...i!==void 0&&{messageId:i},...a!==void 0&&{turnId:a},...u.sessionId!==void 0&&{sessionId:u.sessionId},...s!==void 0&&{clientId:s},...c!==void 0&&{providerConfigId:c},...l!==void 0&&{occurredAt:l}}}async emitGlobal(e,t,n){let r=await this.enrichPayload(t,t.messageId,n);await this.config.globalBus.emit(e,r)}},xt=class{queuedSequences=new Map;appliedSequences=new Map;barrier=Promise.resolve();queue(e,t){if(!Number.isSafeInteger(t)||t<0)return!1;let n=this.appliedSequences.get(e);if(n!==void 0&&t<=n)return!1;let r=this.queuedSequences.get(e);return r!==void 0&&t<=r?!1:(this.queuedSequences.set(e,t),!0)}isLatest(e,t){return this.queuedSequences.get(e)===t}markApplied(e,t){let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.appliedSequences.set(e,t),this.queuedSequences.get(e)===t&&this.queuedSequences.delete(e)}release(e,t){if(this.queuedSequences.get(e)!==t)return;let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.queuedSequences.delete(e)}clear(e){this.queuedSequences.delete(e),this.appliedSequences.delete(e)}async runExclusive(e){let t=this.barrier,n;this.barrier=new Promise(e=>{n=e}),await t;try{return await e()}finally{n?.()}}};async function St(e){let{bus:t,agentId:n,currentModel:r,nextModel:i,skipWarning:a}=e;if(a)return{proceed:!0,requestEditHistory:!1};let o=await t.requestOptional(T.validateModelChange,{agentId:n,currentModel:r,nextModel:i});return o.handled?{proceed:o.data.proceed,requestEditHistory:o.data.requestEditHistory??!1}:{proceed:!0,requestEditHistory:!1}}var Ct=class{getConnector;swapConnector;setMcpSessionContext;stagedMcpServersSet;constructor(e){this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.setMcpSessionContext=e.setMcpSessionContext}async applyStagedMutation(){let e=this.stagedMcpServersSet;if(e===void 0)return;this.stagedMcpServersSet=void 0;let t=await this.handleMcpServersSet(e);if(!t.success)throw Error(`Failed to apply staged MCP server replacement: ${t.reason??`unknown error`}`)}async handleMcpServersSet(e){if(this.getConnector().getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedMcpServersSet={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0}):{success:!1,reason:`turn_active`};try{return await this.swapConnector({mcpSessionContext:e.mcpSessionContext}),this.setMcpSessionContext(e.mcpSessionContext),{success:!0,swapped:!0}}catch(e){return{success:!1,reason:`mcp_servers_set_failed: ${e.message}`}}}},wt=class{agentId;sessionId;globalBus;getConnector;swapConnector;emitCwdChanged;emitModelChanged;getProviderContext;setProviderContext;setReasoningEffort;setMcpSessionContext;resolveSupportedReasoningLevels;mcpServersMutationManager;credentialChangeSequencer=new xt;stagedModelChange;constructor(e){this.agentId=e.agentId,this.sessionId=e.sessionId,this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.emitCwdChanged=e.emitCwdChanged,this.emitModelChanged=e.emitModelChanged,this.getProviderContext=e.getProviderContext,this.setProviderContext=e.setProviderContext,this.setReasoningEffort=e.setReasoningEffort,this.setMcpSessionContext=e.setMcpSessionContext,this.resolveSupportedReasoningLevels=e.resolveSupportedReasoningLevels,this.mcpServersMutationManager=new Ct({getConnector:this.getConnector,swapConnector:this.swapConnector,setMcpSessionContext:this.setMcpSessionContext})}async handleCwdChange(e){let t=this.getConnector(),{newCwd:n}=e;if(t.cwd===n)return{success:!0};if(t.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let e=t.cwd;return await t.changeCwdInPlace(n).catch(()=>!1)?t.cwd=n:await this.swapConnector({cwd:n}),await this.persistRuntimeMutation({cwd:n}),await this.emitCwdChanged({previousCwd:e,newCwd:n}),{success:!0,previousCwd:e}}catch(e){return{success:!1,reason:`cwd_change_failed: ${e.message}`}}}async applyStagedMutations(){if(this.getConnector().getProcessingState()!==`idle`)return;let e=this.stagedModelChange;if(e!==void 0){this.stagedModelChange=void 0;let t=await this.handleModelChange(e);if(!t.success)throw Error(`Failed to apply staged model change: ${t.reason??`unknown error`}`)}await this.mcpServersMutationManager.applyStagedMutation()}async handleMcpServersSet(e){return this.mcpServersMutationManager.handleMcpServersSet(e)}async handleModelChange(e){let t=this.getConnector(),{newModel:n,reasoningEffort:r,skipWarning:i}=e,a=e.providerContext,o=t.model,s=t.currentReasoningEffort,c=this.getProviderContext(),l=this.hasProviderContextChanged(c,a);if(!n&&!r&&!l)return{success:!0,swapped:!1};if(t.getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedModelChange={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0,...n!==void 0&&{model:n}}):{success:!1,reason:`turn_active`};if(!n&&!l)return this.handleReasoningOnlyChange(t,o,s,r);let u=n??o;return o===u&&!l?r===void 0?{success:!0,swapped:!1}:this.handleReasoningOnlyChange(t,o,s,r):this.handleModelSwap({connector:t,currentModel:o,newModel:u,reasoningEffort:r,previousReasoningEffort:s,providerContext:a,isProviderChange:l,skipWarning:i})}async handleReasoningOnlyChange(e,t,n,r){if(e.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let i=await e.changeReasoningInPlace(r).catch(()=>!1);i||await this.swapConnector({model:e.model});let a=this.getConnector(),o=this.resolveReasoningEffort(r,n,a.supportedReasoningLevels);return a.currentReasoningEffort=o,this.setReasoningEffort(o),await this.emitModelChanged({previousModel:t,newModel:t,previousReasoningEffort:n,newReasoningEffort:o}),{success:!0,swapped:!i,model:t,appliedReasoningEffort:o,supportedReasoningLevels:a.supportedReasoningLevels}}catch(e){return{success:!1,reason:`reasoning_change_failed: ${e.message}`}}}async handleModelSwap(e){let{connector:t,currentModel:n,newModel:r,reasoningEffort:i,previousReasoningEffort:a,providerContext:o,isProviderChange:s,skipWarning:c}=e;try{let e=!s&&await t.changeModelInPlace(r).catch(()=>!1);if(e)t.model=r,t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r);else{let e=await this.confirmConnectorSwap(n,r,c);if(!e.proceed)return e.result;await this.swapConnector({model:r,...o&&{providerContext:o}}),o&&this.setProviderContext(o);let t=this.getConnector();t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r),e.requestEditHistory&&this.sessionId&&await this.globalBus.emit(A.connectorSwap.editRequested,{sessionId:this.sessionId,agentId:this.agentId,previousModel:n,newModel:r})}let l=this.getConnector(),u=l.supportedReasoningLevels,d=this.resolveReasoningEffort(i,a,u);l.currentReasoningEffort=d,this.setReasoningEffort(d),d!==void 0&&await l.changeReasoningInPlace(d).catch(()=>{});let f=n!==r||d!==a;return(n!==r||s)&&await this.persistRuntimeMutation({...n!==r&&{model:r},...s&&o&&{providerConfigId:o.providerConfigId}}),f&&await this.emitModelChanged({previousModel:n,newModel:r,previousReasoningEffort:a,newReasoningEffort:d}),{success:!0,swapped:!e,model:r,appliedReasoningEffort:d,supportedReasoningLevels:u}}catch(e){return{success:!1,reason:`model_change_failed: ${e.message}`}}}resolveReasoningEffort(e,t,n){if(!n||Object.keys(n).length===0)return;let r=e=>e in n;return e!==void 0&&r(e)?e:t!==void 0&&r(t)?t:r(`medium`)?`medium`:Object.keys(n)[0]}async confirmConnectorSwap(e,t,n){if(e===t)return{proceed:!0,requestEditHistory:!1};let r=await St({bus:this.globalBus,agentId:this.agentId,currentModel:e,nextModel:t,skipWarning:n});return r.proceed?{proceed:!0,requestEditHistory:r.requestEditHistory}:{proceed:!1,result:{success:!1,reason:`cancelled`}}}hasProviderContextChanged(e,t){return t===void 0?!1:e===void 0?!0:e.providerConfigId!==t.providerConfigId||e.definitionId!==t.definitionId||!this.haveEqualStringRecords(e.endpointOverrides,t.endpointOverrides)||!this.haveEqualStringRecords(e.credentialEnvVars,t.credentialEnvVars)||!this.haveEqualStringRecords(e.credentialRefs,t.credentialRefs)}haveEqualStringRecords(e,t){if(e===t)return!0;let n=e?Object.keys(e):[],r=t?Object.keys(t):[];return n.length===r.length?n.every(n=>e[n]===t[n]):!1}async handleCredentialChanged(e){let t=this.getProviderContext()?.providerConfigId;return t&&t!==e.providerConfigId?{success:!1,reason:`provider_mismatch`}:this.credentialChangeSequencer.queue(e.providerConfigId,e.changeSequence)?this.credentialChangeSequencer.runExclusive(async()=>{let t=this.getProviderContext()?.providerConfigId;if(t&&t!==e.providerConfigId)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`provider_mismatch`};if(!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))return{success:!1,reason:`stale_change`};let n=this.getConnector();if(n.getProcessingState()!==`idle`)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`};let r=e.credentialRefs;try{let t=await ve(this.globalBus,e.providerConfigId);return t.credentialRefs=r,!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence)||(await _e(this.globalBus,t),!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))?{success:!1,reason:`stale_change`}:n.getProcessingState()===`idle`?(await this.swapConnector({providerContext:t}),this.setProviderContext(t),this.credentialChangeSequencer.markApplied(e.providerConfigId,e.changeSequence),await this.persistRuntimeMutation({providerConfigId:t.providerConfigId}),{success:!0,swapped:!0}):(this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`})}catch(t){return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`credential_swap_failed: ${t instanceof Error?t.message:String(t)}`}}}):{success:!1,reason:`stale_change`}}async persistRuntimeMutation(e){await this.globalBus.requestOptional(j.updateRuntime,{agentId:this.agentId,cwd:e.cwd,model:e.model,providerConfigId:e.providerConfigId})}},Tt=class{connectorWiringCleanups=[];config;constructor(e){this.config=e}addConnectorWiringCleanup(e){this.connectorWiringCleanups.push(e)}clearConnectorWiring(){for(let e of this.connectorWiringCleanups)try{e()}catch(e){console.warn(`[AIAgent] Connector wiring cleanup failed for agent ${this.config.agentId}:`,e)}this.connectorWiringCleanups=[]}async wireAllConnectorEvents(e){let t=e.onProcessingStateChanged(e=>{e===`idle`&&this.config.emitIdle().catch(e=>{console.warn(`[AIAgent] Failed to emit idle for agent ${this.config.agentId}:`,e)})});this.addConnectorWiringCleanup(t),await this.config.wireEvents(e)}async swapConnector(e){let t=this.config.getConnector();if(t.getProcessingState()!==`idle`)throw Error(`Cannot swap connector while processing (state: ${t.getProcessingState()})`);let n=this.config.buildConfigInput({cwd:e?.cwd??t.cwd,model:e?.model??t.model,...e?.providerContext&&{providerContext:e.providerContext},...e?.mcpSessionContext&&{mcpSessionContext:e.mcpSessionContext},adapterSessionId:e?.adapterSessionId??crypto.randomUUID(),...e?.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:e.resumeAdapterSessionId}}),r=await this.config.configFactory(n),i=await this.config.connectorFactory({...r,onMessageSent:this.config.createOnMessageSent()}),a=this.connectorWiringCleanups;this.connectorWiringCleanups=[];try{await this.wireAllConnectorEvents(i),await i.initialize({systemPrompt:this.config.getRuntimeSystemPrompt()})}catch(e){try{await i.close()}catch(e){console.warn(`[AIAgent] Failed to close newly-created connector for agent ${this.config.agentId}:`,e)}throw this.connectorWiringCleanups=a,e}let o=i.getConfirmedAdapterSessionId();o!==void 0&&this.config.setLastKnownAdapterSessionId(o);for(let e of a)try{e()}catch(e){console.warn(`[AIAgent] Previous connector cleanup failed during swap for agent ${this.config.agentId}:`,e)}let s=t;this.config.setConnector(i);try{await s.close()}catch(e){console.warn(`[AIAgent] Failed to close previous connector for agent ${this.config.agentId}:`,e)}}};function Et(e){return new bt({globalBus:e.globalBus,getAgentContextBase:e.getAgentContextBase,getCurrentMessageId:()=>e.lifecycleTracker.getCurrentMessageId(),getCurrentTurnId:()=>e.lifecycleTracker.getCurrentTurnId(),getConnectorAdapterSessionId:e.getConnectorAdapterSessionId,getLastKnownAdapterSessionId:e.getLastKnownAdapterSessionId,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId,getEventMetadataDefaults:e.getEventMetadataDefaults})}function Dt(e){return new vt({emitUsage:async t=>{await e.emitGlobal(T.usage,t)},emitContextWindowUpdated:async t=>{await e.emitGlobal(T.contextWindow.updated,t)},emitToolUse:async t=>{await e.emitGlobal(T.tool.use,t)},emitToolOutput:async t=>{await e.emitGlobal(T.tool.output,t)},emitAdapterLog:async t=>{await e.emitGlobal(w.log,t,{includeEventMetadata:!1})},emitStepStarted:async t=>{await e.emitGlobal(T.step.started,t)},emitStepFinished:async t=>{await e.emitGlobal(T.step.finished,t)},toolCallTracker:e.toolCallTracker,getBlockIndex:e.getBlockIndex,incrementBlockIndex:e.incrementBlockIndex,getUsageModel:e.getUsageModel})}function Ot(e){return new yt({agentId:e.agentId,globalBus:e.globalBus,emitStarted:async t=>{await e.emitGlobal(T.started,t)},emitComplete:async t=>{await e.emitGlobal(T.complete,t)},emitSessionClosed:async t=>{await e.emitGlobal(T.session.closed,t)},onBeforeEmitCompletion:e.onBeforeEmitCompletion,clearToolCallTracker:e.clearToolCallTracker})}function kt(e){return new $(e)}function At(e){return new wt({agentId:e.agentId,sessionId:e.sessionId,globalBus:e.globalBus,getConnector:e.getConnector,swapConnector:e.swapConnector,emitCwdChanged:async t=>{await e.emitGlobal(T.cwd.changed,t)},emitModelChanged:async t=>{await e.emitGlobal(T.model.changed,t)},getProviderContext:e.getProviderContext,setProviderContext:e.setProviderContext,setReasoningEffort:e.setReasoningEffort,setMcpSessionContext:e.setMcpSessionContext,resolveSupportedReasoningLevels:e.resolveSupportedReasoningLevels})}function jt(e){return new Tt({agentId:e.agentId,buildConfigInput:e.buildConfigInput,configFactory:e.configFactory,connectorFactory:e.connectorFactory,createOnMessageSent:e.createOnMessageSent,wireEvents:e.wireEvents,emitIdle:async()=>{await e.emitGlobal(T.idle,{})},getConnector:e.getConnector,setConnector:e.setConnector,getRuntimeSystemPrompt:e.getRuntimeSystemPrompt,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId})}var Mt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicAnchor=void 0;let t=x(),n=f(),r=d(),i=b(),a={keyword:`$dynamicAnchor`,schemaType:`string`,code:e=>o(e,e.schema)};function o(e,r){let{gen:i,it:a}=e;a.schemaEnv.root.dynamicAnchors[r]=!0;let o=(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(r)}`,c=a.errSchemaPath===`#`?a.validateName:s(e);i.if((0,t._)`!${o}`,()=>i.assign(o,c))}e.dynamicAnchor=o;function s(e){let{schemaEnv:t,schema:n,self:a}=e.it,{root:o,baseId:s,localRefs:c,meta:l}=t.root,{schemaId:u}=a.opts,d=new r.SchemaEnv({schema:n,schemaId:u,root:o,baseId:s,localRefs:c,meta:l});return r.compileSchema.call(a,d),(0,i.getValidate)(e,d)}e.default=a})),Nt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicRef=void 0;let t=x(),n=f(),r=b(),i={keyword:`$dynamicRef`,schemaType:`string`,code:e=>a(e,e.schema)};function a(e,i){let{gen:a,keyword:o,it:s}=e;if(i[0]!==`#`)throw Error(`"${o}" only supports hash fragment reference`);let c=i.slice(1);if(s.allErrors)l();else{let t=a.let(`valid`,!1);l(t),e.ok(t)}function l(e){if(s.schemaEnv.root.dynamicAnchors[c]){let r=a.let(`_v`,(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(c)}`);a.if(r,u(r,e),u(s.validateName,e))}else u(s.validateName,e)()}function u(t,n){return n?()=>a.block(()=>{(0,r.callRef)(e,t),a.let(n,!0)}):()=>(0,r.callRef)(e,t)}}e.dynamicRef=a,e.default=i})),Pt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Mt(),n=s();e.default={keyword:`$recursiveAnchor`,schemaType:`boolean`,code(e){e.schema?(0,t.dynamicAnchor)(e,``):(0,n.checkStrictMode)(e.it,`$recursiveAnchor: false is ignored`)}}})),Ft=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Nt();e.default={keyword:`$recursiveRef`,schemaType:`string`,code:e=>(0,t.dynamicRef)(e,e.schema)}})),It=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Mt(),n=Nt(),r=Pt(),i=Ft();e.default=[t.default,n.default,r.default,i.default]})),Lt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=y();e.default={keyword:`dependentRequired`,type:`object`,schemaType:`object`,error:t.error,code:e=>(0,t.validatePropertyDeps)(e)}})),Rt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=y();e.default={keyword:`dependentSchemas`,type:`object`,schemaType:`object`,code:e=>(0,t.validateSchemaDeps)(e)}})),zt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=s();e.default={keyword:[`maxContains`,`minContains`],type:`array`,schemaType:`number`,code({keyword:e,parentSchema:n,it:r}){n.contains===void 0&&(0,t.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}}})),Bt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Lt(),n=Rt(),r=zt();e.default=[t.default,n.default,r.default]})),Vt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=x(),n=s(),r=f();e.default={keyword:`unevaluatedProperties`,type:`object`,schemaType:[`boolean`,`object`],trackErrors:!0,error:{message:`must NOT have unevaluated properties`,params:({params:e})=>(0,t._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},code(e){let{gen:i,schema:a,data:o,errsCount:s,it:c}=e;if(!s)throw Error(`ajv implementation error`);let{allErrors:l,props:u}=c;u instanceof t.Name?i.if((0,t._)`${u} !== true`,()=>i.forIn(`key`,o,e=>i.if(f(u,e),()=>d(e)))):u!==!0&&i.forIn(`key`,o,e=>u===void 0?d(e):i.if(p(u,e),()=>d(e))),c.props=!0,e.ok((0,t._)`${s} === ${r.default.errors}`);function d(r){if(a===!1){e.setParams({unevaluatedProperty:r}),e.error(),l||i.break();return}if(!(0,n.alwaysValidSchema)(c,a)){let a=i.name(`valid`);e.subschema({keyword:`unevaluatedProperties`,dataProp:r,dataPropType:n.Type.Str},a),l||i.if((0,t.not)(a),()=>i.break())}}function f(e,n){return(0,t._)`!${e} || !${e}[${n}]`}function p(e,n){let r=[];for(let i in e)e[i]===!0&&r.push((0,t._)`${n} !== ${i}`);return(0,t.and)(...r)}}}})),Ht=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=x(),n=s();e.default={keyword:`unevaluatedItems`,type:`array`,schemaType:[`boolean`,`object`],error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{gen:r,schema:i,data:a,it:o}=e,s=o.items||0;if(s===!0)return;let c=r.const(`len`,(0,t._)`${a}.length`);if(i===!1)e.setParams({len:s}),e.fail((0,t._)`${c} > ${s}`);else if(typeof i==`object`&&!(0,n.alwaysValidSchema)(o,i)){let n=r.var(`valid`,(0,t._)`${c} <= ${s}`);r.if((0,t.not)(n),()=>l(n,s)),e.ok(n)}o.items=!0;function l(i,a){r.forRange(`i`,a,c,a=>{e.subschema({keyword:`unevaluatedItems`,dataProp:a,dataPropType:n.Type.Num},i),o.allErrors||r.if((0,t.not)(i),()=>r.break())})}}}})),Ut=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Vt(),n=Ht();e.default=[t.default,n.default]})),Wt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/schema`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format`},{$ref:`meta/content`}],type:[`object`,`boolean`],properties:{definitions:{$comment:`While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.`,type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},dependencies:{$comment:`"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"`,type:`object`,additionalProperties:{anyOf:[{$recursiveRef:`#`},{$ref:`meta/validation#/$defs/stringArray`}]}}}}})),Gt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/applicator":!0},$recursiveAnchor:!0,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{additionalItems:{$recursiveRef:`#`},unevaluatedItems:{$recursiveRef:`#`},items:{anyOf:[{$recursiveRef:`#`},{$ref:`#/$defs/schemaArray`}]},contains:{$recursiveRef:`#`},additionalProperties:{$recursiveRef:`#`},unevaluatedProperties:{$recursiveRef:`#`},properties:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$recursiveRef:`#`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$recursiveRef:`#`}},propertyNames:{$recursiveRef:`#`},if:{$recursiveRef:`#`},then:{$recursiveRef:`#`},else:{$recursiveRef:`#`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$recursiveRef:`#`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$recursiveRef:`#`}}}}})),Kt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/content`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentMediaType:{type:`string`},contentEncoding:{type:`string`},contentSchema:{$recursiveRef:`#`}}}})),qt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/core`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0},$recursiveAnchor:!0,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{type:`string`,format:`uri`},$anchor:{type:`string`,pattern:`^[A-Za-z][-A-Za-z0-9.:_]*$`},$ref:{type:`string`,format:`uri-reference`},$recursiveRef:{type:`string`,format:`uri-reference`},$recursiveAnchor:{type:`boolean`,default:!1},$vocabulary:{type:`object`,propertyNames:{type:`string`,format:`uri`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}}}}})),Jt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/format`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/format":!0},$recursiveAnchor:!0,title:`Format vocabulary meta-schema`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),Yt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/meta-data":!0},$recursiveAnchor:!0,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),Xt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/validation":!0},$recursiveAnchor:!0,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}},const:!0,enum:{type:`array`,items:!0},type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),Zt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Wt(),n=Gt(),r=Kt(),i=qt(),a=Jt(),o=Yt(),s=Xt(),c=[`/properties`];function l(e){return[t,n,r,i,l(this,a),o,l(this,s)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function l(t,n){return e?t.$dataMetaSchema(n,c):n}}e.default=l})),Qt=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2019=void 0;let n=u(),r=te(),i=It(),a=Bt(),o=Ut(),s=_(),c=Zt(),l=`https://json-schema.org/draft/2019-09/schema`;var d=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),this.addVocabulary(i.default),r.default.forEach(e=>this.addVocabulary(e)),this.addVocabulary(a.default),this.addVocabulary(o.default),this.opts.discriminator&&this.addKeyword(s.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(c.default.call(this,e),this.refs[`http://json-schema.org/schema`]=l)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}};e.Ajv2019=d,t.exports=e=d,t.exports.Ajv2019=d,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=d;var f=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return f.KeywordCxt}});var m=x();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return m._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return m.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return m.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return m.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return m.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return m.CodeGen}});var h=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return h.default}});var ee=v();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return ee.default}})})),$t=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=h(),n=l(),r=ee(),i=It(),a=Bt(),o=Ut(),s=c(),u=m();e.default=[i.default,t.default,n.default,(0,r.default)(!0),s.default,u.metadataVocabulary,u.contentVocabulary,a.default,o.default]})),en=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}}})),tn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}}})),nn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}}})),rn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}}})),an=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}}})),on=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),sn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),cn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),ln=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=en(),n=tn(),r=nn(),i=rn(),a=an(),o=on(),s=sn(),c=cn(),l=[`/properties`];function u(e){return[t,n,r,i,a,u(this,o),s,u(this,c)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function u(t,n){return e?t.$dataMetaSchema(n,l):n}}e.default=u})),un=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2020=void 0;let n=u(),r=$t(),i=_(),a=ln(),o=`https://json-schema.org/draft/2020-12/schema`;var s=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),r.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(a.default.call(this,e),this.refs[`http://json-schema.org/schema`]=o)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}};e.Ajv2020=s,t.exports=e=s,t.exports.Ajv2020=s,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=s;var c=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return c.KeywordCxt}});var l=x();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return l._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return l.CodeGen}});var d=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return d.default}});var f=v();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return f.default}})})),dn=e(ne(),1),fn=e(Qt(),1),pn=e(un(),1);const mn=new Set([`https://json-schema.org/draft/2019-09/schema`,`https://json-schema.org/draft/2019-09/schema#`]),hn=new Set([`https://json-schema.org/draft/2020-12/schema`,`https://json-schema.org/draft/2020-12/schema#`]);var gn=class{bus;agentId;adapterId;adapterCapabilities;draft07Ajv=new dn.default({allErrors:!0,strict:!1});draft2019Ajv=new fn.default({allErrors:!0,strict:!1});draft2020Ajv=new pn.default({allErrors:!0,strict:!1});validatorCache=new WeakMap;constructor(e){this.bus=e.bus,this.agentId=e.agentId,this.adapterId=e.adapterId,this.adapterCapabilities=e.adapterCapabilities}registerDefaultHandlers(){let e=this.bus.withFilter({agentId:this.agentId});return[e.on(T.structuredOutput.retryPolicy,e=>{e.setResult({maxRetries:0})},{priority:-1e3}),e.on(T.structuredOutput.enforce,e=>{e.setResult({enforced:!1,error:`No enforce handler registered`})},{priority:-1e3})]}async validateTerminalResult(e){let{responseSchema:t,message:n,sessionId:r}=e,i=this.validate(t,n);if(i.valid)return{message:n,structuredOutputValidation:{status:`passed`}};let a=n??``,o=i.errors;if(e.retryTurn){let n=await this.bus.requestOptional(T.structuredOutput.retryPolicy,{agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.adapterCapabilities,responseSchema:t,attemptNumber:1}),r=n.handled?n.data.maxRetries:0;for(let n=1;n<=r;n+=1){a=await e.retryTurn({attemptNumber:n,validationErrors:o});let r=this.validate(t,a);if(r.valid)return{message:a,structuredOutputValidation:{status:`passed`}};o=r.errors}}let s=await this.bus.requestOptional(T.structuredOutput.enforce,{agentId:this.agentId,adapterId:this.adapterId,sessionId:r,responseSchema:t,rawOutput:a,validationErrors:o,adapterHasCapability:this.adapterCapabilities.includes(`structuredOutput`)});if(s.handled&&s.data.enforced===!0&&s.data.output!==void 0){let{valid:e}=this.validate(t,s.data.output);if(e)return{message:s.data.output,structuredOutputValidation:{status:`enforced`}}}return{message:a,structuredOutputValidation:{status:`failed`,errors:o}}}validate(e,t){if(t===void 0||t===``)return{valid:!1,errors:[{message:`Expected JSON output but received empty string`,instancePath:``,schemaPath:`#`}]};let n;try{n=JSON.parse(t)}catch{return{valid:!1,errors:[{message:`Output is not valid JSON: ${t.slice(0,120)}`,instancePath:``,schemaPath:`#`}]}}let r=this.getValidator(e);if(r(n))return{valid:!0,errors:[]};let i=this.normalizeErrors(r.errors??[]);return i.length===0&&i.push({message:`Schema validation failed`,instancePath:``,schemaPath:`#`}),{valid:!1,errors:i}}getValidator(e){let t=this.validatorCache.get(e.schema);if(t!==void 0)return t;let n=this.getValidatorCompileTarget(e.schema),r;try{r=n.compiler.compile(n.schema)}catch(e){r=this.createCompileFailureValidator(e)}return this.validatorCache.set(e.schema,r),r}createCompileFailureValidator(e){let t=[{keyword:`schema`,instancePath:``,schemaPath:`#`,params:{},message:`Failed to compile response schema: ${e instanceof Error?e.message:String(e)}`}],n=this.draft07Ajv.compile({});return Object.assign(e=>!1,{errors:t,schema:n.schema,schemaEnv:n.schemaEnv})}getValidatorCompileTarget(e){let t=this.readSchemaUri(e),n=t===void 0?void 0:this.normalizeDraft202012Uri(t),r=t===void 0?void 0:this.normalizeDraft201909Uri(t);return n!==void 0&&hn.has(n)?{compiler:this.draft2020Ajv,schema:this.withSchemaUri(e,n)}:r!==void 0&&mn.has(r)?{compiler:this.draft2019Ajv,schema:this.withSchemaUri(e,r)}:{compiler:this.draft07Ajv,schema:this.withoutSchemaUri(e)}}readSchemaUri(e){let t=e.$schema;return typeof t==`string`?t:void 0}normalizeDraft202012Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2020-12\/schema#?$/,e=>e.replace(`http://`,`https://`))}normalizeDraft201909Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2019-09\/schema#?$/,e=>e.replace(`http://`,`https://`))}withSchemaUri(e,t){return e.$schema===t?e:{...e,$schema:t}}withoutSchemaUri(e){if(e.$schema===void 0)return e;let t={...e};return delete t.$schema,t}normalizeErrors(e){return e.map(e=>({message:e.message??`Validation error`,instancePath:e.instancePath,schemaPath:e.schemaPath}))}},_n=class{connector;confirmedModel;initialModel;lastKnownAdapterSessionId;busHandlerCleanups=[];initialized=!1;runtimeSystemPrompt;lifecycleTracker=new Y({emitGlobal:this.emitGlobal.bind(this)});toolCallTracker=new X;eventBridge;turnExecutor;runtimeMutationManager;connectorLifecycleManager;payloadEmitter;lifecycleEmitter;structuredOutputManager;latestMessageCompletion;currentBlockIndex=0;pendingStartMode;config;availableModels;constructor(e){this.config={...e,globalBus:e.globalBus??C},this.availableModels=e.availableModels;let t=e=>{this.lastKnownAdapterSessionId=e};this.payloadEmitter=Et({globalBus:this.globalBus,getAgentContextBase:this.getAgentContextBase.bind(this),lifecycleTracker:this.lifecycleTracker,getConnectorAdapterSessionId:()=>this.connector?.getConfirmedAdapterSessionId(),getLastKnownAdapterSessionId:()=>this.lastKnownAdapterSessionId,setLastKnownAdapterSessionId:t,getEventMetadataDefaults:this.getEventMetadataDefaults.bind(this)});let n=this.payloadEmitter.emitGlobal.bind(this.payloadEmitter);this.eventBridge=Dt({emitGlobal:n,toolCallTracker:this.toolCallTracker,getBlockIndex:this.getBlockIndex.bind(this),incrementBlockIndex:this.incrementBlockIndex.bind(this),getUsageModel:()=>this.confirmedModel??this.initialModel}),this.turnExecutor=kt({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,adapterCapabilities:this.capabilities,globalBus:this.globalBus,getConnector:()=>this.connector,shouldUseNativeResume:this.shouldUseNativeResume.bind(this),hasResumeTarget:()=>this.config.resumeAdapterSessionId!==void 0,setPendingStartMode:this.setPendingStartMode.bind(this),onMessageHandle:this.onMessageHandle.bind(this),onBeforeDispatch:()=>this.runtimeMutationManager.applyStagedMutations(),ephemeral:this.config.ephemeral}),this.runtimeMutationManager=At({agentId:this.agentId,sessionId:this.sessionId,globalBus:this.globalBus,getConnector:()=>this.connector,swapConnector:this.swapConnector.bind(this),emitGlobal:n,getProviderContext:()=>this.config.providerContext,setProviderContext:e=>void(this.config.providerContext=e),setReasoningEffort:e=>void(this.config.reasoningEffort=e),setMcpSessionContext:e=>this.config.mcpSessionContext=e,resolveSupportedReasoningLevels:e=>Z(this.availableModels,e)}),this.connectorLifecycleManager=jt({agentId:this.agentId,buildConfigInput:this.buildConfigInput.bind(this),configFactory:this.config.configFactory,connectorFactory:this.config.connectorFactory,createOnMessageSent:this.createOnMessageSent.bind(this),wireEvents:this.wireEvents.bind(this),emitGlobal:n,getConnector:()=>this.connector,setConnector:e=>{this.connector=e},getRuntimeSystemPrompt:()=>this.runtimeSystemPrompt,setLastKnownAdapterSessionId:t}),this.lifecycleEmitter=Ot({agentId:this.agentId,globalBus:this.globalBus,emitGlobal:n,onBeforeEmitCompletion:this.onBeforeEmitCompletion.bind(this),clearToolCallTracker:()=>this.toolCallTracker.clear()}),this.structuredOutputManager=new gn({bus:this.globalBus,agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.capabilities})}getAgentContextBase(){return{agentId:this.agentId,adapterId:this.adapterId,adapterName:this.adapterName,sessionId:this.sessionId}}getEventMetadataDefaults(){return{clientId:this.config.clientId,providerConfigId:this.connector?.providerConfigId??this.config.providerContext?.providerConfigId,occurredAt:Date.now()}}get agentId(){return this.config.agentId}get adapterId(){return this.config.adapterId}get adapterName(){return this.config.adapterName}get capabilities(){return this.config.capabilities}get nativeTools(){return this.config.nativeTools}get sessionId(){return this.config.sessionId}get adapterSessionId(){return this.config.adapterSessionId}get globalBus(){return this.config.globalBus}async init(){if(this.initialized)throw Error(`AIAgent ${this.agentId} already initialized. init() can only be called once.`);let e=this.buildConfigInput(),t=await this.config.configFactory(e);this.connector=await this.config.connectorFactory({...t,onMessageSent:this.createOnMessageSent()}),this.config.nativeFork=void 0,this.busHandlerCleanups.push(..._t({globalBus:this.globalBus,agentId:this.agentId,onSendMessage:async e=>{await this.sendMessage(e)},onInterrupt:async e=>{await this.handleInterrupt(e)},getCapabilities:()=>({capabilities:this.capabilities,nativeTools:this.nativeTools,model:this.connector?.model??this.confirmedModel??this.initialModel}),onCwdChange:async e=>{e.setResult(await this.runtimeMutationManager.handleCwdChange(e.payload))},onModelChange:async e=>{e.setResult(await this.runtimeMutationManager.handleModelChange(e.payload))},onMcpServersSet:async e=>{e.setResult(await this.runtimeMutationManager.handleMcpServersSet(e.payload))},onCredentialChange:async e=>{e.setResult(await this.runtimeMutationManager.handleCredentialChanged(e.payload))}}),...this.structuredOutputManager.registerDefaultHandlers()),this.sessionId&&this.busHandlerCleanups.push(this.globalBus.on(A.turn.started,e=>{e.payload.agentIds.includes(this.agentId)&&this.connector.setCanonicalTurnNumber(e.payload.turnNumber)},{filter:{sessionId:this.sessionId}})),this.busHandlerCleanups.push(this.globalBus.on(O.tools.updated,()=>{this.connector.markToolRefreshPending()}),this.globalBus.on(O.tools.enabled,()=>{this.connector.markToolRefreshPending()})),await this.connectorLifecycleManager.wireAllConnectorEvents(this.connector),this.initialized=!0}async emitStart(e){let t=this.pendingStartMode??`rotation`;this.pendingStartMode=void 0,this.currentBlockIndex=0,await this.lifecycleEmitter.emitStart({model:this.connector.model,cwd:this.connector.cwd,startMode:t,...e})}setPendingStartMode(e){this.pendingStartMode=e}async emitCompletion(e){await this.lifecycleEmitter.emitCompletion(e)}emitError(e){this.lifecycleEmitter.emitError(e)}emitSessionClosed(e){this.lifecycleEmitter.emitSessionClosed(e)}async enrichPayload(e){return this.payloadEmitter.enrichPayload(e)}async emitGlobal(e,t){await this.payloadEmitter.emitGlobal(e,t)}async trackUsage(e){await this.eventBridge.trackUsage(e)}getContextWindowSize(e){let t=e??this.confirmedModel??this.initialModel;if(!(!t||!this.availableModels))return this.availableModels.find(e=>e.name===t)?.contextWindowSize}async emitContextWindowUpdate(e){await this.eventBridge.emitContextWindowUpdate(e)}async emitToolUse(e,t,n){return this.eventBridge.emitToolUse(e,t,n)}async emitToolOutput(e,t){return this.eventBridge.emitToolOutput(e,t)}async emitStepStarted(e,t,n){await this.eventBridge.emitStepStarted(e,t,n)}async emitStepFinished(e,t){await this.eventBridge.emitStepFinished(e,t)}getBlockIndex(){return this.currentBlockIndex}incrementBlockIndex(){this.currentBlockIndex++}async sendMessage(e){this.globalBus.requestOptional(j.updateStatus,{agentId:this.agentId,status:`active`}),this.lifecycleTracker.setCurrentTurnId(e.payload.turnId);try{let t=await this.turnExecutor.executeSendMessage(e.payload);e.setResult(t)}catch(e){throw this.lifecycleTracker.clearCurrentTurnId(),e}}async handleInterrupt(e){try{await this.ensureConnector().interrupt(),e.setResult({success:!0})}catch(t){e.setResult({success:!1,reason:t instanceof Error?t.message:String(t)})}}addConnectorWiringCleanup(e){this.connectorLifecycleManager.addConnectorWiringCleanup(e)}addBusHandlerCleanup(e){this.busHandlerCleanups.push(e)}async swapConnector(e){await this.connectorLifecycleManager.swapConnector(e),e?.providerContext!==void 0&&(this.config.providerContext=e.providerContext),e?.mcpSessionContext!==void 0&&(this.config.mcpSessionContext=e.mcpSessionContext)}buildConfigInput(e){return ht({config:this.config,availableModels:this.availableModels,currentReasoningEffort:this.connector?.currentReasoningEffort??this.config.reasoningEffort,emitError:this.emitError.bind(this),overrides:e})}createOnMessageSent(){return e=>{this.emitGlobal(T.user_message.sent,{messageId:e.messageId,content:e.message,deliveryMode:e.deliveryMode})}}subscribeConnector(e,t,n,r){let i=e.on(t,n,r);this.connectorLifecycleManager.addConnectorWiringCleanup(i)}async close(e={}){(e.emitSessionClosed??!0)&&this.emitSessionClosed(`closed`);for(let e of this.busHandlerCleanups)try{e()}catch(e){console.warn(`[AIAgent] Bus handler cleanup failed:`,e)}this.busHandlerCleanups=[],this.connectorLifecycleManager.clearConnectorWiring(),await this.connector.close()}ensureConnector(){if(!this.connector)throw Error(`AIAgent ${this.agentId} connector not initialized. Call init() or start() first.`);return this.connector}shouldUseNativeResume(e){return this.supportsNativeResume()?e?!(e.nativeLocality?.kind!==`native`||e.isFirstTurn||e.hasCompression||e.hasNewTransforms||e.hasConnectorSwap):!0:!1}supportsNativeResume(){return!1}supportsNativeFork(){return!1}async start(e,t){return this.initialized||await this.init(),t?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=t.systemPrompt),this.turnExecutor.executeStart(e,t,this.runtimeSystemPrompt,t?.responseSchema)}async initialize(e){e?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=e.systemPrompt);let t=this.config.nativeFork;this.initialized||await this.init();let n=e?.sessionContext,r=t&&!n?.nativeFork?{...n,nativeFork:t}:n,i=this.config.resumeAdapterSessionId!==void 0,a=$.deriveStartMode(r,this.shouldUseNativeResume(r),i);this.setPendingStartMode(a);let o=this.ensureConnector();return await o.initialize(e),o.getConfirmedAdapterSessionId()}async onBeforeEmitCompletion(){}async onMessageHandle(e,t){this.lifecycleEmitter.resetTurnState(),this.latestMessageCompletion=e.waitForCompletion();let n=e.responseSchema,r=n===void 0?void 0:gt({structuredOutputManager:this.structuredOutputManager,getConnector:()=>this.connector,sessionId:this.sessionId,messageHandle:e,responseSchema:n});this.lifecycleTracker.track(e,(e,t,n)=>{let r=t.error instanceof Error?t.error.message:t.error;this.emitCompletion({message:t.result?.message,messageId:e,...n!==void 0&&{turnId:n},outcome:t.outcome,...r&&{error:r},...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation}})},r,{turnId:t})}abort(){this.emitSessionClosed(`aborted`),this.ensureConnector().abort()}async getAdapterSessionId(){return this.ensureConnector().getAdapterSessionId()}async complete(){let e=await this.ensureConnector().complete();return e===null||this.latestMessageCompletion===void 0?e:this.latestMessageCompletion}createConnectorEventMapping(e,t,n,r){let i=pt(this.globalBus,this.connector,e,r,t,n,this.enrichPayload.bind(this));return this.connectorLifecycleManager.addConnectorWiringCleanup(i),i}};function vn(e){let t=e.indexOf(`__`);return t===-1?{serverName:``,originalName:e}:{serverName:e.slice(0,t),originalName:e.slice(t+2)}}function yn(e){let{serverName:t,originalName:n}=vn(e);return{fullName:e,originalName:n,serverName:t,injected:!1,lastInjectedAtTurn:void 0,discovered:!1,firstDiscoveredAtTurn:void 0,callCount:0,lastCalledAtTurn:void 0}}var bn=class{entries=new Map;upsert(e){let t=this.entries.get(e);return t||(t=yn(e),this.entries.set(e,t)),t}recordInjection(e,t){let n=new Set(e.map(e=>e.name));for(let n of e){let e=this.upsert(n.name);e.injected=!0,e.lastInjectedAtTurn=t}for(let[e,t]of this.entries)t.injected&&!n.has(e)&&(t.injected=!1)}recordDiscovery(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t)}recordCall(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t),n.callCount+=1,n.lastCalledAtTurn=t}getInjectedTools(){return Array.from(this.entries.values()).filter(e=>e.injected)}getCallCount(e){return this.entries.get(e)?.callCount??0}getEntry(e){return this.entries.get(e)}getAllEntries(){return Array.from(this.entries.values())}async suggestInjectionSet(e,t){return e.directTools.map(e=>({name:e.fullName,description:e.description??``,toolsetName:e.serverName,inputSchema:e.inputSchema}))}};function xn(e){return typeof e.tool==`string`?e.tool:void 0}function Sn(e){return e===fe}var Cn=class{entries=new Map;pendingAdapterSessionClaims=new Set;globalBus;adapterName;constructor(e){this.globalBus=e.globalBus,this.adapterName=e.adapterName}claimAdapterSession(e){if(this.pendingAdapterSessionClaims.has(e))return!1;for(let t of this.entries.values())if(t.adapterSessionId===e)return!1;return this.pendingAdapterSessionClaims.add(e),!0}releaseAdapterSessionClaim(e){this.pendingAdapterSessionClaims.delete(e)}hasAdapterSession(e){if(this.pendingAdapterSessionClaims.has(e))return!0;for(let t of this.entries.values())if(t.adapterSessionId===e)return!0;return!1}set(e,t){t.adapterSessionId!==void 0&&this.pendingAdapterSessionClaims.delete(t.adapterSessionId),this.entries.set(e,t)}get(e){return this.entries.get(e)}values(){return this.entries.values()}clear(){this.entries.clear(),this.pendingAdapterSessionClaims.clear()}async evict(e,t={}){let n=this.entries.get(e);this.entries.delete(e);let r;if(n)try{await n.agent.close({emitSessionClosed:t.emitSessionClosed})}catch(e){r=e}try{await this.globalBus.requestOptional(j.updateStatus,{agentId:e,status:`dead`})}catch(t){if(r===void 0)throw t;console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as dead:`,t)}if(r!==void 0)throw r}async evictSilently(e){let t=this.entries.get(e);if(this.entries.delete(e),t)try{await t.agent.close({emitSessionClosed:!1})}catch(t){console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during silent eviction:`,t)}}dispose(e){let t=this.entries.get(e);return t?(t.agent.close().catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during dispose:`,t)}),this.entries.delete(e),this.globalBus.requestOptional(j.updateStatus,{agentId:e,status:`disposed`}).catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as disposed:`,t)}),!0):!1}accumulateUsage(e,t,n){let r=this.entries.get(e);if(r)return r.usage.totalInputTokens+=t.inputTokens,r.usage.totalOutputTokens+=t.outputTokens,r.usage.totalCalls++,n&&n!==r.adapterSessionId&&(r.adapterSessionId=n),r}agentIdsBySession(e){return[...this.entries.entries()].filter(([,t])=>t.sessionId===e).map(([e])=>e)}};async function wn(e,t,n){let r={totalInputTokens:0,totalOutputTokens:0,totalCalls:0},i=await e.requestOptional(pe.getBySession,{sessionId:t,status:`completed`});if(!i.handled)return r;for(let e of i.data.turns){let t=e.usage?.byAgent?.[n];t&&(r.totalInputTokens+=t.inputTokens,r.totalOutputTokens+=t.outputTokens)}return r}function Tn(e){let t=e.nativeLocality;if(typeof t==`object`&&t&&`kind`in t){let e=t.kind;if(e===`native`||e===`degrade`||e===`foreign`)return e}}var En=class{inFlight=new Map;globalBus;registry;createAgentFn;constructor(e){this.globalBus=e.globalBus,this.registry=e.registry,this.createAgentFn=e.createAgent}handleRehydrateAgent=async e=>{let{agentId:t,cwd:n,model:r,adapterSessionId:i,resumeAdapterSessionId:a}=e.payload,o=this.inFlight.get(t);if(o){await o,e.setResult({});return}let s=(async()=>{let e=this.registry.get(t);if(e){await this.rehydrateRegisteredAgent(t,e,{adapterSessionId:i,cwd:n,model:r});return}await this.rehydrateFromStorage(t,{adapterSessionId:i,rpcResumeId:a,cwd:n,model:r})})().catch(e=>{let n=e instanceof Error?e.message:String(e);throw Error(`Failed to recover agent ${t}: ${n}`)});this.inFlight.set(t,s);try{await s}finally{this.inFlight.delete(t)}e.setResult({})};async rehydrateFromStorage(e,t){let{adapterSessionId:n,rpcResumeId:r,cwd:i,model:a}=t,o=await this.globalBus.requestOptional(j.get,{agentId:e});if(!o.handled||!o.data.agent)throw Error(`Agent ${e} not found in storage`);let s=o.data.agent;if(s.status===`disposed`)throw Error(`Agent ${e} is disposed and cannot be rehydrated`);let c=await this.resolveMcpSessionContext(s.sessionId,s.profileId),l=s.providerConfigId===void 0?void 0:await ve(this.globalBus,s.providerConfigId).catch(W),u=n??s.adapterSessionId,d=r??void 0,f=Tn(s),p=d??(d!==void 0||f===`native`?u:void 0),m={model:a??s.model,cwd:i??s.cwd,allowedDirectories:s.allowedDirectories,adapterSessionId:u,...p!==void 0&&{resumeAdapterSessionId:p},...l!==void 0&&{providerContext:l},...c!==void 0&&{mcpSessionContext:c}},h=await this.claimAndCreateAgent(e,s,m,p);(i!==void 0||a!==void 0)&&await this.globalBus.requestOptional(j.updateRuntime,{agentId:e,cwd:i,model:a});let g=await h.getAdapterSessionId()||s.adapterSessionId;if(!g)throw p!==void 0&&this.registry.releaseAdapterSessionClaim(p),Error(`Recovered agent ${e} has no adapterSessionId`);let _=await wn(this.globalBus,s.sessionId,e);this.registry.set(e,{agent:h,sessionId:s.sessionId,adapterSessionId:g,usage:_}),await this.globalBus.requestOptional(j.updateStatus,{agentId:e,status:`idle`})}async claimAndCreateAgent(e,t,n,r){if(r!==void 0&&!this.registry.claimAdapterSession(r))throw Error(`Provider session ${r} is already claimed by another in-flight rehydrate or start`);try{let r=await this.createAgentFn(e,t.sessionId,n),i=await this.resolvePersistedSystemPrompt(t.sessionId,t.personaId,t.profileId);return await r.initialize({...i!==void 0&&{systemPrompt:i}}),r}catch(e){throw r!==void 0&&this.registry.releaseAdapterSessionClaim(r),e}}async rehydrateRegisteredAgent(e,t,n){let r=n.adapterSessionId??t.adapterSessionId;await t.agent.swapConnector({cwd:n.cwd,model:n.model,adapterSessionId:r,resumeAdapterSessionId:r});let i=await t.agent.getAdapterSessionId();i&&(t.adapterSessionId=i),(n.cwd!==void 0||n.model!==void 0)&&await this.globalBus.requestOptional(j.updateRuntime,{agentId:e,cwd:n.cwd,model:n.model}),await this.globalBus.requestOptional(j.updateStatus,{agentId:e,status:`idle`})}async resolveMcpSessionContext(e,t){let n=await this.globalBus.requestOptional(A.get,{sessionId:e});if(!n.handled||!n.data.session)return;let r=await this.globalBus.requestOptional(O.session.resolve,{sessionId:e,projectId:null,profileId:t??null});return r.handled?r.data:void 0}async resolvePersistedSystemPrompt(e,t,n){if(!(!t&&!n))try{let r=await this.globalBus.requestOptional(A.resolveSystemPrompt,{sessionId:e,personaId:t,profileId:n});return r.handled?r.data.systemPrompt:void 0}catch{return}}};async function Dn(e,t){let{prompt:n,model:r,systemPrompt:i,responseSchema:a}=e.payload,o=e.payload.providerContext??W(),s=crypto.randomUUID(),c=new gn({bus:t.globalBus,agentId:s,adapterId:t.adapterId,adapterCapabilities:t.adapterCapabilities}),l={bus:t.adapterBus,globalBus:t.globalBus,agentId:s,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:o,ephemeral:!0,...r!==void 0&&{model:r},...t.platformDefaults?.cwd!==void 0&&{cwd:t.platformDefaults.cwd},...t.platformDefaults?.env!==void 0&&{env:t.platformDefaults.env},errorHandler:e=>{console.warn(`[handleInfer:${t.adapterName}] Ephemeral connector error: ${e.message}`)}},u=await t.configFactory(l),d=await t.connectorFactory(u);try{await d.initialize({...i!==void 0&&{systemPrompt:i},...a!==void 0&&{responseSchema:a}});let r=I(n),o={...i!==void 0&&{systemPrompt:i},turnContext:Q(void 0,a,t.adapterCapabilities),...a!==void 0&&{responseSchema:a}},s=await d.start(r,o),l=await s.messageHandle.waitForCompletion(),u=l.result?.message??``;a!==void 0&&l.outcome===`completed`&&(u=await On({connector:d,manager:c,responseSchema:a,startResult:s,text:u})),e.setResult({text:u})}finally{try{await d.close()}catch(e){console.warn(`[handleInfer:${t.adapterName}] Connector cleanup error:`,e)}}}async function On(e){let{connector:t,manager:n,responseSchema:r,startResult:i,text:a}=e,o=await n.validateTerminalResult({responseSchema:r,message:a,retryTurn:async({attemptNumber:e,validationErrors:n})=>{let a={deliveryMode:`enqueue`,internalRetry:!0,messageId:`${i.messageHandle.messageId}:structured-output-retry:${e}`,responseSchema:r,turnContext:{...i.messageHandle.turnContext,structuredOutputRetry:{attemptNumber:e,validationErrors:n,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}};return(await(await t.sendMessage(i.messageHandle.message,a)).waitForCompletion()).result?.message??``}});if(o.structuredOutputValidation.status===`failed`)throw kn(o.structuredOutputValidation.errors);return o.message??``}function kn(e){return Error(`Structured output validation failed: ${e.map(e=>e.message).join(`; `)}`)}function An(e){let t=e.platformEnv!==void 0||e.env!==void 0?{...e.platformEnv,...e.env}:void 0,n=jn({model:e.model,allowedTools:e.allowedTools,disallowedTools:e.disallowedTools,allowedDirectories:e.allowedDirectories,adapterSessionId:e.adapterSessionId,resumeAdapterSessionId:e.resumeAdapterSessionId,reasoningEffort:e.reasoningEffort,adapterConfig:e.adapterConfig,harnessId:e.harnessId,clientId:e.clientId,clientProfileName:e.clientProfileName,mcpSessionContext:e.mcpSessionContext,toolLedger:e.toolLedger,ephemeral:e.ephemeral,nativeFork:e.nativeFork});return{...e.platformCwd!==void 0&&{cwd:e.platformCwd},...t!==void 0&&{env:t},...e.cwd!==void 0&&{cwd:e.cwd},...n}}function jn(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function Mn(e,t,n){if(e.length===0)return;if(n&&n!==`unresolved`)return e.find(e=>e.definition.id===n)?.definition.availableModels;if(e.length===1)return e[0]?.definition.availableModels;if(!t)return;let r=e.filter(e=>(e.definition.availableModels??[]).some(e=>e.name===t));if(r.length===1)return r[0]?.definition.availableModels}function Nn(e){if(e.mode!==`fork`)return;let t=e.sessionContext,n=t===void 0?void 0:k.parse(t);if(n?.nativeLocality?.kind===`native`)return n.nativeFork}async function Pn(e,t,n,r,i){let{adapterId:a,name:o,clientId:s,getPlatformDefaults:c,globalBus:l}=i,u=r.role,d=Date.now(),f=c(),p=r.cwd??f?.cwd,m=r.clientId??s;try{await l.requestOptional(j.set,{agentId:e,agent:{agentId:e,adapterId:a,adapterName:o,sessionId:t,adapterSessionId:n,model:r.model,cwd:p,allowedDirectories:r.allowedDirectories,role:u,status:`idle`,createdAt:d,lastActivityAt:d,...m!==void 0&&{clientId:m},...r.harnessId!==void 0&&{harnessId:r.harnessId}}})}catch(n){console.error(`[AIAdapter:${o}] Optional agent persistence failed:`,{agentId:e,adapterId:a,sessionId:t,error:n})}l.emit(A.agent.added,{sessionId:t,agentId:e,adapterId:a,adapterName:o,adapterSessionId:n,role:u,model:r.model,cwd:p}),l.emit(w.session.created,{adapterId:a,adapterName:o,adapterSessionId:n,sessionId:t,model:r.model??`unknown`})}async function Fn(e,t,n,r){try{await e.evict(t)}catch(e){throw AggregateError([r,e],`[AIAdapter:${n}] startAgent persistence failed and live agent cleanup also failed.`,{cause:e})}}async function In(e,t,n,r){try{if(t.initialMessage!==void 0){let r=I(t.initialMessage),i=await e.start(r,{systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema});return{adapterSessionId:i.adapterSessionId,messageId:String(i.messageHandle.messageId),messageHandle:i.messageHandle}}return{adapterSessionId:await e.initialize({systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema})}}catch(n){try{await e.close({emitSessionClosed:!t.ephemeral})}catch(e){console.warn(`[AIAdapter:${r}] Agent cleanup failed after startAgent error:`,e)}throw n}}async function Ln(e,t,n,r){try{await r?.waitForCompletion(3e5)}finally{await e.evictSilently(t)}}function Rn(e){if(e.ephemeral&&e.initialMessage===void 0)throw Error(`ephemeral startAgent requires initialMessage`)}function zn(e,t,n){let{sessionContext:r,...i}=e;return{...i,providerContext:t,...n===void 0?{}:{sessionContext:n}}}async function Bn(e,t){if(e.ephemeral)return e.sessionId??crypto.randomUUID();if((e.mode??`create`)===`create`){let n=await t.requestOptional(A.create,{...e.sessionId?{sessionId:e.sessionId}:{}});return n.handled?n.data.sessionId:e.sessionId??crypto.randomUUID()}if(e.sessionId)return e.sessionId;throw Error(`startAgent ${e.mode} mode requires sessionId`)}function Vn(e){if(e.mode===`resume`&&`adapterSessionId`in e)return e.adapterSessionId}async function Hn(e){let{agentId:t,sessionId:n,payload:r,providerContext:i,sessionContext:a,adapterName:o,resumeAdapterSessionId:s,registry:c}=e,l;try{l=await e.createAgent(t,n,zn(r,i,a))}catch(e){throw s!==void 0&&c.releaseAdapterSessionClaim(s),e}let u;try{u=await In(l,r,a,o)}catch(e){throw s!==void 0&&c.releaseAdapterSessionClaim(s),e}return{agent:l,startResult:u}}function Un(e){let{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,registry:a,globalBus:o,createAgent:s}=e;return async function(e){let c=e.payload,l=crypto.randomUUID(),u=c.providerContext??W();Rn(c);let d=await Bn(c,o),f=Vn(c);if(f!==void 0&&!a.claimAdapterSession(f)){e.setResult({success:!1,message:`Provider session ${f} is already claimed by another in-flight start`});return}let{agent:p,startResult:m}=await Hn({agentId:l,sessionId:d,payload:c,providerContext:u,sessionContext:c.sessionContext?k.parse(c.sessionContext):void 0,adapterName:n,resumeAdapterSessionId:f,registry:a,createAgent:s}),{adapterSessionId:h,messageId:g,messageHandle:_}=m;if(a.set(l,{agent:p,sessionId:d,adapterSessionId:h,usage:{totalInputTokens:0,totalOutputTokens:0,totalCalls:0}}),!c.ephemeral)try{await Pn(l,d,h,{...c,providerContext:u},{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,globalBus:o})}catch(e){throw await Fn(a,l,n,e),e}e.setResult({success:!0,agentId:l,adapterId:t,sessionId:d,adapterSessionId:h,...g!==void 0&&{messageId:g}}),c.ephemeral&&Ln(a,l,n,_).catch(e=>{console.warn(`[AIAdapter:${n}] Ephemeral agent cleanup failed:`,e)})}}var Wn=class{adapterId;name;capabilities;nativeTools;namespace;globalBus;adapterBus;registry;cleanupFns=[];rehydrationManager;initialized=!1;clientId;platformDefaults;definitionProviders;agentFactory;configFactory;connectorFactory;constructor(e){this.adapterId=e.adapterId??crypto.randomUUID(),this.name=e.name,this.capabilities=e.capabilities,this.nativeTools=e.nativeTools??[],this.globalBus=e.globalBus??C,this.adapterBus=e.scopedBus,this.namespace=e.namespace,this.agentFactory=e.agentFactory,this.configFactory=e.configFactory,this.connectorFactory=e.connectorFactory,this.clientId=e.clientId,this.platformDefaults=e.platformDefaults,this.definitionProviders=e.definitionProviders??[],this.registry=new Cn({globalBus:this.globalBus,adapterName:this.name}),this.rehydrationManager=new En({globalBus:this.globalBus,registry:this.registry,createAgent:this.createAgent.bind(this)})}setupHandlers(){let e=this.globalBus.withFilter({adapterId:this.adapterId});this.cleanupFns.push(e.on(w.startAgent,Un({adapterId:this.adapterId,name:this.name,clientId:this.clientId,getPlatformDefaults:()=>this.platformDefaults,registry:this.registry,globalBus:this.globalBus,createAgent:this.createAgent.bind(this)})),e.on(w.rehydrateAgent,this.rehydrationManager.handleRehydrateAgent),e.on(w.infer,e=>Dn(e,{adapterBus:this.adapterBus,globalBus:this.globalBus,adapterId:this.adapterId,adapterName:this.name,adapterCapabilities:this.capabilities,platformDefaults:this.platformDefaults,configFactory:this.configFactory,connectorFactory:this.connectorFactory})),e.on(T.session.closed,this.handleSessionClosed),e.on(T.started,this.handleStartedReconcileRegistry),e.on(T.usage,this.handleUsage),this.globalBus.on(A.closed,this.handleSessionClosedByService),e.on(w.listAgents,e=>{e.setResult({agents:Array.from(this.registry.values()).map(e=>({agentId:e.agent.agentId,sessionId:e.sessionId,adapterSessionId:e.adapterSessionId}))})}),e.on(w.getAgent,e=>{let t=this.registry.get(e.payload.agentId);e.setResult({agent:t?{agentId:t.agent.agentId,sessionId:t.sessionId,adapterSessionId:t.adapterSessionId}:null})}),e.on(w.stopAgent,e=>{e.setResult({success:this.disposeAgent(e.payload.agentId)})}),e.on(w.getCapabilities,e=>{e.setResult({capabilities:this.capabilities,nativeTools:this.nativeTools})}))}handleSessionClosed=e=>{let{agentId:t,adapterSessionId:n,reason:r}=e.payload,i=this.registry.get(t);if(!i){console.warn(`Agent ${t} not found, can't emit AgentSubjects.session.closed`);return}let a=n??i.adapterSessionId??``;this.registry.evict(t).catch(e=>{console.error(`[AIAdapter:${this.name}] Failed to evict agent ${t} after session.closed:`,e)}),this.globalBus.emit(w.session.closed,{adapterId:this.adapterId,adapterName:this.name,agentId:t,sessionId:i.sessionId,adapterSessionId:a,reason:r})};handleSessionClosedByService=async e=>{let{sessionId:t}=e.payload,n=this.registry.agentIdsBySession(t);await Promise.all(n.map(e=>this.registry.evict(e,{emitSessionClosed:!1}).catch(t=>console.error(`[AIAdapter:${this.name}] Failed to evict agent ${e} after session.closed:`,t))))};handleStartedReconcileRegistry=e=>{let{agentId:t,adapterSessionId:n}=e.payload;if(!n)return;let r=this.registry.get(t);r&&!r.adapterSessionId&&(r.adapterSessionId=n)};handleUsage=e=>{let{agentId:t,adapterSessionId:n,inputTokens:r,outputTokens:i}=e.payload,a=this.registry.accumulateUsage(t,{inputTokens:r,outputTokens:i},n);a&&this.globalBus.emit(w.session.usage,{adapterId:this.adapterId,adapterName:this.name,sessionId:a.sessionId,adapterSessionId:a.adapterSessionId,...a.usage})};async init(){this.initialized||(this.globalBus.registerNamespaces([this.namespace.definition]),this.adapterBus??=await this.namespace.scopedBus(this.globalBus.getContext()),this.setupHandlers(),await this.onInit(),this.initialized=!0,await this.globalBus.emit(w.initialized,{adapterId:this.adapterId,adapterName:this.name,capabilities:this.capabilities,nativeTools:this.nativeTools}))}async onInit(){}async createAgent(e,t,n){if(!this.adapterBus)throw Error(`Adapter bus not initialized. Did you forget to call init()?`);let{model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,reasoningEffort:c,mcpSessionContext:l,harnessId:u,ephemeral:d}=n,f=n.clientId??this.clientId,p=n.resumeAdapterSessionId??(n.mode===`resume`?n.adapterSessionId:void 0),m=Nn(n),h=Mn(this.definitionProviders,r,n.providerContext?.definitionId),g=l===void 0?void 0:new bn,_={agentId:e,adapterId:this.adapterId,adapterName:this.name,globalBus:this.globalBus,adapterBus:this.adapterBus,capabilities:this.capabilities,nativeTools:this.nativeTools,availableModels:h,configFactory:this.configFactory,connectorFactory:this.connectorFactory,sessionId:t,...n.providerContext!==void 0&&{providerContext:n.providerContext},...An({platformCwd:this.platformDefaults?.cwd,platformEnv:this.platformDefaults?.env,model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,allowedDirectories:n.allowedDirectories,adapterSessionId:n.adapterSessionId,reasoningEffort:c,adapterConfig:n.adapterConfig,resumeAdapterSessionId:p,harnessId:u,clientId:f,clientProfileName:n.clientProfileName,mcpSessionContext:l,toolLedger:g,ephemeral:d,nativeFork:m})};return this.agentFactory(_)}async closeAsync(){try{let e=await Promise.allSettled([...this.registry.values()].map(e=>e.agent.close()));this.registry.clear(),await this.onClose();let t=e.filter(e=>e.status===`rejected`).map(e=>e.reason instanceof Error?e.reason:Error(String(e.reason)));t.length>0&&console.warn(`[AIAdapter] ${t.length} agent(s) failed to close:`,t)}finally{for(let e of this.cleanupFns)try{e()}catch(e){console.warn(`[AIAdapter] Cleanup function failed:`,e)}this.cleanupFns=[],this.initialized=!1}}close(){this.closeAsync()}async onClose(){}getAgent(e){let t=this.registry.get(e);if(t)return Object.assign({},t.agent,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId})}disposeAgent(e){return this.registry.dispose(e)}getActiveAgents(){return Array.from(this.registry.values()).map(e=>Object.assign({},e.agent,{sessionId:e.sessionId,adapterSessionId:e.adapterSessionId}))}isInitialized(){return this.initialized}};function Gn(e){let t={adapterSessionId:e.adapterSessionId,lineage:e.lineage,messages:e.messagePayloads};return e.compactionMetadata&&(t.compaction=e.compactionMetadata),e.turns&&(t.turns=e.turns),e.isSidechain!==void 0&&(t.isSidechain=e.isSidechain),e.compressChildren?.length&&(t.children=e.compressChildren.map(Gn)),t}var Kn=class{processLogFile(e){let t=Array.isArray(e)?e:[e],n=this.extractSessionContext(t),r=this.processRecords(t,n);return{adapterSessionId:n.adapterSessionId,sessionEvent:n.sessionEvent,messageEvents:[n.startedEvent,...r],messagePayloads:[],lineage:{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null}}}};function qn(e){let t=new Map,n=[];return n.push(e.on(a.get,e=>{let{filePath:n}=e.payload,r=t.get(n)??null;e.setResult({cursor:r})})),n.push(e.on(a.set,e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;t.set(n,{filePath:n,bytesRead:r,lastModified:i}),e.setResult({success:!0})})),n.push(e.on(a.delete,e=>{let{filePath:n}=e.payload,r=t.delete(n);e.setResult({success:r})})),()=>{n.forEach(e=>e()),t.clear()}}const Jn=S.object({sessions:S.record(S.string(),S.object({state:S.enum([`idle`,`active`]),currentTurnId:S.string().optional()}))}).default({sessions:{}});var Yn=class{options;sessions=new Map;generateTurnId;constructor(e){this.options=e,this.generateTurnId=e.generateTurnId??(()=>crypto.randomUUID())}processRecord(e){let t=this.options.getSessionId(e),n=this.getOrCreateSessionState(t),r=[],i=this.options.detectTurnStart(e),a=this.options.detectTurnComplete(e);if(i){n.state===`active`&&n.currentTurnId&&r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId});let e=this.generateTurnId(t);n.state=`active`,n.currentTurnId=e,r.push({type:`turn.started`,sessionId:t,turnId:e})}else a&&n.state===`active`&&n.currentTurnId&&(r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId}),n.state=`idle`,n.currentTurnId=void 0);return r}getState(e){return this.sessions.get(e)?.state??`idle`}getCurrentTurnId(e){return this.sessions.get(e)?.currentTurnId}hasActiveTurn(e){return this.getState(e)===`active`}resetSession(e){return this.sessions.delete(e)}resetAll(){this.sessions.clear()}serialize(){let e={};for(let[t,n]of this.sessions)e[t]={state:n.state,currentTurnId:n.currentTurnId};return{sessions:e}}restore(e){this.sessions.clear();for(let[t,n]of Object.entries(e.sessions))this.sessions.set(t,{state:n.state,currentTurnId:n.currentTurnId})}getTrackedSessions(){return Array.from(this.sessions.keys())}forceCompleteTurn(e){let t=this.sessions.get(e);if(!t||t.state!==`active`||!t.currentTurnId)return;let n={type:`turn.completed`,sessionId:e,turnId:t.currentTurnId};return t.state=`idle`,t.currentTurnId=void 0,n}getOrCreateSessionState(e){let t=this.sessions.get(e);return t||(t={state:`idle`,currentTurnId:void 0},this.sessions.set(e,t)),t}};const Xn=S.object({eventType:S.literal(`agent_started`),model:S.string().optional()}),Zn=S.object({eventType:S.literal(`agent_complete`),message:S.string().optional(),error:S.string().optional()}),Qn=S.object({eventType:S.literal(`error`),message:S.string(),code:S.string().or(S.number()).optional(),type:S.string().optional()}),$n=S.object({eventType:S.literal(`tool_started`),toolName:S.string(),toolCallId:S.string()}),er=S.object({eventType:S.literal(`tool_completed`),toolName:S.string(),toolCallId:S.string(),result:S.string(),success:S.boolean()});export{Wn as AIAdapter,_n as AIAgent,q as AIAgentConnector,Zn as AgentCompleteEventSchema,Tt as AgentConnectorLifecycleManager,vt as AgentEventBridge,yt as AgentLifecycleEmitter,bt as AgentPayloadEmitter,wt as AgentRuntimeMutationManager,Xn as AgentStartedEventSchema,$ as AgentTurnExecutor,ut as BaseConnectorSession,J as BaseConnectorTurn,Kn as BaseLogImporter,Qn as ErrorEventSchema,o as ImportCursorPositionSchema,i as ImportCursorStorageNamespace,a as ImportCursorStorageSubjects,He as MAKAIO_CONFORMANCE_PRIMARY_MODEL_ENV,z as MAKAIO_CONFORMANCE_PROVIDER_DEFINITIONS_ENV,Ve as MAKAIO_CONFORMANCE_PROVIDER_ENV,Ue as MAKAIO_CONFORMANCE_SECONDARY_MODEL_ENV,K as MessageHandle,Y as MessageLifecycleTracker,ft as ProceduralAgentConnector,dt as ProceduralConnectorTurn,et as ScopedToolApprovalSchema,it as SessionLifecycle,bn as SessionToolLedger,X as ToolCallTracker,er as ToolCompletedEventSchema,$n as ToolStartedEventSchema,Yn as TurnTracker,Jn as TurnTrackerSerializedStateSchema,at as UserMessageQueue,n as cleanEnvForAdapter,Se as createAdapterNamespace,R as createTestProviderContext,tt as createToolApprovalHandler,Fe as defineDiscriminatedHandlers,Ie as defineDiscriminatedHandlersSync,xn as extractMcpCallTarget,P as formatContextBlockAsText,Ne as formatContextBlocksAsText,Xe as formatMessageHistoryAsTranscript,Sn as isMcpCallTool,nt as isTextLikeMimeType,lt as markCompletedWithFinalResult,$e as mergeScopedToolApproval,L as normalizeEnvValue,I as normalizeMessageInput,U as normalizeMimeType,Pe as parseAIAdapterCapabilities,Le as processDiscriminatedItems,Re as processDiscriminatedItemsSync,G as processQueueMessages,_t as registerAgentBusHandlers,qn as registerMemoryImportCursorStorage,qe as resolveConformanceTestPreset,Je as resolveDisabledNativeTools,rt as resolvePresetCredentials,H as resolveRequiredSessionId,Be as resolveTestConfig,N as safeJsonStringify,Qe as serializeBlockToText,je as serializeTurnContext,Gn as toImportSegment};
|
|
11
|
+
`)}function Qe(e){throw Error(`Unhandled MessageBlock variant: ${JSON.stringify(e)}`)}function $e(e){switch(e.type){case`text`:return e.content;case`reasoning`:return e.content;case`tool_call`:return`[Tool: ${e.name}]\n${JSON.stringify(e.args)}`;case`tool_output`:return`[Tool ${e.isError?`Error`:`Result`} ${e.toolCallId}]\n${e.output}`;case`image`:return`[Image]`;case`document`:return`[Document]`;case`attachment`:return`[Attachment: ${e.displayName?.trim()?e.displayName:e.fileName||`Attachment`}]`;default:return Qe(e)}}function V(e,t,n,r,i){let a=e??(i?t:void 0);if(!a)throw Error(`[${r}] toGlobalToolApproval: ${n} must come from tool approval context`+(i?` or trusted payload`:``));return a}function H(e,t,n,r=!1){return V(e,t,`sessionId`,n,r)}function et(e,t,n,r={}){let i=r.allowPayloadIdentityFallback??!1;if(i){let e=[t.agentId,t.adapterId,t.adapterName,t.adapterSessionId],r=e.filter(Boolean).length;if(r>0&&r<e.length)throw Error(`[${n}] toGlobalToolApproval: context must supply all four identity fields (agentId, adapterId, adapterName, adapterSessionId) or none — partial context with allowPayloadIdentityFallback creates a mixed-source identity tuple`)}let a=H(t.sessionId,e.sessionId,n,r.allowPayloadSessionFallback??!1);return{...e,agentId:V(t.agentId,e.agentId,`agentId`,n,i),adapterId:V(t.adapterId,e.adapterId,`adapterId`,n,i),adapterName:V(t.adapterName,e.adapterName,`adapterName`,n,i),adapterSessionId:V(t.adapterSessionId,e.adapterSessionId,`adapterSessionId`,n,i),sessionId:a}}const tt={request:T.request.extend({sessionId:x.string().optional()}),response:T.response};function nt(e,t,n){return function(r,i,a){return r.on(e,async e=>{try{let r=typeof i==`function`?await i():i,o=t(e.payload,r),s=await a.request(w.toolApprove,o);e.setResult(n(s))}catch(t){console.error(`[createToolApprovalHandler] Tool approval request failed:`,t);let r=t instanceof Error?`: ${t.message}`:``;e.setResult(n({action:`deny`,message:`Tool approval request failed${r}`,shouldAbort:!0}))}})}}function U(e){return e&&e.split(`;`)[0].trim().toLowerCase()||`application/octet-stream`}function rt(e){let t=U(e);return t.startsWith(`text/`)?!0:[`application/json`,`application/xml`,`application/sql`,`application/graphql`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/toml`].includes(t)}function it(e){if(!e.credentialEnvVars)return;let t={};for(let[n,r]of Object.entries(e.credentialEnvVars)){let e=process.env[r];e!==void 0&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}function W(){return{providerConfigId:`sentinel`,definitionId:`unresolved`,credentialRefs:{}}}var at=class{abortController;terminated=!1;constructor(e){this.abortController=e??new AbortController}get signal(){return this.abortController.signal}get isTerminated(){return this.terminated}abort(e){this.terminated||(this.terminated=!0,this.abortController.abort(),e&&Promise.resolve(e()).catch(e=>{console.error(`Error during session cleanup:`,e)}))}onAbort(e){this.abortController.signal.addEventListener(`abort`,e)}},ot=class{queue=[];enqueue(e){if(e.deliveryMode===`replace`){for(let t of this.queue)t.state===`queued`&&(t.supersededBy=e.messageId,t.markCompleted({outcome:`superseded`,supersededBy:e.messageId}));this.removeSuperseded()}if(e.internalRetry&&e.deliveryMode===`enqueue`){this.enqueueInternalRetry(e);return}this.queue.push(e)}enqueueInternalRetry(e){let t=this.queue.findIndex(e=>e.deliveryMode!==`immediate`&&!e.internalRetry);if(t===-1){this.queue.push(e);return}this.queue.splice(t,0,e)}removeSuperseded(){for(let e=this.queue.length-1;e>=0;e--)this.queue[e].supersededBy&&this.queue.splice(e,1)}dequeue(){return this.queue.shift()}peek(){return this.queue[0]}isEmpty(){return this.queue.length===0}size(){return this.queue.length}clear(){this.queue.length=0}findImmediate(){return this.queue.find(e=>e.deliveryMode===`immediate`)}removeImmediate(e){let t=this.queue.indexOf(e);t>=0&&this.queue.splice(t,1)}drainEnqueued(){let e=[];for(let t=this.queue.length-1;t>=0;t--)this.queue[t].deliveryMode===`enqueue`&&e.unshift(this.queue.splice(t,1)[0]);return e}};async function G(e,t){let n=t.getCurrentTurn(),r=t.extractContent??st;if(n?.canAcceptImmediate()){let i=e.findImmediate();if(i)if(e.removeImmediate(i),(await n.pause()).turnEnded)i.markCompleted({outcome:`rejected`});else{let a=n.getMessageHandle(),o=e.drainEnqueued(),s=[];a&&!a.isProcessed&&(s.push(r(a)),a.supersededBy=i.messageId,a.markCompleted({outcome:`superseded`,supersededBy:i.messageId}));for(let e of o)s.push(r(e)),e.supersededBy=i.messageId,e.markCompleted({outcome:`merged`,mergedInto:i.messageId});let c=t.collectMergeExtra?.(a,o);return await t.onBeforeImmediateTurn?.(),await t.startNewTurn(i,s,c),!0}}let i=e.peek();return(!n||n.isCompleted()||i?.internalRetry===!0&&n.getMessageHandle().isProcessed)&&i?i.deliveryMode===`immediate`&&n?.isCompleted()?(e.dequeue(),i.markCompleted({outcome:`rejected`}),G(e,t)):(e.dequeue(),await t.startNewTurn(i),!0):!1}function st(e){return e.message.message}const ct=[`active`,`step_finished`,`turn_finished`,`processing_finished`];function lt(e,t){if(e===t)return null;let n=[];switch(t){case`processing_started`:break;case`turn_started`:([`idle`,`processing_finished`,`paused`].includes(e)||e===`active`)&&n.push(`processing_started`);break;case`step_started`:[`idle`,`processing_finished`,`paused`].includes(e)||e===`active`?n.push(`processing_started`,`turn_started`):[`processing_started`,`turn_finished`].includes(e)&&n.push(`turn_started`);break;case`step_finished`:break;case`turn_finished`:e===`step_started`&&n.push(`step_finished`);break;case`processing_finished`:e===`step_started`?n.push(`step_finished`,`turn_finished`):[`turn_started`,`step_finished`].includes(e)&&n.push(`turn_finished`);break}return{isCompletionState:ct.includes(t),statesToEmit:[...n,t]}}var K=class{messageId;message;deliveryMode;responseSchema;internalRetry;requestCorrelation;deferredCompletion;deferredAcknowledgement;state;isAcknowledged=void 0;completionResult=void 0;completionStarted=!1;completionTransforms=[];completionObservers=[];mergedInto;mergedFrom;supersededBy;deferredAdapterSessionId=new N;_adapterSessionId;_messageHistory;_cacheStrategy;_turnContext;constructor(e,t,n,r,i,a,o=!1,s,c){this.messageId=e,this.message=t,this.deliveryMode=n,this.responseSchema=a,this.internalRetry=o,this.requestCorrelation=c,this.deferredCompletion=new N,this.deferredAcknowledgement=new N,this.state=`queued`,this._messageHistory=r,this._cacheStrategy=s,this._turnContext=i}get messageHistory(){return this._messageHistory}set messageHistory(e){this._messageHistory=e}get cacheStrategy(){return this._cacheStrategy}set cacheStrategy(e){this._cacheStrategy=e}get turnContext(){return this._turnContext}set turnContext(e){this._turnContext=e}get adapterSessionId(){return this._adapterSessionId}set adapterSessionId(e){e&&!this._adapterSessionId&&(this._adapterSessionId=e,this.deferredAdapterSessionId.resolve(e))}waitForAdapterSessionId(){return this._adapterSessionId?Promise.resolve(this._adapterSessionId):this.deferredAdapterSessionId.getPromise()}get isProcessed(){return this.state===`completed`||this.state===`cancelled`}getState(){return this.state}updateState(e){this.state=e}async cancel(){return this.updateState(`cancelled`),this.completionStarted=!0,this.completionResult={outcome:`cancelled`},this.deferredAcknowledgement.reject(Error(`Message cancelled`)),this.deferredCompletion.resolve(this.completionResult),!0}markAcknowledged(e=!0){this.isAcknowledged===void 0&&(this.isAcknowledged=e,this.updateState(`acknowledged`),this.deferredAcknowledgement.resolve(e))}addCompletionTransform(e){if(this.completionStarted)throw Error(`Cannot add a completion transform after completion has started`);this.completionTransforms.push(e)}addCompletionObserver(e){if(this.completionStarted)throw Error(`Cannot add a completion observer after completion has started`);this.completionObservers.push(e)}markCompleted(e){this.completionStarted?console.warn(`markCompleted called for messageId: ${this.messageId} but already completed.`):(this.completionStarted=!0,this.updateState(`completed`),this.isAcknowledged===void 0&&(this.isAcknowledged=!1,this.deferredAcknowledgement.resolve(!1)),this.resolveCompletion(e))}async resolveCompletion(e){let t=e;try{for(let e of this.completionTransforms)t=await e(t)}catch(e){t={outcome:`error`,error:e instanceof Error?e:String(e)}}this.completionResult=t,this.notifyCompletionObservers(t),this.deferredCompletion.resolve(t)}notifyCompletionObservers(e){for(let t of this.completionObservers)try{t(e)}catch(e){console.warn(`[MessageHandle] completion observer failed for messageId: ${this.messageId}`,e)}}async waitForAcknowledgment(e){if(this.isAcknowledged!==void 0)return this.isAcknowledged;if(e){let t=await Promise.race([this.deferredAcknowledgement.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Acknowledgment timeout`)),e))]);if(t instanceof Error)throw this.markCompleted({outcome:`error`,error:t}),t;return t}return this.deferredAcknowledgement.getPromise()}async waitForCompletion(e){if(this.completionResult)return this.completionResult;if(e){let t=await Promise.race([this.deferredCompletion.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Completion timeout`)),e))]);if(t instanceof Error)throw t;return t}return this.deferredCompletion.getPromise()}};function ut(e,t,n){let r=n!==void 0&&!e.isProcessed;return e.markCompleted(t),r?e.waitForCompletion().then(async t=>{try{await n(e,t)}catch(t){console.warn(`[MessageHandle] completion notification failed for messageId: ${e.messageId}`,t)}}):Promise.resolve()}var q=class{agentId;adapterSessionId;sessionId;pendingMessageHandle;scopedBus;globalBus;filteredBus;errorHandler;deferredInterrupt;emittery=new r;processingState=`idle`;adapterId;timeouts;lastResult=null;config;model;providerConfigId;cwd;currentReasoningEffort;supportedReasoningLevels;env;_currentTurnNumber=0;_pendingCanonicalTurnNumber;adapterName;systemPrompt;constructor(e){let t=e.cwd??ye.tmpdir();if(!ie.existsSync(t))throw new oe(t);this.agentId=e.agentId??crypto.randomUUID(),this.scopedBus=e.bus,this.globalBus=e.globalBus??S,this.filteredBus=e.bus.withFilter({agentId:this.agentId}),this.adapterId=e.adapterId,this.adapterName=e.adapterName,this.adapterSessionId=e.adapterSessionId,this.sessionId=e.sessionId,this.timeouts=e.timeouts??be([]),this.errorHandler=e.errorHandler,this.model=e.model,this.providerConfigId=e.providerConfigId,this.cwd=t,this.currentReasoningEffort=e.reasoningEffort,this.supportedReasoningLevels=e.supportedReasoningLevels,this.config=e,this.env=n(e?.env??xe.env)}getProcessingState(){return this.processingState}handlePause(e){this.updateProcessingState(`paused`)}captureSystemPrompt(e){e!==void 0&&(this.systemPrompt=e)}async updateProcessingState(e){let t=lt(this.processingState,e);if(!t)return;let{statesToEmit:n}=t;this.processingState=e;for(let e of n)await this.emittery.emit(`processingStateChanged`,e)}onProcessingStateChanged(e){return this.emittery.on(`processingStateChanged`,e)}async onceProcessingStateChanged(e){return this.emittery.once(`processingStateChanged`,e)}getConfirmedAdapterSessionId(){return this.adapterSessionId}createMessageHandle(e,t){let n=t?.messageId??crypto.randomUUID(),r=new K(n,e,t?.deliveryMode??`enqueue`,t?.messageHistory,t?.turnContext,t?.responseSchema,t?.internalRetry??!1,t?.cacheStrategy,t?.requestCorrelation===void 0?void 0:{...t.requestCorrelation,messageId:n});return r.adapterSessionId=this.adapterSessionId,t?.internalRetry||this.config.onMessageSent?.(r),r}markToolRefreshPending(){}setCanonicalTurnNumber(e){if(!Number.isInteger(e)||e<1)throw RangeError(`setCanonicalTurnNumber: expected positive integer, got ${e}`);if(e<=this._currentTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} ≤ current (${this._currentTurnNumber})`);if(this._pendingCanonicalTurnNumber!==void 0&&e<this._pendingCanonicalTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} < pending (${this._pendingCanonicalTurnNumber})`);this._pendingCanonicalTurnNumber=e}consumeTurnNumber(){return this._pendingCanonicalTurnNumber===void 0?(this._currentTurnNumber+=1,this._currentTurnNumber):(this._currentTurnNumber=this._pendingCanonicalTurnNumber,this._pendingCanonicalTurnNumber=void 0,this._currentTurnNumber)}get currentTurnNumber(){return this._currentTurnNumber}get pendingTurnNumber(){return this._pendingCanonicalTurnNumber}async changeModelInPlace(e){return!1}async changeCwdInPlace(e){return!1}async changeReasoningInPlace(e){return!1}handleError(e,t=!1){let n=e instanceof Error?e:Error(String(e));console.warn(`[AIAgentConnector:handleError] pendingMessageHandle=${this.pendingMessageHandle?.messageId}, errorType=${n.name}, terminate=${t}`),this.errorHandler?.(n,t),this.pendingMessageHandle&&(this.pendingMessageHandle.markCompleted({outcome:`error`,error:n}),this.pendingMessageHandle=void 0,this.handlePause(`error`)),t&&this.abort()}handleToolApprovalDenied(e,t){e!==`not_requested`&&queueMicrotask(()=>{this.handleError(Error(`Tool use denied by approval handler: ${t}`),!1)})}getAgentId(){return this.agentId}getAdapterName(){return this.adapterName}getTimeoutMs(e){return this.timeouts.values[e]}requestToolApproval(e,t){return this.scopedBus.request(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId,sessionId:this.sessionId})}async requestToolApprovalWithHandling(e,t){return this.requestToolApproval(e,t).catch(e=>{let t=e;throw(e instanceof fe||e instanceof de)&&(t=Error(`Tool approval request failed, make sure that there's a handler registered: `+e.message)),this.handleError(t,!1),e})}emit(e,t){return this.scopedBus.emit(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId})}on(e,t,n){return this.filteredBus.on(e,t,n)}once(e,t){return this.filteredBus.once(e,t)}logLowLevelEvent(e){}},dt=class{config;bus;sessionId;currentTurn;constructor(e){this.config=e,this.bus=e.bus}async abort(){await this.currentTurn?.pause()}async sendMessage(e,t){throw Error(`Use processQueue instead`)}async getAdapterSessionId(){return this.sessionId}},J=class{state;bus;adapterId;adapterName;stateChangedCallback;constructor(e,t,n,r){this.bus=e,this.adapterId=t,this.adapterName=n,this.state=r}onStateChanged(e){this.stateChangedCallback=e}async transitionTo(e){let t=this.state;this.state=e,await this.emitStateChange(t,e),await this.stateChangedCallback?.(t,e)}getState(){return this.state}getMessageHandle(){return this.activeMessageHandle}markAcknowledged(){this.activeMessageHandle.markAcknowledged()}markCompleted(e){this.activeMessageHandle.markCompleted(e)}},ft=class extends J{activeMessageHandle;connectorBus;agentId;turnSubjects;aborted=!1;constructor(e,t){super(e.bus,e.adapterId,e.adapterName,t),this.connectorBus=e.bus,this.agentId=e.agentId,this.activeMessageHandle=e.messageHandle,this.turnSubjects=e.turnSubjects}async emitStateChange(e,t){let n={adapterId:this.adapterId,agentId:this.agentId,oldState:e,newState:t,timestamp:Date.now()};switch(await this.connectorBus.emit(this.turnSubjects.state_changed,n),t){case`turn_started`:await this.connectorBus.emit(this.turnSubjects.turn_started,n);break;case`step_started`:await this.connectorBus.emit(this.turnSubjects.step_started,n);break;case`step_finished`:await this.connectorBus.emit(this.turnSubjects.step_finished,n);break;case`turn_finished`:await this.connectorBus.emit(this.turnSubjects.turn_finished,n);break}}async start(){await this.transitionTo(`turn_started`)}async markStepStarted(){(this.state===`turn_started`||this.state===`step_finished`)&&await this.transitionTo(`step_started`)}async markStepFinished(){this.state===`step_started`&&await this.transitionTo(`step_finished`)}async markTurnFinished(){await this.transitionTo(`turn_finished`)}async pause(){if(this.state===`turn_finished`)return{stateBeforePause:this.state,turnEnded:!0};let e=this.state;return this.aborted=!0,{stateBeforePause:e,turnEnded:!1}}async resume(e){throw Error(`${this.adapterName} does not support resume - create new turn with merged content`)}isPaused(){return this.aborted}isCompleted(){return this.state===`turn_finished`}canAcceptImmediate(){return this.state!==`turn_finished`&&!this.aborted}},pt=class extends q{turnEventsWired=!1;getWireSessionConfig(){}wireSessionEvents(){if(this.turnEventsWired)return;this.turnEventsWired=!0;let e=this.getTurnSubjects(),t=this.getWireSessionConfig();this.on(e.turn_started,(async()=>{try{await t?.onTurnStarted?.()}catch(e){console.error(`[ProceduralAgentConnector] onTurnStarted hook failed:`,e)}await this.updateProcessingState(`turn_started`)})),this.on(e.step_started,(async()=>{await this.updateProcessingState(`step_started`)})),this.on(e.step_finished,(async()=>{await this.updateProcessingState(`step_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()&&await e.processQueue(t)})),this.on(e.turn_finished,(async()=>{await this.updateProcessingState(`turn_finished`);let e=async()=>{await this.updateProcessingState(`processing_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()?await e.processQueue(t):await this.updateProcessingState(`idle`)};t?.onTurnFinished?await t.onTurnFinished(e):await e()}))}async processUserMessages(e){let[t]=e,n=await this.ensureSession(),r=this.getSessionQueue();return r.enqueue(t),t.adapterSessionId=this.adapterSessionId,(this.getProcessingState()===`idle`||this.getProcessingState()===`paused`)&&await this.updateProcessingState(`active`),await n.processQueue(r),new Set([t])}async initialize(e){this.getSession()||(this.captureSystemPrompt(e?.systemPrompt),await this.ensureSession())}async start(e,t){this.captureSystemPrompt(t?.systemPrompt);let n=await this.sendMessage(e,t);return{adapterSessionId:await this.getAdapterSessionId(),messageHandle:n,agentId:this.agentId}}async complete(){for(;this.getProcessingState()!==`idle`&&this.getProcessingState()!==`paused`;)await this.onceProcessingStateChanged();return this.lastResult}acceptsImmediate(){return this.getSession()?.getCurrentTurn()?.canAcceptImmediate()??!1}};function mt(e,t,n,r,i,a,o){let s=t=>async(n,r)=>{let i=t,a={...r,agentId:i.agentId,adapterId:i.adapterId,adapterName:i.adapterName,adapterSessionId:i.adapterSessionId,messageId:i.messageId};await e.emit(n,a)};return t.on(n,(async t=>{let n=r?t.payload[r]:t.payload;if(!n||typeof n!=`object`)return;let c=a[n[i]];if(!c)return;let l=await o(n),u=s(l);if(typeof c==`function`)await c(l,u);else{let{sessionId:t,...n}=l;await e.emit(c,n)}}))}var Y=class{currentMessageId;currentTurnId;emitGlobal;constructor(e){this.emitGlobal=e.emitGlobal}getCurrentMessageId(){return this.currentMessageId}setCurrentTurnId(e){this.currentTurnId=e}clearCurrentTurnId(){this.currentTurnId=void 0}getCurrentTurnId(){return this.currentTurnId}acknowledge(e,t){let{messageId:n,message:r,mergedFrom:i}=e;this.currentMessageId=n,this.emitGlobal(w.user_message.acknowledged,{messageId:n,mergedFrom:i,...t!==void 0&&{turnId:t}}),this.emitGlobal(w.turn.started,{messageId:n,content:r,mergedFrom:i,...t!==void 0&&{turnId:t}})}complete(e,t,n){let{messageId:r}=e;this.currentMessageId===r&&(this.currentMessageId=void 0),this.currentTurnId===n&&(this.currentTurnId=void 0),this.emitGlobal(w.turn.completed,{messageId:r,message:t.result?.message,outcome:t.outcome,error:t.error instanceof Error?t.error.message:typeof t.error==`string`?t.error:void 0,...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation},...n!==void 0&&{turnId:n}}),this.emitGlobal(w.user_message.completed,{messageId:r,outcome:t.outcome,supersededBy:t.supersededBy,mergedInto:t.mergedInto,...n!==void 0&&{turnId:n}})}track(e,t,n,r){let i=r?r.turnId:this.currentTurnId;n!==void 0&&e.addCompletionTransform(async e=>{try{return await n(e)}catch(t){let n={status:`failed`,errors:[{message:t instanceof Error?t.message:`Structured output validation failed`,instancePath:``,schemaPath:`#`}]};return{...e,structuredOutputValidation:n}}}),e.waitForAcknowledgment().then(()=>{this.acknowledge(e,i)}),e.waitForCompletion().then(n=>{this.complete(e,n,i),t&&t(e.messageId,n,i)})}},X=class{pending=[];register(e,t,n){let r=n??crypto.randomUUID();return this.pending.push({correlationId:r,toolName:e,args:t,nativeId:n,registeredAt:Date.now()}),r}resolve(e){if(e.nativeId){let t=this.pending.findIndex(t=>t.nativeId===e.nativeId);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`nativeId`,toolName:e.toolName,args:e.args}}}if(e.toolName){let t=this.pending.findIndex(t=>t.toolName===e.toolName);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`toolName`,toolName:e.toolName,args:e.args}}}if(!e.nativeId&&!e.toolName&&this.pending.length>0){let[e]=this.pending.splice(0,1);return{correlationId:e.correlationId,strategy:`oldest`,toolName:e.toolName,args:e.args}}return{correlationId:null,strategy:`none`}}clear(){this.pending=[]}};function ht(e){if(e instanceof le||e instanceof ae||e instanceof se||e instanceof ce)return e.code}function Z(e,t){if(t)return e?.find(e=>e.name===t)?.supportedReasoningLevels}function gt(e){let{config:t,overrides:n}=e,r=n?.providerContext??t.providerContext;r===void 0&&console.warn(`[AIAgent] No providerContext available for agent "${t.agentId}" — falling back to sentinel. This indicates the orchestrator did not populate a provider context before calling startAgent.`);let i=r??W();return{bus:t.adapterBus,globalBus:t.globalBus,agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:i,model:n?.model??t.model,cwd:n?.cwd??t.cwd,env:t.env,adapterSessionId:n?.adapterSessionId??t.adapterSessionId,sessionId:t.sessionId,resumeAdapterSessionId:n?.resumeAdapterSessionId??t.resumeAdapterSessionId,reasoningEffort:e.currentReasoningEffort,supportedReasoningLevels:Z(e.availableModels,n?.model??t.model),allowedTools:t.allowedTools,disallowedTools:t.disallowedTools,allowedDirectories:t.allowedDirectories,providerConfig:t.adapterConfig,mcpSessionContext:n?.mcpSessionContext??t.mcpSessionContext,toolLedger:t.toolLedger,...t.nativeFork!==void 0&&{nativeFork:t.nativeFork},ephemeral:t.ephemeral,clientId:t.clientId,clientProfileName:t.clientProfileName,harnessId:t.harnessId,errorHandler:(t,n)=>{let r=ht(t);e.emitError({error:t.message,...r&&{errorCategory:r}})}}}function _t(e){let{structuredOutputManager:t,getConnector:n,sessionId:r,messageHandle:i,responseSchema:a}=e;return async e=>{if(e.outcome!==`completed`)return e;let o=await t.validateTerminalResult({responseSchema:a,message:e.result?.message,sessionId:r,retryTurn:async({attemptNumber:e,validationErrors:t})=>{let r=n();return r?(await(await r.sendMessage(i.message,{deliveryMode:`enqueue`,internalRetry:!0,messageId:`${i.messageId}:structured-output-retry:${e}`,messageHistory:i.messageHistory,responseSchema:a,requestCorrelation:i.requestCorrelation,turnContext:{...i.turnContext,structuredOutputRetry:{attemptNumber:e,validationErrors:t,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}})).waitForCompletion()).result?.message??``:``}});return{...e,result:e.result!==null&&e.result!==void 0?{...e.result,message:o.message}:e.result,structuredOutputValidation:o.structuredOutputValidation}}}function Q(e,t,n){return!t||n.includes(`structuredOutput`)?e:{...e,structuredOutput:`Respond ONLY with valid JSON conforming to this schema:\n${JSON.stringify(t.schema,null,2)}\nDo not include any other text, markdown formatting, or explanation.`}}function vt(e,t){let n={...e};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return Object.keys(n).length===0?void 0:n}var $=class e{agentId;adapterId;sessionId;adapterCapabilities;globalBus;getConnector;shouldUseNativeResume;hasResumeTarget;setPendingStartMode;onMessageHandle;onBeforeDispatch;ephemeral;constructor(e){this.agentId=e.agentId,this.adapterId=e.adapterId,this.sessionId=e.sessionId,this.adapterCapabilities=e.adapterCapabilities??[],this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.shouldUseNativeResume=e.shouldUseNativeResume,this.hasResumeTarget=e.hasResumeTarget,this.setPendingStartMode=e.setPendingStartMode,this.onMessageHandle=e.onMessageHandle,this.onBeforeDispatch=e.onBeforeDispatch,this.ephemeral=e.ephemeral??!1}static deriveStartMode(e,t,n=!1){return e?.nativeFork?`fork`:e?t?`resume`:e.isFirstTurn?`fresh`:`rotation`:n?`resume`:`fresh`}deriveAndSetPendingStartMode(t){let n=this.shouldUseNativeResume(t),r=e.deriveStartMode(t,n,this.hasResumeTarget());return this.setPendingStartMode(r),n}async executeSendMessage(e){await this.onBeforeDispatch?.();let t=this.getConnector(),n=e.sessionContext?k.parse(e.sessionContext):void 0,r=await this.resolvePreUserMessageTurn({message:e.message,sessionContext:n,cwd:t.cwd,messageId:e.messageId}),i=this.deriveAndSetPendingStartMode(r.sessionContext),a=I(r.message),o=await t.sendMessage(a,{deliveryMode:e.deliveryMode,messageId:e.messageId,messageHistory:i?void 0:r.sessionContext?.messageHistory,cacheStrategy:i?void 0:r.sessionContext?.cacheStrategy,turnContext:Q(r.sessionContext?.turnContext,e.responseSchema,this.adapterCapabilities),requestCorrelation:vt(r.sessionContext?.requestCorrelation,{sessionId:this.sessionId,turnId:e.turnId,messageId:e.messageId}),...e.responseSchema!==void 0&&{responseSchema:e.responseSchema}});return this.firePostUserMessageHooks(o.messageId),await this.onMessageHandle(o,e.turnId),{messageId:o.messageId}}async executeStart(e,t,n,r){await this.onBeforeDispatch?.();let i=this.getConnector(),a=t?.sessionContext?k.parse(t.sessionContext):void 0,o=await this.resolvePreUserMessageTurn({message:e,sessionContext:a,cwd:i.cwd}),s=this.deriveAndSetPendingStartMode(o.sessionContext),c=I(o.message),l={systemPrompt:n,messageHistory:s?void 0:o.sessionContext?.messageHistory,cacheStrategy:s?void 0:o.sessionContext?.cacheStrategy,turnContext:Q(o.sessionContext?.turnContext,r,this.adapterCapabilities),requestCorrelation:vt(o.sessionContext?.requestCorrelation,{sessionId:this.sessionId}),...r!==void 0&&{responseSchema:r}},u=await i.start(c,l);return this.firePostUserMessageHooks(u.messageHandle.messageId),await this.onMessageHandle(u.messageHandle,void 0),u}async resolvePreUserMessageTurn(e){return this.ephemeral?{message:e.message,sessionContext:e.sessionContext}:_e({agentId:this.agentId,adapterId:this.adapterId,message:e.message,sessionId:this.sessionId,cwd:e.cwd,sessionContext:e.sessionContext,messageId:e.messageId},this.globalBus)}firePostUserMessageHooks(e){ge({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,messageId:e},this.globalBus).catch(e=>{console.error(`[AIAgent] PostUserMessage hook error:`,e)})}};function yt(e){let t=e.globalBus.withFilter({agentId:e.agentId});return[t.on(w.sendMessage,e.onSendMessage),t.on(w.interrupt,e.onInterrupt),t.on(w.getCapabilities,t=>{t.setResult(e.getCapabilities())}),t.on(w.cwd.change,e.onCwdChange),t.on(w.model.change,e.onModelChange),t.on(w.mcp.servers.set,e.onMcpServersSet),t.on(w.credential.change,e.onCredentialChange)]}var bt=class{emitUsagePayload;emitContextWindowUpdatedPayload;emitToolUsePayload;emitToolOutputPayload;emitAdapterLogPayload;emitStepStartedPayload;emitStepFinishedPayload;toolCallTracker;getBlockIndex;incrementBlockIndex;getUsageModel;constructor(e){this.emitUsagePayload=e.emitUsage,this.emitContextWindowUpdatedPayload=e.emitContextWindowUpdated,this.emitToolUsePayload=e.emitToolUse,this.emitToolOutputPayload=e.emitToolOutput,this.emitAdapterLogPayload=e.emitAdapterLog,this.emitStepStartedPayload=e.emitStepStarted,this.emitStepFinishedPayload=e.emitStepFinished,this.toolCallTracker=e.toolCallTracker,this.getBlockIndex=e.getBlockIndex,this.incrementBlockIndex=e.incrementBlockIndex,this.getUsageModel=e.getUsageModel}async trackUsage(e){await this.emitUsagePayload({...e,model:this.getUsageModel()??`unknown`})}async emitContextWindowUpdate(e){let{currentTokens:t,maxTokens:n,cachedTokens:r}=e,i=n>0&&Number.isFinite(n)&&Number.isFinite(t),a=i?Math.min(100,t/n*100):0,o=i?a>=80?`critical`:a>=60?`warn`:`ok`:`critical`;await this.emitContextWindowUpdatedPayload({currentTokens:t,maxTokens:n,cachedTokens:r,percentage:a,level:o})}async emitToolUse(e,t,n){let r=this.toolCallTracker.register(e,t,n);return await this.emitToolUsePayload({toolName:e,args:t,toolCallId:r}),r}async emitToolOutput(e,t){let{correlationId:n,strategy:r,toolName:i,args:a}=this.toolCallTracker.resolve(t);if(!n){await this.emitAdapterLogPayload({level:`warn`,message:`Tool output arrived with no pending tool calls. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()});let n=crypto.randomUUID();return await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:t.toolName??i}),{toolCallId:n,toolName:t.toolName??i??`unknown`}}return r===`oldest`&&await this.emitAdapterLogPayload({level:`warn`,message:`Tool output correlation used fallback. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()}),await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:i,args:a}),{toolCallId:n,toolName:i??`unknown`,args:a}}async emitStepStarted(e,t,n){await this.emitStepStartedPayload({stepType:e,blockIndex:this.getBlockIndex(),blockData:t,content:n})}async emitStepFinished(e,t){await this.emitStepFinishedPayload({stepType:e,blockIndex:this.getBlockIndex(),content:t}),this.incrementBlockIndex()}},xt=class{sessionClosedEmitted=!1;agentStartedEmitted=!1;agentCompleteEmitted=!1;pendingErrorCategory;config;constructor(e){this.config=e}async emitStart(e){this.agentStartedEmitted=!0,this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0,await this.config.emitStarted(e)}resetTurnState(){this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0}async emitCompletion(e){if(this.agentCompleteEmitted)return;await this.config.onBeforeEmitCompletion(),this.agentCompleteEmitted=!0,this.config.clearToolCallTracker();let t=this.pendingErrorCategory;this.pendingErrorCategory=void 0,this.config.globalBus.requestOptional(M.updateStatus,{agentId:this.config.agentId,status:`idle`}),await this.config.emitComplete({...e,...t&&{errorCategory:t}})}emitError(e){this.config.clearToolCallTracker(),this.pendingErrorCategory=e.errorCategory}emitSessionClosed(e){this.sessionClosedEmitted||(this.sessionClosedEmitted=!0,this.config.emitSessionClosed({reason:e}).catch(e=>{console.warn(`[AIAgent] Failed to emit session.closed for agent ${this.config.agentId}:`,e)}))}},St=class{config;constructor(e){this.config=e}resolveConfirmedAdapterSessionId(){let e=this.config.getConnectorAdapterSessionId()??this.config.getLastKnownAdapterSessionId();return e!==void 0&&this.config.setLastKnownAdapterSessionId(e),e}resolveEventMetadata(e,t){if(!t)return{};let n=this.config.getEventMetadataDefaults();return{clientId:e.clientId??n.clientId,providerConfigId:e.providerConfigId??n.providerConfigId,occurredAt:e.occurredAt??n.occurredAt}}async enrichPayload(e,t,n){let r=e,i=t??this.config.getCurrentMessageId(),a=r.turnId??this.config.getCurrentTurnId(),o=this.resolveConfirmedAdapterSessionId(),{clientId:s,providerConfigId:c,occurredAt:l}=this.resolveEventMetadata(r,n?.includeEventMetadata??!0),u=this.config.getAgentContextBase();return{...e,agentId:u.agentId,adapterId:u.adapterId,adapterName:u.adapterName,...o!==void 0&&{adapterSessionId:o},...i!==void 0&&{messageId:i},...a!==void 0&&{turnId:a},...u.sessionId!==void 0&&{sessionId:u.sessionId},...s!==void 0&&{clientId:s},...c!==void 0&&{providerConfigId:c},...l!==void 0&&{occurredAt:l}}}async emitGlobal(e,t,n){let r=await this.enrichPayload(t,t.messageId,n);await this.config.globalBus.emit(e,r)}},Ct=class{queuedSequences=new Map;appliedSequences=new Map;barrier=Promise.resolve();queue(e,t){if(!Number.isSafeInteger(t)||t<0)return!1;let n=this.appliedSequences.get(e);if(n!==void 0&&t<=n)return!1;let r=this.queuedSequences.get(e);return r!==void 0&&t<=r?!1:(this.queuedSequences.set(e,t),!0)}isLatest(e,t){return this.queuedSequences.get(e)===t}markApplied(e,t){let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.appliedSequences.set(e,t),this.queuedSequences.get(e)===t&&this.queuedSequences.delete(e)}release(e,t){if(this.queuedSequences.get(e)!==t)return;let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.queuedSequences.delete(e)}clear(e){this.queuedSequences.delete(e),this.appliedSequences.delete(e)}async runExclusive(e){let t=this.barrier,n;this.barrier=new Promise(e=>{n=e}),await t;try{return await e()}finally{n?.()}}};async function wt(e){let{bus:t,agentId:n,currentModel:r,nextModel:i,skipWarning:a}=e;if(a)return{proceed:!0,requestEditHistory:!1};let o=await t.requestOptional(w.validateModelChange,{agentId:n,currentModel:r,nextModel:i});return o.handled?{proceed:o.data.proceed,requestEditHistory:o.data.requestEditHistory??!1}:{proceed:!0,requestEditHistory:!1}}var Tt=class{getConnector;swapConnector;setMcpSessionContext;stagedMcpServersSet;constructor(e){this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.setMcpSessionContext=e.setMcpSessionContext}async applyStagedMutation(){let e=this.stagedMcpServersSet;if(e===void 0)return;this.stagedMcpServersSet=void 0;let t=await this.handleMcpServersSet(e);if(!t.success)throw Error(`Failed to apply staged MCP server replacement: ${t.reason??`unknown error`}`)}async handleMcpServersSet(e){if(this.getConnector().getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedMcpServersSet={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0}):{success:!1,reason:`turn_active`};try{return await this.swapConnector({mcpSessionContext:e.mcpSessionContext}),this.setMcpSessionContext(e.mcpSessionContext),{success:!0,swapped:!0}}catch(e){return{success:!1,reason:`mcp_servers_set_failed: ${e.message}`}}}},Et=class{agentId;sessionId;globalBus;getConnector;swapConnector;emitCwdChanged;emitModelChanged;getProviderContext;setProviderContext;setReasoningEffort;setMcpSessionContext;resolveSupportedReasoningLevels;mcpServersMutationManager;credentialChangeSequencer=new Ct;stagedModelChange;constructor(e){this.agentId=e.agentId,this.sessionId=e.sessionId,this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.emitCwdChanged=e.emitCwdChanged,this.emitModelChanged=e.emitModelChanged,this.getProviderContext=e.getProviderContext,this.setProviderContext=e.setProviderContext,this.setReasoningEffort=e.setReasoningEffort,this.setMcpSessionContext=e.setMcpSessionContext,this.resolveSupportedReasoningLevels=e.resolveSupportedReasoningLevels,this.mcpServersMutationManager=new Tt({getConnector:this.getConnector,swapConnector:this.swapConnector,setMcpSessionContext:this.setMcpSessionContext})}async handleCwdChange(e){let t=this.getConnector(),{newCwd:n}=e;if(t.cwd===n)return{success:!0};if(t.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let e=t.cwd;return await t.changeCwdInPlace(n).catch(()=>!1)?t.cwd=n:await this.swapConnector({cwd:n}),await this.persistRuntimeMutation({cwd:n}),await this.emitCwdChanged({previousCwd:e,newCwd:n}),{success:!0,previousCwd:e}}catch(e){return{success:!1,reason:`cwd_change_failed: ${e.message}`}}}async applyStagedMutations(){if(this.getConnector().getProcessingState()!==`idle`)return;let e=this.stagedModelChange;if(e!==void 0){this.stagedModelChange=void 0;let t=await this.handleModelChange(e);if(!t.success)throw Error(`Failed to apply staged model change: ${t.reason??`unknown error`}`)}await this.mcpServersMutationManager.applyStagedMutation()}async handleMcpServersSet(e){return this.mcpServersMutationManager.handleMcpServersSet(e)}async handleModelChange(e){let t=this.getConnector(),{newModel:n,reasoningEffort:r,skipWarning:i}=e,a=e.providerContext,o=t.model,s=t.currentReasoningEffort,c=this.getProviderContext(),l=this.hasProviderContextChanged(c,a);if(!n&&!r&&!l)return{success:!0,swapped:!1};if(t.getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedModelChange={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0,...n!==void 0&&{model:n}}):{success:!1,reason:`turn_active`};if(!n&&!l)return this.handleReasoningOnlyChange(t,o,s,r);let u=n??o;return o===u&&!l?r===void 0?{success:!0,swapped:!1}:this.handleReasoningOnlyChange(t,o,s,r):this.handleModelSwap({connector:t,currentModel:o,newModel:u,reasoningEffort:r,previousReasoningEffort:s,providerContext:a,isProviderChange:l,skipWarning:i})}async handleReasoningOnlyChange(e,t,n,r){if(e.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let i=await e.changeReasoningInPlace(r).catch(()=>!1);i||await this.swapConnector({model:e.model});let a=this.getConnector(),o=this.resolveReasoningEffort(r,n,a.supportedReasoningLevels);return a.currentReasoningEffort=o,this.setReasoningEffort(o),await this.emitModelChanged({previousModel:t,newModel:t,previousReasoningEffort:n,newReasoningEffort:o}),{success:!0,swapped:!i,model:t,appliedReasoningEffort:o,supportedReasoningLevels:a.supportedReasoningLevels}}catch(e){return{success:!1,reason:`reasoning_change_failed: ${e.message}`}}}async handleModelSwap(e){let{connector:t,currentModel:n,newModel:r,reasoningEffort:i,previousReasoningEffort:a,providerContext:o,isProviderChange:s,skipWarning:c}=e;try{let e=!s&&await t.changeModelInPlace(r).catch(()=>!1);if(e)t.model=r,t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r);else{let e=await this.confirmConnectorSwap(n,r,c);if(!e.proceed)return e.result;await this.swapConnector({model:r,...o&&{providerContext:o}}),o&&this.setProviderContext(o);let t=this.getConnector();t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r),e.requestEditHistory&&this.sessionId&&await this.globalBus.emit(A.connectorSwap.editRequested,{sessionId:this.sessionId,agentId:this.agentId,previousModel:n,newModel:r})}let l=this.getConnector(),u=l.supportedReasoningLevels,d=this.resolveReasoningEffort(i,a,u);l.currentReasoningEffort=d,this.setReasoningEffort(d),d!==void 0&&await l.changeReasoningInPlace(d).catch(()=>{});let f=n!==r||d!==a;return(n!==r||s)&&await this.persistRuntimeMutation({...n!==r&&{model:r},...s&&o&&{providerConfigId:o.providerConfigId}}),f&&await this.emitModelChanged({previousModel:n,newModel:r,previousReasoningEffort:a,newReasoningEffort:d}),{success:!0,swapped:!e,model:r,appliedReasoningEffort:d,supportedReasoningLevels:u}}catch(e){return{success:!1,reason:`model_change_failed: ${e.message}`}}}resolveReasoningEffort(e,t,n){if(!n||Object.keys(n).length===0)return;let r=e=>e in n;return e!==void 0&&r(e)?e:t!==void 0&&r(t)?t:r(`medium`)?`medium`:Object.keys(n)[0]}async confirmConnectorSwap(e,t,n){if(e===t)return{proceed:!0,requestEditHistory:!1};let r=await wt({bus:this.globalBus,agentId:this.agentId,currentModel:e,nextModel:t,skipWarning:n});return r.proceed?{proceed:!0,requestEditHistory:r.requestEditHistory}:{proceed:!1,result:{success:!1,reason:`cancelled`}}}hasProviderContextChanged(e,t){return t===void 0?!1:e===void 0?!0:e.providerConfigId!==t.providerConfigId||e.definitionId!==t.definitionId||!this.haveEqualStringRecords(e.endpointOverrides,t.endpointOverrides)||!this.haveEqualStringRecords(e.credentialEnvVars,t.credentialEnvVars)||!this.haveEqualStringRecords(e.credentialRefs,t.credentialRefs)}haveEqualStringRecords(e,t){if(e===t)return!0;let n=e?Object.keys(e):[],r=t?Object.keys(t):[];return n.length===r.length?n.every(n=>e[n]===t[n]):!1}async handleCredentialChanged(e){let t=this.getProviderContext()?.providerConfigId;return t&&t!==e.providerConfigId?{success:!1,reason:`provider_mismatch`}:this.credentialChangeSequencer.queue(e.providerConfigId,e.changeSequence)?this.credentialChangeSequencer.runExclusive(async()=>{let t=this.getProviderContext()?.providerConfigId;if(t&&t!==e.providerConfigId)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`provider_mismatch`};if(!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))return{success:!1,reason:`stale_change`};let n=this.getConnector();if(n.getProcessingState()!==`idle`)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`};let r=e.credentialRefs;try{let t=await j(this.globalBus,e.providerConfigId);return t.credentialRefs=r,!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence)||(await ve(this.globalBus,t),!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))?{success:!1,reason:`stale_change`}:n.getProcessingState()===`idle`?(await this.swapConnector({providerContext:t}),this.setProviderContext(t),this.credentialChangeSequencer.markApplied(e.providerConfigId,e.changeSequence),await this.persistRuntimeMutation({providerConfigId:t.providerConfigId}),{success:!0,swapped:!0}):(this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`})}catch(t){return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`credential_swap_failed: ${t instanceof Error?t.message:String(t)}`}}}):{success:!1,reason:`stale_change`}}async persistRuntimeMutation(e){await this.globalBus.requestOptional(M.updateRuntime,{agentId:this.agentId,cwd:e.cwd,model:e.model,providerConfigId:e.providerConfigId})}},Dt=class{connectorWiringCleanups=[];config;constructor(e){this.config=e}addConnectorWiringCleanup(e){this.connectorWiringCleanups.push(e)}clearConnectorWiring(){for(let e of this.connectorWiringCleanups)try{e()}catch(e){console.warn(`[AIAgent] Connector wiring cleanup failed for agent ${this.config.agentId}:`,e)}this.connectorWiringCleanups=[]}async wireAllConnectorEvents(e){let t=e.onProcessingStateChanged(e=>{e===`idle`&&this.config.emitIdle().catch(e=>{console.warn(`[AIAgent] Failed to emit idle for agent ${this.config.agentId}:`,e)})});this.addConnectorWiringCleanup(t),await this.config.wireEvents(e)}async swapConnector(e){let t=this.config.getConnector();if(t.getProcessingState()!==`idle`)throw Error(`Cannot swap connector while processing (state: ${t.getProcessingState()})`);let n=this.config.buildConfigInput({cwd:e?.cwd??t.cwd,model:e?.model??t.model,...e?.providerContext&&{providerContext:e.providerContext},...e?.mcpSessionContext&&{mcpSessionContext:e.mcpSessionContext},adapterSessionId:e?.adapterSessionId??crypto.randomUUID(),...e?.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:e.resumeAdapterSessionId}}),r=await this.config.configFactory(n),i=await this.config.connectorFactory({...r,onMessageSent:this.config.createOnMessageSent()}),a=this.connectorWiringCleanups;this.connectorWiringCleanups=[];try{await this.wireAllConnectorEvents(i),await i.initialize({systemPrompt:this.config.getRuntimeSystemPrompt()})}catch(e){try{await i.close()}catch(e){console.warn(`[AIAgent] Failed to close newly-created connector for agent ${this.config.agentId}:`,e)}throw this.connectorWiringCleanups=a,e}let o=i.getConfirmedAdapterSessionId();o!==void 0&&this.config.setLastKnownAdapterSessionId(o);for(let e of a)try{e()}catch(e){console.warn(`[AIAgent] Previous connector cleanup failed during swap for agent ${this.config.agentId}:`,e)}let s=t;this.config.setConnector(i);try{await s.close()}catch(e){console.warn(`[AIAgent] Failed to close previous connector for agent ${this.config.agentId}:`,e)}}};function Ot(e){return new St({globalBus:e.globalBus,getAgentContextBase:e.getAgentContextBase,getCurrentMessageId:()=>e.lifecycleTracker.getCurrentMessageId(),getCurrentTurnId:()=>e.lifecycleTracker.getCurrentTurnId(),getConnectorAdapterSessionId:e.getConnectorAdapterSessionId,getLastKnownAdapterSessionId:e.getLastKnownAdapterSessionId,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId,getEventMetadataDefaults:e.getEventMetadataDefaults})}function kt(e){return new bt({emitUsage:async t=>{await e.emitGlobal(w.usage,t)},emitContextWindowUpdated:async t=>{await e.emitGlobal(w.contextWindow.updated,t)},emitToolUse:async t=>{await e.emitGlobal(w.tool.use,t)},emitToolOutput:async t=>{await e.emitGlobal(w.tool.output,t)},emitAdapterLog:async t=>{await e.emitGlobal(C.log,t,{includeEventMetadata:!1})},emitStepStarted:async t=>{await e.emitGlobal(w.step.started,t)},emitStepFinished:async t=>{await e.emitGlobal(w.step.finished,t)},toolCallTracker:e.toolCallTracker,getBlockIndex:e.getBlockIndex,incrementBlockIndex:e.incrementBlockIndex,getUsageModel:e.getUsageModel})}function At(e){return new xt({agentId:e.agentId,globalBus:e.globalBus,emitStarted:async t=>{await e.emitGlobal(w.started,t)},emitComplete:async t=>{await e.emitGlobal(w.complete,t)},emitSessionClosed:async t=>{await e.emitGlobal(w.session.closed,t)},onBeforeEmitCompletion:e.onBeforeEmitCompletion,clearToolCallTracker:e.clearToolCallTracker})}function jt(e){return new $(e)}function Mt(e){return new Et({agentId:e.agentId,sessionId:e.sessionId,globalBus:e.globalBus,getConnector:e.getConnector,swapConnector:e.swapConnector,emitCwdChanged:async t=>{await e.emitGlobal(w.cwd.changed,t)},emitModelChanged:async t=>{await e.emitGlobal(w.model.changed,t)},getProviderContext:e.getProviderContext,setProviderContext:e.setProviderContext,setReasoningEffort:e.setReasoningEffort,setMcpSessionContext:e.setMcpSessionContext,resolveSupportedReasoningLevels:e.resolveSupportedReasoningLevels})}function Nt(e){return new Dt({agentId:e.agentId,buildConfigInput:e.buildConfigInput,configFactory:e.configFactory,connectorFactory:e.connectorFactory,createOnMessageSent:e.createOnMessageSent,wireEvents:e.wireEvents,emitIdle:async()=>{await e.emitGlobal(w.idle,{})},getConnector:e.getConnector,setConnector:e.setConnector,getRuntimeSystemPrompt:e.getRuntimeSystemPrompt,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId})}var Pt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicAnchor=void 0;let t=b(),n=f(),r=d(),i=y(),a={keyword:`$dynamicAnchor`,schemaType:`string`,code:e=>o(e,e.schema)};function o(e,r){let{gen:i,it:a}=e;a.schemaEnv.root.dynamicAnchors[r]=!0;let o=(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(r)}`,c=a.errSchemaPath===`#`?a.validateName:s(e);i.if((0,t._)`!${o}`,()=>i.assign(o,c))}e.dynamicAnchor=o;function s(e){let{schemaEnv:t,schema:n,self:a}=e.it,{root:o,baseId:s,localRefs:c,meta:l}=t.root,{schemaId:u}=a.opts,d=new r.SchemaEnv({schema:n,schemaId:u,root:o,baseId:s,localRefs:c,meta:l});return r.compileSchema.call(a,d),(0,i.getValidate)(e,d)}e.default=a})),Ft=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicRef=void 0;let t=b(),n=f(),r=y(),i={keyword:`$dynamicRef`,schemaType:`string`,code:e=>a(e,e.schema)};function a(e,i){let{gen:a,keyword:o,it:s}=e;if(i[0]!==`#`)throw Error(`"${o}" only supports hash fragment reference`);let c=i.slice(1);if(s.allErrors)l();else{let t=a.let(`valid`,!1);l(t),e.ok(t)}function l(e){if(s.schemaEnv.root.dynamicAnchors[c]){let r=a.let(`_v`,(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(c)}`);a.if(r,u(r,e),u(s.validateName,e))}else u(s.validateName,e)()}function u(t,n){return n?()=>a.block(()=>{(0,r.callRef)(e,t),a.let(n,!0)}):()=>(0,r.callRef)(e,t)}}e.dynamicRef=a,e.default=i})),It=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Pt(),n=s();e.default={keyword:`$recursiveAnchor`,schemaType:`boolean`,code(e){e.schema?(0,t.dynamicAnchor)(e,``):(0,n.checkStrictMode)(e.it,`$recursiveAnchor: false is ignored`)}}})),Lt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ft();e.default={keyword:`$recursiveRef`,schemaType:`string`,code:e=>(0,t.dynamicRef)(e,e.schema)}})),Rt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Pt(),n=Ft(),r=It(),i=Lt();e.default=[t.default,n.default,r.default,i.default]})),zt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=ne();e.default={keyword:`dependentRequired`,type:`object`,schemaType:`object`,error:t.error,code:e=>(0,t.validatePropertyDeps)(e)}})),Bt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=ne();e.default={keyword:`dependentSchemas`,type:`object`,schemaType:`object`,code:e=>(0,t.validateSchemaDeps)(e)}})),Vt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=s();e.default={keyword:[`maxContains`,`minContains`],type:`array`,schemaType:`number`,code({keyword:e,parentSchema:n,it:r}){n.contains===void 0&&(0,t.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}}})),Ht=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=zt(),n=Bt(),r=Vt();e.default=[t.default,n.default,r.default]})),Ut=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=b(),n=s(),r=f();e.default={keyword:`unevaluatedProperties`,type:`object`,schemaType:[`boolean`,`object`],trackErrors:!0,error:{message:`must NOT have unevaluated properties`,params:({params:e})=>(0,t._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},code(e){let{gen:i,schema:a,data:o,errsCount:s,it:c}=e;if(!s)throw Error(`ajv implementation error`);let{allErrors:l,props:u}=c;u instanceof t.Name?i.if((0,t._)`${u} !== true`,()=>i.forIn(`key`,o,e=>i.if(f(u,e),()=>d(e)))):u!==!0&&i.forIn(`key`,o,e=>u===void 0?d(e):i.if(p(u,e),()=>d(e))),c.props=!0,e.ok((0,t._)`${s} === ${r.default.errors}`);function d(r){if(a===!1){e.setParams({unevaluatedProperty:r}),e.error(),l||i.break();return}if(!(0,n.alwaysValidSchema)(c,a)){let a=i.name(`valid`);e.subschema({keyword:`unevaluatedProperties`,dataProp:r,dataPropType:n.Type.Str},a),l||i.if((0,t.not)(a),()=>i.break())}}function f(e,n){return(0,t._)`!${e} || !${e}[${n}]`}function p(e,n){let r=[];for(let i in e)e[i]===!0&&r.push((0,t._)`${n} !== ${i}`);return(0,t.and)(...r)}}}})),Wt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=b(),n=s();e.default={keyword:`unevaluatedItems`,type:`array`,schemaType:[`boolean`,`object`],error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{gen:r,schema:i,data:a,it:o}=e,s=o.items||0;if(s===!0)return;let c=r.const(`len`,(0,t._)`${a}.length`);if(i===!1)e.setParams({len:s}),e.fail((0,t._)`${c} > ${s}`);else if(typeof i==`object`&&!(0,n.alwaysValidSchema)(o,i)){let n=r.var(`valid`,(0,t._)`${c} <= ${s}`);r.if((0,t.not)(n),()=>l(n,s)),e.ok(n)}o.items=!0;function l(i,a){r.forRange(`i`,a,c,a=>{e.subschema({keyword:`unevaluatedItems`,dataProp:a,dataPropType:n.Type.Num},i),o.allErrors||r.if((0,t.not)(i),()=>r.break())})}}}})),Gt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ut(),n=Wt();e.default=[t.default,n.default]})),Kt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/schema`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format`},{$ref:`meta/content`}],type:[`object`,`boolean`],properties:{definitions:{$comment:`While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.`,type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},dependencies:{$comment:`"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"`,type:`object`,additionalProperties:{anyOf:[{$recursiveRef:`#`},{$ref:`meta/validation#/$defs/stringArray`}]}}}}})),qt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/applicator":!0},$recursiveAnchor:!0,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{additionalItems:{$recursiveRef:`#`},unevaluatedItems:{$recursiveRef:`#`},items:{anyOf:[{$recursiveRef:`#`},{$ref:`#/$defs/schemaArray`}]},contains:{$recursiveRef:`#`},additionalProperties:{$recursiveRef:`#`},unevaluatedProperties:{$recursiveRef:`#`},properties:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$recursiveRef:`#`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$recursiveRef:`#`}},propertyNames:{$recursiveRef:`#`},if:{$recursiveRef:`#`},then:{$recursiveRef:`#`},else:{$recursiveRef:`#`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$recursiveRef:`#`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$recursiveRef:`#`}}}}})),Jt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/content`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentMediaType:{type:`string`},contentEncoding:{type:`string`},contentSchema:{$recursiveRef:`#`}}}})),Yt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/core`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0},$recursiveAnchor:!0,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{type:`string`,format:`uri`},$anchor:{type:`string`,pattern:`^[A-Za-z][-A-Za-z0-9.:_]*$`},$ref:{type:`string`,format:`uri-reference`},$recursiveRef:{type:`string`,format:`uri-reference`},$recursiveAnchor:{type:`boolean`,default:!1},$vocabulary:{type:`object`,propertyNames:{type:`string`,format:`uri`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}}}}})),Xt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/format`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/format":!0},$recursiveAnchor:!0,title:`Format vocabulary meta-schema`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),Zt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/meta-data":!0},$recursiveAnchor:!0,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),Qt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/validation":!0},$recursiveAnchor:!0,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}},const:!0,enum:{type:`array`,items:!0},type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),$t=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Kt(),n=qt(),r=Jt(),i=Yt(),a=Xt(),o=Zt(),s=Qt(),c=[`/properties`];function l(e){return[t,n,r,i,l(this,a),o,l(this,s)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function l(t,n){return e?t.$dataMetaSchema(n,c):n}}e.default=l})),en=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2019=void 0;let n=u(),r=te(),i=Rt(),a=Ht(),o=Gt(),s=_(),c=$t(),l=`https://json-schema.org/draft/2019-09/schema`;var d=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),this.addVocabulary(i.default),r.default.forEach(e=>this.addVocabulary(e)),this.addVocabulary(a.default),this.addVocabulary(o.default),this.opts.discriminator&&this.addKeyword(s.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(c.default.call(this,e),this.refs[`http://json-schema.org/schema`]=l)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}};e.Ajv2019=d,t.exports=e=d,t.exports.Ajv2019=d,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=d;var f=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return f.KeywordCxt}});var m=b();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return m._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return m.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return m.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return m.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return m.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return m.CodeGen}});var h=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return h.default}});var ee=v();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return ee.default}})})),tn=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=h(),n=l(),r=ee(),i=Rt(),a=Ht(),o=Gt(),s=c(),u=m();e.default=[i.default,t.default,n.default,(0,r.default)(!0),s.default,u.metadataVocabulary,u.contentVocabulary,a.default,o.default]})),nn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}}})),rn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}}})),an=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}}})),on=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}}})),sn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}}})),cn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),ln=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),un=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),dn=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=nn(),n=rn(),r=an(),i=on(),a=sn(),o=cn(),s=ln(),c=un(),l=[`/properties`];function u(e){return[t,n,r,i,a,u(this,o),s,u(this,c)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function u(t,n){return e?t.$dataMetaSchema(n,l):n}}e.default=u})),fn=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2020=void 0;let n=u(),r=tn(),i=_(),a=dn(),o=`https://json-schema.org/draft/2020-12/schema`;var s=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),r.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(a.default.call(this,e),this.refs[`http://json-schema.org/schema`]=o)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}};e.Ajv2020=s,t.exports=e=s,t.exports.Ajv2020=s,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=s;var c=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return c.KeywordCxt}});var l=b();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return l._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return l.CodeGen}});var d=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return d.default}});var f=v();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return f.default}})})),pn=e(re(),1),mn=e(en(),1),hn=e(fn(),1);const gn=new Set([`https://json-schema.org/draft/2019-09/schema`,`https://json-schema.org/draft/2019-09/schema#`]),_n=new Set([`https://json-schema.org/draft/2020-12/schema`,`https://json-schema.org/draft/2020-12/schema#`]);var vn=class{bus;agentId;adapterId;adapterCapabilities;draft07Ajv=new pn.default({allErrors:!0,strict:!1});draft2019Ajv=new mn.default({allErrors:!0,strict:!1});draft2020Ajv=new hn.default({allErrors:!0,strict:!1});validatorCache=new WeakMap;constructor(e){this.bus=e.bus,this.agentId=e.agentId,this.adapterId=e.adapterId,this.adapterCapabilities=e.adapterCapabilities}registerDefaultHandlers(){let e=this.bus.withFilter({agentId:this.agentId});return[e.on(w.structuredOutput.retryPolicy,e=>{e.setResult({maxRetries:0})},{priority:-1e3}),e.on(w.structuredOutput.enforce,e=>{e.setResult({enforced:!1,error:`No enforce handler registered`})},{priority:-1e3})]}async validateTerminalResult(e){let{responseSchema:t,message:n,sessionId:r}=e,i=this.validate(t,n);if(i.valid)return{message:n,structuredOutputValidation:{status:`passed`}};let a=n??``,o=i.errors;if(e.retryTurn){let n=await this.bus.requestOptional(w.structuredOutput.retryPolicy,{agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.adapterCapabilities,responseSchema:t,attemptNumber:1}),r=n.handled?n.data.maxRetries:0;for(let n=1;n<=r;n+=1){a=await e.retryTurn({attemptNumber:n,validationErrors:o});let r=this.validate(t,a);if(r.valid)return{message:a,structuredOutputValidation:{status:`passed`}};o=r.errors}}let s=await this.bus.requestOptional(w.structuredOutput.enforce,{agentId:this.agentId,adapterId:this.adapterId,sessionId:r,responseSchema:t,rawOutput:a,validationErrors:o,adapterHasCapability:this.adapterCapabilities.includes(`structuredOutput`)});if(s.handled&&s.data.enforced===!0&&s.data.output!==void 0){let{valid:e}=this.validate(t,s.data.output);if(e)return{message:s.data.output,structuredOutputValidation:{status:`enforced`}}}return{message:a,structuredOutputValidation:{status:`failed`,errors:o}}}validate(e,t){if(t===void 0||t===``)return{valid:!1,errors:[{message:`Expected JSON output but received empty string`,instancePath:``,schemaPath:`#`}]};let n;try{n=JSON.parse(t)}catch{return{valid:!1,errors:[{message:`Output is not valid JSON: ${t.slice(0,120)}`,instancePath:``,schemaPath:`#`}]}}let r=this.getValidator(e);if(r(n))return{valid:!0,errors:[]};let i=this.normalizeErrors(r.errors??[]);return i.length===0&&i.push({message:`Schema validation failed`,instancePath:``,schemaPath:`#`}),{valid:!1,errors:i}}getValidator(e){let t=this.validatorCache.get(e.schema);if(t!==void 0)return t;let n=this.getValidatorCompileTarget(e.schema),r;try{r=n.compiler.compile(n.schema)}catch(e){r=this.createCompileFailureValidator(e)}return this.validatorCache.set(e.schema,r),r}createCompileFailureValidator(e){let t=[{keyword:`schema`,instancePath:``,schemaPath:`#`,params:{},message:`Failed to compile response schema: ${e instanceof Error?e.message:String(e)}`}],n=this.draft07Ajv.compile({});return Object.assign(e=>!1,{errors:t,schema:n.schema,schemaEnv:n.schemaEnv})}getValidatorCompileTarget(e){let t=this.readSchemaUri(e),n=t===void 0?void 0:this.normalizeDraft202012Uri(t),r=t===void 0?void 0:this.normalizeDraft201909Uri(t);return n!==void 0&&_n.has(n)?{compiler:this.draft2020Ajv,schema:this.withSchemaUri(e,n)}:r!==void 0&&gn.has(r)?{compiler:this.draft2019Ajv,schema:this.withSchemaUri(e,r)}:{compiler:this.draft07Ajv,schema:this.withoutSchemaUri(e)}}readSchemaUri(e){let t=e.$schema;return typeof t==`string`?t:void 0}normalizeDraft202012Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2020-12\/schema#?$/,e=>e.replace(`http://`,`https://`))}normalizeDraft201909Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2019-09\/schema#?$/,e=>e.replace(`http://`,`https://`))}withSchemaUri(e,t){return e.$schema===t?e:{...e,$schema:t}}withoutSchemaUri(e){if(e.$schema===void 0)return e;let t={...e};return delete t.$schema,t}normalizeErrors(e){return e.map(e=>({message:e.message??`Validation error`,instancePath:e.instancePath,schemaPath:e.schemaPath}))}},yn=class{connector;confirmedModel;initialModel;lastKnownAdapterSessionId;busHandlerCleanups=[];initialized=!1;runtimeSystemPrompt;lifecycleTracker=new Y({emitGlobal:this.emitGlobal.bind(this)});toolCallTracker=new X;eventBridge;turnExecutor;runtimeMutationManager;connectorLifecycleManager;payloadEmitter;lifecycleEmitter;structuredOutputManager;latestMessageCompletion;currentBlockIndex=0;pendingStartMode;config;availableModels;constructor(e){this.config={...e,globalBus:e.globalBus??S},this.availableModels=e.availableModels;let t=e=>{this.lastKnownAdapterSessionId=e};this.payloadEmitter=Ot({globalBus:this.globalBus,getAgentContextBase:this.getAgentContextBase.bind(this),lifecycleTracker:this.lifecycleTracker,getConnectorAdapterSessionId:()=>this.connector?.getConfirmedAdapterSessionId(),getLastKnownAdapterSessionId:()=>this.lastKnownAdapterSessionId,setLastKnownAdapterSessionId:t,getEventMetadataDefaults:this.getEventMetadataDefaults.bind(this)});let n=this.payloadEmitter.emitGlobal.bind(this.payloadEmitter);this.eventBridge=kt({emitGlobal:n,toolCallTracker:this.toolCallTracker,getBlockIndex:this.getBlockIndex.bind(this),incrementBlockIndex:this.incrementBlockIndex.bind(this),getUsageModel:()=>this.confirmedModel??this.initialModel}),this.turnExecutor=jt({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,adapterCapabilities:this.capabilities,globalBus:this.globalBus,getConnector:()=>this.connector,shouldUseNativeResume:this.shouldUseNativeResume.bind(this),hasResumeTarget:()=>this.config.resumeAdapterSessionId!==void 0,setPendingStartMode:this.setPendingStartMode.bind(this),onMessageHandle:this.onMessageHandle.bind(this),onBeforeDispatch:()=>this.runtimeMutationManager.applyStagedMutations(),ephemeral:this.config.ephemeral}),this.runtimeMutationManager=Mt({agentId:this.agentId,sessionId:this.sessionId,globalBus:this.globalBus,getConnector:()=>this.connector,swapConnector:this.swapConnector.bind(this),emitGlobal:n,getProviderContext:()=>this.config.providerContext,setProviderContext:e=>void(this.config.providerContext=e),setReasoningEffort:e=>void(this.config.reasoningEffort=e),setMcpSessionContext:e=>this.config.mcpSessionContext=e,resolveSupportedReasoningLevels:e=>Z(this.availableModels,e)}),this.connectorLifecycleManager=Nt({agentId:this.agentId,buildConfigInput:this.buildConfigInput.bind(this),configFactory:this.config.configFactory,connectorFactory:this.config.connectorFactory,createOnMessageSent:this.createOnMessageSent.bind(this),wireEvents:this.wireEvents.bind(this),emitGlobal:n,getConnector:()=>this.connector,setConnector:e=>{this.connector=e},getRuntimeSystemPrompt:()=>this.runtimeSystemPrompt,setLastKnownAdapterSessionId:t}),this.lifecycleEmitter=At({agentId:this.agentId,globalBus:this.globalBus,emitGlobal:n,onBeforeEmitCompletion:this.onBeforeEmitCompletion.bind(this),clearToolCallTracker:()=>this.toolCallTracker.clear()}),this.structuredOutputManager=new vn({bus:this.globalBus,agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.capabilities})}getAgentContextBase(){return{agentId:this.agentId,adapterId:this.adapterId,adapterName:this.adapterName,sessionId:this.sessionId}}getEventMetadataDefaults(){return{clientId:this.config.clientId,providerConfigId:this.connector?.providerConfigId??this.config.providerContext?.providerConfigId,occurredAt:Date.now()}}get agentId(){return this.config.agentId}get adapterId(){return this.config.adapterId}get adapterName(){return this.config.adapterName}get capabilities(){return this.config.capabilities}get nativeTools(){return this.config.nativeTools}get sessionId(){return this.config.sessionId}get adapterSessionId(){return this.config.adapterSessionId}get globalBus(){return this.config.globalBus}async init(){if(this.initialized)throw Error(`AIAgent ${this.agentId} already initialized. init() can only be called once.`);let e=this.buildConfigInput(),t=await this.config.configFactory(e);this.connector=await this.config.connectorFactory({...t,onMessageSent:this.createOnMessageSent()}),this.config.nativeFork=void 0,this.busHandlerCleanups.push(...yt({globalBus:this.globalBus,agentId:this.agentId,onSendMessage:async e=>{await this.sendMessage(e)},onInterrupt:async e=>{await this.handleInterrupt(e)},getCapabilities:()=>({capabilities:this.capabilities,nativeTools:this.nativeTools,model:this.connector?.model??this.confirmedModel??this.initialModel}),onCwdChange:async e=>{e.setResult(await this.runtimeMutationManager.handleCwdChange(e.payload))},onModelChange:async e=>{e.setResult(await this.runtimeMutationManager.handleModelChange(e.payload))},onMcpServersSet:async e=>{e.setResult(await this.runtimeMutationManager.handleMcpServersSet(e.payload))},onCredentialChange:async e=>{e.setResult(await this.runtimeMutationManager.handleCredentialChanged(e.payload))}}),...this.structuredOutputManager.registerDefaultHandlers()),this.sessionId&&this.busHandlerCleanups.push(this.globalBus.on(A.turn.started,e=>{e.payload.agentIds.includes(this.agentId)&&this.connector.setCanonicalTurnNumber(e.payload.turnNumber)},{filter:{sessionId:this.sessionId}})),this.busHandlerCleanups.push(this.globalBus.on(D.tools.updated,()=>{this.connector.markToolRefreshPending()}),this.globalBus.on(D.tools.enabled,()=>{this.connector.markToolRefreshPending()})),await this.connectorLifecycleManager.wireAllConnectorEvents(this.connector),this.initialized=!0}async emitStart(e){let t=this.pendingStartMode??`rotation`;this.pendingStartMode=void 0,this.currentBlockIndex=0,await this.lifecycleEmitter.emitStart({model:this.connector.model,cwd:this.connector.cwd,startMode:t,...e})}setPendingStartMode(e){this.pendingStartMode=e}async emitCompletion(e){await this.lifecycleEmitter.emitCompletion(e)}emitError(e){this.lifecycleEmitter.emitError(e)}emitSessionClosed(e){this.lifecycleEmitter.emitSessionClosed(e)}async enrichPayload(e){return this.payloadEmitter.enrichPayload(e)}async emitGlobal(e,t){await this.payloadEmitter.emitGlobal(e,t)}async trackUsage(e){await this.eventBridge.trackUsage(e)}getContextWindowSize(e){let t=e??this.confirmedModel??this.initialModel;if(!(!t||!this.availableModels))return this.availableModels.find(e=>e.name===t)?.contextWindowSize}async emitContextWindowUpdate(e){await this.eventBridge.emitContextWindowUpdate(e)}async emitToolUse(e,t,n){return this.eventBridge.emitToolUse(e,t,n)}async emitToolOutput(e,t){return this.eventBridge.emitToolOutput(e,t)}async emitStepStarted(e,t,n){await this.eventBridge.emitStepStarted(e,t,n)}async emitStepFinished(e,t){await this.eventBridge.emitStepFinished(e,t)}getBlockIndex(){return this.currentBlockIndex}incrementBlockIndex(){this.currentBlockIndex++}async sendMessage(e){this.globalBus.requestOptional(M.updateStatus,{agentId:this.agentId,status:`active`}),this.lifecycleTracker.setCurrentTurnId(e.payload.turnId);try{let t=await this.turnExecutor.executeSendMessage(e.payload);e.setResult(t)}catch(e){throw this.lifecycleTracker.clearCurrentTurnId(),e}}async handleInterrupt(e){try{await this.ensureConnector().interrupt(),e.setResult({success:!0})}catch(t){e.setResult({success:!1,reason:t instanceof Error?t.message:String(t)})}}addConnectorWiringCleanup(e){this.connectorLifecycleManager.addConnectorWiringCleanup(e)}addBusHandlerCleanup(e){this.busHandlerCleanups.push(e)}async swapConnector(e){await this.connectorLifecycleManager.swapConnector(e),e?.providerContext!==void 0&&(this.config.providerContext=e.providerContext),e?.mcpSessionContext!==void 0&&(this.config.mcpSessionContext=e.mcpSessionContext)}buildConfigInput(e){return gt({config:this.config,availableModels:this.availableModels,currentReasoningEffort:this.connector?.currentReasoningEffort??this.config.reasoningEffort,emitError:this.emitError.bind(this),overrides:e})}createOnMessageSent(){return e=>{this.emitGlobal(w.user_message.sent,{messageId:e.messageId,content:e.message,deliveryMode:e.deliveryMode})}}subscribeConnector(e,t,n,r){let i=e.on(t,n,r);this.connectorLifecycleManager.addConnectorWiringCleanup(i)}async close(e={}){(e.emitSessionClosed??!0)&&this.emitSessionClosed(`closed`);for(let e of this.busHandlerCleanups)try{e()}catch(e){console.warn(`[AIAgent] Bus handler cleanup failed:`,e)}this.busHandlerCleanups=[],this.connectorLifecycleManager.clearConnectorWiring(),await this.connector.close()}ensureConnector(){if(!this.connector)throw Error(`AIAgent ${this.agentId} connector not initialized. Call init() or start() first.`);return this.connector}shouldUseNativeResume(e){return this.supportsNativeResume()?e?!(e.nativeLocality?.kind!==`native`||e.isFirstTurn||e.hasCompression||e.hasNewTransforms||e.hasConnectorSwap):!0:!1}supportsNativeResume(){return!1}supportsNativeFork(){return!1}async start(e,t){return this.initialized||await this.init(),t?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=t.systemPrompt),this.turnExecutor.executeStart(e,t,this.runtimeSystemPrompt,t?.responseSchema)}async initialize(e){e?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=e.systemPrompt);let t=this.config.nativeFork;this.initialized||await this.init();let n=e?.sessionContext,r=t&&!n?.nativeFork?{...n,nativeFork:t}:n,i=this.config.resumeAdapterSessionId!==void 0,a=$.deriveStartMode(r,this.shouldUseNativeResume(r),i);this.setPendingStartMode(a);let o=this.ensureConnector();return await o.initialize(e),o.getConfirmedAdapterSessionId()}async onBeforeEmitCompletion(){}async onMessageHandle(e,t){this.lifecycleEmitter.resetTurnState(),this.latestMessageCompletion=e.waitForCompletion();let n=e.responseSchema,r=n===void 0?void 0:_t({structuredOutputManager:this.structuredOutputManager,getConnector:()=>this.connector,sessionId:this.sessionId,messageHandle:e,responseSchema:n});this.lifecycleTracker.track(e,(e,t,n)=>{let r=t.error instanceof Error?t.error.message:t.error;this.emitCompletion({message:t.result?.message,messageId:e,...n!==void 0&&{turnId:n},outcome:t.outcome,...r&&{error:r},...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation}})},r,{turnId:t})}abort(){this.emitSessionClosed(`aborted`),this.ensureConnector().abort()}async getAdapterSessionId(){return this.ensureConnector().getAdapterSessionId()}async complete(){let e=await this.ensureConnector().complete();return e===null||this.latestMessageCompletion===void 0?e:this.latestMessageCompletion}createConnectorEventMapping(e,t,n,r){let i=mt(this.globalBus,this.connector,e,r,t,n,this.enrichPayload.bind(this));return this.connectorLifecycleManager.addConnectorWiringCleanup(i),i}};function bn(e){let t=e.indexOf(`__`);return t===-1?{serverName:``,originalName:e}:{serverName:e.slice(0,t),originalName:e.slice(t+2)}}function xn(e){let{serverName:t,originalName:n}=bn(e);return{fullName:e,originalName:n,serverName:t,injected:!1,lastInjectedAtTurn:void 0,discovered:!1,firstDiscoveredAtTurn:void 0,callCount:0,lastCalledAtTurn:void 0}}var Sn=class{entries=new Map;upsert(e){let t=this.entries.get(e);return t||(t=xn(e),this.entries.set(e,t)),t}recordInjection(e,t){let n=new Set(e.map(e=>e.name));for(let n of e){let e=this.upsert(n.name);e.injected=!0,e.lastInjectedAtTurn=t}for(let[e,t]of this.entries)t.injected&&!n.has(e)&&(t.injected=!1)}recordDiscovery(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t)}recordCall(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t),n.callCount+=1,n.lastCalledAtTurn=t}getInjectedTools(){return Array.from(this.entries.values()).filter(e=>e.injected)}getCallCount(e){return this.entries.get(e)?.callCount??0}getEntry(e){return this.entries.get(e)}getAllEntries(){return Array.from(this.entries.values())}async suggestInjectionSet(e,t){return e.directTools.map(e=>({name:e.fullName,description:e.description??``,toolsetName:e.serverName,inputSchema:e.inputSchema}))}};function Cn(e){return typeof e.tool==`string`?e.tool:void 0}function wn(e){return e===pe}const Tn={sessionId:`x-factory-session-id`,turnId:`x-factory-turn-id`,messageId:`x-factory-message-id`,llmCallId:`x-factory-llm-call-id`,executionId:`x-factory-execution-id`,frameId:`x-factory-frame-id`},En=O.shape.sessionId.unwrap(),Dn=O.extend({llmCallId:En});function On(e,t){return{...e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},messageId:t.messageId,llmCallId:t.llmCallId}}function kn(e){let t=Dn.parse(e),n={};for(let[e,r]of Object.entries(Tn)){let i=t[e];i!==void 0&&(n[r]=i)}return n}var An=class{entries=new Map;pendingAdapterSessionClaims=new Set;globalBus;adapterName;constructor(e){this.globalBus=e.globalBus,this.adapterName=e.adapterName}claimAdapterSession(e){if(this.pendingAdapterSessionClaims.has(e))return!1;for(let t of this.entries.values())if(t.adapterSessionId===e)return!1;return this.pendingAdapterSessionClaims.add(e),!0}releaseAdapterSessionClaim(e){this.pendingAdapterSessionClaims.delete(e)}hasAdapterSession(e){if(this.pendingAdapterSessionClaims.has(e))return!0;for(let t of this.entries.values())if(t.adapterSessionId===e)return!0;return!1}set(e,t){t.adapterSessionId!==void 0&&this.pendingAdapterSessionClaims.delete(t.adapterSessionId),this.entries.set(e,t)}get(e){return this.entries.get(e)}values(){return this.entries.values()}clear(){this.entries.clear(),this.pendingAdapterSessionClaims.clear()}async evict(e,t={}){let n=this.entries.get(e);this.entries.delete(e);let r;if(n)try{await n.agent.close({emitSessionClosed:t.emitSessionClosed})}catch(e){r=e}try{await this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`dead`})}catch(t){if(r===void 0)throw t;console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as dead:`,t)}if(r!==void 0)throw r}async evictSilently(e){let t=this.entries.get(e);if(this.entries.delete(e),t)try{await t.agent.close({emitSessionClosed:!1})}catch(t){console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during silent eviction:`,t)}}dispose(e){let t=this.entries.get(e);return t?(t.agent.close().catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during dispose:`,t)}),this.entries.delete(e),this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`disposed`}).catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as disposed:`,t)}),!0):!1}accumulateUsage(e,t,n){let r=this.entries.get(e);if(r)return r.usage.totalInputTokens+=t.inputTokens,r.usage.totalOutputTokens+=t.outputTokens,r.usage.totalCalls++,n&&n!==r.adapterSessionId&&(r.adapterSessionId=n),r}agentIdsBySession(e){return[...this.entries.entries()].filter(([,t])=>t.sessionId===e).map(([e])=>e)}};async function jn(e,t,n){let r={totalInputTokens:0,totalOutputTokens:0,totalCalls:0},i=await e.requestOptional(me.getBySession,{sessionId:t,status:`completed`});if(!i.handled)return r;for(let e of i.data.turns){let t=e.usage?.byAgent?.[n];t&&(r.totalInputTokens+=t.inputTokens,r.totalOutputTokens+=t.outputTokens)}return r}function Mn(e){let t=e.nativeLocality;if(typeof t==`object`&&t&&`kind`in t){let e=t.kind;if(e===`native`||e===`degrade`||e===`foreign`)return e}}var Nn=class{inFlight=new Map;globalBus;registry;createAgentFn;constructor(e){this.globalBus=e.globalBus,this.registry=e.registry,this.createAgentFn=e.createAgent}handleRehydrateAgent=async e=>{let{agentId:t,cwd:n,model:r,adapterSessionId:i,resumeAdapterSessionId:a}=e.payload,o=this.inFlight.get(t);if(o){await o,e.setResult({});return}let s=(async()=>{let e=this.registry.get(t);if(e){await this.rehydrateRegisteredAgent(t,e,{adapterSessionId:i,cwd:n,model:r});return}await this.rehydrateFromStorage(t,{adapterSessionId:i,rpcResumeId:a,cwd:n,model:r})})().catch(e=>{let n=e instanceof Error?e.message:String(e);throw Error(`Failed to recover agent ${t}: ${n}`)});this.inFlight.set(t,s);try{await s}finally{this.inFlight.delete(t)}e.setResult({})};async rehydrateFromStorage(e,t){let{adapterSessionId:n,rpcResumeId:r,cwd:i,model:a}=t,o=await this.globalBus.requestOptional(M.get,{agentId:e});if(!o.handled||!o.data.agent)throw Error(`Agent ${e} not found in storage`);let s=o.data.agent;if(s.status===`disposed`)throw Error(`Agent ${e} is disposed and cannot be rehydrated`);let c=await this.resolveMcpSessionContext(s.sessionId,s.profileId),l=s.providerConfigId===void 0?void 0:await j(this.globalBus,s.providerConfigId).catch(W),u=n??s.adapterSessionId,d=r??void 0,f=Mn(s),p=d??(d!==void 0||f===`native`?u:void 0),m={model:a??s.model,cwd:i??s.cwd,allowedDirectories:s.allowedDirectories,adapterSessionId:u,...p!==void 0&&{resumeAdapterSessionId:p},...l!==void 0&&{providerContext:l},...c!==void 0&&{mcpSessionContext:c}},h=await this.claimAndCreateAgent(e,s,m,p);(i!==void 0||a!==void 0)&&await this.globalBus.requestOptional(M.updateRuntime,{agentId:e,cwd:i,model:a});let g=await h.getAdapterSessionId()||s.adapterSessionId;if(!g)throw p!==void 0&&this.registry.releaseAdapterSessionClaim(p),Error(`Recovered agent ${e} has no adapterSessionId`);let _=await jn(this.globalBus,s.sessionId,e);this.registry.set(e,{agent:h,sessionId:s.sessionId,adapterSessionId:g,usage:_}),await this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`idle`})}async claimAndCreateAgent(e,t,n,r){if(r!==void 0&&!this.registry.claimAdapterSession(r))throw Error(`Provider session ${r} is already claimed by another in-flight rehydrate or start`);try{let r=await this.createAgentFn(e,t.sessionId,n),i=await this.resolvePersistedSystemPrompt(t.sessionId,t.personaId,t.profileId);return await r.initialize({...i!==void 0&&{systemPrompt:i}}),r}catch(e){throw r!==void 0&&this.registry.releaseAdapterSessionClaim(r),e}}async rehydrateRegisteredAgent(e,t,n){let r=n.adapterSessionId??t.adapterSessionId;await t.agent.swapConnector({cwd:n.cwd,model:n.model,adapterSessionId:r,resumeAdapterSessionId:r});let i=await t.agent.getAdapterSessionId();i&&(t.adapterSessionId=i),(n.cwd!==void 0||n.model!==void 0)&&await this.globalBus.requestOptional(M.updateRuntime,{agentId:e,cwd:n.cwd,model:n.model}),await this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`idle`})}async resolveMcpSessionContext(e,t){let n=await this.globalBus.requestOptional(A.get,{sessionId:e});if(!n.handled||!n.data.session)return;let r=await this.globalBus.requestOptional(D.session.resolve,{sessionId:e,projectId:null,profileId:t??null});return r.handled?r.data:void 0}async resolvePersistedSystemPrompt(e,t,n){if(!(!t&&!n))try{let r=await this.globalBus.requestOptional(A.resolveSystemPrompt,{sessionId:e,personaId:t,profileId:n});return r.handled?r.data.systemPrompt:void 0}catch{return}}};async function Pn(e,t){let{prompt:n,model:r,systemPrompt:i,responseSchema:a}=e.payload,o=e.payload.providerContext??W(),s=crypto.randomUUID(),c=new vn({bus:t.globalBus,agentId:s,adapterId:t.adapterId,adapterCapabilities:t.adapterCapabilities}),l={bus:t.adapterBus,globalBus:t.globalBus,agentId:s,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:o,ephemeral:!0,...r!==void 0&&{model:r},...t.platformDefaults?.cwd!==void 0&&{cwd:t.platformDefaults.cwd},...t.platformDefaults?.env!==void 0&&{env:t.platformDefaults.env},errorHandler:e=>{console.warn(`[handleInfer:${t.adapterName}] Ephemeral connector error: ${e.message}`)}},u=await t.configFactory(l),d=await t.connectorFactory(u);try{await d.initialize({...i!==void 0&&{systemPrompt:i},...a!==void 0&&{responseSchema:a}});let r=I(n),o={...i!==void 0&&{systemPrompt:i},turnContext:Q(void 0,a,t.adapterCapabilities),...a!==void 0&&{responseSchema:a}},s=await d.start(r,o),l=await s.messageHandle.waitForCompletion(),u=l.result?.message??``;a!==void 0&&l.outcome===`completed`&&(u=await Fn({connector:d,manager:c,responseSchema:a,startResult:s,text:u})),e.setResult({text:u})}finally{try{await d.close()}catch(e){console.warn(`[handleInfer:${t.adapterName}] Connector cleanup error:`,e)}}}async function Fn(e){let{connector:t,manager:n,responseSchema:r,startResult:i,text:a}=e,o=await n.validateTerminalResult({responseSchema:r,message:a,retryTurn:async({attemptNumber:e,validationErrors:n})=>{let a={deliveryMode:`enqueue`,internalRetry:!0,messageId:`${i.messageHandle.messageId}:structured-output-retry:${e}`,responseSchema:r,requestCorrelation:i.messageHandle.requestCorrelation,turnContext:{...i.messageHandle.turnContext,structuredOutputRetry:{attemptNumber:e,validationErrors:n,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}};return(await(await t.sendMessage(i.messageHandle.message,a)).waitForCompletion()).result?.message??``}});if(o.structuredOutputValidation.status===`failed`)throw In(o.structuredOutputValidation.errors);return o.message??``}function In(e){return Error(`Structured output validation failed: ${e.map(e=>e.message).join(`; `)}`)}function Ln(e){let t=e.platformEnv!==void 0||e.env!==void 0?{...e.platformEnv,...e.env}:void 0,n=Rn({model:e.model,allowedTools:e.allowedTools,disallowedTools:e.disallowedTools,allowedDirectories:e.allowedDirectories,adapterSessionId:e.adapterSessionId,resumeAdapterSessionId:e.resumeAdapterSessionId,reasoningEffort:e.reasoningEffort,adapterConfig:e.adapterConfig,harnessId:e.harnessId,clientId:e.clientId,clientProfileName:e.clientProfileName,mcpSessionContext:e.mcpSessionContext,toolLedger:e.toolLedger,ephemeral:e.ephemeral,nativeFork:e.nativeFork});return{...e.platformCwd!==void 0&&{cwd:e.platformCwd},...t!==void 0&&{env:t},...e.cwd!==void 0&&{cwd:e.cwd},...n}}function Rn(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function zn(e,t,n){if(e.length===0)return;if(n&&n!==`unresolved`)return e.find(e=>e.definition.id===n)?.definition.availableModels;if(e.length===1)return e[0]?.definition.availableModels;if(!t)return;let r=e.filter(e=>(e.definition.availableModels??[]).some(e=>e.name===t));if(r.length===1)return r[0]?.definition.availableModels}function Bn(e){if(e.mode!==`fork`)return;let t=e.sessionContext,n=t===void 0?void 0:k.parse(t);if(n?.nativeLocality?.kind===`native`)return n.nativeFork}async function Vn(e,t,n,r,i){let{adapterId:a,name:o,clientId:s,getPlatformDefaults:c,globalBus:l}=i,u=r.role,d=Date.now(),f=c(),p=r.cwd??f?.cwd,m=r.clientId??s;try{await l.requestOptional(M.set,{agentId:e,agent:{agentId:e,adapterId:a,adapterName:o,sessionId:t,adapterSessionId:n,model:r.model,cwd:p,allowedDirectories:r.allowedDirectories,role:u,status:`idle`,createdAt:d,lastActivityAt:d,...m!==void 0&&{clientId:m},...r.harnessId!==void 0&&{harnessId:r.harnessId}}})}catch(n){console.error(`[AIAdapter:${o}] Optional agent persistence failed:`,{agentId:e,adapterId:a,sessionId:t,error:n})}l.emit(A.agent.added,{sessionId:t,agentId:e,adapterId:a,adapterName:o,adapterSessionId:n,role:u,model:r.model,cwd:p}),l.emit(C.session.created,{adapterId:a,adapterName:o,adapterSessionId:n,sessionId:t,model:r.model??`unknown`})}async function Hn(e,t,n,r){try{await e.evict(t)}catch(e){throw AggregateError([r,e],`[AIAdapter:${n}] startAgent persistence failed and live agent cleanup also failed.`,{cause:e})}}async function Un(e,t,n,r){try{if(t.initialMessage!==void 0){let r=I(t.initialMessage),i=await e.start(r,{systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema});return{adapterSessionId:i.adapterSessionId,messageId:String(i.messageHandle.messageId),messageHandle:i.messageHandle}}return{adapterSessionId:await e.initialize({systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema})}}catch(n){try{await e.close({emitSessionClosed:!t.ephemeral})}catch(e){console.warn(`[AIAdapter:${r}] Agent cleanup failed after startAgent error:`,e)}throw n}}async function Wn(e,t,n,r){try{await r?.waitForCompletion(3e5)}finally{await e.evictSilently(t)}}function Gn(e){if(e.ephemeral&&e.initialMessage===void 0)throw Error(`ephemeral startAgent requires initialMessage`)}function Kn(e,t,n){let{sessionContext:r,...i}=e;return{...i,providerContext:t,...n===void 0?{}:{sessionContext:n}}}async function qn(e,t){if(e.ephemeral)return e.sessionId??crypto.randomUUID();if((e.mode??`create`)===`create`){let n=await t.requestOptional(A.create,{...e.sessionId?{sessionId:e.sessionId}:{}});return n.handled?n.data.sessionId:e.sessionId??crypto.randomUUID()}if(e.sessionId)return e.sessionId;throw Error(`startAgent ${e.mode} mode requires sessionId`)}function Jn(e){if(e.mode===`resume`&&`adapterSessionId`in e)return e.adapterSessionId}async function Yn(e){let{agentId:t,sessionId:n,payload:r,providerContext:i,sessionContext:a,adapterName:o,resumeAdapterSessionId:s,registry:c}=e,l;try{l=await e.createAgent(t,n,Kn(r,i,a))}catch(e){throw s!==void 0&&c.releaseAdapterSessionClaim(s),e}let u;try{u=await Un(l,r,a,o)}catch(e){throw s!==void 0&&c.releaseAdapterSessionClaim(s),e}return{agent:l,startResult:u}}function Xn(e){let{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,registry:a,globalBus:o,createAgent:s}=e;return async function(e){let c=e.payload,l=crypto.randomUUID(),u=c.providerContext??W();Gn(c);let d=await qn(c,o),f=Jn(c);if(f!==void 0&&!a.claimAdapterSession(f)){e.setResult({success:!1,message:`Provider session ${f} is already claimed by another in-flight start`});return}let{agent:p,startResult:m}=await Yn({agentId:l,sessionId:d,payload:c,providerContext:u,sessionContext:c.sessionContext?k.parse(c.sessionContext):void 0,adapterName:n,resumeAdapterSessionId:f,registry:a,createAgent:s}),{adapterSessionId:h,messageId:g,messageHandle:_}=m;if(a.set(l,{agent:p,sessionId:d,adapterSessionId:h,usage:{totalInputTokens:0,totalOutputTokens:0,totalCalls:0}}),!c.ephemeral)try{await Vn(l,d,h,{...c,providerContext:u},{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,globalBus:o})}catch(e){throw await Hn(a,l,n,e),e}e.setResult({success:!0,agentId:l,adapterId:t,sessionId:d,adapterSessionId:h,...g!==void 0&&{messageId:g}}),c.ephemeral&&Wn(a,l,n,_).catch(e=>{console.warn(`[AIAdapter:${n}] Ephemeral agent cleanup failed:`,e)})}}var Zn=class{adapterId;name;capabilities;nativeTools;namespace;globalBus;adapterBus;registry;cleanupFns=[];rehydrationManager;initialized=!1;clientId;platformDefaults;definitionProviders;agentFactory;configFactory;connectorFactory;constructor(e){this.adapterId=e.adapterId??crypto.randomUUID(),this.name=e.name,this.capabilities=e.capabilities,this.nativeTools=e.nativeTools??[],this.globalBus=e.globalBus??S,this.adapterBus=e.scopedBus,this.namespace=e.namespace,this.agentFactory=e.agentFactory,this.configFactory=e.configFactory,this.connectorFactory=e.connectorFactory,this.clientId=e.clientId,this.platformDefaults=e.platformDefaults,this.definitionProviders=e.definitionProviders??[],this.registry=new An({globalBus:this.globalBus,adapterName:this.name}),this.rehydrationManager=new Nn({globalBus:this.globalBus,registry:this.registry,createAgent:this.createAgent.bind(this)})}setupHandlers(){let e=this.globalBus.withFilter({adapterId:this.adapterId});this.cleanupFns.push(e.on(C.startAgent,Xn({adapterId:this.adapterId,name:this.name,clientId:this.clientId,getPlatformDefaults:()=>this.platformDefaults,registry:this.registry,globalBus:this.globalBus,createAgent:this.createAgent.bind(this)})),e.on(C.rehydrateAgent,this.rehydrationManager.handleRehydrateAgent),e.on(C.infer,e=>Pn(e,{adapterBus:this.adapterBus,globalBus:this.globalBus,adapterId:this.adapterId,adapterName:this.name,adapterCapabilities:this.capabilities,platformDefaults:this.platformDefaults,configFactory:this.configFactory,connectorFactory:this.connectorFactory})),e.on(w.session.closed,this.handleSessionClosed),e.on(w.started,this.handleStartedReconcileRegistry),e.on(w.usage,this.handleUsage),this.globalBus.on(A.closed,this.handleSessionClosedByService),e.on(C.listAgents,e=>{e.setResult({agents:Array.from(this.registry.values()).map(e=>({agentId:e.agent.agentId,sessionId:e.sessionId,adapterSessionId:e.adapterSessionId}))})}),e.on(C.getAgent,e=>{let t=this.registry.get(e.payload.agentId);e.setResult({agent:t?{agentId:t.agent.agentId,sessionId:t.sessionId,adapterSessionId:t.adapterSessionId}:null})}),e.on(C.stopAgent,e=>{e.setResult({success:this.disposeAgent(e.payload.agentId)})}),e.on(C.getCapabilities,e=>{e.setResult({capabilities:this.capabilities,nativeTools:this.nativeTools})}))}handleSessionClosed=e=>{let{agentId:t,adapterSessionId:n,reason:r}=e.payload,i=this.registry.get(t);if(!i){console.warn(`Agent ${t} not found, can't emit AgentSubjects.session.closed`);return}let a=n??i.adapterSessionId??``;this.registry.evict(t).catch(e=>{console.error(`[AIAdapter:${this.name}] Failed to evict agent ${t} after session.closed:`,e)}),this.globalBus.emit(C.session.closed,{adapterId:this.adapterId,adapterName:this.name,agentId:t,sessionId:i.sessionId,adapterSessionId:a,reason:r})};handleSessionClosedByService=async e=>{let{sessionId:t}=e.payload,n=this.registry.agentIdsBySession(t);await Promise.all(n.map(e=>this.registry.evict(e,{emitSessionClosed:!1}).catch(t=>console.error(`[AIAdapter:${this.name}] Failed to evict agent ${e} after session.closed:`,t))))};handleStartedReconcileRegistry=e=>{let{agentId:t,adapterSessionId:n}=e.payload;if(!n)return;let r=this.registry.get(t);r&&!r.adapterSessionId&&(r.adapterSessionId=n)};handleUsage=e=>{let{agentId:t,adapterSessionId:n,inputTokens:r,outputTokens:i}=e.payload,a=this.registry.accumulateUsage(t,{inputTokens:r,outputTokens:i},n);a&&this.globalBus.emit(C.session.usage,{adapterId:this.adapterId,adapterName:this.name,sessionId:a.sessionId,adapterSessionId:a.adapterSessionId,...a.usage})};async init(){this.initialized||(this.globalBus.registerNamespaces([this.namespace.definition]),this.adapterBus??=await this.namespace.scopedBus(this.globalBus.getContext()),this.setupHandlers(),await this.onInit(),this.initialized=!0,await this.globalBus.emit(C.initialized,{adapterId:this.adapterId,adapterName:this.name,capabilities:this.capabilities,nativeTools:this.nativeTools}))}async onInit(){}async createAgent(e,t,n){if(!this.adapterBus)throw Error(`Adapter bus not initialized. Did you forget to call init()?`);let{model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,reasoningEffort:c,mcpSessionContext:l,harnessId:u,ephemeral:d}=n,f=n.clientId??this.clientId,p=n.resumeAdapterSessionId??(n.mode===`resume`?n.adapterSessionId:void 0),m=Bn(n),h=zn(this.definitionProviders,r,n.providerContext?.definitionId),g=l===void 0?void 0:new Sn,_={agentId:e,adapterId:this.adapterId,adapterName:this.name,globalBus:this.globalBus,adapterBus:this.adapterBus,capabilities:this.capabilities,nativeTools:this.nativeTools,availableModels:h,configFactory:this.configFactory,connectorFactory:this.connectorFactory,sessionId:t,...n.providerContext!==void 0&&{providerContext:n.providerContext},...Ln({platformCwd:this.platformDefaults?.cwd,platformEnv:this.platformDefaults?.env,model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,allowedDirectories:n.allowedDirectories,adapterSessionId:n.adapterSessionId,reasoningEffort:c,adapterConfig:n.adapterConfig,resumeAdapterSessionId:p,harnessId:u,clientId:f,clientProfileName:n.clientProfileName,mcpSessionContext:l,toolLedger:g,ephemeral:d,nativeFork:m})};return this.agentFactory(_)}async closeAsync(){try{let e=await Promise.allSettled([...this.registry.values()].map(e=>e.agent.close()));this.registry.clear(),await this.onClose();let t=e.filter(e=>e.status===`rejected`).map(e=>e.reason instanceof Error?e.reason:Error(String(e.reason)));t.length>0&&console.warn(`[AIAdapter] ${t.length} agent(s) failed to close:`,t)}finally{for(let e of this.cleanupFns)try{e()}catch(e){console.warn(`[AIAdapter] Cleanup function failed:`,e)}this.cleanupFns=[],this.initialized=!1}}close(){this.closeAsync()}async onClose(){}getAgent(e){let t=this.registry.get(e);if(t)return Object.assign({},t.agent,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId})}disposeAgent(e){return this.registry.dispose(e)}getActiveAgents(){return Array.from(this.registry.values()).map(e=>Object.assign({},e.agent,{sessionId:e.sessionId,adapterSessionId:e.adapterSessionId}))}isInitialized(){return this.initialized}};function Qn(e){let t={adapterSessionId:e.adapterSessionId,lineage:e.lineage,messages:e.messagePayloads};return e.compactionMetadata&&(t.compaction=e.compactionMetadata),e.turns&&(t.turns=e.turns),e.isSidechain!==void 0&&(t.isSidechain=e.isSidechain),e.compressChildren?.length&&(t.children=e.compressChildren.map(Qn)),t}var $n=class{processLogFile(e){let t=Array.isArray(e)?e:[e],n=this.extractSessionContext(t),r=this.processRecords(t,n);return{adapterSessionId:n.adapterSessionId,sessionEvent:n.sessionEvent,messageEvents:[n.startedEvent,...r],messagePayloads:[],lineage:{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null}}}};function er(e){let t=new Map,n=[];return n.push(e.on(a.get,e=>{let{filePath:n}=e.payload,r=t.get(n)??null;e.setResult({cursor:r})})),n.push(e.on(a.set,e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;t.set(n,{filePath:n,bytesRead:r,lastModified:i}),e.setResult({success:!0})})),n.push(e.on(a.delete,e=>{let{filePath:n}=e.payload,r=t.delete(n);e.setResult({success:r})})),()=>{n.forEach(e=>e()),t.clear()}}const tr=x.object({sessions:x.record(x.string(),x.object({state:x.enum([`idle`,`active`]),currentTurnId:x.string().optional()}))}).default({sessions:{}});var nr=class{options;sessions=new Map;generateTurnId;constructor(e){this.options=e,this.generateTurnId=e.generateTurnId??(()=>crypto.randomUUID())}processRecord(e){let t=this.options.getSessionId(e),n=this.getOrCreateSessionState(t),r=[],i=this.options.detectTurnStart(e),a=this.options.detectTurnComplete(e);if(i){n.state===`active`&&n.currentTurnId&&r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId});let e=this.generateTurnId(t);n.state=`active`,n.currentTurnId=e,r.push({type:`turn.started`,sessionId:t,turnId:e})}else a&&n.state===`active`&&n.currentTurnId&&(r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId}),n.state=`idle`,n.currentTurnId=void 0);return r}getState(e){return this.sessions.get(e)?.state??`idle`}getCurrentTurnId(e){return this.sessions.get(e)?.currentTurnId}hasActiveTurn(e){return this.getState(e)===`active`}resetSession(e){return this.sessions.delete(e)}resetAll(){this.sessions.clear()}serialize(){let e={};for(let[t,n]of this.sessions)e[t]={state:n.state,currentTurnId:n.currentTurnId};return{sessions:e}}restore(e){this.sessions.clear();for(let[t,n]of Object.entries(e.sessions))this.sessions.set(t,{state:n.state,currentTurnId:n.currentTurnId})}getTrackedSessions(){return Array.from(this.sessions.keys())}forceCompleteTurn(e){let t=this.sessions.get(e);if(!t||t.state!==`active`||!t.currentTurnId)return;let n={type:`turn.completed`,sessionId:e,turnId:t.currentTurnId};return t.state=`idle`,t.currentTurnId=void 0,n}getOrCreateSessionState(e){let t=this.sessions.get(e);return t||(t={state:`idle`,currentTurnId:void 0},this.sessions.set(e,t)),t}};const rr=x.object({eventType:x.literal(`agent_started`),model:x.string().optional()}),ir=x.object({eventType:x.literal(`agent_complete`),message:x.string().optional(),error:x.string().optional()}),ar=x.object({eventType:x.literal(`error`),message:x.string(),code:x.string().or(x.number()).optional(),type:x.string().optional()}),or=x.object({eventType:x.literal(`tool_started`),toolName:x.string(),toolCallId:x.string()}),sr=x.object({eventType:x.literal(`tool_completed`),toolName:x.string(),toolCallId:x.string(),result:x.string(),success:x.boolean()});export{Zn as AIAdapter,yn as AIAgent,q as AIAgentConnector,ir as AgentCompleteEventSchema,Dt as AgentConnectorLifecycleManager,bt as AgentEventBridge,xt as AgentLifecycleEmitter,St as AgentPayloadEmitter,Et as AgentRuntimeMutationManager,rr as AgentStartedEventSchema,$ as AgentTurnExecutor,dt as BaseConnectorSession,J as BaseConnectorTurn,$n as BaseLogImporter,ar as ErrorEventSchema,Tn as FactoryUsageCorrelationHeaders,o as ImportCursorPositionSchema,i as ImportCursorStorageNamespace,a as ImportCursorStorageSubjects,Ue as MAKAIO_CONFORMANCE_PRIMARY_MODEL_ENV,z as MAKAIO_CONFORMANCE_PROVIDER_DEFINITIONS_ENV,He as MAKAIO_CONFORMANCE_PROVIDER_ENV,We as MAKAIO_CONFORMANCE_SECONDARY_MODEL_ENV,K as MessageHandle,Y as MessageLifecycleTracker,pt as ProceduralAgentConnector,ft as ProceduralConnectorTurn,tt as ScopedToolApprovalSchema,at as SessionLifecycle,Sn as SessionToolLedger,X as ToolCallTracker,sr as ToolCompletedEventSchema,or as ToolStartedEventSchema,nr as TurnTracker,tr as TurnTrackerSerializedStateSchema,ot as UserMessageQueue,On as bindProviderRequestCorrelation,kn as buildFactoryUsageCorrelationHeaders,n as cleanEnvForAdapter,Se as createAdapterNamespace,R as createTestProviderContext,nt as createToolApprovalHandler,Ie as defineDiscriminatedHandlers,Le as defineDiscriminatedHandlersSync,Cn as extractMcpCallTarget,F as formatContextBlockAsText,Pe as formatContextBlocksAsText,Ze as formatMessageHistoryAsTranscript,wn as isMcpCallTool,rt as isTextLikeMimeType,ut as markCompletedWithFinalResult,et as mergeScopedToolApproval,L as normalizeEnvValue,I as normalizeMessageInput,U as normalizeMimeType,Fe as parseAIAdapterCapabilities,Re as processDiscriminatedItems,ze as processDiscriminatedItemsSync,G as processQueueMessages,yt as registerAgentBusHandlers,er as registerMemoryImportCursorStorage,Je as resolveConformanceTestPreset,Ye as resolveDisabledNativeTools,it as resolvePresetCredentials,H as resolveRequiredSessionId,Ve as resolveTestConfig,P as safeJsonStringify,$e as serializeBlockToText,Me as serializeTurnContext,Qn as toImportSegment};
|