adam-agent-server 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/approval-handler-BWA7UIKN.js +1 -0
  2. package/dist/{artifacts-DMY2MI2F.js → artifacts-MAYKOTA2.js} +1 -1
  3. package/dist/audit-diagnostics-K3LUWXTI.js +1 -0
  4. package/dist/audit-manager-6WL2V6JG.js +1 -0
  5. package/dist/bree-engine-KYD4GKQK.js +1 -0
  6. package/dist/{channels-VYNJFXDD.js → channels-2TWTBE6Y.js} +1 -1
  7. package/dist/channels-PWDSTYNR.js +1 -0
  8. package/dist/{chat-tool-calls-WQGFYTUV.js → chat-tool-calls-WJDFQ54U.js} +1 -1
  9. package/dist/{chunk-P76VP2UH.js → chunk-2A2TXYT3.js} +5 -5
  10. package/dist/chunk-2CE2WUUZ.js +1 -0
  11. package/dist/{chunk-YEBC67DJ.js → chunk-2JIQT2CI.js} +1 -1
  12. package/dist/chunk-3MROEPGR.js +1 -0
  13. package/dist/{chunk-725BGAO2.js → chunk-3UFEOB6P.js} +1 -1
  14. package/dist/{chunk-VVBN35YG.js → chunk-47HJPIUA.js} +1 -1
  15. package/dist/{chunk-PBKZDNNV.js → chunk-4JHACUZY.js} +1 -1
  16. package/dist/{chunk-D5PAJ3CB.js → chunk-6WQFYV3N.js} +1 -1
  17. package/dist/{chunk-BRUHXRKK.js → chunk-AUSR5JYV.js} +1 -1
  18. package/dist/{chunk-ED2JAMEN.js → chunk-BE653A45.js} +1 -1
  19. package/dist/{chunk-3RITIMKB.js → chunk-BMCNQGUH.js} +1 -1
  20. package/dist/{chunk-32D5GWJD.js → chunk-HRPMRWHD.js} +1 -1
  21. package/dist/{chunk-QWIBCFPC.js → chunk-IEBAOZED.js} +2 -2
  22. package/dist/{chunk-OII5SDMS.js → chunk-JROGEBP5.js} +1 -1
  23. package/dist/{chunk-DCTNMUQ5.js → chunk-JYZTIE2J.js} +1 -1
  24. package/dist/{chunk-5WBFQMJL.js → chunk-JZBXLN7M.js} +1 -1
  25. package/dist/{chunk-A2S67EQG.js → chunk-KS24764D.js} +2 -2
  26. package/dist/{chunk-WDSCTXT7.js → chunk-LCD5DVS6.js} +1 -1
  27. package/dist/{chunk-3GK65T2V.js → chunk-LKGYQJMS.js} +1 -1
  28. package/dist/{chunk-FMJVKJJE.js → chunk-MTRLUW7Z.js} +1 -1
  29. package/dist/{chunk-3VUEB67V.js → chunk-NSUXJ2VA.js} +1 -1
  30. package/dist/{chunk-73GP6K5S.js → chunk-NUOTFUNF.js} +1 -1
  31. package/dist/chunk-NXGR3PRY.js +1 -0
  32. package/dist/{chunk-4WJ2VSEJ.js → chunk-O6L4UVLV.js} +1 -1
  33. package/dist/{chunk-UUJ24BNJ.js → chunk-OBD4245G.js} +1 -1
  34. package/dist/{chunk-TNBQFCXR.js → chunk-QTGAK62Z.js} +2 -2
  35. package/dist/{chunk-K3HWZBE5.js → chunk-QYI44EP6.js} +1 -1
  36. package/dist/{chunk-MQTK4Q6M.js → chunk-SGLZAIVL.js} +1 -1
  37. package/dist/chunk-SKHMWKJT.js +80 -0
  38. package/dist/{chunk-TO27F23C.js → chunk-T2Z2JDPY.js} +1 -1
  39. package/dist/chunk-TA5PFK5C.js +5 -0
  40. package/dist/{chunk-UAF4KNXE.js → chunk-TWOJVEO7.js} +2 -2
  41. package/dist/{chunk-NV5ZXKKF.js → chunk-UCUELFCS.js} +1 -1
  42. package/dist/{chunk-2WPUKCDA.js → chunk-V2MMQ3SH.js} +1 -1
  43. package/dist/{chunk-7IXYCDUF.js → chunk-VPMHZJS2.js} +1 -1
  44. package/dist/{chunk-3R7VGMAK.js → chunk-VWX2B6OM.js} +1 -1
  45. package/dist/{chunk-VARIYH6K.js → chunk-WY5BOCQP.js} +98 -37
  46. package/dist/{chunk-2RBYM3X7.js → chunk-XAPJJAJQ.js} +1 -1
  47. package/dist/{chunk-A57SY3E4.js → chunk-Z2APBKIT.js} +1 -1
  48. package/dist/chunk-ZJ3TS4FL.js +182 -0
  49. package/dist/{chunk-VSSKQAG5.js → chunk-ZQN6JZIJ.js} +1 -1
  50. package/dist/cli.js +1 -1
  51. package/dist/{config-ZDKMTZJC.js → config-U624HJKI.js} +1 -1
  52. package/dist/config-X7A6NA73.js +1 -0
  53. package/dist/{db-LIKGSZCL.js → db-XODNIJSJ.js} +1 -1
  54. package/dist/{delivery-log-2ILFP673.js → delivery-log-QMQQHES4.js} +1 -1
  55. package/dist/engine-OQXDHA2R.js +1 -0
  56. package/dist/{evolution-audit-BDQM6NAX.js → evolution-audit-XF4KZZMP.js} +1 -1
  57. package/dist/execution-tools-BR4T4MMW.js +1 -0
  58. package/dist/{external-api-7GB3U775.js → external-api-435WH6V3.js} +1 -1
  59. package/dist/index.js +65 -45
  60. package/dist/{learner-V2HBTRAE.js → learner-4CJ7BSCN.js} +1 -1
  61. package/dist/{memories-B3QGTYLX.js → memories-NJFKSOL5.js} +1 -1
  62. package/dist/{memory-extractor-RYZ3VU7A.js → memory-extractor-UQI75BBK.js} +1 -1
  63. package/dist/{memory-gc-5AYND3RL.js → memory-gc-NTZVUGJX.js} +1 -1
  64. package/dist/memory-service-3RLVOF2C.js +1 -0
  65. package/dist/outbound-gateway-NJNSN2ZX.js +1 -0
  66. package/dist/presets-SUJRFRJC.js +1 -0
  67. package/dist/{reflection-job-P6GIQVQN.js → reflection-job-F4BZA2E3.js} +1 -1
  68. package/dist/role-presets-VEYTGYA4.js +1 -0
  69. package/dist/role-workspace-AIVHPX5P.js +1 -0
  70. package/dist/{roles-B6YC4GDC.js → roles-WDMUBWQP.js} +1 -1
  71. package/dist/runtime-OMLPOMCA.js +1 -0
  72. package/dist/session-manager-XFUKWEC7.js +1 -0
  73. package/dist/skill-registry-LARMNUT5.js +1 -0
  74. package/dist/{task-templates-MNCF7JON.js → task-templates-BIVCRNXA.js} +1 -1
  75. package/dist/template-dispatch-6FPJQN6A.js +1 -0
  76. package/package.json +1 -1
  77. package/web/dist/assets/{ArtifactDetail-Dt_xkaYJ.js → ArtifactDetail-DDTEAl2E.js} +1 -1
  78. package/web/dist/assets/{Artifacts-DlPMk9VQ.js → Artifacts-BrhnC1Ef.js} +1 -1
  79. package/web/dist/assets/{ChannelDetail-kYtMmy6P.js → ChannelDetail-D0FBZoAX.js} +1 -1
  80. package/web/dist/assets/{Channels-BppR0Qc_.js → Channels-Cztxvsa2.js} +1 -1
  81. package/web/dist/assets/{Chat-BLVREMCu.js → Chat-Ce72TtUi.js} +2 -2
  82. package/web/dist/assets/Cost-K8-4xqBe.js +4 -0
  83. package/web/dist/assets/{Dashboard-XURc0f15.js → Dashboard-BXqFb_Vr.js} +1 -1
  84. package/web/dist/assets/{EnvVarEditor-DR-bSU0w.js → EnvVarEditor-FiiJazzp.js} +1 -1
  85. package/web/dist/assets/{EventDefDetail-DtkbGbQ0.js → EventDefDetail-C3S1G0K8.js} +1 -1
  86. package/web/dist/assets/{Events-C_J4jvDh.js → Events-BKxqZ9j6.js} +1 -1
  87. package/web/dist/assets/{Evolution-CEaSpRAm.js → Evolution-DFcSm6Rw.js} +1 -1
  88. package/web/dist/assets/{ExtensionDetail-D5Qfq-W4.js → ExtensionDetail-C8aPpyLv.js} +1 -1
  89. package/web/dist/assets/Extensions-MLZk05j0.js +1 -0
  90. package/web/dist/assets/{FeatureRequests-D8WEYtoU.js → FeatureRequests-D_4XaQ7F.js} +1 -1
  91. package/web/dist/assets/{GoalDetail-DnMS_WWw.js → GoalDetail-DVU7c0aR.js} +1 -1
  92. package/web/dist/assets/{Goals-BeKwpAss.js → Goals-D3h4WMjU.js} +1 -1
  93. package/web/dist/assets/LineChart-Ck1vfYHs.js +33 -0
  94. package/web/dist/assets/{Logs-BfXBv-dV.js → Logs-D5MQv6Yw.js} +1 -1
  95. package/web/dist/assets/{Memories-QRH7O8qP.js → Memories-Dls71I2i.js} +1 -1
  96. package/web/dist/assets/{Mistakes-mXU9PXft.js → Mistakes-BZcTg0vP.js} +1 -1
  97. package/web/dist/assets/{Plugins-C8v4AsvM.js → Plugins-CwCHGzI6.js} +1 -1
  98. package/web/dist/assets/RoleDetail-B2M6ALSl.js +3 -0
  99. package/web/dist/assets/{Roles-B8dQCKuS.js → Roles-FEHqm_Jf.js} +1 -1
  100. package/web/dist/assets/Settings-rdVQMfqX.js +1 -0
  101. package/web/dist/assets/{Strategies-DFUWEKfU.js → Strategies-CwJ9JQ-X.js} +1 -1
  102. package/web/dist/assets/{Switch-BcS5rOWb.js → Switch-1JjR4Imr.js} +1 -1
  103. package/web/dist/assets/{TaskDetail-BdhBhvKg.js → TaskDetail-h12WxjfG.js} +1 -1
  104. package/web/dist/assets/{Work-D-t80Ekv.js → Work-CfzFRSZX.js} +1 -1
  105. package/web/dist/assets/api-BP4ZP9kk.js +1 -0
  106. package/web/dist/assets/index-CXEJd-0s.js +12 -0
  107. package/web/dist/assets/index-CarTGiGO.css +2 -0
  108. package/web/dist/assets/{usePluginsWithUsage-DE13JW16.js → usePluginsWithUsage-4iLJAPjH.js} +1 -1
  109. package/web/dist/index.html +3 -3
  110. package/dist/approval-handler-FONN2EGB.js +0 -1
  111. package/dist/audit-diagnostics-D4M4SA5O.js +0 -1
  112. package/dist/audit-manager-YEOJRE6K.js +0 -1
  113. package/dist/bree-engine-RGTBKKFE.js +0 -1
  114. package/dist/channels-WFU4CVGW.js +0 -1
  115. package/dist/chunk-2V2H5PG5.js +0 -182
  116. package/dist/chunk-4G2OZPP5.js +0 -1
  117. package/dist/chunk-CFPXWGFD.js +0 -1
  118. package/dist/chunk-FJ3DUJXO.js +0 -1
  119. package/dist/chunk-OH6VBBDV.js +0 -1
  120. package/dist/chunk-SJTIMT5U.js +0 -5
  121. package/dist/config-GRL6O2ZY.js +0 -1
  122. package/dist/engine-JVPM3XE5.js +0 -1
  123. package/dist/execution-tools-7MK257DY.js +0 -1
  124. package/dist/memory-service-XI3JZQ4E.js +0 -1
  125. package/dist/outbound-gateway-O27KKVOI.js +0 -1
  126. package/dist/presets-UAH3OG3C.js +0 -1
  127. package/dist/role-presets-RVYTO5FS.js +0 -1
  128. package/dist/role-workspace-KOTVFJD3.js +0 -1
  129. package/dist/runtime-C3XN33A3.js +0 -1
  130. package/dist/session-manager-HO2ZCB47.js +0 -1
  131. package/dist/skill-registry-X2GY7SMI.js +0 -1
  132. package/dist/template-dispatch-BAMKX3QH.js +0 -1
  133. package/web/dist/assets/Extensions-B_egkUP1.js +0 -1
  134. package/web/dist/assets/RoleDetail-Ct-k3uoK.js +0 -35
  135. package/web/dist/assets/Settings-CqtCBP6I.js +0 -1
  136. package/web/dist/assets/api-BRfbZQSW.js +0 -1
  137. package/web/dist/assets/index-DWU9AURw.css +0 -2
  138. package/web/dist/assets/index-PIFMZAPo.js +0 -12
  139. /package/web/dist/assets/{NotFound-DuH6sFz7.js → NotFound-t66RIvqO.js} +0 -0
  140. /package/web/dist/assets/{Table-D2K039zr.js → Table-CvSmzzkm.js} +0 -0
  141. /package/web/dist/assets/{Tabs-BwyLSH2c.js → Tabs-DWk9HyNd.js} +0 -0
@@ -0,0 +1 @@
1
+ import{c as a,d as b,e as c,f as d,g as e}from"./chunk-JROGEBP5.js";import"./chunk-TWOJVEO7.js";import"./chunk-JYZTIE2J.js";import"./chunk-HRPMRWHD.js";import"./chunk-TA5PFK5C.js";import"./chunk-OBD4245G.js";import"./chunk-4JHACUZY.js";import"./chunk-VWX2B6OM.js";import"./chunk-L7JP7DUO.js";import"./chunk-2A2TXYT3.js";import"./chunk-6WQFYV3N.js";import"./chunk-NUOTFUNF.js";import"./chunk-NXGR3PRY.js";import"./chunk-3MROEPGR.js";import"./chunk-BE653A45.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5M6IGE5G.js";import"./chunk-5PELJRUQ.js";export{b as formatPlanForChannel,e as getPendingApprovalRequestIds,d as handleInboundForApproval,a as parseApprovalReply,c as sendApprovalToChannel};
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"./chunk-ED2JAMEN.js";import"./chunk-VARIYH6K.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";r();export{n as appendArtifactToCollection,o as convertPrimaryFileToCollectionInTransaction,a as createArtifact,j as deleteArtifactById,h as deleteArtifactsByExecution,i as deleteArtifactsByExecutionAndStep,m as ensureUniqueArtifactKey,b as getArtifact,c as getArtifactById,l as isArtifactCollectionManifest,q as listArtifacts,f as listArtifactsByChatSession,d as listArtifactsByExecution,g as listArtifactsByRole,e as listArtifactsByTask,p as listExpiredExecutions,k as removeArtifact};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"./chunk-BE653A45.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";r();export{n as appendArtifactToCollection,o as convertPrimaryFileToCollectionInTransaction,a as createArtifact,j as deleteArtifactById,h as deleteArtifactsByExecution,i as deleteArtifactsByExecutionAndStep,m as ensureUniqueArtifactKey,b as getArtifact,c as getArtifactById,l as isArtifactCollectionManifest,q as listArtifacts,f as listArtifactsByChatSession,d as listArtifactsByExecution,g as listArtifactsByRole,e as listArtifactsByTask,p as listExpiredExecutions,k as removeArtifact};
@@ -0,0 +1 @@
1
+ import{a,b,d as c}from"./chunk-OBD4245G.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5M6IGE5G.js";import"./chunk-5PELJRUQ.js";c();export{b as listAuditDiagnostics,a as recordAuditDiagnostic};
@@ -0,0 +1 @@
1
+ import{L as a,M as b,N as c,O as d,P as e,Q as f,R as g}from"./chunk-ZJ3TS4FL.js";import"./chunk-QMW7VEPC.js";import"./chunk-UCUELFCS.js";import"./chunk-XAPJJAJQ.js";import"./chunk-SKHMWKJT.js";import"./chunk-LCD5DVS6.js";import"./chunk-SGLZAIVL.js";import"./chunk-IEBAOZED.js";import"./chunk-JYZTIE2J.js";import"./chunk-O6L4UVLV.js";import"./chunk-QTGAK62Z.js";import"./chunk-MTRLUW7Z.js";import"./chunk-Z2APBKIT.js";import"./chunk-4JHACUZY.js";import"./chunk-NSUXJ2VA.js";import"./chunk-VWX2B6OM.js";import"./chunk-L7JP7DUO.js";import"./chunk-LKGYQJMS.js";import"./chunk-2JIQT2CI.js";import"./chunk-QYI44EP6.js";import"./chunk-T2Z2JDPY.js";import"./chunk-V2MMQ3SH.js";import"./chunk-2A2TXYT3.js";import"./chunk-AUSR5JYV.js";import"./chunk-NUOTFUNF.js";import"./chunk-NXGR3PRY.js";import"./chunk-3MROEPGR.js";import"./chunk-BE653A45.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5M6IGE5G.js";import"./chunk-5PELJRUQ.js";export{e as auditAssistantCommitment,f as auditDeliveryClaims,a as evaluateTaskCompletion,g as getSecurityPosture,d as reportViolation,b as startAuditManager,c as stopAuditManager};
@@ -0,0 +1 @@
1
+ import{a,b,c}from"./chunk-BMCNQGUH.js";import"./chunk-3UFEOB6P.js";import"./chunk-UCUELFCS.js";import"./chunk-XAPJJAJQ.js";import"./chunk-SKHMWKJT.js";import"./chunk-LCD5DVS6.js";import"./chunk-2CE2WUUZ.js";import"./chunk-4N5G7ND2.js";import"./chunk-IEBAOZED.js";import"./chunk-NNMQGISW.js";import"./chunk-TWOJVEO7.js";import"./chunk-JYZTIE2J.js";import"./chunk-HRPMRWHD.js";import"./chunk-TA5PFK5C.js";import"./chunk-OBD4245G.js";import"./chunk-MTRLUW7Z.js";import"./chunk-Z2APBKIT.js";import"./chunk-4JHACUZY.js";import"./chunk-NSUXJ2VA.js";import"./chunk-VWX2B6OM.js";import"./chunk-L7JP7DUO.js";import"./chunk-T2Z2JDPY.js";import"./chunk-V2MMQ3SH.js";import"./chunk-2A2TXYT3.js";import"./chunk-6WQFYV3N.js";import"./chunk-NUOTFUNF.js";import"./chunk-47HJPIUA.js";import"./chunk-NXGR3PRY.js";import"./chunk-5G64P4KE.js";import"./chunk-3MROEPGR.js";import"./chunk-BE653A45.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5M6IGE5G.js";import"./chunk-5PELJRUQ.js";export{a as BreeEngine,b as getBreeEngine,c as setBreeEngine};
@@ -1 +1 @@
1
- import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-D5PAJ3CB.js";import"./chunk-VARIYH6K.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";export{a as createChannel,e as deleteChannel,b as getChannel,g as getRecipientCap,d as listChannels,h as setRecipientCap,c as updateChannel,f as updateChannelStatus};
1
+ import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-6WQFYV3N.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";export{a as createChannel,e as deleteChannel,b as getChannel,g as getRecipientCap,d as listChannels,h as setRecipientCap,c as updateChannel,f as updateChannelStatus};
@@ -0,0 +1 @@
1
+ import{i as a,j as b,k as c}from"./chunk-VPMHZJS2.js";import"./chunk-IEBAOZED.js";import"./chunk-NNMQGISW.js";import"./chunk-HRPMRWHD.js";import"./chunk-TA5PFK5C.js";import"./chunk-OBD4245G.js";import"./chunk-6WQFYV3N.js";import"./chunk-NXGR3PRY.js";import"./chunk-3MROEPGR.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5M6IGE5G.js";import"./chunk-5PELJRUQ.js";export{c as channelRoutes,b as getChannelManager,a as setChannelManager};
@@ -1 +1 @@
1
- import{a,b,c}from"./chunk-5WBFQMJL.js";import"./chunk-VARIYH6K.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";export{c as hasAnyToolCallInTurn,b as listChatToolCallsByTrace,a as recordChatToolCall};
1
+ import{a,b,c}from"./chunk-JZBXLN7M.js";import"./chunk-WY5BOCQP.js";import"./chunk-VO24C673.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";export{c as hasAnyToolCallInTurn,b as listChatToolCallsByTrace,a as recordChatToolCall};
@@ -1,10 +1,10 @@
1
- import{a as m,g as L}from"./chunk-73GP6K5S.js";import{n as a,p as x}from"./chunk-VARIYH6K.js";import{b as u,h as _}from"./chunk-VO24C673.js";import{c as v,e as N}from"./chunk-5M6IGE5G.js";import{b as l}from"./chunk-5PELJRUQ.js";var f,p,T=l(()=>{"use strict";f={stylePreferences:[],avoidedActions:[],pinnedParameters:[]},p=class extends Error{constructor(n,r,i,s){super(`Role '${r}' has ${i} active task(s) (${s.join(", ")}) and cannot be deleted without the force flag.`);this.roleId=n;this.roleName=r;this.activeTaskCount=i;this.taskStatuses=s;this.name="RoleHasActiveTasksError"}roleId;roleName;activeTaskCount;taskStatuses;code="ROLE_HAS_ACTIVE_TASKS"}});import*as R from"os";import*as S from"path";function g(e){return e.startsWith("~/")||e==="~"?S.join(R.homedir(),e.slice(1)):e}var C=l(()=>{"use strict";_()});function E(e){return A.includes(e)}function I(e){return k[e]}function B(){return A.map(e=>k[e])}function te(e,t=e!=="none"){return B().map(n=>J(n,e,t))}function J(e,t,n=t!=="none"){return process.platform==="darwin"?e.status==="runtime-enforced"&&(t!=="sandbox-exec"||!n)?{...e,availability:"runtime-unavailable",editable:!1,effectiveDisabledReason:"Current runtime has no macOS sandbox backend; Adam cannot enforce this capability on Roles."}:e.status==="runtime-enforced"?{...e,availability:"editable",editable:!0}:{...e,availability:e.status,editable:!1,effectiveDisabledReason:e.disabledReason}:{...e,availability:"platform-unsupported",editable:!1,effectiveDisabledReason:"macOS only"}}function re(e){if(!e?.length)return;for(let n of e)if(!E(n.id))throw new Error(`Unknown OS capability: ${n.id}`);let t=c(e);if(t?.length){for(let n of t){let r=I(n.id);if(r.status!=="runtime-enforced")throw new Error(`OS capability '${r.label}' is not editable in Role settings`);if(r.supportsTargets){if(!n.targets?.length)throw new Error(`OS capability '${r.label}' requires at least one target bundle id`);for(let i of n.targets)if(!F(i))throw new Error(`Invalid automation target bundle id: ${i}`)}else if(n.targets?.length)throw new Error(`OS capability '${r.label}' does not accept targets`)}return t}}function c(e){if(!e||e.length===0)return;let t=new Set,n=[];for(let r of e){if(!E(r.id))throw new Error(`Unknown OS capability: ${r.id}`);if(t.has(r.id))continue;t.add(r.id);let i=I(r.id),s={id:r.id};i.supportsTargets&&r.targets?.length&&(s.targets=[...new Set(r.targets.map(o=>o.trim()).filter(Boolean))]),n.push(s)}return n.length>0?n.sort((r,i)=>r.id.localeCompare(i.id)):void 0}function F(e){return U.test(e)}var A,k,U,w=l(()=>{"use strict";A=["location-services","calendars","contacts","files-and-folders","full-disk-access","homekit","media-and-apple-music","passkeys-access-for-web-browsers","photos","reminders","accessibility","app-management","automation","bluetooth","camera","developer-tools","focus","input-monitoring","local-network","microphone","motion-and-fitness","remote-desktop","screen-and-system-audio-recording","speech-recognition"],k={"location-services":{id:"location-services",label:"Location Services",description:"Access device location and region context.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},calendars:{id:"calendars",label:"Calendars",description:"Access Calendar data via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},contacts:{id:"contacts",label:"Contacts",description:"Access Contacts data via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"files-and-folders":{id:"files-and-folders",label:"Files & Folders",description:"Host-level file access categories managed outside Role sandboxing.",platform:"darwin",status:"host-only",disabledReason:"Role file boundaries are already controlled by visiblePaths and deniedReadPaths."},"full-disk-access":{id:"full-disk-access",label:"Full Disk Access",description:"Host-level macOS grant for protected storage locations.",platform:"darwin",status:"host-only",disabledReason:"This is a host app permission, not a Role-level control."},homekit:{id:"homekit",label:"HomeKit",description:"Access HomeKit devices and home automation data.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"media-and-apple-music":{id:"media-and-apple-music",label:"Media & Apple Music",description:"Access Apple Music and media library data.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"passkeys-access-for-web-browsers":{id:"passkeys-access-for-web-browsers",label:"Passkeys Access for Web Browsers",description:"Access passkeys for browser-integrated authentication.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},photos:{id:"photos",label:"Photos",description:"Access the Photos library via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},reminders:{id:"reminders",label:"Reminders",description:"Access Reminder data via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},accessibility:{id:"accessibility",label:"Accessibility",description:"Control desktop UI and accessibility automation surfaces.",platform:"darwin",status:"runtime-enforced"},"app-management":{id:"app-management",label:"App Management",description:"Manage or inspect other installed applications.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},automation:{id:"automation",label:"Automation",description:"Launch and control other apps via Apple Events.",platform:"darwin",status:"runtime-enforced",supportsTargets:!0},bluetooth:{id:"bluetooth",label:"Bluetooth",description:"Access nearby Bluetooth devices.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},camera:{id:"camera",label:"Camera",description:"Capture camera input.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"developer-tools":{id:"developer-tools",label:"Developer Tools",description:"Use system developer tooling privileges.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},focus:{id:"focus",label:"Focus",description:"Access Focus state and related automation.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"input-monitoring":{id:"input-monitoring",label:"Input Monitoring",description:"Observe keyboard and input device activity.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"local-network":{id:"local-network",label:"Local Network",description:"Discover and communicate with devices on the local network.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},microphone:{id:"microphone",label:"Microphone",description:"Capture microphone input.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"motion-and-fitness":{id:"motion-and-fitness",label:"Motion & Fitness",description:"Access motion and fitness sensor data.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"remote-desktop":{id:"remote-desktop",label:"Remote Desktop",description:"Control or observe remote desktop sessions.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"screen-and-system-audio-recording":{id:"screen-and-system-audio-recording",label:"Screen & System Audio Recording",description:"Capture the screen and system audio.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"speech-recognition":{id:"speech-recognition",label:"Speech Recognition",description:"Use system speech recognition services.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."}},U=/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/});function b(e){return{id:e.id,parentId:e.parent_id??void 0,status:e.status,prompt:e.prompt,originalPrompt:e.original_prompt??void 0,config:JSON.parse(e.config),result:e.result??void 0,error:e.error??void 0,sdkSessionId:e.sdk_session_id??void 0,templateId:e.template_id??void 0,roleId:e.role_id??void 0,stepId:e.step_id??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0,createdAt:e.created_at,startedAt:e.started_at??void 0,completedAt:e.completed_at??void 0,costUsd:e.cost_usd??void 0,tokenUsage:e.token_usage?JSON.parse(e.token_usage):void 0,numTurns:e.num_turns??void 0,totalDurationMs:e.total_duration_ms??void 0,blockReason:e.block_reason_json?JSON.parse(e.block_reason_json):void 0,traceId:e.trace_id??void 0,errorCategory:e.error_category??void 0,retryCount:e.retry_count}}function ae(e){a().prepare(`
1
+ import{a as m,g as L}from"./chunk-NUOTFUNF.js";import{n as o,p as x}from"./chunk-WY5BOCQP.js";import{b as u,h as _}from"./chunk-VO24C673.js";import{c as v,e as N}from"./chunk-5M6IGE5G.js";import{b as l}from"./chunk-5PELJRUQ.js";var f,p,T=l(()=>{"use strict";f={stylePreferences:[],avoidedActions:[],pinnedParameters:[]},p=class extends Error{constructor(n,r,i,s){super(`Role '${r}' has ${i} active task(s) (${s.join(", ")}) and cannot be deleted without the force flag.`);this.roleId=n;this.roleName=r;this.activeTaskCount=i;this.taskStatuses=s;this.name="RoleHasActiveTasksError"}roleId;roleName;activeTaskCount;taskStatuses;code="ROLE_HAS_ACTIVE_TASKS"}});import*as R from"os";import*as C from"path";function g(e){return e.startsWith("~/")||e==="~"?C.join(R.homedir(),e.slice(1)):e}var S=l(()=>{"use strict";_()});function E(e){return k.includes(e)}function I(e){return A[e]}function B(){return k.map(e=>A[e])}function te(e,t=e!=="none"){return B().map(n=>J(n,e,t))}function J(e,t,n=t!=="none"){return process.platform==="darwin"?e.status==="runtime-enforced"&&(t!=="sandbox-exec"||!n)?{...e,availability:"runtime-unavailable",editable:!1,effectiveDisabledReason:"Current runtime has no macOS sandbox backend; Adam cannot enforce this capability on Roles."}:e.status==="runtime-enforced"?{...e,availability:"editable",editable:!0}:{...e,availability:e.status,editable:!1,effectiveDisabledReason:e.disabledReason}:{...e,availability:"platform-unsupported",editable:!1,effectiveDisabledReason:"macOS only"}}function re(e){if(!e?.length)return;for(let n of e)if(!E(n.id))throw new Error(`Unknown OS capability: ${n.id}`);let t=c(e);if(t?.length){for(let n of t){let r=I(n.id);if(r.status!=="runtime-enforced")throw new Error(`OS capability '${r.label}' is not editable in Role settings`);if(r.supportsTargets){if(!n.targets?.length)throw new Error(`OS capability '${r.label}' requires at least one target bundle id`);for(let i of n.targets)if(!F(i))throw new Error(`Invalid automation target bundle id: ${i}`)}else if(n.targets?.length)throw new Error(`OS capability '${r.label}' does not accept targets`)}return t}}function c(e){if(!e||e.length===0)return;let t=new Set,n=[];for(let r of e){if(!E(r.id))throw new Error(`Unknown OS capability: ${r.id}`);if(t.has(r.id))continue;t.add(r.id);let i=I(r.id),s={id:r.id};i.supportsTargets&&r.targets?.length&&(s.targets=[...new Set(r.targets.map(a=>a.trim()).filter(Boolean))]),n.push(s)}return n.length>0?n.sort((r,i)=>r.id.localeCompare(i.id)):void 0}function F(e){return U.test(e)}var k,A,U,w=l(()=>{"use strict";k=["location-services","calendars","contacts","files-and-folders","full-disk-access","homekit","media-and-apple-music","passkeys-access-for-web-browsers","photos","reminders","accessibility","app-management","automation","bluetooth","camera","developer-tools","focus","input-monitoring","local-network","microphone","motion-and-fitness","remote-desktop","screen-and-system-audio-recording","speech-recognition"],A={"location-services":{id:"location-services",label:"Location Services",description:"Access device location and region context.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},calendars:{id:"calendars",label:"Calendars",description:"Access Calendar data via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},contacts:{id:"contacts",label:"Contacts",description:"Access Contacts data via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"files-and-folders":{id:"files-and-folders",label:"Files & Folders",description:"Host-level file access categories managed outside Role sandboxing.",platform:"darwin",status:"host-only",disabledReason:"Role file boundaries are already controlled by visiblePaths and deniedReadPaths."},"full-disk-access":{id:"full-disk-access",label:"Full Disk Access",description:"Host-level macOS grant for protected storage locations.",platform:"darwin",status:"host-only",disabledReason:"This is a host app permission, not a Role-level control."},homekit:{id:"homekit",label:"HomeKit",description:"Access HomeKit devices and home automation data.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"media-and-apple-music":{id:"media-and-apple-music",label:"Media & Apple Music",description:"Access Apple Music and media library data.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"passkeys-access-for-web-browsers":{id:"passkeys-access-for-web-browsers",label:"Passkeys Access for Web Browsers",description:"Access passkeys for browser-integrated authentication.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},photos:{id:"photos",label:"Photos",description:"Access the Photos library via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},reminders:{id:"reminders",label:"Reminders",description:"Access Reminder data via macOS privacy controls.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},accessibility:{id:"accessibility",label:"Accessibility",description:"Control desktop UI and accessibility automation surfaces.",platform:"darwin",status:"runtime-enforced"},"app-management":{id:"app-management",label:"App Management",description:"Manage or inspect other installed applications.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},automation:{id:"automation",label:"Automation",description:"Launch and control other apps via Apple Events.",platform:"darwin",status:"runtime-enforced",supportsTargets:!0},bluetooth:{id:"bluetooth",label:"Bluetooth",description:"Access nearby Bluetooth devices.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},camera:{id:"camera",label:"Camera",description:"Capture camera input.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"developer-tools":{id:"developer-tools",label:"Developer Tools",description:"Use system developer tooling privileges.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},focus:{id:"focus",label:"Focus",description:"Access Focus state and related automation.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"input-monitoring":{id:"input-monitoring",label:"Input Monitoring",description:"Observe keyboard and input device activity.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"local-network":{id:"local-network",label:"Local Network",description:"Discover and communicate with devices on the local network.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},microphone:{id:"microphone",label:"Microphone",description:"Capture microphone input.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"motion-and-fitness":{id:"motion-and-fitness",label:"Motion & Fitness",description:"Access motion and fitness sensor data.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"remote-desktop":{id:"remote-desktop",label:"Remote Desktop",description:"Control or observe remote desktop sessions.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"screen-and-system-audio-recording":{id:"screen-and-system-audio-recording",label:"Screen & System Audio Recording",description:"Capture the screen and system audio.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."},"speech-recognition":{id:"speech-recognition",label:"Speech Recognition",description:"Use system speech recognition services.",platform:"darwin",status:"registered-unwired",disabledReason:"Not wired into Adam runtime yet."}},U=/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/});function b(e){return{id:e.id,parentId:e.parent_id??void 0,status:e.status,prompt:e.prompt,originalPrompt:e.original_prompt??void 0,config:JSON.parse(e.config),result:e.result??void 0,error:e.error??void 0,sdkSessionId:e.sdk_session_id??void 0,templateId:e.template_id??void 0,roleId:e.role_id??void 0,stepId:e.step_id??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0,createdAt:e.created_at,startedAt:e.started_at??void 0,completedAt:e.completed_at??void 0,costUsd:e.cost_usd??void 0,costBreakdown:e.cost_breakdown?JSON.parse(e.cost_breakdown):void 0,tokenUsage:e.token_usage?JSON.parse(e.token_usage):void 0,numTurns:e.num_turns??void 0,totalDurationMs:e.total_duration_ms??void 0,blockReason:e.block_reason_json?JSON.parse(e.block_reason_json):void 0,traceId:e.trace_id??void 0,errorCategory:e.error_category??void 0,retryCount:e.retry_count}}function oe(e){o().prepare(`
2
2
  INSERT INTO tasks (id, parent_id, status, prompt, original_prompt, config, result, error,
3
3
  sdk_session_id, template_id, role_id, step_id, source_session_id, notify_targets, deliver_to, report_to,
4
4
  created_at, started_at, completed_at,
5
- cost_usd, token_usage, num_turns, total_duration_ms, trace_id, error_category, retry_count)
6
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
7
- `).run(e.id,e.parentId??null,e.status,e.prompt,e.originalPrompt??null,JSON.stringify(e.config),e.result??null,e.error??null,e.sdkSessionId??null,e.templateId??null,e.roleId??null,e.stepId??null,e.sourceSessionId??null,null,e.deliverTo?JSON.stringify(e.deliverTo):null,e.reportTo?JSON.stringify(e.reportTo):null,e.createdAt,e.startedAt??null,e.completedAt??null,e.costUsd??null,e.tokenUsage?JSON.stringify(e.tokenUsage):null,e.numTurns??null,e.totalDurationMs??null,e.traceId??v()??null,e.errorCategory??null,e.retryCount??0)}function W(e){let n=a().prepare("SELECT * FROM tasks WHERE id = ?").get(e);return n?b(n):void 0}function H(e,t){let n=a(),r=[],i=[],s={parentId:"parent_id",status:"status",prompt:"prompt",result:"result",error:"error",sdkSessionId:"sdk_session_id",templateId:"template_id",roleId:"role_id",stepId:"step_id",sourceSessionId:"source_session_id",originalPrompt:"original_prompt",startedAt:"started_at",completedAt:"completed_at",costUsd:"cost_usd",numTurns:"num_turns",totalDurationMs:"total_duration_ms",errorCategory:"error_category",retryCount:"retry_count"};for(let[o,d]of Object.entries(s))o in t&&(r.push(`${d} = ?`),i.push(t[o]??null));"config"in t&&(r.push("config = ?"),i.push(JSON.stringify(t.config))),"tokenUsage"in t&&(r.push("token_usage = ?"),i.push(t.tokenUsage?JSON.stringify(t.tokenUsage):null)),"deliverTo"in t&&(r.push("deliver_to = ?"),i.push(t.deliverTo?JSON.stringify(t.deliverTo):null)),"reportTo"in t&&(r.push("report_to = ?"),i.push(t.reportTo?JSON.stringify(t.reportTo):null)),"blockReason"in t&&(r.push("block_reason_json = ?"),i.push(t.blockReason?JSON.stringify(t.blockReason):null)),"contextMeta"in t&&(r.push("context_meta = ?"),i.push(t.contextMeta?JSON.stringify(t.contextMeta):null)),r.length!==0&&(i.push(e),n.prepare(`UPDATE tasks SET ${r.join(", ")} WHERE id = ?`).run(...i))}function oe(e,t){let n=W(e);if(!n)return;let r={...n.config??{},...t};H(e,{config:r})}function O(e,t=100,n=0,r){let i=a(),s="SELECT * FROM tasks",o=[],d=[];return e&&(o.push("status = ?"),d.push(e)),r&&(o.push("role_id = ?"),d.push(r)),o.length>0&&(s+=" WHERE "+o.join(" AND ")),s+=" ORDER BY created_at DESC LIMIT ? OFFSET ?",d.push(t,n),i.prepare(s).all(...d).map(b)}function de(e){return a().prepare("SELECT * FROM tasks WHERE parent_id = ? ORDER BY created_at ASC").all(e).map(b)}function le(e){return a().prepare("SELECT COALESCE(SUM(cost_usd), 0) as total FROM tasks WHERE completed_at >= ? AND cost_usd IS NOT NULL").get(e).total}function ce(e){return a().prepare("SELECT trace_id FROM tasks WHERE id = ?").get(e)?.trace_id??void 0}function ue(e){let t=a();return t.prepare("UPDATE tasks SET retry_count = retry_count + 1 WHERE id = ?").run(e),t.prepare("SELECT retry_count FROM tasks WHERE id = ?").get(e)?.retry_count??1}function q(e){return{id:e.id,taskId:e.task_id,retryAt:e.retry_at,createdAt:e.created_at}}function pe(e){a().prepare("INSERT INTO delayed_retries (id, task_id, retry_at, created_at) VALUES (?, ?, ?, ?)").run(e.id,e.taskId,e.retryAt,e.createdAt)}function ge(e){return a().prepare("SELECT * FROM delayed_retries WHERE retry_at <= ? ORDER BY retry_at ASC").all(e).map(q)}function me(e){a().prepare("DELETE FROM delayed_retries WHERE id = ?").run(e)}function V(e,t){let n=a();n.transaction(()=>{let r=n.prepare("SELECT context_meta FROM tasks WHERE id = ?").get(e),i=(()=>{if(r?.context_meta)try{return JSON.parse(r.context_meta)}catch{return{}}return{}})();t(i),n.prepare("UPDATE tasks SET context_meta = ? WHERE id = ?").run(JSON.stringify(i),e)})()}function fe(e){let n=a().prepare("SELECT context_meta FROM tasks WHERE id = ?").get(e);if(!n||n.context_meta===null)return null;try{return JSON.parse(n.context_meta)}catch{return null}}function be(e,t){t.length!==0&&V(e,n=>{let r=Array.isArray(n.usedMemoryIds)?n.usedMemoryIds:[];n.usedMemoryIds=Array.from(new Set([...r,...t]))})}var P=l(()=>{"use strict";x();N()});import{existsSync as K}from"fs";import{resolve as y}from"path";function M(e){if(e==null)return{...f};if(Array.isArray(e))return{stylePreferences:e.filter(t=>typeof t=="string"),avoidedActions:[],pinnedParameters:[]};if(typeof e=="object"){let t=e;return{stylePreferences:Array.isArray(t.stylePreferences)?t.stylePreferences.filter(n=>typeof n=="string"):[],avoidedActions:Array.isArray(t.avoidedActions)?t.avoidedActions.filter(n=>typeof n=="string"):[],pinnedParameters:Array.isArray(t.pinnedParameters)?t.pinnedParameters.filter(n=>n!==null&&typeof n=="object"&&typeof n.tool=="string"):[]}}return{...f}}function D(e,t){for(let n of e){let r=typeof n=="string"?n:n.path;if(!r.startsWith("/")&&!r.startsWith("~/")&&r!=="~")throw new Error(`additionalDirectories must be absolute paths: '${r}' is not absolute`);let i=y(g(r));if(!i.startsWith("/"))throw new Error(`additionalDirectories must be absolute paths: '${r}' is not absolute`);for(let s of u){let o=y(g(s));if(i.startsWith(o))throw new Error(`additionalDirectories cannot include hardcoded denied path: '${r}' matches '${s}'`)}if(t?.length)for(let s of t){let o=y(g(s));if(i.startsWith(o)||o.startsWith(i))throw new Error(`additionalDirectories cannot overlap with deniedReadPaths: '${r}' conflicts with '${s}'`)}if(!K(i))throw new Error(`additionalDirectories path does not exist: '${r}'`)}}function h(e){return{id:e.id,name:e.name,cagPrompt:e.cag_prompt,learnedRules:M(e.learned_rules?JSON.parse(e.learned_rules):null),memoryStreamId:e.memory_stream_id,status:e.status,performanceScore:e.performance_score??void 0,preferences:e.preferences?JSON.parse(e.preferences):{},createdAt:e.created_at,updatedAt:e.updated_at??void 0,allowedTools:e.allowed_tools?JSON.parse(e.allowed_tools):void 0,disallowedTools:e.disallowed_tools?JSON.parse(e.disallowed_tools):void 0,evaluationCriteria:e.evaluation_criteria?JSON.parse(e.evaluation_criteria):void 0,executionMode:e.execution_mode??void 0,model:e.model??void 0,maxBudgetUsd:e.max_budget_usd??void 0,approvalRequired:e.approval_required?JSON.parse(e.approval_required):void 0,source:e.source??void 0,additionalDirectories:(()=>{if(e.additional_directories!==null)try{let t=JSON.parse(e.additional_directories);return Array.isArray(t)?t.map(n=>typeof n=="string"?{path:n}:n):void 0}catch{return}})(),allowedChannels:e.allowed_channels?JSON.parse(e.allowed_channels):void 0,mcpServers:e.mcp_servers?JSON.parse(e.mcp_servers):void 0,inheritUserSettings:e.inherit_user_settings===1?!0:void 0,permissionMode:e.permission_mode??void 0,allowedBashPatterns:e.allowed_bash_patterns?JSON.parse(e.allowed_bash_patterns):void 0,deniedBashPatterns:e.denied_bash_patterns?JSON.parse(e.denied_bash_patterns):void 0,envVars:e.env_vars?JSON.parse(e.env_vars):void 0,osCapabilities:e.os_capabilities?c(JSON.parse(e.os_capabilities)):void 0,presetId:e.preset_id??void 0,effortTier:e.effort_tier??void 0,skills:e.skills?JSON.parse(e.skills):void 0}}function ke(e){let t=m("defaults.deniedReadPaths")??[...u];e.additionalDirectories&&D(e.additionalDirectories,t),a().prepare(`
5
+ cost_usd, token_usage, num_turns, total_duration_ms, trace_id, error_category, retry_count, cost_breakdown)
6
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
7
+ `).run(e.id,e.parentId??null,e.status,e.prompt,e.originalPrompt??null,JSON.stringify(e.config),e.result??null,e.error??null,e.sdkSessionId??null,e.templateId??null,e.roleId??null,e.stepId??null,e.sourceSessionId??null,null,e.deliverTo?JSON.stringify(e.deliverTo):null,e.reportTo?JSON.stringify(e.reportTo):null,e.createdAt,e.startedAt??null,e.completedAt??null,e.costUsd??null,e.tokenUsage?JSON.stringify(e.tokenUsage):null,e.numTurns??null,e.totalDurationMs??null,e.traceId??v()??null,e.errorCategory??null,e.retryCount??0,e.costBreakdown?JSON.stringify(e.costBreakdown):null)}function W(e){let n=o().prepare("SELECT * FROM tasks WHERE id = ?").get(e);return n?b(n):void 0}function H(e,t){let n=o(),r=[],i=[],s={parentId:"parent_id",status:"status",prompt:"prompt",result:"result",error:"error",sdkSessionId:"sdk_session_id",templateId:"template_id",roleId:"role_id",stepId:"step_id",sourceSessionId:"source_session_id",originalPrompt:"original_prompt",startedAt:"started_at",completedAt:"completed_at",costUsd:"cost_usd",numTurns:"num_turns",totalDurationMs:"total_duration_ms",errorCategory:"error_category",retryCount:"retry_count"};for(let[a,d]of Object.entries(s))a in t&&(r.push(`${d} = ?`),i.push(t[a]??null));"config"in t&&(r.push("config = ?"),i.push(JSON.stringify(t.config))),"tokenUsage"in t&&(r.push("token_usage = ?"),i.push(t.tokenUsage?JSON.stringify(t.tokenUsage):null)),"costBreakdown"in t&&(r.push("cost_breakdown = ?"),i.push(t.costBreakdown?JSON.stringify(t.costBreakdown):null)),"deliverTo"in t&&(r.push("deliver_to = ?"),i.push(t.deliverTo?JSON.stringify(t.deliverTo):null)),"reportTo"in t&&(r.push("report_to = ?"),i.push(t.reportTo?JSON.stringify(t.reportTo):null)),"blockReason"in t&&(r.push("block_reason_json = ?"),i.push(t.blockReason?JSON.stringify(t.blockReason):null)),"contextMeta"in t&&(r.push("context_meta = ?"),i.push(t.contextMeta?JSON.stringify(t.contextMeta):null)),r.length!==0&&(i.push(e),n.prepare(`UPDATE tasks SET ${r.join(", ")} WHERE id = ?`).run(...i))}function ae(e,t){let n=W(e);if(!n)return;let r={...n.config??{},...t};H(e,{config:r})}function O(e,t=100,n=0,r){let i=o(),s="SELECT * FROM tasks",a=[],d=[];return e&&(a.push("status = ?"),d.push(e)),r&&(a.push("role_id = ?"),d.push(r)),a.length>0&&(s+=" WHERE "+a.join(" AND ")),s+=" ORDER BY created_at DESC LIMIT ? OFFSET ?",d.push(t,n),i.prepare(s).all(...d).map(b)}function de(e){return o().prepare("SELECT * FROM tasks WHERE parent_id = ? ORDER BY created_at ASC").all(e).map(b)}function le(e){return o().prepare("SELECT COALESCE(SUM(cost_usd), 0) as total FROM tasks WHERE completed_at >= ? AND cost_usd IS NOT NULL").get(e).total}function ce(e){return o().prepare("SELECT trace_id FROM tasks WHERE id = ?").get(e)?.trace_id??void 0}function ue(e){let t=o();return t.prepare("UPDATE tasks SET retry_count = retry_count + 1 WHERE id = ?").run(e),t.prepare("SELECT retry_count FROM tasks WHERE id = ?").get(e)?.retry_count??1}function q(e){return{id:e.id,taskId:e.task_id,retryAt:e.retry_at,createdAt:e.created_at}}function pe(e){o().prepare("INSERT INTO delayed_retries (id, task_id, retry_at, created_at) VALUES (?, ?, ?, ?)").run(e.id,e.taskId,e.retryAt,e.createdAt)}function ge(e){return o().prepare("SELECT * FROM delayed_retries WHERE retry_at <= ? ORDER BY retry_at ASC").all(e).map(q)}function me(e){o().prepare("DELETE FROM delayed_retries WHERE id = ?").run(e)}function V(e,t){let n=o();n.transaction(()=>{let r=n.prepare("SELECT context_meta FROM tasks WHERE id = ?").get(e),i=(()=>{if(r?.context_meta)try{return JSON.parse(r.context_meta)}catch{return{}}return{}})();t(i),n.prepare("UPDATE tasks SET context_meta = ? WHERE id = ?").run(JSON.stringify(i),e)})()}function fe(e){let n=o().prepare("SELECT context_meta FROM tasks WHERE id = ?").get(e);if(!n||n.context_meta===null)return null;try{return JSON.parse(n.context_meta)}catch{return null}}function be(e,t){t.length!==0&&V(e,n=>{let r=Array.isArray(n.usedMemoryIds)?n.usedMemoryIds:[];n.usedMemoryIds=Array.from(new Set([...r,...t]))})}var P=l(()=>{"use strict";x();N()});import{existsSync as K}from"fs";import{resolve as y}from"path";function M(e){if(e==null)return{...f};if(Array.isArray(e))return{stylePreferences:e.filter(t=>typeof t=="string"),avoidedActions:[],pinnedParameters:[]};if(typeof e=="object"){let t=e;return{stylePreferences:Array.isArray(t.stylePreferences)?t.stylePreferences.filter(n=>typeof n=="string"):[],avoidedActions:Array.isArray(t.avoidedActions)?t.avoidedActions.filter(n=>typeof n=="string"):[],pinnedParameters:Array.isArray(t.pinnedParameters)?t.pinnedParameters.filter(n=>n!==null&&typeof n=="object"&&typeof n.tool=="string"):[]}}return{...f}}function D(e,t){for(let n of e){let r=typeof n=="string"?n:n.path;if(!r.startsWith("/")&&!r.startsWith("~/")&&r!=="~")throw new Error(`additionalDirectories must be absolute paths: '${r}' is not absolute`);let i=y(g(r));if(!i.startsWith("/"))throw new Error(`additionalDirectories must be absolute paths: '${r}' is not absolute`);for(let s of u){let a=y(g(s));if(i.startsWith(a))throw new Error(`additionalDirectories cannot include hardcoded denied path: '${r}' matches '${s}'`)}if(t?.length)for(let s of t){let a=y(g(s));if(i.startsWith(a)||a.startsWith(i))throw new Error(`additionalDirectories cannot overlap with deniedReadPaths: '${r}' conflicts with '${s}'`)}if(!K(i))throw new Error(`additionalDirectories path does not exist: '${r}'`)}}function h(e){return{id:e.id,name:e.name,cagPrompt:e.cag_prompt,learnedRules:M(e.learned_rules?JSON.parse(e.learned_rules):null),memoryStreamId:e.memory_stream_id,status:e.status,performanceScore:e.performance_score??void 0,preferences:e.preferences?JSON.parse(e.preferences):{},createdAt:e.created_at,updatedAt:e.updated_at??void 0,allowedTools:e.allowed_tools?JSON.parse(e.allowed_tools):void 0,disallowedTools:e.disallowed_tools?JSON.parse(e.disallowed_tools):void 0,evaluationCriteria:e.evaluation_criteria?JSON.parse(e.evaluation_criteria):void 0,executionMode:e.execution_mode??void 0,model:e.model??void 0,maxBudgetUsd:e.max_budget_usd??void 0,approvalRequired:e.approval_required?JSON.parse(e.approval_required):void 0,source:e.source??void 0,additionalDirectories:(()=>{if(e.additional_directories!==null)try{let t=JSON.parse(e.additional_directories);return Array.isArray(t)?t.map(n=>typeof n=="string"?{path:n}:n):void 0}catch{return}})(),allowedChannels:e.allowed_channels?JSON.parse(e.allowed_channels):void 0,mcpServers:e.mcp_servers?JSON.parse(e.mcp_servers):void 0,inheritUserSettings:e.inherit_user_settings===1?!0:void 0,permissionMode:e.permission_mode??void 0,allowedBashPatterns:e.allowed_bash_patterns?JSON.parse(e.allowed_bash_patterns):void 0,deniedBashPatterns:e.denied_bash_patterns?JSON.parse(e.denied_bash_patterns):void 0,envVars:e.env_vars?JSON.parse(e.env_vars):void 0,osCapabilities:e.os_capabilities?c(JSON.parse(e.os_capabilities)):void 0,presetId:e.preset_id??void 0,effortTier:e.effort_tier??void 0,skills:e.skills?JSON.parse(e.skills):void 0}}function Ae(e){let t=m("defaults.deniedReadPaths")??[...u];e.additionalDirectories&&D(e.additionalDirectories,t),o().prepare(`
8
8
  INSERT INTO roles (id, name, cag_prompt, learned_rules, memory_stream_id, status,
9
9
  performance_score, preferences, created_at, updated_at,
10
10
  allowed_tools, disallowed_tools, evaluation_criteria, execution_mode, model,
@@ -12,4 +12,4 @@ import{a as m,g as L}from"./chunk-73GP6K5S.js";import{n as a,p as x}from"./chunk
12
12
  permission_mode, allowed_bash_patterns, denied_bash_patterns, env_vars, os_capabilities, preset_id,
13
13
  effort_tier, skills)
14
14
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
15
- `).run(e.id,e.name,e.cagPrompt,JSON.stringify(e.learnedRules),e.memoryStreamId,e.status,e.performanceScore??null,e.preferences?JSON.stringify(e.preferences):null,e.createdAt,e.updatedAt??null,e.allowedTools?JSON.stringify(e.allowedTools):null,e.disallowedTools?JSON.stringify(e.disallowedTools):null,e.evaluationCriteria?JSON.stringify(e.evaluationCriteria):null,e.executionMode??null,e.model??null,e.maxBudgetUsd??null,e.approvalRequired?JSON.stringify(e.approvalRequired):null,e.source??null,e.additionalDirectories?JSON.stringify(e.additionalDirectories):null,e.allowedChannels?JSON.stringify(e.allowedChannels):null,e.mcpServers?JSON.stringify(e.mcpServers):null,e.inheritUserSettings?1:0,e.permissionMode??null,e.allowedBashPatterns?JSON.stringify(e.allowedBashPatterns):null,e.deniedBashPatterns?JSON.stringify(e.deniedBashPatterns):null,e.envVars?JSON.stringify(e.envVars):null,e.osCapabilities?JSON.stringify(c(e.osCapabilities)):null,e.presetId??null,e.effortTier??null,e.skills?JSON.stringify(e.skills):null)}function j(e){let n=a().prepare("SELECT * FROM roles WHERE id = ?").get(e);return n?h(n):void 0}function Ee(e){let n=a().prepare("SELECT * FROM roles WHERE name = ?").get(e);return n?h(n):void 0}function Ie(e,t){let n=a(),r=[],i=[];if("name"in t&&(r.push("name = ?"),i.push(t.name)),"cagPrompt"in t&&(r.push("cag_prompt = ?"),i.push(t.cagPrompt)),"learnedRules"in t&&(r.push("learned_rules = ?"),i.push(JSON.stringify(M(t.learnedRules)))),"memoryStreamId"in t&&(r.push("memory_stream_id = ?"),i.push(t.memoryStreamId)),"status"in t&&(r.push("status = ?"),i.push(t.status)),"performanceScore"in t&&(r.push("performance_score = ?"),i.push(t.performanceScore??null)),"preferences"in t&&(r.push("preferences = ?"),i.push(t.preferences?JSON.stringify(t.preferences):null)),"updatedAt"in t&&(r.push("updated_at = ?"),i.push(t.updatedAt??null)),"allowedTools"in t&&(r.push("allowed_tools = ?"),i.push(t.allowedTools?JSON.stringify(t.allowedTools):null)),"disallowedTools"in t&&(r.push("disallowed_tools = ?"),i.push(t.disallowedTools?JSON.stringify(t.disallowedTools):null)),"evaluationCriteria"in t&&(r.push("evaluation_criteria = ?"),i.push(t.evaluationCriteria?JSON.stringify(t.evaluationCriteria):null)),"executionMode"in t&&(r.push("execution_mode = ?"),i.push(t.executionMode??null)),"model"in t&&(r.push("model = ?"),i.push(t.model??null)),"maxBudgetUsd"in t&&(r.push("max_budget_usd = ?"),i.push(t.maxBudgetUsd??null)),"approvalRequired"in t&&(r.push("approval_required = ?"),i.push(t.approvalRequired?JSON.stringify(t.approvalRequired):null)),"source"in t&&(r.push("source = ?"),i.push(t.source??null)),"additionalDirectories"in t){let s=m("defaults.deniedReadPaths")??[...u];t.additionalDirectories&&D(t.additionalDirectories,s),r.push("additional_directories = ?"),i.push(t.additionalDirectories?JSON.stringify(t.additionalDirectories):null)}"allowedChannels"in t&&(r.push("allowed_channels = ?"),i.push(t.allowedChannels?JSON.stringify(t.allowedChannels):null)),"mcpServers"in t&&(r.push("mcp_servers = ?"),i.push(t.mcpServers?JSON.stringify(t.mcpServers):null)),"inheritUserSettings"in t&&(r.push("inherit_user_settings = ?"),i.push(t.inheritUserSettings?1:0)),"permissionMode"in t&&(r.push("permission_mode = ?"),i.push(t.permissionMode??null)),"allowedBashPatterns"in t&&(r.push("allowed_bash_patterns = ?"),i.push(t.allowedBashPatterns?JSON.stringify(t.allowedBashPatterns):null)),"deniedBashPatterns"in t&&(r.push("denied_bash_patterns = ?"),i.push(t.deniedBashPatterns?JSON.stringify(t.deniedBashPatterns):null)),"envVars"in t&&(r.push("env_vars = ?"),i.push(t.envVars?JSON.stringify(t.envVars):null)),"osCapabilities"in t&&(r.push("os_capabilities = ?"),i.push(t.osCapabilities?JSON.stringify(c(t.osCapabilities)):null)),"presetId"in t&&(r.push("preset_id = ?"),i.push(t.presetId??null)),"effortTier"in t&&(r.push("effort_tier = ?"),i.push(t.effortTier??null)),"skills"in t&&(r.push("skills = ?"),i.push(t.skills?JSON.stringify(t.skills):null)),r.length!==0&&(i.push(e),n.prepare(`UPDATE roles SET ${r.join(", ")} WHERE id = ?`).run(...i))}function we(e,t,n=0){let r=a(),i="SELECT * FROM roles",s=[];return e&&(i+=" WHERE status = ?",s.push(e)),i+=" ORDER BY COALESCE(updated_at, created_at) DESC",typeof t=="number"&&(i+=" LIMIT ? OFFSET ?",s.push(t,n)),r.prepare(i).all(...s).map(h)}function G(e){let t=["pending","queued","running"],r=O(void 0,1e3,0,e).filter(s=>t.includes(s.status)),i=[...new Set(r.map(s=>s.status))];return{hasActive:r.length>0,count:r.length,statuses:i}}function Oe(e,t=!1){if(!t){let{hasActive:r,count:i,statuses:s}=G(e);if(r){let o=j(e);throw new p(e,o?.name??e,i,s)}}a().prepare("DELETE FROM roles WHERE id = ?").run(e)}function Pe(e){a().prepare("UPDATE roles SET task_seq = task_seq + 1 WHERE id = ?").run(e)}function Me(e){return a().prepare("SELECT task_seq FROM roles WHERE id = ?").get(e)?.task_seq??0}var $=l(()=>{x();T();_();C();L();w();P()});export{ae as a,W as b,H as c,oe as d,O as e,de as f,le as g,ce as h,ue as i,pe as j,ge as k,me as l,V as m,fe as n,be as o,P as p,p as q,T as r,g as s,C as t,A as u,U as v,I as w,te as x,re as y,c as z,w as A,D as B,ke as C,j as D,Ee as E,Ie as F,we as G,G as H,Oe as I,Pe as J,Me as K,$ as L};
15
+ `).run(e.id,e.name,e.cagPrompt,JSON.stringify(e.learnedRules),e.memoryStreamId,e.status,e.performanceScore??null,e.preferences?JSON.stringify(e.preferences):null,e.createdAt,e.updatedAt??null,e.allowedTools?JSON.stringify(e.allowedTools):null,e.disallowedTools?JSON.stringify(e.disallowedTools):null,e.evaluationCriteria?JSON.stringify(e.evaluationCriteria):null,e.executionMode??null,e.model??null,e.maxBudgetUsd??null,e.approvalRequired?JSON.stringify(e.approvalRequired):null,e.source??null,e.additionalDirectories?JSON.stringify(e.additionalDirectories):null,e.allowedChannels?JSON.stringify(e.allowedChannels):null,e.mcpServers?JSON.stringify(e.mcpServers):null,e.inheritUserSettings?1:0,e.permissionMode??null,e.allowedBashPatterns?JSON.stringify(e.allowedBashPatterns):null,e.deniedBashPatterns?JSON.stringify(e.deniedBashPatterns):null,e.envVars?JSON.stringify(e.envVars):null,e.osCapabilities?JSON.stringify(c(e.osCapabilities)):null,e.presetId??null,e.effortTier??null,e.skills?JSON.stringify(e.skills):null)}function j(e){let n=o().prepare("SELECT * FROM roles WHERE id = ?").get(e);return n?h(n):void 0}function Ee(e){let n=o().prepare("SELECT * FROM roles WHERE name = ?").get(e);return n?h(n):void 0}function Ie(e,t){let n=o(),r=[],i=[];if("name"in t&&(r.push("name = ?"),i.push(t.name)),"cagPrompt"in t&&(r.push("cag_prompt = ?"),i.push(t.cagPrompt)),"learnedRules"in t&&(r.push("learned_rules = ?"),i.push(JSON.stringify(M(t.learnedRules)))),"memoryStreamId"in t&&(r.push("memory_stream_id = ?"),i.push(t.memoryStreamId)),"status"in t&&(r.push("status = ?"),i.push(t.status)),"performanceScore"in t&&(r.push("performance_score = ?"),i.push(t.performanceScore??null)),"preferences"in t&&(r.push("preferences = ?"),i.push(t.preferences?JSON.stringify(t.preferences):null)),"updatedAt"in t&&(r.push("updated_at = ?"),i.push(t.updatedAt??null)),"allowedTools"in t&&(r.push("allowed_tools = ?"),i.push(t.allowedTools?JSON.stringify(t.allowedTools):null)),"disallowedTools"in t&&(r.push("disallowed_tools = ?"),i.push(t.disallowedTools?JSON.stringify(t.disallowedTools):null)),"evaluationCriteria"in t&&(r.push("evaluation_criteria = ?"),i.push(t.evaluationCriteria?JSON.stringify(t.evaluationCriteria):null)),"executionMode"in t&&(r.push("execution_mode = ?"),i.push(t.executionMode??null)),"model"in t&&(r.push("model = ?"),i.push(t.model??null)),"maxBudgetUsd"in t&&(r.push("max_budget_usd = ?"),i.push(t.maxBudgetUsd??null)),"approvalRequired"in t&&(r.push("approval_required = ?"),i.push(t.approvalRequired?JSON.stringify(t.approvalRequired):null)),"source"in t&&(r.push("source = ?"),i.push(t.source??null)),"additionalDirectories"in t){let s=m("defaults.deniedReadPaths")??[...u];t.additionalDirectories&&D(t.additionalDirectories,s),r.push("additional_directories = ?"),i.push(t.additionalDirectories?JSON.stringify(t.additionalDirectories):null)}"allowedChannels"in t&&(r.push("allowed_channels = ?"),i.push(t.allowedChannels?JSON.stringify(t.allowedChannels):null)),"mcpServers"in t&&(r.push("mcp_servers = ?"),i.push(t.mcpServers?JSON.stringify(t.mcpServers):null)),"inheritUserSettings"in t&&(r.push("inherit_user_settings = ?"),i.push(t.inheritUserSettings?1:0)),"permissionMode"in t&&(r.push("permission_mode = ?"),i.push(t.permissionMode??null)),"allowedBashPatterns"in t&&(r.push("allowed_bash_patterns = ?"),i.push(t.allowedBashPatterns?JSON.stringify(t.allowedBashPatterns):null)),"deniedBashPatterns"in t&&(r.push("denied_bash_patterns = ?"),i.push(t.deniedBashPatterns?JSON.stringify(t.deniedBashPatterns):null)),"envVars"in t&&(r.push("env_vars = ?"),i.push(t.envVars?JSON.stringify(t.envVars):null)),"osCapabilities"in t&&(r.push("os_capabilities = ?"),i.push(t.osCapabilities?JSON.stringify(c(t.osCapabilities)):null)),"presetId"in t&&(r.push("preset_id = ?"),i.push(t.presetId??null)),"effortTier"in t&&(r.push("effort_tier = ?"),i.push(t.effortTier??null)),"skills"in t&&(r.push("skills = ?"),i.push(t.skills?JSON.stringify(t.skills):null)),r.length!==0&&(i.push(e),n.prepare(`UPDATE roles SET ${r.join(", ")} WHERE id = ?`).run(...i))}function we(e,t,n=0){let r=o(),i="SELECT * FROM roles",s=[];return e&&(i+=" WHERE status = ?",s.push(e)),i+=" ORDER BY COALESCE(updated_at, created_at) DESC",typeof t=="number"&&(i+=" LIMIT ? OFFSET ?",s.push(t,n)),r.prepare(i).all(...s).map(h)}function G(e){let t=["pending","queued","running"],r=O(void 0,1e3,0,e).filter(s=>t.includes(s.status)),i=[...new Set(r.map(s=>s.status))];return{hasActive:r.length>0,count:r.length,statuses:i}}function Oe(e,t=!1){if(!t){let{hasActive:r,count:i,statuses:s}=G(e);if(r){let a=j(e);throw new p(e,a?.name??e,i,s)}}o().prepare("DELETE FROM roles WHERE id = ?").run(e)}function Pe(e){o().prepare("UPDATE roles SET task_seq = task_seq + 1 WHERE id = ?").run(e)}function Me(e){return o().prepare("SELECT task_seq FROM roles WHERE id = ?").get(e)?.task_seq??0}var $=l(()=>{x();T();_();S();L();w();P()});export{oe as a,W as b,H as c,ae as d,O as e,de as f,le as g,ce as h,ue as i,pe as j,ge as k,me as l,V as m,fe as n,be as o,P as p,p as q,T as r,g as s,S as t,k as u,U as v,I as w,te as x,re as y,c as z,w as A,D as B,Ae as C,j as D,Ee as E,Ie as F,we as G,G as H,Oe as I,Pe as J,Me as K,$ as L};
@@ -0,0 +1 @@
1
+ import{c as x,e as C}from"./chunk-IEBAOZED.js";import{a as y,b as u,c,d as m,e as h,g as v}from"./chunk-TA5PFK5C.js";import{a as i}from"./chunk-L7JP7DUO.js";import{b as l}from"./chunk-T2Z2JDPY.js";import{a as g}from"./chunk-V2MMQ3SH.js";import{e as f}from"./chunk-47HJPIUA.js";import{v4 as D}from"uuid";import{v4 as I}from"uuid";function _(e){if(e.length<20)return null;let t=e.trim();return t.length>300?{content:`User request: ${t.slice(0,280)}...`,importance:3,type:"thought"}:{content:`User request: ${t}`,importance:3,type:"thought"}}function b(e){if(e.length<20)return null;let t=e.trim();return t.length>400?{content:`Assistant response: ${t.slice(0,370)}...`,importance:2,type:"event"}:{content:`Assistant response: ${t}`,importance:2,type:"event"}}function N(e){let t=x(e,200,0),s=[];for(let o of t){let r=o.role==="user"?_(o.content):b(o.content);r&&s.push(r)}return{facts:s}}function $(e){let t=e.toLowerCase().replace(/[^\w\s]/g," ").split(/\s+/).filter(s=>s.length>2);return[...new Set(t)].slice(0,20)}async function A(e,t){let{facts:s}=N(e),o=0;for(let r of s){let p=r.content.slice(0,500),S;try{S=await l(p)}catch{}let M=$(p),T={id:I(),roleId:t,type:r.type,content:p,embedding:S,keywords:M,importance:r.importance,sourceType:"session_archive",createdAt:Date.now(),lastAccessed:Date.now(),retrievedCount:0,tier:"episodic"};g(T),o++}return o}var n=new Map,a;function w(e){return`${e.type}:${e.channelId??""}:${e.chatId??""}`}function F(){n.clear();let e=m("active",1e3);for(let t of e)n.set(t.id,t)}function V(e,t){let s=Date.now(),o={id:D(),status:"active",source:e,createdAt:s,lastActiveAt:s,messageCount:0};return y(o),n.set(o.id,o),i.emit({type:"session_created",session:o}),o}function W(e){for(let s of n.values())if(w(s.source)===w(e))return s;let t=h(e);return t&&n.set(t.id,t),t}function B(e){let t=n.get(e);return t||u(e)}function E(e){let t=Date.now();c(e,{status:"archived",archivedAt:t}),f().archiveExtractMemory&&u(e)&&A(e,"role-chat-manager").catch(()=>{}),n.delete(e),i.emit({type:"session_archived",sessionId:e})}function X(e){c(e,{status:"active",archivedAt:void 0});let t=u(e);return t&&(n.set(t.id,t),i.emit({type:"session_restored",session:t})),t}function Y(e){C(e),v(e),n.delete(e),i.emit({type:"session_deleted",sessionId:e})}function Z(e){let t=Date.now();c(e,{lastActiveAt:t});let s=n.get(e);s&&(s.lastActiveAt=t)}function ee(e){let t=B(e);if(t){let s=t.messageCount+1;c(e,{messageCount:s});let o=n.get(e);o&&(o.messageCount=s)}}function te(e){return m(e)}function P(){let t=f().sessionTimeoutMinutes*60*1e3,s=Date.now();for(let o of n.values())if(s-o.lastActiveAt>t)try{E(o.id)}catch{}}function R(e=6e4){d(),a=setInterval(P,e)}function d(){a&&(clearInterval(a),a=void 0)}function se(){return a}function oe(){F(),R()}function ne(){d(),n.clear()}function re(){d(),n.clear()}export{F as a,V as b,W as c,B as d,E as e,X as f,Y as g,Z as h,ee as i,te as j,R as k,d as l,se as m,oe as n,ne as o,re as p};
@@ -1 +1 @@
1
- import{g as u,h as n}from"./chunk-K3HWZBE5.js";import{d as r}from"./chunk-OH6VBBDV.js";var m=.995,i=.2,d=.3;function c(){try{let e=r().memory?.scope;return{decayBase:e?.decayBase??m,archiveThreshold:e?.archiveThreshold??i,emaAlpha:e?.emaAlpha??d}}catch{return{decayBase:m,archiveThreshold:i,emaAlpha:d}}}function l(e,s){if(e.successEma==null)return null;let a=Math.max(0,s-e.lastUsedAt),{decayBase:t}=c();return e.successEma*Math.pow(t,a)}function h(e,s){if(e.successEma==null)e.successEma=.5;else{let a=Math.max(0,s-e.lastUsedAt),{decayBase:t}=c();e.successEma=e.successEma*Math.pow(t,a)}e.lastUsedAt=s}function E(e,s){h(e,s),n(e.id,e.successEma,s)}function A(e,s,a){h(e,a);let{emaAlpha:t}=c(),o=(1-t)*e.successEma+t*s;e.successEma=o,n(e.id,o,a)}function B(e,s){let a=l(e,s);return a==null?!1:a<c().archiveThreshold}function v(e){u(e,"archived")}export{l as a,E as b,A as c,B as d,v as e};
1
+ import{g as u,h as n}from"./chunk-QYI44EP6.js";import{e as r}from"./chunk-3MROEPGR.js";var m=.995,i=.2,d=.3;function c(){try{let e=r().memory?.scope;return{decayBase:e?.decayBase??m,archiveThreshold:e?.archiveThreshold??i,emaAlpha:e?.emaAlpha??d}}catch{return{decayBase:m,archiveThreshold:i,emaAlpha:d}}}function l(e,s){if(e.successEma==null)return null;let a=Math.max(0,s-e.lastUsedAt),{decayBase:t}=c();return e.successEma*Math.pow(t,a)}function h(e,s){if(e.successEma==null)e.successEma=.5;else{let a=Math.max(0,s-e.lastUsedAt),{decayBase:t}=c();e.successEma=e.successEma*Math.pow(t,a)}e.lastUsedAt=s}function E(e,s){h(e,s),n(e.id,e.successEma,s)}function A(e,s,a){h(e,a);let{emaAlpha:t}=c(),o=(1-t)*e.successEma+t*s;e.successEma=o,n(e.id,o,a)}function B(e,s){let a=l(e,s);return a==null?!1:a<c().archiveThreshold}function v(e){u(e,"archived")}export{l as a,E as b,A as c,B as d,v as e};
@@ -0,0 +1 @@
1
+ function d(e){return e==null||!isFinite(e)||isNaN(e)?0:e}function V(e,i,o){let t=Object.entries(e);if(t.length===0)return{costUsd:0,perModel:[],pricingStatus:"none",unknownModels:[],sdkTotalCostUsd:o};let n=[],r=[],s=0,u=0;for(let[m,p]of t){let f=d(p.inputTokens),h=d(p.outputTokens),y=d(p.cacheReadInputTokens),b=d(p.cacheCreationInputTokens),c=i[m];if(c!==void 0){let w=f/1e6*c.input+h/1e6*c.output+y/1e6*c.cacheRead+b/1e6*c.cacheCreation;s+=w,u++,n.push({model:m,priced:!0,estimated:c.estimated===!0,inputTokens:f,outputTokens:h,cacheReadTokens:y,cacheCreationTokens:b,costUsd:w})}else r.push(m),n.push({model:m,priced:!1,estimated:!1,inputTokens:f,outputTokens:h,cacheReadTokens:y,cacheCreationTokens:b,costUsd:0})}let l;return u===0?l="unknown":u===t.length?l="priced":l="partial",{costUsd:s,perModel:n,pricingStatus:l,unknownModels:r,sdkTotalCostUsd:o}}var P=["input","output","cacheRead","cacheCreation"];function k(e){if(e===null||typeof e!="object"||Array.isArray(e))return"pricing.models must be a plain object (not null, not an array).";let i=e;for(let[o,t]of Object.entries(i)){if(t===null||typeof t!="object"||Array.isArray(t))return`pricing.models["${o}"] must be a plain object.`;let n=t;for(let r of P){let s=n[r];if(typeof s!="number"||!isFinite(s)||isNaN(s)||s<0)return`pricing.models["${o}"].${r} must be a finite non-negative number (got ${JSON.stringify(s)}).`}if("estimated"in n&&typeof n.estimated!="boolean")return`pricing.models["${o}"].estimated must be a boolean if present (got ${JSON.stringify(n.estimated)}).`}return null}var _=["defaults.model","defaults.effort","defaults.maxTurns","defaults.maxBudgetUsd","defaults.timeout","logging.level","roles.evolution.triggerEvery","roles.evolution.reflectionThreshold","identity.ownerViewerKey","chat.sessionTimeoutMinutes","chat.maxSessionTurns","chat.autoTitle","chat.archiveExtractMemory","chat.artifactThresholdChars","chat.maxConcurrentLiveSessions","chat.liveSessionIdleMinutes","chat.commitmentDetection.locales","chat.commitmentDetection.blockedText.zh","chat.commitmentDetection.blockedText.en","chat.commitmentDetection.unsupportedSuccessText.zh","chat.commitmentDetection.unsupportedSuccessText.en","chat.commitmentDetection.unsupportedFailureText.zh","chat.commitmentDetection.unsupportedFailureText.en","chat.commitmentDetection.unsupportedMutationText.zh","chat.commitmentDetection.unsupportedMutationText.en","memory.midTaskInjection.enabled","memory.midTaskInjection.toolCallThreshold","memory.midTaskInjection.cooldownMs","memory.midTaskInjection.topK","memory.midTaskInjection.maxTokens","memory.retrievalWeights.cosSim","memory.retrievalWeights.recency","memory.retrievalWeights.tokenCost","memory.globalBudgetTokens","memory.retrievalDecayDays","memory.attributionThresholds.high","memory.attributionThresholds.low","memory.antiFlipMinUses","memory.antiFlipSuccessEmaThreshold","memory.reflection.maxBudgetUsd","memory.scope.emaAlpha","memory.scope.humanFeedbackWeight","memory.scope.reflectionPoolMax","memory.scope.decayBase","memory.scope.archiveThreshold","memory.embeddingModel","server.timezone","anthropic.apiKey","anthropic.baseUrl","anthropic.model","anthropic.defaultOpusModel","anthropic.defaultSonnetModel","anthropic.defaultHaikuModel","anthropic.smallFastModel","audit.intentEval.maxBudgetUsd","audit.intentEval.timeoutMs","evaluation.model","defaults.approvalTimeout","defaults.deniedReadPaths","defaults.approvalRequired","watchdog.rules.artifactCleanup.enabled","watchdog.rules.artifactCleanup.ttlDays","watchdog.rules.artifactCleanup.orphanGcMinAgeHours","watchdog.rules.staleTemplateExecutions.enabled","watchdog.rules.staleTemplateExecutions.action","watchdog.rules.staleTemplateExecutions.maxOrphanMinutes","emailGateway.enabled","emailGateway.address","emailGateway.displayName","emailGateway.imap.host","emailGateway.imap.port","emailGateway.imap.secure","emailGateway.imap.auth.user","emailGateway.imap.auth.pass","emailGateway.imap.mailbox","emailGateway.smtp.host","emailGateway.smtp.port","emailGateway.smtp.secure","emailGateway.smtp.auth.user","emailGateway.smtp.auth.pass","emailGateway.smtp.from","emailGateway.subjectPrefix","storage.localProfile","pricing.models","cost.dailyThresholdUsd"],v=["server.port","server.host","server.apiKey"],D={"anthropic.apiKey":"ANTHROPIC_API_KEY","anthropic.baseUrl":"ANTHROPIC_BASE_URL","anthropic.model":"ANTHROPIC_MODEL","anthropic.defaultOpusModel":"ANTHROPIC_DEFAULT_OPUS_MODEL","anthropic.defaultSonnetModel":"ANTHROPIC_DEFAULT_SONNET_MODEL","anthropic.defaultHaikuModel":"ANTHROPIC_DEFAULT_HAIKU_MODEL","anthropic.smallFastModel":"ANTHROPIC_SMALL_FAST_MODEL"},T=null,I=["ADAM_EMAIL_"],O={"audit.intentEval.maxBudgetUsd":e=>x(e)?null:"must be a positive number.","audit.intentEval.timeoutMs":e=>a(e)?null:"must be a positive integer in milliseconds.","memory.reflection.maxBudgetUsd":e=>x(e)?null:"must be a positive number (USD).","memory.scope.emaAlpha":e=>typeof e=="number"&&e>=0&&e<=1?null:"must be a number between 0 and 1.","memory.scope.humanFeedbackWeight":e=>typeof e=="number"&&e>=1?null:"must be a number >= 1.","memory.scope.decayBase":e=>typeof e=="number"&&e>0&&e<1?null:"must be a number between 0 and 1 (exclusive).","memory.scope.archiveThreshold":e=>typeof e=="number"&&e>=0&&e<=1?null:"must be a number between 0 and 1.","memory.scope.reflectionPoolMax":e=>a(e)?null:"must be a positive integer.","memory.antiFlipSuccessEmaThreshold":e=>typeof e=="number"&&e>=0&&e<=1?null:"must be a number between 0 and 1.","chat.artifactThresholdChars":e=>a(e)?null:"must be a positive integer (chars).","chat.maxConcurrentLiveSessions":e=>a(e)?null:"must be a positive integer (>= 1).","chat.liveSessionIdleMinutes":e=>a(e)?null:"must be a positive integer (minutes).","storage.localProfile":e=>typeof e=="string"&&/^[a-zA-Z0-9_-]+$/.test(e)?null:"must match /^[a-zA-Z0-9_-]+$/ (no path separators, no special chars).","pricing.models":e=>k(e),"chat.commitmentDetection.locales":e=>Array.isArray(e)&&e.length>0&&e.every(i=>i==="zh"||i==="en")?null:"must be a non-empty array of 'zh' | 'en'.","chat.commitmentDetection.blockedText.zh":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.blockedText.en":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.unsupportedSuccessText.zh":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.unsupportedSuccessText.en":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.unsupportedFailureText.zh":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.unsupportedFailureText.en":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.unsupportedMutationText.zh":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","chat.commitmentDetection.unsupportedMutationText.en":e=>typeof e=="string"&&e.length>0?null:"must be a non-empty string.","emailGateway.address":e=>M(e,{allowEmpty:!1})?null:"must be a single valid email address.","emailGateway.imap.host":e=>A(e)?null:"must be a non-empty host without protocol.","emailGateway.imap.port":e=>a(e)?null:"must be a positive integer port.","emailGateway.imap.mailbox":e=>F(e)?null:"must be a non-empty mailbox without NUL bytes.","emailGateway.smtp.host":e=>A(e)?null:"must be a non-empty host without protocol.","emailGateway.smtp.port":e=>a(e)?null:"must be a positive integer port.","emailGateway.smtp.from":e=>M(e,{allowEmpty:!0})?null:"must be empty or a single valid email address.","identity.ownerViewerKey":e=>typeof e=="string"&&e.trim().length>0?null:"must be a non-empty string.","cost.dailyThresholdUsd":e=>typeof e=="number"&&Number.isFinite(e)&&e>=0?null:"must be a finite number >= 0 (USD; 0 = disabled)."};function B(e){T=JSON.parse(JSON.stringify(e))}function g(){if(!T)throw new Error("Runtime config not initialized. Call initRuntimeConfig first.");return T}function $(e){let i=g(),o=e();for(let[t,n]of Object.entries(o))S(t,n)||C(i,t,n)}function U(){let e=g(),i={};for(let[o,t]of Object.entries(D)){let n=N(e,o);n&&typeof n=="string"&&n.length>0?i[t]=n:process.env[t]&&(i[t]=process.env[t])}return i}function E(e){let i={};for(let[o,t]of Object.entries(e))o.startsWith("ANTHROPIC_")||(i[o]=t);return i}var R=/key|token|secret|password|credential/i;function K(e){let i={};for(let[o,t]of Object.entries(e))i[o]=R.test(o)&&t.length>4?t.slice(0,4)+"****":R.test(o)&&t.length>0?"****":t;return i}function W(e){let o=g().defaults?.env??{};return j({...process.env,...o,...U(),...E(e?.roleEnvVars??{}),...E(e?.taskEnv??{}),DISABLE_TELEMETRY:"1",DISABLE_ERROR_REPORTING:"1",CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:"1",DISABLE_AUTOUPDATER:"1"})}function J(e,i){let o=g(),t=[],n=[];for(let[r,s]of Object.entries(e)){if(!G(r)){L(r)?n.push(`"${r}" requires restart. Cannot modify at runtime.`):n.push(`"${r}" is not a recognized config path.`);continue}let u=S(r,s);if(u){n.push(`"${r}" ${u}`);continue}C(o,r,s)&&(t.push(r),i?.(r,s))}return{success:n.length===0,updated:t,errors:n}}function C(e,i,o){let t=i.split("."),n=e;for(let r=0;r<t.length-1;r++)if(n&&typeof n=="object")n=n[t[r]];else return!1;return n&&typeof n=="object"?(n[t[t.length-1]]=o,!0):!1}function N(e,i){let o=i.split("."),t=e;for(let n of o)if(t&&typeof t=="object")t=t[n];else return;return t}function G(e){return _.includes(e)}function L(e){return v.includes(e)}function S(e,i){return O[e]?.(i)??null}function x(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function a(e){return typeof e=="number"&&Number.isInteger(e)&&e>0}function A(e){return typeof e=="string"&&e.trim().length>0&&!/^[a-z][a-z0-9+.-]*:\/\//i.test(e.trim())}function F(e){return typeof e=="string"&&e.trim().length>0&&!e.includes("\0")}function M(e,i){if(typeof e!="string")return!1;let o=e.trim();return o?o.includes(",")||/[<>]/.test(o)?!1:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o):i.allowEmpty}function j(e){let i={};for(let[o,t]of Object.entries(e))I.some(n=>o.startsWith(n))||(i[o]=t);return i}export{V as a,_ as b,v as c,B as d,g as e,$ as f,U as g,E as h,K as i,W as j,J as k,N as l,G as m,L as n};
@@ -1,4 +1,4 @@
1
- import{a as pe,j as Ke,t as Wt,v as qt,x as Jt}from"./chunk-NV5ZXKKF.js";import{a as Ce}from"./chunk-CFPXWGFD.js";import{i as Xe}from"./chunk-WDSCTXT7.js";import{d as Dt,i as jt,j as ze}from"./chunk-4G2OZPP5.js";import{a as Bt}from"./chunk-4N5G7ND2.js";import{a as Nt,c as Ft}from"./chunk-QWIBCFPC.js";import{b as Vt,g as Ye}from"./chunk-UAF4KNXE.js";import{a as Gt,b as Ut}from"./chunk-DCTNMUQ5.js";import{d as Ot}from"./chunk-SJTIMT5U.js";import{a as Lt,f as Pt}from"./chunk-FMJVKJJE.js";import{b as wt}from"./chunk-A57SY3E4.js";import{a as Mt,b as re,c as de,g as xe}from"./chunk-PBKZDNNV.js";import{e as Je,f as He,i as Ur}from"./chunk-3VUEB67V.js";import{s as xt,t as Ct}from"./chunk-3R7VGMAK.js";import{a as B}from"./chunk-L7JP7DUO.js";import{A as Gr,D as ue,E as _t,G as Et,L as qe,a as Rt,b as x,c as It,d as We,p as z,u as At}from"./chunk-P76VP2UH.js";import{c as $t}from"./chunk-D5PAJ3CB.js";import{a as vt,g as Br}from"./chunk-73GP6K5S.js";import{d as kt}from"./chunk-VVBN35YG.js";import{a as Tt}from"./chunk-FJ3DUJXO.js";import{d as Ee}from"./chunk-OH6VBBDV.js";import{b as K,d as G,r as ce}from"./chunk-ED2JAMEN.js";import{a as bt,i as St,l as Dr,n as R,p as X}from"./chunk-VARIYH6K.js";import{a as yt,h as Fr}from"./chunk-VO24C673.js";import{c as D,h as te}from"./chunk-EZLBMUQD.js";import{a as me,e as jr}from"./chunk-5M6IGE5G.js";te();z();qe();X();function Ht(t){return{id:t.id,name:t.name,description:t.description??void 0,roleId:t.role,metricType:t.metric_type,targetValue:t.target_value,currentValue:t.current_value,deadline:t.deadline,budgetUsd:t.budget_usd,status:t.status,createdAt:t.created_at,updatedAt:t.updated_at??void 0,sourceSessionId:t.source_session_id??void 0,deliverTo:t.deliver_to?JSON.parse(t.deliver_to):void 0,reportTo:t.report_to?JSON.parse(t.report_to):void 0}}function Qs(t){R().prepare(`
1
+ import{a as pe,j as Ke,t as Wt,v as qt,x as Jt}from"./chunk-UCUELFCS.js";import{d as Ce}from"./chunk-SKHMWKJT.js";import{i as Xe}from"./chunk-LCD5DVS6.js";import{d as Dt,i as jt,j as ze}from"./chunk-2CE2WUUZ.js";import{a as Bt}from"./chunk-4N5G7ND2.js";import{a as Nt,c as Ft}from"./chunk-IEBAOZED.js";import{b as Vt,g as Ye}from"./chunk-TWOJVEO7.js";import{a as Gt,b as Ut}from"./chunk-JYZTIE2J.js";import{d as Ot}from"./chunk-TA5PFK5C.js";import{a as Lt,f as Pt}from"./chunk-MTRLUW7Z.js";import{b as wt}from"./chunk-Z2APBKIT.js";import{a as Mt,b as re,c as de,g as xe}from"./chunk-4JHACUZY.js";import{e as Je,f as He,i as Ur}from"./chunk-NSUXJ2VA.js";import{s as xt,t as Ct}from"./chunk-VWX2B6OM.js";import{a as B}from"./chunk-L7JP7DUO.js";import{A as Gr,D as ue,E as _t,G as Et,L as qe,a as Rt,b as x,c as It,d as We,p as z,u as At}from"./chunk-2A2TXYT3.js";import{c as $t}from"./chunk-6WQFYV3N.js";import{a as vt,g as Br}from"./chunk-NUOTFUNF.js";import{d as kt}from"./chunk-47HJPIUA.js";import{a as Tt}from"./chunk-NXGR3PRY.js";import{e as Ee}from"./chunk-3MROEPGR.js";import{b as K,d as G,r as ce}from"./chunk-BE653A45.js";import{a as bt,i as St,l as Dr,n as R,p as X}from"./chunk-WY5BOCQP.js";import{a as yt,h as Fr}from"./chunk-VO24C673.js";import{c as D,h as te}from"./chunk-EZLBMUQD.js";import{a as me,e as jr}from"./chunk-5M6IGE5G.js";te();z();qe();X();function Ht(t){return{id:t.id,name:t.name,description:t.description??void 0,roleId:t.role,metricType:t.metric_type,targetValue:t.target_value,currentValue:t.current_value,deadline:t.deadline,budgetUsd:t.budget_usd,status:t.status,createdAt:t.created_at,updatedAt:t.updated_at??void 0,sourceSessionId:t.source_session_id??void 0,deliverTo:t.deliver_to?JSON.parse(t.deliver_to):void 0,reportTo:t.report_to?JSON.parse(t.report_to):void 0}}function Qs(t){R().prepare(`
2
2
  INSERT INTO goals (id, name, description, role, metric_type, target_value,
3
3
  current_value, deadline, budget_usd, status, created_at, updated_at,
4
4
  source_session_id, deliver_to, report_to)
@@ -1 +1 @@
1
- import{a as i}from"./chunk-FJ3DUJXO.js";import{a as d,b as p,c as g,e as h}from"./chunk-5G64P4KE.js";import{d as f}from"./chunk-OH6VBBDV.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-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,4 +1,4 @@
1
- import{n as a,p as l}from"./chunk-VARIYH6K.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{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(`
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-VARIYH6K.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{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(`
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{d as a}from"./chunk-OH6VBBDV.js";function s(){try{let t=a().server?.timezone;return t==="system"||!t?void 0:t}catch{return}}function p(t){let e=s();return new Date(t).toLocaleTimeString(void 0,e?{timeZone:e}:void 0)}function l(t){let e=t??s(),r=new Date,i=r.toLocaleDateString("en-CA",e?{timeZone:e}:void 0);if(e){let n=(new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"shortOffset"}).formatToParts(r).find(o=>o.type==="timeZoneName")?.value??"").match(/GMT([+-]?)(\d+)(?::(\d+))?/);if(n){let o=n[1]==="-"?-1:1,m=parseInt(n[2],10),c=parseInt(n[3]??"0",10),f=o*(m*60+c)*6e4;return new Date(`${i}T00:00:00Z`).getTime()-f}}return new Date(`${i}T00:00:00`).getTime()}export{p as a,l as b};
1
+ import{e as a}from"./chunk-3MROEPGR.js";function s(){try{let t=a().server?.timezone;return t==="system"||!t?void 0:t}catch{return}}function p(t){let e=s();return new Date(t).toLocaleTimeString(void 0,e?{timeZone:e}:void 0)}function l(t){let e=t??s(),r=new Date,i=r.toLocaleDateString("en-CA",e?{timeZone:e}:void 0);if(e){let n=(new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"shortOffset"}).formatToParts(r).find(o=>o.type==="timeZoneName")?.value??"").match(/GMT([+-]?)(\d+)(?::(\d+))?/);if(n){let o=n[1]==="-"?-1:1,m=parseInt(n[2],10),c=parseInt(n[3]??"0",10),f=o*(m*60+c)*6e4;return new Date(`${i}T00:00:00Z`).getTime()-f}}return new Date(`${i}T00:00:00`).getTime()}export{p as a,l as b};
@@ -1,4 +1,4 @@
1
- import{n as o,p as k}from"./chunk-VARIYH6K.js";import{b}from"./chunk-5PELJRUQ.js";import{basename as S}from"path";import{v4 as x}from"uuid";function u(t){return{id:t.id,sourceKind:t.source_kind,executionId:t.execution_id??void 0,taskId:t.task_id??void 0,chatSessionId:t.chat_session_id??void 0,stepId:t.step_id??void 0,roleId:t.role_id??void 0,key:t.key??void 0,kind:t.kind,value:t.value_json?JSON.parse(t.value_json):void 0,blobPath:t.blob_path??void 0,mime:t.mime??void 0,originalFilename:t.original_filename??void 0,sizeBytes:t.size_bytes,createdAt:t.created_at,locator:t.locator??void 0,contentHash:t.content_hash??void 0,retentionHint:t.retention_hint??void 0,encryptionClass:t.encryption_class??void 0,purpose:t.purpose??void 0,replaces:t.replaces??void 0,producedByRole:t.produced_by_role??void 0,access:t.access??void 0,priority:t.priority??void 0,artifactRole:t.artifact_role??void 0}}function w(t){if(!t.roleId||t.roleId.trim()==="")throw new Error("createArtifact: roleId required (application-layer enforcement)");p(o(),t)}function p(t,e){t.prepare(`
1
+ import{n as o,p as k}from"./chunk-WY5BOCQP.js";import{b}from"./chunk-5PELJRUQ.js";import{basename as S}from"path";import{v4 as x}from"uuid";function u(t){return{id:t.id,sourceKind:t.source_kind,executionId:t.execution_id??void 0,taskId:t.task_id??void 0,chatSessionId:t.chat_session_id??void 0,stepId:t.step_id??void 0,roleId:t.role_id??void 0,key:t.key??void 0,kind:t.kind,value:t.value_json?JSON.parse(t.value_json):void 0,blobPath:t.blob_path??void 0,mime:t.mime??void 0,originalFilename:t.original_filename??void 0,sizeBytes:t.size_bytes,createdAt:t.created_at,locator:t.locator??void 0,contentHash:t.content_hash??void 0,retentionHint:t.retention_hint??void 0,encryptionClass:t.encryption_class??void 0,purpose:t.purpose??void 0,replaces:t.replaces??void 0,producedByRole:t.produced_by_role??void 0,access:t.access??void 0,priority:t.priority??void 0,artifactRole:t.artifact_role??void 0}}function w(t){if(!t.roleId||t.roleId.trim()==="")throw new Error("createArtifact: roleId required (application-layer enforcement)");p(o(),t)}function p(t,e){t.prepare(`
2
2
  INSERT INTO artifacts (
3
3
  id, source_kind, execution_id, task_id, chat_session_id, step_id, role_id,
4
4
  key, kind, value_json, blob_path, mime, original_filename, size_bytes, created_at,
@@ -1 +1 @@
1
- import{s as b}from"./chunk-725BGAO2.js";import{s,u as m,w as x}from"./chunk-3R7VGMAK.js";import{a as p}from"./chunk-L7JP7DUO.js";import{q as T}from"./chunk-2WPUKCDA.js";import{G as f,L as J}from"./chunk-P76VP2UH.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{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,3 +1,3 @@
1
- import{b as m}from"./chunk-SJTIMT5U.js";import{a as d,d as f}from"./chunk-UUJ24BNJ.js";import{c as a}from"./chunk-D5PAJ3CB.js";import{a as s}from"./chunk-FJ3DUJXO.js";import{d as p}from"./chunk-OH6VBBDV.js";import{c,h as g}from"./chunk-EZLBMUQD.js";function k(e,n,i){switch(n){case"wechat":return l(e);case"telegram":return e;case"slack":return w(e);case"email":return e;case"webhook":return JSON.stringify({result:e,taskId:i,timestamp:new Date().toISOString()});default:return l(e)}}function l(e){return e.replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/__(.+?)__/g,"$1").replace(/_(.+?)_/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/```[\s\S]*?```/g,n=>n.replace(/```\w*\n?/g,"").trim()).replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\n{3,}/g,`
1
+ import{b as m}from"./chunk-TA5PFK5C.js";import{a as d,d as f}from"./chunk-OBD4245G.js";import{c as a}from"./chunk-6WQFYV3N.js";import{a as s}from"./chunk-NXGR3PRY.js";import{e as p}from"./chunk-3MROEPGR.js";import{c,h as g}from"./chunk-EZLBMUQD.js";function k(e,n,i){switch(n){case"wechat":return l(e);case"telegram":return e;case"slack":return w(e);case"email":return e;case"webhook":return JSON.stringify({result:e,taskId:i,timestamp:new Date().toISOString()});default:return l(e)}}function l(e){return e.replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/__(.+?)__/g,"$1").replace(/_(.+?)_/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/```[\s\S]*?```/g,n=>n.replace(/```\w*\n?/g,"").trim()).replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\n{3,}/g,`
2
2
 
3
3
  `).trim()}function w(e){return e.replace(/\*\*(.+?)\*\*/g,"*$1*").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"<$2|$1>")}f();g();var t=c("message-handler");function x(){try{let e=p().identity?.ownerViewerKey;if(typeof e=="string"&&e.trim().length>0)return e}catch{}return s.identity?.ownerViewerKey??"local-owner"}function u(e){if(e.type==="web"||e.type==="tui"||e.type==="api")return x();if(e.type!=="channel"||!e.channelId){t.warn({source:e},"Viewer identity unavailable for chat source"),r("chat source has no resolvable viewer identity",void 0);return}let i=a(e.channelId)?.viewerKey;if(typeof i=="string"&&i.trim().length>0)return i;t.warn({channelId:e.channelId},"Channel viewerKey missing; recent delivery context disabled"),r("channel viewerKey missing; recent delivery context disabled",e.channelId)}function E(e){if(e.type==="channel"){let o=a(e.channelId)?.viewerKey;if(typeof o=="string"&&o.trim().length>0)return o;t.warn({channelId:e.channelId},"Channel viewerKey missing; ledger recording skipped"),r("channel viewerKey missing; ledger recording skipped",e.channelId);return}let n=m(e.sessionId);if(!n){t.warn({sessionId:e.sessionId},"Session target missing; ledger recording skipped"),r("session target missing; ledger recording skipped",e.sessionId);return}return u(n.source)}function r(e,n){try{d({source:"viewer_identity",severity:"warning",sourceId:n,message:e})}catch{}}import v from"path";var h={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".ppt":"application/vnd.ms-powerpoint",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".txt":"text/plain",".csv":"text/csv",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".mp3":"audio/mpeg",".ogg":"audio/ogg",".wav":"audio/wav",".amr":"audio/amr",".silk":"audio/x-silk",".md":"text/markdown",".html":"text/html",".json":"application/json",".xml":"text/xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mkv":"video/x-matroska",".avi":"video/x-msvideo",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp"},y={"image/jpeg":".jpg","image/jpg":".jpg","image/png":".png","image/gif":".gif","image/webp":".webp","image/bmp":".bmp","video/mp4":".mp4","video/quicktime":".mov","video/webm":".webm","video/x-matroska":".mkv","video/x-msvideo":".avi","audio/mpeg":".mp3","audio/ogg":".ogg","audio/wav":".wav","audio/amr":".amr","audio/x-silk":".silk","application/pdf":".pdf","application/zip":".zip","application/x-tar":".tar","application/gzip":".gz","text/plain":".txt","text/csv":".csv","text/markdown":".md","audio/mp3":".mp3","text/html":".html","application/json":".json","application/xml":".xml","text/xml":".xml","application/vnd.openxmlformats-officedocument.wordprocessingml.document":".docx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":".xlsx","application/vnd.openxmlformats-officedocument.presentationml.presentation":".pptx","application/msword":".doc","application/vnd.ms-excel":".xls","application/vnd.ms-powerpoint":".ppt"};function $(e){let n=v.extname(e).toLowerCase();return h[n]??"application/octet-stream"}function F(e){let n=e.split(";")[0].trim().toLowerCase();return y[n]??".bin"}export{k as a,l as b,x as c,u as d,E as e,$ as f,F as g};
@@ -1,4 +1,4 @@
1
- import{n,p as o}from"./chunk-VARIYH6K.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{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(`
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,
@@ -12,4 +12,4 @@ import{n,p as o}from"./chunk-VARIYH6K.js";import{c as r,e as c}from"./chunk-5M6I
12
12
  JOIN chat_sessions s ON m.session_id = s.id
13
13
  WHERE s.source_type = 'channel' AND s.source_channel_id = ?
14
14
  ORDER BY m.created_at DESC LIMIT ? OFFSET ?
15
- `).all(e,s,t).map(a)}function M(e){let t=n().prepare("SELECT * FROM chat_messages WHERE platform_message_id = ? ORDER BY created_at DESC LIMIT 1").get(e);return t?a(t):void 0}function R(e){return n().prepare("SELECT * FROM chat_messages WHERE prompt_id = ? ORDER BY created_at ASC").all(e).map(a)}function I(e,s){n().prepare("UPDATE chat_messages SET prompt_id = ? WHERE id = ?").run(s,e)}export{p as a,_ as b,g as c,h as d,E as e,m as f,f as g,M as h,R as i,I as j};
15
+ `).all(e,s,t).map(a)}function M(e){let t=n().prepare("SELECT * FROM chat_messages WHERE platform_message_id = ? ORDER BY created_at DESC LIMIT 1").get(e);return t?a(t):void 0}function R(e){return n().prepare("SELECT * FROM chat_messages WHERE prompt_id = ? ORDER BY created_at ASC").all(e).map(a)}function I(e,s){n().prepare("UPDATE chat_messages SET prompt_id = ? WHERE id = ?").run(s,e)}function S(e,s){n().prepare("UPDATE chat_messages SET cost_usd = ?, token_usage = ?, model = ? WHERE id = ?").run(s.costUsd,s.tokenUsage,s.model,e)}export{p as a,_ as b,g as c,h as d,E as e,m as f,f as g,M as h,R as i,I as j,S as k};
@@ -1,4 +1,4 @@
1
- import{g as y}from"./chunk-UAF4KNXE.js";import{c as m}from"./chunk-D5PAJ3CB.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{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(`
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 s,p as d}from"./chunk-VARIYH6K.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{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(`
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,2 +1,2 @@
1
- import{n as e,p as s}from"./chunk-VARIYH6K.js";s();import{v4 as u}from"uuid";var r,a;function i(){return r||(r=e().prepare(`INSERT INTO chat_tool_calls (id, trace_id, session_id, tool_name, tool_input_json, tool_output_summary, called_at)
1
+ import{n as e,p as s}from"./chunk-WY5BOCQP.js";s();import{v4 as u}from"uuid";var r,a;function i(){return r||(r=e().prepare(`INSERT INTO chat_tool_calls (id, trace_id, session_id, tool_name, tool_input_json, tool_output_summary, called_at)
2
2
  VALUES (?, ?, ?, ?, ?, ?, ?)`)),r}function d(){return a||(a=e().prepare("SELECT * FROM chat_tool_calls WHERE trace_id = ? ORDER BY called_at ASC")),a}function I(t){let o=u(),n=t.calledAt??Date.now(),l=t.toolInput!==void 0?JSON.stringify(t.toolInput):null;return i().run(o,t.traceId,t.sessionId??null,t.toolName,l,t.toolOutputSummary??null,n),{id:o,traceId:t.traceId,sessionId:t.sessionId,toolName:t.toolName,toolInput:t.toolInput,toolOutputSummary:t.toolOutputSummary,calledAt:n}}function g(t){return d().all(t).map(n=>({id:n.id,traceId:n.trace_id,sessionId:n.session_id??void 0,toolName:n.tool_name,toolInput:n.tool_input_json?c(n.tool_input_json):void 0,toolOutputSummary:n.tool_output_summary??void 0,calledAt:n.called_at}))}function f(t,o){if(o.length===0)return!1;let l=`SELECT 1 FROM chat_tool_calls WHERE trace_id = ? AND tool_name IN (${o.map(()=>"?").join(",")}) LIMIT 1`;return e().prepare(l).get(t,...o)!==void 0}function c(t){try{return JSON.parse(t)}catch{return}}export{I as a,g as b,f as c};
@@ -1,8 +1,8 @@
1
- import{d as D}from"./chunk-OII5SDMS.js";import{a as b}from"./chunk-4N5G7ND2.js";import{f as v}from"./chunk-QWIBCFPC.js";import{g as O}from"./chunk-UAF4KNXE.js";import{a as S,b as P,c,d as I,e as w,f as C,g as M}from"./chunk-DCTNMUQ5.js";import{b as y}from"./chunk-SJTIMT5U.js";import{b as R}from"./chunk-PBKZDNNV.js";import{s as k}from"./chunk-3R7VGMAK.js";import{a as f}from"./chunk-L7JP7DUO.js";import{b as h,p as B}from"./chunk-P76VP2UH.js";import{c as x}from"./chunk-D5PAJ3CB.js";import{n as d,p as j}from"./chunk-VARIYH6K.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-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(`
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-FONN2EGB.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-BWA7UIKN.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 +1 @@
1
- import{e as A,i as J}from"./chunk-3VUEB67V.js";import{A as D,w as v}from"./chunk-P76VP2UH.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-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,4 +1,4 @@
1
- import{a as A,b as E}from"./chunk-YEBC67DJ.js";import{c as p,d as j,i as v}from"./chunk-K3HWZBE5.js";import{a as B,b as d}from"./chunk-TO27F23C.js";import{d as h,l as M,n as b,o as S,p as C,r as x}from"./chunk-2WPUKCDA.js";import{K as g,L as w}from"./chunk-P76VP2UH.js";w();var f=5;async function R(t,o,s){let c=g(t),i=o?`${t}::${o}`:void 0,r;if(s){if(r=j(t,s,f*4).map(a=>a.node).filter(a=>a.status==="active"),r.length<f*4){let a=new Set(r.map(n=>n.id)),u=p(t,{onlyActive:!0}).slice(0,f*4);for(let n of u)if(!a.has(n.id)&&(r.push(n),r.length>=f*4))break}}else r=p(t,{onlyActive:!0}).slice(0,f*4);i&&(r=r.filter(e=>e.scopeKey===i||e.scopeKey==null));let m=r.map(e=>({belief:e,score:A(e,c)??.5}));m.sort((e,a)=>a.score-e.score);let l=m.slice(0,f).map(e=>e.belief);for(let e of l)E(e,c),v(e.id),e.injectCount=(e.injectCount??0)+1;return l}function O(t,o){if(t.length===0)return"";let s=o==="initial"?"[Memory Context \u2014 retrieved from prior interactions]":"[Memory Refresh \u2014 \u8FC7\u5F80\u89C2\u5BDF,\u53EF\u80FD\u8FC7\u65F6;Step \u6307\u4EE4\u4E3A\u6743\u5A01,\u51B2\u7A81\u5219\u5FFD\u7565]",c=t.map(i=>i.isAnti?`- [anti-pattern] \u274C ${i.content}`:`- [belief] ${i.content}`);return`${s}
1
+ import{a as A,b as E}from"./chunk-2JIQT2CI.js";import{c as p,d as j,i as v}from"./chunk-QYI44EP6.js";import{a as B,b as d}from"./chunk-T2Z2JDPY.js";import{d as h,l as M,n as b,o as S,p as C,r as x}from"./chunk-V2MMQ3SH.js";import{K as g,L as w}from"./chunk-2A2TXYT3.js";w();var f=5;async function R(t,o,s){let c=g(t),i=o?`${t}::${o}`:void 0,r;if(s){if(r=j(t,s,f*4).map(a=>a.node).filter(a=>a.status==="active"),r.length<f*4){let a=new Set(r.map(n=>n.id)),u=p(t,{onlyActive:!0}).slice(0,f*4);for(let n of u)if(!a.has(n.id)&&(r.push(n),r.length>=f*4))break}}else r=p(t,{onlyActive:!0}).slice(0,f*4);i&&(r=r.filter(e=>e.scopeKey===i||e.scopeKey==null));let m=r.map(e=>({belief:e,score:A(e,c)??.5}));m.sort((e,a)=>a.score-e.score);let l=m.slice(0,f).map(e=>e.belief);for(let e of l)E(e,c),v(e.id),e.injectCount=(e.injectCount??0)+1;return l}function O(t,o){if(t.length===0)return"";let s=o==="initial"?"[Memory Context \u2014 retrieved from prior interactions]":"[Memory Refresh \u2014 \u8FC7\u5F80\u89C2\u5BDF,\u53EF\u80FD\u8FC7\u65F6;Step \u6307\u4EE4\u4E3A\u6743\u5A01,\u51B2\u7A81\u5219\u5FFD\u7565]",c=t.map(i=>i.isAnti?`- [anti-pattern] \u274C ${i.content}`:`- [belief] ${i.content}`);return`${s}
2
2
  ${c.join(`
3
3
  `)}
4
4
 
@@ -1 +1 @@
1
- import{h as c,i as m}from"./chunk-PBKZDNNV.js";import{c as a,h as f}from"./chunk-EZLBMUQD.js";import{c as s,e as u}from"./chunk-5M6IGE5G.js";u();f();var r=a("adam");function T(e){let i=e.traceIdOverride??s();if(!i){r.debug({toolName:e.toolName,entityType:e.entityType,verb:e.verb},"Mutation receipt skipped: no active trace context");return}let n={traceId:i,toolName:e.toolName,taskId:e.taskId,roleId:e.roleId};try{m({traceId:i,taskId:e.taskId,sessionId:e.sessionId,effectCategory:"entity_mutation",verb:e.verb,entityType:e.entityType,entityId:e.entityId,entityIds:e.entityIds,fieldChanges:e.fieldChanges,scope:e.scope,actor:n,outcome:"success"})}catch(o){o instanceof c?r.warn({errors:o.errors,toolName:e.toolName,entityType:e.entityType},"Mutation receipt validation failed"):r.warn({error:o instanceof Error?o.message:String(o),toolName:e.toolName},"Mutation receipt write failed")}}import{z as t}from"zod";var p=t.object({kind:t.literal("lengthTarget"),min:t.number().int().nonnegative(),max:t.number().int().positive(),unit:t.enum(["characters","words","bytes"])}).refine(e=>e.min<=e.max,{message:"min must be <= max"}),g=t.object({kind:t.literal("format"),value:t.enum(["markdown","json","text"])}),k=t.object({kind:t.literal("requireHeading"),value:t.boolean()}),y=t.object({kind:t.literal("mime"),declared:t.string().regex(/^[a-z]+\/[a-z0-9.+-]+(\/)?$/i,{message:"declared must be a valid MIME type (e.g. audio/mpeg, application/json)"})}),b=t.object({kind:t.literal("fileSizeBytes"),min:t.number().int().nonnegative().optional(),max:t.number().int().positive().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:"at least one of min/max required"}).refine(e=>e.min===void 0||e.max===void 0||e.min<=e.max,{message:"min must be <= max"}),x=t.object({kind:t.literal("audioZeroCrossingRatePerS"),max:t.number().positive()}),I=t.object({kind:t.literal("audioDurationMs"),min:t.number().int().nonnegative().optional(),max:t.number().int().positive().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:"at least one of min/max required"}).refine(e=>e.min===void 0||e.max===void 0||e.min<=e.max,{message:"min must be <= max"}),R=t.discriminatedUnion("kind",[p,g,k,y,b,x,I]),A=t.array(R);function d(e){return e.kind==="lengthTarget"||e.kind==="format"||e.kind==="requireHeading"||e.kind==="mime"}function l(e){return e.outputContract?.contractRules??[]}function E(e){return l(e).some(i=>!d(i)||i.kind==="mime"&&i.declared.toLowerCase()!=="application/json")}function N(e,i){return typeof i!="string"?!1:l(e).some(n=>n.kind==="format"&&(n.value==="markdown"||n.value==="text"))}export{T as a,R as b,A as c,d,l as e,E as f,N as g};
1
+ import{h as c,i as m}from"./chunk-4JHACUZY.js";import{c as a,h as f}from"./chunk-EZLBMUQD.js";import{c as s,e as u}from"./chunk-5M6IGE5G.js";u();f();var r=a("adam");function T(e){let i=e.traceIdOverride??s();if(!i){r.debug({toolName:e.toolName,entityType:e.entityType,verb:e.verb},"Mutation receipt skipped: no active trace context");return}let n={traceId:i,toolName:e.toolName,taskId:e.taskId,roleId:e.roleId};try{m({traceId:i,taskId:e.taskId,sessionId:e.sessionId,effectCategory:"entity_mutation",verb:e.verb,entityType:e.entityType,entityId:e.entityId,entityIds:e.entityIds,fieldChanges:e.fieldChanges,scope:e.scope,actor:n,outcome:"success"})}catch(o){o instanceof c?r.warn({errors:o.errors,toolName:e.toolName,entityType:e.entityType},"Mutation receipt validation failed"):r.warn({error:o instanceof Error?o.message:String(o),toolName:e.toolName},"Mutation receipt write failed")}}import{z as t}from"zod";var p=t.object({kind:t.literal("lengthTarget"),min:t.number().int().nonnegative(),max:t.number().int().positive(),unit:t.enum(["characters","words","bytes"])}).refine(e=>e.min<=e.max,{message:"min must be <= max"}),g=t.object({kind:t.literal("format"),value:t.enum(["markdown","json","text"])}),k=t.object({kind:t.literal("requireHeading"),value:t.boolean()}),y=t.object({kind:t.literal("mime"),declared:t.string().regex(/^[a-z]+\/[a-z0-9.+-]+(\/)?$/i,{message:"declared must be a valid MIME type (e.g. audio/mpeg, application/json)"})}),b=t.object({kind:t.literal("fileSizeBytes"),min:t.number().int().nonnegative().optional(),max:t.number().int().positive().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:"at least one of min/max required"}).refine(e=>e.min===void 0||e.max===void 0||e.min<=e.max,{message:"min must be <= max"}),x=t.object({kind:t.literal("audioZeroCrossingRatePerS"),max:t.number().positive()}),I=t.object({kind:t.literal("audioDurationMs"),min:t.number().int().nonnegative().optional(),max:t.number().int().positive().optional()}).refine(e=>e.min!==void 0||e.max!==void 0,{message:"at least one of min/max required"}).refine(e=>e.min===void 0||e.max===void 0||e.min<=e.max,{message:"min must be <= max"}),R=t.discriminatedUnion("kind",[p,g,k,y,b,x,I]),A=t.array(R);function d(e){return e.kind==="lengthTarget"||e.kind==="format"||e.kind==="requireHeading"||e.kind==="mime"}function l(e){return e.outputContract?.contractRules??[]}function E(e){return l(e).some(i=>!d(i)||i.kind==="mime"&&i.declared.toLowerCase()!=="application/json")}function N(e,i){return typeof i!="string"?!1:l(e).some(n=>n.kind==="format"&&(n.value==="markdown"||n.value==="text"))}export{T as a,R as b,A as c,d,l as e,E as f,N as g};
@@ -1,4 +1,4 @@
1
- import{F as R,L as E}from"./chunk-P76VP2UH.js";import{d as h,h as A}from"./chunk-VO24C673.js";import{c as y,h as V}from"./chunk-EZLBMUQD.js";import{b as v}from"./chunk-5PELJRUQ.js";import{readFileSync as P,writeFileSync as I,existsSync as b}from"fs";import{join as x}from"path";function k(n){let e=x(m(n),".env");if(!b(e))return null;let s=P(e,"utf-8"),r={};for(let c of s.split(`
1
+ import{F as R,L as E}from"./chunk-2A2TXYT3.js";import{d as h,h as A}from"./chunk-VO24C673.js";import{c as y,h as V}from"./chunk-EZLBMUQD.js";import{b as v}from"./chunk-5PELJRUQ.js";import{readFileSync as P,writeFileSync as I,existsSync as b}from"fs";import{join as x}from"path";function k(n){let e=x(m(n),".env");if(!b(e))return null;let s=P(e,"utf-8"),r={};for(let c of s.split(`
2
2
  `)){let t=c.trim();if(!t||t.startsWith("#"))continue;let i=t.startsWith("export ")?t.slice(7).trim():t,a=i.indexOf("=");if(a===-1)continue;let d=i.slice(0,a).trim(),o=i.slice(a+1).trim();(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))&&(o=o.slice(1,-1)),!(o.includes("$")&&(o=o.replace(/\$\{(\w+)\}|\$(\w+)/g,(f,l,u)=>{let g=l??u;return r[g]??process.env[g]??""}),!o))&&(r[d]=o)}return r}function W(n,e){let s=k(n);if(!s)return e;let r={...e},c=0;for(let[t,i]of Object.entries(s)){if(t.startsWith("ANTHROPIC_")){$.warn({roleName:n,key:t},"Role .env contains ANTHROPIC_* key; ignored (managed globally)");continue}t in r||(r[t]=i,c++)}return c>0&&$.info({roleName:n,seeded:c},"Seeded role envVars from .env file"),Object.keys(r).length>0?r:void 0}function U(n,e){let s=k(n);if(!s)return[];let r=e??{},c=[];for(let[t,i]of Object.entries(s)){if(t.startsWith("ANTHROPIC_"))continue;let a=r[t]??"";a!==i&&c.push({envKey:t,dbValue:a,envValue:i})}for(let[t,i]of Object.entries(r))t in s||c.push({envKey:t,dbValue:i,envValue:""});return c}function q(n,e){let s=x(m(n),".env"),r=e??{},c=[],t=new Set;if(b(s)){let a=P(s,"utf-8");for(let d of a.split(`
3
3
  `)){let o=d.trim();if(!o||o.startsWith("#")){c.push(d);continue}let f=o.startsWith("export ")?o.slice(7).trim():o,l=f.indexOf("=");if(l===-1){c.push(d);continue}let u=f.slice(0,l).trim(),g=o.startsWith("export ")?"export ":"";u in r&&(c.push(`${g}${u}=${r[u]}`),t.add(u))}}let i=0;for(let[a,d]of Object.entries(r)){if(t.has(a)){i++;continue}d&&d.length>0&&(c.push(`${a}=${d}`),i++)}return I(s,c.join(`
4
4
  `)+`
@@ -1,2 +1,2 @@
1
- import{n as r,p as s}from"./chunk-VARIYH6K.js";import{b as i}from"./chunk-5PELJRUQ.js";function p(e){let n=r().prepare("SELECT value FROM config WHERE key = ?").get(e);if(n)try{return JSON.parse(n.value)}catch{return n.value}}function E(e,t){let n=r(),o=JSON.stringify(t),u=Date.now();n.prepare(`INSERT INTO config (key, value, updated_at) VALUES (?, ?, ?)
1
+ import{n as r,p as s}from"./chunk-WY5BOCQP.js";import{b as i}from"./chunk-5PELJRUQ.js";function p(e){let n=r().prepare("SELECT value FROM config WHERE key = ?").get(e);if(n)try{return JSON.parse(n.value)}catch{return n.value}}function E(e,t){let n=r(),o=JSON.stringify(t),u=Date.now();n.prepare(`INSERT INTO config (key, value, updated_at) VALUES (?, ?, ?)
2
2
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`).run(e,o,u)}function k(){let t=r().prepare("SELECT key, value FROM config").all(),n={};for(let o of t)try{n[o.key]=JSON.parse(o.value)}catch{n[o.key]=o.value}return n}function b(e){let t=r(),n=t.prepare("INSERT OR IGNORE INTO config (key, value, updated_at) VALUES (?, ?, ?)"),o=Date.now(),u=0;return t.transaction(()=>{for(let[c,a]of Object.entries(e)){if(a==null||a==="")continue;n.run(c,JSON.stringify(a),o).changes>0&&u++}})(),u}function w(){return r().prepare("SELECT COUNT(*) as count FROM config").get().count===0}function O(e){return r().prepare("DELETE FROM config WHERE key = ?").run(e).changes>0}var d=i(()=>{s()});export{p as a,E as b,k as c,b as d,w as e,O as f,d as g};
@@ -0,0 +1 @@
1
+ import{b as e,d as t,h as a}from"./chunk-VO24C673.js";a();var i={defaults:{timeout:600,maxTurns:400,maxBudgetUsd:5,effort:"high",model:"",settingSources:["user","project"],allowedTools:[],disallowedTools:[],approvalRequired:["rm -rf *","git push*","git reset*","curl * -X POST*","curl * --request POST*"],approvalTimeout:600,env:{},plugins:[],workspacePath:t,workspaceRetention:"immediate",deniedReadPaths:[...e]},externalApis:[],server:{port:7100,host:"0.0.0.0",timezone:"system"},identity:{ownerViewerKey:"local-owner"},logging:{level:"info"},roles:{presets:[],evolution:{triggerEvery:5,reflectionThreshold:150,retirementThreshold:.4,probationTasks:5}},chat:{sessionTimeoutMinutes:30,maxSessionTurns:20,autoTitle:!0,archiveExtractMemory:!0,contextBudgetTokens:2e4,artifactThresholdChars:4e3,maxConcurrentLiveSessions:3,liveSessionIdleMinutes:30,commitmentDetection:{locales:["zh","en"],blockedText:{zh:"\u4EFB\u52A1\u5DF2\u63D0\u4EA4\uFF0C\u5B8C\u6210\u540E\u6211\u4F1A\u66F4\u65B0\u7ED3\u679C\u3002",en:"Task dispatched; I will update you when it completes."},unsupportedSuccessText:{zh:"\u56FE\u7247\u5DF2\u751F\u6210\uFF0C\u53D1\u9001\u72B6\u6001\u8FD8\u6CA1\u6709\u5B8C\u6210\u9A8C\u8BC1\u3002",en:"Result is ready; delivery status is not yet verified."},unsupportedFailureText:{zh:"\u56FE\u7247\u5DF2\u751F\u6210\uFF0C\u4F46\u8FD8\u6CA1\u6709\u6267\u884C\u53D1\u9001\u3002",en:"Result is ready, but delivery has not been attempted."},unsupportedMutationText:{zh:"\u6211\u6CA1\u6709\u5B8C\u6210\u8FD9\u6B21\u8BB0\u5F55\uFF0C\u4E0D\u80FD\u8BF4\u5DF2\u8BB0\u5F55\u3002\u9700\u8981\u5148\u66F4\u65B0\u5BF9\u5E94\u6A21\u677F\u6216\u914D\u7F6E\u540E\u518D\u786E\u8BA4\u3002",en:"I did not actually record this. The template or config has not been updated yet."}}},memory:{midTaskInjection:{enabled:!0,toolCallThreshold:10,cooldownMs:6e4,topK:3,maxTokens:1e3},retrievalWeights:{cosSim:.4,recency:.2,tokenCost:.05},globalBudgetTokens:1500,retrievalDecayDays:30,attributionThresholds:{high:.7,low:.4},antiFlipMinUses:5,antiFlipSuccessEmaThreshold:.25,reflection:{maxBudgetUsd:5},scope:{emaAlpha:.3,humanFeedbackWeight:3,reflectionPoolMax:100,decayBase:.995,archiveThreshold:.2},embeddingModel:"bge-small-zh-v1.5"},watchdog:{enabled:!0,intervalMinutes:5,rules:{managerHealthCheck:{enabled:!0,action:"restart",staleDurationMinutes:15},staleTasks:{enabled:!0,action:"notify",maxPendingMinutes:30},staleRunningTasks:{enabled:!0,action:"notify",maxRunningMinutes:15},staleTemplateExecutions:{enabled:!0,action:"notify",maxOrphanMinutes:60},dbMaintenance:{enabled:!0,action:"ignore",walCheckpointThresholdMB:100},artifactCleanup:{enabled:!0,action:"ignore",ttlDays:7,orphanGcMinAgeHours:1},sandboxViolation:{enabled:!0,action:"alert"},reflectionJob:{enabled:!0,intervalMinutes:30},memoryGc:{enabled:!0,intervalHours:24,observationTtlDays:14}}},execution:{maxConcurrent:5,pollIntervalMs:3e4},anthropic:{apiKey:"",baseUrl:"",model:"",defaultOpusModel:"",defaultSonnetModel:"",defaultHaikuModel:"",smallFastModel:""},emailGateway:{enabled:!1,address:"",displayName:"Adam",imap:{host:"",port:993,secure:!0,auth:{user:"",pass:""},mailbox:"INBOX"},smtp:{host:"",port:465,secure:!0,auth:{user:"",pass:""},from:""},subjectPrefix:"Adam"},audit:{intentEval:{maxBudgetUsd:1,timeoutMs:3e4}},evaluation:{},delivery:{cronDefaultReportTo:null},storage:{localProfile:"default"},pricing:{models:{"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheCreation:6.25,estimated:!0},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheCreation:3.75,estimated:!0},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheCreation:1.25,estimated:!0},"deepseek-v4-flash":{input:.14,output:.28,cacheRead:.0028,cacheCreation:.14,estimated:!0},"deepseek-v4-pro":{input:1.74,output:3.48,cacheRead:.0145,cacheCreation:1.74,estimated:!0},"doubao-seed-2.0-pro":{input:.47,output:2.37,cacheRead:.094,cacheCreation:.47,estimated:!0},"minimax-m2":{input:.26,output:1,cacheRead:.26,cacheCreation:.26,estimated:!0},"gpt-4.1":{input:2,output:8,cacheRead:.5,cacheCreation:2,estimated:!0},"gpt-4o":{input:2.5,output:10,cacheRead:1.25,cacheCreation:2.5,estimated:!0},"gemini-2.5-pro":{input:1.25,output:10,cacheRead:.3125,cacheCreation:1.25,estimated:!0},"gemini-2.5-flash":{input:.3,output:2.5,cacheRead:.075,cacheCreation:.3,estimated:!0}}},cost:{dailyThresholdUsd:0}};export{i as a};
@@ -1,4 +1,4 @@
1
- import{g}from"./chunk-TNBQFCXR.js";import{f as T,i as K}from"./chunk-3VUEB67V.js";import{r as _,t as E,u as f}from"./chunk-3R7VGMAK.js";import{C as R,D as A,E as c,F as x,G as C,L as z}from"./chunk-P76VP2UH.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-KOTVFJD3.js"),{getRole:e}=await import("./roles-B6YC4GDC.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-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).
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