@makaio/framework 1.0.0-dev-1790165411632 → 1.0.0-dev-1790248497521

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 (98) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/adapters/claude/index.d.mts +24 -24
  3. package/dist/artifact-DF2UJsjP.mjs +1 -0
  4. package/dist/bridge/pty-bridge.cjs +222 -0
  5. package/dist/bus/index.d.mts +20 -20
  6. package/dist/bus/index.mjs +1 -1
  7. package/dist/bus-DgpPEPoM.mjs +9 -0
  8. package/dist/contracts/adapter/index.d.mts +2 -2
  9. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  10. package/dist/contracts/artifact/index.d.mts +3 -3
  11. package/dist/contracts/artifact/index.mjs +1 -1
  12. package/dist/contracts/canonical-model/index.d.mts +1 -1
  13. package/dist/contracts/capabilities/index.d.mts +1 -1
  14. package/dist/contracts/client/index.d.mts +1 -1
  15. package/dist/contracts/extension/index.d.mts +3 -3
  16. package/dist/contracts/index.d.mts +162 -162
  17. package/dist/contracts/index.mjs +1 -1
  18. package/dist/contracts/materialization/index.d.mts +3 -3
  19. package/dist/contracts/materialization/index.mjs +1 -1
  20. package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
  21. package/dist/contracts/reaction/index.d.mts +1 -1
  22. package/dist/contracts/reaction/index.mjs +1 -1
  23. package/dist/contracts/session/index.d.mts +2 -2
  24. package/dist/contracts/shared/index.d.mts +1 -1
  25. package/dist/contracts/variant/index.d.mts +1 -1
  26. package/dist/contracts/worker/index.d.mts +1 -1
  27. package/dist/contracts/worker/index.mjs +1 -1
  28. package/dist/contracts/workflow/index.d.mts +2 -2
  29. package/dist/contracts/workflow/index.mjs +1 -1
  30. package/dist/framework-packages-mquh5_Yw.mjs +1 -0
  31. package/dist/{index-C9Dz8UoK2.d.mts → index-2YW8DTb62.d.mts} +6 -6
  32. package/dist/{index-B7KgjUmJ2.d.mts → index-6UlianLY2.d.mts} +4 -4
  33. package/dist/{index-BRF5X-EZ.d.mts → index-BRXETFym.d.mts} +9 -1
  34. package/dist/{index-BDTcg6tu.d.mts → index-BV3nQpdO.d.mts} +100 -100
  35. package/dist/{index-B1uHTa1l.d.mts → index-BZQ3OviE.d.mts} +1 -1
  36. package/dist/{index-z_wA9LhQ.d.mts → index-Bon00c4i.d.mts} +38 -1
  37. package/dist/{index-DyzmUD1S.d.mts → index-BrMihjbI.d.mts} +19 -19
  38. package/dist/{index-BVG-RaIu.d.mts → index-C4VB63lu.d.mts} +76 -76
  39. package/dist/{index-DRSeELQh.d.mts → index-CEX9qfLa.d.mts} +1 -1
  40. package/dist/{index-QYdQSOnc2.d.mts → index-CydQ1dLS2.d.mts} +6 -6
  41. package/dist/{index-CI5ss_XH.d.mts → index-D5Lw1UsO.d.mts} +339 -339
  42. package/dist/{index-BUxs65tf.d.mts → index-DDCixELI.d.mts} +1 -1
  43. package/dist/{index-8hJCLlAE.d.mts → index-DJLRXASA.d.mts} +11 -11
  44. package/dist/{index-CmTVBNCe.d.mts → index-Dcwee5Cl.d.mts} +372 -296
  45. package/dist/{index-CDuEmakt2.d.mts → index-LCumcYK12.d.mts} +378 -378
  46. package/dist/{index-qtH2O8j_.d.mts → index-QgSmUedN.d.mts} +6 -6
  47. package/dist/{index-BnNNfBck.d.mts → index-rkN_9bde.d.mts} +12 -12
  48. package/dist/kernel/extension/index.d.mts +2 -2
  49. package/dist/kernel/index.d.mts +2 -2
  50. package/dist/kernel/observability/index.d.mts +1 -1
  51. package/dist/{materialization-iFhpbs1s.mjs → materialization-CIrHHspa.mjs} +4 -1
  52. package/dist/{namespace-Bz0ZDWhE.d.mts → namespace-BEi98VfQ.d.mts} +18 -18
  53. package/dist/{namespace-BhpzgnH3.d.mts → namespace-C5tKjqgb.d.mts} +1 -1
  54. package/dist/{namespace-CNX4llM5.d.mts → namespace-D8oTiLLo.d.mts} +12 -12
  55. package/dist/{namespace-B0__88KU.d.mts → namespace-HLrZerLd.d.mts} +154 -154
  56. package/dist/{namespace-BaUgxONS.d.mts → namespace-KomML5ti.d.mts} +2 -2
  57. package/dist/{package-jjugnMVh.d.mts → package-BswWlFSn.d.mts} +1 -1
  58. package/dist/package.json +1 -1
  59. package/dist/reaction-DVa5lwm5.mjs +1 -0
  60. package/dist/{schemas-DFamD1UF.d.mts → schemas-BOT1HUv6.d.mts} +154 -154
  61. package/dist/{schemas-KyQQPGjX.d.mts → schemas-CrOeGZHg.d.mts} +11 -11
  62. package/dist/{schemas-D9pXu76T.d.mts → schemas-__oTCzF6.d.mts} +8 -8
  63. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  64. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  65. package/dist/services/agent-runtime/index.d.mts +2 -2
  66. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  67. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  68. package/dist/services/context-rules/index.d.mts +3 -3
  69. package/dist/services/filesystem/namespace.d.mts +6 -6
  70. package/dist/services/filesystem/schemas.d.mts +3 -3
  71. package/dist/services/index.d.mts +137 -100
  72. package/dist/services/index.mjs +1 -1
  73. package/dist/services/provider-context/index.d.mts +1 -1
  74. package/dist/services/session/index.d.mts +3 -3
  75. package/dist/services/session/messages/namespace.d.mts +1 -1
  76. package/dist/services/session/session-events/namespace.d.mts +1 -1
  77. package/dist/services/settings/namespace.d.mts +8 -8
  78. package/dist/services/subagent-template/index.d.mts +2 -2
  79. package/dist/services/subagent-template/namespace.d.mts +1 -1
  80. package/dist/services/subagent-template/schemas.d.mts +1 -1
  81. package/dist/services/tools/index.mjs +1 -1
  82. package/dist/services/workflow-transitions/index.mjs +1 -1
  83. package/dist/{session-lineage-CmP7L5g2.d.mts → session-lineage-BQ9NWlt6.d.mts} +1 -1
  84. package/dist/{tools-ByDy0ueE.mjs → tools-K3DWA4Jr.mjs} +1 -1
  85. package/dist/{transition-CAtcgdUp.d.mts → transition-CSN6QoMp.d.mts} +1 -1
  86. package/dist/{types-BbqmHOM-.d.mts → types-BP_P1izV.d.mts} +350 -350
  87. package/dist/{view-builder-6YQFmKD6.d.mts → view-builder-2cR7vI7R.d.mts} +1 -1
  88. package/dist/{worker-B72n8bse.mjs → worker-YKEWHrx5.mjs} +1 -1
  89. package/dist/{workflow-D-X3rPsl.mjs → workflow-01evBylF.mjs} +1 -1
  90. package/dist/workflow-engine/index.d.mts +33 -33
  91. package/dist/workflow-engine/package.d.mts +1 -1
  92. package/dist/{workflow-transitions-UOXY-VZa.mjs → workflow-transitions-C2BLDE5N.mjs} +1 -1
  93. package/package.json +1 -1
  94. package/dist/artifact-CKz9YQPu.mjs +0 -1
  95. package/dist/bus-D4DBDaoS.mjs +0 -9
  96. package/dist/framework-packages-C2tvdFmP.mjs +0 -1
  97. package/dist/reaction-C8WbJqLk.mjs +0 -1
  98. package/dist/{schemas-CuOZoC08.d.mts → schemas-CU2NE5Lg.d.mts} +8 -8
@@ -0,0 +1 @@
1
+ import{wt as e,x as t}from"./handlers-mjky_fP2.mjs";import{SessionStorageSubjects as n}from"./services/session/storage/namespace.mjs";import{E as r,I as i,J as a,N as o,U as s,a as c,b as l,c as u,d,et as ee,i as te,k as ne,n as re,nt as ie,r as ae}from"./session-D38UuGGX.mjs";import{r as f,t as oe}from"./namespace-J87EeVTm.mjs";import{_ as se,a as ce,c as le,o as ue,s as de}from"./packages-vF9F4M41.mjs";import{n as fe}from"./package-BCKYMTYG.mjs";import"./services/adapter-subsystem/index.mjs";import{i as pe,s as me}from"./model-registry-CeDu27XL.mjs";import{d as he,f as ge,n as _e}from"./package-BwlW7N32.mjs";import{t as ve}from"./tool-approval-service-vG2mEC9p.mjs";import{t as ye}from"./tray-menu-service-BRrnoqaY.mjs";import{r as p,t as be}from"./handler-Cc1MhaR4.mjs";import{r as xe}from"./package-BSz4hbav.mjs";import{t as Se}from"./filesystem-service-CIaAqTRi.mjs";import{z as m}from"zod";import{createHash as Ce}from"node:crypto";import{getErrorString as h}from"@makaio/framework/utils";import{MakaioError as we,createMakaioContext as Te}from"@makaio/framework/core";import{AdapterSubjects as Ee,ArtifactSubjects as g,CanonicalModelSubjects as De,DEFAULT_HARNESSES as Oe,HarnessDefinitionCreateSchema as ke,HarnessSubjects as _,JsonValueSchema as Ae,ReactionDescriptorSchema as je,ToolSubjects as v,TransitionRuleDefinitionSchema as Me,WorkflowBlocksSubjects as y,WorkflowSubjects as Ne,dep as b,extensionToken as x,validateToolAdapterIdentity as Pe,zodSchemaToJsonRecord as S}from"@makaio/framework/contracts";import{MakaioBus as C}from"@makaio/framework/bus";import{BaseService as w}from"@makaio/framework/service-base";import{registerDrizzleHandlers as T}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as E}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as Fe,ClientSessionAccountObserveSchema as Ie,ClientSubjects as D}from"@makaio/framework/contracts/client";import{FacetSubjects as O}from"@makaio/framework/contracts/facet";import{FILE_ACCESS_RULES_KEY as Le,ToolErrorCodes as k,errorToToolResult as Re,toolError as A,toolSuccess as ze}from"@makaio/framework/tools";import{ConditionSchema as Be,evaluate as Ve}from"@makaio/framework/rules";import{evaluateSync as He}from"@makaio/framework/expression";import{GitService as Ue}from"@makaio/framework/git";var j=class extends Error{reason;hookId;constructor(e,t){super(`Artifact write rejected by hook '${t}': ${e}`),this.reason=e,this.hookId=t,this.name=`ArtifactLifecycleHookRejectedError`}};function M(e,t){return e?!(e.kind!==void 0&&e.kind!==`*`&&e.kind!==t.kind||e.schemaVersion!==void 0&&e.schemaVersion!==t.schemaVersion):!0}function N(e){return e.priority??0}function We(e,t,n){return e.filter(e=>e.event===t&&M(e.filter,n)).sort((e,t)=>N(t)-N(e))}function Ge(e,t,n){return e.filter(e=>e.event===t&&M(e.filter,n)).sort((e,t)=>N(t)-N(e))}function Ke(e,t){return{...e,...`data`in t?{data:t.data}:{},...`relations`in t?{relations:t.relations}:{},...`evidence`in t?{evidence:t.evidence}:{},...`confidence`in t?{confidence:t.confidence}:{},...`representations`in t?{representations:t.representations}:{},...`actor`in t?{actor:t.actor}:{}}}function qe(e,t){let{evidence:n,confidence:r,representations:i,...a}=e;return{...a,data:t.data,relations:[...t.relations],...t.evidence===void 0?{}:{evidence:t.evidence},...t.confidence===void 0?{}:{confidence:t.confidence},...t.representations===void 0?{}:{representations:t.representations},actor:t.actor}}var P=class extends w{registrations=new Map;constructor(e){super(e)}async onInit(){}onDestroy(){this.registrations.clear()}registerHooks(e,t){let n=[...t];this.registrations.set(e,n);let r=!1;return()=>{r||(r=!0,this.registrations.get(e)===n&&this.registrations.delete(e))}}allHooks(){let e=[];for(let t of this.registrations.values())e.push(...t);return e}async runBeforeCreate(e){return this.runBeforeHooks(`beforeCreate`,e)}async runBeforeRevise(e){return this.runBeforeHooks(`beforeRevise`,e)}async runBeforeHooks(e,t){let{draft:n,previous:r,kindRegistration:i}=t,a=We(this.allHooks(),e,n),o=new Map,s={kind:n.kind,schemaVersion:n.schemaVersion,scope:n.scope,data:n.data,relations:n.relations,...n.evidence===void 0?{}:{evidence:n.evidence},...n.confidence===void 0?{}:{confidence:n.confidence},...n.representations===void 0?{}:{representations:n.representations},actor:n.actor},c=!1;for(let t of a){let n,a={event:e,get draft(){return s},previous:r,kindRegistration:i,bus:this.bus,meta:o,rejectCreation(e){n={reason:e}},skipMaterialization(){c=!0},updateDraft(e){s=Ke(s,e)}};if(await t.handler(a),n)throw new j(n.reason,t.id)}return{draft:qe(n,s),skipMaterialization:c,meta:o}}async runAfterCreate(e){await this.runAfterHooks(`afterCreate`,`created`,e)}async runAfterRevise(e){await this.runAfterHooks(`afterRevise`,`revised`,e)}async runAfterStatusChanged(e){await this.runAfterHooks(`afterStatusChanged`,`status-changed`,e)}async runAfterObservationAdded(e){await this.runAfterHooks(`afterObservationAdded`,`observation-added`,e)}async runAfterHooks(e,t,n){let{artifact:r,previous:i,observation:a,kindRegistration:o,skipDefaultProjection:s,meta:c}=n,l=Ge(this.allHooks(),e,r),u=this.bus,d=!1;for(let n of l){if(s&&(n.priority??0)<0||d&&(n.priority??0)<0)continue;let l={event:e,semanticEvent:t,artifact:r,previous:i?{refClass:`artifact`,id:i.id,revision:i.revision,kind:i.kind}:void 0,observation:a,kindRegistration:o,bus:u,meta:c,preventDefault(){d=!0},async resolveRelations(e){let t=r.relations.filter(t=>t.type===e).map(e=>e.target),n=[];for(let e of t){let t=e;if(t.refClass===`artifact`){let e=t,{artifact:r}=await u.request(g.resolve,{ref:e});r&&n.push(r)}}return n}};try{await n.handler(l)}catch(t){console.error(`[ArtifactLifecycleHookRegistry] Hook '${n.id}' threw during '${e}':`,t)}}}};function F(e){return structuredClone(e)}var I=class extends w{namespaces=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(O.namespace.register,e=>{this.registerNamespace(e.payload),e.setResult({registered:!0})}),this.registerHandler(O.namespace.list,e=>{let{namespace:t}=e.payload,n=[...this.namespaces.values()].filter(e=>!t||e.namespace===t).map(F);e.setResult({namespaces:n})})}registerNamespace(e){let t=this.namespaces.get(e.namespace);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Facet namespace '${e.namespace}' is already registered with a different definition`);return}this.namespaces.set(e.namespace,F(e)),this.bus.emit(O.namespace.changed,{namespace:e.namespace})}deregisterNamespace(e){this.namespaces.delete(e)&&this.bus.emit(O.namespace.changed,{namespace:e})}getNamespace(e){let t=this.namespaces.get(e);return t?F(t):void 0}onDestroy(){this.namespaces.clear()}},L=class extends we{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},R=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new L(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new L(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new L(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new L(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new L(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new L(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new L(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new L(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new L(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new L(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},z=class e extends w{constructor(e=C){super(e)}async onInit(){await this.bus.request(f.ensureReady,{});let e=new R(this.createDeps());this.registerHandler(De.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(f.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(f.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(f.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(f.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(f.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(f.listProviderConfigs,{enabled:!0}),r=E(t);return n.find(e=>E(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(f.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(f.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(me.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(f.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const B={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,dependencies:[b(oe)],critical:!1,create:e=>new z(e.bus)};var V=class extends w{definitionsByExtension=new Map;definitionsByKind=new Map;constructor(e){super(e)}onInit(){}onDestroy(){this.definitionsByExtension.clear(),this.definitionsByKind.clear()}register(e,t){let n=this.validateBatch(e,t),r=new Map(this.definitionsByExtension);n.length===0?r.delete(e):r.set(e,n);let i=new Map;for(let e of r.values())for(let t of e)i.set(t.descriptor.kind,t);this.definitionsByExtension=r,this.definitionsByKind=i}deregister(e){this.definitionsByExtension.has(e)&&this.register(e,[])}listDescriptors(){return Array.from(this.definitionsByKind.values(),({descriptor:e})=>structuredClone(e))}async invoke(e,t,n){let r=crypto.randomUUID(),i=this.definitionsByKind.get(e);if(!i)return this.failure(e,r,n.correlationId,`unknown-reaction`,`Reaction kind '${e}' is not registered`);let a=Ye(n.deadlineEpochMs),o=this.cancelledBeforeValidation(e,r,n,a);if(o)return o;let s=Xe(n.hostSignal,a),c=Ze(r,s.controller.signal,n);try{let n;try{n=await i.parameterSchema.safeParseAsync(t)}catch(t){return this.cancelledAfterValidation(e,r,c.correlationId,s,a)||this.failure(e,r,c.correlationId,`invalid-parameters`,`Parameter validation for Reaction '${e}' threw: ${h(t)}`,t)}return this.cancelledAfterValidation(e,r,c.correlationId,s,a)||(n.success?(await i.handler(n.data,c),{success:!0}):this.failure(e,r,c.correlationId,`invalid-parameters`,`Invalid parameters for Reaction '${e}': ${n.error.message}`))}catch(t){return this.logFailure(e,r,c.correlationId,`Reaction '${e}' handler threw`,t),{success:!1,error:{code:`handler-failed`,message:h(t)}}}finally{s.release()}}failure(e,t,n,r,i,a){return this.logFailure(e,t,n,i,a),{success:!1,error:{code:r,message:i}}}cancelledBeforeHandler(e,t,n,r){return this.failure(e,t,n,`cancelled`,`Reaction '${e}' cancelled before handler entry: ${h(r)}`,r)}cancelledBeforeValidation(e,t,n,r){if(n.hostSignal?.aborted)return this.failure(e,t,n.correlationId,`cancelled`,`Reaction '${e}' host signal already aborted`);if(r!==void 0&&r<=Date.now())return this.failure(e,t,n.correlationId,`cancelled`,`Reaction '${e}' deadline already passed`)}cancelledAfterValidation(e,t,n,r,i){return i!==void 0&&H(r.controller,i),r.controller.signal.aborted?this.cancelledBeforeHandler(e,t,n,r.controller.signal.reason):void 0}logFailure(e,t,n,r,i){let a=n===void 0?``:` (correlationId: ${n})`;console.error(`[ReactionRegistry] Reaction '${e}' invocation '${t}' failed${a}: ${r}`,...i===void 0?[]:[i])}validateBatch(e,t){let n=`${e}.`,r=new Set,i=new Set(this.definitionsByExtension.get(e)?.map(e=>e.descriptor.kind)),a=[];for(let o of t){if(!o.kind.startsWith(n)||o.kind.length===n.length)throw Error(`Reaction '${o.kind}' must be namespaced by extension '${n}'`);if(r.has(o.kind))throw Error(`Reaction kind collision: '${o.kind}' appears twice in batch from '${e}'`);if(this.definitionsByKind.has(o.kind)&&!i.has(o.kind))throw Error(`Reaction kind collision: '${o.kind}' is already registered`);r.add(o.kind);let t=je.parse(o.toDescriptor());if(t.kind!==o.kind)throw Error(`Reaction descriptor kind '${t.kind}' does not match definition kind '${o.kind}'`);a.push({parameterSchema:o.parameterSchema,handler:o.handler,descriptor:t})}return a}};const Je=()=>{};function Ye(e){return e!==void 0&&Number.isFinite(e)?e:void 0}function Xe(e,t){let n=new AbortController;if(e===void 0&&t===void 0)return{controller:n,release:Je};let r=[];if(e){let t=()=>{n.abort(e.reason)};e.addEventListener(`abort`,t,{once:!0}),r.push(()=>{e.removeEventListener(`abort`,t)})}if(t!==void 0){let e,i=()=>{if(H(n,t)){e=void 0;return}let r=t-Date.now();e=setTimeout(i,Math.min(r,2147483647)),e.unref?.()};i(),r.push(()=>{clearTimeout(e)})}return{controller:n,release:()=>{for(let e of r)e()}}}function H(e,t){return t>Date.now()?!1:(e.abort(Error(`Reaction invocation deadline reached (deadlineEpochMs: ${t})`)),!0)}function Ze(e,t,n){return Object.freeze({invocationId:e,ruleRef:n.ruleRef,eventKind:n.eventKind,eventPayload:n.eventPayload,hostContext:n.hostContext,correlationId:n.correlationId,signal:t,deadlineEpochMs:n.deadlineEpochMs})}const U=x(`reaction-registry`),W={name:U.name,displayName:`Reaction Registry`,version:`0.1.0`,critical:!0,create:e=>new V(e.bus)};function Qe(e){let t=Pe({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?A(k.VALIDATION_FAILED,n.message):ze(t.effectiveIdentity)}function $e(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function et(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function tt(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var G=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??C,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(v.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(v.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${v.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(v.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${v.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${v.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(v.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return A(k.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=Qe(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=tt(),l=Date.now();await this.bus.emit(v.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=A(k.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(v.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(v.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(v.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=Re(t);return await this.bus.emit(v.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=$e(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Le]:i}}let r=Te({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:i?.adapterSessionId,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return A(k.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return A(k.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=m.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=m.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await et(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},nt=class extends w{stepsByExtension=new Map;revision=0;cache=null;constructor(e){super(e)}onInit(){this.registerHandler(y.list,e=>{e.setResult({steps:this.listSteps()})})}async register(e,t){let n=[],r=this.snapshotExtensionState(e),i=new Set;for(let e of this.stepsByExtension.values())for(let t of e)i.add(t.metadata.name);for(let r of t.steps??[])this.assertExtensionNamespace(e,r.metadata),this.assertNoCollision(r.metadata,i),i.add(r.metadata.name),n.push({metadata:{...r.metadata,extensionName:e},configSchema:S(r.configSchema),inputSchema:S(r.inputSchema),outputSchema:S(r.outputSchema),runs:structuredClone(r.runs)});if(n.length!==0){this.stepsByExtension.set(e,n),this.revision+=1;try{await this.emitChanged(e,`registered`)}catch(t){throw this.restoreExtensionState(e,r),t}}}async deregister(e){let t=this.snapshotExtensionState(e);if(this.stepsByExtension.delete(e)){this.revision+=1;try{await this.emitChanged(e,`deregistered`)}catch(n){throw this.restoreExtensionState(e,t),n}}}listSteps(){return this.getCache().steps.map(rt)}async emitChanged(e,t){await this.bus.emit(y.changed,{extensionName:e,revision:this.revision,reason:t})}getCache(){return(!this.cache||this.cache.revision!==this.revision)&&(this.cache={revision:this.revision,steps:[...this.stepsByExtension.values()].flat()}),this.cache}snapshotExtensionState(e){return{steps:this.stepsByExtension.get(e),revision:this.revision,cache:this.cache}}restoreExtensionState(e,t){t.steps?this.stepsByExtension.set(e,t.steps):this.stepsByExtension.delete(e),this.revision=t.revision,this.cache=t.cache}assertNoCollision(e,t){if(t.has(e.name))throw Error(`Workflow block name collision: '${e.name}' is already registered`)}assertExtensionNamespace(e,t){let n=`${e}.`;if(!t.name.startsWith(n))throw Error(`Workflow block '${t.name}' must be namespaced by extension '${n}'`)}};function rt(e){return{metadata:it(e.metadata),configSchema:structuredClone(e.configSchema),inputSchema:structuredClone(e.inputSchema),outputSchema:structuredClone(e.outputSchema),runs:structuredClone(e.runs)}}function it(e){return e.categories?{...e,categories:[...e.categories]}:{...e}}const K=`workflow.start`;function at(e){return()=>({async execute(t,n){let{input:r={}}=t,{workflowId:i}=r;if(typeof i!=`string`||i.length===0)throw Error(`[TransitionActionRegistry] 'workflow.start' action requires a non-empty 'input.workflowId' string`);await e.request(Ne.start,{workflowId:i,input:ot(r,n),config:r.config,artifactRef:r.artifactRef,scope:r.scope,triggerPayload:{_transitionRuleId:n._transition.ruleId,_transitionDepth:n._transition.depth,_transitionEventType:n._transition.eventType}})}})}function ot(e,t){let n=e.inputExpression;if(typeof n!=`string`)return e.input;let r=He(n,st(t)),i=Ae.safeParse(r);if(!i.success)throw Error(`[TransitionActionRegistry] 'workflow.start' inputExpression for rule '${t._transition.ruleId}' must resolve to a JSON value`);return i.data}function st(e){let t={...e};return{...t,ctx:t}}var ct=class{factories=new Map;factoriesBySource=new Map;constructor(e){this.factories.set(K,at(e)),this.factoriesBySource.set(`__builtin__`,[K])}register(e,t){let n=Object.keys(t);if(n.length!==0){if(this.factoriesBySource.has(e))throw Error(`TransitionActionRegistry: duplicate source '${e}'`);for(let t of n)if(this.factories.has(t))throw Error(`TransitionActionRegistry: duplicate action type '${t}' from source '${e}'`);for(let e of n)this.factories.set(e,t[e]);this.factoriesBySource.set(e,n)}}deregister(e){if(e===`__builtin__`)return;let t=this.factoriesBySource.get(e);if(t){for(let e of t)this.factories.delete(e);this.factoriesBySource.delete(e)}}async dispatch(e,t){let n=this.factories.get(e.type);if(!n)throw Error(`TransitionActionRegistry: unknown action type '${e.type}'. Registered types: ${[...this.factories.keys()].join(`, `)}`);await n().execute(e,t)}has(e){return this.factories.has(e)}listTypes(){return[...this.factories.keys()]}},lt=class{rulesBySource=new Map;rulesByEventType=new Map;ruleIdSet=new Set;register(e,t){if(t.length===0)return;if(this.rulesBySource.has(e))throw Error(`TransitionRuleRegistry: duplicate source '${e}'`);let n=new Set,r=[];for(let i of t){let t=Me.parse(i);if(n.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' within source '${e}'`);if(this.ruleIdSet.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' from source '${e}'`);n.add(t.id),r.push({rule:t,condition:t.when===void 0?void 0:Be.parse(t.when)})}for(let e of r){let{rule:t}=e;this.ruleIdSet.add(t.id);let n=this.rulesByEventType.get(t.on)??[];n.push(e),this.rulesByEventType.set(t.on,n)}this.rulesBySource.set(e,r)}deregister(e){let t=this.rulesBySource.get(e);if(t){for(let{rule:e}of t){this.ruleIdSet.delete(e.id);let t=this.rulesByEventType.get(e.on);if(t){let n=t.filter(t=>t.rule.id!==e.id);n.length>0?this.rulesByEventType.set(e.on,n):this.rulesByEventType.delete(e.on)}}this.rulesBySource.delete(e)}}getRulesForEvent(e){let t=this.rulesByEventType.get(e);return t?t.filter(e=>e.rule.enabled):[]}snapshotSource(e){let t=this.rulesBySource.get(e);if(t)return{ruleIds:t.map(e=>e.rule.id)}}},ut=class extends w{ruleRegistry;actionRegistry;depthMap=new Map;constructor(e){super(e),this.ruleRegistry=new lt,this.actionRegistry=new ct(e)}onInit(){this.registerHandler(g.created,async e=>{await this.handleArtifactEvent(`artifact.created`,{artifact:e.payload.artifact})}),this.registerHandler(g.revised,async e=>{let t=await this.resolvePreviousRevisedArtifact(e.payload.previous);await this.handleArtifactEvent(`artifact.revised`,{artifact:e.payload.artifact,previous:e.payload.previous,...t===void 0?{}:{previousArtifact:t}})}),this.registerHandler(g.status.changed,async e=>{let t=await this.resolveStatusChangedArtifact(e.payload.artifact);t!==void 0&&await this.handleArtifactEvent(`artifact.status.changed`,{artifact:t,path:e.payload.path,previous:e.payload.previous,current:e.payload.current})})}async handleArtifactEvent(e,t){let n=this.artifactKey(t.artifact),r=this.readDepth(n);if(r>=10){console.warn(`[TransitionPipelineService] Transition depth limit (10) reached for event '${e}' on artifact '${n}'. Loop protection active — skipping rule evaluation.`);return}let i=this.ruleRegistry.getRulesForEvent(e);if(i.length!==0)for(let a of i)await this.evaluateAndDispatch(a,e,t,n,r)}async resolveStatusChangedArtifact(e){let t=await this.bus.requestOptional(g.resolve,{ref:e});if(!t.handled){console.warn(`[TransitionPipelineService] No artifact resolver is registered for status transition on artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}if(t.data.artifact===null){console.warn(`[TransitionPipelineService] Could not resolve status transition artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}return t.data.artifact}async resolvePreviousRevisedArtifact(e){let t=await this.bus.requestOptional(g.resolve,{ref:e});if(!(!t.handled||t.data.artifact===null))return t.data.artifact}async evaluateAndDispatch(e,t,n,r,i){let{rule:a,condition:o}=e,s={...n,_transition:{ruleId:a.id,eventType:t,depth:i+1}};if(o!==void 0){let e={...s},t;try{t=Ve(o,e)}catch(e){console.error(`[TransitionPipelineService] Condition evaluation error for rule '${a.id}':`,e);return}if(!t)return}try{await this.actionRegistry.dispatch(a.action,s),a.action.type===`workflow.start`&&this.incrementDepth(r)}catch(e){console.error(`[TransitionPipelineService] Action dispatch error for rule '${a.id}' (action type '${a.action.type}'):`,e)}}artifactKey(e){return`${typeof e.kind==`string`?e.kind:`unknown`}:${typeof e.id==`string`?e.id:`unknown`}`}readDepth(e){let t=this.depthMap.get(e);return t===void 0?0:Date.now()>t.expiresAt?(this.depthMap.delete(e),0):t.count}incrementDepth(e){let t=this.depthMap.get(e);this.depthMap.set(e,{count:t===void 0?1:t.count+1,expiresAt:Date.now()+6e4})}};function dt(e){return async t=>{let n=await ft(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=pt(t),o=await e.requestOptional(D.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await bt(e,r,i,s)}}}async function ft(e,t){switch(t.locator.kind){case`session`:{let{session:r}=await e.request(n.get,{sessionId:t.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await e.request(n.getByAdapterSessionId,{adapterSessionId:t.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([e.request(n.get,{sessionId:t.locator.sessionId}),e.request(n.getByAdapterSessionId,{adapterSessionId:t.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${t.locator.sessionId}" and adapterSessionId "${t.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${t.locator.sessionId}" and adapterSessionId "${t.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function pt(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:vt(e.payload)};return{observation:t,accountObserveRequest:mt(t)}}function mt(e){let t=e.payload,n=ht(t),r=gt(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:_t(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function ht(e){return yt(e.accountInfo)??e}function gt(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return m.array(Fe).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function _t(e,t){return q(e.displayLabel)??q(t.displayLabel)??q(t.email)??q(t.label)}function vt(e){return structuredClone(e)}function yt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function q(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function bt(e,t,r,i){let a=await e.request(n.update,{sessionId:t,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${t}" with client account linkage`);return a.clientAccountChanged??!1}const xt=x(`session-storage`).name;var St=class extends w{constructor(e=C){super(e)}onInit(){let e=dt(this.bus);this.registerHandler(D.session.account.observe,async t=>{t.setResult(await e(Ie.request.parse(t.payload)))})}};const Ct={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[b(xt),b(`makaio.clients-core`)],critical:!1,create:e=>new St(e.bus)},wt={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function Tt(e){let{harnesses:t}=await e.request(p.list,{}),n=new Set(t.map(e=>e.id));for(let t of Oe){if(n.has(t.id))continue;let r={...t};await e.request(p.set,{harness:r})}}function J(e,t,n){return e??t??n}var Et=class extends w{static storage={drizzle:be};constructor(e=C){super(e)}async onInit(){await Tt(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(_.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(_.list,async e=>{let{harnesses:t}=await this.bus.request(p.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(_.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(_.delete,async e=>{let{deleted:t}=await this.bus.request(p.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(_.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(_.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(_.getSchema,({setResult:e})=>{let{$schema:t,...n}=m.toJSONSchema(ke);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(p.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:J(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:J(t.clientId,n?.clientId,void 0),env:J(t.env,n?.env,void 0),credentials:J(t.credentials,n?.credentials,void 0),cwd:J(t.cwd,n?.cwd,void 0),approvalPolicy:J(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:J(t.nativeTools,n?.nativeTools,r),registryTools:J(t.registryTools,n?.registryTools,r),skills:J(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:J(t.isDefault,n?.isDefault,!1),enabled:J(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(p.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(p.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(p.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(p.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(p.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(Ee.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${Ce(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const Dt={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T(be)},create:e=>new Et(e.bus)},Y=x(`session-storage`),X=x(`session-bridge`),Z=x(`session`),Ot=x(`session-orchestrator`),kt=x(`observed-session-ingestion`),Q=x(`tool-registry`),At=x(`tool-approval`),jt=x(`tray-menu`),Mt=x(`model-registry`),Nt=x(`workflow-block-registry`),Pt=x(`transition-pipeline`),Ft=x(`filesystem`),It=x(`git`),Lt=x(`artifact-lifecycle-hook-registry`),Rt=x(`facet-namespace-registry`),zt={name:Lt.name,displayName:`Artifact Lifecycle Hook Registry`,version:`0.1.0`,critical:!0,create:e=>new P(e.bus)},Bt={name:Rt.name,displayName:`Facet Namespace Registry`,version:`0.1.0`,critical:!0,create:e=>new I(e.bus)},$={name:Y.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T((n,i)=>{let s=[],d=e=>{for(let t=s.length-1;t>=0;--t)try{s[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}s.length=0};try{s.push(ne(n,i)),s.push(e(n,i)),s.push(ee(n,i)),s.push(a(n,i)),s.push(t(n,i)),s.push(o(n,i)),s.push(r(n,i)),s.push(u(n,i)),s.push(l(n,i)),s.push(c(n,i)),s.push(te(n)),s.push(ae(n)),s.push(re(n))}catch(e){throw d(`rollback`),e}return()=>{d(`shutdown`)}})}},Vt={name:X.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[b(Y.name)],critical:!0,create:e=>new i(e.bus)},Ht={name:Z.name,displayName:`Session`,version:`0.1.0`,dependencies:[b(X.name)],critical:!0,create:e=>new ie(e.bus,{machineId:e.machineId,topology:`shared-machine`})},Ut={name:Ot.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[b(Z.name),b(B.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new s(e.bus,e.machineId)},Wt={name:kt.name,displayName:`Observed-Session Ingestion`,version:`0.1.0`,dependencies:[b(X.name)],critical:!1,create:e=>new d(e.bus)},Gt={name:Q.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new G({bus:e.bus})},Kt={name:At.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[b(Q.name)],critical:!0,create:e=>new ve(e.bus)},qt={name:jt.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new ye(e.bus)},Jt={name:Nt.name,displayName:`Workflow Block Registry`,version:`0.1.0`,critical:!0,create:e=>new nt(e.bus)},Yt={name:Pt.name,displayName:`Transition Pipeline`,version:`0.1.0`,critical:!0,create:e=>new ut(e.bus)},Xt={name:Ft.name,displayName:`Filesystem`,version:`0.1.0`,critical:!0,create:e=>new Se(e.bus,e.machineId)},Zt={name:It.name,displayName:`Git`,version:`0.1.0`,dependencies:[b(Ft.name)],critical:!0,create:e=>new Ue(e.bus)};function Qt(e){return{name:Mt.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new pe({bus:t.bus,fetcher:e})}}const $t=[se,zt,Bt,le,de,ce,ue,$,Vt,Ct,Ht,Ut,Wt,xe,Gt,Kt,qt,fe,Dt,B,wt,Jt,W,ge,he,_e,Yt,Zt,Xt];export{nt as A,P as B,Yt as C,lt as D,ut as E,B as F,z as I,R as L,U as M,W as N,ct as O,V as P,L as R,Gt as S,Jt as T,j as V,Vt as _,Ot as a,$ as b,At as c,jt as d,Nt as f,$t as g,Bt as h,X as i,G as j,K as k,Q as l,Qt as m,Rt as n,Y as o,zt as p,Mt as r,Z as s,Lt as t,Pt as u,Ut as v,qt as w,Kt as x,Ht as y,I as z};
@@ -128,8 +128,8 @@ declare const NativeSessionSupervisorNamespace: _$_makaio_core0.BusNamespaceDefi
128
128
  pid: _$zod.ZodNullable<_$zod.ZodNumber>;
129
129
  status: _$zod.ZodEnum<{
130
130
  unknown: "unknown";
131
- running: "running";
132
131
  exited: "exited";
132
+ running: "running";
133
133
  stopped: "stopped";
134
134
  }>;
135
135
  cwd: _$zod.ZodString;
@@ -271,8 +271,8 @@ declare const NativeSessionSupervisorSubjects: _$_makaio_core0.BusSubjects<_$_ma
271
271
  pid: _$zod.ZodNullable<_$zod.ZodNumber>;
272
272
  status: _$zod.ZodEnum<{
273
273
  unknown: "unknown";
274
- running: "running";
275
274
  exited: "exited";
275
+ running: "running";
276
276
  stopped: "stopped";
277
277
  }>;
278
278
  cwd: _$zod.ZodString;
@@ -296,8 +296,8 @@ declare const NativeSessionSupervisorSubjects: _$_makaio_core0.BusSubjects<_$_ma
296
296
  */
297
297
  declare const SupervisorSessionStatusSchema: z.ZodEnum<{
298
298
  unknown: "unknown";
299
- running: "running";
300
299
  exited: "exited";
300
+ running: "running";
301
301
  stopped: "stopped";
302
302
  }>;
303
303
  type SupervisorSessionStatus = z.infer<typeof SupervisorSessionStatusSchema>;
@@ -455,8 +455,8 @@ declare const SupervisorRuntimeSnapshotSchema: z.ZodObject<{
455
455
  pid: z.ZodNullable<z.ZodNumber>;
456
456
  status: z.ZodEnum<{
457
457
  unknown: "unknown";
458
- running: "running";
459
458
  exited: "exited";
459
+ running: "running";
460
460
  stopped: "stopped";
461
461
  }>;
462
462
  cwd: z.ZodString;
@@ -496,8 +496,8 @@ declare const NativeSupervisorStatusSchema: {
496
496
  pid: z.ZodNullable<z.ZodNumber>;
497
497
  status: z.ZodEnum<{
498
498
  unknown: "unknown";
499
- running: "running";
500
499
  exited: "exited";
500
+ running: "running";
501
501
  stopped: "stopped";
502
502
  }>;
503
503
  cwd: z.ZodString;
@@ -630,8 +630,8 @@ declare const NativeSessionSupervisorSchemas: {
630
630
  pid: z.ZodNullable<z.ZodNumber>;
631
631
  status: z.ZodEnum<{
632
632
  unknown: "unknown";
633
- running: "running";
634
633
  exited: "exited";
634
+ running: "running";
635
635
  stopped: "stopped";
636
636
  }>;
637
637
  cwd: z.ZodString;
@@ -27,8 +27,8 @@ type MakaioVariant = z.infer<typeof MakaioVariantSchema>;
27
27
  */
28
28
  declare const VariantUpgradeStatusSchema: z.ZodEnum<{
29
29
  error: "error";
30
- progress: "progress";
31
30
  complete: "complete";
31
+ progress: "progress";
32
32
  downloading: "downloading";
33
33
  applying: "applying";
34
34
  }>;
@@ -101,8 +101,8 @@ declare const VariantSchemas: {
101
101
  upgradeProgress: z.ZodObject<{
102
102
  status: z.ZodEnum<{
103
103
  error: "error";
104
- progress: "progress";
105
104
  complete: "complete";
105
+ progress: "progress";
106
106
  downloading: "downloading";
107
107
  applying: "applying";
108
108
  }>;
@@ -158,8 +158,8 @@ declare const VariantNamespace: _$_makaio_core0.BusNamespaceDefinition<"host:var
158
158
  upgradeProgress: _$zod.ZodObject<{
159
159
  status: _$zod.ZodEnum<{
160
160
  error: "error";
161
- progress: "progress";
162
161
  complete: "complete";
162
+ progress: "progress";
163
163
  downloading: "downloading";
164
164
  applying: "applying";
165
165
  }>;
@@ -205,8 +205,8 @@ declare const VariantSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.FlatS
205
205
  upgradeProgress: _$zod.ZodObject<{
206
206
  status: _$zod.ZodEnum<{
207
207
  error: "error";
208
- progress: "progress";
209
208
  complete: "complete";
209
+ progress: "progress";
210
210
  downloading: "downloading";
211
211
  applying: "applying";
212
212
  }>;
@@ -27,7 +27,9 @@ type ReactionDescriptor$1 = z.infer<typeof ReactionDescriptorSchema$1>;
27
27
  * Serializable normalized outcome of a single Reaction invocation.
28
28
  *
29
29
  * A handler that resolves normally maps to `{ success: true }`; a handler
30
- * that throws maps to `{ success: false }` with a plain error message.
30
+ * that throws maps to `{ success: false }` with a stable failure code and a
31
+ * plain error message. Consumers can branch on the code while preserving the
32
+ * message for diagnostics and existing user-facing reporting.
31
33
  * Cancellation is cooperative: a handler that resolves despite an abort
32
34
  * still yields `{ success: true }` — only dispatches that are already
33
35
  * aborted or already past their deadline before handler entry are
@@ -40,6 +42,12 @@ declare const ReactionOutcomeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
40
42
  }, z.core.$strip>, z.ZodObject<{
41
43
  success: z.ZodLiteral<false>;
42
44
  error: z.ZodObject<{
45
+ code: z.ZodEnum<{
46
+ cancelled: "cancelled";
47
+ "unknown-reaction": "unknown-reaction";
48
+ "invalid-parameters": "invalid-parameters";
49
+ "handler-failed": "handler-failed";
50
+ }>;
43
51
  message: z.ZodString;
44
52
  }, z.core.$strip>;
45
53
  }, z.core.$strip>], "success">;
@@ -263,25 +263,6 @@ declare const CanonicalModelSelectionSchema: z.ZodObject<{
263
263
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
264
264
  mcpSessionContext: z.ZodOptional<z.ZodObject<{
265
265
  sessionId: z.ZodString;
266
- directTools: z.ZodArray<z.ZodObject<{
267
- fullName: z.ZodString;
268
- originalName: z.ZodString;
269
- serverName: z.ZodString;
270
- description: z.ZodOptional<z.ZodString>;
271
- inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
272
- exposureMode: z.ZodEnum<{
273
- discovery: "discovery";
274
- direct: "direct";
275
- hidden: "hidden";
276
- }>;
277
- enabled: z.ZodBoolean;
278
- enabledBy: z.ZodOptional<z.ZodEnum<{
279
- discovery: "discovery";
280
- toolset: "toolset";
281
- }>>;
282
- enabledAt: z.ZodOptional<z.ZodNumber>;
283
- exposed: z.ZodBoolean;
284
- }, z.core.$strip>>;
285
266
  servers: z.ZodArray<z.ZodObject<{
286
267
  name: z.ZodString;
287
268
  transport: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -318,9 +299,28 @@ declare const CanonicalModelSelectionSchema: z.ZodObject<{
318
299
  type: z.ZodLiteral<"http">;
319
300
  }, z.core.$strip>], "type">;
320
301
  exposureMode: z.ZodEnum<{
302
+ direct: "direct";
321
303
  discovery: "discovery";
304
+ }>;
305
+ }, z.core.$strip>>;
306
+ directTools: z.ZodArray<z.ZodObject<{
307
+ fullName: z.ZodString;
308
+ originalName: z.ZodString;
309
+ serverName: z.ZodString;
310
+ description: z.ZodOptional<z.ZodString>;
311
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
312
+ exposureMode: z.ZodEnum<{
322
313
  direct: "direct";
314
+ discovery: "discovery";
315
+ hidden: "hidden";
323
316
  }>;
317
+ enabled: z.ZodBoolean;
318
+ enabledBy: z.ZodOptional<z.ZodEnum<{
319
+ discovery: "discovery";
320
+ toolset: "toolset";
321
+ }>>;
322
+ enabledAt: z.ZodOptional<z.ZodNumber>;
323
+ exposed: z.ZodBoolean;
324
324
  }, z.core.$strip>>;
325
325
  discoverableTools: z.ZodArray<z.ZodObject<{
326
326
  fullName: z.ZodString;
@@ -329,8 +329,8 @@ declare const CanonicalModelSelectionSchema: z.ZodObject<{
329
329
  description: z.ZodOptional<z.ZodString>;
330
330
  inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
331
331
  exposureMode: z.ZodEnum<{
332
- discovery: "discovery";
333
332
  direct: "direct";
333
+ discovery: "discovery";
334
334
  hidden: "hidden";
335
335
  }>;
336
336
  enabled: z.ZodBoolean;
@@ -380,25 +380,6 @@ declare const CanonicalModelResolvedSelectionSchema: z.ZodObject<{
380
380
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
381
381
  mcpSessionContext: z.ZodOptional<z.ZodObject<{
382
382
  sessionId: z.ZodString;
383
- directTools: z.ZodArray<z.ZodObject<{
384
- fullName: z.ZodString;
385
- originalName: z.ZodString;
386
- serverName: z.ZodString;
387
- description: z.ZodOptional<z.ZodString>;
388
- inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
389
- exposureMode: z.ZodEnum<{
390
- discovery: "discovery";
391
- direct: "direct";
392
- hidden: "hidden";
393
- }>;
394
- enabled: z.ZodBoolean;
395
- enabledBy: z.ZodOptional<z.ZodEnum<{
396
- discovery: "discovery";
397
- toolset: "toolset";
398
- }>>;
399
- enabledAt: z.ZodOptional<z.ZodNumber>;
400
- exposed: z.ZodBoolean;
401
- }, z.core.$strip>>;
402
383
  servers: z.ZodArray<z.ZodObject<{
403
384
  name: z.ZodString;
404
385
  transport: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -435,9 +416,28 @@ declare const CanonicalModelResolvedSelectionSchema: z.ZodObject<{
435
416
  type: z.ZodLiteral<"http">;
436
417
  }, z.core.$strip>], "type">;
437
418
  exposureMode: z.ZodEnum<{
419
+ direct: "direct";
438
420
  discovery: "discovery";
421
+ }>;
422
+ }, z.core.$strip>>;
423
+ directTools: z.ZodArray<z.ZodObject<{
424
+ fullName: z.ZodString;
425
+ originalName: z.ZodString;
426
+ serverName: z.ZodString;
427
+ description: z.ZodOptional<z.ZodString>;
428
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
429
+ exposureMode: z.ZodEnum<{
439
430
  direct: "direct";
431
+ discovery: "discovery";
432
+ hidden: "hidden";
440
433
  }>;
434
+ enabled: z.ZodBoolean;
435
+ enabledBy: z.ZodOptional<z.ZodEnum<{
436
+ discovery: "discovery";
437
+ toolset: "toolset";
438
+ }>>;
439
+ enabledAt: z.ZodOptional<z.ZodNumber>;
440
+ exposed: z.ZodBoolean;
441
441
  }, z.core.$strip>>;
442
442
  discoverableTools: z.ZodArray<z.ZodObject<{
443
443
  fullName: z.ZodString;
@@ -446,8 +446,8 @@ declare const CanonicalModelResolvedSelectionSchema: z.ZodObject<{
446
446
  description: z.ZodOptional<z.ZodString>;
447
447
  inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
448
448
  exposureMode: z.ZodEnum<{
449
- discovery: "discovery";
450
449
  direct: "direct";
450
+ discovery: "discovery";
451
451
  hidden: "hidden";
452
452
  }>;
453
453
  enabled: z.ZodBoolean;
@@ -511,25 +511,6 @@ declare const CanonicalModelSchemas: {
511
511
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
512
512
  mcpSessionContext: z.ZodOptional<z.ZodObject<{
513
513
  sessionId: z.ZodString;
514
- directTools: z.ZodArray<z.ZodObject<{
515
- fullName: z.ZodString;
516
- originalName: z.ZodString;
517
- serverName: z.ZodString;
518
- description: z.ZodOptional<z.ZodString>;
519
- inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
520
- exposureMode: z.ZodEnum<{
521
- discovery: "discovery";
522
- direct: "direct";
523
- hidden: "hidden";
524
- }>;
525
- enabled: z.ZodBoolean;
526
- enabledBy: z.ZodOptional<z.ZodEnum<{
527
- discovery: "discovery";
528
- toolset: "toolset";
529
- }>>;
530
- enabledAt: z.ZodOptional<z.ZodNumber>;
531
- exposed: z.ZodBoolean;
532
- }, z.core.$strip>>;
533
514
  servers: z.ZodArray<z.ZodObject<{
534
515
  name: z.ZodString;
535
516
  transport: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -566,9 +547,28 @@ declare const CanonicalModelSchemas: {
566
547
  type: z.ZodLiteral<"http">;
567
548
  }, z.core.$strip>], "type">;
568
549
  exposureMode: z.ZodEnum<{
550
+ direct: "direct";
569
551
  discovery: "discovery";
552
+ }>;
553
+ }, z.core.$strip>>;
554
+ directTools: z.ZodArray<z.ZodObject<{
555
+ fullName: z.ZodString;
556
+ originalName: z.ZodString;
557
+ serverName: z.ZodString;
558
+ description: z.ZodOptional<z.ZodString>;
559
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
560
+ exposureMode: z.ZodEnum<{
570
561
  direct: "direct";
562
+ discovery: "discovery";
563
+ hidden: "hidden";
571
564
  }>;
565
+ enabled: z.ZodBoolean;
566
+ enabledBy: z.ZodOptional<z.ZodEnum<{
567
+ discovery: "discovery";
568
+ toolset: "toolset";
569
+ }>>;
570
+ enabledAt: z.ZodOptional<z.ZodNumber>;
571
+ exposed: z.ZodBoolean;
572
572
  }, z.core.$strip>>;
573
573
  discoverableTools: z.ZodArray<z.ZodObject<{
574
574
  fullName: z.ZodString;
@@ -577,8 +577,8 @@ declare const CanonicalModelSchemas: {
577
577
  description: z.ZodOptional<z.ZodString>;
578
578
  inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
579
579
  exposureMode: z.ZodEnum<{
580
- discovery: "discovery";
581
580
  direct: "direct";
581
+ discovery: "discovery";
582
582
  hidden: "hidden";
583
583
  }>;
584
584
  enabled: z.ZodBoolean;
@@ -641,25 +641,6 @@ declare const CanonicalModelNamespace: _$_makaio_core0.BusNamespaceDefinition<"c
641
641
  env: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodString>>;
642
642
  mcpSessionContext: _$zod.ZodOptional<_$zod.ZodObject<{
643
643
  sessionId: _$zod.ZodString;
644
- directTools: _$zod.ZodArray<_$zod.ZodObject<{
645
- fullName: _$zod.ZodString;
646
- originalName: _$zod.ZodString;
647
- serverName: _$zod.ZodString;
648
- description: _$zod.ZodOptional<_$zod.ZodString>;
649
- inputSchema: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
650
- exposureMode: _$zod.ZodEnum<{
651
- discovery: "discovery";
652
- direct: "direct";
653
- hidden: "hidden";
654
- }>;
655
- enabled: _$zod.ZodBoolean;
656
- enabledBy: _$zod.ZodOptional<_$zod.ZodEnum<{
657
- discovery: "discovery";
658
- toolset: "toolset";
659
- }>>;
660
- enabledAt: _$zod.ZodOptional<_$zod.ZodNumber>;
661
- exposed: _$zod.ZodBoolean;
662
- }, _$zod_v4_core0.$strip>>;
663
644
  servers: _$zod.ZodArray<_$zod.ZodObject<{
664
645
  name: _$zod.ZodString;
665
646
  transport: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
@@ -696,9 +677,28 @@ declare const CanonicalModelNamespace: _$_makaio_core0.BusNamespaceDefinition<"c
696
677
  type: _$zod.ZodLiteral<"http">;
697
678
  }, _$zod_v4_core0.$strip>], "type">;
698
679
  exposureMode: _$zod.ZodEnum<{
680
+ direct: "direct";
699
681
  discovery: "discovery";
682
+ }>;
683
+ }, _$zod_v4_core0.$strip>>;
684
+ directTools: _$zod.ZodArray<_$zod.ZodObject<{
685
+ fullName: _$zod.ZodString;
686
+ originalName: _$zod.ZodString;
687
+ serverName: _$zod.ZodString;
688
+ description: _$zod.ZodOptional<_$zod.ZodString>;
689
+ inputSchema: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
690
+ exposureMode: _$zod.ZodEnum<{
700
691
  direct: "direct";
692
+ discovery: "discovery";
693
+ hidden: "hidden";
701
694
  }>;
695
+ enabled: _$zod.ZodBoolean;
696
+ enabledBy: _$zod.ZodOptional<_$zod.ZodEnum<{
697
+ discovery: "discovery";
698
+ toolset: "toolset";
699
+ }>>;
700
+ enabledAt: _$zod.ZodOptional<_$zod.ZodNumber>;
701
+ exposed: _$zod.ZodBoolean;
702
702
  }, _$zod_v4_core0.$strip>>;
703
703
  discoverableTools: _$zod.ZodArray<_$zod.ZodObject<{
704
704
  fullName: _$zod.ZodString;
@@ -707,8 +707,8 @@ declare const CanonicalModelNamespace: _$_makaio_core0.BusNamespaceDefinition<"c
707
707
  description: _$zod.ZodOptional<_$zod.ZodString>;
708
708
  inputSchema: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
709
709
  exposureMode: _$zod.ZodEnum<{
710
- discovery: "discovery";
711
710
  direct: "direct";
711
+ discovery: "discovery";
712
712
  hidden: "hidden";
713
713
  }>;
714
714
  enabled: _$zod.ZodBoolean;
@@ -769,25 +769,6 @@ declare const CanonicalModelSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core
769
769
  env: _$zod.ZodOptional<_$zod.ZodRecord<_$zod.ZodString, _$zod.ZodString>>;
770
770
  mcpSessionContext: _$zod.ZodOptional<_$zod.ZodObject<{
771
771
  sessionId: _$zod.ZodString;
772
- directTools: _$zod.ZodArray<_$zod.ZodObject<{
773
- fullName: _$zod.ZodString;
774
- originalName: _$zod.ZodString;
775
- serverName: _$zod.ZodString;
776
- description: _$zod.ZodOptional<_$zod.ZodString>;
777
- inputSchema: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
778
- exposureMode: _$zod.ZodEnum<{
779
- discovery: "discovery";
780
- direct: "direct";
781
- hidden: "hidden";
782
- }>;
783
- enabled: _$zod.ZodBoolean;
784
- enabledBy: _$zod.ZodOptional<_$zod.ZodEnum<{
785
- discovery: "discovery";
786
- toolset: "toolset";
787
- }>>;
788
- enabledAt: _$zod.ZodOptional<_$zod.ZodNumber>;
789
- exposed: _$zod.ZodBoolean;
790
- }, _$zod_v4_core0.$strip>>;
791
772
  servers: _$zod.ZodArray<_$zod.ZodObject<{
792
773
  name: _$zod.ZodString;
793
774
  transport: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
@@ -824,9 +805,28 @@ declare const CanonicalModelSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core
824
805
  type: _$zod.ZodLiteral<"http">;
825
806
  }, _$zod_v4_core0.$strip>], "type">;
826
807
  exposureMode: _$zod.ZodEnum<{
808
+ direct: "direct";
827
809
  discovery: "discovery";
810
+ }>;
811
+ }, _$zod_v4_core0.$strip>>;
812
+ directTools: _$zod.ZodArray<_$zod.ZodObject<{
813
+ fullName: _$zod.ZodString;
814
+ originalName: _$zod.ZodString;
815
+ serverName: _$zod.ZodString;
816
+ description: _$zod.ZodOptional<_$zod.ZodString>;
817
+ inputSchema: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
818
+ exposureMode: _$zod.ZodEnum<{
828
819
  direct: "direct";
820
+ discovery: "discovery";
821
+ hidden: "hidden";
829
822
  }>;
823
+ enabled: _$zod.ZodBoolean;
824
+ enabledBy: _$zod.ZodOptional<_$zod.ZodEnum<{
825
+ discovery: "discovery";
826
+ toolset: "toolset";
827
+ }>>;
828
+ enabledAt: _$zod.ZodOptional<_$zod.ZodNumber>;
829
+ exposed: _$zod.ZodBoolean;
830
830
  }, _$zod_v4_core0.$strip>>;
831
831
  discoverableTools: _$zod.ZodArray<_$zod.ZodObject<{
832
832
  fullName: _$zod.ZodString;
@@ -835,8 +835,8 @@ declare const CanonicalModelSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core
835
835
  description: _$zod.ZodOptional<_$zod.ZodString>;
836
836
  inputSchema: _$zod.ZodRecord<_$zod.ZodString, _$zod.ZodUnknown>;
837
837
  exposureMode: _$zod.ZodEnum<{
838
- discovery: "discovery";
839
838
  direct: "direct";
839
+ discovery: "discovery";
840
840
  hidden: "hidden";
841
841
  }>;
842
842
  enabled: _$zod.ZodBoolean;
@@ -1,4 +1,4 @@
1
- import { c as AdapterRuntimeSnapshotErrorCode } from "./schemas-D9pXu76T.mjs";
1
+ import { c as AdapterRuntimeSnapshotErrorCode } from "./schemas-__oTCzF6.mjs";
2
2
  import { ProviderContext, ResolvedProviderContext } from "@makaio/framework/contracts";
3
3
  import { IMakaioBus } from "@makaio/framework/bus";
4
4
 
@@ -1,3 +1,4 @@
1
+ import { D as ArtifactViewModel$1 } from "./view-builder-2cR7vI7R.mjs";
1
2
  import { z } from "zod";
2
3
  import * as _$_makaio_core0 from "@makaio/framework/core";
3
4
  import * as _$_makaio_contracts0 from "@makaio/framework/contracts";
@@ -914,4 +915,40 @@ type MaterializationRefChangedPayload = z.infer<(typeof MaterializationSchemas)[
914
915
  /** Payload for the materialization capability resolved event. */
915
916
  type MaterializationCapabilityResolvedPayload = z.infer<(typeof MaterializationSchemas)['capability.resolved']>;
916
917
  //#endregion
917
- export { MaterializationCapabilityResolvedPayload as a, MaterializationSchemas as c, SurfaceBindingListRequest as d, SurfaceBindingListResponse as f, ArtifactViewResolveResponseSchema as i, MaterializationSubjects$1 as l, SurfaceBindingRegisterResponse as m, ArtifactViewResolveRequestSchema$1 as n, MaterializationNamespace as o, SurfaceBindingRegisterRequest as p, ArtifactViewResolveResponse as r, MaterializationRefChangedPayload as s, ArtifactViewResolveRequest as t, SurfaceBindingChangedPayload as u };
918
+ //#region core/contracts/src/materialization/artifact-view-markdown.d.ts
919
+ /**
920
+ * Monotonically increasing renderer version.
921
+ *
922
+ * Bump this when the Markdown output format changes so that surfaces which
923
+ * fingerprint rendered output can detect the need to re-render.
924
+ */
925
+ declare const ARTIFACT_VIEW_MARKDOWN_RENDERER_VERSION = 8;
926
+ /**
927
+ * Options for {@link renderArtifactViewMarkdown}.
928
+ */
929
+ interface ArtifactViewMarkdownOptions {
930
+ /**
931
+ * Whether to emit the view title as a leading level-2 heading.
932
+ *
933
+ * Surfaces that already display the title outside the body (for example a
934
+ * page title) pass `false` to avoid a duplicated heading. Defaults to `true`.
935
+ */
936
+ readonly includeTitle?: boolean;
937
+ }
938
+ /**
939
+ * Render an artifact view model as GitHub-flavored Markdown.
940
+ *
941
+ * The renderer is pure and deterministic: identical view models always produce
942
+ * identical Markdown output. It never inspects Artifact data or provider
943
+ * planning — only the validated {@link ArtifactViewModel} is consumed.
944
+ *
945
+ * Section variants are dispatched by their `type` discriminant. Fenced code
946
+ * blocks dynamically extend the fence length when the content itself contains
947
+ * backtick runs.
948
+ * @param view - Validated artifact view model.
949
+ * @param options - Rendering options; see {@link ArtifactViewMarkdownOptions}.
950
+ * @returns Complete Markdown document.
951
+ */
952
+ declare function renderArtifactViewMarkdown(view: ArtifactViewModel$1, options?: ArtifactViewMarkdownOptions): string;
953
+ //#endregion
954
+ export { SurfaceBindingRegisterResponse as _, ArtifactViewResolveRequestSchema$1 as a, MaterializationCapabilityResolvedPayload as c, MaterializationSchemas as d, MaterializationSubjects$1 as f, SurfaceBindingRegisterRequest as g, SurfaceBindingListResponse as h, ArtifactViewResolveRequest as i, MaterializationNamespace as l, SurfaceBindingListRequest as m, ArtifactViewMarkdownOptions as n, ArtifactViewResolveResponse as o, SurfaceBindingChangedPayload as p, renderArtifactViewMarkdown as r, ArtifactViewResolveResponseSchema as s, ARTIFACT_VIEW_MARKDOWN_RENDERER_VERSION as t, MaterializationRefChangedPayload as u };