@makaio/framework 1.0.0-dev-1781081952714 → 1.0.0-dev-1781260968078

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 (194) hide show
  1. package/README.md +29 -0
  2. package/dist/.makaio-build.json +2 -2
  3. package/dist/adapters/acp-client/index.d.mts +4 -4
  4. package/dist/adapters/config/index.d.mts +1 -1
  5. package/dist/adapters/config/index.mjs +1 -1
  6. package/dist/adapters/index.d.mts +1 -1
  7. package/dist/adapters/index.mjs +1 -1
  8. package/dist/adapters/node.mjs +1 -1
  9. package/dist/ajv-BA2z5ztb.mjs +8 -0
  10. package/dist/bus/index.d.mts +19 -19
  11. package/dist/bus/index.mjs +1 -1
  12. package/dist/client-BJVDImPV.d.mts +175 -0
  13. package/dist/clients/index.d.mts +105 -2
  14. package/dist/clients/index.mjs +2 -2
  15. package/dist/contracts/adapter/index.d.mts +2 -2
  16. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  17. package/dist/contracts/artifact/index.d.mts +1 -1
  18. package/dist/contracts/client/index.d.mts +1 -1
  19. package/dist/contracts/extension/index.d.mts +3 -3
  20. package/dist/contracts/extension/index.mjs +1 -1
  21. package/dist/contracts/facet/index.d.mts +1 -1
  22. package/dist/contracts/index.d.mts +741 -228
  23. package/dist/contracts/index.mjs +1 -1
  24. package/dist/contracts/materialization/index.d.mts +3 -3
  25. package/dist/contracts/session/index.d.mts +2 -2
  26. package/dist/{cursor-storage-C_WTAESV.mjs → cursor-storage-CmKjSvKY.mjs} +1 -1
  27. package/dist/{definition-DqJOg6Lv.d.mts → definition-SiimP25_.d.mts} +1 -1
  28. package/dist/{detached-extension-handle-CxEBQnSa.mjs → detached-extension-handle-Diiwgm13.mjs} +1 -1
  29. package/dist/drizzle/0001_messages_content_tsv.na.md +18 -0
  30. package/dist/drizzle/0012_legal_kate_bishop.sql +3 -0
  31. package/dist/drizzle/0013_eager_rhodey.sql +56 -0
  32. package/dist/drizzle/0014_fancy_ultimo.sql +1 -0
  33. package/dist/drizzle/meta/0012_snapshot.json +2934 -0
  34. package/dist/drizzle/meta/0013_snapshot.json +2954 -0
  35. package/dist/drizzle/meta/0014_snapshot.json +2959 -0
  36. package/dist/drizzle/meta/_journal.json +21 -0
  37. package/dist/drizzle-wjquQK2m.mjs +1 -0
  38. package/dist/esm-CQVFKEW5.mjs +1 -0
  39. package/dist/expression/index.d.mts +11 -2
  40. package/dist/expression/index.mjs +4 -4
  41. package/dist/extension-DfNcE0zm.mjs +1 -0
  42. package/dist/extension-ZBN4BGre.mjs +1 -0
  43. package/dist/{filesystem-service-DH9zlxyd.mjs → filesystem-service-BjfrUmGS.mjs} +1 -1
  44. package/dist/git/index.mjs +14 -14
  45. package/dist/{globby-4SrlyIlj.mjs → globby-BIH65cbN.mjs} +1 -1
  46. package/dist/handler-DSfSAlxx.mjs +1 -0
  47. package/dist/handlers-C8EtpSqK.mjs +41 -0
  48. package/dist/{index-BCKRUuI2.d.mts → index-B2xbnMZe.d.mts} +1 -1
  49. package/dist/{index-YDfOv0GT.d.mts → index-BDRKAxIV.d.mts} +160 -7
  50. package/dist/{index-CwKzQuIX.d.mts → index-BQiHs8EF.d.mts} +12 -12
  51. package/dist/{index-BheaEhyI.d.mts → index-BtztOqaF.d.mts} +6 -6
  52. package/dist/{index-BmV60tMf.d.mts → index-BvSyOgTY.d.mts} +1298 -30
  53. package/dist/{index-D6bw4qJp.d.mts → index-CARxIllg.d.mts} +98 -98
  54. package/dist/{index-Bibt5jAX.d.mts → index-CZ_TcT6J.d.mts} +8 -8
  55. package/dist/{index-CNOTkyGw.d.mts → index-Cb64d5c5.d.mts} +307 -383
  56. package/dist/{index-DETxgKS2.d.mts → index-CgjslA5-.d.mts} +88 -15
  57. package/dist/{index-C3zfJg6s.d.mts → index-D5CI1V5d.d.mts} +16 -16
  58. package/dist/{index-jlQ4IhR5.d.mts → index-DDQkhhRo.d.mts} +281 -273
  59. package/dist/{index-Db0uJ_Cg2.d.mts → index-DTdqGAfH2.d.mts} +18 -8
  60. package/dist/{index-Clut1ljB.d.mts → index-Drz_a7kW.d.mts} +1 -1
  61. package/dist/kernel/extension/index.d.mts +1 -1
  62. package/dist/kernel/extension/index.mjs +1 -1
  63. package/dist/kernel/index.d.mts +2 -2
  64. package/dist/kernel/index.mjs +1 -1
  65. package/dist/kernel/observability/index.d.mts +1 -1
  66. package/dist/{lib-B9kVK_1_.mjs → lib-CNOQJtgs.mjs} +1 -1
  67. package/dist/{lib-DPruLs5D.mjs → lib-Cq5R6Tx9.mjs} +19 -22
  68. package/dist/lib-nlcl5kRW.mjs +2 -0
  69. package/dist/{load-extensions-C-TqCwzL.mjs → load-extensions-wELQ4BBN.mjs} +1 -1
  70. package/dist/mcp-http-server/index.mjs +1 -1
  71. package/dist/{namespace-ByyuIFpL.d.mts → namespace-7tsuJhQ9.d.mts} +28 -28
  72. package/dist/{namespace-BlS_i9KT.d.mts → namespace-B73Sxj5L.d.mts} +1 -1
  73. package/dist/{namespace-aBIAWxY3.d.mts → namespace-Ba4bxtHQ.d.mts} +12 -12
  74. package/dist/{namespace-DBKWNrk7.d.mts → namespace-DDCjoQUj.d.mts} +3 -3
  75. package/dist/{namespace-Ds6HkJEU.d.mts → namespace-DRFJN-_z.d.mts} +134 -134
  76. package/dist/namespace-DwE2g8Wm.mjs +1 -0
  77. package/dist/{orchestrator-shared-FnWrPS09.mjs → orchestrator-shared-Dt4WDse7.mjs} +1 -1
  78. package/dist/{out-CvZYgczi.mjs → out-C1JFb2Bp.mjs} +1 -1
  79. package/dist/package-Be2Ez4vv.mjs +1 -0
  80. package/dist/package.json +1 -1
  81. package/dist/primitive-runtime-Xrc9xh6p.mjs +1 -0
  82. package/dist/registry-RG-bkw3c.mjs +146 -0
  83. package/dist/rules/index.mjs +1 -1
  84. package/dist/runtime-bun/index.mjs +1 -1
  85. package/dist/runtime-node/extension-validation.mjs +1 -1
  86. package/dist/runtime-node/index.d.mts +57 -36
  87. package/dist/runtime-node/index.mjs +26 -53
  88. package/dist/runtime-node/makaio-config.mjs +1 -1
  89. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  90. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  91. package/dist/{schema-CDL_pyyM.d.mts → schema-BNrM9LWb.d.mts} +216 -10
  92. package/dist/schema-BerZmr2q.mjs +1 -0
  93. package/dist/schema-BrnYlDwZ.mjs +1 -0
  94. package/dist/{schemas-t1VR6_b_.d.mts → schemas-CkOSG2eJ.d.mts} +3 -3
  95. package/dist/{schemas-Exixg77V2.d.mts → schemas-DAFYpgHk2.d.mts} +12 -12
  96. package/dist/{schemas-on3_N5HP.d.mts → schemas-Dv5FxHDT.d.mts} +134 -134
  97. package/dist/services/agent-runtime/index.d.mts +2 -2
  98. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  99. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  100. package/dist/services/filesystem/index.mjs +1 -1
  101. package/dist/services/filesystem/namespace.d.mts +6 -6
  102. package/dist/services/filesystem/schemas.d.mts +3 -3
  103. package/dist/services/git/namespace.d.mts +2 -2
  104. package/dist/services/git/schemas.d.mts +2 -2
  105. package/dist/services/harness/index.d.mts +29 -17
  106. package/dist/services/harness/index.mjs +1 -1
  107. package/dist/services/harness/storage/schema.d.mts +60 -16
  108. package/dist/services/harness/storage/schema.mjs +1 -1
  109. package/dist/services/index.d.mts +103 -103
  110. package/dist/services/index.mjs +1 -1
  111. package/dist/services/log-import/browser.d.mts +2 -2
  112. package/dist/services/log-import/index.d.mts +7 -12
  113. package/dist/services/log-import/index.mjs +2 -2
  114. package/dist/services/log-import/log-import.d.mts +1 -1
  115. package/dist/services/log-import/namespace.d.mts +2 -2
  116. package/dist/services/log-import/schemas.d.mts +1 -1
  117. package/dist/services/session/handlers/index.mjs +1 -1
  118. package/dist/services/session/index.d.mts +7 -7
  119. package/dist/services/session/index.mjs +1 -1
  120. package/dist/services/session/messages/namespace.d.mts +1 -1
  121. package/dist/services/session/messages/namespace.mjs +1 -1
  122. package/dist/services/session/orchestrator-testing/index.mjs +1 -1
  123. package/dist/services/session/session-events/namespace.d.mts +1 -1
  124. package/dist/services/session/session-events/namespace.mjs +1 -1
  125. package/dist/services/session/storage/namespace.d.mts +1 -1
  126. package/dist/services/session/storage/schema.d.mts +2 -2
  127. package/dist/services/session/storage/schema.mjs +1 -1
  128. package/dist/services/session/testing/index.d.mts +18 -2
  129. package/dist/services/session/testing/index.mjs +52 -3
  130. package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
  131. package/dist/services/session/turns/namespace.d.mts +1 -1
  132. package/dist/services/session/turns/namespace.mjs +1 -1
  133. package/dist/services/settings/namespace.d.mts +12 -12
  134. package/dist/services/subagent-template/index.d.mts +1 -1
  135. package/dist/services/subagent-template/schemas.d.mts +1 -1
  136. package/dist/services/tool-approval/index.mjs +1 -1
  137. package/dist/services/tools/index.mjs +1 -1
  138. package/dist/session-KnewDVxt.mjs +39 -0
  139. package/dist/{session-lineage-CKg6mErA.d.mts → session-lineage-CXzV_hAP.d.mts} +1 -1
  140. package/dist/{src-Dvp41Cg2.mjs → src-CBG3IHUl.mjs} +1 -1
  141. package/dist/storage/drizzle/client.d.mts +2 -78
  142. package/dist/storage/drizzle/client.mjs +1 -1
  143. package/dist/storage/drizzle/columns/postgres.d.mts +88 -0
  144. package/dist/storage/drizzle/columns/postgres.mjs +1 -0
  145. package/dist/storage/drizzle/columns/sqlite.d.mts +81 -0
  146. package/dist/storage/drizzle/columns/sqlite.mjs +1 -0
  147. package/dist/storage/drizzle/index.d.mts +976 -23
  148. package/dist/storage/drizzle/index.mjs +1 -1
  149. package/dist/storage/handlers/drizzle/index.d.mts +1 -1
  150. package/dist/storage/handlers/drizzle/index.mjs +1 -1
  151. package/dist/storage/handlers/index.d.mts +1 -1
  152. package/dist/storage/handlers/index.mjs +1 -1
  153. package/dist/style.css +540 -540
  154. package/dist/testing/drizzle-harness.d.mts +52 -6
  155. package/dist/testing/drizzle-harness.mjs +1 -1
  156. package/dist/testing/index.d.mts +34 -2
  157. package/dist/testing/index.mjs +1 -1
  158. package/dist/{tool-approval-service-BgNcJvKx.mjs → tool-approval-service-Cb2F1yT6.mjs} +1 -1
  159. package/dist/tools-D5DVHC-R.mjs +1 -0
  160. package/dist/{types-CmMesAgR.d.mts → types-BMpIa4fx.d.mts} +1 -1
  161. package/dist/{types-D0fPFh-D.d.mts → types-D5IMwOkJ.d.mts} +1 -1
  162. package/dist/{types-DiGqpZOD.d.mts → types-DLVitCZP.d.mts} +195 -195
  163. package/dist/ui-components/index.d.mts +1 -1
  164. package/dist/ui-components/index.mjs +2 -2
  165. package/dist/ui-hooks/index.d.mts +6 -6
  166. package/dist/ui-views/index.mjs +2 -2
  167. package/dist/workflow-engine/index.d.mts +492 -96
  168. package/dist/workflow-engine/index.mjs +1 -1
  169. package/dist/workflow-engine/package.mjs +1 -1
  170. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  171. package/dist/workflow-worker-CK9Sqj7D.mjs +1 -0
  172. package/package.json +40 -1
  173. package/dist/ajv-BJsabpMb.mjs +0 -8
  174. package/dist/drizzle-DpjZFY_j.mjs +0 -1
  175. package/dist/esm-BdLRFEUy.mjs +0 -3
  176. package/dist/extension--5Q190u_.mjs +0 -1
  177. package/dist/extension-DFIZ3FCJ.mjs +0 -1
  178. package/dist/fast-uri-BF2Xuiop.mjs +0 -1
  179. package/dist/handlers-Bev7-xjL.mjs +0 -41
  180. package/dist/lib-aRogYLqg.mjs +0 -5
  181. package/dist/namespace-CDiM5Bcr.mjs +0 -1
  182. package/dist/namespace-h0HIuqx0.mjs +0 -1
  183. package/dist/package-1DS4bXg5.mjs +0 -1
  184. package/dist/primitive-runtime-DcYYWy_6.mjs +0 -8
  185. package/dist/schema-DCJyzRHe.mjs +0 -1
  186. package/dist/schema-DOnJmAPw.mjs +0 -1
  187. package/dist/session-BnfsJoZi.mjs +0 -134
  188. package/dist/tools-DC4KrqI1.mjs +0 -1
  189. package/dist/types-BhXRffJ_.d.mts +0 -31
  190. package/dist/workflow-worker-DvP753UN.mjs +0 -1
  191. /package/dist/{cleanEnvForAdapter-BlpmyXYk.mjs → cleanEnvForAdapter-vZfPGi0X.mjs} +0 -0
  192. /package/dist/{create-static-mount-CFGo91CI.mjs → create-static-mount-BB1MIQ9J.mjs} +0 -0
  193. /package/dist/{jsonl-transport-BxNXizIm.mjs → jsonl-transport-C21tpVfe.mjs} +0 -0
  194. /package/dist/{src-Z3vAZJfw.mjs → src-DedDL9iv.mjs} +0 -0
@@ -1 +1 @@
1
- import{o as e,r as t,t as n}from"./chunk-DTipWd-i.mjs";import{t as r}from"./out-CvZYgczi.mjs";import{execFile as i}from"node:child_process";import{promisify as a}from"node:util";import{fileURLToPath as o}from"node:url";import s from"node:fs/promises";import c from"node:path";import l from"node:fs";import"node:events";import u from"node:process";import"node:stream";import"node:stream/promises";var d=e(r(),1);async function f(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return(await s[e](n))[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}function p(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return l[e](n)[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}f.bind(void 0,`stat`,`isFile`);const m=f.bind(void 0,`stat`,`isDirectory`);f.bind(void 0,`lstat`,`isSymbolicLink`),p.bind(void 0,`statSync`,`isFile`),p.bind(void 0,`statSync`,`isDirectory`),p.bind(void 0,`lstatSync`,`isSymbolicLink`),a(i);function h(e){return e instanceof URL?o(e):e}var g=e(n(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},_=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],v=/(^|\\\/)?\\\*$/,y=`regex`,b=`checkRegex`,x={[y](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[b](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},S=e=>_.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),C=e=>typeof e==`string`,w=e=>e&&C(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,T=e=>e.split(s).filter(Boolean);var E=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_`+y;return this[e]?this[e]:this._make(y,e)}get checkRegex(){let e=`_`+b;return this[e]?this[e]:this._make(b,e)}_make(e,t){let n=this.regexPrefix.replace(v,x[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let D=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=S(i);return new E(e,t,i,n,r,s)};var O=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(C(e)&&(e={pattern:e}),w(e.pattern)){let t=D(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(C(e)?T(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let k=(e,t)=>{throw new t(e)},A=(e,t,n)=>C(e)?e?A.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),j=e=>c.test(e);A.isNotRelative=j,A.convert=e=>e;var M=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new O(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&A.convert(e);return A(i,e,this._strictPathCheck?k:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,b)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,y);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,y)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let N=e=>new M(e),P=e=>A(e&&A.convert(e),e,m),F=()=>{A.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;A.isNotRelative=t=>e.test(t)||j(t)};typeof process<`u`&&process.platform===`win32`&&F(),t.exports=N,N.default=N,t.exports.isPathValid=P,f(t.exports,Symbol.for(`setupWindows`),F)}))(),1);function _(e){return e.startsWith(`\\\\?\\`)?e:e.replace(/\\/g,`/`)}const v=e=>e[0]===`!`,y=[`**/node_modules`,`**/flow-typed`,`**/coverage`,`**/.git`],b={absolute:!0,dot:!0},x=(e,t)=>v(e)?`!`+c.posix.join(t,e.slice(1)):c.posix.join(t,e),S=(e,t)=>{let n=_(c.relative(t,c.dirname(e.filePath)));return e.content.split(/\r?\n/).filter(e=>e&&!e.startsWith(`#`)).map(e=>x(e,n))},C=(e,t)=>{if(t=_(t),c.isAbsolute(e)){if(_(e).startsWith(t))return c.relative(t,e);throw Error(`Path ${e} is not in cwd ${t}`)}return e},w=(e,t)=>{let n=e.flatMap(e=>S(e,t)),r=(0,g.default)().add(n);return e=>(e=h(e),e=C(e,t),e?r.ignores(_(e)):!1)},T=(e={})=>({cwd:h(e.cwd)??u.cwd(),suppressErrors:!!e.suppressErrors,deep:typeof e.deep==`number`?e.deep:1/0,ignore:[...e.ignore??[],...y]}),E=async(e,t)=>{let{cwd:n,suppressErrors:r,deep:i,ignore:a}=T(t),o=await(0,d.default)(e,{cwd:n,suppressErrors:r,deep:i,ignore:a,...b});return w(await Promise.all(o.map(async e=>({filePath:e,content:await s.readFile(e,`utf8`)}))),n)};var D=t({globby:()=>U});const O=e=>{if(e.some(e=>typeof e!=`string`))throw TypeError(`Patterns must be a string or an array of strings`)},k=(e,t)=>{let n=v(e)?e.slice(1):e;return c.isAbsolute(n)?n:c.join(t,n)},A=({directoryPath:e,files:t,extensions:n})=>{let r=n?.length>0?`.${n.length>1?`{${n.join(`,`)}}`:n[0]}`:``;return t?t.map(t=>c.posix.join(e,`**/${c.extname(t)?t:`${t}${r}`}`)):[c.posix.join(e,`**${r?`/*${r}`:``}`)]},j=async(e,{cwd:t=u.cwd(),files:n,extensions:r}={})=>(await Promise.all(e.map(async e=>await m(k(e,t))?A({directoryPath:e,files:n,extensions:r}):e))).flat(),M=e=>(e=[...new Set([e].flat())],O(e),e),N=e=>{if(!e)return;let t;try{t=l.statSync(e)}catch{return}if(!t.isDirectory())throw Error("The `cwd` option must be a path to a directory")},P=(e={})=>(e={...e,ignore:e.ignore??[],expandDirectories:e.expandDirectories??!0,cwd:h(e.cwd)},N(e.cwd),e),F=e=>async(t,n)=>e(M(t),P(n)),I=e=>{let{ignoreFiles:t,gitignore:n}=e,r=t?M(t):[];return n&&r.push(`**/.gitignore`),r},L=async e=>{let t=I(e);return R(t.length>0&&await E(t,e))},R=e=>{let t=new Set;return n=>{let r=c.normalize(n.path??n);return t.has(r)||e&&e(r)?!1:(t.add(r),!0)}},z=(e,t)=>e.flat().filter(e=>t(e)),B=(e,t)=>{let n=[];for(;e.length>0;){let r=e.findIndex(e=>v(e));if(r===-1){n.push({patterns:e,options:t});break}let i=e[r].slice(1);for(let e of n)e.options.ignore.push(i);r!==0&&n.push({patterns:e.slice(0,r),options:{...t,ignore:[...t.ignore,i]}}),e=e.slice(r+1)}return n},V=(e,t)=>({...t?{cwd:t}:{},...Array.isArray(e)?{files:e}:e}),H=async(e,t)=>{let n=B(e,t),{cwd:r,expandDirectories:i}=t;if(!i)return n;let a=V(i,r);return Promise.all(n.map(async e=>{let{patterns:t,options:n}=e;return[t,n.ignore]=await Promise.all([j(t,a),j(n.ignore,{cwd:r})]),{patterns:t,options:n}}))},U=F(async(e,t)=>{let[n,r]=await Promise.all([H(e,t),L(t)]);return z(await Promise.all(n.map(e=>(0,d.default)(e.patterns,e.options))),r)}),{convertPathToPattern:W}=d.default;export{D as n,U as t};
1
+ import{o as e,r as t,t as n}from"./chunk-DTipWd-i.mjs";import{t as r}from"./out-C1JFb2Bp.mjs";import{execFile as i}from"node:child_process";import{promisify as a}from"node:util";import{fileURLToPath as o}from"node:url";import s from"node:fs/promises";import c from"node:path";import l from"node:fs";import"node:events";import u from"node:process";import"node:stream";import"node:stream/promises";var d=e(r(),1);async function f(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return(await s[e](n))[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}function p(e,t,n){if(typeof n!=`string`)throw TypeError(`Expected a string, got ${typeof n}`);try{return l[e](n)[t]()}catch(e){if(e.code===`ENOENT`)return!1;throw e}}f.bind(void 0,`stat`,`isFile`);const m=f.bind(void 0,`stat`,`isDirectory`);f.bind(void 0,`lstat`,`isSymbolicLink`),p.bind(void 0,`statSync`,`isFile`),p.bind(void 0,`statSync`,`isDirectory`),p.bind(void 0,`lstatSync`,`isSymbolicLink`),a(i);function h(e){return e instanceof URL?o(e):e}var g=e(n(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},_=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],v=/(^|\\\/)?\\\*$/,y=`regex`,b=`checkRegex`,x={[y](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[b](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},S=e=>_.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),C=e=>typeof e==`string`,w=e=>e&&C(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,T=e=>e.split(s).filter(Boolean);var E=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_`+y;return this[e]?this[e]:this._make(y,e)}get checkRegex(){let e=`_`+b;return this[e]?this[e]:this._make(b,e)}_make(e,t){let n=this.regexPrefix.replace(v,x[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let D=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=S(i);return new E(e,t,i,n,r,s)};var O=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(C(e)&&(e={pattern:e}),w(e.pattern)){let t=D(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(C(e)?T(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let k=(e,t)=>{throw new t(e)},A=(e,t,n)=>C(e)?e?A.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),j=e=>c.test(e);A.isNotRelative=j,A.convert=e=>e;var M=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new O(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&A.convert(e);return A(i,e,this._strictPathCheck?k:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,b)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,y);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,y)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let N=e=>new M(e),P=e=>A(e&&A.convert(e),e,m),F=()=>{A.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;A.isNotRelative=t=>e.test(t)||j(t)};typeof process<`u`&&process.platform===`win32`&&F(),t.exports=N,N.default=N,t.exports.isPathValid=P,f(t.exports,Symbol.for(`setupWindows`),F)}))(),1);function _(e){return e.startsWith(`\\\\?\\`)?e:e.replace(/\\/g,`/`)}const v=e=>e[0]===`!`,y=[`**/node_modules`,`**/flow-typed`,`**/coverage`,`**/.git`],b={absolute:!0,dot:!0},x=(e,t)=>v(e)?`!`+c.posix.join(t,e.slice(1)):c.posix.join(t,e),S=(e,t)=>{let n=_(c.relative(t,c.dirname(e.filePath)));return e.content.split(/\r?\n/).filter(e=>e&&!e.startsWith(`#`)).map(e=>x(e,n))},C=(e,t)=>{if(t=_(t),c.isAbsolute(e)){if(_(e).startsWith(t))return c.relative(t,e);throw Error(`Path ${e} is not in cwd ${t}`)}return e},w=(e,t)=>{let n=e.flatMap(e=>S(e,t)),r=(0,g.default)().add(n);return e=>(e=h(e),e=C(e,t),e?r.ignores(_(e)):!1)},T=(e={})=>({cwd:h(e.cwd)??u.cwd(),suppressErrors:!!e.suppressErrors,deep:typeof e.deep==`number`?e.deep:1/0,ignore:[...e.ignore??[],...y]}),E=async(e,t)=>{let{cwd:n,suppressErrors:r,deep:i,ignore:a}=T(t),o=await(0,d.default)(e,{cwd:n,suppressErrors:r,deep:i,ignore:a,...b});return w(await Promise.all(o.map(async e=>({filePath:e,content:await s.readFile(e,`utf8`)}))),n)};var D=t({globby:()=>U});const O=e=>{if(e.some(e=>typeof e!=`string`))throw TypeError(`Patterns must be a string or an array of strings`)},k=(e,t)=>{let n=v(e)?e.slice(1):e;return c.isAbsolute(n)?n:c.join(t,n)},A=({directoryPath:e,files:t,extensions:n})=>{let r=n?.length>0?`.${n.length>1?`{${n.join(`,`)}}`:n[0]}`:``;return t?t.map(t=>c.posix.join(e,`**/${c.extname(t)?t:`${t}${r}`}`)):[c.posix.join(e,`**${r?`/*${r}`:``}`)]},j=async(e,{cwd:t=u.cwd(),files:n,extensions:r}={})=>(await Promise.all(e.map(async e=>await m(k(e,t))?A({directoryPath:e,files:n,extensions:r}):e))).flat(),M=e=>(e=[...new Set([e].flat())],O(e),e),N=e=>{if(!e)return;let t;try{t=l.statSync(e)}catch{return}if(!t.isDirectory())throw Error("The `cwd` option must be a path to a directory")},P=(e={})=>(e={...e,ignore:e.ignore??[],expandDirectories:e.expandDirectories??!0,cwd:h(e.cwd)},N(e.cwd),e),F=e=>async(t,n)=>e(M(t),P(n)),I=e=>{let{ignoreFiles:t,gitignore:n}=e,r=t?M(t):[];return n&&r.push(`**/.gitignore`),r},L=async e=>{let t=I(e);return R(t.length>0&&await E(t,e))},R=e=>{let t=new Set;return n=>{let r=c.normalize(n.path??n);return t.has(r)||e&&e(r)?!1:(t.add(r),!0)}},z=(e,t)=>e.flat().filter(e=>t(e)),B=(e,t)=>{let n=[];for(;e.length>0;){let r=e.findIndex(e=>v(e));if(r===-1){n.push({patterns:e,options:t});break}let i=e[r].slice(1);for(let e of n)e.options.ignore.push(i);r!==0&&n.push({patterns:e.slice(0,r),options:{...t,ignore:[...t.ignore,i]}}),e=e.slice(r+1)}return n},V=(e,t)=>({...t?{cwd:t}:{},...Array.isArray(e)?{files:e}:e}),H=async(e,t)=>{let n=B(e,t),{cwd:r,expandDirectories:i}=t;if(!i)return n;let a=V(i,r);return Promise.all(n.map(async e=>{let{patterns:t,options:n}=e;return[t,n.ignore]=await Promise.all([j(t,a),j(n.ignore,{cwd:r})]),{patterns:t,options:n}}))},U=F(async(e,t)=>{let[n,r]=await Promise.all([H(e,t),L(t)]);return z(await Promise.all(n.map(e=>(0,d.default)(e.patterns,e.options))),r)}),{convertPathToPattern:W}=d.default;export{D as n,U as t};
@@ -0,0 +1 @@
1
+ import{harnessDefinitions as e,harnessDefinitionsDual as t}from"./services/harness/storage/schema.mjs";import{z as n}from"zod";import{ApprovalPolicySchema as r,HarnessDefinitionBaseSchema as i,HarnessDefinitionSchema as a,HarnessSubjects as o,ToolCapabilitySchema as s}from"@makaio/framework/contracts";import{defineDialectSchema as c,resolveSchema as l}from"@makaio/framework/storage/drizzle";import{eq as u}from"drizzle-orm";import{createStorageNamespaceDefinition as d}from"@makaio/framework/storage";import{createDrizzleCrudHandlers as f,createDrizzleListHandler as p}from"@makaio/framework/storage/handlers";const m=n.object({enabled:n.array(n.string()),disabled:n.array(n.string())}),h=i.omit({createdAt:!0,updatedAt:!0,approvalPolicy:!0,isDefault:!0,enabled:!0,nativeTools:!0,registryTools:!0,skills:!0}).extend({approvalPolicy:r,isDefault:n.boolean(),enabled:n.boolean(),nativeTools:m,registryTools:m,skills:m.optional()}).strict().refine(e=>!!e.adapterName||!!e.clientId,{message:`At least one of adapterName or clientId must be set`}),g=n.object({adapterName:n.string().optional(),clientId:n.string().optional(),name:n.string().optional()}),_=d(`harness`,{schemas:{get:{request:n.object({id:n.string()}),response:n.object({harness:a.nullable()})},set:{request:n.object({harness:h}),response:n.object({id:n.string()})},delete:{request:n.object({id:n.string()}),response:n.object({deleted:n.boolean()})},list:{request:g,response:n.object({harnesses:n.array(a)})}},extensions:{drizzle:{harnessDefinitions:e}}}),v=_.subjects,y=t.postgres,b=c({harnessDefinitions:e},{harnessDefinitions:y});function x(e){return{id:e.id,name:e.name,description:e.description??void 0,adapterName:e.adapterName??void 0,clientId:e.clientId??void 0,env:e.env??void 0,credentials:e.credentials??void 0,cwd:e.cwd??void 0,approvalPolicy:r.parse(e.approvalPolicy),nativeTools:{enabled:e.nativeToolsEnabled,disabled:e.nativeToolsDisabled},registryTools:{enabled:e.registryToolsEnabled,disabled:e.registryToolsDisabled},skills:e.skillsEnabled||e.skillsDisabled?{enabled:e.skillsEnabled??[],disabled:e.skillsDisabled??[]}:void 0,toolCapabilityMap:e.toolCapabilityMap?n.record(n.string(),n.array(s)).parse(e.toolCapabilityMap):void 0,capabilityOverrides:e.capabilityOverrides?n.record(n.string(),r).parse(e.capabilityOverrides):void 0,toolApprovalOverrides:e.toolApprovalOverrides?n.record(n.string(),r).parse(e.toolApprovalOverrides):void 0,isDefault:e.isDefault,enabled:e.enabled,createdAt:e.createdAt,updatedAt:e.updatedAt}}function S(e){return{id:e.id,name:e.name,description:e.description??null,adapterName:e.adapterName??null,clientId:e.clientId??null,env:e.env??null,credentials:e.credentials??null,cwd:e.cwd??null,approvalPolicy:e.approvalPolicy,nativeToolsEnabled:e.nativeTools.enabled,nativeToolsDisabled:e.nativeTools.disabled,registryToolsEnabled:e.registryTools.enabled,registryToolsDisabled:e.registryTools.disabled,skillsEnabled:e.skills?.enabled??null,skillsDisabled:e.skills?.disabled??null,toolCapabilityMap:e.toolCapabilityMap??null,capabilityOverrides:e.capabilityOverrides??null,toolApprovalOverrides:e.toolApprovalOverrides??null,isDefault:e.isDefault,enabled:e.enabled}}function C(e,t,n){let{harnessDefinitions:r}=l(t,b),i=f({table:r,subjects:{get:v.get,set:v.set,delete:v.delete},idField:`id`,singularKey:`harness`,mapper:x,toDbValues:S,lifecycle:{created:o.created,updated:o.updated,deleted:o.deleted}}),a=p({table:r,subject:v.list,pluralKey:`harnesses`,mapper:x,buildPredicates:(e,t)=>{let n=[];return e.adapterName&&n.push(u(t.adapterName,e.adapterName)),e.clientId&&n.push(u(t.clientId,e.clientId)),e.name&&n.push(u(t.name,e.name)),n}}),s=i(e,t),c=a(e,t);return()=>{s(),c()}}export{_ as n,v as r,C as t};
@@ -0,0 +1,41 @@
1
+ import{agents as e}from"./services/session/storage/schema.mjs";import{n as t,t as n}from"./schema-BrnYlDwZ.mjs";import{n as r}from"./namespace-DwE2g8Wm.mjs";import{SessionStorageSubjects as i}from"./services/session/storage/namespace.mjs";import{TurnStorageSubjects as a}from"./services/turn/namespace.mjs";import"./services/session/turns/namespace.mjs";import{AdapterRuntimeSubjects as o}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as s}from"./services/session/messages/namespace.mjs";import{n as c}from"./namespace-ENv7H7Na.mjs";import{ProviderStorageSubjects as l}from"./services/settings/storage/providers-namespace.mjs";import{ExecutionTargetSubjects as u}from"./services/execution-target/namespace.mjs";import{r as d,t as f}from"./provider-context-lfG0BpqX.mjs";import{ExtractedContextSchema as p}from"./services/compression/schemas.mjs";import{PreferencesSubjects as m}from"./services/preferences/storage-namespace.mjs";import{z as h}from"zod";import{AdapterSubjects as g,AgentResolutionSubjects as _,AgentStatusSchema as v,AgentSubjects as y,MakaioSessionAgentSchema as b,SessionSubjects as x,TurnUsageSchema as S}from"@makaio/framework/contracts";import{defineDialectSchema as C,getRawSqlExecutor as w,getStorageEngine as ee,resolveSchema as T}from"@makaio/framework/storage/drizzle";import{and as E,asc as D,desc as te,eq as O,sql as ne}from"drizzle-orm";import{createStorageNamespaceDefinition as re}from"@makaio/framework/storage";import{HookAbortError as k}from"@makaio/framework/hooks";import{AdapterRuntimeSubjects as ie}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as ae}from"@makaio/framework/services/provider-context";const A=re(`agent`,{schemas:{get:{request:h.object({agentId:h.string()}),response:h.object({agent:b.nullable()})},set:{request:h.object({agentId:h.string(),agent:b}),response:h.object({success:h.boolean()})},delete:{request:h.object({agentId:h.string()}),response:h.object({success:h.boolean()})},listByAdapter:{request:h.object({adapterName:h.string(),status:h.enum([`idle`,`active`,`dead`,`disposed`,`all`]).optional()}),response:h.object({agents:h.array(b)})},listBySession:{request:h.object({sessionId:h.string()}),response:h.object({agents:h.array(b)})},updateStatus:{request:h.object({agentId:h.string(),status:v}),response:h.object({success:h.boolean()})},updateActivity:{request:h.object({agentId:h.string(),lastActivityAt:h.number()}),response:h.object({success:h.boolean()})},updateRuntime:{request:h.object({agentId:h.string(),cwd:h.string().optional(),model:h.string().optional(),providerConfigId:h.string().optional()}).refine(e=>e.cwd!==void 0||e.model!==void 0||e.providerConfigId!==void 0,{message:`At least one runtime field (cwd, model, or providerConfigId) must be provided`}),response:h.object({success:h.boolean()})}},extensions:{drizzle:{agents:e}}}),j=A.subjects,oe=t.postgres,M=C({turns:n},{turns:oe});function se(e){if(e)try{let t=JSON.parse(e),n=S.safeParse(t);return n.success?n.data:void 0}catch{return}}function N(e){return{turnId:e.turnId,sessionId:e.sessionId,turnNumber:e.turnNumber,startedAt:e.startedAt,completedAt:e.completedAt??void 0,status:e.status,error:e.error??void 0,usage:se(e.usage)}}function ce(e,t,n){let r=[le(e,t),ue(e,t),de(e,t),fe(e,t),pe(e,t),me(e,t),he(e,t)];return()=>r.forEach(e=>e())}function le(e,t){let n=w(t),r=ee(n.dialect),{turns:i}=T(t,M);return e.on(a.create,async e=>{let{sessionId:a,turnId:o}=e.payload,s=Date.now(),c=o??crypto.randomUUID();for(let e=1;;e++)try{await n.run(ne`
2
+ WITH next_num AS (
3
+ SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
4
+ FROM turns
5
+ WHERE session_id = ${a}
6
+ )
7
+ INSERT INTO turns (turn_id, session_id, turn_number, started_at, status)
8
+ SELECT ${c}, ${a}, n, ${s}, ${`active`}
9
+ FROM next_num
10
+ `);break}catch(t){if(e>=32||!r.capabilities.maxCounterAssignmentRaces||!r.errors.isUniqueViolationError(t,`uniq_turns_session_number`))throw t}let[l]=await t.select({turnNumber:i.turnNumber}).from(i).where(O(i.turnId,c)),u={turnId:c,sessionId:a,turnNumber:l.turnNumber,startedAt:s,status:`active`};e.setResult({turn:u})})}function ue(e,t){let{turns:n}=T(t,M);return e.on(a.complete,async e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c={completedAt:Date.now(),status:i,error:o??null};s!==void 0&&(c.usage=JSON.stringify(s));let l=a?E(O(n.turnId,r),O(n.status,a)):O(n.turnId,r),u=await t.update(n).set(c).where(l).returning();if(u.length>0){e.setResult({turn:N(u[0]),transitioned:!0});return}let[d]=await t.select().from(n).where(O(n.turnId,r)).limit(1);if(!d)throw Error(`Turn not found: ${r}`);e.setResult({turn:N(d),transitioned:!1})})}function de(e,t){let{turns:n}=T(t,M);return e.on(a.set,async e=>{let{turn:r}=e.payload,i={turnId:r.turnId,sessionId:r.sessionId,turnNumber:r.turnNumber,startedAt:r.startedAt,completedAt:r.completedAt??null,status:r.status,error:r.error??null,usage:r.usage?JSON.stringify(r.usage):null};await t.insert(n).values(i).onConflictDoUpdate({target:n.turnId,set:i}),e.setResult({turn:r})})}function fe(e,t){let{turns:n}=T(t,M);return e.on(a.get,async e=>{let{turnId:r}=e.payload,[i]=await t.select().from(n).where(O(n.turnId,r)).limit(1);e.setResult({turn:i?N(i):null})})}function pe(e,t){let{turns:n}=T(t,M);return e.on(a.getBySession,async e=>{let{sessionId:r,limit:i,status:a}=e.payload,o=t.select().from(n).where(O(n.sessionId,r)).orderBy(D(n.turnNumber));a&&(o=t.select().from(n).where(E(O(n.sessionId,r),O(n.status,a))).orderBy(D(n.turnNumber))),i&&(o=o.limit(i));let s=await o;e.setResult({turns:s.map(N)})})}function me(e,t){let{turns:n}=T(t,M);return e.on(a.getActive,async e=>{let{sessionId:r}=e.payload,[i]=await t.select().from(n).where(E(O(n.sessionId,r),O(n.status,`active`))).orderBy(te(n.turnNumber)).limit(1);e.setResult({turn:i?N(i):null})})}function he(e,t){let{turns:n}=T(t,M);return e.on(a.listActive,async e=>{let r=await t.select().from(n).where(O(n.status,`active`)).orderBy(D(n.startedAt));e.setResult({turns:r.map(N)})})}function ge(e){let t=new Map,n=new Map,r=new Map,i=_e(t,n,r),a=[ve(e,i,r),ye(e,t,i),be(e,i),xe(e,t),Se(e,t,n),Ce(e,t,n),we(e,t)];return()=>a.forEach(e=>e())}function _e(e,t,n){return r=>{e.set(r.turnId,r);let i=t.get(r.sessionId)??[];i.includes(r.turnId)||i.push(r.turnId),t.set(r.sessionId,i);let a=n.get(r.sessionId)??0;r.turnNumber>a&&n.set(r.sessionId,r.turnNumber)}}function ve(e,t,n){return e.on(a.create,e=>{let{sessionId:r,turnId:i}=e.payload,a=Date.now(),o={turnId:i??crypto.randomUUID(),sessionId:r,turnNumber:(n.get(r)??0)+1,startedAt:a,status:`active`};t(o),e.setResult({turn:o})})}function ye(e,t,n){return e.on(a.complete,e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=t.get(r);if(!c)throw Error(`Turn not found: ${r}`);if(a&&c.status!==a){e.setResult({turn:c,transitioned:!1});return}let l={...c,completedAt:Date.now(),status:i,error:o??void 0,usage:s??c.usage};n(l),e.setResult({turn:l,transitioned:!0})})}function be(e,t){return e.on(a.set,e=>{let{turn:n}=e.payload;t(n),e.setResult({turn:n})})}function xe(e,t){return e.on(a.get,e=>{e.setResult({turn:t.get(e.payload.turnId)??null})})}function Se(e,t,n){return e.on(a.getBySession,e=>{let{sessionId:r,status:i,limit:a}=e.payload,o=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e);i&&(o=o.filter(e=>e.status===i)),o.sort((e,t)=>e.turnNumber-t.turnNumber),a&&(o=o.slice(0,a)),e.setResult({turns:o})})}function Ce(e,t,n){return e.on(a.getActive,e=>{let{sessionId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).filter(e=>e.status===`active`).sort((e,t)=>t.turnNumber-e.turnNumber).at(0);e.setResult({turn:i??null})})}function we(e,t){return e.on(a.listActive,e=>{let n=[...t.values()].filter(e=>e.status===`active`).sort((e,t)=>e.startedAt-t.startedAt);e.setResult({turns:n})})}function P(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var F=class{turnId;sessionId;turnNumber;startedAt;_initiator;_agentIds;_messageIds=[];_completedAgents=new Set;_erroredAgents=new Map;constructor(e){if(!Number.isInteger(e.turnNumber)||e.turnNumber<1)throw Error(`turnNumber must be a positive integer`);this.turnId=e.turnId??crypto.randomUUID(),this.sessionId=e.sessionId,this.turnNumber=e.turnNumber,this.startedAt=e.startedAt??Date.now(),this._initiator=Object.freeze(P(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return P(this._initiator)}get messageIds(){return this._messageIds}get completedAgents(){return this._completedAgents}get erroredAgents(){return this._erroredAgents}addMessage(e){this._messageIds.push(e)}markAgentCompleted(e){return this._completedAgents.add(e),this.checkCompletion()}markAgentErrored(e,t){return this._erroredAgents.set(e,t),this.checkCompletion()}hasAgent(e){return this._agentIds.includes(e)}isComplete(){return this._completedAgents.size+this._erroredAgents.size>=this._agentIds.length}getResult(){return{success:this._erroredAgents.size===0,errors:Array.from(this._erroredAgents.values())}}getContext(){if(this._messageIds.length===0)throw Error(`Turn ${this.turnId} has no messages yet`);return{turnId:this.turnId,messageId:this._messageIds[this._messageIds.length-1]}}getContextForMessage(e){return{turnId:this.turnId,messageId:e}}checkCompletion(){return this.isComplete()?{turnComplete:!0,result:this.getResult()}:{turnComplete:!1}}};function I(e){return typeof e==`string`?e:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
11
+ `)}function Te(e){return e}function Ee(e){return typeof e==`string`?[{type:`text`,content:e}]:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(Te)}async function De(e,t,n,r){let{session:i}=await e.request(x.get,{sessionId:t});if(i){if(i.status!==`active`)throw Error(`[getOrCreateSession] Session is not active: ${t}`);return{sessionId:t,session:i}}await e.request(x.create,{sessionId:t,originWindowId:r});let{session:a}=await e.request(x.get,{sessionId:t});if(!a)throw Error(`[getOrCreateSession] Failed to create session: ${t}`);return{sessionId:t,session:a}}function Oe(e,t){if(t===void 0){let t=e.agents.find(t=>t.agentId===e.leadAgentId);if(!t)throw Error(`[resolveTargetAgents] Lead agent not found: ${e.leadAgentId}`);return[t]}if(t===`all`)return e.agents;let n=new Set(t);return e.agents.filter(e=>n.has(e.agentId))}function ke(e,t){for(let n of e.values())if(n.hasAgent(t))return n}function Ae(e,t){if(e===`extension`){let e=t?.trim();if(!e)throw Error(`extensionId is required when source is "extension"`);return{source:`extension`,sourceId:e}}return e?{source:e}:{source:`user`}}async function L(e,t,n){let{adapterId:r}=await e.request(o.resolveId,{adapterName:t,...n!==void 0&&{machineId:n}});return r}async function je(e,t,n){if(!(!t||!n))try{let{config:r}=await e.request(c.getProviderConfig,{id:t});if(!r)return;let{provider:i}=await e.request(l.get,{id:r.definitionId}),a=i?.availableModels?.find(e=>e.name===n);return a?{supportedReasoningLevels:a.supportedReasoningLevels}:void 0}catch{return}}async function Me(e,t){let{executionTarget:n}=await e.request(u.resolve,t);return n}async function R(e,t){let{sessionId:n,limit:i}=t,a=[],o=!1,c=!1,l;do{let{events:t,nextCursor:u}=await e.request(r.getEvents,{sessionId:n,options:{limit:1e4,...l&&{after:l}}});for(let r of t){if(r.type===`squash`){o=!0,a.length=0;let e=r.payload,t={messageId:`squash-${r.eventId}`,sessionId:n,turnId:null,role:`assistant`,contentText:e.summaryJson,blocks:[{type:`text`,content:e.summaryJson}],timestamp:r.timestamp};a.push(t)}else if(r.type===`message`){let t=r.payload,{message:n}=await e.request(s.get,{messageId:t.messageId});n&&a.push(n)}if(i&&a.length>=i){c=!0;break}}if(i&&a.length>=i)break;l=u??void 0}while(l);return{messages:a,hasSquashBoundary:o,sessionChain:[n],truncated:c,incomplete:!1}}const z=new class{actions=new Map;register(e){if(this.actions.has(e.id))throw Error(`Action already registered: ${e.id}`);this.actions.set(e.id,e)}get(e){return this.actions.get(e)}getAll(){return Array.from(this.actions.values())}getByCategory(e){return this.getAll().filter(t=>t.category===e)}reset(){this.actions.clear()}};async function B(e,t,n){let r=e,i,a;for(let e of t){let t=z.get(e.actionId);if(!t)throw Error(`Unknown action: ${e.actionId}`);let o={...n,...e.options},s=await t.execute(r,o);if(s.kind===`messages`)r=s.messages;else{i=s.json,a=s.tokenEstimate,r=[];break}}if(!i&&r.length>0){let e=r.reduce((e,t)=>e+JSON.stringify(t.blocks).length,0);a=Math.ceil(e/4)}return{messages:r,contextJson:i,tokenEstimate:a}}function V(e){return e.map(e=>({...e,blocks:e.blocks.filter(e=>e.type!==`reasoning`)}))}const Ne={id:`strip-reasoning`,label:`Strip Reasoning`,description:`Remove reasoning/thinking blocks from messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:V(e)}}};function H(e){return e.map(e=>({...e,blocks:e.blocks.map(e=>{if(e.type===`tool_output`){let t=e.output.length;return{...e,output:`[output removed - ${t} chars]`}}return e})}))}const Pe={id:`strip-tool-outputs`,label:`Strip Tool Outputs`,description:`Remove tool output contents, keep structure`,category:`transformation`,async execute(e){return{kind:`messages`,messages:H(e)}}};async function U(e,t){let n=[],r=[],a=[],o=!1,s=!1,c=!1,l=[],u,d=t,f;for(;d;){let n=await e.request(i.get,{sessionId:d});if(!n.session){c=!0;break}d===t&&(u=n.session.forkTransforms??void 0),l.unshift({sessionId:d,forkPointMessageId:n.session.forkPointMessageId??void 0}),f=n.session.parentSessionId??void 0,d=f}for(let t=0;t<l.length;t++){let{sessionId:i}=l[t],c=t===l.length-1,u=l[t+1]?.forkPointMessageId;n.push(i);let d=await R(e,{sessionId:i});if(d.hasSquashBoundary&&(o=!0,c||(r.length=0)),d.truncated&&(s=!0),c)a=d.messages;else for(let e of d.messages)if(r.push(e),u&&e.messageId===u)break}return u&&(r=await Fe(r,u)),{messages:[...r,...a],hasSquashBoundary:o,sessionChain:n,truncated:s,incomplete:c}}async function Fe(e,t){if(t.segments?.length){let n=t.segments[0].fromMessageId,r=t.segments[t.segments.length-1].toMessageId,i=e.findIndex(e=>e.messageId===n),a=e.findIndex(e=>e.messageId===r);if(i===-1||a===-1||i>a)return W(e,t.segments);let o=e.slice(0,i),s=e.slice(i,a+1),c=e.slice(a+1),l=W(s,t.segments);return[...o,...l,...c]}let n=e;if(t.removedMessageIds?.length){let e=new Set(t.removedMessageIds);n=n.filter(t=>!e.has(t.messageId))}return t.appliedPipeline?.length&&(n=(await B(n,t.appliedPipeline)).messages),n}function Ie(e,t){let n=e;return t.stripReasoning&&(n=V(n)),t.stripToolOutputs&&(n=H(n)),n}function W(e,t){let n=new Map;for(let t=0;t<e.length;t++)n.set(e[t].messageId,t);let r=[];for(let i of t){let t=n.get(i.fromMessageId),a=n.get(i.toMessageId);if(t===void 0||a===void 0){console.warn(`[getFullConversation] Skipping segment with missing boundary IDs`,{segmentKey:`${i.fromMessageId}..${i.toMessageId}`,fromMessageId:i.fromMessageId,toMessageId:i.toMessageId,hasFrom:t!==void 0,hasTo:a!==void 0});continue}let o=e.slice(t,a+1),s;switch(i.policy){case`exclude`:s=[];break;case`summarize`:if(i.summaryText){if(o.length===0)throw Error(`Cannot create synthetic summary message for empty segment: ${i.fromMessageId}..${i.toMessageId}`);s=[{messageId:`summary-${i.fromMessageId}-${i.toMessageId}`,turnId:null,sessionId:o[0].sessionId,role:`assistant`,contentText:i.summaryText,blocks:[{type:`text`,content:i.summaryText}],timestamp:o[o.length-1].timestamp}]}else s=o;break;default:s=o;break}if((i.policy!==`summarize`||!i.summaryText)&&i.overrides&&Object.keys(i.overrides).length>0){let e=new Set(Object.entries(i.overrides).filter(([,e])=>e===`exclude`).map(([e])=>e));s=s.filter(t=>!e.has(t.messageId))}s=Ie(s,i),r.push(...s)}return r}function G(e){return{role:e.role,blocks:e.blocks}}async function Le(e,t){return{messageHistory:(await U(e,t.sessionId)).messages.map(G),isFirstTurn:!0}}async function Re(e,t,n,r){if(t.cwd===n)return{swapped:!1};let i=await e.request(y.cwd.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,sessionId:t.sessionId,newCwd:n,...r?.skipWarning?{skipWarning:!0}:{}});if(!i.success)throw Error(`Failed to change cwd for agent ${t.agentId}: ${i.reason??`unknown`}`);return i.previousCwd?(t.cwd=n,{swapped:!0,previousCwd:i.previousCwd}):(t.cwd=n,{swapped:!1})}async function ze(e,t,n,r){let i=n===void 0||t.model===n,a=r?.reasoningEffort===void 0,o=!r?.providerConfigId;if(i&&a&&o)return{changed:!1};let s=r?.providerConfigId?await d(e,r.providerConfigId):void 0,c=await e.request(y.model.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,...n!==void 0&&{newModel:n},...r?.reasoningEffort!==void 0&&{reasoningEffort:r.reasoningEffort},...r?.skipWarning!==void 0&&{skipWarning:r.skipWarning},...s!==void 0&&{providerContext:s}});if(!c.success)throw Error(`Failed to change model for agent ${t.agentId}: ${c.reason??`unknown`}`);return n!==void 0&&(t.model=n),{changed:!0,swapped:c.swapped??!1}}async function Be(e,t,n){let r=[],i=new Set;for(let a of t){let t=await e.requestOptional(g.getAgent,{adapterId:a.adapterId,agentId:a.agentId});if(t.handled&&t.data.agent!==null)r.push(a);else{let t=await K(e,a,n);r.push(t),i.add(t.agentId)}}return{verifiedAgents:r,recoveredAgentIds:i}}async function Ve(e,t,n){let r=await U(e,t.sessionId),i=n?.pipeline??[];return{messageHistory:(i.length>0?(await B(r.messages,i)).messages:r.messages).map(G),isFirstTurn:!0}}async function K(e,t,n){let r=await L(e,t.adapterName).catch(()=>t.adapterId);return await e.request(g.rehydrateAgent,{adapterId:r,agentId:t.agentId,cwd:n.cwd,model:n.model??t.model}),t.adapterId=r,t}function q(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function J(e,t,n,r){let{adapterName:i}=await e.request(o.resolveName,{adapterId:t});if(n&&i!==n)throw Error(`${r}adapterName "${n}" does not match adapterId "${t}"`);return i}async function He(e,t,n,r,i,a,o,s,c,l){let u=n.map(async n=>{try{await e.request(y.sendMessage,{agentId:n.agentId,adapterId:n.adapterId,message:r,deliveryMode:o,messageId:i,turnId:a.turnId,sessionId:t.sessionId,sessionContext:c,...l!==void 0&&{responseSchema:l}}),await e.emit(x.user_message.acknowledged,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId})}catch(t){if(t instanceof k){await e.emit(x.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId,outcome:`cancelled`});let t=a.markAgentCompleted(n.agentId);t.turnComplete&&await s(a,t.result);return}let r=t instanceof Error?t.message:String(t),o=a.markAgentErrored(n.agentId,r);await e.emit(x.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId,outcome:`error`,error:r}),o.turnComplete&&await s(a,o.result)}});await Promise.all(u)}function Ue(e){return e.on(x.abandon,async t=>{let{parentSessionId:n,childSessionId:r}=t.payload,{session:i}=await e.request(x.get,{sessionId:r});if(!i)throw Error(`[abandon-handler] Child session not found: ${r}`);if(i.parentSessionId!==n)throw Error(`[abandon-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(i.parentSessionId?` (actual parent: ${i.parentSessionId})`:` (session has no parent)`));if(!(await e.request(x.close,{sessionId:r})).success)throw Error(`[abandon-handler] Failed to close child session: ${r}`);await e.emit(x.abandoned,{sessionId:r,parentSessionId:n}),t.setResult({success:!0})})}function We(e,t,n){return e.on(x.agent.attach,async r=>{let{sessionId:i,agent:a,initialMessage:o,role:s}=r.payload,c=Ge(a),l=await Ze(e,i),u=await qe(e,i,o,a),{adapterName:d,adapterId:p}=await Ke(e,a.kind===`adapter`&&`adapterName`in a?a.adapterName:u?.adapterName,a.kind===`adapter`&&`adapterId`in a?a.adapterId:void 0,n),{providerConfigId:m,providerContext:h}=await Je(e,a.providerConfigId,u),{runtimeOptions:_,mergedModel:v,mergedCwd:y}=Xe(c,u,h),b=Qe(l,s),x=et(p,i,o,b,_,$e(l),u?.harnessId);h!==void 0&&await f(e,h);let S=await e.request(g.startAgent,x);if(!S.success)throw Error(`[attach-handler] Failed to start agent: ${S.message}`);let C=a.kind===`persona`?a.personaId:void 0;await nt(e,S,{adapterName:d,sessionId:i,role:b,timestamp:Date.now(),personaId:C,profileId:u?.profileId,harnessId:u?.harnessId,providerConfigId:m,compressionMode:u?.compressionMode,model:v,cwd:y});let w=o&&S.messageId?await rt(e,t,i,S.agentId,S.messageId,o):void 0;r.setResult({agentId:S.agentId,adapterSessionId:S.adapterSessionId,role:b,...w&&{messageId:w.messageId,turnId:w.turnId}})})}function Ge(e){return{...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt}}}async function Ke(e,t,n,r){let i=q(t),a=q(n);if(!i&&!a)throw Error(`[attach-handler] adapterName or adapterId is required — provide one explicitly or via persona/profile/virtualModel resolution`);if(a)return{adapterName:await J(e,a,i,`[attach-handler] `),adapterId:a};let o=i;return{adapterName:o,adapterId:await L(e,o,r)}}async function qe(e,t,n,r){if(r.kind===`adapter`)return null;let i=n?I(n):void 0;return e.request(_.resolve,{selection:r,context:{sessionId:t,promptText:i}})}async function Je(e,t,n){let r=t??n?.providerConfigId;return{providerConfigId:r,providerContext:r===void 0?void 0:await d(e,r)}}function Ye(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function Xe(e,t,n){let r=e.model??t?.model,i=e.cwd;return{runtimeOptions:Ye({model:r,reasoningEffort:e.reasoningEffort??t?.reasoningEffort,cwd:i,allowedTools:e.allowedTools??t?.allowedTools,disallowedTools:e.disallowedTools??t?.disallowedTools,allowedDirectories:e.allowedDirectories??t?.allowedDirectories,systemPrompt:e.systemPrompt??t?.systemPrompt,providerContext:n}),mergedModel:r,mergedCwd:i}}async function Ze(e,t){let{session:n}=await e.request(x.get,{sessionId:t});if(!n)throw Error(`[attach-handler] Session not found: ${t}`);if(n.status!==`active`)throw Error(`[attach-handler] Session is not active: ${t}`);return n}function Qe(e,t){let n=e.agents.length===0;return t??(n?`lead`:`member`)}function $e(e){if(e.isImported&&e.isOrchestrated===!1&&e.adapterSessionId)return e.adapterSessionId}function et(e,t,n,r,i,a,o){return a?{mode:`resume`,adapterId:e,sessionId:t,adapterSessionId:a,role:r,...i,...n!==void 0&&{initialMessage:n},...o!==void 0&&{harnessId:o}}:{adapterId:e,sessionId:t,role:r,...i,...n!==void 0&&{initialMessage:n},...o!==void 0&&{harnessId:o}}}async function tt(e,t){!t.personaId&&!t.profileId&&!t.harnessId&&!t.providerConfigId||await e.request(j.set,{agentId:t.agentId,agent:{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,sessionId:t.sessionId,role:t.role,status:`idle`,personaId:t.personaId,profileId:t.profileId,harnessId:t.harnessId,providerConfigId:t.providerConfigId,createdAt:t.timestamp,lastActivityAt:t.timestamp,...t.model!==void 0&&{model:t.model},...t.cwd!==void 0&&{cwd:t.cwd},...t.compressionMode!==void 0&&{compressionMode:t.compressionMode}}})}async function nt(e,t,n){try{await tt(e,{agentId:t.agentId,adapterId:t.adapterId,adapterName:n.adapterName,sessionId:n.sessionId,role:n.role,timestamp:n.timestamp,personaId:n.personaId,profileId:n.profileId,harnessId:n.harnessId,providerConfigId:n.providerConfigId,compressionMode:n.compressionMode,model:n.model,cwd:n.cwd})}catch(r){console.error(`[attach-handler] Failed to persist agent identity, rolling back started agent`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:r});try{await e.request(g.stopAgent,{adapterId:t.adapterId,agentId:t.agentId})}catch(e){console.error(`[attach-handler] Failed to rollback started agent after identity persistence failure`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:e})}throw r}}async function rt(e,t,n,r,i,o){let{turn:s}=await e.request(a.create,{sessionId:n}),c=new F({sessionId:n,agentIds:[r],turnId:s.turnId,turnNumber:s.turnNumber});return c.addMessage(i),t.set(n,c),await e.emit(x.turn.started,{sessionId:n,turnId:c.turnId,turnNumber:c.turnNumber,messageId:i,agentIds:[...c.agentIds]}),await e.emit(x.user_message.sent,{sessionId:n,turnId:c.turnId,turnNumber:c.turnNumber,messageId:i,content:o,agentIds:[...c.agentIds]}),await e.emit(x.user_message.acknowledged,{sessionId:n,turnId:c.turnId,turnNumber:c.turnNumber,messageId:i,agentId:r}),{messageId:i,turnId:c.turnId}}const it={id:`messages-to-context`,label:`Export as Context`,description:`Convert messages to context JSON (final step)`,category:`extraction`,async execute(e){let t=e.map(e=>({role:e.role,content:e.blocks.map(e=>e.type===`text`?e.content:e.type===`reasoning`?`[reasoning: ${e.content}]`:e.type===`tool_call`?`[tool: ${e.name}]`:e.type===`tool_output`?e.output:``).filter(Boolean).join(`
12
+ `)})),n=t.reduce((e,t)=>e+t.content.length,0),r=Math.ceil(n/4);return{kind:`context`,json:{type:`compressed-messages`,messageCount:e.length,messages:t},tokenEstimate:r}}},at={id:`llm-summarize`,label:`Summarize`,description:`LLM-generated summary of selected messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:e}}};function ot(e){let t=[];for(let n of e){let e=n.blocks.filter(e=>e.type===`text`).map(e=>e.content).join(`
13
+ `);e&&(n.role===`user`?t.push(`[human]\n${e}\n[/human]`):n.role===`assistant`&&t.push(`[assistant]\n${e}\n[/assistant]`))}return`<conversation>\n${t.join(`
14
+
15
+ `)}\n</conversation>`}function st(e){return{id:`llm-extract`,label:`LLM Extract`,description:`Extract structured context using a cheap LLM model (requires virtualModelId in options)`,category:`extraction`,async execute(t,n){let r={kind:`messages`,messages:t},i=n?.virtualModelId;if(typeof i!=`string`)return r;let a=(typeof n?.sessionId==`string`&&n.sessionId.length>0?n.sessionId:void 0)??t[0]?.sessionId;if(typeof a!=`string`||a.length===0)return r;try{let n=await e.request(_.resolve,{selection:{kind:`virtual-model`,virtualModelId:i},context:{sessionId:a}}),{adapterId:r}=await e.request(ie.resolveId,{adapterName:n.adapterName}),o=ot(t),s=n.providerConfigId?await ae(e,n.providerConfigId):void 0,{text:c}=await e.request(g.infer,{adapterId:r,prompt:o,model:n.model,systemPrompt:`You are a context extraction assistant. Analyze the following conversation and extract structured information. Respond with ONLY valid JSON matching this exact schema — no markdown, no explanation, no code fences:
16
+
17
+ {
18
+ "resolved_items": ["string — completed work with resolution details"],
19
+ "known_bugs": [{ "issue": "string", "location": "string", "impact": "string" }],
20
+ "todos": [{ "issue": "string", "location": "string", "priority": "high|medium|low" }],
21
+ "key_decisions_and_rationale": ["string — decision with reasoning"],
22
+ "technical_details": {
23
+ "files": ["string — file paths mentioned"],
24
+ "schemas": {},
25
+ "apis": ["string — API endpoints or contracts"],
26
+ "config": {}
27
+ },
28
+ "constraints_and_requirements": ["string — constraints or non-negotiable requirements"],
29
+ "current_state": "string — one paragraph summary of where work stands now",
30
+ "roadmap": ["string — future work items in priority order"],
31
+ "data_flows": ["string — key data movement patterns"],
32
+ "component_interactions": { "ComponentName": "string — description of its role" },
33
+ "key_files": { "filepath": "string — what this file does" },
34
+ "helpful_hint": ["string — quick reference hints for resuming work"]
35
+ }
36
+
37
+ Rules:
38
+ - Omit array items you have no evidence for (prefer empty array over fabrication).
39
+ - current_state MUST be present; write "No summary available" if you cannot determine it.
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 Y=!1,X=!1;function Z(e){Y||(Y=!0,z.register(Ne),z.register(Pe),z.register(it),z.register(at)),e&&!X&&(X=!0,z.register(st(e)))}function ct(){Y=!1,X=!1}function lt(e){return Z(e),e.on(x.compress,async t=>{let{sessionId:n,pipeline:i}=t.payload,{messages:a}=await e.request(s.getBySession,{sessionId:n,limit:1e4}),o=await B(a,i,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let c=a.map(e=>e.messageId),l=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),u=crypto.randomUUID();await e.request(r.append,{event:{sessionId:n,eventId:u,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:l,tokensAfter:o.tokenEstimate,compressedMessageIds:c}}}),await e.emit(x.compressed,{sessionId:n,eventId:u}),t.setResult({eventId:u,contextJson:o.contextJson,tokensBefore:l,tokensAfter:o.tokenEstimate})})}async function ut(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(s.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 c=new Map;o.forEach((e,t)=>{c.set(e.messageId,t)});let l=-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=c.get(e.fromMessageId),r=c.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<=l)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==l+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);l=r}if(l!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function dt(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=z.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 ft(e){return e.on(x.fork,async t=>{let{sourceSessionId:n,fromMessageId:r,name:i,branchKind:a=`fork`,transforms:o,targetWorkingDirectory:c,existingSessionId:l}=t.payload,{session:u}=await e.request(x.get,{sessionId:n});if(!u)throw Error(`[fork-handler] Source session not found: ${n}`);if(r){let{message:t}=await e.request(s.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 ut(e,n,o,r)||dt(o));let{sessionId:d}=await e.request(x.create,{...l?{sessionId:l}:{},parentSessionId:n,forkPointMessageId:r,branchKind:a,forkTransforms:o,...i?{title:i}:{},...c?{targetWorkingDirectory:c}:{}});await e.emit(x.branch.created,{sessionId:n,childSessionId:d,parentSessionId:n,kind:a,forkPointMessageId:r,transforms:o}),await e.emit(x.forked,{parentSessionId:n,childSessionId:d,forkPoint:r}),t.setResult({sessionId:d})})}function pt(e){return e.on(x.merge,async t=>{let{parentSessionId:n,childSessionId:i,summary:a}=t.payload,o=`merge:${n}:${i}`,{session:s}=await e.request(x.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(x.get,{sessionId:i});if(!c)throw Error(`[merge-handler] Child session not found: ${i}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${i} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(x.merging,{parentSessionId:n,childSessionId:i});let l=a??`Child session ${i} merged.`;if(!(await e.request(x.close,{sessionId:i})).success)throw Error(`[merge-handler] Failed to close child session: ${i}`);let u=JSON.stringify({handoff:l});await e.request(r.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:i,parentSessionId:n,resultJson:u}}}),await e.emit(x.branch.merged,{sessionId:n,childSessionId:i,parentSessionId:n,resultJson:u}),await e.emit(x.merged,{parentSessionId:n,childSessionId:i,handoff:l}),t.setResult({success:!0,handoff:l})})}async function Q(e,t,n,r,i){if(!(t.parentSessionId!==void 0&&(t.contextInheritance===`parent-history`||t.contextInheritance===void 0&&t.branchKind!==`subagent`))||r?.messageHistory)return r;let{turns:o}=await e.request(a.getBySession,{sessionId:n,limit:2});if(!(i&&o.length<=1))return r;let s=(await U(e,n)).messages.map(G);return{...r,messageHistory:s,isFirstTurn:!0,hasNewTransforms:t.forkTransforms!==void 0}}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function mt(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function ht(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function gt(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 ht(t.value)?t.value:$}catch{}return $}function _t(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 vt(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(x.user_message.acknowledged,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId})}catch(e){if(e instanceof k){await t.emit(x.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(x.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 yt(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=await Q(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 gt(e):$,x=n.map(async n=>{let c=m?.get(n.agentId),l=c&&b.enabled?mt(b.template,c.previousCwd,c.newCwd):void 0;await vt({bus:e,session:t,turn:a,message:r,messageId:i,deliveryMode:o,onTurnComplete:s,agent:n,agentContext:_t({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{Ee as A,Me as C,De as D,ke as E,j as F,ge as M,ce as N,Oe as O,A as P,L as S,Ae as T,Be as _,lt as a,z as b,We as c,q as d,J as f,K as g,ze as h,ft as i,F as j,I as k,Ue as l,Re as m,Q as n,Z as o,Ve as p,pt as r,ct as s,yt as t,He as u,Le as v,je as w,R as x,U as y};
@@ -55,8 +55,8 @@ declare const LogImporterInfoSchema: z.ZodObject<{
55
55
  adapterName: z.ZodString;
56
56
  displayName: z.ZodString;
57
57
  source: z.ZodEnum<{
58
- adapter: "adapter";
59
58
  extension: "extension";
59
+ adapter: "adapter";
60
60
  }>;
61
61
  logFilePattern: z.ZodString;
62
62
  isRunning: z.ZodBoolean;
@@ -2,8 +2,10 @@ import { r as ExtensionDiscovery } from "./extension-discovery-CkV_VRdJ.mjs";
2
2
  import { RegistrableBusNamespaceDefinition } from "@makaio/framework/core";
3
3
  import { BusTransport, IMakaioBus, SubjectTelemetryProjectorRegistry } from "@makaio/framework/bus";
4
4
  import { ExtensionConfigProvider, IWorkerNodeProvider, IWorkflowRunner, IWorkflowRunner as IWorkflowRunner$1, NormalizedWorkerNodeCapabilities, StationHandler, StepRunnerBusAuth, StepRunnerPlatformDefaults, TrayManifest, WorkerContributionManifest, WorkerNodeCapabilities, WorkerNodeDispatch, WorkerNodeHandle, WorkerNodeProvisionRequest, WorkerNodeRequirements, WorkflowDefinition, WorkflowRunResult, WorkflowRunResult as WorkflowRunResult$1, WorkflowRunnerRunOptions, WorkflowWorkerConfig, WorkflowWorkerSource, WorkflowZodSchemas } from "@makaio/framework/contracts";
5
+ import { StorageEngine } from "@makaio/framework/storage/drizzle";
5
6
  import { PostInstallHandler, StrategyDependencies } from "@makaio/framework/clients";
6
7
  import { DispatchingAuth, TransportAuth } from "@makaio/framework/node/transports";
8
+ import { DatabaseClient } from "@makaio/framework/storage/drizzle/client";
7
9
  import { ContributionProcessor, ExtensionCoordinator, ExtensionRuntimeSurface, KernelExtensionContext, KernelMakaioExtension, RuntimeCapability, TransportProvider, WindowRegistry } from "@makaio/framework/kernel";
8
10
  import { Hono } from "hono";
9
11
  import { Server } from "node:http";
@@ -238,25 +240,163 @@ type RuntimeOwnershipPackageView = Pick<KernelMakaioExtension, 'name' | 'display
238
240
  */
239
241
  declare function selectFrameworkCorePackages(loadedExtensionPackages: ReadonlyArray<RuntimeOwnershipPackageView> | true): ReadonlyArray<KernelMakaioExtension>;
240
242
  //#endregion
243
+ //#region runtimes/node/src/initialize-node-database.d.ts
244
+ /**
245
+ * Database backend configuration shared by boot and direct
246
+ * {@link initializeNodeDatabase} callers.
247
+ */
248
+ interface DatabaseBootOptions {
249
+ /**
250
+ * Connection URL.
251
+ *
252
+ * A URL claimed by a registered storage engine — or recognized by the
253
+ * engine hint table (`postgres://` / `postgresql://` via
254
+ * `@makaio/storage-pg`) — selects that engine's backend and outranks every
255
+ * file-path source (`dbPath`, `MAKAIO_DATABASE_PATH`).
256
+ */
257
+ readonly url?: string;
258
+ /**
259
+ * Maximum pooled Postgres connections. Defaults to 4.
260
+ *
261
+ * Ignored for SQLite targets.
262
+ */
263
+ readonly poolMax?: number;
264
+ /**
265
+ * Filesystem directory used as the module-resolution base when auto-loading
266
+ * hinted engine packages such as `@makaio/storage-pg`.
267
+ *
268
+ * Defaults to `process.cwd()`, which matches normal host entrypoints. Hosts
269
+ * launched from another working directory can pass their install root here
270
+ * instead of manually preloading `database.engines`.
271
+ */
272
+ readonly enginePackageImportBasePath?: string;
273
+ /**
274
+ * Storage engines to register explicitly.
275
+ *
276
+ * Registration happens first inside {@link initializeNodeDatabase} — before
277
+ * the database target is resolved — so listed engines are always visible to
278
+ * URL target resolution and client creation. Same-reference re-registration
279
+ * is a no-op, making repeated boots with the same engine objects safe.
280
+ */
281
+ readonly engines?: ReadonlyArray<StorageEngine>;
282
+ }
283
+ /**
284
+ * Options for {@link initializeNodeDatabase}.
285
+ */
286
+ interface InitializeNodeDatabaseOptions {
287
+ /**
288
+ * Override database file path.
289
+ *
290
+ * Outranked by `database.url` and the `MAKAIO_DATABASE_URL` environment
291
+ * variable. When neither URL source is set, falls back to the
292
+ * `MAKAIO_DATABASE_PATH` environment variable, then
293
+ * `<makaioHome>/makaio.db`.
294
+ */
295
+ dbPath?: string;
296
+ /**
297
+ * Override framework central migrations directory.
298
+ *
299
+ * Bundled hosts copy migrations next to their entrypoint and pass that
300
+ * runtime asset path explicitly because package-local source paths are not
301
+ * available in the final image.
302
+ */
303
+ migrationsDir?: string;
304
+ /**
305
+ * Makaio home directory used to derive the default database path.
306
+ * Superseded by every higher-precedence source: `database.url`,
307
+ * `MAKAIO_DATABASE_URL`, `dbPath`, and `MAKAIO_DATABASE_PATH`.
308
+ */
309
+ makaioHome: string;
310
+ /**
311
+ * Database backend configuration. `database.url` (or env
312
+ * `MAKAIO_DATABASE_URL`) selects a URL-backed target and outranks `dbPath`
313
+ * and `MAKAIO_DATABASE_PATH`.
314
+ */
315
+ readonly database?: DatabaseBootOptions;
316
+ }
317
+ /**
318
+ * Result returned by {@link initializeNodeDatabase}.
319
+ */
320
+ interface InitializeNodeDatabaseResult {
321
+ databaseClient: DatabaseClient;
322
+ /**
323
+ * Absolute path of the SQLite database file.
324
+ *
325
+ * Absent for URL-backed (Postgres) targets.
326
+ */
327
+ dbPath?: string;
328
+ }
329
+ /**
330
+ * Initialize the runtime database (SQLite file or Postgres URL) for Node
331
+ * runtime persistence.
332
+ *
333
+ * Resolution order for the connection target (empty and whitespace-only
334
+ * values count as unset):
335
+ * 1. `options.database?.url`
336
+ * 2. `process.env.MAKAIO_DATABASE_URL`
337
+ * 3. `options.dbPath`
338
+ * 4. `process.env.MAKAIO_DATABASE_PATH`
339
+ * 5. `path.join(options.makaioHome, 'makaio.db')`
340
+ *
341
+ * Engine registration precedes target resolution by construction: engines
342
+ * passed via `database.engines` are registered first, and URL candidates that
343
+ * are recognized but unregistered auto-resolve their hinted engine package
344
+ * ({@link autoRegisterHintedEngine}) before the target is classified.
345
+ *
346
+ * URL targets (engine-served, e.g. `postgres://` / `postgresql://`) perform
347
+ * no filesystem work (no mkdir, no chmod, no `file:` conversion). The
348
+ * bundled-layout migrations resolver is applied only for URL targets because
349
+ * SQLite (file) targets resolve their default inside the migrations reader —
350
+ * bundled hosts replace that reader entirely — so the resolver probe applies
351
+ * only where it is safe.
352
+ * @param options - Configuration; see {@link InitializeNodeDatabaseOptions}.
353
+ * @returns Initialized database client and resolved database path (absent for
354
+ * URL-backed targets).
355
+ */
356
+ declare function initializeNodeDatabase(options: InitializeNodeDatabaseOptions): Promise<InitializeNodeDatabaseResult>;
357
+ //#endregion
241
358
  //#region runtimes/node/src/workflow-worker/worker-entry-resolver.d.ts
242
359
  /** Worker entry build mode. */
243
360
  type WorkflowWorkerEntryMode = 'source' | 'dist';
244
361
  /**
245
362
  * Options for resolving the workflow worker entrypoint file path.
363
+ *
364
+ * `moduleDir` is the directory that contains the currently-running boot module
365
+ * (i.e. `path.dirname(fileURLToPath(import.meta.url))` at the call site).
366
+ * The worker entry is always a sibling `workflow-worker/` subdirectory of
367
+ * `moduleDir`, so this one value covers all three package layouts:
368
+ *
369
+ * - source `moduleDir = <repo>/runtimes/node/src`
370
+ * → `<repo>/runtimes/node/src/workflow-worker/worker-entry.ts`
371
+ * - standalone `moduleDir = <pkg>/dist`
372
+ * → `<pkg>/dist/workflow-worker/worker-entry.mjs`
373
+ * - umbrella `moduleDir = <pkg>/dist/runtime-node`
374
+ * → `<pkg>/dist/runtime-node/workflow-worker/worker-entry.mjs`
375
+ *
376
+ * Using the former `packageRoot` shape would produce a double-`dist` path
377
+ * (`<pkg>/dist/dist/…`) in the umbrella layout.
246
378
  */
247
379
  interface WorkflowWorkerEntryResolverOptions {
248
- /** Absolute path to the package root directory. */
249
- readonly packageRoot: string;
380
+ /**
381
+ * Absolute path to the directory that contains the running boot module.
382
+ * Typically `path.dirname(fileURLToPath(import.meta.url))`.
383
+ */
384
+ readonly moduleDir: string;
250
385
  /** Whether to resolve the source TypeScript entry or the built distribution entry. */
251
386
  readonly mode: WorkflowWorkerEntryMode;
252
387
  }
253
388
  /**
254
389
  * Resolve the absolute file path to the workflow worker entrypoint.
255
390
  *
391
+ * The worker entry is always located at
392
+ * `<moduleDir>/workflow-worker/worker-entry.(ts|mjs)` — a sibling
393
+ * subdirectory of the running boot module — regardless of which of the three
394
+ * supported package layouts is active (source, standalone dist, umbrella dist).
395
+ *
256
396
  * In `source` mode, returns the TypeScript source path used during development
257
397
  * (requires a loader like `tsx` or `ts-node` for direct execution).
258
398
  * In `dist` mode, returns the compiled ESM bundle path used in production.
259
- * @param options - Resolution options with package root and mode.
399
+ * @param options - Resolution options with the running module directory and mode.
260
400
  * @returns Absolute path to the workflow worker entrypoint file.
261
401
  */
262
402
  declare function resolveWorkflowWorkerEntry(options: WorkflowWorkerEntryResolverOptions): string;
@@ -455,6 +595,16 @@ interface CoreBootOptions {
455
595
  * not exist in the deployed image.
456
596
  */
457
597
  readonly centralMigrationsDir?: string;
598
+ /**
599
+ * Database backend configuration. Resolution order for the connection target
600
+ * (empty and whitespace-only values count as unset):
601
+ * 1. `database.url` 2. env `MAKAIO_DATABASE_URL` 3. the `dbPath` option of
602
+ * direct `initializeNodeDatabase` callers 4. env `MAKAIO_DATABASE_PATH`
603
+ * 5. `<makaioHome>/makaio.db`
604
+ *
605
+ * A `postgres://` / `postgresql://` URL selects the Postgres backend.
606
+ */
607
+ readonly database?: DatabaseBootOptions;
458
608
  /**
459
609
  * Host launcher command embedded into client wiring installed from warning actions.
460
610
  *
@@ -873,8 +1023,11 @@ interface NodeWorkflowRunnerPackageOptions {
873
1023
  declare function createNodeWorkflowRunnerPackageOptions(params: CreateNodeWorkflowRunnerPackageOptionsParams): NodeWorkflowRunnerPackageOptions;
874
1024
  /** Internal parameters for creating a Node workflow-level runner. */
875
1025
  interface CreateNodeWorkflowRunnerParams {
876
- /** Absolute path to the package root directory. */
877
- readonly packageRoot: string;
1026
+ /**
1027
+ * Absolute path to the directory that contains the running boot module.
1028
+ * Passed directly to `resolveWorkflowWorkerEntry` as `moduleDir`.
1029
+ */
1030
+ readonly moduleDir: string;
878
1031
  /** Default worker entry mode (`'source'` in dev, `'dist'` in builds). */
879
1032
  readonly defaultWorkerEntryMode: WorkflowWorkerEntryMode;
880
1033
  /** Optional boot-level workflow runner configuration. */
@@ -894,7 +1047,7 @@ interface CreateNodeWorkflowRunnerParams {
894
1047
  * Returns `undefined` when no runner is configured, letting the workflow engine
895
1048
  * fall back to its built-in DAG scheduler. Explicit runner modes create the
896
1049
  * matching workflow-level execution strategy.
897
- * @param params - Package root, entry mode, optional runner configuration, and optional bus.
1050
+ * @param params - Module directory, entry mode, optional runner configuration, and optional bus.
898
1051
  * @returns A workflow runner instance, or `undefined` to use the engine default.
899
1052
  */
900
1053
  declare function createNodeWorkflowRunner(params: CreateNodeWorkflowRunnerParams): IWorkflowRunner | undefined;
@@ -1130,4 +1283,4 @@ declare function loadWorkflowModules(source: Exclude<WorkflowWorkerSource, {
1130
1283
  */
1131
1284
  declare function loadWorkflowModule(source: WorkflowWorkerSource): Promise<RuntimeLoadedWorkflow>;
1132
1285
  //#endregion
1133
- export { normalizeNodeHostCapabilities as A, HttpContributionPhase as B, TransportReadyInfo as C, WorkflowWorkerEntryResolverOptions as D, WorkflowWorkerEntryMode as E, NodeFrameworkModuleResolver as F, HonoRouteGraph as H, NoopFrameworkModuleResolver as I, resolveFrameworkSpecifier as L, ShutdownStep as M, BridgeBrowserOptions as N, resolveWorkflowWorkerEntry as O, FrameworkModuleResolver as P, HttpRouteGraphBuilder as R, ServerTransportProvider as S, WorkflowRunnerBootOptions as T, HonoRouteGraphOptions as U, HttpRouteContribution as V, createHonoRouteGraph as W, WorkflowRunResult$1 as _, InProcessWorkflowRunnerOptions as a, CoreBootOptions as b, WorkerNodeRunner as c, NodeWorkflowRunnerPackageOptions as d, createNodeWorkflowRunner as f, ThinWorkflowPiscinaRunnerOptions as g, IWorkflowRunner$1 as h, InProcessWorkflowRunner as i, selectFrameworkCorePackages as j, HostCapabilityDeclaration as k, WorkerNodeRunnerOptions as l, ThinWorkflowPiscinaRunner as m, loadWorkflowModules as n, PiscinaThinWorkflowProvider as o, createNodeWorkflowRunnerPackageOptions as p, loadWorkflowFromConfig as r, PiscinaThinWorkflowProviderOptions as s, loadWorkflowModule as t, CreateNodeWorkflowRunnerPackageOptionsParams as u, BootCoordinatorSetupContext as v, UpstreamTelemetryBootOptions as w, MakaioRuntime as x, BootMakaioRuntimeOptions as y, createHttpRouteGraphBuilder as z };
1286
+ export { InitializeNodeDatabaseOptions as A, NoopFrameworkModuleResolver as B, TransportReadyInfo as C, WorkflowWorkerEntryResolverOptions as D, WorkflowWorkerEntryMode as E, selectFrameworkCorePackages as F, HttpRouteContribution as G, HttpRouteGraphBuilder as H, ShutdownStep as I, createHonoRouteGraph as J, HonoRouteGraph as K, BridgeBrowserOptions as L, initializeNodeDatabase as M, HostCapabilityDeclaration as N, resolveWorkflowWorkerEntry as O, normalizeNodeHostCapabilities as P, FrameworkModuleResolver as R, ServerTransportProvider as S, WorkflowRunnerBootOptions as T, createHttpRouteGraphBuilder as U, resolveFrameworkSpecifier as V, HttpContributionPhase as W, WorkflowRunResult$1 as _, InProcessWorkflowRunnerOptions as a, CoreBootOptions as b, WorkerNodeRunner as c, NodeWorkflowRunnerPackageOptions as d, createNodeWorkflowRunner as f, ThinWorkflowPiscinaRunnerOptions as g, IWorkflowRunner$1 as h, InProcessWorkflowRunner as i, InitializeNodeDatabaseResult as j, DatabaseBootOptions as k, WorkerNodeRunnerOptions as l, ThinWorkflowPiscinaRunner as m, loadWorkflowModules as n, PiscinaThinWorkflowProvider as o, createNodeWorkflowRunnerPackageOptions as p, HonoRouteGraphOptions as q, loadWorkflowFromConfig as r, PiscinaThinWorkflowProviderOptions as s, loadWorkflowModule as t, CreateNodeWorkflowRunnerPackageOptionsParams as u, BootCoordinatorSetupContext as v, UpstreamTelemetryBootOptions as w, MakaioRuntime as x, BootMakaioRuntimeOptions as y, NodeFrameworkModuleResolver as z };
@@ -19,8 +19,8 @@ import { ExtensionWarningEntry, ExtensionWarningEntrySchema } from "@makaio/fram
19
19
  */
20
20
  declare const ComponentStateSchema: z.ZodEnum<{
21
21
  failed: "failed";
22
- stopped: "stopped";
23
22
  active: "active";
23
+ stopped: "stopped";
24
24
  discovered: "discovered";
25
25
  skipped: "skipped";
26
26
  initializing: "initializing";
@@ -48,8 +48,8 @@ declare const ComponentInfoSchema: z.ZodObject<{
48
48
  displayName: z.ZodString;
49
49
  state: z.ZodEnum<{
50
50
  failed: "failed";
51
- stopped: "stopped";
52
51
  active: "active";
52
+ stopped: "stopped";
53
53
  discovered: "discovered";
54
54
  skipped: "skipped";
55
55
  initializing: "initializing";
@@ -69,8 +69,8 @@ declare const ServiceInfoSchema: z.ZodObject<{
69
69
  displayName: z.ZodString;
70
70
  state: z.ZodEnum<{
71
71
  failed: "failed";
72
- stopped: "stopped";
73
72
  active: "active";
73
+ stopped: "stopped";
74
74
  discovered: "discovered";
75
75
  skipped: "skipped";
76
76
  initializing: "initializing";
@@ -91,8 +91,8 @@ declare const ExtensionInfoSchema: z.ZodObject<{
91
91
  displayName: z.ZodString;
92
92
  state: z.ZodEnum<{
93
93
  failed: "failed";
94
- stopped: "stopped";
95
94
  active: "active";
95
+ stopped: "stopped";
96
96
  discovered: "discovered";
97
97
  skipped: "skipped";
98
98
  initializing: "initializing";
@@ -139,16 +139,16 @@ declare const ExtensionNamespace: _$_makaio_core0.BusNamespaceDefinition<"kernel
139
139
  displayName: z.ZodString;
140
140
  from: z.ZodEnum<{
141
141
  failed: "failed";
142
- stopped: "stopped";
143
142
  active: "active";
143
+ stopped: "stopped";
144
144
  discovered: "discovered";
145
145
  skipped: "skipped";
146
146
  initializing: "initializing";
147
147
  }>;
148
148
  to: z.ZodEnum<{
149
149
  failed: "failed";
150
- stopped: "stopped";
151
150
  active: "active";
151
+ stopped: "stopped";
152
152
  discovered: "discovered";
153
153
  skipped: "skipped";
154
154
  initializing: "initializing";
@@ -182,8 +182,8 @@ declare const ExtensionNamespace: _$_makaio_core0.BusNamespaceDefinition<"kernel
182
182
  displayName: z.ZodString;
183
183
  state: z.ZodEnum<{
184
184
  failed: "failed";
185
- stopped: "stopped";
186
185
  active: "active";
186
+ stopped: "stopped";
187
187
  discovered: "discovered";
188
188
  skipped: "skipped";
189
189
  initializing: "initializing";
@@ -220,8 +220,8 @@ declare const ExtensionNamespace: _$_makaio_core0.BusNamespaceDefinition<"kernel
220
220
  displayName: z.ZodString;
221
221
  state: z.ZodEnum<{
222
222
  failed: "failed";
223
- stopped: "stopped";
224
223
  active: "active";
224
+ stopped: "stopped";
225
225
  discovered: "discovered";
226
226
  skipped: "skipped";
227
227
  initializing: "initializing";
@@ -593,16 +593,16 @@ declare const ExtensionSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.Fla
593
593
  displayName: z.ZodString;
594
594
  from: z.ZodEnum<{
595
595
  failed: "failed";
596
- stopped: "stopped";
597
596
  active: "active";
597
+ stopped: "stopped";
598
598
  discovered: "discovered";
599
599
  skipped: "skipped";
600
600
  initializing: "initializing";
601
601
  }>;
602
602
  to: z.ZodEnum<{
603
603
  failed: "failed";
604
- stopped: "stopped";
605
604
  active: "active";
605
+ stopped: "stopped";
606
606
  discovered: "discovered";
607
607
  skipped: "skipped";
608
608
  initializing: "initializing";
@@ -636,8 +636,8 @@ declare const ExtensionSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.Fla
636
636
  displayName: z.ZodString;
637
637
  state: z.ZodEnum<{
638
638
  failed: "failed";
639
- stopped: "stopped";
640
639
  active: "active";
640
+ stopped: "stopped";
641
641
  discovered: "discovered";
642
642
  skipped: "skipped";
643
643
  initializing: "initializing";
@@ -674,8 +674,8 @@ declare const ExtensionSubjects: _$_makaio_core0.BusSubjects<_$_makaio_core0.Fla
674
674
  displayName: z.ZodString;
675
675
  state: z.ZodEnum<{
676
676
  failed: "failed";
677
- stopped: "stopped";
678
677
  active: "active";
678
+ stopped: "stopped";
679
679
  discovered: "discovered";
680
680
  skipped: "skipped";
681
681
  initializing: "initializing";
@@ -48,9 +48,9 @@ declare const MaterializationSchemas: {
48
48
  template: z.ZodString;
49
49
  }, z.core.$strip>], "kind">;
50
50
  appliesTo: z.ZodArray<z.ZodEnum<{
51
+ artifact: "artifact";
51
52
  surface: "surface";
52
53
  workpiece: "workpiece";
53
- artifact: "artifact";
54
54
  }>>;
55
55
  valueMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
56
56
  description: z.ZodOptional<z.ZodString>;
@@ -88,9 +88,9 @@ declare const MaterializationSchemas: {
88
88
  template: z.ZodString;
89
89
  }, z.core.$strip>], "kind">;
90
90
  appliesTo: z.ZodArray<z.ZodEnum<{
91
+ artifact: "artifact";
91
92
  surface: "surface";
92
93
  workpiece: "workpiece";
93
- artifact: "artifact";
94
94
  }>>;
95
95
  valueMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
96
96
  description: z.ZodOptional<z.ZodString>;
@@ -153,9 +153,9 @@ declare const MaterializationNamespace: _$_makaio_core0.BusNamespaceDefinition<"
153
153
  template: z.ZodString;
154
154
  }, z.core.$strip>], "kind">;
155
155
  appliesTo: z.ZodArray<z.ZodEnum<{
156
+ artifact: "artifact";
156
157
  surface: "surface";
157
158
  workpiece: "workpiece";
158
- artifact: "artifact";
159
159
  }>>;
160
160
  valueMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
161
161
  description: z.ZodOptional<z.ZodString>;
@@ -193,9 +193,9 @@ declare const MaterializationNamespace: _$_makaio_core0.BusNamespaceDefinition<"
193
193
  template: z.ZodString;
194
194
  }, z.core.$strip>], "kind">;
195
195
  appliesTo: z.ZodArray<z.ZodEnum<{
196
+ artifact: "artifact";
196
197
  surface: "surface";
197
198
  workpiece: "workpiece";
198
- artifact: "artifact";
199
199
  }>>;
200
200
  valueMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
201
201
  description: z.ZodOptional<z.ZodString>;
@@ -268,9 +268,9 @@ declare const MaterializationSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
268
268
  template: z.ZodString;
269
269
  }, z.core.$strip>], "kind">;
270
270
  appliesTo: z.ZodArray<z.ZodEnum<{
271
+ artifact: "artifact";
271
272
  surface: "surface";
272
273
  workpiece: "workpiece";
273
- artifact: "artifact";
274
274
  }>>;
275
275
  valueMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
276
276
  description: z.ZodOptional<z.ZodString>;
@@ -308,9 +308,9 @@ declare const MaterializationSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
308
308
  template: z.ZodString;
309
309
  }, z.core.$strip>], "kind">;
310
310
  appliesTo: z.ZodArray<z.ZodEnum<{
311
+ artifact: "artifact";
311
312
  surface: "surface";
312
313
  workpiece: "workpiece";
313
- artifact: "artifact";
314
314
  }>>;
315
315
  valueMapping: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
316
316
  description: z.ZodOptional<z.ZodString>;