adam-agent-server 1.9.0 → 1.10.0

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 (82) hide show
  1. package/dist/adam-tools-UJKLRMNR.js +1 -0
  2. package/dist/approval-handler-J6RUTICJ.js +1 -0
  3. package/dist/audit-manager-PFX36RMN.js +1 -0
  4. package/dist/bree-engine-445HR6VH.js +1 -0
  5. package/dist/channels-OOIM62BX.js +1 -0
  6. package/dist/{channels-ZNMTMMCY.js → channels-WFC26TED.js} +1 -1
  7. package/dist/{chunk-YKMWAVUH.js → chunk-2VBGTGDK.js} +8 -8
  8. package/dist/chunk-6JBSBSCL.js +1 -0
  9. package/dist/{chunk-6M2QCKAS.js → chunk-7T4B2MZ7.js} +1 -1
  10. package/dist/{chunk-UYOLAFUR.js → chunk-AMHO3ALG.js} +1 -1
  11. package/dist/{chunk-7F4SZXI2.js → chunk-AQO6IIHV.js} +13 -13
  12. package/dist/chunk-AVM3O74V.js +5 -0
  13. package/dist/{chunk-XTOOD44S.js → chunk-B44X7JAJ.js} +1 -1
  14. package/dist/{chunk-KUJFQDT5.js → chunk-B544JOZM.js} +2 -2
  15. package/dist/{chunk-VPZSOYE5.js → chunk-D5LZGIJU.js} +1 -1
  16. package/dist/{chunk-XIQVXRZH.js → chunk-ETK722ZZ.js} +4 -4
  17. package/dist/{chunk-MYVYH4PQ.js → chunk-ETOTUZPB.js} +1 -1
  18. package/dist/{chunk-TTP7QRAQ.js → chunk-FUWPDXXG.js} +1 -1
  19. package/dist/chunk-JRQQLKLU.js +145 -0
  20. package/dist/chunk-JYHOGBCP.js +12 -0
  21. package/dist/{chunk-3N7MGASP.js → chunk-MQWYGDNT.js} +1 -1
  22. package/dist/{chunk-W7U3ASGR.js → chunk-NPIXYK5G.js} +1 -1
  23. package/dist/chunk-O7XQSONJ.js +5 -0
  24. package/dist/{chunk-C2SD2NMZ.js → chunk-Q2ISNOBQ.js} +1 -1
  25. package/dist/{chunk-7WJF65TQ.js → chunk-QYRI4HYA.js} +1 -1
  26. package/dist/chunk-R2WB5BKF.js +7 -0
  27. package/dist/{chunk-6XVWIRR2.js → chunk-RMGBR3XZ.js} +1 -1
  28. package/dist/{chunk-3HZE5DQZ.js → chunk-SC2DDRYB.js} +1 -1
  29. package/dist/chunk-SZBWLHP6.js +80 -0
  30. package/dist/{chunk-YWUX3ZTO.js → chunk-U2LBBBWO.js} +1 -1
  31. package/dist/chunk-UXDTFTG5.js +10 -0
  32. package/dist/chunk-WQFNB2MQ.js +32 -0
  33. package/dist/chunk-X5V4VMET.js +26 -0
  34. package/dist/{chunk-IZ3WZHCM.js → chunk-Y5FFL6UO.js} +1 -1
  35. package/dist/{chunk-J4Y54LIC.js → chunk-Z434UGTC.js} +3 -3
  36. package/dist/{chunk-EJBGJLA2.js → chunk-ZFDULJGB.js} +1 -1
  37. package/dist/chunk-ZQ4PNKMQ.js +10 -0
  38. package/dist/cli.js +1 -1
  39. package/dist/{config-CILWJYZB.js → config-GKVOAMY2.js} +1 -1
  40. package/dist/{db-JO24ZLIN.js → db-FACSMWEY.js} +1 -1
  41. package/dist/delivery-log-JIQMHBJ5.js +1 -0
  42. package/dist/engine-OHYWUUMJ.js +1 -0
  43. package/dist/evolution-audit-M7FSYRQR.js +1 -0
  44. package/dist/index.js +21 -13
  45. package/dist/learner-OUNQSWN7.js +1 -0
  46. package/dist/{memories-LXH4VHCH.js → memories-ABE7PMQL.js} +1 -1
  47. package/dist/memory-extractor-ZX2NJIBV.js +6 -0
  48. package/dist/memory-service-UWER3T2S.js +1 -0
  49. package/dist/outbound-gateway-XDCGAXXW.js +1 -0
  50. package/dist/{presets-XR2OBXUP.js → presets-R3D4E6SK.js} +1 -1
  51. package/dist/{role-presets-DYWDEQYU.js → role-presets-7JIX34HF.js} +1 -1
  52. package/dist/role-workspace-ISGPO25D.js +1 -0
  53. package/dist/{roles-DRPLO4LY.js → roles-WNKRM6FD.js} +1 -1
  54. package/dist/session-manager-MTO4OGLM.js +1 -0
  55. package/dist/{task-templates-4DWXHLFZ.js → task-templates-SNKZJ3DI.js} +1 -1
  56. package/dist/workflow-executor-3OCSVMM5.js +1 -0
  57. package/package.json +1 -1
  58. package/dist/adam-tools-FSI5XKDL.js +0 -1
  59. package/dist/approval-handler-JYCGXQUE.js +0 -1
  60. package/dist/audit-manager-CLKTJPLM.js +0 -1
  61. package/dist/bree-engine-XJR5TKVC.js +0 -1
  62. package/dist/channels-DY2OW7YQ.js +0 -1
  63. package/dist/chunk-3IQADR6L.js +0 -144
  64. package/dist/chunk-56QP5ZHF.js +0 -79
  65. package/dist/chunk-ARQF52V6.js +0 -5
  66. package/dist/chunk-DKMF4B33.js +0 -5
  67. package/dist/chunk-KO7XBNPV.js +0 -12
  68. package/dist/chunk-LV4XLPCD.js +0 -26
  69. package/dist/chunk-OY2KVSIX.js +0 -7
  70. package/dist/chunk-PFYYS7CI.js +0 -10
  71. package/dist/chunk-QPIWPQWM.js +0 -29
  72. package/dist/chunk-UQDC3X6O.js +0 -10
  73. package/dist/delivery-log-QPQM5YU7.js +0 -1
  74. package/dist/engine-ZAPYG7G4.js +0 -1
  75. package/dist/evolution-audit-ZLYQ3ZYV.js +0 -1
  76. package/dist/learner-ACHENH6R.js +0 -1
  77. package/dist/memory-extractor-URH4YHK3.js +0 -6
  78. package/dist/memory-service-23P6VNKZ.js +0 -1
  79. package/dist/outbound-gateway-Y3P3T3VH.js +0 -1
  80. package/dist/role-workspace-LHW7AWPF.js +0 -1
  81. package/dist/session-manager-Z6K4U5X7.js +0 -1
  82. package/dist/workflow-executor-6ZMNL34C.js +0 -1
@@ -0,0 +1 @@
1
+ import{B as a,C as b,D as c}from"./chunk-SZBWLHP6.js";import"./chunk-AMHO3ALG.js";import"./chunk-JYHOGBCP.js";import"./chunk-7T4B2MZ7.js";import"./chunk-NPIXYK5G.js";import"./chunk-UXDTFTG5.js";import"./chunk-SWP2JC54.js";import"./chunk-FUWPDXXG.js";import"./chunk-X5V4VMET.js";import"./chunk-ZQ4PNKMQ.js";import"./chunk-2VBGTGDK.js";import"./chunk-Q2ISNOBQ.js";import"./chunk-S6OV7Z6K.js";import"./chunk-AVM3O74V.js";import"./chunk-R2WB5BKF.js";import"./chunk-Y5FFL6UO.js";import"./chunk-QMW7VEPC.js";import"./chunk-ETOTUZPB.js";import"./chunk-RMGBR3XZ.js";import"./chunk-L7JP7DUO.js";import"./chunk-6JBSBSCL.js";import"./chunk-D5LZGIJU.js";import"./chunk-5AUQIK3Q.js";import"./chunk-YVVKUPGL.js";import"./chunk-7IFLU3CY.js";import"./chunk-OFTIPZTH.js";import"./chunk-U2LBBBWO.js";import"./chunk-B44X7JAJ.js";import"./chunk-AQO6IIHV.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{c as createAdamTools,b as getToolsFingerprint,a as resolveDeliveryTargets};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e}from"./chunk-SC2DDRYB.js";import"./chunk-B544JOZM.js";import"./chunk-Y5FFL6UO.js";import"./chunk-L7JP7DUO.js";import"./chunk-O7XQSONJ.js";import"./chunk-6JBSBSCL.js";import"./chunk-AQO6IIHV.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{b as formatPlanForChannel,e as getPendingApprovalRequestIds,d as handleInboundForApproval,a as parseApprovalReply,c as sendApprovalToChannel};
@@ -0,0 +1 @@
1
+ import{q as a,r as b,s as c,t as d,u as e}from"./chunk-JRQQLKLU.js";import"./chunk-JYHOGBCP.js";import"./chunk-WQFNB2MQ.js";import"./chunk-7T4B2MZ7.js";import"./chunk-UXDTFTG5.js";import"./chunk-SWP2JC54.js";import"./chunk-X5V4VMET.js";import"./chunk-ZQ4PNKMQ.js";import"./chunk-N4ES7TCL.js";import"./chunk-Q2ISNOBQ.js";import"./chunk-S6OV7Z6K.js";import"./chunk-AVM3O74V.js";import"./chunk-R2WB5BKF.js";import"./chunk-QMW7VEPC.js";import"./chunk-ETOTUZPB.js";import"./chunk-RMGBR3XZ.js";import"./chunk-L7JP7DUO.js";import"./chunk-O7XQSONJ.js";import"./chunk-6JBSBSCL.js";import"./chunk-HSEP6LNQ.js";import"./chunk-D5LZGIJU.js";import"./chunk-OFTIPZTH.js";import"./chunk-U2LBBBWO.js";import"./chunk-B44X7JAJ.js";import"./chunk-AQO6IIHV.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{a as evaluateTaskCompletion,e as getSecurityPosture,d as reportViolation,b as startAuditManager,c as stopAuditManager};
@@ -0,0 +1 @@
1
+ import{b as a,c as b,d as c}from"./chunk-Z434UGTC.js";import"./chunk-FUWPDXXG.js";import"./chunk-X5V4VMET.js";import"./chunk-ZQ4PNKMQ.js";import"./chunk-ETK722ZZ.js";import"./chunk-2VBGTGDK.js";import"./chunk-N4ES7TCL.js";import"./chunk-Q2ISNOBQ.js";import"./chunk-S6OV7Z6K.js";import"./chunk-AVM3O74V.js";import"./chunk-R2WB5BKF.js";import"./chunk-B544JOZM.js";import"./chunk-Y5FFL6UO.js";import"./chunk-RMGBR3XZ.js";import"./chunk-L7JP7DUO.js";import"./chunk-O7XQSONJ.js";import"./chunk-6JBSBSCL.js";import"./chunk-D5LZGIJU.js";import"./chunk-5AUQIK3Q.js";import"./chunk-YVVKUPGL.js";import"./chunk-7IFLU3CY.js";import"./chunk-OFTIPZTH.js";import"./chunk-U2LBBBWO.js";import"./chunk-B44X7JAJ.js";import"./chunk-AQO6IIHV.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{a as BreeEngine,b as getBreeEngine,c as setBreeEngine};
@@ -0,0 +1 @@
1
+ import{c as a,d as b,e as c}from"./chunk-QYRI4HYA.js";import"./chunk-ZQ4PNKMQ.js";import"./chunk-Y5FFL6UO.js";import"./chunk-6JBSBSCL.js";import"./chunk-AQO6IIHV.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{c as channelRoutes,b as getChannelManager,a as setChannelManager};
@@ -1 +1 @@
1
- import{a,b,c,d,e,f}from"./chunk-IZ3WZHCM.js";import"./chunk-7F4SZXI2.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{a as createChannel,e as deleteChannel,b as getChannel,d as listChannels,c as updateChannel,f as updateChannelStatus};
1
+ import{a,b,c,d,e,f}from"./chunk-Y5FFL6UO.js";import"./chunk-AQO6IIHV.js";import"./chunk-WBAPIPST.js";import"./chunk-MRTJFYPR.js";import"./chunk-FCV2DPZQ.js";export{a as createChannel,e as deleteChannel,b as getChannel,d as listChannels,c as updateChannel,f as updateChannelStatus};
@@ -1,8 +1,8 @@
1
- import{k as F}from"./chunk-C2SD2NMZ.js";import{a as oe}from"./chunk-S6OV7Z6K.js";import{b as ee}from"./chunk-DKMF4B33.js";import{a as Z,b as h}from"./chunk-OY2KVSIX.js";import{e as N,f as D,j as Ae}from"./chunk-6XVWIRR2.js";import{a as Q}from"./chunk-YVVKUPGL.js";import{d as K}from"./chunk-OFTIPZTH.js";import{c as te,i as Ce,l as re,o as ne,r as xe}from"./chunk-YWUX3ZTO.js";import{b as u,d as v}from"./chunk-7F4SZXI2.js";import{a as z,h as Le}from"./chunk-WBAPIPST.js";import{c as k,h as X}from"./chunk-MRTJFYPR.js";Ce();import{homedir as Ie}from"os";import{resolve as j}from"path";import{z as g}from"zod";Le();function ie(){return[...z]}xe();Ae();var Oe=new Set(ie()),Pe=g.object({tools:g.array(g.string().refine(t=>Oe.has(t),{message:"Unknown tool"})).optional(),paths:g.array(g.object({path:g.string().refine(t=>t.startsWith("/")||t.startsWith("~"),{message:"path must be absolute or tilde-prefixed"}),access:g.enum(["ro","rw"])})).optional(),osCapabilities:g.array(g.object({id:g.enum(te),targets:g.array(g.string()).optional()})).optional(),network:g.boolean().optional(),plugins:g.array(g.string()).optional()});function ae(t){return t.startsWith("~")?t.replace(/^~/,Ie()):t}function Ne(t){let e=ae(t);return e.startsWith("/")?j(e):null}function ce(t,e){let n=[{path:j(e),access:"rw"}];for(let r of t.additionalDirectories??[])n.push({path:j(ae(r.path)),access:r.mode??"rw"});return n}function U(t,e){let n=Ne(t.path);if(!n)return!1;let r=e.filter(o=>n===o.path||n.startsWith(`${o.path}/`)).sort((o,s)=>s.path.length-o.path.length);if(r.length===0)return!1;let i=r[0];return t.access==="rw"?i.access==="rw":!0}function B(t,e){if(!t?.length)return[];let n=new Set(e??[]);return t.filter(r=>!n.has(r))}function G(t,e){if(!t?.length)return[];let n=new Set((e??[]).map(r=>r.id));return t.filter(r=>!n.has(r.id))}function W(t,e){if(!t?.length)return[];let n=new Set(e);return t.filter(r=>!n.has(r))}function H(t,e){return t?(e??[]).some(n=>n.id==="local-network"):!0}function le(t,e,n,r){let i=[];if(e.tools?.length){let o=B(e.tools,t.allowedTools).length;i.push((e.tools.length-o)/e.tools.length)}if(e.paths?.length){let o=e.paths.filter(s=>U(s,n)).length;i.push(o/e.paths.length)}if(e.osCapabilities?.length){let o=G(e.osCapabilities,t.osCapabilities).length;i.push((e.osCapabilities.length-o)/e.osCapabilities.length)}if(e.plugins?.length){let o=W(e.plugins,r).length;i.push((e.plugins.length-o)/e.plugins.length)}return e.network===!0&&i.push(H(e.network,t.osCapabilities)?1:0),i.length===0?1:i.reduce((o,s)=>o+s,0)/i.length}function De(t,e){if(!e.tools?.length||!t.approvalRequired?.length)return[];let n=new Set(t.approvalRequired),r=e.tools.filter(o=>n.has(o));if(!r.length)return[];let i=e.paths?.filter(o=>o.access==="rw").length??0;return[{code:"APPROVAL_WILL_TRIGGER",tools:r,expectedPromptCount:Math.max(r.length,i||r.length)}]}function Fe(t,e,n,r){let i=B(e.tools,t.allowedTools),o=(e.paths??[]).filter(d=>!U(d,n)),s=G(e.osCapabilities,t.osCapabilities),c=W(e.plugins,r),a={};return i.length&&(a.tools=i),o.length&&(a.paths=o),s.length&&(a.osCapabilities=s),c.length&&(a.plugins=c),e.network===!0&&!H(e.network,t.osCapabilities)&&(a.network=!0),a}function de(t,e){D(t);let n=N(t.name),r=ce(t,n),o=F(t).plugins.map(l=>l.name),s=B(e.tools,t.allowedTools);if(s.length)return{ok:!1,code:"ROLE_TOOL_MISMATCH",reason:`Missing tools: ${s.join(", ")}`,missing:{tools:s}};let c=(e.paths??[]).filter(l=>!U(l,r));if(c.length)return{ok:!1,code:"ROLE_PATH_SCOPE_MISMATCH",reason:`Missing path scope: ${c.map(l=>`${l.path} (${l.access})`).join(", ")}`,missing:{paths:c}};let a=G(e.osCapabilities,t.osCapabilities);if(a.length)return{ok:!1,code:"ROLE_OS_CAPABILITY_MISMATCH",reason:`Missing OS capabilities: ${a.map(l=>l.id).join(", ")}`,missing:{osCapabilities:a}};let d=W(e.plugins,o);return d.length?{ok:!1,code:"ROLE_PLUGIN_MISMATCH",reason:`Missing plugins: ${d.join(", ")}`,missing:{plugins:d}}:e.network===!0&&!H(e.network,t.osCapabilities)?{ok:!1,code:"ROLE_NETWORK_MISMATCH",reason:"Role lacks network capability (local-network)",missing:{network:!0}}:{ok:!0,roleId:t.id,executionProfile:t,fitScore:le(t,e,r,o),warnings:De(t,e)}}function se(t){return ne("active",100,0).filter(e=>e.source!=="system").map(e=>{D(e);let n=ce(e,N(e.name)),i=F(e).plugins.map(s=>s.name),o=de(e,t);return{role:e,evaluation:o,fitScore:le(e,t,n,i),missing:Fe(e,t,n,i)}}).sort((e,n)=>{let r=n.fitScore-e.fitScore;return r!==0?r:(n.role.performanceScore??0)-(e.role.performanceScore??0)})}async function ue(t){let{requirements:e,roleId:n,autoSelectRole:r}=t;if(!n&&!r)return{ok:!1,code:"REQUIREMENTS_MISSING",reason:"Must provide either roleId or autoSelectRole=true"};if(e){let l=Pe.safeParse(e);if(!l.success)return{ok:!1,code:"REQUIREMENTS_MISSING",reason:g.prettifyError(l.error)}}if(r&&!e)return{ok:!1,code:"REQUIREMENTS_MISSING",reason:"autoSelectRole requires a requirements object"};let i=e??{};if(n&&!r){let l=re(n);if(!l||l.status!=="active")return{ok:!1,code:"ROLE_NOT_FOUND",reason:`Role not found or not active: ${n}`};let p=de(l,i);return p.ok?(p.auditCandidates=[{roleId:l.id,name:l.name,fitScore:p.fitScore,fits:!0}],p):(e&&(p.candidates=se(e).map(S=>({roleId:S.role.id,name:S.role.name,fitScore:S.fitScore,missing:S.missing}))),p)}let o=se(e),s=o.filter(l=>l.evaluation.ok);if(!s.length)return{ok:!1,code:"ROLE_SELECTION_AMBIGUOUS",reason:"No role covers the requirements",candidates:o.map(l=>({roleId:l.role.id,name:l.role.name,fitScore:l.fitScore,missing:l.missing}))};let c=s[0],a=c.evaluation,d=s[1];return d&&d.fitScore===c.fitScore&&(a.tieBreakReason=`fitScore tie at ${c.fitScore}; chose ${c.role.name} by performanceScore`),a.auditCandidates=o.map(l=>({roleId:l.role.id,name:l.role.name,fitScore:l.fitScore,fits:l.evaluation.ok})),a}v();function L(t){return{id:t.id,roleId:t.role_id,taskType:t.task_type,name:t.name,promptTemplate:t.prompt_template,alpha:t.alpha,beta:t.beta,totalTrials:t.total_trials,avgReward:t.avg_reward??void 0,createdAt:t.created_at,updatedAt:t.updated_at??void 0}}function pe(t){u().prepare(`
1
+ import{k as F}from"./chunk-Q2ISNOBQ.js";import{a as oe}from"./chunk-S6OV7Z6K.js";import{b as ee}from"./chunk-AVM3O74V.js";import{a as Z,b as h}from"./chunk-R2WB5BKF.js";import{e as N,f as D,j as Ie}from"./chunk-RMGBR3XZ.js";import{a as Q}from"./chunk-YVVKUPGL.js";import{d as K}from"./chunk-OFTIPZTH.js";import{c as te,i as Ce,l as re,o as ne,r as xe}from"./chunk-U2LBBBWO.js";import{b as u,d as v}from"./chunk-AQO6IIHV.js";import{a as z,h as Le}from"./chunk-WBAPIPST.js";import{c as k,h as X}from"./chunk-MRTJFYPR.js";Ce();import{homedir as Ae}from"os";import{resolve as j}from"path";import{z as g}from"zod";Le();function ie(){return[...z]}xe();Ie();var Oe=new Set(ie()),Pe=g.object({tools:g.array(g.string().refine(t=>Oe.has(t),{message:"Unknown tool"})).optional(),paths:g.array(g.object({path:g.string().refine(t=>t.startsWith("/")||t.startsWith("~"),{message:"path must be absolute or tilde-prefixed"}),access:g.enum(["ro","rw"])})).optional(),osCapabilities:g.array(g.object({id:g.enum(te),targets:g.array(g.string()).optional()})).optional(),network:g.boolean().optional(),plugins:g.array(g.string()).optional()});function ae(t){return t.startsWith("~")?t.replace(/^~/,Ae()):t}function Ne(t){let e=ae(t);return e.startsWith("/")?j(e):null}function ce(t,e){let n=[{path:j(e),access:"rw"}];for(let r of t.additionalDirectories??[])n.push({path:j(ae(r.path)),access:r.mode??"rw"});return n}function U(t,e){let n=Ne(t.path);if(!n)return!1;let r=e.filter(o=>n===o.path||n.startsWith(`${o.path}/`)).sort((o,s)=>s.path.length-o.path.length);if(r.length===0)return!1;let i=r[0];return t.access==="rw"?i.access==="rw":!0}function B(t,e){if(!t?.length)return[];let n=new Set(e??[]);return t.filter(r=>!n.has(r))}function G(t,e){if(!t?.length)return[];let n=new Set((e??[]).map(r=>r.id));return t.filter(r=>!n.has(r.id))}function W(t,e){if(!t?.length)return[];let n=new Set(e);return t.filter(r=>!n.has(r))}function H(t,e){return t?(e??[]).some(n=>n.id==="local-network"):!0}function le(t,e,n,r){let i=[];if(e.tools?.length){let o=B(e.tools,t.allowedTools).length;i.push((e.tools.length-o)/e.tools.length)}if(e.paths?.length){let o=e.paths.filter(s=>U(s,n)).length;i.push(o/e.paths.length)}if(e.osCapabilities?.length){let o=G(e.osCapabilities,t.osCapabilities).length;i.push((e.osCapabilities.length-o)/e.osCapabilities.length)}if(e.plugins?.length){let o=W(e.plugins,r).length;i.push((e.plugins.length-o)/e.plugins.length)}return e.network===!0&&i.push(H(e.network,t.osCapabilities)?1:0),i.length===0?1:i.reduce((o,s)=>o+s,0)/i.length}function De(t,e){if(!e.tools?.length||!t.approvalRequired?.length)return[];let n=new Set(t.approvalRequired),r=e.tools.filter(o=>n.has(o));if(!r.length)return[];let i=e.paths?.filter(o=>o.access==="rw").length??0;return[{code:"APPROVAL_WILL_TRIGGER",tools:r,expectedPromptCount:Math.max(r.length,i||r.length)}]}function Fe(t,e,n,r){let i=B(e.tools,t.allowedTools),o=(e.paths??[]).filter(d=>!U(d,n)),s=G(e.osCapabilities,t.osCapabilities),c=W(e.plugins,r),a={};return i.length&&(a.tools=i),o.length&&(a.paths=o),s.length&&(a.osCapabilities=s),c.length&&(a.plugins=c),e.network===!0&&!H(e.network,t.osCapabilities)&&(a.network=!0),a}function de(t,e){D(t);let n=N(t.name),r=ce(t,n),o=F(t).plugins.map(l=>l.name),s=B(e.tools,t.allowedTools);if(s.length)return{ok:!1,code:"ROLE_TOOL_MISMATCH",reason:`Missing tools: ${s.join(", ")}`,missing:{tools:s}};let c=(e.paths??[]).filter(l=>!U(l,r));if(c.length)return{ok:!1,code:"ROLE_PATH_SCOPE_MISMATCH",reason:`Missing path scope: ${c.map(l=>`${l.path} (${l.access})`).join(", ")}`,missing:{paths:c}};let a=G(e.osCapabilities,t.osCapabilities);if(a.length)return{ok:!1,code:"ROLE_OS_CAPABILITY_MISMATCH",reason:`Missing OS capabilities: ${a.map(l=>l.id).join(", ")}`,missing:{osCapabilities:a}};let d=W(e.plugins,o);return d.length?{ok:!1,code:"ROLE_PLUGIN_MISMATCH",reason:`Missing plugins: ${d.join(", ")}`,missing:{plugins:d}}:e.network===!0&&!H(e.network,t.osCapabilities)?{ok:!1,code:"ROLE_NETWORK_MISMATCH",reason:"Role lacks network capability (local-network)",missing:{network:!0}}:{ok:!0,roleId:t.id,executionProfile:t,fitScore:le(t,e,r,o),warnings:De(t,e)}}function se(t){return ne("active",100,0).filter(e=>e.source!=="system").map(e=>{D(e);let n=ce(e,N(e.name)),i=F(e).plugins.map(s=>s.name),o=de(e,t);return{role:e,evaluation:o,fitScore:le(e,t,n,i),missing:Fe(e,t,n,i)}}).sort((e,n)=>{let r=n.fitScore-e.fitScore;return r!==0?r:(n.role.performanceScore??0)-(e.role.performanceScore??0)})}async function ue(t){let{requirements:e,roleId:n,autoSelectRole:r}=t;if(!n&&!r)return{ok:!1,code:"REQUIREMENTS_MISSING",reason:"Must provide either roleId or autoSelectRole=true"};if(e){let l=Pe.safeParse(e);if(!l.success)return{ok:!1,code:"REQUIREMENTS_MISSING",reason:g.prettifyError(l.error)}}if(r&&!e)return{ok:!1,code:"REQUIREMENTS_MISSING",reason:"autoSelectRole requires a requirements object"};let i=e??{};if(n&&!r){let l=re(n);if(!l||l.status!=="active")return{ok:!1,code:"ROLE_NOT_FOUND",reason:`Role not found or not active: ${n}`};let p=de(l,i);return p.ok?(p.auditCandidates=[{roleId:l.id,name:l.name,fitScore:p.fitScore,fits:!0}],p):(e&&(p.candidates=se(e).map(S=>({roleId:S.role.id,name:S.role.name,fitScore:S.fitScore,missing:S.missing}))),p)}let o=se(e),s=o.filter(l=>l.evaluation.ok);if(!s.length)return{ok:!1,code:"ROLE_SELECTION_AMBIGUOUS",reason:"No role covers the requirements",candidates:o.map(l=>({roleId:l.role.id,name:l.role.name,fitScore:l.fitScore,missing:l.missing}))};let c=s[0],a=c.evaluation,d=s[1];return d&&d.fitScore===c.fitScore&&(a.tieBreakReason=`fitScore tie at ${c.fitScore}; chose ${c.role.name} by performanceScore`),a.auditCandidates=o.map(l=>({roleId:l.role.id,name:l.role.name,fitScore:l.fitScore,fits:l.evaluation.ok})),a}v();function L(t){return{id:t.id,roleId:t.role_id,taskType:t.task_type,name:t.name,promptTemplate:t.prompt_template,alpha:t.alpha,beta:t.beta,totalTrials:t.total_trials,avgReward:t.avg_reward??void 0,createdAt:t.created_at,updatedAt:t.updated_at??void 0}}function pe(t){u().prepare(`
2
2
  INSERT INTO strategies (id, role_id, task_type, name, prompt_template,
3
3
  alpha, beta, total_trials, avg_reward, created_at, updated_at)
4
4
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
5
- `).run(t.id,t.roleId,t.taskType,t.name,t.promptTemplate,t.alpha,t.beta,t.totalTrials,t.avgReward??null,t.createdAt,t.updatedAt??null)}function ge(t){let n=u().prepare("SELECT * FROM strategies WHERE id = ?").get(t);return n?L(n):void 0}function at(t=100){return u().prepare("SELECT * FROM strategies ORDER BY created_at LIMIT ?").all(t).map(L)}function ct(t){return u().prepare("SELECT * FROM strategies WHERE role_id = ? ORDER BY created_at").all(t).map(L)}function b(t,e){return u().prepare("SELECT * FROM strategies WHERE role_id = ? AND task_type = ? ORDER BY created_at").all(t,e).map(L)}function me(t,e){u().prepare(`
5
+ `).run(t.id,t.roleId,t.taskType,t.name,t.promptTemplate,t.alpha,t.beta,t.totalTrials,t.avgReward??null,t.createdAt,t.updatedAt??null)}function ge(t){let n=u().prepare("SELECT * FROM strategies WHERE id = ?").get(t);return n?L(n):void 0}function ct(t=100){return u().prepare("SELECT * FROM strategies ORDER BY created_at LIMIT ?").all(t).map(L)}function lt(t){return u().prepare("SELECT * FROM strategies WHERE role_id = ? ORDER BY created_at").all(t).map(L)}function b(t,e){return u().prepare("SELECT * FROM strategies WHERE role_id = ? AND task_type = ? ORDER BY created_at").all(t,e).map(L)}function me(t,e){u().prepare(`
6
6
  UPDATE strategies
7
7
  SET alpha = alpha + ?,
8
8
  beta = beta + ?,
@@ -13,12 +13,12 @@ import{k as F}from"./chunk-C2SD2NMZ.js";import{a as oe}from"./chunk-S6OV7Z6K.js"
13
13
  END,
14
14
  updated_at = ?
15
15
  WHERE id = ?
16
- `).run(e,1-e,e,e,Date.now(),t)}v();function fe(t){return{id:t.id,name:t.name,description:t.description??void 0,roleId:t.role,metricType:t.metric_type,targetValue:t.target_value,currentValue:t.current_value,deadline:t.deadline,budgetUsd:t.budget_usd,status:t.status,createdAt:t.created_at,updatedAt:t.updated_at??void 0,sourceSessionId:t.source_session_id??void 0,deliverTo:t.deliver_to?JSON.parse(t.deliver_to):void 0,reportTo:t.report_to?JSON.parse(t.report_to):void 0}}function ut(t){u().prepare(`
16
+ `).run(e,1-e,e,e,Date.now(),t)}v();function fe(t){return{id:t.id,name:t.name,description:t.description??void 0,roleId:t.role,metricType:t.metric_type,targetValue:t.target_value,currentValue:t.current_value,deadline:t.deadline,budgetUsd:t.budget_usd,status:t.status,createdAt:t.created_at,updatedAt:t.updated_at??void 0,sourceSessionId:t.source_session_id??void 0,deliverTo:t.deliver_to?JSON.parse(t.deliver_to):void 0,reportTo:t.report_to?JSON.parse(t.report_to):void 0}}function pt(t){u().prepare(`
17
17
  INSERT INTO goals (id, name, description, role, metric_type, target_value,
18
18
  current_value, deadline, budget_usd, status, created_at, updated_at,
19
19
  source_session_id, deliver_to, report_to)
20
20
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
21
- `).run(t.id,t.name,t.description??null,t.roleId,t.metricType,t.targetValue,t.currentValue,t.deadline,t.budgetUsd,t.status,t.createdAt,t.updatedAt??null,t.sourceSessionId??null,t.deliverTo?JSON.stringify(t.deliverTo):null,t.reportTo?JSON.stringify(t.reportTo):null)}function he(t){let n=u().prepare("SELECT * FROM goals WHERE id = ?").get(t);return n?fe(n):void 0}function pt(t,e){let n=u(),r=[],i=[],o={name:"name",description:"description",roleId:"role",metricType:"metric_type",targetValue:"target_value",currentValue:"current_value",deadline:"deadline",budgetUsd:"budget_usd",status:"status",updatedAt:"updated_at",sourceSessionId:"source_session_id"};for(let[s,c]of Object.entries(o))s in e&&(r.push(`${c} = ?`),i.push(e[s]??null));"deliverTo"in e&&(r.push("deliver_to = ?"),i.push(JSON.stringify(e.deliverTo))),"reportTo"in e&&(r.push("report_to = ?"),i.push(JSON.stringify(e.reportTo))),r.length!==0&&(i.push(t),n.prepare(`UPDATE goals SET ${r.join(", ")} WHERE id = ?`).run(...i))}function gt(t,e=100,n=0){let r=u(),i="SELECT * FROM goals",o=[];return t&&(i+=" WHERE status = ?",o.push(t)),i+=" ORDER BY created_at DESC LIMIT ? OFFSET ?",o.push(e,n),r.prepare(i).all(...o).map(fe)}function mt(t){u().prepare("DELETE FROM goals WHERE id = ?").run(t)}var C=class{static collect(e,n){let r=h(e);if(!r)return this.emptyMetrics(e,n);let i=ee(e,500,0),o=r.completedAt&&r.startedAt?r.completedAt-r.startedAt:0,s=new Set,c=0,a=0;for(let l of i)l.type==="tool_call"&&l.toolName&&s.add(l.toolName),l.type==="error"&&c++,l.type==="approval_request"&&a++;let d={taskId:e,goalId:n,timestamp:Date.now(),durationMs:o,costUsd:r.costUsd??0,turns:r.numTurns??0,toolCount:s.size,errorCount:c,approvalCount:a,rawScore:0,isComplete:r.status==="completed"};return d.rawScore=this.computeRawScore(d),d}static computeRawScore(e){let r=1-Math.min(e.durationMs/6e5,1),o=1-Math.min(e.costUsd/5,1),c=1-Math.min(e.turns/50,1),a;e.toolCount>=3&&e.toolCount<=15?a=1:e.toolCount<3?a=e.toolCount/3:a=Math.max(0,1-(e.toolCount-15)/15);let d=e.errorCount===0?1:Math.max(0,1-e.errorCount*.2),l=Math.min(1,.5+e.approvalCount*.25);return .3*r+.2*o+.2*c+.1*a+.15*d+.05*l}static cache=new Map;static persist(e){this.cache.set(e.taskId,e)}static getCached(e){return this.cache.get(e)}static clearCache(){this.cache.clear()}static emptyMetrics(e,n){return{taskId:e,goalId:n,timestamp:Date.now(),durationMs:0,costUsd:0,turns:0,toolCount:0,errorCount:0,approvalCount:0,rawScore:0,isComplete:!1}}};v();function je(t){return{id:t.id,strategyId:t.strategy_id,goalId:t.goal_id,taskId:t.task_id??void 0,reward:t.reward??void 0,metricL2Score:t.metric_l2_score??void 0,metricL3Score:t.metric_l3_score??void 0,context:t.context??void 0,completedAt:t.completed_at}}function be(t){u().prepare(`
21
+ `).run(t.id,t.name,t.description??null,t.roleId,t.metricType,t.targetValue,t.currentValue,t.deadline,t.budgetUsd,t.status,t.createdAt,t.updatedAt??null,t.sourceSessionId??null,t.deliverTo?JSON.stringify(t.deliverTo):null,t.reportTo?JSON.stringify(t.reportTo):null)}function he(t){let n=u().prepare("SELECT * FROM goals WHERE id = ?").get(t);return n?fe(n):void 0}function gt(t,e){let n=u(),r=[],i=[],o={name:"name",description:"description",roleId:"role",metricType:"metric_type",targetValue:"target_value",currentValue:"current_value",deadline:"deadline",budgetUsd:"budget_usd",status:"status",updatedAt:"updated_at",sourceSessionId:"source_session_id"};for(let[s,c]of Object.entries(o))s in e&&(r.push(`${c} = ?`),i.push(e[s]??null));"deliverTo"in e&&(r.push("deliver_to = ?"),i.push(JSON.stringify(e.deliverTo))),"reportTo"in e&&(r.push("report_to = ?"),i.push(JSON.stringify(e.reportTo))),r.length!==0&&(i.push(t),n.prepare(`UPDATE goals SET ${r.join(", ")} WHERE id = ?`).run(...i))}function mt(t,e=100,n=0){let r=u(),i="SELECT * FROM goals",o=[];return t&&(i+=" WHERE status = ?",o.push(t)),i+=" ORDER BY created_at DESC LIMIT ? OFFSET ?",o.push(e,n),r.prepare(i).all(...o).map(fe)}function ft(t){u().prepare("DELETE FROM goals WHERE id = ?").run(t)}var C=class{static collect(e,n){let r=h(e);if(!r)return this.emptyMetrics(e,n);let i=ee(e,500,0),o=r.completedAt&&r.startedAt?r.completedAt-r.startedAt:0,s=new Set,c=0,a=0;for(let l of i)l.type==="tool_call"&&l.toolName&&s.add(l.toolName),l.type==="error"&&c++,l.type==="approval_request"&&a++;let d={taskId:e,goalId:n,timestamp:Date.now(),durationMs:o,costUsd:r.costUsd??0,turns:r.numTurns??0,toolCount:s.size,errorCount:c,approvalCount:a,rawScore:0,isComplete:r.status==="completed"};return d.rawScore=this.computeRawScore(d),d}static computeRawScore(e){let r=1-Math.min(e.durationMs/6e5,1),o=1-Math.min(e.costUsd/5,1),c=1-Math.min(e.turns/50,1),a;e.toolCount>=3&&e.toolCount<=15?a=1:e.toolCount<3?a=e.toolCount/3:a=Math.max(0,1-(e.toolCount-15)/15);let d=e.errorCount===0?1:Math.max(0,1-e.errorCount*.2),l=Math.min(1,.5+e.approvalCount*.25);return .3*r+.2*o+.2*c+.1*a+.15*d+.05*l}static cache=new Map;static persist(e){this.cache.set(e.taskId,e)}static getCached(e){return this.cache.get(e)}static clearCache(){this.cache.clear()}static emptyMetrics(e,n){return{taskId:e,goalId:n,timestamp:Date.now(),durationMs:0,costUsd:0,turns:0,toolCount:0,errorCount:0,approvalCount:0,rawScore:0,isComplete:!1}}};v();function je(t){return{id:t.id,strategyId:t.strategy_id,goalId:t.goal_id,taskId:t.task_id??void 0,reward:t.reward??void 0,metricL2Score:t.metric_l2_score??void 0,metricL3Score:t.metric_l3_score??void 0,context:t.context??void 0,completedAt:t.completed_at}}function be(t){u().prepare(`
22
22
  INSERT INTO trials (id, strategy_id, goal_id, task_id, reward,
23
23
  metric_l2_score, metric_l3_score, context, completed_at)
24
24
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -33,15 +33,15 @@ Provide:
33
33
  2. Confidence (0-1): How confident are you in this evaluation?
34
34
  3. Reasoning: Brief explanation of your scoring
35
35
 
36
- Respond in JSON: {"score": number, "confidence": number, "reasoning": "string"}`}};v();function Be(t){return{id:t.id,goalId:t.goal_id,level:t.level,parentId:t.parent_id??void 0,name:t.name,description:t.description??void 0,weight:t.weight,calibrationFactor:t.calibration_factor,createdAt:t.created_at}}function xt(t){u().prepare(`
36
+ Respond in JSON: {"score": number, "confidence": number, "reasoning": "string"}`}};v();function Be(t){return{id:t.id,goalId:t.goal_id,level:t.level,parentId:t.parent_id??void 0,name:t.name,description:t.description??void 0,weight:t.weight,calibrationFactor:t.calibration_factor,createdAt:t.created_at}}function It(t){u().prepare(`
37
37
  INSERT INTO metric_tree (id, goal_id, level, parent_id, name, description,
38
38
  weight, calibration_factor, created_at)
39
39
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
40
- `).run(t.id,t.goalId,t.level,t.parentId??null,t.name,t.description??null,t.weight,t.calibrationFactor,t.createdAt)}function Re(t){return u().prepare("SELECT * FROM metric_tree WHERE goal_id = ? ORDER BY level, created_at").all(t).map(Be)}var Ge={L0:.2,L1:.15,L2:.35,L3:.3},A=class t{goalId;nodes;children;constructor(e,n){this.goalId=e,this.nodes=new Map(n.map(r=>[r.id,r])),this.children=new Map;for(let r of n){let i=r.parentId,o=this.children.get(i)??[];o.push(r),this.children.set(i,o)}this.validateAcyclicity()}validateAcyclicity(){for(let e of this.nodes.values()){if(e.parentId&&!this.nodes.has(e.parentId))continue;let n=new Set,r=e.id;for(;r;){if(n.has(r))throw new Error(`Cycle detected in metric tree at node ${r}`);n.add(r),r=this.nodes.get(r)?.parentId}}}static buildFromGoal(e){let n=Re(e);return new t(e,n)}static fromNodes(e,n){return new t(e,n)}queryPath(e){let n=[];for(let r of this.nodes.values())r.level===e&&n.push(r);return n.sort((r,i)=>i.weight-r.weight)}aggregateScores(e,n){let r=this.queryPath(e);if(r.length===0)return 0;let i=0,o=0;for(let s of r){let c=n.get(s.id)??0,a=s.weight*s.calibrationFactor;i+=c*a,o+=a}return o>0?i/o:0}getWeightedScore(e){let n=0;for(let[r,i]of Object.entries(Ge)){let o=this.aggregateScores(r,e);n+=o*i}return Math.max(0,Math.min(1,n))}getNodeCount(){return this.nodes.size}getChildren(e){return this.children.get(e)??[]}};X();var Ut=k("agent");function Te(t,e){let n=Date.now(),r=A.buildFromGoal(t),i=new Map,o=x.collect(t);for(let a of r.queryPath("L0"))i.set(a.id,o.rawScore);let s=We(r);if(e){let a=C.collect(e,t);if(a.isComplete){for(let l of r.queryPath("L3"))i.set(l.id,a.rawScore);let d=r.getNodeCount()>0?r.getWeightedScore(i):Math.max(0,Math.min(1,a.rawScore*.65+o.rawScore*.35));return{goalId:t,taskId:e,reward:d,breakdown:{L0:o.rawScore,L1:0,L2:0,L3:a.rawScore},calibrationFactors:s,source:"objective",confidence:.9,computedAt:n}}}if(e&&!y.shouldUseObjective(e)){let d=y.evaluate(e,"general_quality"),l=o.rawScore*.5+.5*.5;return{goalId:t,taskId:e,reward:o.rawScore,breakdown:{L0:o.rawScore,L1:0,L2:0,L3:0,llmJudge:.5},calibrationFactors:s,source:"llm_judge",confidence:.4,computedAt:n}}let c=r.getNodeCount()>0?r.getWeightedScore(i):o.rawScore;return{goalId:t,reward:c,breakdown:{L0:o.rawScore,L1:0,L2:0,L3:0},calibrationFactors:s,source:"fallback",confidence:.3,computedAt:n}}function We(t){let e={L0:1,L1:1,L2:1,L3:1};for(let n of["L0","L1","L2","L3"]){let r=t.queryPath(n);r.length>0&&(e[n]=r[0].calibrationFactor)}return e}import{v4 as we}from"uuid";var M=class{static sampleBeta(e,n){let r=this.sampleGamma(e,1),i=this.sampleGamma(n,1);return r/(r+i)}static sampleGamma(e,n){if(e<1)return this.sampleGamma(e+1,n)*Math.pow(Math.random(),1/e);let r=e-1/3,i=1/Math.sqrt(9*r);for(;;){let o,s;do o=this.randn(),s=1+i*o;while(s<=0);s=s*s*s;let c=Math.random();if(c<1-.0331*o*o*o*o||Math.log(c)<.5*o*o+r*(1-s+Math.log(s)))return r*s/n}}static randn(){let e=Math.random(),n=Math.random();return Math.sqrt(-2*Math.log(e))*Math.cos(2*Math.PI*n)}static sample(e){if(e.length===0)return null;let n=null,r=-1;for(let i of e){let o=this.sampleBeta(i.alpha,i.beta);o>r&&(r=o,n=i)}return n}static getProbabilities(e,n=1e4){let r=new Map;for(let o=0;o<n;o++){let s=this.sample(e);s&&r.set(s.id,(r.get(s.id)||0)+1)}let i=new Map;for(let[o,s]of r)i.set(o,s/n);return i}};var He=5,$=20,_e=.5,I=class{static selectStrategy(e,n){let r=b(e,n);return M.sample(r)}static recordTrial(e,n,r,i,o,s,c){me(e,i),be({id:we(),strategyId:e,goalId:n,taskId:r,reward:i,metricL2Score:o,metricL3Score:s,context:c,completedAt:Date.now()})}static getStrategies(e,n){return b(e,n)}static getStrategyById(e){return ge(e)}static getPopulationStats(e,n){let r=b(e,n);if(r.length===0)return{count:0,avgTrials:0,avgReward:0,minTrials:0,maxTrials:0};let o=r.reduce((a,d)=>a+d.totalTrials,0)/r.length,s=r.filter(a=>a.avgReward!==void 0).map(a=>a.avgReward),c=s.length>0?s.reduce((a,d)=>a+d,0)/s.length:0;return{count:r.length,avgTrials:o,avgReward:c,minTrials:Math.min(...r.map(a=>a.totalTrials)),maxTrials:Math.max(...r.map(a=>a.totalTrials))}}static shouldEvolve(e,n){let r=this.getPopulationStats(e,n);return r.count<He?!0:r.count<$&&r.maxTrials>0}static addStrategy(e,n,r,i){if(b(e,n).length>=$)throw new Error(`Strategy population at maximum (${$}) for ${e}/${n}`);let s={id:`strat-${we().slice(0,8)}`,roleId:e,taskType:n,name:r,promptTemplate:i,alpha:_e,beta:_e,totalTrials:0,createdAt:Date.now()};return pe(s),s}static getTopStrategies(e,n,r=3){let o=b(e,n).filter(s=>s.totalTrials>0);return o.sort((s,c)=>(c.avgReward??0)-(s.avgReward??0)),o.slice(0,r)}static getSamplingProbabilities(e,n){let r=b(e,n);return M.getProbabilities(r)}static evaluateAndRecord(e,n,r,i,o,s){let c=Te(n,r);return this.recordTrial(e,n,r,c.reward,i,o,s),c.reward}};import{v4 as Je}from"uuid";v();import{v4 as $e}from"uuid";function ve(t){u().prepare(`
40
+ `).run(t.id,t.goalId,t.level,t.parentId??null,t.name,t.description??null,t.weight,t.calibrationFactor,t.createdAt)}function Re(t){return u().prepare("SELECT * FROM metric_tree WHERE goal_id = ? ORDER BY level, created_at").all(t).map(Be)}var Ge={L0:.2,L1:.15,L2:.35,L3:.3},I=class t{goalId;nodes;children;constructor(e,n){this.goalId=e,this.nodes=new Map(n.map(r=>[r.id,r])),this.children=new Map;for(let r of n){let i=r.parentId,o=this.children.get(i)??[];o.push(r),this.children.set(i,o)}this.validateAcyclicity()}validateAcyclicity(){for(let e of this.nodes.values()){if(e.parentId&&!this.nodes.has(e.parentId))continue;let n=new Set,r=e.id;for(;r;){if(n.has(r))throw new Error(`Cycle detected in metric tree at node ${r}`);n.add(r),r=this.nodes.get(r)?.parentId}}}static buildFromGoal(e){let n=Re(e);return new t(e,n)}static fromNodes(e,n){return new t(e,n)}queryPath(e){let n=[];for(let r of this.nodes.values())r.level===e&&n.push(r);return n.sort((r,i)=>i.weight-r.weight)}aggregateScores(e,n){let r=this.queryPath(e);if(r.length===0)return 0;let i=0,o=0;for(let s of r){let c=n.get(s.id)??0,a=s.weight*s.calibrationFactor;i+=c*a,o+=a}return o>0?i/o:0}getWeightedScore(e){let n=0;for(let[r,i]of Object.entries(Ge)){let o=this.aggregateScores(r,e);n+=o*i}return Math.max(0,Math.min(1,n))}getNodeCount(){return this.nodes.size}getChildren(e){return this.children.get(e)??[]}};X();var Bt=k("agent");function Te(t,e){let n=Date.now(),r=I.buildFromGoal(t),i=new Map,o=x.collect(t);for(let a of r.queryPath("L0"))i.set(a.id,o.rawScore);let s=We(r);if(e){let a=C.collect(e,t);if(a.isComplete){for(let l of r.queryPath("L3"))i.set(l.id,a.rawScore);let d=r.getNodeCount()>0?r.getWeightedScore(i):Math.max(0,Math.min(1,a.rawScore*.65+o.rawScore*.35));return{goalId:t,taskId:e,reward:d,breakdown:{L0:o.rawScore,L1:0,L2:0,L3:a.rawScore},calibrationFactors:s,source:"objective",confidence:.9,computedAt:n}}}if(e&&!y.shouldUseObjective(e)){let d=y.evaluate(e,"general_quality"),l=o.rawScore*.5+.5*.5;return{goalId:t,taskId:e,reward:o.rawScore,breakdown:{L0:o.rawScore,L1:0,L2:0,L3:0,llmJudge:.5},calibrationFactors:s,source:"llm_judge",confidence:.4,computedAt:n}}let c=r.getNodeCount()>0?r.getWeightedScore(i):o.rawScore;return{goalId:t,reward:c,breakdown:{L0:o.rawScore,L1:0,L2:0,L3:0},calibrationFactors:s,source:"fallback",confidence:.3,computedAt:n}}function We(t){let e={L0:1,L1:1,L2:1,L3:1};for(let n of["L0","L1","L2","L3"]){let r=t.queryPath(n);r.length>0&&(e[n]=r[0].calibrationFactor)}return e}import{v4 as we}from"uuid";var M=class{static sampleBeta(e,n){let r=this.sampleGamma(e,1),i=this.sampleGamma(n,1);return r/(r+i)}static sampleGamma(e,n){if(e<1)return this.sampleGamma(e+1,n)*Math.pow(Math.random(),1/e);let r=e-1/3,i=1/Math.sqrt(9*r);for(;;){let o,s;do o=this.randn(),s=1+i*o;while(s<=0);s=s*s*s;let c=Math.random();if(c<1-.0331*o*o*o*o||Math.log(c)<.5*o*o+r*(1-s+Math.log(s)))return r*s/n}}static randn(){let e=Math.random(),n=Math.random();return Math.sqrt(-2*Math.log(e))*Math.cos(2*Math.PI*n)}static sample(e){if(e.length===0)return null;let n=null,r=-1;for(let i of e){let o=this.sampleBeta(i.alpha,i.beta);o>r&&(r=o,n=i)}return n}static getProbabilities(e,n=1e4){let r=new Map;for(let o=0;o<n;o++){let s=this.sample(e);s&&r.set(s.id,(r.get(s.id)||0)+1)}let i=new Map;for(let[o,s]of r)i.set(o,s/n);return i}};var He=5,$=20,_e=.5,A=class{static selectStrategy(e,n){let r=b(e,n);return M.sample(r)}static recordTrial(e,n,r,i,o,s,c){me(e,i),be({id:we(),strategyId:e,goalId:n,taskId:r,reward:i,metricL2Score:o,metricL3Score:s,context:c,completedAt:Date.now()})}static getStrategies(e,n){return b(e,n)}static getStrategyById(e){return ge(e)}static getPopulationStats(e,n){let r=b(e,n);if(r.length===0)return{count:0,avgTrials:0,avgReward:0,minTrials:0,maxTrials:0};let o=r.reduce((a,d)=>a+d.totalTrials,0)/r.length,s=r.filter(a=>a.avgReward!==void 0).map(a=>a.avgReward),c=s.length>0?s.reduce((a,d)=>a+d,0)/s.length:0;return{count:r.length,avgTrials:o,avgReward:c,minTrials:Math.min(...r.map(a=>a.totalTrials)),maxTrials:Math.max(...r.map(a=>a.totalTrials))}}static shouldEvolve(e,n){let r=this.getPopulationStats(e,n);return r.count<He?!0:r.count<$&&r.maxTrials>0}static addStrategy(e,n,r,i){if(b(e,n).length>=$)throw new Error(`Strategy population at maximum (${$}) for ${e}/${n}`);let s={id:`strat-${we().slice(0,8)}`,roleId:e,taskType:n,name:r,promptTemplate:i,alpha:_e,beta:_e,totalTrials:0,createdAt:Date.now()};return pe(s),s}static getTopStrategies(e,n,r=3){let o=b(e,n).filter(s=>s.totalTrials>0);return o.sort((s,c)=>(c.avgReward??0)-(s.avgReward??0)),o.slice(0,r)}static getSamplingProbabilities(e,n){let r=b(e,n);return M.getProbabilities(r)}static evaluateAndRecord(e,n,r,i,o,s){let c=Te(n,r);return this.recordTrial(e,n,r,c.reward,i,o,s),c.reward}};import{v4 as Je}from"uuid";v();import{v4 as $e}from"uuid";function ve(t){u().prepare(`
41
41
  INSERT INTO manager_decisions
42
42
  (id, task_id, role_id, decision_type, requirements_json, fit_score, candidates_json, tie_break_reason, created_at)
43
43
  VALUES (?, ?, ?, 'admission', ?, ?, ?, ?, ?)
44
- `).run($e(),t.taskId,t.chosenRoleId,JSON.stringify(t.requirements),t.fitScore,JSON.stringify(t.candidates),t.tieBreakReason??null,Date.now())}function Ve(t){let e=t.toLowerCase(),n={coding:["code","implement","fix","debug","refactor","build"],analysis:["analyze","data","report","statistics","investigate"],content:["write","translate","summarize","content","draft"],review:["review","check","audit","evaluate","assess"],admin:["config","permission","deploy","manage"]};for(let[r,i]of Object.entries(n))if(i.some(o=>e.includes(o)))return r;return"general"}async function or(t){let{prompt:e,roleId:n,requirements:r,autoSelectRole:i,deliverTo:o,reportTo:s,toolOverrides:c,config:a,sourceSessionId:d,parentId:l,templateId:p,stepId:S}=t,O;try{O=K()}catch{O=Q}let w=Je(),ye=Ve(e),f=await ue({taskId:w,requirements:r,roleId:n,autoSelectRole:i});if(!f.ok)return{ok:!1,code:f.code,reason:f.reason,requirements:r,missing:f.missing,candidates:f.candidates};let{executionProfile:R}=f,E=f.roleId,V,q=e,P=I.selectStrategy(E,ye);P?.promptTemplate&&(q=`${P.promptTemplate}
44
+ `).run($e(),t.taskId,t.chosenRoleId,JSON.stringify(t.requirements),t.fitScore,JSON.stringify(t.candidates),t.tieBreakReason??null,Date.now())}function Ve(t){let e=t.toLowerCase(),n={coding:["code","implement","fix","debug","refactor","build"],analysis:["analyze","data","report","statistics","investigate"],content:["write","translate","summarize","content","draft"],review:["review","check","audit","evaluate","assess"],admin:["config","permission","deploy","manage"]};for(let[r,i]of Object.entries(n))if(i.some(o=>e.includes(o)))return r;return"general"}async function ir(t){let{prompt:e,roleId:n,requirements:r,autoSelectRole:i,deliverTo:o,reportTo:s,toolOverrides:c,config:a,sourceSessionId:d,parentId:l,templateId:p,stepId:S,traceId:Ye}=t,O;try{O=K()}catch{O=Q}let w=Je(),ye=Ve(e),f=await ue({taskId:w,requirements:r,roleId:n,autoSelectRole:i});if(!f.ok)return{ok:!1,code:f.code,reason:f.reason,requirements:r,missing:f.missing,candidates:f.candidates};let{executionProfile:R}=f,E=f.roleId,V,q=e,P=A.selectStrategy(E,ye);P?.promptTemplate&&(q=`${P.promptTemplate}
45
45
 
46
46
  ## Task
47
- ${e}`,V=P.id);let m=O.defaults,T={allowedTools:R.allowedTools??[],disallowedTools:R.disallowedTools??[],approvalRequired:R.approvalRequired??[],maxBudgetUsd:R.maxBudgetUsd??m.maxBudgetUsd,plugins:[]},_={allowedTools:qe(T.allowedTools,m.allowedTools),disallowedTools:J(T.disallowedTools,m.disallowedTools),approvalRequired:J(T.approvalRequired,m.approvalRequired),maxBudgetUsd:T.maxBudgetUsd>0?Math.min(T.maxBudgetUsd,m.maxBudgetUsd):m.maxBudgetUsd,plugins:J(T.plugins,m.plugins??[])},Y=_.allowedTools;c?.allowedTools&&(Y=c.allowedTools);let Me={timeout:a?.timeout??m.timeout,approvalRequired:_.approvalRequired,approvalTimeout:a?.approvalTimeout??m.approvalTimeout,allowedTools:Y,disallowedTools:c?.disallowedTools??_.disallowedTools,maxTurns:a?.maxTurns??m.maxTurns,maxBudgetUsd:_.maxBudgetUsd,mcpServers:a?.mcpServers,model:a?.model??R.model??m.model,effort:a?.effort??m.effort,settingSources:a?.settingSources??m.settingSources,workspacePath:a?.workspacePath,env:a?.env??m.env,claudeCodePath:m.claudeCodePath,plugins:a?.plugins??_.plugins,requirements:r,executionProfile:R},Ee={id:w,status:"pending",prompt:q,originalPrompt:e,roleId:E,parentId:l,templateId:p,stepId:S,deliverTo:o,reportTo:s,config:Me,sourceSessionId:d,createdAt:Date.now()};Z(Ee),f.auditCandidates&&ve({taskId:w,chosenRoleId:E,requirements:r??{},fitScore:f.fitScore,tieBreakReason:f.tieBreakReason,candidates:f.auditCandidates});let{serverBus:ke}=await import("./server-bus-GEGVMSCA.js");return ke.emit({type:"task_created",taskId:w}),{ok:!0,taskId:w,roleId:E,requirements:r??{},fitScore:f.fitScore,strategyId:V,warnings:f.warnings}}function qe(t,e){return t?.length?e?.length?t.filter(n=>e.includes(n)):t:e??[]}function J(t=[],e=[]){let n=new Set(t);for(let r of e)n.add(r);return[...n]}export{Pe as a,ce as b,U as c,De as d,se as e,ue as f,at as g,ct as h,ut as i,he as j,pt as k,gt as l,mt as m,xt as n,Te as o,I as p,or as q};
47
+ ${e}`,V=P.id);let m=O.defaults,T={allowedTools:R.allowedTools??[],disallowedTools:R.disallowedTools??[],approvalRequired:R.approvalRequired??[],maxBudgetUsd:R.maxBudgetUsd??m.maxBudgetUsd,plugins:[]},_={allowedTools:qe(T.allowedTools,m.allowedTools),disallowedTools:J(T.disallowedTools,m.disallowedTools),approvalRequired:J(T.approvalRequired,m.approvalRequired),maxBudgetUsd:T.maxBudgetUsd>0?Math.min(T.maxBudgetUsd,m.maxBudgetUsd):m.maxBudgetUsd,plugins:J(T.plugins,m.plugins??[])},Y=_.allowedTools;c?.allowedTools&&(Y=c.allowedTools);let Me={timeout:a?.timeout??m.timeout,approvalRequired:_.approvalRequired,approvalTimeout:a?.approvalTimeout??m.approvalTimeout,allowedTools:Y,disallowedTools:c?.disallowedTools??_.disallowedTools,maxTurns:a?.maxTurns??m.maxTurns,maxBudgetUsd:_.maxBudgetUsd,mcpServers:a?.mcpServers,model:a?.model??R.model??m.model,effort:a?.effort??m.effort,settingSources:a?.settingSources??m.settingSources,workspacePath:a?.workspacePath,env:a?.env??m.env,claudeCodePath:m.claudeCodePath,plugins:a?.plugins??_.plugins,requirements:r,executionProfile:R},Ee={id:w,status:"pending",prompt:q,originalPrompt:e,roleId:E,parentId:l,templateId:p,stepId:S,deliverTo:o,reportTo:s,config:Me,sourceSessionId:d,createdAt:Date.now(),traceId:t.traceId};Z(Ee),f.auditCandidates&&ve({taskId:w,chosenRoleId:E,requirements:r??{},fitScore:f.fitScore,tieBreakReason:f.tieBreakReason,candidates:f.auditCandidates});let{serverBus:ke}=await import("./server-bus-GEGVMSCA.js");return ke.emit({type:"task_created",taskId:w}),{ok:!0,taskId:w,roleId:E,requirements:r??{},fitScore:f.fitScore,strategyId:V,warnings:f.warnings}}function qe(t,e){return t?.length?e?.length?t.filter(n=>e.includes(n)):t:e??[]}function J(t=[],e=[]){let n=new Set(t);for(let r of e)n.add(r);return[...n]}export{Pe as a,ce as b,U as c,De as d,se as e,ue as f,ct as g,lt as h,pt as i,he as j,gt as k,mt as l,ft as m,It as n,Te as o,A as p,ir as q};
@@ -0,0 +1 @@
1
+ import{AsyncLocalStorage as o}from"async_hooks";import{v4 as a}from"uuid";var t=new o;function u(r,e){return t.run({traceId:a(),origin:r},e)}function T(r,e,n){return t.run({traceId:r,origin:e},n)}function g(){return t.getStore()?.traceId}export{u as a,T as b,g as c};
@@ -1,4 +1,4 @@
1
- import{b as t,d}from"./chunk-7F4SZXI2.js";d();function s(e){return{id:e.id,taskId:e.task_id,roleId:void 0,plan:JSON.parse(e.plan_json),status:e.status,approvalType:e.approval_type??void 0,deviationReport:e.deviation_report_json?JSON.parse(e.deviation_report_json):void 0,learnedRules:e.learned_rules_json?JSON.parse(e.learned_rules_json):void 0,createdAt:e.created_at,approvedAt:e.approved_at??void 0,reviewedAt:e.reviewed_at??void 0}}function p(e){t().prepare(`
1
+ import{b as t,d}from"./chunk-AQO6IIHV.js";d();function s(e){return{id:e.id,taskId:e.task_id,roleId:void 0,plan:JSON.parse(e.plan_json),status:e.status,approvalType:e.approval_type??void 0,deviationReport:e.deviation_report_json?JSON.parse(e.deviation_report_json):void 0,learnedRules:e.learned_rules_json?JSON.parse(e.learned_rules_json):void 0,createdAt:e.created_at,approvedAt:e.approved_at??void 0,reviewedAt:e.reviewed_at??void 0}}function p(e){t().prepare(`
2
2
  INSERT INTO task_plans (id, task_id, plan_json, status, approval_type,
3
3
  deviation_report_json, learned_rules_json, created_at, approved_at, reviewed_at)
4
4
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -1 +1 @@
1
- import{a as l}from"./chunk-SWP2JC54.js";import{a as h,b as u,c,d as m,e as v,f as x}from"./chunk-TTP7QRAQ.js";import{a as C}from"./chunk-LV4XLPCD.js";import{b as S,d as y}from"./chunk-UQDC3X6O.js";import{a as i}from"./chunk-L7JP7DUO.js";import{e as p}from"./chunk-5AUQIK3Q.js";import{v4 as D}from"uuid";import{v4 as I}from"uuid";function _(e){if(e.length<20)return null;let t=e.trim();return t.length>300?{content:`User request: ${t.slice(0,280)}...`,importance:3,type:"thought"}:{content:`User request: ${t}`,importance:3,type:"thought"}}function b(e){if(e.length<20)return null;let t=e.trim();return t.length>400?{content:`Assistant response: ${t.slice(0,370)}...`,importance:2,type:"event"}:{content:`Assistant response: ${t}`,importance:2,type:"event"}}function N(e){let t=S(e,200,0),s=[];for(let o of t){let r=o.role==="user"?_(o.content):b(o.content);r&&s.push(r)}return{facts:s}}function $(e){let t=e.toLowerCase().replace(/[^\w\s]/g," ").split(/\s+/).filter(s=>s.length>2);return[...new Set(t)].slice(0,20)}async function A(e,t){let{facts:s}=N(e),o=0;for(let r of s){let f=r.content.slice(0,500),g;try{g=await l(f)}catch{}let M=$(f),T={id:I(),roleId:t,type:r.type,content:f,embedding:g,keywords:M,importance:r.importance,sourceType:"session_archive",createdAt:Date.now(),lastAccessed:Date.now(),retrievedCount:0,tier:"episodic"};C(T),o++}return o}var n=new Map,a;function w(e){return`${e.type}:${e.channelId??""}:${e.chatId??""}`}function F(){n.clear();let e=m("active",1e3);for(let t of e)n.set(t.id,t)}function Q(e,t){let s=Date.now(),o={id:D(),status:"active",source:e,createdAt:s,lastActiveAt:s,messageCount:0};return h(o),n.set(o.id,o),i.emit({type:"session_created",session:o}),o}function V(e){for(let s of n.values())if(w(s.source)===w(e))return s;let t=v(e);return t&&n.set(t.id,t),t}function B(e){let t=n.get(e);return t||u(e)}function E(e){let t=Date.now();c(e,{status:"archived",archivedAt:t}),p().archiveExtractMemory&&u(e)&&A(e,"role-chat-manager").catch(()=>{}),n.delete(e),i.emit({type:"session_archived",sessionId:e})}function W(e){c(e,{status:"active",archivedAt:void 0});let t=u(e);return t&&(n.set(t.id,t),i.emit({type:"session_restored",session:t})),t}function X(e){y(e),x(e),n.delete(e),i.emit({type:"session_deleted",sessionId:e})}function Y(e){let t=Date.now();c(e,{lastActiveAt:t});let s=n.get(e);s&&(s.lastActiveAt=t)}function Z(e){let t=B(e);if(t){let s=t.messageCount+1;c(e,{messageCount:s});let o=n.get(e);o&&(o.messageCount=s)}}function ee(e){return m(e)}function P(){let t=p().sessionTimeoutMinutes*60*1e3,s=Date.now();for(let o of n.values())if(s-o.lastActiveAt>t)try{E(o.id)}catch{}}function R(e=6e4){d(),a=setInterval(P,e)}function d(){a&&(clearInterval(a),a=void 0)}function te(){return a}function se(){F(),R()}function oe(){d(),n.clear()}function ne(){d(),n.clear()}export{F as a,Q as b,V as c,B as d,E as e,W as f,X as g,Y as h,Z as i,ee as j,R as k,d as l,te as m,se as n,oe as o,ne as p};
1
+ import{a as l}from"./chunk-SWP2JC54.js";import{a as h,b as u,c,d as m,e as v,f as x}from"./chunk-FUWPDXXG.js";import{a as C}from"./chunk-X5V4VMET.js";import{b as S,d as y}from"./chunk-ZQ4PNKMQ.js";import{a as i}from"./chunk-L7JP7DUO.js";import{e as p}from"./chunk-5AUQIK3Q.js";import{v4 as D}from"uuid";import{v4 as I}from"uuid";function _(e){if(e.length<20)return null;let t=e.trim();return t.length>300?{content:`User request: ${t.slice(0,280)}...`,importance:3,type:"thought"}:{content:`User request: ${t}`,importance:3,type:"thought"}}function b(e){if(e.length<20)return null;let t=e.trim();return t.length>400?{content:`Assistant response: ${t.slice(0,370)}...`,importance:2,type:"event"}:{content:`Assistant response: ${t}`,importance:2,type:"event"}}function N(e){let t=S(e,200,0),s=[];for(let o of t){let r=o.role==="user"?_(o.content):b(o.content);r&&s.push(r)}return{facts:s}}function $(e){let t=e.toLowerCase().replace(/[^\w\s]/g," ").split(/\s+/).filter(s=>s.length>2);return[...new Set(t)].slice(0,20)}async function A(e,t){let{facts:s}=N(e),o=0;for(let r of s){let f=r.content.slice(0,500),g;try{g=await l(f)}catch{}let M=$(f),T={id:I(),roleId:t,type:r.type,content:f,embedding:g,keywords:M,importance:r.importance,sourceType:"session_archive",createdAt:Date.now(),lastAccessed:Date.now(),retrievedCount:0,tier:"episodic"};C(T),o++}return o}var n=new Map,a;function w(e){return`${e.type}:${e.channelId??""}:${e.chatId??""}`}function F(){n.clear();let e=m("active",1e3);for(let t of e)n.set(t.id,t)}function Q(e,t){let s=Date.now(),o={id:D(),status:"active",source:e,createdAt:s,lastActiveAt:s,messageCount:0};return h(o),n.set(o.id,o),i.emit({type:"session_created",session:o}),o}function V(e){for(let s of n.values())if(w(s.source)===w(e))return s;let t=v(e);return t&&n.set(t.id,t),t}function B(e){let t=n.get(e);return t||u(e)}function E(e){let t=Date.now();c(e,{status:"archived",archivedAt:t}),p().archiveExtractMemory&&u(e)&&A(e,"role-chat-manager").catch(()=>{}),n.delete(e),i.emit({type:"session_archived",sessionId:e})}function W(e){c(e,{status:"active",archivedAt:void 0});let t=u(e);return t&&(n.set(t.id,t),i.emit({type:"session_restored",session:t})),t}function X(e){y(e),x(e),n.delete(e),i.emit({type:"session_deleted",sessionId:e})}function Y(e){let t=Date.now();c(e,{lastActiveAt:t});let s=n.get(e);s&&(s.lastActiveAt=t)}function Z(e){let t=B(e);if(t){let s=t.messageCount+1;c(e,{messageCount:s});let o=n.get(e);o&&(o.messageCount=s)}}function ee(e){return m(e)}function P(){let t=p().sessionTimeoutMinutes*60*1e3,s=Date.now();for(let o of n.values())if(s-o.lastActiveAt>t)try{E(o.id)}catch{}}function R(e=6e4){d(),a=setInterval(P,e)}function d(){a&&(clearInterval(a),a=void 0)}function te(){return a}function se(){F(),R()}function oe(){d(),n.clear()}function ne(){d(),n.clear()}export{F as a,Q as b,V as c,B as d,E as e,W as f,X as g,Y as h,Z as i,ee as j,R as k,d as l,te as m,se as n,oe as o,ne as p};
@@ -1,4 +1,4 @@
1
- import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk-MRTJFYPR.js";import{c as p}from"./chunk-FCV2DPZQ.js";import X from"better-sqlite3";import{existsSync as S,mkdirSync as u}from"fs";import{dirname as g}from"path";function U(e){e.exec(`
1
+ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk-MRTJFYPR.js";import{c as p}from"./chunk-FCV2DPZQ.js";import X from"better-sqlite3";import{existsSync as u,mkdirSync as S}from"fs";import{dirname as g}from"path";function U(e){e.exec(`
2
2
  CREATE TABLE IF NOT EXISTS server_state (
3
3
  id INTEGER PRIMARY KEY CHECK(id = 1),
4
4
  sdk_session_id TEXT,
@@ -8,7 +8,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
8
8
  created_at INTEGER NOT NULL DEFAULT (unixepoch('now') * 1000),
9
9
  last_active_at INTEGER
10
10
  );
11
- `),e.prepare("PRAGMA table_info(server_state)").all().some(E=>E.name==="schema_version")||e.exec("ALTER TABLE server_state ADD COLUMN schema_version INTEGER DEFAULT 0");let o=e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0;if(o<2){let E=["delivery_log","delivery_rules","manager_decisions","skill_scores","approval_rules","task_plans","calibration_history","task_plugins","marketplaces","plugins","trials","strategies","metric_tree","goals","chat_messages","chat_sessions","channels","evolution_audit","step_logs","task_templates","memories","tasks","config","memories_fts","memories_fts_config","memories_fts_data","memories_fts_docsize","memories_fts_idx"];for(let s of E)try{e.exec(`DROP TABLE IF EXISTS ${s}`)}catch{}for(let s of["memories_fts_insert","memories_fts_delete","memories_fts_update"])try{e.exec(`DROP TRIGGER IF EXISTS ${s}`)}catch{}}if(e.exec(`
11
+ `),e.prepare("PRAGMA table_info(server_state)").all().some(s=>s.name==="schema_version")||e.exec("ALTER TABLE server_state ADD COLUMN schema_version INTEGER DEFAULT 0");let n=e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0;if(n<2){let s=["delivery_log","delivery_rules","manager_decisions","skill_scores","approval_rules","task_plans","calibration_history","task_plugins","marketplaces","plugins","trials","strategies","metric_tree","goals","chat_messages","chat_sessions","channels","evolution_audit","step_logs","task_templates","memories","tasks","config","memories_fts","memories_fts_config","memories_fts_data","memories_fts_docsize","memories_fts_idx"];for(let T of s)try{e.exec(`DROP TABLE IF EXISTS ${T}`)}catch{}for(let T of["memories_fts_insert","memories_fts_delete","memories_fts_update"])try{e.exec(`DROP TRIGGER IF EXISTS ${T}`)}catch{}}if(e.exec(`
12
12
  CREATE TABLE IF NOT EXISTS tasks (
13
13
  id TEXT PRIMARY KEY,
14
14
  parent_id TEXT,
@@ -368,7 +368,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
368
368
 
369
369
  CREATE INDEX IF NOT EXISTS idx_calibration_goal ON calibration_history(goal_id);
370
370
  CREATE INDEX IF NOT EXISTS idx_calibration_computed ON calibration_history(computed_at);
371
- `),o<2&&e.exec("UPDATE server_state SET schema_version = 2 WHERE id = 1"),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<4&&(e.exec(`
371
+ `),n<2&&e.exec("UPDATE server_state SET schema_version = 2 WHERE id = 1"),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<4&&(e.exec(`
372
372
  CREATE TABLE IF NOT EXISTS roles (
373
373
  id TEXT PRIMARY KEY,
374
374
  name TEXT NOT NULL UNIQUE,
@@ -405,7 +405,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
405
405
  bound_at INTEGER NOT NULL,
406
406
  PRIMARY KEY (role_id, plugin_id)
407
407
  );
408
- `),e.prepare("PRAGMA table_info(tasks)").all().some(s=>s.name==="role_id")||(e.exec("ALTER TABLE tasks ADD COLUMN role_id TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)")),e.exec("UPDATE server_state SET schema_version = 4 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<5&&(e.exec(`
408
+ `),e.prepare("PRAGMA table_info(tasks)").all().some(T=>T.name==="role_id")||(e.exec("ALTER TABLE tasks ADD COLUMN role_id TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)")),e.exec("UPDATE server_state SET schema_version = 4 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<5&&(e.exec(`
409
409
  DROP TABLE IF EXISTS memories;
410
410
  CREATE TABLE memories (
411
411
  id TEXT PRIMARY KEY,
@@ -466,7 +466,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
466
466
  source TEXT DEFAULT 'reflection'
467
467
  );
468
468
  CREATE INDEX IF NOT EXISTS idx_evolution_audit_role_id ON evolution_audit(role_id);
469
- `),e.exec("UPDATE server_state SET schema_version = 5 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<6&&(e.prepare("PRAGMA table_info(roles)").all().some(s=>s.name==="importance_trigger_curr")||e.exec("ALTER TABLE roles ADD COLUMN importance_trigger_curr INTEGER DEFAULT 150"),e.exec("UPDATE server_state SET schema_version = 6 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<7&&(e.prepare("PRAGMA table_info(tasks)").all().some(s=>s.name==="source_session_id")||e.exec("ALTER TABLE tasks ADD COLUMN source_session_id TEXT"),e.exec("UPDATE server_state SET schema_version = 7 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<8){let E=e.prepare("PRAGMA table_info(goals)").all();E.some(T=>T.name==="source_session_id")||e.exec("ALTER TABLE goals ADD COLUMN source_session_id TEXT"),E.some(T=>T.name==="notify_targets")||e.exec("ALTER TABLE goals ADD COLUMN notify_targets TEXT");let s=e.prepare("PRAGMA table_info(task_templates)").all();s.some(T=>T.name==="source_session_id")||e.exec("ALTER TABLE task_templates ADD COLUMN source_session_id TEXT"),s.some(T=>T.name==="notify_targets")||e.exec("ALTER TABLE task_templates ADD COLUMN notify_targets TEXT"),s.some(T=>T.name==="goal_ids")||e.exec("ALTER TABLE task_templates ADD COLUMN goal_ids TEXT"),e.exec("UPDATE goals SET status = 'active' WHERE status IN ('pending','planning','executing','evaluating','replanning')"),e.exec("UPDATE server_state SET schema_version = 8 WHERE id = 1")}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<10){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS tasks_new"),e.exec("DROP TABLE IF EXISTS chat_sessions_new"),e.exec("DROP TABLE IF EXISTS task_plans_new"),e.exec("DROP TABLE IF EXISTS task_plugins_new"),e.exec("DROP TABLE IF EXISTS approval_rules_new"),e.exec("DROP TABLE IF EXISTS manager_decisions_new"),e.exec("DROP TABLE IF EXISTS channels_new");let E=e.prepare("PRAGMA table_info(roles)").all();E.some(t=>t.name==="allowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN allowed_tools TEXT"),E.some(t=>t.name==="disallowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN disallowed_tools TEXT"),E.some(t=>t.name==="evaluation_criteria")||e.exec("ALTER TABLE roles ADD COLUMN evaluation_criteria TEXT"),E.some(t=>t.name==="execution_mode")||e.exec("ALTER TABLE roles ADD COLUMN execution_mode TEXT DEFAULT 'isolated'"),E.some(t=>t.name==="model")||e.exec("ALTER TABLE roles ADD COLUMN model TEXT"),E.some(t=>t.name==="max_budget_usd")||e.exec("ALTER TABLE roles ADD COLUMN max_budget_usd REAL"),E.some(t=>t.name==="approval_required")||e.exec("ALTER TABLE roles ADD COLUMN approval_required TEXT"),E.some(t=>t.name==="source")||e.exec("ALTER TABLE roles ADD COLUMN source TEXT DEFAULT 'system'"),e.exec("DROP TABLE IF EXISTS agents"),e.exec("DROP TABLE IF EXISTS role_skills"),e.exec(`
469
+ `),e.exec("UPDATE server_state SET schema_version = 5 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<6&&(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="importance_trigger_curr")||e.exec("ALTER TABLE roles ADD COLUMN importance_trigger_curr INTEGER DEFAULT 150"),e.exec("UPDATE server_state SET schema_version = 6 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<7&&(e.prepare("PRAGMA table_info(tasks)").all().some(T=>T.name==="source_session_id")||e.exec("ALTER TABLE tasks ADD COLUMN source_session_id TEXT"),e.exec("UPDATE server_state SET schema_version = 7 WHERE id = 1")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<8){let s=e.prepare("PRAGMA table_info(goals)").all();s.some(E=>E.name==="source_session_id")||e.exec("ALTER TABLE goals ADD COLUMN source_session_id TEXT"),s.some(E=>E.name==="notify_targets")||e.exec("ALTER TABLE goals ADD COLUMN notify_targets TEXT");let T=e.prepare("PRAGMA table_info(task_templates)").all();T.some(E=>E.name==="source_session_id")||e.exec("ALTER TABLE task_templates ADD COLUMN source_session_id TEXT"),T.some(E=>E.name==="notify_targets")||e.exec("ALTER TABLE task_templates ADD COLUMN notify_targets TEXT"),T.some(E=>E.name==="goal_ids")||e.exec("ALTER TABLE task_templates ADD COLUMN goal_ids TEXT"),e.exec("UPDATE goals SET status = 'active' WHERE status IN ('pending','planning','executing','evaluating','replanning')"),e.exec("UPDATE server_state SET schema_version = 8 WHERE id = 1")}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<10){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS tasks_new"),e.exec("DROP TABLE IF EXISTS chat_sessions_new"),e.exec("DROP TABLE IF EXISTS task_plans_new"),e.exec("DROP TABLE IF EXISTS task_plugins_new"),e.exec("DROP TABLE IF EXISTS approval_rules_new"),e.exec("DROP TABLE IF EXISTS manager_decisions_new"),e.exec("DROP TABLE IF EXISTS channels_new");let s=e.prepare("PRAGMA table_info(roles)").all();s.some(t=>t.name==="allowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN allowed_tools TEXT"),s.some(t=>t.name==="disallowed_tools")||e.exec("ALTER TABLE roles ADD COLUMN disallowed_tools TEXT"),s.some(t=>t.name==="evaluation_criteria")||e.exec("ALTER TABLE roles ADD COLUMN evaluation_criteria TEXT"),s.some(t=>t.name==="execution_mode")||e.exec("ALTER TABLE roles ADD COLUMN execution_mode TEXT DEFAULT 'isolated'"),s.some(t=>t.name==="model")||e.exec("ALTER TABLE roles ADD COLUMN model TEXT"),s.some(t=>t.name==="max_budget_usd")||e.exec("ALTER TABLE roles ADD COLUMN max_budget_usd REAL"),s.some(t=>t.name==="approval_required")||e.exec("ALTER TABLE roles ADD COLUMN approval_required TEXT"),s.some(t=>t.name==="source")||e.exec("ALTER TABLE roles ADD COLUMN source TEXT DEFAULT 'system'"),e.exec("DROP TABLE IF EXISTS agents"),e.exec("DROP TABLE IF EXISTS role_skills"),e.exec(`
470
470
  CREATE TABLE IF NOT EXISTS tasks_new (
471
471
  id TEXT PRIMARY KEY,
472
472
  parent_id TEXT,
@@ -491,7 +491,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
491
491
  num_turns INTEGER,
492
492
  total_duration_ms INTEGER
493
493
  );
494
- `);let s=new Set(["id","status","prompt","config","created_at"]),T=["id","parent_id","status","prompt","config","result","error","sdk_session_id","template_id","original_prompt","role_id","source_session_id","notify_targets","deliver_to","report_to","created_at","started_at","completed_at","cost_usd","token_usage","num_turns","total_duration_ms"],r=new Set(e.prepare("PRAGMA table_info(tasks)").all().map(t=>t.name)),i=T.map(t=>r.has(t)?s.has(t)?`COALESCE(${t}, '')`:t:"NULL").join(",");e.exec(`INSERT INTO tasks_new SELECT ${i} FROM tasks`),e.exec("DROP TABLE tasks"),e.exec("ALTER TABLE tasks_new RENAME TO tasks"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON tasks(created_at)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_template_id ON tasks(template_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)"),e.exec(`
494
+ `);let T=new Set(["id","status","prompt","config","created_at"]),E=["id","parent_id","status","prompt","config","result","error","sdk_session_id","template_id","original_prompt","role_id","source_session_id","notify_targets","deliver_to","report_to","created_at","started_at","completed_at","cost_usd","token_usage","num_turns","total_duration_ms"],r=new Set(e.prepare("PRAGMA table_info(tasks)").all().map(t=>t.name)),i=E.map(t=>r.has(t)?T.has(t)?`COALESCE(${t}, '')`:t:"NULL").join(",");e.exec(`INSERT INTO tasks_new SELECT ${i} FROM tasks`),e.exec("DROP TABLE tasks"),e.exec("ALTER TABLE tasks_new RENAME TO tasks"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON tasks(created_at)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_template_id ON tasks(template_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_tasks_role_id ON tasks(role_id)"),e.exec(`
495
495
  CREATE TABLE IF NOT EXISTS chat_sessions_new (
496
496
  id TEXT PRIMARY KEY,
497
497
  status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'archived')),
@@ -567,7 +567,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
567
567
  bound_at INTEGER NOT NULL,
568
568
  PRIMARY KEY (role_id, plugin_id)
569
569
  );
570
- `),e.exec("UPDATE server_state SET schema_version = 10 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(o<11){try{e.exec("ALTER TABLE task_templates RENAME COLUMN skill_preference TO role_preference")}catch(E){let s=e.prepare("PRAGMA table_info(task_templates)").all(),T=s.some(i=>i.name==="role_preference"),r=s.some(i=>i.name==="skill_preference");if(!T&&r)throw E}e.exec("UPDATE server_state SET schema_version = 11 WHERE id = 1")}if(o<12&&(e.prepare("PRAGMA table_info(server_state)").all().some(s=>s.name==="tools_fingerprint")||e.exec("ALTER TABLE server_state ADD COLUMN tools_fingerprint TEXT"),e.exec("UPDATE server_state SET schema_version = 12 WHERE id = 1")),o<13&&(e.prepare("PRAGMA table_info(roles)").all().some(s=>s.name==="additional_directories")||e.exec("ALTER TABLE roles ADD COLUMN additional_directories TEXT"),e.exec("UPDATE server_state SET schema_version = 13 WHERE id = 1")),o<14){let E=e.prepare("PRAGMA table_info(roles)").all();E.some(r=>r.name==="allowed_channels")||e.exec("ALTER TABLE roles ADD COLUMN allowed_channels TEXT"),E.some(r=>r.name==="mcp_servers")||e.exec("ALTER TABLE roles ADD COLUMN mcp_servers TEXT");let s=e.prepare("PRAGMA table_info(tasks)").all();s.some(r=>r.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),s.some(r=>r.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(goals)").all().some(r=>r.name==="deliver_to")||e.exec("ALTER TABLE goals ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 14 WHERE id = 1")}if(o<15&&(e.prepare("PRAGMA table_info(roles)").all().some(s=>s.name==="inherit_user_settings")||e.exec("ALTER TABLE roles ADD COLUMN inherit_user_settings INTEGER DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 15 WHERE id = 1")),o<16&&(e.prepare("PRAGMA table_info(task_templates)").all().some(s=>s.name==="deliver_to")||e.exec("ALTER TABLE task_templates ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 16 WHERE id = 1")),o<17){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS plugins"),e.exec("DROP TABLE IF EXISTS role_plugins"),e.exec("DROP TABLE IF EXISTS marketplaces"),e.exec("DROP INDEX IF EXISTS idx_plugins_source"),e.exec("DROP INDEX IF EXISTS idx_plugins_enabled");try{let T=e.prepare("SELECT id, additional_directories FROM roles WHERE additional_directories IS NOT NULL").all();for(let r of T)try{let i=JSON.parse(r.additional_directories);if(i.length>0&&typeof i[0]=="object"&&i[0]!==null&&"path"in i[0])continue;let n=i.map(_=>typeof _=="string"?{path:_}:_);e.prepare("UPDATE roles SET additional_directories = ? WHERE id = ?").run(JSON.stringify(n),r.id)}catch{}}catch{}let E=e.prepare("PRAGMA table_info(tasks)").all();E.some(T=>T.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),E.some(T=>T.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let s=e.prepare("PRAGMA table_info(strategies)").all();s.some(T=>T.name==="role")&&!s.some(T=>T.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 17 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(o<18){let E=e.prepare("PRAGMA table_info(tasks)").all();E.some(T=>T.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),E.some(T=>T.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let s=e.prepare("PRAGMA table_info(strategies)").all();s.some(T=>T.name==="role")&&!s.some(T=>T.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 18 WHERE id = 1")}e.prepare("PRAGMA table_info(delivery_log)").all().some(E=>E.name==="source")||(e.exec(`
570
+ `),e.exec("UPDATE server_state SET schema_version = 10 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(n<11){try{e.exec("ALTER TABLE task_templates RENAME COLUMN skill_preference TO role_preference")}catch(s){let T=e.prepare("PRAGMA table_info(task_templates)").all(),E=T.some(i=>i.name==="role_preference"),r=T.some(i=>i.name==="skill_preference");if(!E&&r)throw s}e.exec("UPDATE server_state SET schema_version = 11 WHERE id = 1")}if(n<12&&(e.prepare("PRAGMA table_info(server_state)").all().some(T=>T.name==="tools_fingerprint")||e.exec("ALTER TABLE server_state ADD COLUMN tools_fingerprint TEXT"),e.exec("UPDATE server_state SET schema_version = 12 WHERE id = 1")),n<13&&(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="additional_directories")||e.exec("ALTER TABLE roles ADD COLUMN additional_directories TEXT"),e.exec("UPDATE server_state SET schema_version = 13 WHERE id = 1")),n<14){let s=e.prepare("PRAGMA table_info(roles)").all();s.some(r=>r.name==="allowed_channels")||e.exec("ALTER TABLE roles ADD COLUMN allowed_channels TEXT"),s.some(r=>r.name==="mcp_servers")||e.exec("ALTER TABLE roles ADD COLUMN mcp_servers TEXT");let T=e.prepare("PRAGMA table_info(tasks)").all();T.some(r=>r.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),T.some(r=>r.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(goals)").all().some(r=>r.name==="deliver_to")||e.exec("ALTER TABLE goals ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 14 WHERE id = 1")}if(n<15&&(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="inherit_user_settings")||e.exec("ALTER TABLE roles ADD COLUMN inherit_user_settings INTEGER DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 15 WHERE id = 1")),n<16&&(e.prepare("PRAGMA table_info(task_templates)").all().some(T=>T.name==="deliver_to")||e.exec("ALTER TABLE task_templates ADD COLUMN deliver_to TEXT"),e.exec("UPDATE server_state SET schema_version = 16 WHERE id = 1")),n<17){e.exec("PRAGMA foreign_keys = OFF"),e.exec("DROP TABLE IF EXISTS plugins"),e.exec("DROP TABLE IF EXISTS role_plugins"),e.exec("DROP TABLE IF EXISTS marketplaces"),e.exec("DROP INDEX IF EXISTS idx_plugins_source"),e.exec("DROP INDEX IF EXISTS idx_plugins_enabled");try{let E=e.prepare("SELECT id, additional_directories FROM roles WHERE additional_directories IS NOT NULL").all();for(let r of E)try{let i=JSON.parse(r.additional_directories);if(i.length>0&&typeof i[0]=="object"&&i[0]!==null&&"path"in i[0])continue;let o=i.map(_=>typeof _=="string"?{path:_}:_);e.prepare("UPDATE roles SET additional_directories = ? WHERE id = ?").run(JSON.stringify(o),r.id)}catch{}}catch{}let s=e.prepare("PRAGMA table_info(tasks)").all();s.some(E=>E.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),s.some(E=>E.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let T=e.prepare("PRAGMA table_info(strategies)").all();T.some(E=>E.name==="role")&&!T.some(E=>E.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 17 WHERE id = 1"),e.exec("PRAGMA foreign_keys = ON")}if(n<18){let s=e.prepare("PRAGMA table_info(tasks)").all();s.some(E=>E.name==="deliver_to")||e.exec("ALTER TABLE tasks ADD COLUMN deliver_to TEXT"),s.some(E=>E.name==="report_to")||e.exec("ALTER TABLE tasks ADD COLUMN report_to TEXT");let T=e.prepare("PRAGMA table_info(strategies)").all();T.some(E=>E.name==="role")&&!T.some(E=>E.name==="role_id")&&(e.exec("ALTER TABLE strategies RENAME COLUMN role TO role_id"),e.exec("DROP INDEX IF EXISTS idx_strategies_role_task_type"),e.exec("DROP INDEX IF EXISTS idx_strategies_role"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_strategies_role_task_type ON strategies(role_id, task_type, name)"),e.exec("CREATE INDEX IF NOT EXISTS idx_strategies_role ON strategies(role_id)")),e.exec("UPDATE server_state SET schema_version = 18 WHERE id = 1")}e.prepare("PRAGMA table_info(delivery_log)").all().some(s=>s.name==="source")||(e.exec(`
571
571
  CREATE TABLE IF NOT EXISTS delivery_log_new (
572
572
  id TEXT PRIMARY KEY,
573
573
  rule_id TEXT REFERENCES delivery_rules(id),
@@ -584,7 +584,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
584
584
  message_type TEXT
585
585
  )
586
586
  `),e.exec(`INSERT INTO delivery_log_new (id, rule_id, task_id, status, target, content, attempts, error, created_at, delivered_at, expires_at)
587
- SELECT id, rule_id, task_id, status, target, content, attempts, error, created_at, delivered_at, expires_at FROM delivery_log`),e.exec("DROP TABLE delivery_log"),e.exec("ALTER TABLE delivery_log_new RENAME TO delivery_log"),e.exec("CREATE INDEX IF NOT EXISTS idx_delivery_log_rule ON delivery_log(rule_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_delivery_log_task ON delivery_log(task_id)")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<20&&(e.prepare("PRAGMA table_info(goals)").all().some(T=>T.name==="report_to")||e.exec("ALTER TABLE goals ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(task_templates)").all().some(T=>T.name==="report_to")||e.exec("ALTER TABLE task_templates ADD COLUMN report_to TEXT"),e.exec("UPDATE goals SET report_to = notify_targets WHERE notify_targets IS NOT NULL"),e.exec("UPDATE task_templates SET report_to = notify_targets WHERE notify_targets IS NOT NULL"),e.exec("UPDATE server_state SET schema_version = 20 WHERE id = 1")),e.prepare("PRAGMA table_info(config)").all().some(E=>E.name==="updated_at")||(e.exec("ALTER TABLE config ADD COLUMN updated_at INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 21 WHERE id = 1"));let L=e.prepare("PRAGMA table_info(memories)").all();L.some(E=>E.name==="tier")||(e.exec("ALTER TABLE memories ADD COLUMN tier TEXT NOT NULL DEFAULT 'episodic'"),e.exec("CREATE INDEX IF NOT EXISTS idx_memories_tier ON memories(tier)")),L.some(E=>E.name==="superseded_by")||(e.exec("ALTER TABLE memories ADD COLUMN superseded_by TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_memories_superseded ON memories(superseded_by)"));let d=e.prepare("PRAGMA table_info(memories)").all();d.some(E=>E.name==="tier")&&d.some(E=>E.name==="superseded_by")&&(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<22&&e.exec("UPDATE server_state SET schema_version = 22 WHERE id = 1");{let E=e.prepare("PRAGMA table_info(roles)").all();E.some(T=>T.name==="permission_mode")||e.exec("ALTER TABLE roles ADD COLUMN permission_mode TEXT DEFAULT NULL"),E.some(T=>T.name==="allowed_bash_patterns")||e.exec("ALTER TABLE roles ADD COLUMN allowed_bash_patterns TEXT DEFAULT NULL"),E.some(T=>T.name==="denied_bash_patterns")||e.exec("ALTER TABLE roles ADD COLUMN denied_bash_patterns TEXT DEFAULT NULL"),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<23&&e.exec("UPDATE server_state SET schema_version = 23 WHERE id = 1")}if(e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="env_vars")||e.prepare("ALTER TABLE roles ADD COLUMN env_vars TEXT DEFAULT NULL").run(),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<24&&e.prepare("UPDATE server_state SET schema_version = 24 WHERE id = 1").run(),o<25&&(e.exec(`
587
+ SELECT id, rule_id, task_id, status, target, content, attempts, error, created_at, delivered_at, expires_at FROM delivery_log`),e.exec("DROP TABLE delivery_log"),e.exec("ALTER TABLE delivery_log_new RENAME TO delivery_log"),e.exec("CREATE INDEX IF NOT EXISTS idx_delivery_log_rule ON delivery_log(rule_id)"),e.exec("CREATE INDEX IF NOT EXISTS idx_delivery_log_task ON delivery_log(task_id)")),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<20&&(e.prepare("PRAGMA table_info(goals)").all().some(E=>E.name==="report_to")||e.exec("ALTER TABLE goals ADD COLUMN report_to TEXT"),e.prepare("PRAGMA table_info(task_templates)").all().some(E=>E.name==="report_to")||e.exec("ALTER TABLE task_templates ADD COLUMN report_to TEXT"),e.exec("UPDATE goals SET report_to = notify_targets WHERE notify_targets IS NOT NULL"),e.exec("UPDATE task_templates SET report_to = notify_targets WHERE notify_targets IS NOT NULL"),e.exec("UPDATE server_state SET schema_version = 20 WHERE id = 1")),e.prepare("PRAGMA table_info(config)").all().some(s=>s.name==="updated_at")||(e.exec("ALTER TABLE config ADD COLUMN updated_at INTEGER NOT NULL DEFAULT 0"),e.exec("UPDATE server_state SET schema_version = 21 WHERE id = 1"));let L=e.prepare("PRAGMA table_info(memories)").all();L.some(s=>s.name==="tier")||(e.exec("ALTER TABLE memories ADD COLUMN tier TEXT NOT NULL DEFAULT 'episodic'"),e.exec("CREATE INDEX IF NOT EXISTS idx_memories_tier ON memories(tier)")),L.some(s=>s.name==="superseded_by")||(e.exec("ALTER TABLE memories ADD COLUMN superseded_by TEXT"),e.exec("CREATE INDEX IF NOT EXISTS idx_memories_superseded ON memories(superseded_by)"));let d=e.prepare("PRAGMA table_info(memories)").all();d.some(s=>s.name==="tier")&&d.some(s=>s.name==="superseded_by")&&(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<22&&e.exec("UPDATE server_state SET schema_version = 22 WHERE id = 1");{let s=e.prepare("PRAGMA table_info(roles)").all();s.some(E=>E.name==="permission_mode")||e.exec("ALTER TABLE roles ADD COLUMN permission_mode TEXT DEFAULT NULL"),s.some(E=>E.name==="allowed_bash_patterns")||e.exec("ALTER TABLE roles ADD COLUMN allowed_bash_patterns TEXT DEFAULT NULL"),s.some(E=>E.name==="denied_bash_patterns")||e.exec("ALTER TABLE roles ADD COLUMN denied_bash_patterns TEXT DEFAULT NULL"),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<23&&e.exec("UPDATE server_state SET schema_version = 23 WHERE id = 1")}if(e.prepare("PRAGMA table_info(roles)").all().some(E=>E.name==="env_vars")||e.prepare("ALTER TABLE roles ADD COLUMN env_vars TEXT DEFAULT NULL").run(),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<24&&e.prepare("UPDATE server_state SET schema_version = 24 WHERE id = 1").run(),n<25&&(e.exec(`
588
588
  CREATE TABLE IF NOT EXISTS workflow_executions (
589
589
  id TEXT PRIMARY KEY,
590
590
  template_id TEXT NOT NULL,
@@ -595,7 +595,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
595
595
  error TEXT,
596
596
  FOREIGN KEY (template_id) REFERENCES task_templates(id)
597
597
  )
598
- `),e.exec("UPDATE server_state SET schema_version = 25 WHERE id = 1")),o<26){let E=`
598
+ `),e.exec("UPDATE server_state SET schema_version = 25 WHERE id = 1")),n<26){let s=`
599
599
  CREATE TABLE IF NOT EXISTS workflow_artifacts (
600
600
  id TEXT PRIMARY KEY,
601
601
  execution_id TEXT NOT NULL,
@@ -614,7 +614,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
614
614
  ON workflow_artifacts (execution_id);
615
615
  CREATE INDEX IF NOT EXISTS idx_workflow_artifacts_step
616
616
  ON workflow_artifacts (execution_id, step_id);
617
- `,s=`
617
+ `,T=`
618
618
  CREATE TABLE IF NOT EXISTS artifact_access_log (
619
619
  id INTEGER PRIMARY KEY AUTOINCREMENT,
620
620
  timestamp INTEGER NOT NULL,
@@ -633,7 +633,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
633
633
  ON artifact_access_log (execution_id, timestamp);
634
634
  CREATE INDEX IF NOT EXISTS idx_artifact_access_log_role
635
635
  ON artifact_access_log (role_id, timestamp);
636
- `;e.exec(E),e.exec(s),e.prepare("PRAGMA table_info(tasks)").all().some(r=>r.name==="step_id")||e.prepare("ALTER TABLE tasks ADD COLUMN step_id TEXT").run(),e.exec("UPDATE server_state SET schema_version = 26 WHERE id = 1")}e.prepare("PRAGMA table_info(roles)").all().some(T=>T.name==="os_capabilities")||e.prepare("ALTER TABLE roles ADD COLUMN os_capabilities TEXT DEFAULT NULL").run(),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<27&&e.prepare("UPDATE server_state SET schema_version = 27 WHERE id = 1").run();{let E=e.prepare("PRAGMA table_info(manager_decisions)").all();E.some(T=>T.name==="requirements_json")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN requirements_json TEXT").run(),E.some(T=>T.name==="fit_score")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN fit_score REAL").run(),E.some(T=>T.name==="candidates_json")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN candidates_json TEXT").run(),E.some(T=>T.name==="tie_break_reason")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN tie_break_reason TEXT").run(),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<28&&e.prepare("UPDATE server_state SET schema_version = 28 WHERE id = 1").run()}{let E=[[/\brm -rf\b/,["rm -rf *"]],[/^git push/,["git push*"]],[/^git reset/,["git reset*"]],[/\bcurl.*POST\b/i,["curl * -X POST*","curl * --request POST*"]]],s=e.prepare("SELECT key, value FROM config WHERE key = 'defaults.approvalRequired'").all();for(let T of s)try{let r=JSON.parse(T.value),i=[];for(let _ of r){let a=!1;for(let[A,t]of E)if(A.test(_)){i.push(...t),a=!0,l.info({from:_,to:t},"Config: migrated approvalRequired pattern from regex to glob");break}a||(/[.+?^${}()|[\]\\]/.test(_)&&l.warn({pattern:_},"Config: approvalRequired pattern contains regex metacharacters that won't work with glob matching; update to glob syntax (use * for wildcards)"),i.push(_))}let n=[...new Set(i)];e.prepare("UPDATE config SET value = ?, updated_at = ? WHERE key = ?").run(JSON.stringify(n),Date.now(),T.key)}catch{}}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<31){let s=e.prepare("SELECT count(*) AS n FROM task_templates WHERE trigger_type IN ('event', 'task_complete')").get();s.n>0&&l.info({legacyCount:s.n},"normalizing legacy template trigger types"),e.prepare("UPDATE task_templates SET trigger_type='workflow_complete' WHERE trigger_type='event' AND trigger_event LIKE 'workflow_complete:%'").run(),e.prepare("UPDATE task_templates SET trigger_type='template_complete' WHERE trigger_type='event'").run(),e.prepare("UPDATE task_templates SET trigger_type='manual' WHERE trigger_type='task_complete'").run();let T=e.prepare("SELECT count(*) AS n FROM task_templates WHERE trigger_type IN ('event', 'task_complete')").get();T.n>0&&l.warn({orphan:T.n},"migration left orphan legacy trigger_type rows; manual inspection required"),e.prepare("UPDATE server_state SET schema_version = 31 WHERE id = 1").run()}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<32&&(e.exec(`
636
+ `;e.exec(s),e.exec(T),e.prepare("PRAGMA table_info(tasks)").all().some(r=>r.name==="step_id")||e.prepare("ALTER TABLE tasks ADD COLUMN step_id TEXT").run(),e.exec("UPDATE server_state SET schema_version = 26 WHERE id = 1")}e.prepare("PRAGMA table_info(roles)").all().some(E=>E.name==="os_capabilities")||e.prepare("ALTER TABLE roles ADD COLUMN os_capabilities TEXT DEFAULT NULL").run(),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<27&&e.prepare("UPDATE server_state SET schema_version = 27 WHERE id = 1").run();{let s=e.prepare("PRAGMA table_info(manager_decisions)").all();s.some(E=>E.name==="requirements_json")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN requirements_json TEXT").run(),s.some(E=>E.name==="fit_score")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN fit_score REAL").run(),s.some(E=>E.name==="candidates_json")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN candidates_json TEXT").run(),s.some(E=>E.name==="tie_break_reason")||e.prepare("ALTER TABLE manager_decisions ADD COLUMN tie_break_reason TEXT").run(),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<28&&e.prepare("UPDATE server_state SET schema_version = 28 WHERE id = 1").run()}{let s=[[/\brm -rf\b/,["rm -rf *"]],[/^git push/,["git push*"]],[/^git reset/,["git reset*"]],[/\bcurl.*POST\b/i,["curl * -X POST*","curl * --request POST*"]]],T=e.prepare("SELECT key, value FROM config WHERE key = 'defaults.approvalRequired'").all();for(let E of T)try{let r=JSON.parse(E.value),i=[];for(let _ of r){let a=!1;for(let[A,t]of s)if(A.test(_)){i.push(...t),a=!0,l.info({from:_,to:t},"Config: migrated approvalRequired pattern from regex to glob");break}a||(/[.+?^${}()|[\]\\]/.test(_)&&l.warn({pattern:_},"Config: approvalRequired pattern contains regex metacharacters that won't work with glob matching; update to glob syntax (use * for wildcards)"),i.push(_))}let o=[...new Set(i)];e.prepare("UPDATE config SET value = ?, updated_at = ? WHERE key = ?").run(JSON.stringify(o),Date.now(),E.key)}catch{}}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<31){let T=e.prepare("SELECT count(*) AS n FROM task_templates WHERE trigger_type IN ('event', 'task_complete')").get();T.n>0&&l.info({legacyCount:T.n},"normalizing legacy template trigger types"),e.prepare("UPDATE task_templates SET trigger_type='workflow_complete' WHERE trigger_type='event' AND trigger_event LIKE 'workflow_complete:%'").run(),e.prepare("UPDATE task_templates SET trigger_type='template_complete' WHERE trigger_type='event'").run(),e.prepare("UPDATE task_templates SET trigger_type='manual' WHERE trigger_type='task_complete'").run();let E=e.prepare("SELECT count(*) AS n FROM task_templates WHERE trigger_type IN ('event', 'task_complete')").get();E.n>0&&l.warn({orphan:E.n},"migration left orphan legacy trigger_type rows; manual inspection required"),e.prepare("UPDATE server_state SET schema_version = 31 WHERE id = 1").run()}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<32&&(e.exec(`
637
637
  CREATE TABLE IF NOT EXISTS event_defs (
638
638
  id TEXT PRIMARY KEY, name TEXT NOT NULL, source_type TEXT NOT NULL,
639
639
  source_config TEXT NOT NULL, enabled INTEGER NOT NULL DEFAULT 1,
@@ -652,7 +652,7 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
652
652
  CREATE UNIQUE INDEX IF NOT EXISTS idx_events_dedup ON events(source, dedup_key);
653
653
  CREATE INDEX IF NOT EXISTS idx_events_type ON events(type);
654
654
  CREATE INDEX IF NOT EXISTS idx_events_def_id ON events(event_def_id, occurred_at);
655
- `),e.prepare("UPDATE server_state SET schema_version = 32 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<33&&(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='workflow_executions'").get()&&(e.prepare("PRAGMA table_info(workflow_executions)").all().some(i=>i.name==="event_id")||e.prepare("ALTER TABLE workflow_executions ADD COLUMN event_id TEXT").run(),e.prepare("CREATE INDEX IF NOT EXISTS idx_workflow_executions_event_id ON workflow_executions(event_id)").run()),e.prepare("UPDATE server_state SET schema_version = 33 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<34&&(e.prepare("PRAGMA table_info(tasks)").all().some(r=>r.name==="block_reason_json")||e.prepare("ALTER TABLE tasks ADD COLUMN block_reason_json TEXT").run(),e.prepare("UPDATE server_state SET schema_version = 34 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<35){e.prepare("PRAGMA table_info(roles)").all().some(r=>r.name==="preset_id")||e.prepare("ALTER TABLE roles ADD COLUMN preset_id TEXT").run();let T=e.prepare("PRAGMA table_info(task_templates)").all();T.some(r=>r.name==="is_preset")||e.prepare("ALTER TABLE task_templates ADD COLUMN is_preset INTEGER NOT NULL DEFAULT 0").run(),T.some(r=>r.name==="preset_id")||e.prepare("ALTER TABLE task_templates ADD COLUMN preset_id TEXT").run(),e.prepare("UPDATE server_state SET schema_version = 35 WHERE id = 1").run()}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<36){let s=[["Engineer","engineer"],["Reviewer","reviewer"],["Researcher","researcher"],["Writer","writer"],["Chat Manager","chat-manager"],["adam-automator","adam-automator"]];for(let[T,r]of s)e.prepare("UPDATE roles SET preset_id = ? WHERE name = ? AND preset_id IS NULL").run(r,T);e.prepare("UPDATE server_state SET schema_version = 36 WHERE id = 1").run()}(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<37&&(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='feature_requests'").all().length===0&&(e.exec(`
655
+ `),e.prepare("UPDATE server_state SET schema_version = 32 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<33&&(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='workflow_executions'").get()&&(e.prepare("PRAGMA table_info(workflow_executions)").all().some(i=>i.name==="event_id")||e.prepare("ALTER TABLE workflow_executions ADD COLUMN event_id TEXT").run(),e.prepare("CREATE INDEX IF NOT EXISTS idx_workflow_executions_event_id ON workflow_executions(event_id)").run()),e.prepare("UPDATE server_state SET schema_version = 33 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<34&&(e.prepare("PRAGMA table_info(tasks)").all().some(r=>r.name==="block_reason_json")||e.prepare("ALTER TABLE tasks ADD COLUMN block_reason_json TEXT").run(),e.prepare("UPDATE server_state SET schema_version = 34 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<35){e.prepare("PRAGMA table_info(roles)").all().some(r=>r.name==="preset_id")||e.prepare("ALTER TABLE roles ADD COLUMN preset_id TEXT").run();let E=e.prepare("PRAGMA table_info(task_templates)").all();E.some(r=>r.name==="is_preset")||e.prepare("ALTER TABLE task_templates ADD COLUMN is_preset INTEGER NOT NULL DEFAULT 0").run(),E.some(r=>r.name==="preset_id")||e.prepare("ALTER TABLE task_templates ADD COLUMN preset_id TEXT").run(),e.prepare("UPDATE server_state SET schema_version = 35 WHERE id = 1").run()}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<36){let T=[["Engineer","engineer"],["Reviewer","reviewer"],["Researcher","researcher"],["Writer","writer"],["Chat Manager","chat-manager"],["adam-automator","adam-automator"]];for(let[E,r]of T)e.prepare("UPDATE roles SET preset_id = ? WHERE name = ? AND preset_id IS NULL").run(r,E);e.prepare("UPDATE server_state SET schema_version = 36 WHERE id = 1").run()}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<37&&(e.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='feature_requests'").all().length===0&&(e.exec(`
656
656
  CREATE TABLE feature_requests (
657
657
  id TEXT PRIMARY KEY,
658
658
  source_session_id TEXT,
@@ -681,4 +681,4 @@ import{e as R,h as I}from"./chunk-WBAPIPST.js";import{c as m,h as O}from"./chunk
681
681
  created_at INTEGER NOT NULL,
682
682
  updated_at INTEGER NOT NULL
683
683
  )
684
- `),e.exec("CREATE INDEX IF NOT EXISTS idx_mistake_patterns_status ON mistake_patterns(status)"),e.exec("CREATE INDEX IF NOT EXISTS idx_mistake_patterns_last_seen ON mistake_patterns(last_seen)"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_mistake_patterns_dim ON mistake_patterns(dimension_type, dimension_value)")),e.prepare("UPDATE server_state SET schema_version = 38 WHERE id = 1").run());try{let E=e.prepare("SELECT id, name, steps, role_preference FROM task_templates WHERE enabled = 1").all(),s=0;for(let T of E){if(T.role_preference)continue;let r;try{r=JSON.parse(T.steps)}catch{continue}if(!Array.isArray(r))continue;let i=!1;for(let n of r){let _=typeof n.roleId=="string"&&n.roleId.length>0,a=n.autoSelectRole===!0;!_&&!a&&(n.autoSelectRole=!0,n.requirements===void 0&&(n.requirements={}),i=!0)}i&&(e.prepare("UPDATE task_templates SET steps = ?, updated_at = ? WHERE id = ?").run(JSON.stringify(r),Date.now(),T.id),s+=1,console.info(`[db migration] template auto-repaired: id=${T.id} name=${T.name}`))}s>0&&console.info(`[db migration] auto-repaired ${s} enabled template(s) with missing role config`)}catch(E){console.error("[db migration] template auto-repair failed:",E)}}function W(){if(N)return N;let e=process.env.ADAM_DB_PATH||R,c=g(e);return S(c)||u(c,{recursive:!0}),N=new X(e),N.pragma("journal_mode = WAL"),N.pragma("foreign_keys = ON"),N.pragma("trusted_schema = ON"),U(N),N}function K(){N&&(N.close(),N=null)}var l,N,D=p(()=>{I();O();l=m("store"),N=null});export{U as a,W as b,K as c,D as d};
684
+ `),e.exec("CREATE INDEX IF NOT EXISTS idx_mistake_patterns_status ON mistake_patterns(status)"),e.exec("CREATE INDEX IF NOT EXISTS idx_mistake_patterns_last_seen ON mistake_patterns(last_seen)"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_mistake_patterns_dim ON mistake_patterns(dimension_type, dimension_value)")),e.prepare("UPDATE server_state SET schema_version = 38 WHERE id = 1").run()),(e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<39){let T=e.prepare("SELECT source_task_id, COUNT(*) as cnt FROM memories WHERE source_task_id IS NOT NULL AND type = 'thought' GROUP BY source_task_id HAVING cnt > 1").all();if(T.length>0){console.info(`[db migration v39] dedupe ${T.length} (source_task_id, type='thought') groups before adding unique index`);for(let E of T){let r=e.prepare("SELECT id, length(content) as len FROM memories WHERE source_task_id = ? AND type = 'thought' ORDER BY len DESC, created_at ASC").all(E.source_task_id),i=r[0].id,o=r.slice(1).map(a=>a.id),_=o.map(()=>"?").join(",");e.prepare(`DELETE FROM memories WHERE id IN (${_})`).run(...o),console.info(`[db migration v39] group source_task_id=${E.source_task_id}: kept ${i} (len ${r[0].len}), deleted ${o.length}`)}}e.prepare("CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_thought_per_task ON memories(source_task_id) WHERE source_task_id IS NOT NULL AND type = 'thought'").run(),e.prepare("UPDATE server_state SET schema_version = 39 WHERE id = 1").run()}if((e.prepare("SELECT schema_version FROM server_state WHERE id = 1").get()?.schema_version??0)<40){let T=["tasks","step_logs","delivery_log","evolution_audit","chat_messages"];for(let E of T)e.prepare(`PRAGMA table_info(${E})`).all().some(i=>i.name==="trace_id")||(e.prepare(`ALTER TABLE ${E} ADD COLUMN trace_id TEXT`).run(),e.prepare(`CREATE INDEX IF NOT EXISTS idx_${E}_trace_id ON ${E}(trace_id) WHERE trace_id IS NOT NULL`).run(),console.info(`[db migration v40] added trace_id to ${E}`));e.prepare("UPDATE server_state SET schema_version = 40 WHERE id = 1").run()}try{let s=e.prepare("SELECT id, name, steps, role_preference FROM task_templates WHERE enabled = 1").all(),T=0;for(let E of s){if(E.role_preference)continue;let r;try{r=JSON.parse(E.steps)}catch{continue}if(!Array.isArray(r))continue;let i=!1;for(let o of r){let _=typeof o.roleId=="string"&&o.roleId.length>0,a=o.autoSelectRole===!0;!_&&!a&&(o.autoSelectRole=!0,o.requirements===void 0&&(o.requirements={}),i=!0)}i&&(e.prepare("UPDATE task_templates SET steps = ?, updated_at = ? WHERE id = ?").run(JSON.stringify(r),Date.now(),E.id),T+=1,console.info(`[db migration] template auto-repaired: id=${E.id} name=${E.name}`))}T>0&&console.info(`[db migration] auto-repaired ${T} enabled template(s) with missing role config`)}catch(s){console.error("[db migration] template auto-repair failed:",s)}}function W(){if(N)return N;let e=process.env.ADAM_DB_PATH||R,c=g(e);return u(c)||S(c,{recursive:!0}),N=new X(e),N.pragma("journal_mode = WAL"),N.pragma("foreign_keys = ON"),N.pragma("trusted_schema = ON"),U(N),N}function K(){N&&(N.close(),N=null)}var l,N,D=p(()=>{I();O();l=m("store"),N=null});export{U as a,W as b,K as c,D as d};
@@ -0,0 +1,5 @@
1
+ import{c as o}from"./chunk-6JBSBSCL.js";import{b as e,d as i}from"./chunk-AQO6IIHV.js";i();function d(t){return{id:t.id,taskId:t.task_id,index:t.index,type:t.type,content:t.content,toolName:t.tool_name??void 0,toolInput:t.tool_input?JSON.parse(t.tool_input):void 0,toolOutput:t.tool_output??void 0,truncated:t.truncated===1,timestamp:t.timestamp,tokenUsage:t.token_usage?JSON.parse(t.token_usage):void 0,planStepIndex:t.plan_step_index??void 0,traceId:t.trace_id??void 0}}function l(t){e().prepare(`
2
+ INSERT INTO step_logs (id, task_id, "index", type, content, tool_name,
3
+ tool_input, tool_output, truncated, timestamp, token_usage, plan_step_index, trace_id)
4
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
5
+ `).run(t.id,t.taskId,t.index,t.type,t.content,t.toolName??null,t.toolInput?JSON.stringify(t.toolInput):null,t.toolOutput??null,t.truncated?1:0,t.timestamp,t.tokenUsage?JSON.stringify(t.tokenUsage):null,t.planStepIndex??null,t.traceId??o()??null)}function _(t,n=100,p=0){return e().prepare('SELECT * FROM step_logs WHERE task_id = ? ORDER BY "index" ASC LIMIT ? OFFSET ?').all(t,n,p).map(d)}export{l as a,_ as b};
@@ -1,2 +1,2 @@
1
- import{b as r,d as s}from"./chunk-7F4SZXI2.js";import{c as i}from"./chunk-FCV2DPZQ.js";function p(e){let n=r().prepare("SELECT value FROM config WHERE key = ?").get(e);if(n)try{return JSON.parse(n.value)}catch{return n.value}}function E(e,t){let n=r(),o=JSON.stringify(t),u=Date.now();n.prepare(`INSERT INTO config (key, value, updated_at) VALUES (?, ?, ?)
1
+ import{b as r,d as s}from"./chunk-AQO6IIHV.js";import{c as i}from"./chunk-FCV2DPZQ.js";function p(e){let n=r().prepare("SELECT value FROM config WHERE key = ?").get(e);if(n)try{return JSON.parse(n.value)}catch{return n.value}}function E(e,t){let n=r(),o=JSON.stringify(t),u=Date.now();n.prepare(`INSERT INTO config (key, value, updated_at) VALUES (?, ?, ?)
2
2
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`).run(e,o,u)}function k(){let t=r().prepare("SELECT key, value FROM config").all(),n={};for(let o of t)try{n[o.key]=JSON.parse(o.value)}catch{n[o.key]=o.value}return n}function b(e){let t=r(),n=t.prepare("INSERT OR IGNORE INTO config (key, value, updated_at) VALUES (?, ?, ?)"),o=Date.now(),u=0;return t.transaction(()=>{for(let[c,a]of Object.entries(e)){if(a==null||a==="")continue;n.run(c,JSON.stringify(a),o).changes>0&&u++}})(),u}function w(){return r().prepare("SELECT COUNT(*) as count FROM config").get().count===0}function O(e){return r().prepare("DELETE FROM config WHERE key = ?").run(e).changes>0}var d=i(()=>{s()});export{p as a,E as b,k as c,b as d,w as e,O as f,d as g};
@@ -1,3 +1,3 @@
1
- import{b as C}from"./chunk-IZ3WZHCM.js";import{a as p}from"./chunk-L7JP7DUO.js";import{b as D,c as f,d as w}from"./chunk-ARQF52V6.js";import{c as M,h as U}from"./chunk-MRTJFYPR.js";function O(s,c,n){switch(c){case"wechat":return $(s);case"telegram":return s;case"slack":return P(s);case"webhook":return JSON.stringify({result:s,taskId:n,timestamp:new Date().toISOString()});default:return $(s)}}function $(s){return s.replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/__(.+?)__/g,"$1").replace(/_(.+?)_/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/```[\s\S]*?```/g,c=>c.replace(/```\w*\n?/g,"").trim()).replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\n{3,}/g,`
1
+ import{b as C}from"./chunk-Y5FFL6UO.js";import{a as p}from"./chunk-L7JP7DUO.js";import{b as D,c as f,d as w}from"./chunk-O7XQSONJ.js";import{c as M,h as U}from"./chunk-MRTJFYPR.js";function O(s,c,n){switch(c){case"wechat":return $(s);case"telegram":return s;case"slack":return P(s);case"webhook":return JSON.stringify({result:s,taskId:n,timestamp:new Date().toISOString()});default:return $(s)}}function $(s){return s.replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/__(.+?)__/g,"$1").replace(/_(.+?)_/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/```[\s\S]*?```/g,c=>c.replace(/```\w*\n?/g,"").trim()).replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\n{3,}/g,`
2
2
 
3
- `).trim()}function P(s){return s.replace(/\*\*(.+?)\*\*/g,"*$1*").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"<$2|$1>")}U();import{v4 as T}from"uuid";var x=M("adam"),v=class{_dedupCache=new Map;_rateLimitWindows=new Map;_recentlySentIds=new Set;isRecentlySent(c){return this._recentlySentIds.has(c)}async send(c){let{taskId:n,channelId:a,chatId:m,content:y,messageType:d,platform:E,webhookUrl:h,replyMarkup:I,mediaUrl:S,mediaType:b}=c,R=d!=="reply"&&!!n,r;if(R){r=`${n}:${a??"none"}:${m??"none"}:${d}`;let t=this._dedupCache.get(r);if(t&&Date.now()-t.timestamp<300*1e3)return x.debug({dedupKey:r},"Dedup hit, returning cached log entry"),{success:!0,logEntryId:t.logEntryId}}if(a){let t=Date.now(),i=6e4,o=this._rateLimitWindows.get(a);o||(o=[],this._rateLimitWindows.set(a,o));let u=t-i;for(;o.length>0&&o[0]<u;)o.shift();if(o.length>=60){let l=T();return x.warn({channelId:a,count:o.length},"Rate limited, not sending"),{success:!1,logEntryId:l,error:"rate_limited"}}o.push(t)}let L=E??(a?C(a)?.platform:void 0)??"unknown",k=h?y:O(y,L,n),e=T(),g={id:e,ruleId:void 0,taskId:n??void 0,status:"pending",target:a&&m?{type:"channel",channelId:a,chatId:m}:h?{type:"webhook",webhookUrl:h}:{type:"channel",channelId:a??"",chatId:m??""},content:k,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:d};D(g),r&&this._dedupCache.set(r,{logEntryId:e,timestamp:Date.now()});try{if(h){let t=await fetch(h,{method:"POST",body:JSON.stringify({result:y,taskId:n,timestamp:new Date().toISOString()}),signal:AbortSignal.timeout(1e4)});if(t.ok)return w(e),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"delivered",messageType:d}),{success:!0,logEntryId:e};{let i=`Webhook returned ${t.status}`;return f(e,"failed",i),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:i,messageType:d}),{success:!1,logEntryId:e,error:i}}}else if(a&&m){let{getChannelManager:t}=await import("./channels-DY2OW7YQ.js"),i=t();if(!i){let l="ChannelManager not available";return f(e,"failed",l),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:l,messageType:d}),{success:!1,logEntryId:e,error:l}}let o={content:k,...I?{replyMarkup:I}:{},...S?{mediaUrl:S}:{},...b?{mediaType:b}:{}},u=await i.sendMessage(a,m,o);if(u===null){let l="Channel adapter send failed (returned null)";return f(e,"failed",l),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:l,messageType:d}),{success:!1,logEntryId:e,error:l}}return u&&(this._recentlySentIds.add(u),setTimeout(()=>this._recentlySentIds.delete(u),300*1e3)),w(e),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"delivered",messageType:d}),{success:!0,messageId:u??void 0,logEntryId:e}}else{let t="No channelId/chatId or webhookUrl provided";return f(e,"failed",t),r&&this._dedupCache.delete(r),{success:!1,logEntryId:e,error:t}}}catch(t){let i=t instanceof Error?t.message:String(t);return f(e,"failed",i),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:i,messageType:d}),{success:!1,logEntryId:e,error:i}}}},_=null;function W(){return _||(_=new v),_}function q(s){return W().isRecentlySent(s)}export{v as a,W as b,q as c};
3
+ `).trim()}function P(s){return s.replace(/\*\*(.+?)\*\*/g,"*$1*").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"<$2|$1>")}U();import{v4 as T}from"uuid";var x=M("adam"),v=class{_dedupCache=new Map;_rateLimitWindows=new Map;_recentlySentIds=new Set;isRecentlySent(c){return this._recentlySentIds.has(c)}async send(c){let{taskId:n,channelId:a,chatId:m,content:y,messageType:d,platform:E,webhookUrl:h,replyMarkup:I,mediaUrl:S,mediaType:b}=c,R=d!=="reply"&&!!n,r;if(R){r=`${n}:${a??"none"}:${m??"none"}:${d}`;let t=this._dedupCache.get(r);if(t&&Date.now()-t.timestamp<300*1e3)return x.debug({dedupKey:r},"Dedup hit, returning cached log entry"),{success:!0,logEntryId:t.logEntryId}}if(a){let t=Date.now(),i=6e4,o=this._rateLimitWindows.get(a);o||(o=[],this._rateLimitWindows.set(a,o));let u=t-i;for(;o.length>0&&o[0]<u;)o.shift();if(o.length>=60){let l=T();return x.warn({channelId:a,count:o.length},"Rate limited, not sending"),{success:!1,logEntryId:l,error:"rate_limited"}}o.push(t)}let L=E??(a?C(a)?.platform:void 0)??"unknown",k=h?y:O(y,L,n),e=T(),g={id:e,ruleId:void 0,taskId:n??void 0,status:"pending",target:a&&m?{type:"channel",channelId:a,chatId:m}:h?{type:"webhook",webhookUrl:h}:{type:"channel",channelId:a??"",chatId:m??""},content:k,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:d};D(g),r&&this._dedupCache.set(r,{logEntryId:e,timestamp:Date.now()});try{if(h){let t=await fetch(h,{method:"POST",body:JSON.stringify({result:y,taskId:n,timestamp:new Date().toISOString()}),signal:AbortSignal.timeout(1e4)});if(t.ok)return w(e),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"delivered",messageType:d}),{success:!0,logEntryId:e};{let i=`Webhook returned ${t.status}`;return f(e,"failed",i),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:i,messageType:d}),{success:!1,logEntryId:e,error:i}}}else if(a&&m){let{getChannelManager:t}=await import("./channels-OOIM62BX.js"),i=t();if(!i){let l="ChannelManager not available";return f(e,"failed",l),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:l,messageType:d}),{success:!1,logEntryId:e,error:l}}let o={content:k,...I?{replyMarkup:I}:{},...S?{mediaUrl:S}:{},...b?{mediaType:b}:{}},u=await i.sendMessage(a,m,o);if(u===null){let l="Channel adapter send failed (returned null)";return f(e,"failed",l),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:l,messageType:d}),{success:!1,logEntryId:e,error:l}}return u&&(this._recentlySentIds.add(u),setTimeout(()=>this._recentlySentIds.delete(u),300*1e3)),w(e),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"delivered",messageType:d}),{success:!0,messageId:u??void 0,logEntryId:e}}else{let t="No channelId/chatId or webhookUrl provided";return f(e,"failed",t),r&&this._dedupCache.delete(r),{success:!1,logEntryId:e,error:t}}}catch(t){let i=t instanceof Error?t.message:String(t);return f(e,"failed",i),r&&this._dedupCache.delete(r),p.emit({type:"delivery_status_change",logEntryId:e,taskId:n,target:g.target,status:"failed",error:i,messageType:d}),{success:!1,logEntryId:e,error:i}}}},_=null;function W(){return _||(_=new v),_}function q(s){return W().isRecentlySent(s)}export{v as a,W as b,q as c};
@@ -1,4 +1,4 @@
1
- import{b as o,d as f}from"./chunk-7F4SZXI2.js";f();function T(e){if(e)return e.startsWith("event:")?e.slice(6):void 0}var d=class extends Error{constructor(r){super(`Template has ${r.length} step(s) without executable role config. Set template.rolePreference, OR set each failing step's roleId, OR set autoSelectRole=true. Failing step ids: ${r.join(", ")}`);this.failingStepIds=r;this.name="TemplateRoleConfigError"}failingStepIds;code="TEMPLATE_INVALID_ROLE_CONFIG"};function u(e){if(e.rolePreference)return;let n=[];for(let r of e.steps){let s=typeof r.roleId=="string"&&r.roleId.length>0,t=r.autoSelectRole===!0;!s&&!t&&n.push(r.id)}if(n.length>0)throw new d(n)}function c(e){let n=e.trigger_type,r={type:n,cron:n==="event"?void 0:e.trigger_cron??void 0,event:n==="event"?void 0:e.trigger_event??void 0,eventDefId:n==="event"?T(e.trigger_event):void 0,runAt:n==="once"?e.trigger_cron??void 0:void 0};return{id:e.id,name:e.name,description:e.description??void 0,trigger:r,steps:JSON.parse(e.steps),rolePreference:e.role_preference??void 0,config:e.config?JSON.parse(e.config):void 0,tags:e.tags?JSON.parse(e.tags):void 0,enabled:e.enabled===1,createdAt:e.created_at,updatedAt:e.updated_at??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0,goalIds:e.goal_ids?JSON.parse(e.goal_ids):void 0,isPreset:e.is_preset===1?!0:void 0,presetId:e.preset_id??void 0}}function k(e){u(e),o().prepare(`
1
+ import{b as o,d as f}from"./chunk-AQO6IIHV.js";f();function T(e){if(e)return e.startsWith("event:")?e.slice(6):void 0}var d=class extends Error{constructor(r){super(`Template has ${r.length} step(s) without executable role config. Set template.rolePreference, OR set each failing step's roleId, OR set autoSelectRole=true. Failing step ids: ${r.join(", ")}`);this.failingStepIds=r;this.name="TemplateRoleConfigError"}failingStepIds;code="TEMPLATE_INVALID_ROLE_CONFIG"};function u(e){if(e.rolePreference)return;let n=[];for(let r of e.steps){let s=typeof r.roleId=="string"&&r.roleId.length>0,t=r.autoSelectRole===!0;!s&&!t&&n.push(r.id)}if(n.length>0)throw new d(n)}function c(e){let n=e.trigger_type,r={type:n,cron:n==="event"?void 0:e.trigger_cron??void 0,event:n==="event"?void 0:e.trigger_event??void 0,eventDefId:n==="event"?T(e.trigger_event):void 0,runAt:n==="once"?e.trigger_cron??void 0:void 0};return{id:e.id,name:e.name,description:e.description??void 0,trigger:r,steps:JSON.parse(e.steps),rolePreference:e.role_preference??void 0,config:e.config?JSON.parse(e.config):void 0,tags:e.tags?JSON.parse(e.tags):void 0,enabled:e.enabled===1,createdAt:e.created_at,updatedAt:e.updated_at??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0,goalIds:e.goal_ids?JSON.parse(e.goal_ids):void 0,isPreset:e.is_preset===1?!0:void 0,presetId:e.preset_id??void 0}}function k(e){u(e),o().prepare(`
2
2
  INSERT INTO task_templates (id, name, description, trigger_type, trigger_cron,
3
3
  trigger_event, steps, role_preference, config, tags, enabled, created_at, updated_at,
4
4
  source_session_id, deliver_to, report_to, goal_ids, is_preset, preset_id)
@@ -1,7 +1,7 @@
1
- import{q as A}from"./chunk-YKMWAVUH.js";import{a as O}from"./chunk-N4ES7TCL.js";import{b as W}from"./chunk-OY2KVSIX.js";import{b as D}from"./chunk-KUJFQDT5.js";import{b as T}from"./chunk-IZ3WZHCM.js";import{a as I}from"./chunk-L7JP7DUO.js";import{d as x}from"./chunk-5AUQIK3Q.js";import{l as C,r as z}from"./chunk-YWUX3ZTO.js";import{b as S,d as F}from"./chunk-7F4SZXI2.js";import{c as E,h as $}from"./chunk-MRTJFYPR.js";$();z();F();function M(u){return{id:u.id,templateId:u.template_id,status:u.status,stepStatuses:JSON.parse(u.step_statuses),startedAt:u.started_at,completedAt:u.completed_at??void 0,error:u.error??void 0,eventId:u.event_id??void 0}}function P(u,e,t){S().prepare(`
1
+ import{q as D}from"./chunk-2VBGTGDK.js";import{a as M}from"./chunk-N4ES7TCL.js";import{b as T}from"./chunk-R2WB5BKF.js";import{b as O}from"./chunk-B544JOZM.js";import{b as W}from"./chunk-Y5FFL6UO.js";import{a as I}from"./chunk-L7JP7DUO.js";import{a as C}from"./chunk-6JBSBSCL.js";import{d as x}from"./chunk-5AUQIK3Q.js";import{l as A,r as L}from"./chunk-U2LBBBWO.js";import{b as S,d as z}from"./chunk-AQO6IIHV.js";import{c as E,h as F}from"./chunk-MRTJFYPR.js";F();L();z();function P(u){return{id:u.id,templateId:u.template_id,status:u.status,stepStatuses:JSON.parse(u.step_statuses),startedAt:u.started_at,completedAt:u.completed_at??void 0,error:u.error??void 0,eventId:u.event_id??void 0}}function N(u,e,t){S().prepare(`
2
2
  INSERT INTO workflow_executions (id, template_id, status, step_statuses, started_at, event_id)
3
3
  VALUES (?, ?, 'running', '{}', ?, ?)
4
- `).run(u,e,Date.now(),t??null)}function R(u){let t=S().prepare("SELECT * FROM workflow_executions WHERE id = ?").get(u);return t?M(t):void 0}function y(u,e){let t=S(),n=[],s=[];e.status!==void 0&&(n.push("status = ?"),s.push(e.status)),e.stepStatuses!==void 0&&(n.push("step_statuses = ?"),s.push(JSON.stringify(e.stepStatuses))),e.completedAt!==void 0&&(n.push("completed_at = ?"),s.push(e.completedAt)),e.error!==void 0&&(n.push("error = ?"),s.push(e.error)),n.length!==0&&(s.push(u),t.prepare(`UPDATE workflow_executions SET ${n.join(", ")} WHERE id = ?`).run(...s))}function B(u,e=50,t=0){let n=S(),s="SELECT * FROM workflow_executions",a=[];return u&&(s+=" WHERE template_id = ?",a.push(u)),s+=" ORDER BY started_at DESC LIMIT ? OFFSET ?",a.push(e,t),n.prepare(s).all(...a).map(M)}function j(u,e=20,t=0){return S().prepare(`
4
+ `).run(u,e,Date.now(),t??null)}function R(u){let t=S().prepare("SELECT * FROM workflow_executions WHERE id = ?").get(u);return t?P(t):void 0}function y(u,e){let t=S(),n=[],s=[];e.status!==void 0&&(n.push("status = ?"),s.push(e.status)),e.stepStatuses!==void 0&&(n.push("step_statuses = ?"),s.push(JSON.stringify(e.stepStatuses))),e.completedAt!==void 0&&(n.push("completed_at = ?"),s.push(e.completedAt)),e.error!==void 0&&(n.push("error = ?"),s.push(e.error)),n.length!==0&&(s.push(u),t.prepare(`UPDATE workflow_executions SET ${n.join(", ")} WHERE id = ?`).run(...s))}function j(u,e=50,t=0){let n=S(),s="SELECT * FROM workflow_executions",a=[];return u&&(s+=" WHERE template_id = ?",a.push(u)),s+=" ORDER BY started_at DESC LIMIT ? OFFSET ?",a.push(e,t),n.prepare(s).all(...a).map(P)}function q(u,e=20,t=0){return S().prepare(`
5
5
  SELECT we.id AS execution_id,
6
6
  we.template_id,
7
7
  tt.name AS template_name,
@@ -18,10 +18,10 @@ import{q as A}from"./chunk-YKMWAVUH.js";import{a as O}from"./chunk-N4ES7TCL.js";
18
18
  WHERE e.event_def_id = ?
19
19
  ORDER BY we.started_at DESC
20
20
  LIMIT ? OFFSET ?
21
- `).all(u,e,t).map(a=>({executionId:a.execution_id,templateId:a.template_id,templateName:a.template_name,status:a.status,startedAt:a.started_at,completedAt:a.completed_at,error:a.error,eventId:a.event_id,eventOccurredAt:a.event_occurred_at,eventPayload:a.event_payload?JSON.parse(a.event_payload):null}))}var c=E("scheduler"),N=class{maxRetries;baseDelayMs;constructor(e){this.maxRetries=e?.maxRetries??3,this.baseDelayMs=e?.baseDelayMs??1e3}async execute(e,t,n){let s=x(),a={timeout:e.config?.timeout??s.timeout,approvalRequired:s.approvalRequired,approvalTimeout:s.approvalTimeout,plugins:e.config?.plugins,mcpServers:e.config?.mcpServers,model:e.config?.model??s.model,maxTurns:e.config?.maxTurns??s.maxTurns,maxBudgetUsd:e.config?.maxBudgetUsd??s.maxBudgetUsd,env:{...s.env,...e.config?.env},claudeCodePath:s.claudeCodePath},i=typeof e.config?.delivery_message_type=="string"&&e.config.delivery_message_type.length>0?e.config.delivery_message_type:void 0,r={templateId:e.id,executionId:t,stepResults:new Map,stepStatuses:{},config:a,continueOnError:e.config?.continueOnError??!1,failedStepIds:new Set,rolePreference:e.rolePreference,deliverTo:e.deliverTo,reportTo:e.reportTo,deliveryMessageType:i};P(t,e.id,n?.eventId),O(t),I.emit({type:"workflow_status_change",executionId:t,templateId:e.id,status:"running"});let d=this.groupIntoLayers(e.steps);for(let k of d){if(this.syncExternalState(r)==="cancelled")return this.finalizeCancelledWorkflow(e,r);let w=k.filter(l=>!this.shouldSkip(l,r)),_=k.filter(l=>this.shouldSkip(l,r));for(let l of _){let p={stepId:l.id,taskId:"",status:"skipped",error:"Skipped: dependency failed"};r.stepResults.set(l.id,p),r.stepStatuses[l.id]={taskId:"",status:"skipped",error:"Skipped: dependency failed"},c.info({stepId:l.id,executionId:t},"Step skipped due to failed dependency")}if(w.length===0)continue;let m=await Promise.allSettled(w.map(l=>this.executeStep(l,r)));if(this.syncExternalState(r)==="cancelled")return this.finalizeCancelledWorkflow(e,r);for(let l=0;l<w.length;l++){let p=w[l],v=m[l];if(v.status==="rejected"){c.error({stepId:p.id,error:v.reason},"Workflow step threw");let h={stepId:p.id,taskId:"",status:"failed",error:String(v.reason)};r.stepResults.set(p.id,h),r.failedStepIds.add(p.id),r.stepStatuses[p.id]={taskId:"",status:"failed",error:String(v.reason)}}let b=r.stepResults.get(p.id);if(b?.status==="failed"&&(r.failedStepIds.add(p.id),!r.continueOnError)){if(this.isWorkflowCancelled(r.executionId))return this.finalizeCancelledWorkflow(e,r);let h="failed";return y(t,{status:h,stepStatuses:r.stepStatuses,completedAt:Date.now(),error:b.error}),I.emit({type:"workflow_status_change",executionId:t,templateId:e.id,status:h}),c.warn({stepId:p.id,executionId:t},"Workflow step failed, workflow aborted"),{executionId:t,status:h,stepResults:r.stepResults}}}if(this.isWorkflowCancelled(r.executionId))return this.finalizeCancelledWorkflow(e,r);y(t,{stepStatuses:r.stepStatuses})}if(this.isWorkflowCancelled(r.executionId))return this.finalizeCancelledWorkflow(e,r);let o=r.failedStepIds.size>0,g=[...r.stepResults.values()].some(k=>k.status==="skipped"||k.status==="cancelled"),f=o||g?"partial":"completed";return y(t,{status:f,stepStatuses:r.stepStatuses,completedAt:Date.now()}),I.emit({type:"workflow_status_change",executionId:t,templateId:e.id,status:f}),c.info({executionId:t,status:f,completedSteps:r.stepResults.size,totalSteps:e.steps.length,failedSteps:r.failedStepIds.size},"Workflow completed"),await this.deliverWorkflowResult(r,f),{executionId:t,status:f,stepResults:r.stepResults}}groupIntoLayers(e){let t=new Map(e.map(r=>[r.id,r])),n=new Map,s=new Map;for(let r of e)n.set(r.id,0),s.set(r.id,[]);for(let r of e)if(r.dependsOn)for(let d of r.dependsOn)t.has(d)&&(n.set(r.id,(n.get(r.id)??0)+1),s.get(d)?.push(r.id));let a=[],i=new Set(e.map(r=>r.id));for(;i.size>0;){let r=[];for(let d of i)if((n.get(d)??0)===0){let o=t.get(d);o&&r.push(o)}if(r.length===0){c.warn({remaining:[...i]},"Cycle detected in step dependencies");for(let d of i){let o=t.get(d);o&&a.push([o])}break}a.push(r);for(let d of r){i.delete(d.id);for(let o of s.get(d.id)??[])n.set(o,(n.get(o)??0)-1)}}return a}syncExternalState(e){let t=R(e.executionId);if(t){for(let[n,s]of Object.entries(t.stepStatuses))(s.status==="skipped"||s.status==="failed"||s.status==="cancelled")&&!e.stepResults.has(n)&&!e.failedStepIds.has(n)&&(s.status==="skipped"?e.stepResults.set(n,{stepId:n,taskId:s.taskId,status:"skipped",error:s.error??"Manually skipped via API"}):s.status==="cancelled"?e.stepResults.set(n,{stepId:n,taskId:s.taskId,status:"cancelled",error:s.error??"Cancelled"}):(e.failedStepIds.add(n),e.stepResults.set(n,{stepId:n,taskId:s.taskId,status:"failed",error:s.error})),e.stepStatuses[n]=s,c.info({stepId:n,status:s.status,executionId:e.executionId},"Synced external step status from DB"));return t.status==="cancelled"?"cancelled":void 0}}shouldSkip(e,t){return e.dependsOn?e.dependsOn.some(n=>t.failedStepIds.has(n)?!0:t.stepResults.get(n)?.status==="skipped"):!1}async executeStep(e,t){let n=this.resolveVariables(e.prompt,t.stepResults),s=e.roleId??t.rolePreference,a=s?C(s):void 0,i=(e.config?.timeout??t.config?.timeout??600)*1e3,r="",d="failed",o;for(let m=1;m<=this.maxRetries;m++){let l=await A({prompt:n,roleId:s,requirements:e.requirements,autoSelectRole:e.autoSelectRole,config:{...t.config,...e.config?.timeout!==void 0?{timeout:e.config.timeout}:{},...e.config?.maxTurns!==void 0?{maxTurns:e.config.maxTurns}:{}},sourceSessionId:t.templateId,parentId:t.executionId,templateId:t.templateId,stepId:e.id});if(!l.ok){o=l;break}if(r=l.taskId,t.stepStatuses[e.id]={taskId:r,status:"running",roleId:s},c.debug({stepId:e.id,taskId:r,roleId:s,attempt:m},"Workflow step task created via admission"),d=await this.waitForTaskCompletion(r,i),d==="completed"||d==="cancelled")break;if(m<this.maxRetries){let p=this.baseDelayMs*Math.pow(2,m-1);c.info({stepId:e.id,attempt:m,maxRetries:this.maxRetries,delayMs:p},"Workflow step failed, retrying"),await this.sleep(p)}}if(o&&!o.ok){let m={stepId:e.id,taskId:"",status:"failed",roleId:s,roleName:a?.name,error:`Admission failed: ${o.reason}`,admissionError:{code:o.code,reason:o.reason,candidates:o.candidates?.map(l=>({roleId:l.roleId,name:l.name,fitScore:l.fitScore}))}};t.stepResults.set(e.id,m),t.stepStatuses[e.id]={taskId:"",status:"failed",roleId:s,error:o.reason},c.warn({stepId:e.id,admissionCode:o.code,reason:o.reason},"Workflow step admission failed");return}let g=W(r),f=R(t.executionId),k=f?.stepStatuses[e.id],w=d==="completed"?"completed":k?.status==="skipped"?"skipped":k?.status==="cancelled"||f?.status==="cancelled"?"cancelled":"failed",_={stepId:e.id,taskId:r,status:w,roleId:s,roleName:a?.name,result:g?.result,error:g?.error};t.stepResults.set(e.id,_),t.stepStatuses[e.id]={taskId:r,status:_.status,roleId:s,result:g?.result,error:g?.error}}async deliverWorkflowResult(e,t){let n=D();if(e.deliverTo&&e.deliverTo.length>0){let s=this.assembleWorkflowSummary(e);for(let a of e.deliverTo)if(a.type==="channel"){let i=T(a.channelId);try{await n.send({taskId:e.executionId,channelId:a.channelId,chatId:a.chatId,platform:i?.platform,content:s,messageType:e.deliveryMessageType??"deliver"})}catch(r){c.error({executionId:e.executionId,channelId:a.channelId,error:r},"Workflow delivery failed")}}}if(e.reportTo&&e.reportTo.length>0){let s=[...e.stepResults.values()].filter(o=>o.status==="completed").length,a=e.failedStepIds.size,i=[...e.stepResults.values()].filter(o=>o.status==="skipped").length,r=e.stepResults.size,d=`Workflow ${t}: ${s}/${r} steps completed${a>0?`, ${a} failed`:""}${i>0?`, ${i} skipped`:""}`;for(let o of e.reportTo)if(o.type==="channel"){let g=T(o.channelId);try{await n.send({taskId:e.executionId,channelId:o.channelId,chatId:o.chatId,platform:g?.platform,content:d,messageType:"report"})}catch(f){c.error({executionId:e.executionId,channelId:o.channelId,error:f},"Workflow report delivery failed")}}}}assembleWorkflowSummary(e){let t=[];for(let[n,s]of e.stepResults){let a=s.status==="completed"?"OK":s.status==="skipped"?"SKIP":"FAIL",i=s.roleName?` (${s.roleName})`:"",r=s.result??s.error??"No output";t.push(`## [${a}] Step: ${n}${i}
21
+ `).all(u,e,t).map(a=>({executionId:a.execution_id,templateId:a.template_id,templateName:a.template_name,status:a.status,startedAt:a.started_at,completedAt:a.completed_at,error:a.error,eventId:a.event_id,eventOccurredAt:a.event_occurred_at,eventPayload:a.event_payload?JSON.parse(a.event_payload):null}))}var c=E("scheduler"),$=class{maxRetries;baseDelayMs;constructor(e){this.maxRetries=e?.maxRetries??3,this.baseDelayMs=e?.baseDelayMs??1e3}async execute(e,t,n){let s=x(),a={timeout:e.config?.timeout??s.timeout,approvalRequired:s.approvalRequired,approvalTimeout:s.approvalTimeout,plugins:e.config?.plugins,mcpServers:e.config?.mcpServers,model:e.config?.model??s.model,maxTurns:e.config?.maxTurns??s.maxTurns,maxBudgetUsd:e.config?.maxBudgetUsd??s.maxBudgetUsd,env:{...s.env,...e.config?.env},claudeCodePath:s.claudeCodePath},i=typeof e.config?.delivery_message_type=="string"&&e.config.delivery_message_type.length>0?e.config.delivery_message_type:void 0,r={templateId:e.id,executionId:t,stepResults:new Map,stepStatuses:{},config:a,continueOnError:e.config?.continueOnError??!1,failedStepIds:new Set,rolePreference:e.rolePreference,deliverTo:e.deliverTo,reportTo:e.reportTo,deliveryMessageType:i};N(t,e.id,n?.eventId),M(t),I.emit({type:"workflow_status_change",executionId:t,templateId:e.id,status:"running"});let d=this.groupIntoLayers(e.steps);for(let k of d){if(this.syncExternalState(r)==="cancelled")return this.finalizeCancelledWorkflow(e,r);let w=k.filter(l=>!this.shouldSkip(l,r)),_=k.filter(l=>this.shouldSkip(l,r));for(let l of _){let p={stepId:l.id,taskId:"",status:"skipped",error:"Skipped: dependency failed"};r.stepResults.set(l.id,p),r.stepStatuses[l.id]={taskId:"",status:"skipped",error:"Skipped: dependency failed"},c.info({stepId:l.id,executionId:t},"Step skipped due to failed dependency")}if(w.length===0)continue;let m=await Promise.allSettled(w.map(l=>this.executeStep(l,r)));if(this.syncExternalState(r)==="cancelled")return this.finalizeCancelledWorkflow(e,r);for(let l=0;l<w.length;l++){let p=w[l],v=m[l];if(v.status==="rejected"){c.error({stepId:p.id,error:v.reason},"Workflow step threw");let h={stepId:p.id,taskId:"",status:"failed",error:String(v.reason)};r.stepResults.set(p.id,h),r.failedStepIds.add(p.id),r.stepStatuses[p.id]={taskId:"",status:"failed",error:String(v.reason)}}let b=r.stepResults.get(p.id);if(b?.status==="failed"&&(r.failedStepIds.add(p.id),!r.continueOnError)){if(this.isWorkflowCancelled(r.executionId))return this.finalizeCancelledWorkflow(e,r);let h="failed";return y(t,{status:h,stepStatuses:r.stepStatuses,completedAt:Date.now(),error:b.error}),I.emit({type:"workflow_status_change",executionId:t,templateId:e.id,status:h}),c.warn({stepId:p.id,executionId:t},"Workflow step failed, workflow aborted"),{executionId:t,status:h,stepResults:r.stepResults}}}if(this.isWorkflowCancelled(r.executionId))return this.finalizeCancelledWorkflow(e,r);y(t,{stepStatuses:r.stepStatuses})}if(this.isWorkflowCancelled(r.executionId))return this.finalizeCancelledWorkflow(e,r);let o=r.failedStepIds.size>0,g=[...r.stepResults.values()].some(k=>k.status==="skipped"||k.status==="cancelled"),f=o||g?"partial":"completed";return y(t,{status:f,stepStatuses:r.stepStatuses,completedAt:Date.now()}),I.emit({type:"workflow_status_change",executionId:t,templateId:e.id,status:f}),c.info({executionId:t,status:f,completedSteps:r.stepResults.size,totalSteps:e.steps.length,failedSteps:r.failedStepIds.size},"Workflow completed"),await this.deliverWorkflowResult(r,f),{executionId:t,status:f,stepResults:r.stepResults}}groupIntoLayers(e){let t=new Map(e.map(r=>[r.id,r])),n=new Map,s=new Map;for(let r of e)n.set(r.id,0),s.set(r.id,[]);for(let r of e)if(r.dependsOn)for(let d of r.dependsOn)t.has(d)&&(n.set(r.id,(n.get(r.id)??0)+1),s.get(d)?.push(r.id));let a=[],i=new Set(e.map(r=>r.id));for(;i.size>0;){let r=[];for(let d of i)if((n.get(d)??0)===0){let o=t.get(d);o&&r.push(o)}if(r.length===0){c.warn({remaining:[...i]},"Cycle detected in step dependencies");for(let d of i){let o=t.get(d);o&&a.push([o])}break}a.push(r);for(let d of r){i.delete(d.id);for(let o of s.get(d.id)??[])n.set(o,(n.get(o)??0)-1)}}return a}syncExternalState(e){let t=R(e.executionId);if(t){for(let[n,s]of Object.entries(t.stepStatuses))(s.status==="skipped"||s.status==="failed"||s.status==="cancelled")&&!e.stepResults.has(n)&&!e.failedStepIds.has(n)&&(s.status==="skipped"?e.stepResults.set(n,{stepId:n,taskId:s.taskId,status:"skipped",error:s.error??"Manually skipped via API"}):s.status==="cancelled"?e.stepResults.set(n,{stepId:n,taskId:s.taskId,status:"cancelled",error:s.error??"Cancelled"}):(e.failedStepIds.add(n),e.stepResults.set(n,{stepId:n,taskId:s.taskId,status:"failed",error:s.error})),e.stepStatuses[n]=s,c.info({stepId:n,status:s.status,executionId:e.executionId},"Synced external step status from DB"));return t.status==="cancelled"?"cancelled":void 0}}shouldSkip(e,t){return e.dependsOn?e.dependsOn.some(n=>t.failedStepIds.has(n)?!0:t.stepResults.get(n)?.status==="skipped"):!1}async executeStep(e,t){let n=this.resolveVariables(e.prompt,t.stepResults),s=e.roleId??t.rolePreference,a=s?A(s):void 0,i=(e.config?.timeout??t.config?.timeout??600)*1e3,r="",d="failed",o;for(let m=1;m<=this.maxRetries;m++){let l=await C("template",async()=>D({prompt:n,roleId:s,requirements:e.requirements,autoSelectRole:e.autoSelectRole,config:{...t.config,...e.config?.timeout!==void 0?{timeout:e.config.timeout}:{},...e.config?.maxTurns!==void 0?{maxTurns:e.config.maxTurns}:{}},sourceSessionId:t.templateId,parentId:t.executionId,templateId:t.templateId,stepId:e.id}));if(!l.ok){o=l;break}if(r=l.taskId,t.stepStatuses[e.id]={taskId:r,status:"running",roleId:s},c.debug({stepId:e.id,taskId:r,roleId:s,attempt:m},"Workflow step task created via admission"),d=await this.waitForTaskCompletion(r,i),d==="completed"||d==="cancelled")break;if(m<this.maxRetries){let p=this.baseDelayMs*Math.pow(2,m-1);c.info({stepId:e.id,attempt:m,maxRetries:this.maxRetries,delayMs:p},"Workflow step failed, retrying"),await this.sleep(p)}}if(o&&!o.ok){let m={stepId:e.id,taskId:"",status:"failed",roleId:s,roleName:a?.name,error:`Admission failed: ${o.reason}`,admissionError:{code:o.code,reason:o.reason,candidates:o.candidates?.map(l=>({roleId:l.roleId,name:l.name,fitScore:l.fitScore}))}};t.stepResults.set(e.id,m),t.stepStatuses[e.id]={taskId:"",status:"failed",roleId:s,error:o.reason},c.warn({stepId:e.id,admissionCode:o.code,reason:o.reason},"Workflow step admission failed");return}let g=T(r),f=R(t.executionId),k=f?.stepStatuses[e.id],w=d==="completed"?"completed":k?.status==="skipped"?"skipped":k?.status==="cancelled"||f?.status==="cancelled"?"cancelled":"failed",_={stepId:e.id,taskId:r,status:w,roleId:s,roleName:a?.name,result:g?.result,error:g?.error};t.stepResults.set(e.id,_),t.stepStatuses[e.id]={taskId:r,status:_.status,roleId:s,result:g?.result,error:g?.error}}async deliverWorkflowResult(e,t){let n=O();if(e.deliverTo&&e.deliverTo.length>0){let s=this.assembleWorkflowSummary(e);for(let a of e.deliverTo)if(a.type==="channel"){let i=W(a.channelId);try{await n.send({taskId:e.executionId,channelId:a.channelId,chatId:a.chatId,platform:i?.platform,content:s,messageType:e.deliveryMessageType??"deliver"})}catch(r){c.error({executionId:e.executionId,channelId:a.channelId,error:r},"Workflow delivery failed")}}}if(e.reportTo&&e.reportTo.length>0){let s=[...e.stepResults.values()].filter(o=>o.status==="completed").length,a=e.failedStepIds.size,i=[...e.stepResults.values()].filter(o=>o.status==="skipped").length,r=e.stepResults.size,d=`Workflow ${t}: ${s}/${r} steps completed${a>0?`, ${a} failed`:""}${i>0?`, ${i} skipped`:""}`;for(let o of e.reportTo)if(o.type==="channel"){let g=W(o.channelId);try{await n.send({taskId:e.executionId,channelId:o.channelId,chatId:o.chatId,platform:g?.platform,content:d,messageType:"report"})}catch(f){c.error({executionId:e.executionId,channelId:o.channelId,error:f},"Workflow report delivery failed")}}}}assembleWorkflowSummary(e){let t=[];for(let[n,s]of e.stepResults){let a=s.status==="completed"?"OK":s.status==="skipped"?"SKIP":"FAIL",i=s.roleName?` (${s.roleName})`:"",r=s.result??s.error??"No output";t.push(`## [${a}] Step: ${n}${i}
22
22
 
23
23
  ${r}`)}return t.join(`
24
24
 
25
25
  ---
26
26
 
27
- `)}resolveVariables(e,t){return e.replace(/\{\{([^}]+)\.result\}\}/g,(n,s)=>t.get(s)?.result??`[no result from ${s}]`)}waitForTaskCompletion(e,t=6e5){return new Promise(n=>{let s=!1,a=Date.now(),i=()=>{s=!0,I.off("task_status_change",r)},r=o=>{s||o.taskId!==e||(o.newStatus==="completed"?(i(),n("completed")):o.newStatus==="failed"?(i(),n("failed")):o.newStatus==="cancelled"?(i(),n("cancelled")):o.newStatus==="blocked"&&(i(),n("blocked")))};I.on("task_status_change",r);let d=()=>{if(s)return;if(Date.now()-a>t){i(),n("failed");return}let o=W(e);if(!o){i(),n("failed");return}if(o.status==="completed"){i(),n("completed");return}if(o.status==="failed"){i(),n("failed");return}if(o.status==="cancelled"){i(),n("cancelled");return}if(o.status==="blocked"){i(),n("blocked");return}setTimeout(d,5e3)};setTimeout(d,100)})}sleep(e){return new Promise(t=>setTimeout(t,e))}isWorkflowCancelled(e){return R(e)?.status==="cancelled"}finalizeCancelledWorkflow(e,t){let n=R(t.executionId);return y(t.executionId,{status:"cancelled",stepStatuses:n?.stepStatuses??t.stepStatuses,completedAt:n?.completedAt??Date.now(),error:n?.error}),c.info({executionId:t.executionId,templateId:e.id},"Workflow cancelled"),{executionId:t.executionId,status:"cancelled",stepResults:t.stepResults}}};export{R as a,y as b,B as c,j as d,N as e};
27
+ `)}resolveVariables(e,t){return e.replace(/\{\{([^}]+)\.result\}\}/g,(n,s)=>t.get(s)?.result??`[no result from ${s}]`)}waitForTaskCompletion(e,t=6e5){return new Promise(n=>{let s=!1,a=Date.now(),i=()=>{s=!0,I.off("task_status_change",r)},r=o=>{s||o.taskId!==e||(o.newStatus==="completed"?(i(),n("completed")):o.newStatus==="failed"?(i(),n("failed")):o.newStatus==="cancelled"?(i(),n("cancelled")):o.newStatus==="blocked"&&(i(),n("blocked")))};I.on("task_status_change",r);let d=()=>{if(s)return;if(Date.now()-a>t){i(),n("failed");return}let o=T(e);if(!o){i(),n("failed");return}if(o.status==="completed"){i(),n("completed");return}if(o.status==="failed"){i(),n("failed");return}if(o.status==="cancelled"){i(),n("cancelled");return}if(o.status==="blocked"){i(),n("blocked");return}setTimeout(d,5e3)};setTimeout(d,100)})}sleep(e){return new Promise(t=>setTimeout(t,e))}isWorkflowCancelled(e){return R(e)?.status==="cancelled"}finalizeCancelledWorkflow(e,t){let n=R(t.executionId);return y(t.executionId,{status:"cancelled",stepStatuses:n?.stepStatuses??t.stepStatuses,completedAt:n?.completedAt??Date.now(),error:n?.error}),c.info({executionId:t.executionId,templateId:e.id},"Workflow cancelled"),{executionId:t.executionId,status:"cancelled",stepResults:t.stepResults}}};export{R as a,y as b,j as c,q as d,$ as e};
@@ -1,4 +1,4 @@
1
- import{f as R,j as z}from"./chunk-6XVWIRR2.js";import{c as _,e as T,f}from"./chunk-VPZSOYE5.js";import{k as y,l as S,m as c,n as A,o as x,r as H}from"./chunk-YWUX3ZTO.js";import{c as B,e as U,f as Y}from"./chunk-FCV2DPZQ.js";var O={};U(O,{seedAdamAutomatorSkills:()=>K});async function K(t){let{ensureRoleWorkspace:r}=await import("./role-workspace-LHW7AWPF.js"),{getRole:e}=await import("./roles-DRPLO4LY.js"),{mkdir:a,readFile:n,writeFile:o,access:s}=await import("fs/promises"),{join:l}=await import("path"),d=e(t);if(!d)throw new Error(`Role '${t}' not found`);let u=r(d),m=l(u,".claude","skills");await a(m,{recursive:!0});let i=[{name:"aggregate_feature",description:"Aggregate a feature value over a window",inputs:[{name:"feature_name",desc:"Name of the feature to aggregate"},{name:"aggregation",desc:"Aggregation type: sum | avg | count | latest"},{name:"window_days",desc:"Number of days to look back"},{name:"field",desc:"Event payload field to aggregate"}],body:"Query events via sqlite3, compute aggregation, print numeric result."},{name:"check_threshold",description:"Compare a value vs threshold, emit breach if exceeded",inputs:[{name:"feature",desc:"Feature value (number)"},{name:"operator",desc:"Comparison operator: gt | gte | lt | lte | eq"},{name:"threshold",desc:"Threshold value"},{name:"on_breach_type",desc:"Event type to emit on breach"},{name:"on_breach_payload",desc:"JSON payload for breach event"}],body:"Read feature value, compare against threshold using the operator. On breach, emit new event via emit_event Skill."},{name:"query_events",description:"Range-query events table",inputs:[{name:"type_pattern",desc:"Event type pattern (e.g. 'scheduler.tick')"},{name:"window",desc:"Lookback window in hours"},{name:"limit",desc:"Maximum number of events to return"}],body:"sqlite3 parameterized query against the events table, returning matching rows as JSON."},{name:"query_state",description:"Read latest state_snapshot (not yet available)",inputs:[{name:"select",desc:"Dot-notation path to select (e.g. 'goals.active')"}],body:`Returns { state: null, available: false } \u2014 state_snapshot table not yet built (deferred to Phase 2).
1
+ import{f as R,j as z}from"./chunk-RMGBR3XZ.js";import{c as _,e as T,f}from"./chunk-D5LZGIJU.js";import{k as y,l as S,m as c,n as A,o as x,r as H}from"./chunk-U2LBBBWO.js";import{c as B,e as U,f as Y}from"./chunk-FCV2DPZQ.js";var O={};U(O,{seedAdamAutomatorSkills:()=>K});async function K(t){let{ensureRoleWorkspace:r}=await import("./role-workspace-ISGPO25D.js"),{getRole:e}=await import("./roles-WNKRM6FD.js"),{mkdir:a,readFile:n,writeFile:o,access:s}=await import("fs/promises"),{join:l}=await import("path"),d=e(t);if(!d)throw new Error(`Role '${t}' not found`);let u=r(d),m=l(u,".claude","skills");await a(m,{recursive:!0});let i=[{name:"aggregate_feature",description:"Aggregate a feature value over a window",inputs:[{name:"feature_name",desc:"Name of the feature to aggregate"},{name:"aggregation",desc:"Aggregation type: sum | avg | count | latest"},{name:"window_days",desc:"Number of days to look back"},{name:"field",desc:"Event payload field to aggregate"}],body:"Query events via sqlite3, compute aggregation, print numeric result."},{name:"check_threshold",description:"Compare a value vs threshold, emit breach if exceeded",inputs:[{name:"feature",desc:"Feature value (number)"},{name:"operator",desc:"Comparison operator: gt | gte | lt | lte | eq"},{name:"threshold",desc:"Threshold value"},{name:"on_breach_type",desc:"Event type to emit on breach"},{name:"on_breach_payload",desc:"JSON payload for breach event"}],body:"Read feature value, compare against threshold using the operator. On breach, emit new event via emit_event Skill."},{name:"query_events",description:"Range-query events table",inputs:[{name:"type_pattern",desc:"Event type pattern (e.g. 'scheduler.tick')"},{name:"window",desc:"Lookback window in hours"},{name:"limit",desc:"Maximum number of events to return"}],body:"sqlite3 parameterized query against the events table, returning matching rows as JSON."},{name:"query_state",description:"Read latest state_snapshot (not yet available)",inputs:[{name:"select",desc:"Dot-notation path to select (e.g. 'goals.active')"}],body:`Returns { state: null, available: false } \u2014 state_snapshot table not yet built (deferred to Phase 2).
2
2
 
3
3
  When the state_snapshot table is available, this Skill will query it for the latest snapshot matching the select path and return the value.`},{name:"query_goals",description:"Read active goals (goal_graph_nodes not built)",inputs:[{name:"types",desc:"Goal type filter (e.g. 'daily|weekly')"},{name:"status",desc:"Goal status filter: active | completed | paused"}],body:`Returns { goals: [], available: false } \u2014 goal_graph_nodes table not yet built (deferred to Phase 2).
4
4
 
@@ -1,4 +1,4 @@
1
- import{b as i,d as u}from"./chunk-7F4SZXI2.js";u();function c(t){return{id:t.id,status:t.status,source:{type:t.source_type,channelId:t.source_channel_id??void 0,chatId:t.source_chat_id??void 0},title:t.title??void 0,createdAt:t.created_at,lastActiveAt:t.last_active_at,archivedAt:t.archived_at??void 0,messageCount:t.message_count}}function d(t){i().prepare(`
1
+ import{b as i,d as u}from"./chunk-AQO6IIHV.js";u();function c(t){return{id:t.id,status:t.status,source:{type:t.source_type,channelId:t.source_channel_id??void 0,chatId:t.source_chat_id??void 0},title:t.title??void 0,createdAt:t.created_at,lastActiveAt:t.last_active_at,archivedAt:t.archived_at??void 0,messageCount:t.message_count}}function d(t){i().prepare(`
2
2
  INSERT INTO chat_sessions (id, status, source_type, source_channel_id, source_chat_id,
3
3
  title, created_at, last_active_at, archived_at, message_count)
4
4
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)