@makaio/framework 1.0.0-dev-1781517341920 → 1.0.0-dev-1781729807808

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.
Files changed (132) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/adapter-Cxcqmp04.mjs +1 -0
  3. package/dist/adapters/stream-session/index.d.mts +2 -0
  4. package/dist/await-trigger-Cjfj0yp_.mjs +1 -0
  5. package/dist/bus/index.mjs +1 -1
  6. package/dist/{canonical-model-BE7t86yt.mjs → canonical-model-C-jhofjd.mjs} +1 -1
  7. package/dist/compression-BPOKUc6y.mjs +1 -0
  8. package/dist/contracts/adapter/index.d.mts +2 -2
  9. package/dist/contracts/adapter/index.mjs +1 -1
  10. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  11. package/dist/contracts/artifact/index.d.mts +1 -1
  12. package/dist/contracts/canonical-model/index.mjs +1 -1
  13. package/dist/contracts/client/index.d.mts +1 -1
  14. package/dist/contracts/config/index.d.mts +12 -12
  15. package/dist/contracts/extension/index.d.mts +2 -2
  16. package/dist/contracts/extension/index.mjs +1 -1
  17. package/dist/contracts/facet/index.d.mts +1 -1
  18. package/dist/contracts/harness/index.d.mts +1 -1
  19. package/dist/contracts/index.d.mts +261 -65
  20. package/dist/contracts/index.mjs +1 -1
  21. package/dist/contracts/materialization/index.d.mts +3 -3
  22. package/dist/contracts/provider/index.d.mts +3 -3
  23. package/dist/contracts/provider/index.mjs +1 -1
  24. package/dist/contracts/session/index.d.mts +3 -3
  25. package/dist/contracts/session/index.mjs +1 -1
  26. package/dist/contracts/variant/index.d.mts +1 -1
  27. package/dist/definition-BJ_975aA.mjs +1 -0
  28. package/dist/{definition-CPc6oKaF.d.mts → definition-CZcVOhXZ.d.mts} +1 -1
  29. package/dist/{definition-B2FH_eOh.d.mts → definition-GOb_oOmb.d.mts} +13 -2
  30. package/dist/drizzle/0020_m_mqf47r9j.sql +1 -0
  31. package/dist/drizzle/meta/_journal.json +7 -0
  32. package/dist/{extension-DNrcv3V7.mjs → extension-CkU_hqra.mjs} +1 -1
  33. package/dist/{handlers-Cpy9Q8ho.mjs → handlers-dnpT_hsm.mjs} +1 -1
  34. package/dist/{index-C7vAbtvS.d.mts → index-BFW1X6SW.d.mts} +85 -46
  35. package/dist/{index-fTBtQ5fK.d.mts → index-BuaP2Q0b.d.mts} +16 -16
  36. package/dist/{index-BBteExwv.d.mts → index-ByRAbcZd.d.mts} +4 -2
  37. package/dist/{index-GuspCNLR.d.mts → index-C2XLjebs.d.mts} +8 -8
  38. package/dist/{index-Dun5uQwE.d.mts → index-CUYDEQvN.d.mts} +24 -3
  39. package/dist/{index-I6pLxh17.d.mts → index-CkpGuNLe.d.mts} +15 -15
  40. package/dist/{index-DWqgo739.d.mts → index-Cy75lJ1O.d.mts} +34 -34
  41. package/dist/{index-WKF5BHsw.d.mts → index-DUI1W-zN.d.mts} +8 -8
  42. package/dist/{index-BDnI2oqX.d.mts → index-Dbd0Tgba.d.mts} +2 -2
  43. package/dist/{index-CsP4Ckem.d.mts → index-Dn73XrXA.d.mts} +8 -8
  44. package/dist/{index-dFTsZFlh.d.mts → index-Dpu4e9NK.d.mts} +1 -1
  45. package/dist/{index-B8v52gGb.d.mts → index-HiAth5G0.d.mts} +60 -60
  46. package/dist/{index-BoI86whU.d.mts → index-WWYQEH0q.d.mts} +18 -18
  47. package/dist/{index-DVz3a2jZ.d.mts → index-XcnFGiKL.d.mts} +4 -4
  48. package/dist/{index-BM_y78ZA2.d.mts → index-cN4DkU5Y2.d.mts} +9 -9
  49. package/dist/kernel/extension/index.d.mts +1 -1
  50. package/dist/kernel/index.d.mts +2 -2
  51. package/dist/kernel/observability/index.d.mts +1 -1
  52. package/dist/{lib-DkLlhp9Z.mjs → lib-B-R6VZW0.mjs} +2 -2
  53. package/dist/{lib-jOuIcSs9.mjs → lib-BwYODPdd.mjs} +1 -1
  54. package/dist/mcp-http-server/index.mjs +1 -1
  55. package/dist/{namespace-CEqkI6Zu.d.mts → namespace-B091meTj.d.mts} +6 -6
  56. package/dist/{namespace-CN2TfSCY.d.mts → namespace-Ba1gUpUu.d.mts} +4 -4
  57. package/dist/{namespace-BAJTZXWc.d.mts → namespace-CO3DK1v_.d.mts} +60 -23
  58. package/dist/{namespace-H9A39Mx8.d.mts → namespace-CZgcOQTh.d.mts} +56 -56
  59. package/dist/{namespace-Cj7k5UH7.d.mts → namespace-Daq_-170.d.mts} +7 -7
  60. package/dist/package-DP8lk0-a.mjs +1 -0
  61. package/dist/package.json +1 -1
  62. package/dist/primitive-runtime-Dw6OC8w5.mjs +1 -0
  63. package/dist/{providers-namespace-C0C-Sb4N.d.mts → providers-namespace-B4INLPUc.d.mts} +7 -7
  64. package/dist/{registry-udUhXSIC.mjs → registry-CwjZvH2s.mjs} +2 -1
  65. package/dist/runtime-node/index.d.mts +1 -1
  66. package/dist/runtime-node/index.mjs +1 -1
  67. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  68. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  69. package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
  70. package/dist/{schema-msWs4YhT.d.mts → schema-DcZifH6p.d.mts} +27 -1
  71. package/dist/{schemas-DMl7IKG-.d.mts → schemas-BbFAwUpf.d.mts} +5 -5
  72. package/dist/{schemas-Cae5dubB.d.mts → schemas-BqscWIoC.d.mts} +6 -6
  73. package/dist/{schemas-DuQ9EcLu2.d.mts → schemas-CTIaU6Rt2.d.mts} +12 -12
  74. package/dist/{schemas-CN9hprME.d.mts → schemas-IDGAJ_zv.d.mts} +6 -6
  75. package/dist/schemas-dNCdjOLB.mjs +1 -0
  76. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  77. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  78. package/dist/services/context-rules/index.d.mts +3 -3
  79. package/dist/services/execution-target/index.d.mts +2 -2
  80. package/dist/services/execution-target/namespace.d.mts +1 -1
  81. package/dist/services/execution-target/schemas.d.mts +1 -1
  82. package/dist/services/filesystem/namespace.d.mts +6 -6
  83. package/dist/services/filesystem/schemas.d.mts +3 -3
  84. package/dist/services/harness/index.d.mts +3 -3
  85. package/dist/services/index.d.mts +57 -57
  86. package/dist/services/index.mjs +1 -1
  87. package/dist/services/session/handlers/index.mjs +1 -1
  88. package/dist/services/session/index.d.mts +4 -4
  89. package/dist/services/session/index.mjs +1 -1
  90. package/dist/services/session/messages/namespace.d.mts +1 -1
  91. package/dist/services/session/storage/namespace.d.mts +1 -1
  92. package/dist/services/session/storage/schema.d.mts +1 -1
  93. package/dist/services/session/storage/schema.mjs +1 -1
  94. package/dist/services/session/testing/index.mjs +2 -1
  95. package/dist/services/settings/index.d.mts +1 -1
  96. package/dist/services/settings/namespace.d.mts +12 -12
  97. package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
  98. package/dist/services/settings/storage/index.d.mts +1 -1
  99. package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
  100. package/dist/services/settings/storage/providers-namespace.mjs +1 -1
  101. package/dist/services/subagent-template/index.d.mts +1 -1
  102. package/dist/services/subagent-template/schemas.d.mts +1 -1
  103. package/dist/services/tool-approval/index.mjs +1 -1
  104. package/dist/services/tools/index.mjs +1 -1
  105. package/dist/services/tray-menu/index.d.mts +2 -2
  106. package/dist/services/tray-menu/namespace.d.mts +1 -1
  107. package/dist/services/tray-menu/schemas.d.mts +1 -1
  108. package/dist/session-DApMcL_0.mjs +1 -0
  109. package/dist/session-R-wciAdJ.mjs +39 -0
  110. package/dist/{session-lineage-DFkJgYt5.d.mts → session-lineage-D_8W1MI0.d.mts} +1 -1
  111. package/dist/storage/drizzle/client.mjs +1 -1
  112. package/dist/storage/drizzle/index.mjs +1 -1
  113. package/dist/{tool-approval-service-B_28RhuK.mjs → tool-approval-service-DhAqQqev.mjs} +1 -1
  114. package/dist/tools/index.d.mts +8 -0
  115. package/dist/tools-DeZIVtxe.mjs +1 -0
  116. package/dist/{types-DUNA749O.d.mts → types-CCsvoUTA.d.mts} +33 -15
  117. package/dist/workflow-engine/index.d.mts +49 -25
  118. package/dist/workflow-engine/index.mjs +1 -1
  119. package/dist/workflow-engine/package.mjs +1 -1
  120. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  121. package/dist/{workflow-worker-CjuRYLmJ.mjs → workflow-worker-DMFhz1q_.mjs} +1 -1
  122. package/package.json +1 -1
  123. package/dist/adapter-ux2xaQ6H.mjs +0 -1
  124. package/dist/await-trigger-uKEHY8E4.mjs +0 -1
  125. package/dist/compression-Cy9DIqyr.mjs +0 -1
  126. package/dist/definition-Bija4lGr.mjs +0 -1
  127. package/dist/package-lxB0vpby.mjs +0 -1
  128. package/dist/primitive-runtime-BSg8J7VX.mjs +0 -1
  129. package/dist/schemas-Dvm_0GDr.mjs +0 -1
  130. package/dist/session-Is5VSP2V.mjs +0 -1
  131. package/dist/session-ZAJrcudH.mjs +0 -39
  132. package/dist/tools-BpzJterj.mjs +0 -1
@@ -38,4 +38,4 @@ Rules:
38
38
  - Omit array items you have no evidence for (prefer empty array over fabrication).
39
39
  - current_state MUST be present; write "No summary available" if you cannot determine it.
40
40
  - Extract only facts stated or clearly implied in the conversation. Do not invent.
41
- - key_files and component_interactions should only include items explicitly mentioned.`,...s!==void 0&&{providerContext:s}}),l=c.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim(),u=JSON.parse(l),d=p.parse(u),f=Math.ceil(JSON.stringify(d).length/4);return{kind:`context`,json:{...d},tokenEstimate:f}}catch(e){return console.warn(`[llm-extract] action failed`,{action:`llm-extract`,sessionId:a,error:e}),r}}}}let Z=!1,Q=!1;function pt(e){Z||(Z=!0,P.register(ue),P.register(de),P.register(lt),P.register(ut)),e&&!Q&&(Q=!0,P.register(ft(e)))}function mt(){Z=!1,Q=!1}function ht(e){return pt(e),e.on(S.compress,async t=>{let{sessionId:n,pipeline:r}=t.payload,{messages:a}=await e.request(f.getBySession,{sessionId:n,limit:1e4}),o=await F(a,r,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let s=a.map(e=>e.messageId),c=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),l=crypto.randomUUID();await e.request(i.append,{event:{sessionId:n,eventId:l,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:c,tokensAfter:o.tokenEstimate,compressedMessageIds:s}}}),await e.emit(S.compressed,{sessionId:n,eventId:l}),t.setResult({eventId:l,contextJson:o.contextJson,tokensBefore:c,tokensAfter:o.tokenEstimate})})}async function gt(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(f.getBySession,{sessionId:t,order:`asc`,limit:200,after:a});i.push(...n),a=r&&n.some(e=>e.messageId===r)?void 0:o??void 0}while(a);if(i.length===0)throw Error(`[fork-handler] Segment transforms require at least one source message (sourceSessionId=${t})`);let o=i;if(r){let e=i.findIndex(e=>e.messageId===r);if(e===-1)throw Error(`[fork-handler] Fork point message not found in source message list: ${r} (sourceSessionId=${t})`);o=i.slice(0,e+1)}let s=new Map;o.forEach((e,t)=>{s.set(e.messageId,t)});let c=-1;for(let e of n.segments){if(!e.fromMessageId||!e.toMessageId)throw Error(`[fork-handler] Segment must have fromMessageId and toMessageId (sourceSessionId=${t})`);let n=s.get(e.fromMessageId),r=s.get(e.toMessageId);if(n===void 0||r===void 0)throw Error(`[fork-handler] Segment boundaries must reference source messages: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n>r)throw Error(`[fork-handler] Segment range is reversed: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n<=c)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==c+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);c=r}if(c!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function _t(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=P.get(t.actionId);if(!e)throw Error(`[fork-handler] Unknown action in pipeline: ${t.actionId}`);if(e.category!==`transformation`)throw Error(`[fork-handler] Action '${t.actionId}' is category '${e.category}', but only 'transformation' actions are allowed in fork transforms`)}}function vt(e){return e.on(S.fork,async t=>{let{sourceSessionId:n,fromMessageId:r,name:i,branchKind:a=`fork`,transforms:o,targetWorkingDirectory:s,existingSessionId:c}=t.payload,{session:l}=await e.request(S.get,{sessionId:n});if(!l)throw Error(`[fork-handler] Source session not found: ${n}`);if(r){let{message:t}=await e.request(f.get,{messageId:r});if(!t)throw Error(`[fork-handler] Fork point message not found: ${r} (sourceSessionId=${n})`);if(t.sessionId!==n)throw Error(`[fork-handler] Fork point message ${r} does not belong to session ${n}`)}o&&(await gt(e,n,o,r)||_t(o));let{sessionId:u}=await e.request(S.create,{...c?{sessionId:c}:{},parentSessionId:n,forkPointMessageId:r,branchKind:a,forkTransforms:o,...i?{title:i}:{},...s?{targetWorkingDirectory:s}:{}});await e.emit(S.branch.created,{sessionId:n,childSessionId:u,parentSessionId:n,kind:a,forkPointMessageId:r,transforms:o}),await e.emit(S.forked,{parentSessionId:n,childSessionId:u,forkPoint:r}),t.setResult({sessionId:u})})}function yt(e){return e.on(S.merge,async t=>{let{parentSessionId:n,childSessionId:r,summary:a}=t.payload,o=`merge:${n}:${r}`,{session:s}=await e.request(S.get,{sessionId:n});if(!s)throw Error(`[merge-handler] Parent session not found: ${n}`);if(s.status!==`active`)throw Error(`[merge-handler] Parent session is not active: ${n}`);let{session:c}=await e.request(S.get,{sessionId:r});if(!c)throw Error(`[merge-handler] Child session not found: ${r}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(S.merging,{parentSessionId:n,childSessionId:r});let l=a??`Child session ${r} merged.`;if(!(await e.request(S.close,{sessionId:r})).success)throw Error(`[merge-handler] Failed to close child session: ${r}`);let u=JSON.stringify({handoff:l});await e.request(i.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:r,parentSessionId:n,resultJson:u}}}),await e.emit(S.branch.merged,{sessionId:n,childSessionId:r,parentSessionId:n,resultJson:u}),await e.emit(S.merged,{parentSessionId:n,childSessionId:r,handoff:l}),t.setResult({success:!0,handoff:l})})}async function bt(t,n,r,i,a){if(!(n.parentSessionId!==void 0&&(n.contextInheritance===`parent-history`||n.contextInheritance===void 0&&n.branchKind!==`subagent`))||i?.messageHistory)return i;let{turns:o}=await t.request(e.getBySession,{sessionId:r,limit:2});if(!(a&&o.length<=1))return i;let s=(await R(t,r)).messages.map(B);return{...i,messageHistory:s,isFirstTurn:!0,hasNewTransforms:n.forkTransforms!==void 0}}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function xt(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function St(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function Ct(e){try{let t=await e.request(m.get,{key:{scope:`global`,surface:`ui`,context:`cwdChangeNotification`},category:`chat-display`});if(t.value!==null&&t.value!==void 0)return St(t.value)?t.value:$}catch{}return $}function wt(e){let{baseContext:t,recoveryContext:n,isRecovered:r,isSwapped:i,swapMeta:a,cwdMessage:o,freshMessageHistory:s}=e,c=r&&n?{...t,...n}:t;if(!i)return c;let l=a&&o!==void 0?{cwdChange:{previousCwd:a.previousCwd,newCwd:a.newCwd,message:o}}:void 0;return c={...c,hasConnectorSwap:!0,...s!==void 0&&{messageHistory:s},...l&&{turnContext:{...c?.turnContext,...l}}},c}async function Tt(e){let{bus:t,session:n,turn:r,message:i,messageId:a,deliveryMode:o,onTurnComplete:s,agent:c,agentContext:l,responseSchema:u}=e;try{await t.request(y.sendMessage,{agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await t.emit(S.user_message.acknowledged,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId})}catch(e){if(e instanceof ae){await t.emit(S.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`cancelled`});let e=r.markAgentCompleted(c.agentId);e.turnComplete&&await s(r,e.result);return}let n=e instanceof Error?e.message:String(e),i=r.markAgentErrored(c.agentId,n);await t.emit(S.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`error`,error:n}),i.turnComplete&&await s(r,i.result)}}async function Et(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=await bt(e,t,t.sessionId,c,u),v=l?await l.enrichForDeliveryMode(_?.messageHistory,a.turnId,o):_?.messageHistory,y=_?{..._,messageHistory:v}:void 0,b=p?.size?await Ct(e):$,x=n.map(async n=>{let c=m?.get(n.agentId),l=c&&b.enabled?xt(b.template,c.previousCwd,c.newCwd):void 0;await Tt({bus:e,session:t,turn:a,message:r,messageId:i,deliveryMode:o,onTurnComplete:s,agent:n,agentContext:wt({baseContext:y,recoveryContext:d,isRecovered:f?.has(n.agentId)??!1,isSwapped:p?.has(n.agentId)??!1,swapMeta:c,cwdMessage:l,freshMessageHistory:h}),responseSchema:g})});await Promise.all(x)}export{N as A,he as C,me as D,_e as E,j as F,le as M,ce as N,R as O,A as P,ve as S,V as T,q as _,ht as a,Ae as b,ct as c,J as d,Y as f,He as g,Ve as h,vt as i,M as j,P as k,st as l,Ue as m,bt as n,pt as o,We as p,yt as r,mt as s,Et as t,Ye as u,Be as v,ge as w,Se as x,K as y};
41
+ - key_files and component_interactions should only include items explicitly mentioned.`,...s!==void 0&&{providerContext:s}}),l=c.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim(),u=JSON.parse(l),d=p.parse(u),f=Math.ceil(JSON.stringify(d).length/4);return{kind:`context`,json:{...d},tokenEstimate:f}}catch(e){return console.warn(`[llm-extract] action failed`,{action:`llm-extract`,sessionId:a,error:e}),r}}}}let Z=!1,Q=!1;function pt(e){Z||(Z=!0,P.register(ue),P.register(de),P.register(lt),P.register(ut)),e&&!Q&&(Q=!0,P.register(ft(e)))}function mt(){Z=!1,Q=!1}function ht(e){return pt(e),e.on(S.compress,async t=>{let{sessionId:n,pipeline:r}=t.payload,{messages:a}=await e.request(f.getBySession,{sessionId:n,limit:1e4}),o=await F(a,r,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let s=a.map(e=>e.messageId),c=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),l=crypto.randomUUID();await e.request(i.append,{event:{sessionId:n,eventId:l,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:c,tokensAfter:o.tokenEstimate,compressedMessageIds:s}}}),await e.emit(S.compressed,{sessionId:n,eventId:l}),t.setResult({eventId:l,contextJson:o.contextJson,tokensBefore:c,tokensAfter:o.tokenEstimate})})}async function gt(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(f.getBySession,{sessionId:t,order:`asc`,limit:200,after:a});i.push(...n),a=r&&n.some(e=>e.messageId===r)?void 0:o??void 0}while(a);if(i.length===0)throw Error(`[fork-handler] Segment transforms require at least one source message (sourceSessionId=${t})`);let o=i;if(r){let e=i.findIndex(e=>e.messageId===r);if(e===-1)throw Error(`[fork-handler] Fork point message not found in source message list: ${r} (sourceSessionId=${t})`);o=i.slice(0,e+1)}let s=new Map;o.forEach((e,t)=>{s.set(e.messageId,t)});let c=-1;for(let e of n.segments){if(!e.fromMessageId||!e.toMessageId)throw Error(`[fork-handler] Segment must have fromMessageId and toMessageId (sourceSessionId=${t})`);let n=s.get(e.fromMessageId),r=s.get(e.toMessageId);if(n===void 0||r===void 0)throw Error(`[fork-handler] Segment boundaries must reference source messages: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n>r)throw Error(`[fork-handler] Segment range is reversed: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n<=c)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==c+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);c=r}if(c!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function _t(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=P.get(t.actionId);if(!e)throw Error(`[fork-handler] Unknown action in pipeline: ${t.actionId}`);if(e.category!==`transformation`)throw Error(`[fork-handler] Action '${t.actionId}' is category '${e.category}', but only 'transformation' actions are allowed in fork transforms`)}}function vt(e){return e.on(S.fork,async t=>{let{sourceSessionId:n,fromMessageId:r,name:i,branchKind:a=`fork`,transforms:o,targetWorkingDirectory:s,metadata:c,existingSessionId:l}=t.payload,{session:u}=await e.request(S.get,{sessionId:n});if(!u)throw Error(`[fork-handler] Source session not found: ${n}`);if(r){let{message:t}=await e.request(f.get,{messageId:r});if(!t)throw Error(`[fork-handler] Fork point message not found: ${r} (sourceSessionId=${n})`);if(t.sessionId!==n)throw Error(`[fork-handler] Fork point message ${r} does not belong to session ${n}`)}o&&(await gt(e,n,o,r)||_t(o));let{sessionId:d}=await e.request(S.create,{...l?{sessionId:l}:{},parentSessionId:n,forkPointMessageId:r,branchKind:a,forkTransforms:o,...i?{title:i}:{},...s?{targetWorkingDirectory:s}:{},...c?{metadata:c}:{}});await e.emit(S.branch.created,{sessionId:n,childSessionId:d,parentSessionId:n,kind:a,forkPointMessageId:r,transforms:o}),await e.emit(S.forked,{parentSessionId:n,childSessionId:d,forkPoint:r}),t.setResult({sessionId:d})})}function yt(e){return e.on(S.merge,async t=>{let{parentSessionId:n,childSessionId:r,summary:a}=t.payload,o=`merge:${n}:${r}`,{session:s}=await e.request(S.get,{sessionId:n});if(!s)throw Error(`[merge-handler] Parent session not found: ${n}`);if(s.status!==`active`)throw Error(`[merge-handler] Parent session is not active: ${n}`);let{session:c}=await e.request(S.get,{sessionId:r});if(!c)throw Error(`[merge-handler] Child session not found: ${r}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(S.merging,{parentSessionId:n,childSessionId:r});let l=a??`Child session ${r} merged.`;if(!(await e.request(S.close,{sessionId:r})).success)throw Error(`[merge-handler] Failed to close child session: ${r}`);let u=JSON.stringify({handoff:l});await e.request(i.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:r,parentSessionId:n,resultJson:u}}}),await e.emit(S.branch.merged,{sessionId:n,childSessionId:r,parentSessionId:n,resultJson:u}),await e.emit(S.merged,{parentSessionId:n,childSessionId:r,handoff:l}),t.setResult({success:!0,handoff:l})})}async function bt(t,n,r,i,a){if(!(n.parentSessionId!==void 0&&(n.contextInheritance===`parent-history`||n.contextInheritance===void 0&&n.branchKind!==`subagent`))||i?.messageHistory)return i;let{turns:o}=await t.request(e.getBySession,{sessionId:r,limit:2});if(!(a&&o.length<=1))return i;let s=(await R(t,r)).messages.map(B);return{...i,messageHistory:s,isFirstTurn:!0,hasNewTransforms:n.forkTransforms!==void 0}}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function xt(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function St(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function Ct(e){try{let t=await e.request(m.get,{key:{scope:`global`,surface:`ui`,context:`cwdChangeNotification`},category:`chat-display`});if(t.value!==null&&t.value!==void 0)return St(t.value)?t.value:$}catch{}return $}function wt(e){let{baseContext:t,recoveryContext:n,isRecovered:r,isSwapped:i,swapMeta:a,cwdMessage:o,freshMessageHistory:s}=e,c=r&&n?{...t,...n}:t;if(!i)return c;let l=a&&o!==void 0?{cwdChange:{previousCwd:a.previousCwd,newCwd:a.newCwd,message:o}}:void 0;return c={...c,hasConnectorSwap:!0,...s!==void 0&&{messageHistory:s},...l&&{turnContext:{...c?.turnContext,...l}}},c}async function Tt(e){let{bus:t,session:n,turn:r,message:i,messageId:a,deliveryMode:o,onTurnComplete:s,agent:c,agentContext:l,responseSchema:u}=e;try{await t.request(y.sendMessage,{agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await t.emit(S.user_message.acknowledged,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId})}catch(e){if(e instanceof ae){await t.emit(S.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`cancelled`});let e=r.markAgentCompleted(c.agentId);e.turnComplete&&await s(r,e.result);return}let n=e instanceof Error?e.message:String(e),i=r.markAgentErrored(c.agentId,n);await t.emit(S.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`error`,error:n}),i.turnComplete&&await s(r,i.result)}}async function Et(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=await bt(e,t,t.sessionId,c,u),v=l?await l.enrichForDeliveryMode(_?.messageHistory,a.turnId,o):_?.messageHistory,y=_?{..._,messageHistory:v}:void 0,b=p?.size?await Ct(e):$,x=n.map(async n=>{let c=m?.get(n.agentId),l=c&&b.enabled?xt(b.template,c.previousCwd,c.newCwd):void 0;await Tt({bus:e,session:t,turn:a,message:r,messageId:i,deliveryMode:o,onTurnComplete:s,agent:n,agentContext:wt({baseContext:y,recoveryContext:d,isRecovered:f?.has(n.agentId)??!1,isSwapped:p?.has(n.agentId)??!1,swapMeta:c,cwdMessage:l,freshMessageHistory:h}),responseSchema:g})});await Promise.all(x)}export{N as A,he as C,me as D,_e as E,j as F,le as M,ce as N,R as O,A as P,ve as S,V as T,q as _,ht as a,Ae as b,ct as c,J as d,Y as f,He as g,Ve as h,vt as i,M as j,P as k,st as l,Ue as m,bt as n,pt as o,We as p,yt as r,mt as s,Et as t,Ye as u,Be as v,ge as w,Se as x,K as y};