adam-agent-server 1.18.0 → 1.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/{App-SIQUVFJY.js → App-522DTURQ.js} +10 -10
  2. package/dist/approval-handler-GXIVBJ4Z.js +1 -0
  3. package/dist/artifacts-DDHH47IE.js +1 -0
  4. package/dist/audit-diagnostics-HLHS3MHM.js +1 -0
  5. package/dist/audit-manager-PDMOR2MX.js +1 -0
  6. package/dist/bree-engine-6UKRI4UN.js +1 -0
  7. package/dist/{channels-2TWTBE6Y.js → channels-3J6U6GYH.js} +1 -1
  8. package/dist/channels-YOBMSBWV.js +1 -0
  9. package/dist/chat-tool-calls-5Z53IXRF.js +1 -0
  10. package/dist/{chunk-2CE2WUUZ.js → chunk-2BLSA25Q.js} +1 -1
  11. package/dist/{chunk-2A2TXYT3.js → chunk-3JTHJ3FZ.js} +3 -3
  12. package/dist/{chunk-2JIQT2CI.js → chunk-4NRIKWSD.js} +1 -1
  13. package/dist/{chunk-HRPMRWHD.js → chunk-5ZL6RHPE.js} +1 -1
  14. package/dist/{chunk-BE653A45.js → chunk-6GVYOHD5.js} +5 -5
  15. package/dist/{chunk-NSUXJ2VA.js → chunk-6NIWU43Z.js} +1 -1
  16. package/dist/{chunk-QYI44EP6.js → chunk-6SBLFYCU.js} +1 -1
  17. package/dist/{chunk-V2MMQ3SH.js → chunk-AKQ3AFVI.js} +1 -1
  18. package/dist/{chunk-HL373H4P.js → chunk-AMJJ2WGU.js} +1 -1
  19. package/dist/chunk-CQDOIHPV.js +1 -0
  20. package/dist/{chunk-XAPJJAJQ.js → chunk-EXB2JIBR.js} +1 -1
  21. package/dist/{chunk-VWX2B6OM.js → chunk-G5I76LX2.js} +1 -1
  22. package/dist/{chunk-LKGYQJMS.js → chunk-GYOZGA7G.js} +1 -1
  23. package/dist/{chunk-NUOTFUNF.js → chunk-ISTUK7Q6.js} +1 -1
  24. package/dist/chunk-ITVCPC7G.js +1 -0
  25. package/dist/{chunk-NXGR3PRY.js → chunk-J2VSAXVU.js} +1 -1
  26. package/dist/chunk-J4JO7O3T.js +182 -0
  27. package/dist/{chunk-5G64P4KE.js → chunk-JRRNGKDK.js} +1 -1
  28. package/dist/{chunk-Z2APBKIT.js → chunk-KO6UB6VW.js} +1 -1
  29. package/dist/chunk-LE5YRP37.js +14 -0
  30. package/dist/chunk-N4BV2WAU.js +1 -0
  31. package/dist/{chunk-JZBXLN7M.js → chunk-NUTGYMDP.js} +1 -1
  32. package/dist/{chunk-OBD4245G.js → chunk-NX3CIEZA.js} +1 -1
  33. package/dist/{chunk-ZQN6JZIJ.js → chunk-P2EDMFVO.js} +1 -1
  34. package/dist/{chunk-JYZTIE2J.js → chunk-PU2T7HBY.js} +1 -1
  35. package/dist/{chunk-UCUELFCS.js → chunk-PZH5NKUL.js} +11 -11
  36. package/dist/{chunk-SKHMWKJT.js → chunk-QF3B4OWI.js} +1 -1
  37. package/dist/{chunk-KS24764D.js → chunk-QQWUWGSK.js} +2 -2
  38. package/dist/{chunk-O6L4UVLV.js → chunk-QX65LEYA.js} +1 -1
  39. package/dist/chunk-R3MSLP6P.js +32 -0
  40. package/dist/{chunk-LCD5DVS6.js → chunk-SDHMBWVC.js} +1 -1
  41. package/dist/{chunk-SGLZAIVL.js → chunk-SONOE4ZJ.js} +1 -1
  42. package/dist/{chunk-47HJPIUA.js → chunk-T7EKW3B7.js} +1 -1
  43. package/dist/{chunk-IEBAOZED.js → chunk-VVPB3TD4.js} +1 -1
  44. package/dist/{chunk-4JHACUZY.js → chunk-X3PJNX2R.js} +1 -1
  45. package/dist/{chunk-6WQFYV3N.js → chunk-XEXSXMWK.js} +1 -1
  46. package/dist/{chunk-BMCNQGUH.js → chunk-YGR5ZTGT.js} +1 -1
  47. package/dist/{chunk-JROGEBP5.js → chunk-YGZQMZTA.js} +1 -1
  48. package/dist/{chunk-TA5PFK5C.js → chunk-YI2QQTZE.js} +1 -1
  49. package/dist/chunk-ZARKPBI2.js +143 -0
  50. package/dist/{chunk-WY5BOCQP.js → chunk-ZEGZ2I35.js} +16 -16
  51. package/dist/cli.js +2 -2
  52. package/dist/{config-U624HJKI.js → config-7Y7I7KX4.js} +1 -1
  53. package/dist/config-Z6KFEFJO.js +1 -0
  54. package/dist/db-P7ELD5DS.js +1 -0
  55. package/dist/{delivery-log-QMQQHES4.js → delivery-log-EVRKJ5GD.js} +1 -1
  56. package/dist/engine-FE7NCHOG.js +1 -0
  57. package/dist/{evolution-audit-XF4KZZMP.js → evolution-audit-XIWF3JIF.js} +1 -1
  58. package/dist/execution-tools-PGURN3N6.js +1 -0
  59. package/dist/{external-api-435WH6V3.js → external-api-DSLQDRZ2.js} +1 -1
  60. package/dist/index.js +70 -67
  61. package/dist/{learner-4CJ7BSCN.js → learner-PWDQUZ5O.js} +1 -1
  62. package/dist/{memories-NJFKSOL5.js → memories-2OJFLLBT.js} +1 -1
  63. package/dist/{memory-extractor-UQI75BBK.js → memory-extractor-N7M4YSPL.js} +1 -1
  64. package/dist/{memory-gc-NTZVUGJX.js → memory-gc-R42SPM52.js} +1 -1
  65. package/dist/memory-service-V7B5MY37.js +1 -0
  66. package/dist/outbound-gateway-NHNHVHF2.js +1 -0
  67. package/dist/presets-H2UV3HIF.js +1 -0
  68. package/dist/{reflection-job-F4BZA2E3.js → reflection-job-ECJX5ERQ.js} +1 -1
  69. package/dist/role-presets-7SWGUPV2.js +1 -0
  70. package/dist/role-workspace-AOYIGLG4.js +1 -0
  71. package/dist/{roles-WDMUBWQP.js → roles-5TWJBGAQ.js} +1 -1
  72. package/dist/{session-manager-XFUKWEC7.js → session-manager-5P2FAEV3.js} +1 -1
  73. package/dist/skill-registry-XOX4OSHY.js +1 -0
  74. package/dist/{task-templates-BIVCRNXA.js → task-templates-CTQHB6TA.js} +1 -1
  75. package/dist/template-dispatch-Z2TKWOMY.js +1 -0
  76. package/package.json +1 -1
  77. package/web/dist/assets/{ChannelDetail-D0FBZoAX.js → ChannelDetail-CSq9o5fq.js} +1 -1
  78. package/web/dist/assets/{Channels-Cztxvsa2.js → Channels-CAxTh1Bp.js} +1 -1
  79. package/web/dist/assets/Chat-PUz41HFr.js +2 -0
  80. package/web/dist/assets/{Cost-K8-4xqBe.js → Cost-BHcsPz5T.js} +1 -1
  81. package/web/dist/assets/{Dashboard-BXqFb_Vr.js → Dashboard-BT39_iWc.js} +1 -1
  82. package/web/dist/assets/{EnvVarEditor-FiiJazzp.js → EnvVarEditor-D_1d7bTJ.js} +1 -1
  83. package/web/dist/assets/{EventDefDetail-C3S1G0K8.js → EventDefDetail-jKN3gO_7.js} +1 -1
  84. package/web/dist/assets/{Events-BKxqZ9j6.js → Events-CpeHg3fh.js} +1 -1
  85. package/web/dist/assets/{Evolution-DFcSm6Rw.js → Evolution-DsWyv2_a.js} +1 -1
  86. package/web/dist/assets/{ExtensionDetail-C8aPpyLv.js → ExtensionDetail-CJHNaNii.js} +1 -1
  87. package/web/dist/assets/{Extensions-MLZk05j0.js → Extensions-Pg2vx_ZK.js} +1 -1
  88. package/web/dist/assets/{FeatureRequests-D_4XaQ7F.js → FeatureRequests-3Yl8wTNT.js} +1 -1
  89. package/web/dist/assets/{GoalDetail-DVU7c0aR.js → GoalDetail-L3T1zqqs.js} +1 -1
  90. package/web/dist/assets/{Goals-D3h4WMjU.js → Goals-B-__r-Yq.js} +1 -1
  91. package/web/dist/assets/{Logs-D5MQv6Yw.js → Logs-CMkjUkmu.js} +1 -1
  92. package/web/dist/assets/{Memories-Dls71I2i.js → Memories-Q1eKfPQ2.js} +1 -1
  93. package/web/dist/assets/{Mistakes-BZcTg0vP.js → Mistakes-BROkixt_.js} +1 -1
  94. package/web/dist/assets/{Plugins-CwCHGzI6.js → Plugins-v17MyPVe.js} +1 -1
  95. package/web/dist/assets/{RoleDetail-B2M6ALSl.js → RoleDetail-DCGFBLP1.js} +2 -2
  96. package/web/dist/assets/{Roles-FEHqm_Jf.js → Roles-C7SNebvY.js} +1 -1
  97. package/web/dist/assets/{Settings-rdVQMfqX.js → Settings-QuKwKbKg.js} +1 -1
  98. package/web/dist/assets/{Strategies-CwJ9JQ-X.js → Strategies-CXQYvCkc.js} +1 -1
  99. package/web/dist/assets/{Switch-1JjR4Imr.js → Switch--h1rqagh.js} +1 -1
  100. package/web/dist/assets/{TaskDetail-h12WxjfG.js → TaskDetail-B0G5ZjDD.js} +1 -1
  101. package/web/dist/assets/{Work-CfzFRSZX.js → Work-DbFst_9-.js} +1 -1
  102. package/web/dist/assets/index-D35OGE0z.css +2 -0
  103. package/web/dist/assets/{index-CXEJd-0s.js → index-Dd3NDYZR.js} +2 -2
  104. package/web/dist/assets/{usePluginsWithUsage-4iLJAPjH.js → usePluginsWithUsage-DpTxJuFQ.js} +1 -1
  105. package/web/dist/index.html +2 -2
  106. package/dist/approval-handler-BWA7UIKN.js +0 -1
  107. package/dist/artifacts-MAYKOTA2.js +0 -1
  108. package/dist/audit-diagnostics-K3LUWXTI.js +0 -1
  109. package/dist/audit-manager-6WL2V6JG.js +0 -1
  110. package/dist/bree-engine-KYD4GKQK.js +0 -1
  111. package/dist/channels-PWDSTYNR.js +0 -1
  112. package/dist/chat-tool-calls-WJDFQ54U.js +0 -1
  113. package/dist/chunk-3UFEOB6P.js +0 -143
  114. package/dist/chunk-MTRLUW7Z.js +0 -1
  115. package/dist/chunk-QTGAK62Z.js +0 -14
  116. package/dist/chunk-TWOJVEO7.js +0 -32
  117. package/dist/chunk-VO24C673.js +0 -1
  118. package/dist/chunk-VPMHZJS2.js +0 -1
  119. package/dist/chunk-ZJ3TS4FL.js +0 -182
  120. package/dist/config-X7A6NA73.js +0 -1
  121. package/dist/db-XODNIJSJ.js +0 -1
  122. package/dist/engine-OQXDHA2R.js +0 -1
  123. package/dist/execution-tools-BR4T4MMW.js +0 -1
  124. package/dist/memory-service-3RLVOF2C.js +0 -1
  125. package/dist/outbound-gateway-NJNSN2ZX.js +0 -1
  126. package/dist/presets-SUJRFRJC.js +0 -1
  127. package/dist/role-presets-VEYTGYA4.js +0 -1
  128. package/dist/role-workspace-AIVHPX5P.js +0 -1
  129. package/dist/skill-registry-LARMNUT5.js +0 -1
  130. package/dist/template-dispatch-6FPJQN6A.js +0 -1
  131. package/web/dist/assets/Chat-Ce72TtUi.js +0 -2
  132. package/web/dist/assets/index-CarTGiGO.css +0 -2
@@ -1,4 +1,4 @@
1
- import{b as E,c as A,i as R}from"./chunk-LCD5DVS6.js";import{e as C,i as T}from"./chunk-NSUXJ2VA.js";import{G as _,L as I}from"./chunk-2A2TXYT3.js";import{n as w,p as F}from"./chunk-WY5BOCQP.js";I();T();import{existsSync as W,readdirSync as L,readFileSync as j}from"fs";import{join as P}from"path";function v(l){let s=l.split(`
1
+ import{b as E,c as A,i as R}from"./chunk-SDHMBWVC.js";import{e as C,i as T}from"./chunk-6NIWU43Z.js";import{G as _,L as I}from"./chunk-3JTHJ3FZ.js";import{o as w,q as F}from"./chunk-ZEGZ2I35.js";I();T();import{existsSync as W,readdirSync as L,readFileSync as j}from"fs";import{join as P}from"path";function v(l){let s=l.split(`
2
2
  `),n=s[0]??"";return n.startsWith("```yaml")||n.startsWith("```")?s.slice(1).join(`
3
3
  `):l}function H(l){let s={},o=v(l).split(`
4
4
  `);for(let t of o){let u=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*):\s*(.*)$/);if(u)s[u[1].toLowerCase()]=u[2].trim();else if(t.trim()&&!t.startsWith("#")&&!t.startsWith(" ")&&!t.startsWith(" "))break}return s}function M(l,s){let n=[];try{let o=C(s),t=P(o,".claude","skills");if(!W(t))return n;let u=L(t,{withFileTypes:!0});for(let e of u){if(!e.isDirectory()&&!e.isSymbolicLink())continue;let i=P(t,e.name,"SKILL.md");if(W(i))try{let a=j(i,"utf-8"),r=H(a),m=r.name??e.name,c=r.description??"";n.push({name:m,description:c,roleName:s,roleId:l,path:i,rawFrontmatter:r})}catch{}}}catch{}return n}F();var O=new Set(["the","a","an","is","are","was","were","be","been","being","have","has","had","do","does","did","will","would","could","should","may","might","must","shall","can","need","dare","ought","used","to","of","in","for","on","with","at","by","from","as","into","through","during","before","after","above","below","between","under","again","further","then","once","here","there","when","where","why","how","all","each","few","more","most","other","some","such","no","nor","not","only","own","same","so","than","too","very","just","also","now","and","but","or","if","because","until","while","about","against","this","that","these","those","it","its"]);function S(l){return l.toLowerCase().replace(/[^a-z0-9\s]/g," ").split(/\s+/).filter(s=>s.length>1&&!O.has(s))}function g(l,s){if(s.length===0)return 0;let n=S(l),o=0;for(let t of s){n.includes(t)&&o++;for(let u of n)u.startsWith(t)&&u!==t&&(o+=.5)}return o}function D(l){let s=w(),n=new Map;if(l.length===0)return n;let o=l.map(()=>"?").join(","),t=s.prepare(`
@@ -1,4 +1,4 @@
1
- import{n as s,p as d}from"./chunk-WY5BOCQP.js";import{c as l,e as u}from"./chunk-5M6IGE5G.js";d();u();function a(e){return{id:e.id,ruleId:e.rule_id??void 0,taskId:e.task_id??void 0,executionId:e.execution_id??void 0,status:e.status,target:JSON.parse(e.target),content:e.content,attempts:e.attempts,error:e.error??void 0,createdAt:e.created_at,deliveredAt:e.delivered_at??void 0,expiresAt:e.expires_at,source:e.source,messageType:e.message_type??void 0,traceId:e.trace_id??void 0}}var g=1440*60*1e3;function E(e){s().prepare(`
1
+ import{o as s,q as d}from"./chunk-ZEGZ2I35.js";import{c as l,e as u}from"./chunk-5M6IGE5G.js";d();u();function a(e){return{id:e.id,ruleId:e.rule_id??void 0,taskId:e.task_id??void 0,executionId:e.execution_id??void 0,status:e.status,target:JSON.parse(e.target),content:e.content,attempts:e.attempts,error:e.error??void 0,createdAt:e.created_at,deliveredAt:e.delivered_at??void 0,expiresAt:e.expires_at,source:e.source,messageType:e.message_type??void 0,traceId:e.trace_id??void 0}}var g=1440*60*1e3;function E(e){s().prepare(`
2
2
  INSERT INTO delivery_log (id, rule_id, task_id, execution_id, status, target, content,
3
3
  attempts, error, created_at, delivered_at, expires_at, source, message_type, trace_id)
4
4
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -1,36 +1,36 @@
1
- import{d as V}from"./chunk-XAPJJAJQ.js";import{b as L}from"./chunk-Z2APBKIT.js";import{b as N,p as Z}from"./chunk-2A2TXYT3.js";import{n as d,p as k}from"./chunk-WY5BOCQP.js";import{c as F,h as X}from"./chunk-EZLBMUQD.js";Z();k();k();function Ee(e){d().prepare(`
1
+ import{d as V}from"./chunk-EXB2JIBR.js";import{b as L}from"./chunk-KO6UB6VW.js";import{b as N,p as ee}from"./chunk-3JTHJ3FZ.js";import{o as d,q as k}from"./chunk-ZEGZ2I35.js";import{c as F,h as Z}from"./chunk-EZLBMUQD.js";ee();k();k();function be(e){d().prepare(`
2
2
  INSERT INTO audit_violations
3
3
  (id, step_task_id, execution_id, role_id, contract_field, layer, severity, message, metadata_json, created_at)
4
4
  VALUES
5
5
  (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
6
- `).run(e.id,e.stepTaskId,e.executionId??null,e.roleId,e.contractField,e.layer,e.severity,e.message,e.metadata?JSON.stringify(e.metadata):null,e.createdAt)}function h(e){return{id:e.id,stepTaskId:e.step_task_id,executionId:e.execution_id??void 0,roleId:e.role_id,contractField:e.contract_field,layer:e.layer,severity:e.severity,message:e.message,metadata:e.metadata_json?JSON.parse(e.metadata_json):void 0,createdAt:e.created_at}}function D(e,s=50){return d().prepare("SELECT * FROM audit_violations WHERE role_id = ? ORDER BY created_at DESC LIMIT ?").all(e,s).map(h)}function H(e){return d().prepare("SELECT * FROM audit_violations WHERE step_task_id = ? ORDER BY created_at DESC").all(e).map(h)}function Te(e){return d().prepare("SELECT * FROM audit_violations WHERE execution_id = ? ORDER BY created_at DESC").all(e).map(h)}function P(e){return{id:e.id,roleId:e.role_id,taskId:e.task_id,scores:JSON.parse(e.score_json),emaScore:e.ema_score,createdAt:e.created_at,taskType:e.task_type??void 0}}function W(e){d().prepare(`
6
+ `).run(e.id,e.stepTaskId,e.executionId??null,e.roleId,e.contractField,e.layer,e.severity,e.message,e.metadata?JSON.stringify(e.metadata):null,e.createdAt)}function h(e){return{id:e.id,stepTaskId:e.step_task_id,executionId:e.execution_id??void 0,roleId:e.role_id,contractField:e.contract_field,layer:e.layer,severity:e.severity,message:e.message,metadata:e.metadata_json?JSON.parse(e.metadata_json):void 0,createdAt:e.created_at}}function D(e,s=50){return d().prepare("SELECT * FROM audit_violations WHERE role_id = ? ORDER BY created_at DESC LIMIT ?").all(e,s).map(h)}function H(e){return d().prepare("SELECT * FROM audit_violations WHERE step_task_id = ? ORDER BY created_at DESC").all(e).map(h)}function ke(e){return d().prepare("SELECT * FROM audit_violations WHERE execution_id = ? ORDER BY created_at DESC").all(e).map(h)}function P(e){return{id:e.id,roleId:e.role_id,taskId:e.task_id,scores:JSON.parse(e.score_json),emaScore:e.ema_score,createdAt:e.created_at,taskType:e.task_type??void 0}}function W(e){d().prepare(`
7
7
  INSERT INTO role_scores (id, role_id, task_id, task_type, score_json, ema_score, created_at)
8
8
  VALUES (?, ?, ?, ?, ?, ?, ?)
9
- `).run(e.id,e.roleId,e.taskId,e.taskType??null,JSON.stringify(e.scores),e.emaScore,e.createdAt)}function ee(e,s=50){return d().prepare("SELECT * FROM role_scores WHERE role_id = ? ORDER BY created_at DESC LIMIT ?").all(e,s).map(P)}function B(e){return d().prepare("SELECT ema_score FROM role_scores WHERE role_id = ? ORDER BY created_at DESC LIMIT 1").get(e)?.ema_score}function U(e){let t=d().prepare(`
9
+ `).run(e.id,e.roleId,e.taskId,e.taskType??null,JSON.stringify(e.scores),e.emaScore,e.createdAt)}function te(e,s=50){return d().prepare("SELECT * FROM role_scores WHERE role_id = ? ORDER BY created_at DESC LIMIT ?").all(e,s).map(P)}function U(e){return d().prepare("SELECT ema_score FROM role_scores WHERE role_id = ? ORDER BY created_at DESC LIMIT 1").get(e)?.ema_score}function B(e){let t=d().prepare(`
10
10
  SELECT token_usage FROM tasks
11
11
  WHERE role_id = ? AND status = 'completed' AND token_usage IS NOT NULL
12
12
  ORDER BY completed_at DESC LIMIT 50
13
- `).all(e);if(t.length===0)return 1e4;let n=t.map(r=>{let a=JSON.parse(r.token_usage);return(a.input??0)+(a.output??0)}).sort((r,a)=>r-a);return n[Math.floor(n.length/2)]}function Ie(e){let t=d().prepare("SELECT * FROM role_scores WHERE role_id = ? ORDER BY created_at DESC LIMIT 1").get(e);return t?P(t):void 0}function xe(e,s,t,n,r){let a=d(),o=a.prepare("SELECT id, role_id, score_json FROM role_scores WHERE task_id = ?").get(e);if(!o)return;let l=JSON.parse(o.score_json);l.intentFulfillment=s,l.intentFulfillmentFailed=t,l.weighted=n(l);let p=a.prepare("SELECT ema_score FROM role_scores WHERE role_id = ? AND created_at < (SELECT created_at FROM role_scores WHERE id = ?) ORDER BY created_at DESC LIMIT 1").get(o.role_id,o.id),u=p!==void 0?r*l.weighted+(1-r)*p.ema_score:l.weighted;return a.prepare("UPDATE role_scores SET score_json = ?, ema_score = ? WHERE id = ?").run(JSON.stringify(l),u,o.id),u}function Me(e,s){let n=d().prepare(`
13
+ `).all(e);if(t.length===0)return 1e4;let n=t.map(r=>{let a=JSON.parse(r.token_usage);return(a.input??0)+(a.output??0)}).sort((r,a)=>r-a);return n[Math.floor(n.length/2)]}function Me(e){let t=d().prepare("SELECT * FROM role_scores WHERE role_id = ? ORDER BY created_at DESC LIMIT 1").get(e);return t?P(t):void 0}function he(e,s,t,n,r){let a=d(),o=a.prepare("SELECT id, role_id, score_json FROM role_scores WHERE task_id = ?").get(e);if(!o)return;let l=JSON.parse(o.score_json);l.intentFulfillment=s,l.intentFulfillmentFailed=t,l.weighted=n(l);let p=a.prepare("SELECT ema_score FROM role_scores WHERE role_id = ? AND created_at < (SELECT created_at FROM role_scores WHERE id = ?) ORDER BY created_at DESC LIMIT 1").get(o.role_id,o.id),u=p!==void 0?r*l.weighted+(1-r)*p.ema_score:l.weighted;return a.prepare("UPDATE role_scores SET score_json = ?, ema_score = ? WHERE id = ?").run(JSON.stringify(l),u,o.id),u}function De(e,s){let n=d().prepare(`
14
14
  SELECT rs.score_json, t.cost_usd, t.completed_at, rs.created_at
15
15
  FROM role_scores rs
16
16
  JOIN tasks t ON t.id = rs.task_id
17
17
  WHERE rs.role_id = ? AND rs.task_type = ?
18
18
  ORDER BY rs.created_at DESC
19
- `).all(e,s);if(n.length===0)return{totalTasks:0,successRate:0,avgCostUsd:0,lastAttempt:null};let r=n.length,o=n.filter(f=>JSON.parse(f.score_json).taskSuccess===1).length/r,p=n.map(f=>f.cost_usd??0).reduce((f,E)=>f+E,0)/r,u=n[0]?.created_at??null;return{totalTasks:r,successRate:o,avgCostUsd:p,lastAttempt:u}}function he(e,s=50){let n=ee(e,s).map(o=>o.scores.contractCompliance).filter(o=>o!=null);return n.length===0?{emaScore:null,recentViolations:D(e,10),contractsCheckedRowCount:0}:{emaScore:[...n].reverse().reduce((o,l,p)=>p===0?l:A*l+(1-A)*o,0),recentViolations:D(e,10),contractsCheckedRowCount:n.length}}X();import{v4 as te}from"uuid";var se=F("audit"),O={taskSuccess:.25,planAccuracy:.2,permissionCompliance:.2,efficiency:.15,intentFulfillment:.2},M={taskSuccess:.3,planAccuracy:.25,permissionCompliance:.25,efficiency:.2},A=.3;function ne(e){return e.intentFulfillment===null||e.intentFulfillment===void 0?e.taskSuccess*M.taskSuccess+e.planAccuracy*M.planAccuracy+e.permissionCompliance*M.permissionCompliance+e.efficiency*M.efficiency:e.taskSuccess*O.taskSuccess+e.planAccuracy*O.planAccuracy+e.permissionCompliance*O.permissionCompliance+e.efficiency*O.efficiency+e.intentFulfillment*O.intentFulfillment}function re(e,s){let t=N(e),n=t?.status==="completed"?1:0,r=1,a=V(e);a?.deviationReport&&(r=a.deviationReport.overallAccuracy);let o=1,l=L(e,1e3),p=l.filter(_=>_.type==="tool_result"||_.type==="permission_denied").length,u=l.filter(_=>_.type==="permission_denied").length;p>0&&(o=1-u/p);let f=1;if(t?.tokenUsage){let _=t.tokenUsage.input+t.tokenUsage.output,c=s?U(s):1e4;_>c&&(f=Math.max(0,1-(_-c)/c))}let E=ne({taskSuccess:n,planAccuracy:r,permissionCompliance:o,efficiency:f,intentFulfillment:void 0}),T=t?.config?.outputContractCheckCount??0,x=null;if(T>0){let c=H(e).filter(i=>!(i.severity==="warning"&&i.layer==="C"));x=Math.max(0,Math.min(1,1-c.length/T))}return{taskSuccess:n,planAccuracy:r,permissionCompliance:o,efficiency:f,contractCompliance:x,contractsCheckedThisTask:T,weighted:E}}function He(e,s,t){let n=re(s,e),r=B(e),a=r!==void 0?A*n.weighted+(1-A)*r:n.weighted;return W({id:te(),roleId:e,taskId:s,scores:n,emaScore:a,createdAt:Date.now(),taskType:t}),se.debug({roleId:e,taskId:s,scores:{...n,weighted:n.weighted.toFixed(3)},ema:a.toFixed(3)},"Task score recorded"),a}k();function q(e){return{id:e.id,sourceSessionId:e.source_session_id??void 0,sourceMessageId:e.source_message_id??void 0,extractedAt:e.extracted_at,extractedByRoleId:e.extracted_by_role_id??void 0,content:e.content,summary:e.summary??void 0,status:e.status,tags:e.tags?JSON.parse(e.tags):void 0,evidenceQuote:e.evidence_quote??void 0,createdAt:e.created_at,updatedAt:e.updated_at}}var oe=`
19
+ `).all(e,s);if(n.length===0)return{totalTasks:0,successRate:0,avgCostUsd:0,lastAttempt:null};let r=n.length,o=n.filter(f=>JSON.parse(f.score_json).taskSuccess===1).length/r,p=n.map(f=>f.cost_usd??0).reduce((f,E)=>f+E,0)/r,u=n[0]?.created_at??null;return{totalTasks:r,successRate:o,avgCostUsd:p,lastAttempt:u}}function ve(e,s=50){let n=te(e,s).map(o=>o.scores.contractCompliance).filter(o=>o!=null);return n.length===0?{emaScore:null,recentViolations:D(e,10),contractsCheckedRowCount:0}:{emaScore:[...n].reverse().reduce((o,l,p)=>p===0?l:A*l+(1-A)*o,0),recentViolations:D(e,10),contractsCheckedRowCount:n.length}}Z();import{v4 as se}from"uuid";var ne=F("audit"),O={taskSuccess:.25,planAccuracy:.2,permissionCompliance:.2,efficiency:.15,intentFulfillment:.2},M={taskSuccess:.3,planAccuracy:.25,permissionCompliance:.25,efficiency:.2},A=.3;function re(e){return e.intentFulfillment===null||e.intentFulfillment===void 0?e.taskSuccess*M.taskSuccess+e.planAccuracy*M.planAccuracy+e.permissionCompliance*M.permissionCompliance+e.efficiency*M.efficiency:e.taskSuccess*O.taskSuccess+e.planAccuracy*O.planAccuracy+e.permissionCompliance*O.permissionCompliance+e.efficiency*O.efficiency+e.intentFulfillment*O.intentFulfillment}function oe(e,s){let t=N(e),n=t?.status==="completed"?1:0,r=1,a=V(e);a?.deviationReport&&(r=a.deviationReport.overallAccuracy);let o=1,l=L(e,1e3),p=l.filter(_=>_.type==="tool_result"||_.type==="permission_denied").length,u=l.filter(_=>_.type==="permission_denied").length;p>0&&(o=1-u/p);let f=1;if(t?.tokenUsage){let _=t.tokenUsage.input+t.tokenUsage.output,c=s?B(s):1e4;_>c&&(f=Math.max(0,1-(_-c)/c))}let E=re({taskSuccess:n,planAccuracy:r,permissionCompliance:o,efficiency:f,intentFulfillment:void 0}),T=t?.config?.outputContractCheckCount??0,I=null;if(T>0){let c=H(e).filter(i=>!(i.severity==="warning"&&i.layer==="C"));I=Math.max(0,Math.min(1,1-c.length/T))}return{taskSuccess:n,planAccuracy:r,permissionCompliance:o,efficiency:f,contractCompliance:I,contractsCheckedThisTask:T,weighted:E}}function We(e,s,t){let n=oe(s,e),r=U(e),a=r!==void 0?A*n.weighted+(1-A)*r:n.weighted;return W({id:se(),roleId:e,taskId:s,scores:n,emaScore:a,createdAt:Date.now(),taskType:t}),ne.debug({roleId:e,taskId:s,scores:{...n,weighted:n.weighted.toFixed(3)},ema:a.toFixed(3)},"Task score recorded"),a}k();function q(e){return{id:e.id,sourceSessionId:e.source_session_id??void 0,sourceMessageId:e.source_message_id??void 0,extractedAt:e.extracted_at,extractedByRoleId:e.extracted_by_role_id??void 0,content:e.content,summary:e.summary??void 0,status:e.status,tags:e.tags?JSON.parse(e.tags):void 0,evidenceQuote:e.evidence_quote??void 0,createdAt:e.created_at,updatedAt:e.updated_at}}var ie=`
20
20
  INSERT INTO feature_requests
21
21
  (id, source_session_id, source_message_id, extracted_at, extracted_by_role_id,
22
22
  content, summary, status, tags, evidence_quote, created_at, updated_at)
23
23
  VALUES
24
24
  (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
25
- `.trim(),ie=`
25
+ `.trim(),ae=`
26
26
  UPDATE feature_requests SET status = ?, updated_at = ? WHERE id = ?
27
- `.trim();function J(e){d().prepare(oe).run(e.id,e.sourceSessionId??null,e.sourceMessageId??null,e.extractedAt,e.extractedByRoleId??null,e.content,e.summary??null,e.status,e.tags?JSON.stringify(e.tags):null,e.evidenceQuote??null,e.createdAt,e.updatedAt)}function Be(e,s=100,t=0){let n=d();return(e?n.prepare("SELECT * FROM feature_requests WHERE status = ? ORDER BY extracted_at DESC LIMIT ? OFFSET ?").all(e,s,t):n.prepare("SELECT * FROM feature_requests ORDER BY extracted_at DESC LIMIT ? OFFSET ?").all(s,t)).map(q)}function Ue(e){let t=d().prepare("SELECT * FROM feature_requests WHERE id = ?").get(e);return t?q(t):void 0}function qe(e,s){d().prepare(ie).run(s,Date.now(),e)}k();function v(e){return{id:e.id,dimensionType:e.dimension_type,dimensionValue:e.dimension_value,count:e.count,roleIds:JSON.parse(e.role_ids),sampleEvidenceIds:JSON.parse(e.sample_evidence_ids),status:e.status,firstSeen:e.first_seen,lastSeen:e.last_seen,createdAt:e.created_at,updatedAt:e.updated_at}}var ae=`
27
+ `.trim();function J(e){d().prepare(ie).run(e.id,e.sourceSessionId??null,e.sourceMessageId??null,e.extractedAt,e.extractedByRoleId??null,e.content,e.summary??null,e.status,e.tags?JSON.stringify(e.tags):null,e.evidenceQuote??null,e.createdAt,e.updatedAt)}function qe(e,s=100,t=0){let n=d();return(e?n.prepare("SELECT * FROM feature_requests WHERE status = ? ORDER BY extracted_at DESC LIMIT ? OFFSET ?").all(e,s,t):n.prepare("SELECT * FROM feature_requests ORDER BY extracted_at DESC LIMIT ? OFFSET ?").all(s,t)).map(q)}function Je(e){let t=d().prepare("SELECT * FROM feature_requests WHERE id = ?").get(e);return t?q(t):void 0}function je(e,s){d().prepare(ae).run(s,Date.now(),e)}k();function v(e){return{id:e.id,dimensionType:e.dimension_type,dimensionValue:e.dimension_value,count:e.count,roleIds:JSON.parse(e.role_ids),sampleEvidenceIds:JSON.parse(e.sample_evidence_ids),status:e.status,firstSeen:e.first_seen,lastSeen:e.last_seen,createdAt:e.created_at,updatedAt:e.updated_at}}var ce=`
28
28
  INSERT INTO mistake_patterns
29
29
  (id, dimension_type, dimension_value, count, role_ids, sample_evidence_ids,
30
30
  status, first_seen, last_seen, created_at, updated_at)
31
31
  VALUES
32
32
  (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
33
- `.trim(),ce=`
33
+ `.trim(),de=`
34
34
  UPDATE mistake_patterns SET status = ?, updated_at = ? WHERE id = ?
35
35
  `.trim();function j(e){let s=d(),t=Date.now(),n=e.sampleEvidenceIds.slice(-10),r=s.prepare("SELECT * FROM mistake_patterns WHERE dimension_type = ? AND dimension_value = ?").get(e.dimensionType,e.dimensionValue);if(r){let o=JSON.parse(r.role_ids),l=Array.from(new Set([...o,...e.roleIds])),u=[...JSON.parse(r.sample_evidence_ids),...n].slice(-10);s.prepare(`
36
36
  UPDATE mistake_patterns SET
@@ -40,7 +40,7 @@ import{d as V}from"./chunk-XAPJJAJQ.js";import{b as L}from"./chunk-Z2APBKIT.js";
40
40
  last_seen = ?,
41
41
  updated_at = ?
42
42
  WHERE dimension_type = ? AND dimension_value = ?
43
- `).run(JSON.stringify(l),JSON.stringify(u),e.lastSeen,t,e.dimensionType,e.dimensionValue)}else s.prepare(ae).run(`mp-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,e.dimensionType,e.dimensionValue,1,JSON.stringify(e.roleIds),JSON.stringify(n),"new",e.firstSeen,e.lastSeen,t,t);let a=s.prepare("SELECT * FROM mistake_patterns WHERE dimension_type = ? AND dimension_value = ?").get(e.dimensionType,e.dimensionValue);return v(a)}function Ye(e,s=100,t=0){let n=d();return(e?n.prepare("SELECT * FROM mistake_patterns WHERE status = ? ORDER BY last_seen DESC LIMIT ? OFFSET ?").all(e,s,t):n.prepare("SELECT * FROM mistake_patterns ORDER BY last_seen DESC LIMIT ? OFFSET ?").all(s,t)).map(v)}function Ke(e){let t=d().prepare("SELECT * FROM mistake_patterns WHERE id = ?").get(e);return t?v(t):void 0}function Qe(e,s){d().prepare(ce).run(s,Date.now(),e)}k();import{randomUUID as Y}from"crypto";function Xe(e,s){if(s.added.length===0&&s.modified.length===0&&s.deleted.length===0)return;let t=d(),n=t.prepare("INSERT INTO task_files (id, task_id, path, op, mtime_ns, size_bytes, inode, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");n.safeIntegers(!0);let r=Date.now();t.transaction(()=>{let a=(o,l)=>{n.run(Y(),e,o.path,l,o.mtime_ns,o.size,o.inode,r)};for(let o of s.added)a(o,"added");for(let o of s.modified)a(o,"modified");for(let o of s.deleted)n.run(Y(),e,o,"deleted",null,null,null,r)})()}function Ze(e){let t=d().prepare("SELECT * FROM task_files WHERE task_id = ? ORDER BY created_at, path");return t.safeIntegers(!0),t.all(e)}import{createSdkMcpServer as de,tool as le}from"@anthropic-ai/claude-agent-sdk";import{z as S}from"zod";import{v4 as ue}from"uuid";var K={content:S.string().min(1).max(5e3),summary:S.string().max(500).optional(),tags:S.array(S.string().max(50)).max(10).optional(),evidenceQuote:S.string().max(1e3).optional(),sourceSessionId:S.string().optional(),sourceMessageId:S.string().optional()};function me(e){return le("record_feature_request","Record a feature request extracted from chat sessions. Call this once per distinct feature request found in the provided chat data. Do not fabricate \u2014 only record requests that appear verbatim or clearly in the chat content.",K,async s=>{let t=S.object(K).safeParse(s);if(!t.success)return{content:[{type:"text",text:JSON.stringify({ok:!1,error:t.error.message})}]};let n=t.data,r=Date.now(),a=ue(),o={id:a,content:n.content,summary:n.summary,status:"new",tags:n.tags??[],evidenceQuote:n.evidenceQuote,sourceSessionId:n.sourceSessionId,sourceMessageId:n.sourceMessageId,extractedByRoleId:e,extractedAt:r,createdAt:r,updatedAt:r};try{J(o)}catch{return{content:[{type:"text",text:JSON.stringify({ok:!1,error:"failed to write feature request"})}]}}return{content:[{type:"text",text:JSON.stringify({success:!0,featureRequestId:a,summary:n.summary??n.content.slice(0,80)})}]}})}function Q(e){return de({name:"mining-tools",version:"1.0.0",tools:[me(e)]})}import{createSdkMcpServer as fe,tool as _e}from"@anthropic-ai/claude-agent-sdk";import{z as I}from"zod";k();var C=.5,w=.3;function pe(e,s,t,n){let r=e<t,a=s<n;return r&&a?"both":r?"low_ema":"low_task"}function z(e={}){let{windowDays:s=14,dimensions:t=["event_type","score_degradation","tool_call_pattern"],minOccurrences:n=3,minRoles:r=2,scoreThresholdEma:a=C,scoreThresholdTask:o=w}=e,l=d(),p=Date.now()-s*864e5,u=new Map;if(t.includes("event_type")){let c=l.prepare(`
43
+ `).run(JSON.stringify(l),JSON.stringify(u),e.lastSeen,t,e.dimensionType,e.dimensionValue)}else s.prepare(ce).run(`mp-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,e.dimensionType,e.dimensionValue,1,JSON.stringify(e.roleIds),JSON.stringify(n),"new",e.firstSeen,e.lastSeen,t,t);let a=s.prepare("SELECT * FROM mistake_patterns WHERE dimension_type = ? AND dimension_value = ?").get(e.dimensionType,e.dimensionValue);return v(a)}function Qe(e,s=100,t=0){let n=d();return(e?n.prepare("SELECT * FROM mistake_patterns WHERE status = ? ORDER BY last_seen DESC LIMIT ? OFFSET ?").all(e,s,t):n.prepare("SELECT * FROM mistake_patterns ORDER BY last_seen DESC LIMIT ? OFFSET ?").all(s,t)).map(v)}function ze(e){let t=d().prepare("SELECT * FROM mistake_patterns WHERE id = ?").get(e);return t?v(t):void 0}function Xe(e,s){d().prepare(de).run(s,Date.now(),e)}k();import{randomUUID as Y}from"crypto";function et(e,s){if(s.added.length===0&&s.modified.length===0&&s.deleted.length===0)return;let t=d(),n=t.prepare("INSERT INTO task_files (id, task_id, path, op, mtime_ns, size_bytes, inode, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");n.safeIntegers(!0);let r=Date.now();t.transaction(()=>{let a=(o,l)=>{n.run(Y(),e,o.path,l,o.mtime_ns,o.size,o.inode,r)};for(let o of s.added)a(o,"added");for(let o of s.modified)a(o,"modified");for(let o of s.deleted)n.run(Y(),e,o,"deleted",null,null,null,r)})()}function tt(e){let t=d().prepare("SELECT * FROM task_files WHERE task_id = ? ORDER BY created_at, path");return t.safeIntegers(!0),t.all(e)}import{createSdkMcpServer as le,tool as ue}from"@anthropic-ai/claude-agent-sdk";import{z as S}from"zod";import{v4 as me}from"uuid";var K={content:S.string().min(1).max(5e3),summary:S.string().max(500).optional(),tags:S.array(S.string().max(50)).max(10).optional(),evidenceQuote:S.string().max(1e3).optional(),sourceSessionId:S.string().optional(),sourceMessageId:S.string().optional()};function pe(e){return ue("record_feature_request","Record a feature request extracted from chat sessions. Call this once per distinct feature request found in the provided chat data. Do not fabricate \u2014 only record requests that appear verbatim or clearly in the chat content.",K,async s=>{let t=S.object(K).safeParse(s);if(!t.success)return{content:[{type:"text",text:JSON.stringify({ok:!1,error:t.error.message})}]};let n=t.data,r=Date.now(),a=me(),o={id:a,content:n.content,summary:n.summary,status:"new",tags:n.tags??[],evidenceQuote:n.evidenceQuote,sourceSessionId:n.sourceSessionId,sourceMessageId:n.sourceMessageId,extractedByRoleId:e,extractedAt:r,createdAt:r,updatedAt:r};try{J(o)}catch{return{content:[{type:"text",text:JSON.stringify({ok:!1,error:"failed to write feature request"})}]}}return{content:[{type:"text",text:JSON.stringify({success:!0,featureRequestId:a,summary:n.summary??n.content.slice(0,80)})}]}})}function Q(e){return le({name:"mining-tools",version:"1.0.0",tools:[pe(e)]})}import{createSdkMcpServer as _e,tool as ge}from"@anthropic-ai/claude-agent-sdk";import{z as x}from"zod";k();var C=.5,w=.3;function fe(e,s,t,n){let r=e<t,a=s<n;return r&&a?"both":r?"low_ema":"low_task"}function z(e={}){let{windowDays:s=14,dimensions:t=["event_type","score_degradation","tool_call_pattern"],minOccurrences:n=3,minRoles:r=2,scoreThresholdEma:a=C,scoreThresholdTask:o=w}=e,l=d(),p=Date.now()-s*864e5,u=new Map;if(t.includes("event_type")){let c=l.prepare(`
44
44
  SELECT id, role_id, source, timestamp
45
45
  FROM evolution_audit
46
46
  WHERE timestamp >= ? AND source IN ('audit','monitor','admin','manual')
@@ -50,7 +50,7 @@ import{d as V}from"./chunk-XAPJJAJQ.js";import{b as L}from"./chunk-Z2APBKIT.js";
50
50
  FROM role_scores
51
51
  WHERE created_at >= ?
52
52
  ORDER BY created_at ASC
53
- `).all(p);for(let i of c){let g=i.ema_score;try{let b=JSON.parse(i.score_json);typeof b.weighted=="number"?g=b.weighted:typeof b.task=="number"?g=b.task:typeof b.score=="number"&&(g=b.score)}catch{}let R=pe(i.ema_score,g,a,o),m=`score_degradation|${R}`;u.has(m)||u.set(m,{dimensionType:"score_degradation",dimensionValue:R,count:0,roleIds:new Set,evidenceIds:[],firstSeen:1/0,lastSeen:0});let y=u.get(m);y.count++,y.roleIds.add(i.role_id),y.evidenceIds.push({source:"role_scores",id:i.id}),i.created_at<y.firstSeen&&(y.firstSeen=i.created_at),i.created_at>y.lastSeen&&(y.lastSeen=i.created_at)}}if(t.includes("tool_call_pattern")){let c=l.prepare(`
53
+ `).all(p);for(let i of c){let g=i.ema_score;try{let b=JSON.parse(i.score_json);typeof b.weighted=="number"?g=b.weighted:typeof b.task=="number"?g=b.task:typeof b.score=="number"&&(g=b.score)}catch{}let R=fe(i.ema_score,g,a,o),m=`score_degradation|${R}`;u.has(m)||u.set(m,{dimensionType:"score_degradation",dimensionValue:R,count:0,roleIds:new Set,evidenceIds:[],firstSeen:1/0,lastSeen:0});let y=u.get(m);y.count++,y.roleIds.add(i.role_id),y.evidenceIds.push({source:"role_scores",id:i.id}),i.created_at<y.firstSeen&&(y.firstSeen=i.created_at),i.created_at>y.lastSeen&&(y.lastSeen=i.created_at)}}if(t.includes("tool_call_pattern")){let c=l.prepare(`
54
54
  SELECT dl.id, dl.task_id, dl.error, dl.created_at, t.role_id
55
55
  FROM delivery_log dl
56
56
  LEFT JOIN tasks t ON t.id = dl.task_id
@@ -58,4 +58,4 @@ import{d as V}from"./chunk-XAPJJAJQ.js";import{b as L}from"./chunk-Z2APBKIT.js";
58
58
  AND dl.message_type = 'sandbox_violation'
59
59
  AND dl.source = 'audit'
60
60
  ORDER BY dl.created_at ASC
61
- `).all(p);for(let i of c){let g=(i.error??"").slice(0,60),R=`tool_call_pattern|${g}`;u.has(R)||u.set(R,{dimensionType:"tool_call_pattern",dimensionValue:g,count:0,roleIds:new Set,evidenceIds:[],firstSeen:1/0,lastSeen:0});let m=u.get(R);m.count++,i.role_id&&m.roleIds.add(i.role_id),m.evidenceIds.push({source:"delivery_log",id:i.id}),i.created_at<m.firstSeen&&(m.firstSeen=i.created_at),i.created_at>m.lastSeen&&(m.lastSeen=i.created_at)}}let f={};for(let c of u.keys()){let[i]=c.split("|");f[i]=(f[i]??0)+1}let E=Array.from(u.values()).filter(c=>c.count>=n&&c.roleIds.size>=r),T=0,x=l.transaction(()=>{for(let c of E)j({dimensionType:c.dimensionType,dimensionValue:c.dimensionValue,roleIds:Array.from(c.roleIds),sampleEvidenceIds:c.evidenceIds.slice(-10),firstSeen:c.firstSeen===1/0?Date.now():c.firstSeen,lastSeen:c.lastSeen}),T++});try{x()}catch(c){throw new Error(`aggregateMistakes: transaction failed: ${c}`)}let _=0;for(let c of u.values())_+=c.count;return{patternsUpserted:T,totalEventsScanned:_,dimensionCounts:f}}var $={windowDays:I.number().int().min(1).max(365).optional(),dimensions:I.enum(["event_type","score_degradation","tool_call_pattern"]).array().min(1).max(3).optional(),minOccurrences:I.number().int().min(1).max(100).optional(),minRoles:I.number().int().min(1).max(100).optional()};function ge(){return _e("aggregate_mistakes","Aggregate cross-role failure signals from the last N days into mistake patterns. Returns counts + dimensions; patterns are persisted to mistake_patterns for UI review. Notify-only: no role/permission/CAG mutation.",$,async e=>{let s=I.object($).safeParse(e);if(!s.success)return{content:[{type:"text",text:JSON.stringify({ok:!1,error:s.error.message})}]};let t=s.data,n={windowDays:t.windowDays??14,dimensions:t.dimensions??["event_type","score_degradation","tool_call_pattern"],minOccurrences:t.minOccurrences??3,minRoles:t.minRoles??2,scoreThresholdEma:C,scoreThresholdTask:w};try{let r=z(n);return{content:[{type:"text",text:JSON.stringify({ok:!0,...r})}]}}catch(r){return{content:[{type:"text",text:JSON.stringify({ok:!1,error:String(r)})}]}}})}var Re="audit-tools";function G(){return fe({name:Re,version:"1.0.0",tools:[ge()]})}var Se=new Set(["mcp__execution-tools__","mcp__mining-tools__","mcp__audit-tools__"]);function gt(e){if(!e)return!1;for(let s of Se)if(e.startsWith(s))return!0;return!1}function Rt(e){return e.presetId==="feature-miner"?{"mining-tools":Q(e.id)}:e.presetId==="mistake-digester"?{"audit-tools":G()}:{}}function yt(e,s){let t=e.toLowerCase(),n=e;return/\b401\b/.test(t)||/unauthorized/i.test(t)||/invalid.*(?:api.?)?key/i.test(t)||/auth.*fail/i.test(t)||/invalid.*token/i.test(t)||s?.httpStatus===401?{category:"AUTH",originalError:n,retryable:!1,userAction:"Update the API key or credentials in the Role configuration",sameRoleRetry:!1,differentRoleHelp:!1}:/\b429\b/.test(t)||/rate.?limit/i.test(t)||/too many requests/i.test(t)||/quota.?exhaust/i.test(t)||/rate.?limit.?exceed/i.test(t)||/too.?many.?calls/i.test(t)?{category:"RATE_LIMIT",originalError:n,retryable:!0,userAction:"Wait before retrying, or increase the rate limit quota",sameRoleRetry:!0,differentRoleHelp:!1}:/econnrefused/i.test(t)||/enotfound/i.test(t)||/dns/i.test(t)||/connection.?refused/i.test(t)||/connection.?reset/i.test(t)||/connection.?timed? ?out/i.test(t)||/fetch.?failed/i.test(t)||/network.?error/i.test(t)||/socket.?hang.?up/i.test(t)||/etimedout/i.test(t)?{category:"NETWORK",originalError:n,retryable:!0,userAction:"Check network connectivity and that the target service is reachable",sameRoleRetry:!0,differentRoleHelp:!1}:/prompt is too long/i.test(t)||/context.*exceed/i.test(t)||/context.*window/i.test(t)||/too many tokens/i.test(t)||/max.?tokens/i.test(t)||/token.?limit/i.test(t)?{category:"CONTEXT_OVERFLOW",originalError:n,retryable:!1,userAction:"Shorten the task prompt or simplify the request",sameRoleRetry:!1,differentRoleHelp:!1}:s?.sandboxViolation||/sandbox/i.test(t)||/not allowed.*sandbox/i.test(t)||/sandbox.*deny/i.test(t)||/operation.*denied.*sandbox/i.test(t)?{category:"SANDBOX_VIOLATION",originalError:n,retryable:!1,userAction:"Grant filesystem access in Role settings, or run without sandbox",sameRoleRetry:!1,differentRoleHelp:!0}:/tool.*not found/i.test(t)||/command not found/i.test(t)||/enoent/i.test(t)||/no such file/i.test(t)||/mcp.*error.*tool/i.test(t)||/tool.*blocked/i.test(t)||s?.toolName&&/not.*found/.test(t)&&/tool/.test(t)?{category:"TOOL_UNAVAILABLE",originalError:n,retryable:!1,userAction:"Install the required tool or plugin, or add it to the Role's allowed tools",sameRoleRetry:!1,differentRoleHelp:!0}:/timeout/i.test(t)||/timed out/i.test(t)||/exceeded.*seconds/i.test(t)?{category:"TIMEOUT",originalError:n,retryable:!0,userAction:"Increase the task timeout or simplify the task",sameRoleRetry:!0,differentRoleHelp:!1}:/invalid.*url/i.test(t)||/bad request/i.test(t)||/400\b/.test(t)||/wrong.*method/i.test(t)||/invalid.*param/i.test(t)||/missing.*param/i.test(t)?{category:"MALFORMED_REQUEST",originalError:n,retryable:!1,userAction:"Fix the task parameters and retry",sameRoleRetry:!1,differentRoleHelp:!1}:/internal.*error/i.test(t)||/unexpected.*error/i.test(t)||/500\b/.test(t)||/503\b/.test(t)?{category:"INTERNAL_ERROR",originalError:n,retryable:!0,userAction:"The service had an internal error. Retry may succeed.",sameRoleRetry:!0,differentRoleHelp:!1}:{category:"UNKNOWN",originalError:n,retryable:!1,userAction:void 0,sameRoleRetry:!1,differentRoleHelp:!1}}export{Ee as a,Te as b,A as c,ne as d,He as e,ee as f,B as g,Ie as h,xe as i,Me as j,he as k,J as l,Be as m,Ue as n,qe as o,Ye as p,Ke as q,Qe as r,Se as s,gt as t,Rt as u,yt as v,Xe as w,Ze as x};
61
+ `).all(p);for(let i of c){let g=(i.error??"").slice(0,60),R=`tool_call_pattern|${g}`;u.has(R)||u.set(R,{dimensionType:"tool_call_pattern",dimensionValue:g,count:0,roleIds:new Set,evidenceIds:[],firstSeen:1/0,lastSeen:0});let m=u.get(R);m.count++,i.role_id&&m.roleIds.add(i.role_id),m.evidenceIds.push({source:"delivery_log",id:i.id}),i.created_at<m.firstSeen&&(m.firstSeen=i.created_at),i.created_at>m.lastSeen&&(m.lastSeen=i.created_at)}}let f={};for(let c of u.keys()){let[i]=c.split("|");f[i]=(f[i]??0)+1}let E=Array.from(u.values()).filter(c=>c.count>=n&&c.roleIds.size>=r),T=0,I=l.transaction(()=>{for(let c of E)j({dimensionType:c.dimensionType,dimensionValue:c.dimensionValue,roleIds:Array.from(c.roleIds),sampleEvidenceIds:c.evidenceIds.slice(-10),firstSeen:c.firstSeen===1/0?Date.now():c.firstSeen,lastSeen:c.lastSeen}),T++});try{I()}catch(c){throw new Error(`aggregateMistakes: transaction failed: ${c}`)}let _=0;for(let c of u.values())_+=c.count;return{patternsUpserted:T,totalEventsScanned:_,dimensionCounts:f}}var X={windowDays:x.number().int().min(1).max(365).optional(),dimensions:x.enum(["event_type","score_degradation","tool_call_pattern"]).array().min(1).max(3).optional(),minOccurrences:x.number().int().min(1).max(100).optional(),minRoles:x.number().int().min(1).max(100).optional()};function Re(){return ge("aggregate_mistakes","Aggregate cross-role failure signals from the last N days into mistake patterns. Returns counts + dimensions; patterns are persisted to mistake_patterns for UI review. Notify-only: no role/permission/CAG mutation.",X,async e=>{let s=x.object(X).safeParse(e);if(!s.success)return{content:[{type:"text",text:JSON.stringify({ok:!1,error:s.error.message})}]};let t=s.data,n={windowDays:t.windowDays??14,dimensions:t.dimensions??["event_type","score_degradation","tool_call_pattern"],minOccurrences:t.minOccurrences??3,minRoles:t.minRoles??2,scoreThresholdEma:C,scoreThresholdTask:w};try{let r=z(n);return{content:[{type:"text",text:JSON.stringify({ok:!0,...r})}]}}catch(r){return{content:[{type:"text",text:JSON.stringify({ok:!1,error:String(r)})}]}}})}var Se="audit-tools";function $(){return _e({name:Se,version:"1.0.0",tools:[Re()]})}var ye=new Set(["mcp__execution-tools__","mcp__mining-tools__","mcp__audit-tools__"]);function St(e){if(!e)return!1;for(let s of ye)if(e.startsWith(s))return!0;return!1}var G=new Set(["mcp__claude_ai_"]);function Ee(e){if(!e)return!1;for(let s of G)if(e.startsWith(s))return!0;return!1}function yt(e){return(e??[]).some(t=>Ee(t))?[]:Array.from(G).map(t=>`${t}*`)}function Et(e){return e.presetId==="feature-miner"?{"mining-tools":Q(e.id)}:e.presetId==="mistake-digester"?{"audit-tools":$()}:{}}function bt(e,s){let t=e.toLowerCase(),n=e;return/\b401\b/.test(t)||/unauthorized/i.test(t)||/invalid.*(?:api.?)?key/i.test(t)||/auth.*fail/i.test(t)||/invalid.*token/i.test(t)||s?.httpStatus===401?{category:"AUTH",originalError:n,retryable:!1,userAction:"Update the API key or credentials in the Role configuration",sameRoleRetry:!1,differentRoleHelp:!1}:/\b429\b/.test(t)||/rate.?limit/i.test(t)||/too many requests/i.test(t)||/quota.?exhaust/i.test(t)||/rate.?limit.?exceed/i.test(t)||/too.?many.?calls/i.test(t)?{category:"RATE_LIMIT",originalError:n,retryable:!0,userAction:"Wait before retrying, or increase the rate limit quota",sameRoleRetry:!0,differentRoleHelp:!1}:/econnrefused/i.test(t)||/enotfound/i.test(t)||/dns/i.test(t)||/connection.?refused/i.test(t)||/connection.?reset/i.test(t)||/connection.?timed? ?out/i.test(t)||/fetch.?failed/i.test(t)||/network.?error/i.test(t)||/socket.?hang.?up/i.test(t)||/etimedout/i.test(t)?{category:"NETWORK",originalError:n,retryable:!0,userAction:"Check network connectivity and that the target service is reachable",sameRoleRetry:!0,differentRoleHelp:!1}:/prompt is too long/i.test(t)||/context.*exceed/i.test(t)||/context.*window/i.test(t)||/too many tokens/i.test(t)||/max.?tokens/i.test(t)||/token.?limit/i.test(t)?{category:"CONTEXT_OVERFLOW",originalError:n,retryable:!1,userAction:"Shorten the task prompt or simplify the request",sameRoleRetry:!1,differentRoleHelp:!1}:s?.sandboxViolation||/sandbox/i.test(t)||/not allowed.*sandbox/i.test(t)||/sandbox.*deny/i.test(t)||/operation.*denied.*sandbox/i.test(t)?{category:"SANDBOX_VIOLATION",originalError:n,retryable:!1,userAction:"Grant filesystem access in Role settings, or run without sandbox",sameRoleRetry:!1,differentRoleHelp:!0}:/tool.*not found/i.test(t)||/command not found/i.test(t)||/enoent/i.test(t)||/no such file/i.test(t)||/mcp.*error.*tool/i.test(t)||/tool.*blocked/i.test(t)||s?.toolName&&/not.*found/.test(t)&&/tool/.test(t)?{category:"TOOL_UNAVAILABLE",originalError:n,retryable:!1,userAction:"Install the required tool or plugin, or add it to the Role's allowed tools",sameRoleRetry:!1,differentRoleHelp:!0}:/timeout/i.test(t)||/timed out/i.test(t)||/exceeded.*seconds/i.test(t)?{category:"TIMEOUT",originalError:n,retryable:!0,userAction:"Increase the task timeout or simplify the task",sameRoleRetry:!0,differentRoleHelp:!1}:/invalid.*url/i.test(t)||/bad request/i.test(t)||/400\b/.test(t)||/wrong.*method/i.test(t)||/invalid.*param/i.test(t)||/missing.*param/i.test(t)?{category:"MALFORMED_REQUEST",originalError:n,retryable:!1,userAction:"Fix the task parameters and retry",sameRoleRetry:!1,differentRoleHelp:!1}:/internal.*error/i.test(t)||/unexpected.*error/i.test(t)||/500\b/.test(t)||/503\b/.test(t)?{category:"INTERNAL_ERROR",originalError:n,retryable:!0,userAction:"The service had an internal error. Retry may succeed.",sameRoleRetry:!0,differentRoleHelp:!1}:{category:"UNKNOWN",originalError:n,retryable:!1,userAction:void 0,sameRoleRetry:!1,differentRoleHelp:!1}}export{be as a,ke as b,A as c,re as d,We as e,te as f,U as g,Me as h,he as i,De as j,ve as k,J as l,qe as m,Je as n,je as o,Qe as p,ze as q,Xe as r,ye as s,St as t,Ee as u,yt as v,Et as w,bt as x,et as y,tt as z};
@@ -1,4 +1,4 @@
1
- import{k as D}from"./chunk-IEBAOZED.js";import{c as L,p as K}from"./chunk-2A2TXYT3.js";import{a as M,e as E}from"./chunk-3MROEPGR.js";import{n as y,p as W}from"./chunk-WY5BOCQP.js";import{c as b,h as w}from"./chunk-EZLBMUQD.js";W();function N(m){if(m.length===0)return;let s=y(),e=s.prepare(`
1
+ import{k as D}from"./chunk-VVPB3TD4.js";import{c as L,p as K}from"./chunk-3JTHJ3FZ.js";import{a as M,e as E}from"./chunk-3MROEPGR.js";import{o as y,q as W}from"./chunk-ZEGZ2I35.js";import{c as b,h as w}from"./chunk-EZLBMUQD.js";W();function N(m){if(m.length===0)return;let s=y(),e=s.prepare(`
2
2
  INSERT OR IGNORE INTO llm_costs
3
3
  (id, call_id, source, model, role_id, task_id, session_id, message_id,
4
4
  input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens,
@@ -1,8 +1,8 @@
1
- import{d as D}from"./chunk-JROGEBP5.js";import{a as b}from"./chunk-4N5G7ND2.js";import{f as v}from"./chunk-IEBAOZED.js";import{g as O}from"./chunk-TWOJVEO7.js";import{a as S,b as P,c,d as I,e as w,f as C,g as M}from"./chunk-JYZTIE2J.js";import{b as y}from"./chunk-TA5PFK5C.js";import{b as R}from"./chunk-4JHACUZY.js";import{s as k}from"./chunk-VWX2B6OM.js";import{a as f}from"./chunk-L7JP7DUO.js";import{b as h,p as B}from"./chunk-2A2TXYT3.js";import{c as x}from"./chunk-6WQFYV3N.js";import{n as d,p as j}from"./chunk-WY5BOCQP.js";import{c as E,h as N}from"./chunk-EZLBMUQD.js";j();function L(i){return{id:i.id,eventType:i.event_type,matchCriteria:JSON.parse(i.match_criteria),target:JSON.parse(i.target),formatTemplate:i.format_template??void 0,maxPerMinute:i.max_per_minute,skipOriginChannel:i.skip_origin_channel===1,enabled:i.enabled===1,createdAt:i.created_at,createdBy:i.created_by??void 0}}function q(i){d().prepare(`
1
+ import{d as D}from"./chunk-YGZQMZTA.js";import{a as b}from"./chunk-4N5G7ND2.js";import{f as v}from"./chunk-VVPB3TD4.js";import{j as O}from"./chunk-R3MSLP6P.js";import{a as S,b as P,c,d as I,e as w,f as C,g as M}from"./chunk-PU2T7HBY.js";import{b as y}from"./chunk-YI2QQTZE.js";import{b as R}from"./chunk-X3PJNX2R.js";import{s as k}from"./chunk-G5I76LX2.js";import{a as f}from"./chunk-L7JP7DUO.js";import{b as h,p as B}from"./chunk-3JTHJ3FZ.js";import{c as x}from"./chunk-XEXSXMWK.js";import{o as d,q as j}from"./chunk-ZEGZ2I35.js";import{c as E,h as N}from"./chunk-EZLBMUQD.js";j();function L(i){return{id:i.id,eventType:i.event_type,matchCriteria:JSON.parse(i.match_criteria),target:JSON.parse(i.target),formatTemplate:i.format_template??void 0,maxPerMinute:i.max_per_minute,skipOriginChannel:i.skip_origin_channel===1,enabled:i.enabled===1,createdAt:i.created_at,createdBy:i.created_by??void 0}}function q(i){d().prepare(`
2
2
  INSERT INTO delivery_rules (id, event_type, match_criteria, target, format_template,
3
3
  max_per_minute, skip_origin_channel, enabled, created_at, created_by)
4
4
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
5
- `).run(i.id,i.eventType,JSON.stringify(i.matchCriteria),JSON.stringify(i.target),i.formatTemplate??null,i.maxPerMinute,i.skipOriginChannel?1:0,i.enabled?1:0,i.createdAt,i.createdBy??null)}function H(i){let n=d().prepare("SELECT * FROM delivery_rules WHERE id = ?").get(i);return n?L(n):void 0}function W(i){let e=d(),n="SELECT * FROM delivery_rules",r=[];return i!==void 0&&(n+=" WHERE enabled = ?",r.push(i?1:0)),n+=" ORDER BY created_at DESC",e.prepare(n).all(...r).map(L)}function U(i,e){let n=d(),r=[],t=[];e.eventType!==void 0&&(r.push("event_type = ?"),t.push(e.eventType)),e.matchCriteria!==void 0&&(r.push("match_criteria = ?"),t.push(JSON.stringify(e.matchCriteria))),e.target!==void 0&&(r.push("target = ?"),t.push(JSON.stringify(e.target))),e.formatTemplate!==void 0&&(r.push("format_template = ?"),t.push(e.formatTemplate)),e.maxPerMinute!==void 0&&(r.push("max_per_minute = ?"),t.push(e.maxPerMinute)),e.skipOriginChannel!==void 0&&(r.push("skip_origin_channel = ?"),t.push(e.skipOriginChannel?1:0)),e.enabled!==void 0&&(r.push("enabled = ?"),t.push(e.enabled?1:0)),r.length!==0&&(t.push(i),n.prepare(`UPDATE delivery_rules SET ${r.join(", ")} WHERE id = ?`).run(...t))}function G(i){let e=d();e.prepare("DELETE FROM delivery_log WHERE rule_id = ?").run(i),e.prepare("DELETE FROM delivery_rules WHERE id = ?").run(i)}function A(i,e){return W(!0).filter(r=>{if(r.eventType!=="*"&&r.eventType!==i)return!1;let t=r.matchCriteria;if(t.templateId&&t.templateId!==e.templateId||t.roleId&&t.roleId!==e.roleId||t.taskStatus&&t.taskStatus!==e.taskStatus)return!1;if(t.promptPattern)try{if(!new RegExp(t.promptPattern,"i").test(e.prompt??""))return!1}catch{return!1}if(t.excludePromptPatterns&&t.excludePromptPatterns.length>0){let a=e.prompt??"";for(let s of t.excludePromptPatterns)if(!(typeof s!="string"||s.length>200))try{if(new RegExp(s,"i").test(a))return!1}catch{continue}}return!0})}B();N();import{v4 as J}from"uuid";function F(i){return!!(i.templateId&&i.stepId&&i.parentId)}var l=E("admin"),_=new Map,m=null,g=null,u=null,T=class{constructor(){f.on("task_status_change",e=>{(e.newStatus==="completed"||e.newStatus==="failed")&&this.handleTaskStatusChange(e.taskId,e.newStatus).catch(n=>{l.error({taskId:e.taskId,error:n},"Delivery processing failed")})}),f.on("plan_approval_request",e=>{this.handlePlanApprovalRequest(e.taskId,e.planId,e.plan).catch(n=>{l.error({taskId:e.taskId,error:n},"Delivery processing failed (plan_approval)")})}),f.on("template_execution_status_change",e=>{e.status==="failed"&&this.handleTemplateExecutionFailure(e.executionId,e.templateId).catch(n=>{l.error({executionId:e.executionId,error:n},"Template failure delivery processing failed")})}),l.info("DeliveryEngine initialized")}async handlePlanApprovalRequest(e,n,r){let t=h(e),a=this.getSourceChannelForTask(e);if(a){let o=D(r),{sendApprovalToChannel:p}=await import("./approval-handler-BWA7UIKN.js");await p(a.channelId,a.chatId,n,e,o)}let s=D(r)+`
5
+ `).run(i.id,i.eventType,JSON.stringify(i.matchCriteria),JSON.stringify(i.target),i.formatTemplate??null,i.maxPerMinute,i.skipOriginChannel?1:0,i.enabled?1:0,i.createdAt,i.createdBy??null)}function H(i){let n=d().prepare("SELECT * FROM delivery_rules WHERE id = ?").get(i);return n?L(n):void 0}function W(i){let e=d(),n="SELECT * FROM delivery_rules",r=[];return i!==void 0&&(n+=" WHERE enabled = ?",r.push(i?1:0)),n+=" ORDER BY created_at DESC",e.prepare(n).all(...r).map(L)}function U(i,e){let n=d(),r=[],t=[];e.eventType!==void 0&&(r.push("event_type = ?"),t.push(e.eventType)),e.matchCriteria!==void 0&&(r.push("match_criteria = ?"),t.push(JSON.stringify(e.matchCriteria))),e.target!==void 0&&(r.push("target = ?"),t.push(JSON.stringify(e.target))),e.formatTemplate!==void 0&&(r.push("format_template = ?"),t.push(e.formatTemplate)),e.maxPerMinute!==void 0&&(r.push("max_per_minute = ?"),t.push(e.maxPerMinute)),e.skipOriginChannel!==void 0&&(r.push("skip_origin_channel = ?"),t.push(e.skipOriginChannel?1:0)),e.enabled!==void 0&&(r.push("enabled = ?"),t.push(e.enabled?1:0)),r.length!==0&&(t.push(i),n.prepare(`UPDATE delivery_rules SET ${r.join(", ")} WHERE id = ?`).run(...t))}function G(i){let e=d();e.prepare("DELETE FROM delivery_log WHERE rule_id = ?").run(i),e.prepare("DELETE FROM delivery_rules WHERE id = ?").run(i)}function A(i,e){return W(!0).filter(r=>{if(r.eventType!=="*"&&r.eventType!==i)return!1;let t=r.matchCriteria;if(t.templateId&&t.templateId!==e.templateId||t.roleId&&t.roleId!==e.roleId||t.taskStatus&&t.taskStatus!==e.taskStatus)return!1;if(t.promptPattern)try{if(!new RegExp(t.promptPattern,"i").test(e.prompt??""))return!1}catch{return!1}if(t.excludePromptPatterns&&t.excludePromptPatterns.length>0){let a=e.prompt??"";for(let s of t.excludePromptPatterns)if(!(typeof s!="string"||s.length>200))try{if(new RegExp(s,"i").test(a))return!1}catch{continue}}return!0})}B();N();import{v4 as J}from"uuid";function F(i){return!!(i.templateId&&i.stepId&&i.parentId)}var l=E("admin"),_=new Map,m=null,g=null,u=null,T=class{constructor(){f.on("task_status_change",e=>{(e.newStatus==="completed"||e.newStatus==="failed")&&this.handleTaskStatusChange(e.taskId,e.newStatus).catch(n=>{l.error({taskId:e.taskId,error:n},"Delivery processing failed")})}),f.on("plan_approval_request",e=>{this.handlePlanApprovalRequest(e.taskId,e.planId,e.plan).catch(n=>{l.error({taskId:e.taskId,error:n},"Delivery processing failed (plan_approval)")})}),f.on("template_execution_status_change",e=>{e.status==="failed"&&this.handleTemplateExecutionFailure(e.executionId,e.templateId).catch(n=>{l.error({executionId:e.executionId,error:n},"Template failure delivery processing failed")})}),l.info("DeliveryEngine initialized")}async handlePlanApprovalRequest(e,n,r){let t=h(e),a=this.getSourceChannelForTask(e);if(a){let o=D(r),{sendApprovalToChannel:p}=await import("./approval-handler-GXIVBJ4Z.js");await p(a.channelId,a.chatId,n,e,o)}let s=D(r)+`
6
6
 
7
7
  Task: ${e}`;await this.matchAndDeliver("plan_approval_request",{templateId:t?.templateId,roleId:t?.roleId,prompt:t?.prompt,taskStatus:"pending"},s,e)}async handleTemplateExecutionFailure(e,n){let r=R(e),t=n?k(n):null,a=r?Object.entries(r.stepStatuses).filter(([,o])=>o.status==="failed"):[],s=["\u26A0\uFE0F TemplateExecution failed",`Template: ${t?.name??n}`,`Execution: ${e}`,`Failed steps: ${a.map(([o])=>o).join(", ")||"(unknown \u2014 no failed step recorded)"}`,a[0]?.[1]?.error?`
8
8
  First error: ${a[0][1].error.slice(0,300)}`:""].filter(Boolean).join(`
@@ -1,4 +1,4 @@
1
- import{g}from"./chunk-QTGAK62Z.js";import{f as T,i as K}from"./chunk-NSUXJ2VA.js";import{r as _,t as E,u as f}from"./chunk-VWX2B6OM.js";import{C as R,D as A,E as c,F as x,G as C,L as z}from"./chunk-2A2TXYT3.js";import{b as U,c as Y,d as H}from"./chunk-5PELJRUQ.js";var L={};Y(L,{seedAdamAutomatorSkills:()=>J});async function J(t){let{ensureRoleWorkspace:r}=await import("./role-workspace-AIVHPX5P.js"),{getRole:e}=await import("./roles-WDMUBWQP.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{g}from"./chunk-LE5YRP37.js";import{f as T,i as K}from"./chunk-6NIWU43Z.js";import{r as _,t as E,u as f}from"./chunk-G5I76LX2.js";import{C as R,D as A,E as c,F as x,G as C,L as z}from"./chunk-3JTHJ3FZ.js";import{b as U,c as Y,d as H}from"./chunk-5PELJRUQ.js";var L={};Y(L,{seedAdamAutomatorSkills:()=>J});async function J(t){let{ensureRoleWorkspace:r}=await import("./role-workspace-AOYIGLG4.js"),{getRole:e}=await import("./roles-5TWJBGAQ.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
 
@@ -0,0 +1,32 @@
1
+ import{b as K,c as A,d as L}from"./chunk-PU2T7HBY.js";import{a as te,e as re,g as ne}from"./chunk-5ZL6RHPE.js";import{a as N,d as be}from"./chunk-NX3CIEZA.js";import{b as X,h as Q,i as Z}from"./chunk-X3PJNX2R.js";import{s as G}from"./chunk-G5I76LX2.js";import{a as w}from"./chunk-L7JP7DUO.js";import{c as R,h as ee}from"./chunk-XEXSXMWK.js";import{e as Y,s as ve}from"./chunk-6GVYOHD5.js";import{o as D,q as _e}from"./chunk-ZEGZ2I35.js";import{c as q,h as Ie}from"./chunk-EZLBMUQD.js";import{c as O,e as J}from"./chunk-5M6IGE5G.js";import{existsSync as Ue}from"fs";import{createHash as Ve}from"crypto";import{isAbsolute as Pe}from"path";be();_e();J();import{v4 as Te}from"uuid";function oe(e){return{id:e.id,eventKey:e.event_key,sourceType:e.source_type,sourceId:e.source_id,taskId:e.task_id??void 0,templateId:e.template_id??void 0,templateName:e.template_name??void 0,messageType:e.message_type,viewerKey:e.viewer_key,title:e.title??void 0,contentPreview:e.content_preview,attachments:C(e.attachments_json),targets:C(e.targets_json),firstDeliveredAt:e.first_delivered_at,lastDeliveredAt:e.last_delivered_at,createdAt:e.created_at,traceId:e.trace_id??void 0}}function C(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function de(e){if(!e.viewerKey||e.viewerKey.trim().length===0)throw new Error("recordUserVisibleDeliveryEvent requires viewerKey");if(!e.eventKey||e.eventKey.trim().length===0)throw new Error("recordUserVisibleDeliveryEvent requires eventKey");if(!e.sourceId||e.sourceId.trim().length===0)throw new Error("recordUserVisibleDeliveryEvent requires sourceId");let t=D(),r=Date.now(),n=e.deliveredAt??r,a=t.prepare("SELECT * FROM user_visible_events WHERE event_key = ?").get(e.eventKey);if(!a){let d=Te();return t.prepare(`
2
+ INSERT INTO user_visible_events (
3
+ id, event_key, source_type, source_id, task_id, template_id, template_name,
4
+ message_type, viewer_key, title, content_preview, attachments_json,
5
+ targets_json, first_delivered_at, last_delivered_at, created_at, trace_id
6
+ )
7
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
8
+ `).run(d,e.eventKey,e.sourceType,e.sourceId,e.taskId??null,e.templateId??null,e.templateName??null,e.messageType,e.viewerKey,e.title??null,e.contentPreview,JSON.stringify(e.attachments??[]),JSON.stringify(e.targets??[]),n,n,r,e.traceId??O()??null),ie(e.eventKey)}let i=we(C(a.targets_json),e.targets??[]),o=Ae(C(a.attachments_json),e.attachments??[]);return t.prepare(`
9
+ UPDATE user_visible_events
10
+ SET task_id = COALESCE(task_id, ?),
11
+ template_id = COALESCE(template_id, ?),
12
+ template_name = COALESCE(template_name, ?),
13
+ title = COALESCE(title, ?),
14
+ content_preview = CASE WHEN content_preview = '' THEN ? ELSE content_preview END,
15
+ attachments_json = ?,
16
+ targets_json = ?,
17
+ last_delivered_at = MAX(last_delivered_at, ?),
18
+ trace_id = COALESCE(trace_id, ?)
19
+ WHERE event_key = ?
20
+ `).run(e.taskId??null,e.templateId??null,e.templateName??null,e.title??null,e.contentPreview,JSON.stringify(o),JSON.stringify(i),n,e.traceId??O()??null,e.eventKey),ie(e.eventKey)}function ie(e){let t=D().prepare("SELECT * FROM user_visible_events WHERE event_key = ?").get(e);return t?oe(t):void 0}function Je(e){let t=D(),r=e.excludeSourceIds??[],n=[e.viewerKey,e.since,e.until],a=`
21
+ SELECT * FROM user_visible_events
22
+ WHERE viewer_key = ?
23
+ AND last_delivered_at >= ?
24
+ AND last_delivered_at <= ?
25
+ `;return r.length>0&&(a+=` AND source_id NOT IN (${r.map(()=>"?").join(",")})`,n.push(...r)),a+=" ORDER BY last_delivered_at ASC",e.limit!==void 0&&(a+=" LIMIT ?",n.push(e.limit)),t.prepare(a).all(...n).map(oe)}function we(e,t){let r=[...e];for(let n of t){let a=se(n);r.some(i=>se(i)===a)||r.push(n)}return r}function se(e){return[e.type,e.channelId??"",e.webhookUrl??"",e.chatId??"",e.sessionId??""].join("|")}function Ae(e,t){let r=[...e];for(let n of t){let a=ae(n),i=r.findIndex(o=>ae(o)===a);i>=0?r[i]={...r[i],...n}:r.push(n)}return r}function ae(e){return e.artifactId?`artifact:${e.artifactId}`:["file",e.filename??"",e.sizeBytes??"",e.mimeType??""].join("|")}Ie();import{v4 as B}from"uuid";J();ve();import{basename as U,extname as ce}from"path";import{readFileSync as ke}from"fs";function le(e){return Y(e).filter(t=>t.kind==="file"&&!!t.blobPath)}function tt(e){return e.replace(/[\\/:*?"<>|]/g,"").replace(/\s+/g,"").replace(/^\.+/,"").trim()}function rt(e){if(e.kind!=="file"||!e.blobPath)return;let t;try{t=ke(e.blobPath,"utf-8")}catch{return}let n=t.match(/^#\s+(.+?)\s*$/m)?.[1]?.trim();return n&&n.length>0?n:void 0}function Ee(e){let t=e.mime??"";return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function Oe(e){let t=U(e.key??"").replace(/[\\/]/g,"-");if(e.originalFilename){let r=U(e.originalFilename).replace(/[\\/]/g,"-");if(ce(r))return r}if(ce(t))return t;if(e.mime){let r=ne(e.mime);if(r&&r!==".bin"&&t)return`${t}${r}`}return e.originalFilename?U(e.originalFilename).replace(/[\\/]/g,"-"):t||(e.blobPath?U(e.blobPath):e.id)}function ue(e){return e.map(t=>xe(t))}function xe(e,t){return{path:e.blobPath,mediaType:t?.mediaType??Ee(e),filename:t?.filename??Oe(e),contentType:e.mime,mimeType:e.mime,artifactId:e.id,locator:e.locator,sizeBytes:e.sizeBytes,purpose:e.purpose,contentHash:e.contentHash}}function $(e){if(e.priority!==void 0&&e.priority!==null)return e.priority;let t=e.mime??"";return t.startsWith("audio/")||t.startsWith("video/")?10:t==="text/markdown"||t==="text/plain"?50:t.startsWith("image/")?100:200}var x=1.33;function me(e,t){if(e.length===0)return{included:[],dropped:[]};let r=[...e].sort((d,s)=>{let g=$(d),y=$(s);return g!==y?g-y:s.sizeBytes-d.sizeBytes}),n=r[0];if(n.sizeBytes*x>t){if(r.length===1)return{firstItemOverflow:n};let d=r.slice(1),s=[],g=[],y=0;for(let _ of d){let l=_.sizeBytes*x;y+l<=t?(s.push(_),y+=l):g.push(_)}return s.length===0?{firstItemOverflow:n}:{included:s,dropped:[n,...g],firstOverflowWarning:!0}}let a=[],i=[],o=0;for(let d of r){let s=d.sizeBytes*x;o+s<=t?(a.push(d),o+=s):i.push(d)}return{included:a,dropped:i}}function pe(e,t,r,n){if(t.length===0)return e;let a=(r/(1024*1024)).toFixed(1),i=t.map(d=>`- ${d.filename} (${Se(d.sizeBytes)})`),o=e.endsWith(`---
26
+ `)||e.endsWith("---")?"":`
27
+
28
+ ---`;return`${e}${o}
29
+ \u26A0\uFE0F \u56E0 ${n} \u90AE\u7BB1 ${a}MB \u4E0A\u9650\uFF0C\u4EE5\u4E0B\u4EA7\u7269\u672A\u9644\uFF1A
30
+ ${i.join(`
31
+ `)}
32
+ `}function Se(e){return e<1024?`${e} bytes`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`}var F=class extends Error{constructor(r,n,a,i,o){super(`OutboundFirstAttachmentExceedsCap: artifactKey=${r} sizeBytes=${n} effectiveSizeBytes=${a} capBytes=${i} recipientDomain=${o}`);this.artifactKey=r;this.sizeBytes=n;this.effectiveSizeBytes=a;this.capBytes=i;this.recipientDomain=o;this.name="OutboundFirstAttachmentExceedsCap"}artifactKey;sizeBytes;effectiveSizeBytes;capBytes;recipientDomain};function De(e){if(!e)return"";let t=e.lastIndexOf("@");return t<0||t===e.length-1?"":e.slice(t+1).toLowerCase().trim()}function Re(e,t){return t.find(r=>r.id===e)?.key??e}function Ce(e,t){return t.find(r=>r.artifactId===e)?.filename??e}function fe(e,t,r,n,a){let i=De(t),o=ee(e,i),d=r.map(l=>({id:l.id,sizeBytes:l.sizeBytes??0,priority:l.priority??void 0,mime:l.mime??void 0})),s=me(d,o);if("firstItemOverflow"in s){let l=s.firstItemOverflow,h=Re(l.id,r);return{ok:!1,error:new F(h,l.sizeBytes,Math.floor(l.sizeBytes*x),o,i).message}}let g=new Set(s.included.map(l=>l.id)),y=n.filter(l=>l.artifactId&&g.has(l.artifactId)),_=a;if(s.dropped.length>0){let l=s.dropped.map(h=>({filename:Ce(h.id,n),sizeBytes:h.sizeBytes}));_=pe(a,l,o,i)}return{ok:!0,result:{perTargetAttachments:y,perTargetContent:_}}}var E=q("adam"),z=class{_dedupCache=new Map;_rateLimitWindows=new Map;_recentlySentIds=new Set;_laneTails=new Map;async _acquireLane(t,r){let n=`${t}:${r}`,a=this._laneTails.get(n)??Promise.resolve(),i,o=new Promise(d=>{i=d});return this._laneTails.set(n,o),o.then(()=>{this._laneTails.get(n)===o&&this._laneTails.delete(n)}),await a,i}isRecentlySent(t){return this._recentlySentIds.has(t)}async send(t){let{taskId:r,channelId:n,chatId:a,content:i,messageType:o,platform:d,webhookUrl:s,replyMarkup:g,replyToMessageId:y,quoteExcerpt:_,quoteTitle:l,mediaUrl:h,mediaType:k,attachments:S,dedupDiscriminator:W}=t,I=ge(o),ye=I!=="reply"&&!!r,u;if(ye){u=`${r}:${n??"none"}:${a??"none"}:${I}${W?`:${W}`:""}`;let f=this._dedupCache.get(u);if(f&&Date.now()-f.timestamp<300*1e3)return E.debug({dedupKey:u},"Dedup hit, returning cached log entry"),{success:!0,logEntryId:f.logEntryId}}if(n){let f=Date.now(),v=6e4,p=this._rateLimitWindows.get(n);p||(p=[],this._rateLimitWindows.set(n,p));let P=f-v;for(;p.length>0&&p[0]<P;)p.shift();if(p.length>=60){let M=B();E.warn({channelId:n,count:p.length},"Rate limited, not sending");let b={type:"channel",channelId:n,chatId:a??""};return this._writeOutboundReceipt(t,b,i,"failure"),{success:!1,logEntryId:M,error:"rate_limited"}}p.push(f)}let he=d??(n?R(n)?.platform:void 0)??"unknown",H=s?i:te(i,he,r),c=B(),m={id:c,ruleId:void 0,taskId:r??void 0,status:"pending",target:n&&a?{type:"channel",channelId:n,chatId:a}:s?{type:"webhook",webhookUrl:s}:{type:"channel",channelId:n??"",chatId:a??""},content:H,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:I};K(m),u&&this._dedupCache.set(u,{logEntryId:c,timestamp:Date.now()});try{let f=je(h);if(f)return A(c,"failed",f),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:f,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:f};if(s){let v=await fetch(s,{method:"POST",body:JSON.stringify({result:i,taskId:r,timestamp:new Date().toISOString()}),signal:AbortSignal.timeout(1e4)});if(v.ok)return L(c),this._recordDeliveryLedgerAfterSuccess(t,m.target,I,i),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"delivered",messageType:I}),{success:!0,logEntryId:c};{let p=`Webhook returned ${v.status}`;return A(c,"failed",p),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:p,messageType:I}),{success:!1,logEntryId:c,error:p}}}else if(n&&a){let{getChannelManager:v}=await Be(),p=v();if(!p){let T="ChannelManager not available";return A(c,"failed",T),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:T,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:T}}let P={content:H,messageType:I,...g?{replyMarkup:g}:{},...y?{replyToMessageId:y}:{},..._?{quoteExcerpt:_}:{},...l?{quoteTitle:l}:{},...h?{mediaUrl:h}:{},...k?{mediaType:k}:{},...S?{attachments:S}:{}},M=await this._acquireLane(n,a),b;try{b=await p.sendMessage(n,a,P)}finally{M()}if(b===null){let T="Channel adapter send failed (returned null)";return A(c,"failed",T),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:T,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:T}}if(b&&(this._recentlySentIds.add(b),setTimeout(()=>this._recentlySentIds.delete(b),300*1e3)),b?.startsWith("queued-")){let T="queued_not_delivered";return u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"pending",error:T,messageType:I}),{success:!1,messageId:b,logEntryId:c,error:T}}return L(c),this._recordDeliveryLedgerAfterSuccess(t,m.target,I,i),this._writeOutboundReceipt(t,m.target,i,"success"),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"delivered",messageType:I}),{success:!0,messageId:b??void 0,logEntryId:c}}else{let v="No channelId/chatId or webhookUrl provided";return A(c,"failed",v),u&&this._dedupCache.delete(u),{success:!1,logEntryId:c,error:v}}}catch(f){let v=f instanceof Error?f.message:String(f);return A(c,"failed",v),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:v,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:v}}}_writeOutboundReceipt(t,r,n,a){if(r.type!=="channel"||!r.channelId)return;let i=O();if(!i){E.debug({taskId:t.taskId,channelId:r.channelId,outcome:a},"Outbound receipt skipped: no active trace context");return}let o=(t.attachments??[]).map(s=>s.artifactId).filter(s=>typeof s=="string"&&s.length>0),d=t.actorToolName??"OutboundGateway.send";try{Z({traceId:i,taskId:t.taskId,sessionId:t.sessionId,effectCategory:"outbound_message",verb:"send",entityType:"channel_message",target:{channelId:r.channelId,chatId:r.chatId,platform:t.platform},payload:{textChars:n.length,attachmentCount:t.attachments?.length??0,attachmentRefs:o.length>0?o:void 0},actor:{traceId:i,toolName:d,taskId:t.taskId},outcome:a})}catch(s){s instanceof Q?E.warn({errors:s.errors,taskId:t.taskId,channelId:r.channelId},"Outbound receipt validation failed"):E.warn({error:s instanceof Error?s.message:String(s),taskId:t.taskId},"Outbound receipt write failed")}}async redeliverExecutionTo(t){let r=t.includeArtifacts??!0,n=t.messageType??"result_delivery",a=t.dedupDiscriminator??`redelivery:${Date.now()}`,i=r?t.fileArtifacts??le(t.executionId):[],o=t.attachments??(i.length>0?ue(i):void 0),d=[];for(let s of t.targets){let g=R(s.channelId);if(!g){d.push({target:{channelId:s.channelId,chatId:s.chatId},deliveryLogId:"",status:"failed",attachmentCount:0,error:`Channel not found: ${s.channelId}`});continue}let y=o,_=t.content;if(g.platform==="email"&&o&&o.length>0){let h=fe(s.channelId,s.chatId,i,o,t.content);if(!h.ok){let k=B(),S={type:"channel",channelId:s.channelId,chatId:s.chatId??""};K({id:k,ruleId:void 0,taskId:t.executionId,status:"pending",target:S,content:t.content,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:ge(n)}),A(k,"failed",h.error),d.push({target:{channelId:s.channelId,chatId:s.chatId},deliveryLogId:k,status:"failed",attachmentCount:0,error:h.error});continue}y=h.result.perTargetAttachments,_=h.result.perTargetContent}let l=await this.send({taskId:t.executionId,sessionId:t.sessionId,channelId:s.channelId,chatId:s.chatId,content:_,messageType:n,platform:g.platform,attachments:y,dedupDiscriminator:a,actorToolName:t.actorToolName});d.push({target:{channelId:s.channelId,chatId:s.chatId},deliveryLogId:l.logEntryId,status:l.success?"delivered":"failed",attachmentCount:y?.length??0,...l.error?{error:l.error}:{}})}return{deliveries:d}}_recordDeliveryLedgerAfterSuccess(t,r,n,a){if(Me(n,t.taskId))try{let i=Ke(t,r);if(!i){N({source:"delivery_ledger",severity:"warning",sourceId:t.taskId,message:`Skipped user-visible delivery ledger write for ${n}: viewer identity unresolved`});return}let o=Le(t.taskId),d=Fe(a);de({eventKey:`${i}|${o.sourceId}|${n}|${d}`,sourceType:o.sourceType,sourceId:o.sourceId,taskId:t.taskId,templateId:o.templateId,templateName:o.templateName,messageType:n,viewerKey:i,title:o.templateName,contentPreview:a,attachments:(t.attachments??[]).map(Ne),targets:[$e(r)]})}catch(i){let o=i instanceof Error?i.message:String(i);E.warn({error:o,taskId:t.taskId,messageType:n},"User-visible delivery ledger write failed");try{N({source:"delivery_ledger",severity:"error",sourceId:t.taskId,message:o})}catch{}}}};function Me(e,t){return t?!["reply","assistant_text","user_message","approval","approval_prompt"].includes(e):!1}function Ke(e,t){if(e.viewerKey)return e.viewerKey;if(t.type==="channel"&&t.channelId)return re({type:"channel",channelId:t.channelId,chatId:t.chatId})}function Le(e){let t=X(e);if(!t)return{sourceType:"task",sourceId:e};let r=G(t.templateId);return{sourceType:"template_execution",sourceId:t.id,templateId:t.templateId,templateName:r?.name}}function Ne(e){return{artifactId:e.artifactId,locator:e.locator,filename:e.filename,mimeType:e.mimeType??e.contentType,sizeBytes:e.sizeBytes,purpose:e.purpose,contentHash:e.contentHash}}function $e(e){if(e.type==="webhook")return{type:"webhook",webhookUrl:e.webhookUrl};let t=e.channelId?R(e.channelId):void 0;return{type:"channel",channelId:e.channelId,chatId:e.chatId,label:t?.name}}function Fe(e){return Ve("sha256").update(e).digest("hex")}var V=null;function Be(){return V||(V=import("./channels-YOBMSBWV.js")),V}function Dt(){V=null}function je(e){if(!e)return;if(e.includes("://")&&!e.startsWith("file://"))return"mediaUrl must be a local file path";let t=e.startsWith("file://")?new URL(e).pathname:e;if(!Pe(t))return"mediaUrl must be absolute";if(!Ue(t))return"mediaUrl file does not exist"}function ge(e){return e==="report"?"status_report":e==="deliver"?"result_delivery":e}var j=null;function ze(){return j||(j=new z),j}function Rt(e){return ze().isRecentlySent(e)}export{Je as a,le as b,tt as c,rt as d,Ee as e,Oe as f,xe as g,z as h,Dt as i,ze as j,Rt as k};
@@ -1 +1 @@
1
- import{e as A,i as J}from"./chunk-NSUXJ2VA.js";import{A as D,w as v}from"./chunk-2A2TXYT3.js";import{existsSync as m,readFileSync as P,readdirSync as w}from"fs";import{join as d}from"path";import E from"os";var b=()=>d(E.homedir(),".claude","plugins"),S=()=>d(b(),"installed_plugins.json"),_=()=>d(b(),"known_marketplaces.json"),x=()=>d(E.homedir(),".claude","settings.json");function y(s){try{if(!m(s))return null;let i=P(s,"utf-8");return JSON.parse(i)}catch{return null}}function R(){return y(x())?.enabledPlugins??{}}function T(s){let i=s;function l(t,p){let a={};try{if(!m(t))return a;let u=P(t,"utf-8").replace(/^```yaml\r?\n/,"").replace(/^```\r?\n/,"");for(let f of p){let r=new RegExp(`^${f}:\\s*(.+)$`,"m"),e=u.match(r);e&&(a[f]=e[1].trim())}}catch{}return a}function o(t){try{if(!m(t))return{};let p=P(t,"utf-8"),a=p.match(/^```yaml\r?\n([\s\S]*?)\r?\n```\r?\n/);if(!a){let r={};for(let e of p.split(/\r?\n/)){let n=e.match(/^(\w+):\s*(.+)$/);n&&(r[n[1]]=n[2])}return{name:r.name,description:r.description}}let c=a[1],u={};for(let r of c.split(/\r?\n/)){let e=r.match(/^(\w+):\s*(.*)$/);if(e){let[,n,g]=e;g.trim()&&(u[n]=g.trim())}}let f=c.match(/error_patterns:\r?\n([\s\S]*?)(?=\n\w|\n$)/);if(f){let r=f[1],e=[],n={};for(let g of r.split(/\r?\n/)){let h=g.match(/^\s*-\s*pattern:\s*(.+)$/);if(h){n.pattern&&e.push(n),n={pattern:h[1].replace(/^["']|["']$/g,"")};continue}let k=g.match(/^\s*category:\s*(.+)$/);if(k){n.category=k[1].trim();continue}let j=g.match(/^\s*user_action:\s*(.+)$/);if(j){n.user_action=j[1].replace(/^["']|["']$/g,""),n.pattern&&n.category&&n.user_action&&(e.push(n),n={});continue}}n.pattern&&e.push(n),e.length>0&&(u.error_patterns=e)}return{name:u.name,description:u.description,error_patterns:u.error_patterns}}catch{}return{}}try{let t={name:"",skills:[],agents:[],mcpServers:[],hooks:[],lspServers:[]},p=d(i,".claude-plugin","plugin.json");if(m(p))try{let r=JSON.parse(P(p,"utf-8"));t.name=r.name??"",t.version=r.version,t.description=r.description,Array.isArray(r.lspServers)&&(t.lspServers=r.lspServers),Array.isArray(r.mcpServers)&&(t.mcpServers=r.mcpServers),Array.isArray(r.hooks)&&(t.hooks=r.hooks)}catch{}let a=d(i,"skills");if(m(a)){let r=w(a,{withFileTypes:!0});for(let e of r){if(!e.isDirectory()&&!e.isSymbolicLink())continue;let n=d(a,e.name,"SKILL.md"),g=o(n);g.name&&t.skills.push({name:g.name,description:g.description??"",error_patterns:g.error_patterns})}}let c=d(i,"agents");if(m(c)){let r=w(c,{withFileTypes:!0});for(let e of r){if(!e.isFile()||!e.name.endsWith(".md"))continue;let n=l(d(c,e.name),["name","description"]);n.name&&t.agents.push({name:n.name,description:n.description??""})}}let u=d(i,".mcp.json");if(m(u))try{let r=JSON.parse(P(u,"utf-8"));r.mcpServers&&typeof r.mcpServers=="object"&&(t.mcpServers=Object.keys(r.mcpServers))}catch{}let f=d(i,"hooks","hooks.json");if(m(f))try{let r=JSON.parse(P(f,"utf-8"));Array.isArray(r)&&(t.hooks=r.map(e=>typeof e=="object"&&e!==null&&"event"in e?String(e.event):String(e)))}catch{}return t}catch{return null}}function $(s){let i=y(S());if(!i?.plugins)return[];let l=R(),o=[];for(let[t,p]of Object.entries(i.plugins))if(!(!Array.isArray(p)||p.length===0))for(let a of p){let c=a.scope??"user";s?.scope&&c!==s.scope||s?.projectPath&&a.projectPath!==s.projectPath||o.push({id:t,name:t.split("@")[0],version:a.version??"",scope:c,projectPath:a.projectPath,installPath:a.installPath??d(b(),t),enabled:l[t]??a.enabled??!0,installedAt:a.installedAt??"",lastUpdated:a.lastUpdated??""})}return o}function G(s){let i=y(S());if(!i?.plugins?.[s])return null;let l=i.plugins[s];if(!Array.isArray(l)||l.length===0)return null;let o=l[0],t=R();return{id:s,name:s.split("@")[0],version:o.version??"",scope:o.scope??"user",projectPath:o.projectPath,installPath:o.installPath??d(b(),s),enabled:t[s]??o.enabled??!0,installedAt:o.installedAt??"",lastUpdated:o.lastUpdated??""}}function M(s){let i=y(S()),l=new Map;for(let o of s){let t=i?.plugins?.[o];Array.isArray(t)&&t.length>0&&l.set(o,t[0].installPath??d(b(),o))}return l}function U(){return y(_())?.marketplaces??[]}function I(s){let i=d(s,".claude","settings.json"),l=y(i);return{enabledPlugins:l?.enabledPlugins??{},mcpServers:l?.mcpServers??{},allowedTools:l?.allowedTools??[],disallowedTools:l?.disallowedTools??[]}}J();D();var C={Read:{category:"File",label:"read"},Write:{category:"File",label:"write"},Edit:{category:"File",label:"edit"},Glob:{category:"Search",label:"find files"},Grep:{category:"Search",label:"search content"},Bash:{category:"Execution",label:"shell commands"},WebSearch:{category:"Web",label:"web search"},WebFetch:{category:"Web",label:"fetch pages"},NotebookEdit:{category:"Execution",label:"Jupyter notebooks"}};function q(s,i){let l=s.allowedTools??[],o=s.osCapabilities??[];if(l.length===0&&o.length===0&&Object.keys(s.mcpServers??{}).length===0&&(s.additionalDirectories?.length??0)===0&&(!i||i.plugins.length===0))return"No tool permissions";let t=new Map,p=[];for(let e of l){let n=C[e];if(n){let g=t.get(n.category)??[];g.push(n.label),t.set(n.category,g)}else p.push(e)}let a=[];for(let[e,n]of t)a.push(`${e} (${n.join(", ")})`);p.length>0&&a.push(p.join(", "));let c=a.join(" \xB7 "),u=e=>{c=c?`${c} \xB7 ${e}`:e},f=Object.keys(s.mcpServers??{});f.length>0&&u(`MCP: ${f.join(", ")}`);let r=s.additionalDirectories??[];if(r.length>0&&u(`Dirs: ${r.map(e=>e.path).join(", ")}`),o.length>0){let e=o.map(n=>{let g=v(n.id);return n.id==="automation"&&n.targets?.length?`${g.label} (${n.targets.join(", ")})`:g.label});u(`OS: ${e.join(", ")}`)}if(i&&i.plugins.length>0){let e=i.plugins.map(n=>{let g=[];return n.skills.length>0&&g.push(`skills: ${n.skills.map(h=>h.name).join(", ")}`),n.agents.length>0&&g.push(`agents: ${n.agents.map(h=>h.name).join(", ")}`),g.length>0?`${n.name} (${g.join("; ")})`:n.name});u(`Plugins: ${e.join(", ")}`)}return c}function O(s){let i=[],l=s.additionalDirectories??[];for(let o of l){if(!o.inheritPlugins&&!o.inheritMcp)continue;let t=I(o.path),p=Object.entries(t.enabledPlugins).filter(([,c])=>c).map(([c])=>c),a=M(p);for(let[,c]of a)i.includes(c)||i.push(c)}try{let o=A(s.name),t=$({scope:"project",projectPath:o});for(let p of t)p.installPath&&!i.includes(p.installPath)&&i.push(p.installPath)}catch{}return i}function z(s){let i=O(s),l=[];for(let o of i){let t=T(o);t&&l.push({name:t.name||o.split("/").pop()||"unknown",description:t.description,skills:t.skills,agents:t.agents,mcpServers:t.mcpServers,hooks:t.hooks})}return{plugins:l}}export{R as a,T as b,$ as c,G as d,U as e,I as f,q as g,O as h,z as i};
1
+ import{e as A,i as J}from"./chunk-6NIWU43Z.js";import{A as D,w as v}from"./chunk-3JTHJ3FZ.js";import{existsSync as m,readFileSync as P,readdirSync as w}from"fs";import{join as d}from"path";import E from"os";var b=()=>d(E.homedir(),".claude","plugins"),S=()=>d(b(),"installed_plugins.json"),_=()=>d(b(),"known_marketplaces.json"),x=()=>d(E.homedir(),".claude","settings.json");function y(s){try{if(!m(s))return null;let i=P(s,"utf-8");return JSON.parse(i)}catch{return null}}function R(){return y(x())?.enabledPlugins??{}}function T(s){let i=s;function l(t,p){let a={};try{if(!m(t))return a;let u=P(t,"utf-8").replace(/^```yaml\r?\n/,"").replace(/^```\r?\n/,"");for(let f of p){let r=new RegExp(`^${f}:\\s*(.+)$`,"m"),e=u.match(r);e&&(a[f]=e[1].trim())}}catch{}return a}function o(t){try{if(!m(t))return{};let p=P(t,"utf-8"),a=p.match(/^```yaml\r?\n([\s\S]*?)\r?\n```\r?\n/);if(!a){let r={};for(let e of p.split(/\r?\n/)){let n=e.match(/^(\w+):\s*(.+)$/);n&&(r[n[1]]=n[2])}return{name:r.name,description:r.description}}let c=a[1],u={};for(let r of c.split(/\r?\n/)){let e=r.match(/^(\w+):\s*(.*)$/);if(e){let[,n,g]=e;g.trim()&&(u[n]=g.trim())}}let f=c.match(/error_patterns:\r?\n([\s\S]*?)(?=\n\w|\n$)/);if(f){let r=f[1],e=[],n={};for(let g of r.split(/\r?\n/)){let h=g.match(/^\s*-\s*pattern:\s*(.+)$/);if(h){n.pattern&&e.push(n),n={pattern:h[1].replace(/^["']|["']$/g,"")};continue}let k=g.match(/^\s*category:\s*(.+)$/);if(k){n.category=k[1].trim();continue}let j=g.match(/^\s*user_action:\s*(.+)$/);if(j){n.user_action=j[1].replace(/^["']|["']$/g,""),n.pattern&&n.category&&n.user_action&&(e.push(n),n={});continue}}n.pattern&&e.push(n),e.length>0&&(u.error_patterns=e)}return{name:u.name,description:u.description,error_patterns:u.error_patterns}}catch{}return{}}try{let t={name:"",skills:[],agents:[],mcpServers:[],hooks:[],lspServers:[]},p=d(i,".claude-plugin","plugin.json");if(m(p))try{let r=JSON.parse(P(p,"utf-8"));t.name=r.name??"",t.version=r.version,t.description=r.description,Array.isArray(r.lspServers)&&(t.lspServers=r.lspServers),Array.isArray(r.mcpServers)&&(t.mcpServers=r.mcpServers),Array.isArray(r.hooks)&&(t.hooks=r.hooks)}catch{}let a=d(i,"skills");if(m(a)){let r=w(a,{withFileTypes:!0});for(let e of r){if(!e.isDirectory()&&!e.isSymbolicLink())continue;let n=d(a,e.name,"SKILL.md"),g=o(n);g.name&&t.skills.push({name:g.name,description:g.description??"",error_patterns:g.error_patterns})}}let c=d(i,"agents");if(m(c)){let r=w(c,{withFileTypes:!0});for(let e of r){if(!e.isFile()||!e.name.endsWith(".md"))continue;let n=l(d(c,e.name),["name","description"]);n.name&&t.agents.push({name:n.name,description:n.description??""})}}let u=d(i,".mcp.json");if(m(u))try{let r=JSON.parse(P(u,"utf-8"));r.mcpServers&&typeof r.mcpServers=="object"&&(t.mcpServers=Object.keys(r.mcpServers))}catch{}let f=d(i,"hooks","hooks.json");if(m(f))try{let r=JSON.parse(P(f,"utf-8"));Array.isArray(r)&&(t.hooks=r.map(e=>typeof e=="object"&&e!==null&&"event"in e?String(e.event):String(e)))}catch{}return t}catch{return null}}function $(s){let i=y(S());if(!i?.plugins)return[];let l=R(),o=[];for(let[t,p]of Object.entries(i.plugins))if(!(!Array.isArray(p)||p.length===0))for(let a of p){let c=a.scope??"user";s?.scope&&c!==s.scope||s?.projectPath&&a.projectPath!==s.projectPath||o.push({id:t,name:t.split("@")[0],version:a.version??"",scope:c,projectPath:a.projectPath,installPath:a.installPath??d(b(),t),enabled:l[t]??a.enabled??!0,installedAt:a.installedAt??"",lastUpdated:a.lastUpdated??""})}return o}function G(s){let i=y(S());if(!i?.plugins?.[s])return null;let l=i.plugins[s];if(!Array.isArray(l)||l.length===0)return null;let o=l[0],t=R();return{id:s,name:s.split("@")[0],version:o.version??"",scope:o.scope??"user",projectPath:o.projectPath,installPath:o.installPath??d(b(),s),enabled:t[s]??o.enabled??!0,installedAt:o.installedAt??"",lastUpdated:o.lastUpdated??""}}function M(s){let i=y(S()),l=new Map;for(let o of s){let t=i?.plugins?.[o];Array.isArray(t)&&t.length>0&&l.set(o,t[0].installPath??d(b(),o))}return l}function U(){return y(_())?.marketplaces??[]}function I(s){let i=d(s,".claude","settings.json"),l=y(i);return{enabledPlugins:l?.enabledPlugins??{},mcpServers:l?.mcpServers??{},allowedTools:l?.allowedTools??[],disallowedTools:l?.disallowedTools??[]}}J();D();var C={Read:{category:"File",label:"read"},Write:{category:"File",label:"write"},Edit:{category:"File",label:"edit"},Glob:{category:"Search",label:"find files"},Grep:{category:"Search",label:"search content"},Bash:{category:"Execution",label:"shell commands"},WebSearch:{category:"Web",label:"web search"},WebFetch:{category:"Web",label:"fetch pages"},NotebookEdit:{category:"Execution",label:"Jupyter notebooks"}};function q(s,i){let l=s.allowedTools??[],o=s.osCapabilities??[];if(l.length===0&&o.length===0&&Object.keys(s.mcpServers??{}).length===0&&(s.additionalDirectories?.length??0)===0&&(!i||i.plugins.length===0))return"No tool permissions";let t=new Map,p=[];for(let e of l){let n=C[e];if(n){let g=t.get(n.category)??[];g.push(n.label),t.set(n.category,g)}else p.push(e)}let a=[];for(let[e,n]of t)a.push(`${e} (${n.join(", ")})`);p.length>0&&a.push(p.join(", "));let c=a.join(" \xB7 "),u=e=>{c=c?`${c} \xB7 ${e}`:e},f=Object.keys(s.mcpServers??{});f.length>0&&u(`MCP: ${f.join(", ")}`);let r=s.additionalDirectories??[];if(r.length>0&&u(`Dirs: ${r.map(e=>e.path).join(", ")}`),o.length>0){let e=o.map(n=>{let g=v(n.id);return n.id==="automation"&&n.targets?.length?`${g.label} (${n.targets.join(", ")})`:g.label});u(`OS: ${e.join(", ")}`)}if(i&&i.plugins.length>0){let e=i.plugins.map(n=>{let g=[];return n.skills.length>0&&g.push(`skills: ${n.skills.map(h=>h.name).join(", ")}`),n.agents.length>0&&g.push(`agents: ${n.agents.map(h=>h.name).join(", ")}`),g.length>0?`${n.name} (${g.join("; ")})`:n.name});u(`Plugins: ${e.join(", ")}`)}return c}function O(s){let i=[],l=s.additionalDirectories??[];for(let o of l){if(!o.inheritPlugins&&!o.inheritMcp)continue;let t=I(o.path),p=Object.entries(t.enabledPlugins).filter(([,c])=>c).map(([c])=>c),a=M(p);for(let[,c]of a)i.includes(c)||i.push(c)}try{let o=A(s.name),t=$({scope:"project",projectPath:o});for(let p of t)p.installPath&&!i.includes(p.installPath)&&i.push(p.installPath)}catch{}return i}function z(s){let i=O(s),l=[];for(let o of i){let t=T(o);t&&l.push({name:t.name||o.split("/").pop()||"unknown",description:t.description,skills:t.skills,agents:t.agents,mcpServers:t.mcpServers,hooks:t.hooks})}return{plugins:l}}export{R as a,T as b,$ as c,G as d,U as e,I as f,q as g,O as h,z as i};
@@ -1,4 +1,4 @@
1
- import{n as o,p as a}from"./chunk-WY5BOCQP.js";import{c as u,e as c}from"./chunk-5M6IGE5G.js";a();c();import{v4 as p}from"uuid";function R(t){o().prepare(`
1
+ import{o,q as a}from"./chunk-ZEGZ2I35.js";import{c as u,e as c}from"./chunk-5M6IGE5G.js";a();c();import{v4 as p}from"uuid";function R(t){o().prepare(`
2
2
  INSERT INTO evolution_audit (id, timestamp, old_rules, new_rules, diff, trigger_task_id, role_id, source, trace_id)
3
3
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
4
4
  `).run(p(),t.timestamp,t.oldRules,t.newRules,t.diff,t.triggerTaskId??null,t.roleId??null,t.source??"reflection",t.traceId??u()??null)}function _(t=100,e=0){return o().prepare(`
@@ -1 +1 @@
1
- import{a as i}from"./chunk-NXGR3PRY.js";import{a as d,b as p,c as g,e as h}from"./chunk-5G64P4KE.js";import{e as f}from"./chunk-3MROEPGR.js";import{f as l,h as _}from"./chunk-VO24C673.js";import{c as v,h as O}from"./chunk-EZLBMUQD.js";_();import{readFileSync as E,existsSync as w}from"fs";import{resolve as T}from"path";import{homedir as S}from"os";import{parse as k}from"yaml";O();var D=v("config");function I(e){return e.replace(/\$\{(\w+)}/g,(t,n)=>process.env[n]??"")}function m(e){return e.startsWith("~/")?T(S(),e.slice(2)):e}function c(e){if(typeof e=="string")return I(e);if(Array.isArray(e))return e.map(c);if(e!==null&&typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=c(r);return t}return e}function C(e,t){let n={...e};for(let r of Object.keys(t)){let o=t[r],s=e[r];o!==null&&typeof o=="object"&&!Array.isArray(o)&&s!==null&&typeof s=="object"&&!Array.isArray(s)?n[r]=C(s,o):n[r]=o}return n}function A(e){return e.defaults.deniedReadPaths&&(e.defaults.deniedReadPaths=e.defaults.deniedReadPaths.map(m)),e.defaults.sensitivePaths&&!e.defaults.deniedReadPaths&&(D.warn("config.defaults.sensitivePaths is deprecated \u2014 use config.defaults.deniedReadPaths instead. Values have been migrated automatically."),e.defaults.deniedReadPaths=e.defaults.sensitivePaths.map(m)),e}function M(){let e={};for(let t of process.argv.slice(2)){let n=t.match(/^--([a-z-]+)=(.+)$/);n&&(e[n[1]]=n[2])}return e}function R(e){let t=process.env.ADAM_PORT;t&&(e.server.port=parseInt(t,10));let n=process.env.ANTHROPIC_MODEL;n&&(e.defaults.model=n);let r=process.env.ADAM_API_KEY;return r&&(e.server.apiKey=r),e}function y(e){let t=M();return t.port&&(e.server.port=parseInt(t.port,10)),t.host&&(e.server.host=t.host),t.timeout&&(e.defaults.timeout=parseInt(t.timeout,10)),t["api-key"]&&(e.server.apiKey=t["api-key"]),e}function N(e){let t=e??l,n={};if(w(t)){let P=E(t,"utf-8"),u=k(P);u&&(n=c(u))}let r=C(i,n),o=R(r),s=y(o);return A(s)}function F(){let e=JSON.parse(JSON.stringify(i)),t=R(e),n=y(t);return A(n)}function b(){let e={},t={...d,ANTHROPIC_API_KEY:"anthropic.apiKey",ANTHROPIC_BASE_URL:"anthropic.baseUrl",ANTHROPIC_MODEL:"anthropic.model",ANTHROPIC_DEFAULT_OPUS_MODEL:"anthropic.defaultOpusModel",ANTHROPIC_DEFAULT_SONNET_MODEL:"anthropic.defaultSonnetModel",ANTHROPIC_DEFAULT_HAIKU_MODEL:"anthropic.defaultHaikuModel",ANTHROPIC_SMALL_FAST_MODEL:"anthropic.smallFastModel",ADAM_PORT:"server.port",ADAM_API_KEY:"server.apiKey"},n={};for(let[o,s]of Object.entries(t)){let a=process.env[o];a&&a.length>0&&(e[s]=g(s,a))}let r=h();if(r)for(let[o,s]of Object.entries(r))p(o)||o in t||o.startsWith("ANTHROPIC_")||o.startsWith("ADAM_")||(n[o]=s);return Object.keys(n).length>0&&(e["defaults.env"]=n),e}function J(){try{return f().defaults}catch{return i.defaults}}function $(){try{return f().chat??i.chat}catch{return i.chat}}export{N as a,F as b,b as c,J as d,$ as e};
1
+ import{a as i}from"./chunk-J2VSAXVU.js";import{a as d,b as p,c as g,e as h}from"./chunk-JRRNGKDK.js";import{e as f}from"./chunk-3MROEPGR.js";import{f as l,i as _}from"./chunk-ITVCPC7G.js";import{c as v,h as O}from"./chunk-EZLBMUQD.js";_();import{readFileSync as E,existsSync as w}from"fs";import{resolve as T}from"path";import{homedir as S}from"os";import{parse as k}from"yaml";O();var D=v("config");function I(e){return e.replace(/\$\{(\w+)}/g,(t,n)=>process.env[n]??"")}function m(e){return e.startsWith("~/")?T(S(),e.slice(2)):e}function c(e){if(typeof e=="string")return I(e);if(Array.isArray(e))return e.map(c);if(e!==null&&typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=c(r);return t}return e}function C(e,t){let n={...e};for(let r of Object.keys(t)){let o=t[r],s=e[r];o!==null&&typeof o=="object"&&!Array.isArray(o)&&s!==null&&typeof s=="object"&&!Array.isArray(s)?n[r]=C(s,o):n[r]=o}return n}function A(e){return e.defaults.deniedReadPaths&&(e.defaults.deniedReadPaths=e.defaults.deniedReadPaths.map(m)),e.defaults.sensitivePaths&&!e.defaults.deniedReadPaths&&(D.warn("config.defaults.sensitivePaths is deprecated \u2014 use config.defaults.deniedReadPaths instead. Values have been migrated automatically."),e.defaults.deniedReadPaths=e.defaults.sensitivePaths.map(m)),e}function M(){let e={};for(let t of process.argv.slice(2)){let n=t.match(/^--([a-z-]+)=(.+)$/);n&&(e[n[1]]=n[2])}return e}function R(e){let t=process.env.ADAM_PORT;t&&(e.server.port=parseInt(t,10));let n=process.env.ANTHROPIC_MODEL;n&&(e.defaults.model=n);let r=process.env.ADAM_API_KEY;return r&&(e.server.apiKey=r),e}function y(e){let t=M();return t.port&&(e.server.port=parseInt(t.port,10)),t.host&&(e.server.host=t.host),t.timeout&&(e.defaults.timeout=parseInt(t.timeout,10)),t["api-key"]&&(e.server.apiKey=t["api-key"]),e}function N(e){let t=e??l,n={};if(w(t)){let P=E(t,"utf-8"),u=k(P);u&&(n=c(u))}let r=C(i,n),o=R(r),s=y(o);return A(s)}function F(){let e=JSON.parse(JSON.stringify(i)),t=R(e),n=y(t);return A(n)}function b(){let e={},t={...d,ANTHROPIC_API_KEY:"anthropic.apiKey",ANTHROPIC_BASE_URL:"anthropic.baseUrl",ANTHROPIC_MODEL:"anthropic.model",ANTHROPIC_DEFAULT_OPUS_MODEL:"anthropic.defaultOpusModel",ANTHROPIC_DEFAULT_SONNET_MODEL:"anthropic.defaultSonnetModel",ANTHROPIC_DEFAULT_HAIKU_MODEL:"anthropic.defaultHaikuModel",ANTHROPIC_SMALL_FAST_MODEL:"anthropic.smallFastModel",ADAM_PORT:"server.port",ADAM_API_KEY:"server.apiKey"},n={};for(let[o,s]of Object.entries(t)){let a=process.env[o];a&&a.length>0&&(e[s]=g(s,a))}let r=h();if(r)for(let[o,s]of Object.entries(r))p(o)||o in t||o.startsWith("ANTHROPIC_")||o.startsWith("ADAM_")||(n[o]=s);return Object.keys(n).length>0&&(e["defaults.env"]=n),e}function J(){try{return f().defaults}catch{return i.defaults}}function $(){try{return f().chat??i.chat}catch{return i.chat}}export{N as a,F as b,b as c,J as d,$ as e};
@@ -1,4 +1,4 @@
1
- import{n,p as o}from"./chunk-WY5BOCQP.js";import{c as r,e as c}from"./chunk-5M6IGE5G.js";o();c();function a(e){return{id:e.id,sessionId:e.session_id,role:e.role,content:e.content,source:{type:e.source_type,...e.source_channel_id?{channelId:e.source_channel_id}:{},...e.source_chat_id?{chatId:e.source_chat_id}:{}},taskId:e.task_id??void 0,channelMessageId:e.channel_message_id??void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0,createdAt:e.created_at,traceId:e.trace_id??void 0,kind:e.kind??void 0,parentMessageId:e.parent_message_id??void 0,threadRoot:e.thread_root??void 0,promptId:e.prompt_id??void 0,approvalShape:e.approval_shape??void 0,roleId:e.role_id??void 0,attachments:e.attachments?JSON.parse(e.attachments):void 0,mirroredToTargets:e.mirrored_to_targets?JSON.parse(e.mirrored_to_targets):void 0,platformMessageId:e.platform_message_id??void 0,seq:e.seq??void 0}}function p(e){let s=n(),t=e.kind??(e.role==="user"?"user_message":"assistant_text");s.prepare(`
1
+ import{o as n,q as o}from"./chunk-ZEGZ2I35.js";import{c as r,e as c}from"./chunk-5M6IGE5G.js";o();c();function a(e){return{id:e.id,sessionId:e.session_id,role:e.role,content:e.content,source:{type:e.source_type,...e.source_channel_id?{channelId:e.source_channel_id}:{},...e.source_chat_id?{chatId:e.source_chat_id}:{}},taskId:e.task_id??void 0,channelMessageId:e.channel_message_id??void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0,createdAt:e.created_at,traceId:e.trace_id??void 0,kind:e.kind??void 0,parentMessageId:e.parent_message_id??void 0,threadRoot:e.thread_root??void 0,promptId:e.prompt_id??void 0,approvalShape:e.approval_shape??void 0,roleId:e.role_id??void 0,attachments:e.attachments?JSON.parse(e.attachments):void 0,mirroredToTargets:e.mirrored_to_targets?JSON.parse(e.mirrored_to_targets):void 0,platformMessageId:e.platform_message_id??void 0,seq:e.seq??void 0}}function p(e){let s=n(),t=e.kind??(e.role==="user"?"user_message":"assistant_text");s.prepare(`
2
2
  INSERT INTO chat_messages (
3
3
  id, session_id, role, content, source_type, task_id,
4
4
  channel_message_id, metadata, created_at, trace_id,
@@ -1,4 +1,4 @@
1
- import{n as a,p as l}from"./chunk-WY5BOCQP.js";l();function c(e){return{id:e.id,templateId:e.template_id,status:e.status,stepStatuses:JSON.parse(e.step_statuses),startedAt:e.started_at,completedAt:e.completed_at??void 0,error:e.error??void 0,eventId:e.event_id??void 0,stepResultsJson:e.step_results_json??void 0}}function _(e,t,n){a().prepare(`
1
+ import{o as a,q as l}from"./chunk-ZEGZ2I35.js";l();function c(e){return{id:e.id,templateId:e.template_id,status:e.status,stepStatuses:JSON.parse(e.step_statuses),startedAt:e.started_at,completedAt:e.completed_at??void 0,error:e.error??void 0,eventId:e.event_id??void 0,stepResultsJson:e.step_results_json??void 0}}function _(e,t,n){a().prepare(`
2
2
  INSERT INTO template_executions (id, template_id, status, step_statuses, started_at, event_id)
3
3
  VALUES (?, ?, 'running', '{}', ?, ?)
4
4
  `).run(e,t,Date.now(),n??null)}function y(e){let n=a().prepare("SELECT * FROM template_executions WHERE id = ?").get(e);return n?c(n):void 0}function E(e,t){let n=a(),r=[],i=[];t.status!==void 0&&(r.push("status = ?"),i.push(t.status)),t.stepStatuses!==void 0&&(r.push("step_statuses = ?"),i.push(JSON.stringify(t.stepStatuses))),t.completedAt!==void 0&&(r.push("completed_at = ?"),i.push(t.completedAt)),t.error!==void 0&&(r.push("error = ?"),i.push(t.error)),r.length!==0&&(i.push(e),n.prepare(`UPDATE template_executions SET ${r.join(", ")} WHERE id = ?`).run(...i))}function R(e){let t=a(),n=Date.now()-e;return t.prepare("SELECT * FROM template_executions WHERE status = 'running' AND started_at < ?").all(n).map(c)}function I(e,t=50,n=0){let r=a(),i="SELECT * FROM template_executions",s=[];return e&&(i+=" WHERE template_id = ?",s.push(e)),i+=" ORDER BY started_at DESC LIMIT ? OFFSET ?",s.push(t,n),r.prepare(i).all(...s).map(c)}function h(e,t=20,n=0){return a().prepare(`
@@ -1,4 +1,4 @@
1
- import{n as s,p as m}from"./chunk-WY5BOCQP.js";import{c as d,h as f}from"./chunk-EZLBMUQD.js";m();f();var p=/^[a-z0-9.-]+$/;var u=d("store");function r(e){let n;if(e.recipient_cap_map_json)try{n=JSON.parse(e.recipient_cap_map_json)}catch(i){u.warn({channelId:e.id,err:i},"Malformed recipient_cap_map_json; using empty map"),n=void 0}return{id:e.id,name:e.name,platform:e.platform,enabled:e.enabled===1,status:e.status,config:JSON.parse(e.config),linkedRoleId:e.linked_role_id??void 0,allowedChatIds:e.allowed_chat_ids?JSON.parse(e.allowed_chat_ids):void 0,viewerKey:e.viewer_key??void 0,createdAt:e.created_at,updatedAt:e.updated_at??void 0,lastMessageAt:e.last_message_at??void 0,messageCount:e.message_count,recipientCapMap:n,defaultRecipientCapBytes:e.default_recipient_cap_bytes??void 0}}function R(e){s().prepare(`
1
+ import{o as s,q as m}from"./chunk-ZEGZ2I35.js";import{c as d,h as f}from"./chunk-EZLBMUQD.js";m();f();var p=/^[a-z0-9.-]+$/;var u=d("store");function r(e){let n;if(e.recipient_cap_map_json)try{n=JSON.parse(e.recipient_cap_map_json)}catch(i){u.warn({channelId:e.id,err:i},"Malformed recipient_cap_map_json; using empty map"),n=void 0}return{id:e.id,name:e.name,platform:e.platform,enabled:e.enabled===1,status:e.status,config:JSON.parse(e.config),linkedRoleId:e.linked_role_id??void 0,allowedChatIds:e.allowed_chat_ids?JSON.parse(e.allowed_chat_ids):void 0,viewerKey:e.viewer_key??void 0,createdAt:e.created_at,updatedAt:e.updated_at??void 0,lastMessageAt:e.last_message_at??void 0,messageCount:e.message_count,recipientCapMap:n,defaultRecipientCapBytes:e.default_recipient_cap_bytes??void 0}}function R(e){s().prepare(`
2
2
  INSERT INTO channels (id, name, platform, enabled, status, config, linked_role_id,
3
3
  allowed_chat_ids, viewer_key, created_at, updated_at, last_message_at, message_count,
4
4
  recipient_cap_map_json, default_recipient_cap_bytes)
@@ -1 +1 @@
1
- import{s as b}from"./chunk-3UFEOB6P.js";import{s,u as m,w as x}from"./chunk-VWX2B6OM.js";import{a as p}from"./chunk-L7JP7DUO.js";import{q as T}from"./chunk-V2MMQ3SH.js";import{G as f,L as J}from"./chunk-2A2TXYT3.js";import{c as h,h as C}from"./chunk-EZLBMUQD.js";C();J();import{v4 as l}from"uuid";import{CronExpressionParser as E}from"cron-parser";var n=h("scheduler"),y=class{cronJobs=new Map;started=!1;templateExecutionCompletionHandler=null;async start(){if(this.started)return;this.started=!0;let e=m(!0),t=0;for(let r of e)r.trigger.type==="cron"&&r.trigger.cron&&(this.scheduleCronJob(r),t++);let o=0;for(let r of e)r.trigger.type==="once"&&r.trigger.runAt&&(this.scheduleOnceJob(r.id),o++);this.templateExecutionCompletionHandler=r=>{(r.status==="completed"||r.status==="partial")&&this.checkTemplateCompleteTriggers(r.templateId).catch(i=>{n.error({templateId:r.templateId,error:i},"Template-complete trigger check failed")})},p.on("template_execution_status_change",this.templateExecutionCompletionHandler),this.cronJobs.set("memory-cleanup",setInterval(()=>{this.runMemoryCleanup()},36e5)),n.info({cronCount:t,onceCount:o},"Bree engine started with cron jobs + memory cleanup")}runMemoryCleanup(){try{let e=f(void 0,1e3,0),t=0;for(let o of e)t+=T(o.id);t>0&&n.info({totalCleaned:t},"Memory cleanup completed")}catch(e){n.warn({error:e},"Memory cleanup failed")}}async stop(){for(let[,e]of this.cronJobs)clearTimeout(e),clearInterval(e);this.cronJobs.clear(),this.templateExecutionCompletionHandler&&(p.off("template_execution_status_change",this.templateExecutionCompletionHandler),this.templateExecutionCompletionHandler=null),this.started=!1,n.info("Bree engine stopped")}scheduleCronJob(e){let t=`template-${e.id}`;this.cronJobs.has(t)&&(clearTimeout(this.cronJobs.get(t)),this.cronJobs.delete(t));let o;try{o=E.parse(e.trigger.cron)}catch{n.warn({templateId:e.id,cron:e.trigger.cron},"Invalid cron expression");return}let r=()=>{let u=o.next().getTime()-Date.now();return Math.max(u,1e3)},i=()=>{this.executeCronTrigger(e.id).catch(u=>{n.error({templateId:e.id,error:u},"Cron trigger failed")});let d=setTimeout(i,r());this.cronJobs.set(t,d)},c=r(),a=setTimeout(i,c);this.cronJobs.set(t,a),n.debug({jobName:t,nextRun:new Date(Date.now()+c).toISOString()},"Scheduled cron job")}async executeCronTrigger(e){let t=s(e);!t||!t.enabled||(n.info({templateName:t.name},"Cron triggered"),await this.executeTemplateExecution(t,l()))}async scheduleJob(e){let t=s(e);t&&t.trigger.type==="cron"&&t.trigger.cron&&this.scheduleCronJob(t)}async unscheduleJob(e){let t=`template-${e}`,o=this.cronJobs.get(t);o&&(clearTimeout(o),this.cronJobs.delete(t))}async runNow(e,t){let o=s(e);if(!o)throw new Error(`Template ${e} not found`);let r=l();return this.executeTemplateExecution(o,r,t).catch(i=>{n.error({templateId:e,error:i},"TemplateExecution failed")}),r}async checkTemplateCompleteTriggers(e){let o=m(!0).filter(r=>r.trigger.type!=="template_complete"||!r.trigger.event?!1:r.trigger.event===`template_complete:${e}`);for(let r of o)n.info({templateName:r.name,sourceTemplateId:e},"Template-complete trigger matched"),await this.executeTemplateExecution(r,l())}async executeTemplateExecution(e,t,o={}){await b(e,{...o,executionId:t,triggerContext:o.triggerContext??{source:"bree"}})}scheduleOnceJob(e){let t=s(e);if(!t||!t.enabled||t.trigger.type!=="once")return;let r=(t.trigger.runAt?new Date(t.trigger.runAt).getTime():0)-Date.now();if(r<=0){n.info({templateId:e,runAt:t.trigger.runAt},"Once-shot template past due, executing immediately"),this.executeOnceTrigger(e).catch(a=>{n.error({templateId:e,error:a},"Once trigger execution failed")});return}let i=`template-${e}`;this.cronJobs.has(i)&&clearTimeout(this.cronJobs.get(i));let c=setTimeout(()=>{this.cronJobs.delete(i),this.executeOnceTrigger(e).catch(a=>{n.error({templateId:e,error:a},"Once trigger execution failed")})},r);this.cronJobs.set(i,c),n.info({templateId:e,runAt:t.trigger.runAt,delayMs:r},"Scheduled once-shot job")}async executeOnceTrigger(e){let t=s(e);!t||!t.enabled||(n.info({templateName:t.name},"Once-shot triggered"),await this.executeTemplateExecution(t,l()),x(e),n.info({templateId:e},"Once-shot template auto-disabled after execution"))}},v=null;function N(){return v}function j(g){v=g}export{y as a,N as b,j as c};
1
+ import{t as b}from"./chunk-ZARKPBI2.js";import{s,u as m,w as x}from"./chunk-G5I76LX2.js";import{a as p}from"./chunk-L7JP7DUO.js";import{q as T}from"./chunk-AKQ3AFVI.js";import{G as f,L as J}from"./chunk-3JTHJ3FZ.js";import{c as h,h as C}from"./chunk-EZLBMUQD.js";C();J();import{v4 as l}from"uuid";import{CronExpressionParser as E}from"cron-parser";var n=h("scheduler"),y=class{cronJobs=new Map;started=!1;templateExecutionCompletionHandler=null;async start(){if(this.started)return;this.started=!0;let e=m(!0),t=0;for(let r of e)r.trigger.type==="cron"&&r.trigger.cron&&(this.scheduleCronJob(r),t++);let o=0;for(let r of e)r.trigger.type==="once"&&r.trigger.runAt&&(this.scheduleOnceJob(r.id),o++);this.templateExecutionCompletionHandler=r=>{(r.status==="completed"||r.status==="partial")&&this.checkTemplateCompleteTriggers(r.templateId).catch(i=>{n.error({templateId:r.templateId,error:i},"Template-complete trigger check failed")})},p.on("template_execution_status_change",this.templateExecutionCompletionHandler),this.cronJobs.set("memory-cleanup",setInterval(()=>{this.runMemoryCleanup()},36e5)),n.info({cronCount:t,onceCount:o},"Bree engine started with cron jobs + memory cleanup")}runMemoryCleanup(){try{let e=f(void 0,1e3,0),t=0;for(let o of e)t+=T(o.id);t>0&&n.info({totalCleaned:t},"Memory cleanup completed")}catch(e){n.warn({error:e},"Memory cleanup failed")}}async stop(){for(let[,e]of this.cronJobs)clearTimeout(e),clearInterval(e);this.cronJobs.clear(),this.templateExecutionCompletionHandler&&(p.off("template_execution_status_change",this.templateExecutionCompletionHandler),this.templateExecutionCompletionHandler=null),this.started=!1,n.info("Bree engine stopped")}scheduleCronJob(e){let t=`template-${e.id}`;this.cronJobs.has(t)&&(clearTimeout(this.cronJobs.get(t)),this.cronJobs.delete(t));let o;try{o=E.parse(e.trigger.cron)}catch{n.warn({templateId:e.id,cron:e.trigger.cron},"Invalid cron expression");return}let r=()=>{let u=o.next().getTime()-Date.now();return Math.max(u,1e3)},i=()=>{this.executeCronTrigger(e.id).catch(u=>{n.error({templateId:e.id,error:u},"Cron trigger failed")});let d=setTimeout(i,r());this.cronJobs.set(t,d)},c=r(),a=setTimeout(i,c);this.cronJobs.set(t,a),n.debug({jobName:t,nextRun:new Date(Date.now()+c).toISOString()},"Scheduled cron job")}async executeCronTrigger(e){let t=s(e);!t||!t.enabled||(n.info({templateName:t.name},"Cron triggered"),await this.executeTemplateExecution(t,l()))}async scheduleJob(e){let t=s(e);t&&t.trigger.type==="cron"&&t.trigger.cron&&this.scheduleCronJob(t)}async unscheduleJob(e){let t=`template-${e}`,o=this.cronJobs.get(t);o&&(clearTimeout(o),this.cronJobs.delete(t))}async runNow(e,t){let o=s(e);if(!o)throw new Error(`Template ${e} not found`);let r=l();return this.executeTemplateExecution(o,r,t).catch(i=>{n.error({templateId:e,error:i},"TemplateExecution failed")}),r}async checkTemplateCompleteTriggers(e){let o=m(!0).filter(r=>r.trigger.type!=="template_complete"||!r.trigger.event?!1:r.trigger.event===`template_complete:${e}`);for(let r of o)n.info({templateName:r.name,sourceTemplateId:e},"Template-complete trigger matched"),await this.executeTemplateExecution(r,l())}async executeTemplateExecution(e,t,o={}){await b(e,{...o,executionId:t,triggerContext:o.triggerContext??{source:"bree"}})}scheduleOnceJob(e){let t=s(e);if(!t||!t.enabled||t.trigger.type!=="once")return;let r=(t.trigger.runAt?new Date(t.trigger.runAt).getTime():0)-Date.now();if(r<=0){n.info({templateId:e,runAt:t.trigger.runAt},"Once-shot template past due, executing immediately"),this.executeOnceTrigger(e).catch(a=>{n.error({templateId:e,error:a},"Once trigger execution failed")});return}let i=`template-${e}`;this.cronJobs.has(i)&&clearTimeout(this.cronJobs.get(i));let c=setTimeout(()=>{this.cronJobs.delete(i),this.executeOnceTrigger(e).catch(a=>{n.error({templateId:e,error:a},"Once trigger execution failed")})},r);this.cronJobs.set(i,c),n.info({templateId:e,runAt:t.trigger.runAt,delayMs:r},"Scheduled once-shot job")}async executeOnceTrigger(e){let t=s(e);!t||!t.enabled||(n.info({templateName:t.name},"Once-shot triggered"),await this.executeTemplateExecution(t,l()),x(e),n.info({templateId:e},"Once-shot template auto-disabled after execution"))}},v=null;function N(){return v}function j(g){v=g}export{y as a,N as b,j as c};
@@ -1,4 +1,4 @@
1
- import{g as y}from"./chunk-TWOJVEO7.js";import{c as m}from"./chunk-6WQFYV3N.js";import{c as h,h as w}from"./chunk-EZLBMUQD.js";w();var v="",I=Buffer.alloc(0);function O(o){v=o,I=Buffer.from(o)}function g(){return v}function C(){return I}var p=h("channels"),u=new Map,x=3e5,$=new Set(["telegram"]);function T(o){let e=o.trim().toLowerCase().match(/^(yes|y|是|允许|no|n|否|拒绝)\s+(\S+)$/);if(!e)return null;let[,c,l]=e,r=["yes","y","\u662F","\u5141\u8BB8"].includes(c);return{requestId:l,decision:r?"allow":"deny"}}function P(o){let n=m(o);return n?$.has(n.platform):!1}var b={low:"\u{1F7E2}",medium:"\u{1F7E1}",high:"\u{1F534}"},k={low:"\u4F4E",medium:"\u4E2D",high:"\u9AD8"};function _(o){let n=["\u{1F512} \u9700\u8981\u5BA1\u6279",""];for(let e of o.steps){if(e.description.startsWith("Execute task without OS sandbox"))n.push("\u26A0\uFE0F \u65E0\u6C99\u7BB1\u6267\u884C \u2014 \u6587\u4EF6\u7CFB\u7EDF\u9694\u79BB\u672A\u542F\u7528");else{let r=e.description.indexOf(": "),s=r>0?e.description.slice(0,r):"Operation";if(n.push(`\u64CD\u4F5C: ${s}`),s==="Bash"&&r>0)try{let t=JSON.parse(e.description.slice(r+2));if(t.command){let i=String(t.command).trim();n.push(`\u547D\u4EE4: ${i.length>120?i.slice(0,117)+"...":i}`)}}catch{let t=e.description.slice(r+2,r+122);n.push(`\u8BE6\u60C5: ${t}${e.description.length>r+122?"...":""}`)}else if(r>0){let t=e.description.slice(r+2,r+122);n.push(`\u8BE6\u60C5: ${t}${e.description.length>r+122?"...":""}`)}}let c=b[e.riskLevel]??"\u{1F7E1}",l=k[e.riskLevel]??e.riskLevel;n.push(`\u98CE\u9669: ${c} ${l}`),n.push("")}return n.join(`
1
+ import{j as y}from"./chunk-R3MSLP6P.js";import{c as m}from"./chunk-XEXSXMWK.js";import{c as h,h as w}from"./chunk-EZLBMUQD.js";w();var v="",I=Buffer.alloc(0);function O(o){v=o,I=Buffer.from(o)}function g(){return v}function C(){return I}var p=h("channels"),u=new Map,x=3e5,$=new Set(["telegram"]);function T(o){let e=o.trim().toLowerCase().match(/^(yes|y|是|允许|no|n|否|拒绝)\s+(\S+)$/);if(!e)return null;let[,c,l]=e,r=["yes","y","\u662F","\u5141\u8BB8"].includes(c);return{requestId:l,decision:r?"allow":"deny"}}function P(o){let n=m(o);return n?$.has(n.platform):!1}var b={low:"\u{1F7E2}",medium:"\u{1F7E1}",high:"\u{1F534}"},k={low:"\u4F4E",medium:"\u4E2D",high:"\u9AD8"};function _(o){let n=["\u{1F512} \u9700\u8981\u5BA1\u6279",""];for(let e of o.steps){if(e.description.startsWith("Execute task without OS sandbox"))n.push("\u26A0\uFE0F \u65E0\u6C99\u7BB1\u6267\u884C \u2014 \u6587\u4EF6\u7CFB\u7EDF\u9694\u79BB\u672A\u542F\u7528");else{let r=e.description.indexOf(": "),s=r>0?e.description.slice(0,r):"Operation";if(n.push(`\u64CD\u4F5C: ${s}`),s==="Bash"&&r>0)try{let t=JSON.parse(e.description.slice(r+2));if(t.command){let i=String(t.command).trim();n.push(`\u547D\u4EE4: ${i.length>120?i.slice(0,117)+"...":i}`)}}catch{let t=e.description.slice(r+2,r+122);n.push(`\u8BE6\u60C5: ${t}${e.description.length>r+122?"...":""}`)}else if(r>0){let t=e.description.slice(r+2,r+122);n.push(`\u8BE6\u60C5: ${t}${e.description.length>r+122?"...":""}`)}}let c=b[e.riskLevel]??"\u{1F7E1}",l=k[e.riskLevel]??e.riskLevel;n.push(`\u98CE\u9669: ${c} ${l}`),n.push("")}return n.join(`
2
2
  `).trimEnd()}async function q(o,n,e,c,l,r=x){let s=e,t=s.slice(0,8);u.set(t,{planId:e,taskId:c,channelId:o,chatId:n,requestId:s,timestamp:Date.now(),timeoutMs:r});let i=y(),d=P(o);if(d){let a=`${l}
3
3
 
4
4
  `;await i.send({channelId:o,chatId:n,content:a,messageType:"approval",replyMarkup:{inlineKeyboard:[[{text:"\u2705 Allow",callbackData:`yes ${t}`},{text:"\u274C Deny",callbackData:`no ${t}`}]]}})}else{let a=[l,"",`Reply 'yes ${t}' or 'no ${t}'`].join(`
@@ -1,4 +1,4 @@
1
- import{n as a,p as o}from"./chunk-WY5BOCQP.js";o();function u(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,sdkSessionId:t.sdk_session_id??void 0}}function d(t){a().prepare(`
1
+ import{o as a,q as o}from"./chunk-ZEGZ2I35.js";o();function u(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,sdkSessionId:t.sdk_session_id??void 0}}function d(t){a().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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)