adam-agent-server 1.17.0 → 1.19.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.
- package/dist/{App-SIQUVFJY.js → App-522DTURQ.js} +10 -10
- package/dist/approval-handler-S3NV7OPO.js +1 -0
- package/dist/{artifacts-DMY2MI2F.js → artifacts-NFMM3ORE.js} +1 -1
- package/dist/audit-diagnostics-IHU3CJYZ.js +1 -0
- package/dist/audit-manager-MUMEEP3C.js +1 -0
- package/dist/bree-engine-EEKUQA3U.js +1 -0
- package/dist/channels-IDBWHLLE.js +1 -0
- package/dist/{channels-VYNJFXDD.js → channels-ZHCTFSDA.js} +1 -1
- package/dist/chat-tool-calls-4BQWZCJH.js +1 -0
- package/dist/{chunk-A57SY3E4.js → chunk-2JM3URDG.js} +1 -1
- package/dist/chunk-3MROEPGR.js +1 -0
- package/dist/{chunk-UUJ24BNJ.js → chunk-4G4CKAXY.js} +1 -1
- package/dist/chunk-4ZESWP3J.js +1 -0
- package/dist/{chunk-K3HWZBE5.js → chunk-4ZG4UMAK.js} +1 -1
- package/dist/{chunk-ED2JAMEN.js → chunk-6GYNUTPP.js} +1 -1
- package/dist/{chunk-OII5SDMS.js → chunk-76MMY2XC.js} +1 -1
- package/dist/{chunk-3RITIMKB.js → chunk-7QT2ZX3K.js} +1 -1
- package/dist/{chunk-MQTK4Q6M.js → chunk-A3YUIWLK.js} +1 -1
- package/dist/{chunk-HL373H4P.js → chunk-AMJJ2WGU.js} +1 -1
- package/dist/{chunk-BRUHXRKK.js → chunk-AUSR5JYV.js} +1 -1
- package/dist/{chunk-73GP6K5S.js → chunk-CN5NEJXG.js} +1 -1
- package/dist/{chunk-4WJ2VSEJ.js → chunk-DFTRUOT6.js} +1 -1
- package/dist/{chunk-DCTNMUQ5.js → chunk-DRS5NOAA.js} +1 -1
- package/dist/{chunk-D5PAJ3CB.js → chunk-EBZCHLYS.js} +1 -1
- package/dist/chunk-EPLSB63A.js +80 -0
- package/dist/{chunk-2WPUKCDA.js → chunk-FN64ZULV.js} +1 -1
- package/dist/chunk-FQHGIY3E.js +1 -0
- package/dist/{chunk-3VUEB67V.js → chunk-GQS3ED3B.js} +1 -1
- package/dist/{chunk-3GK65T2V.js → chunk-HEHST2E2.js} +1 -1
- package/dist/chunk-IAGTZGGV.js +32 -0
- package/dist/chunk-ITVCPC7G.js +1 -0
- package/dist/chunk-J2VSAXVU.js +1 -0
- package/dist/{chunk-5G64P4KE.js → chunk-JRRNGKDK.js} +1 -1
- package/dist/{chunk-A2S67EQG.js → chunk-JVYSSJKT.js} +2 -2
- package/dist/chunk-JXZCQ5XW.js +1 -0
- package/dist/{chunk-WDSCTXT7.js → chunk-KM4EFB4N.js} +1 -1
- package/dist/chunk-KQMKRRYW.js +143 -0
- package/dist/{chunk-PBKZDNNV.js → chunk-L4APYD5A.js} +1 -1
- package/dist/{chunk-VARIYH6K.js → chunk-LMQPGVM7.js} +97 -36
- package/dist/chunk-MMVDXKYS.js +14 -0
- package/dist/chunk-NKS7LEA7.js +182 -0
- package/dist/{chunk-3R7VGMAK.js → chunk-ORFLN4BF.js} +1 -1
- package/dist/{chunk-YEBC67DJ.js → chunk-PO66F7UQ.js} +1 -1
- package/dist/{chunk-2RBYM3X7.js → chunk-QJXV4SQE.js} +1 -1
- package/dist/{chunk-NV5ZXKKF.js → chunk-R7Q6FSV4.js} +1 -1
- package/dist/{chunk-TO27F23C.js → chunk-T2Z2JDPY.js} +1 -1
- package/dist/{chunk-VVBN35YG.js → chunk-T7EKW3B7.js} +1 -1
- package/dist/{chunk-5WBFQMJL.js → chunk-VOH52UDS.js} +1 -1
- package/dist/{chunk-32D5GWJD.js → chunk-VZL2DGC4.js} +1 -1
- package/dist/{chunk-QWIBCFPC.js → chunk-WDMSZS4W.js} +2 -2
- package/dist/{chunk-P76VP2UH.js → chunk-WG3C43QS.js} +5 -5
- package/dist/chunk-YEGUFMLJ.js +5 -0
- package/dist/{chunk-VSSKQAG5.js → chunk-ZGA52HRD.js} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{config-ZDKMTZJC.js → config-GOJLI3X2.js} +1 -1
- package/dist/config-Z6KFEFJO.js +1 -0
- package/dist/db-ROXIYW5B.js +1 -0
- package/dist/{delivery-log-2ILFP673.js → delivery-log-TGJZ5HU7.js} +1 -1
- package/dist/engine-GN7PJPGQ.js +1 -0
- package/dist/{evolution-audit-BDQM6NAX.js → evolution-audit-TFJF666X.js} +1 -1
- package/dist/execution-tools-BQD2O25X.js +1 -0
- package/dist/{external-api-7GB3U775.js → external-api-DSLQDRZ2.js} +1 -1
- package/dist/index.js +68 -46
- package/dist/{learner-V2HBTRAE.js → learner-ACBX3GI7.js} +1 -1
- package/dist/{memories-B3QGTYLX.js → memories-RAIR5O2F.js} +1 -1
- package/dist/{memory-extractor-RYZ3VU7A.js → memory-extractor-A6CAOFOX.js} +1 -1
- package/dist/{memory-gc-5AYND3RL.js → memory-gc-W63MGSDH.js} +1 -1
- package/dist/memory-service-H4OFUNCF.js +1 -0
- package/dist/outbound-gateway-LKRQYPA2.js +1 -0
- package/dist/presets-FO6RSGDN.js +1 -0
- package/dist/{reflection-job-P6GIQVQN.js → reflection-job-XC2F7GTT.js} +1 -1
- package/dist/role-presets-SDA664QG.js +1 -0
- package/dist/role-workspace-NGJEJG3H.js +1 -0
- package/dist/{roles-B6YC4GDC.js → roles-LZCJ7QFS.js} +1 -1
- package/dist/runtime-OMLPOMCA.js +1 -0
- package/dist/session-manager-PU4GH3E4.js +1 -0
- package/dist/skill-registry-XKLE2LXU.js +1 -0
- package/dist/{task-templates-MNCF7JON.js → task-templates-52LAC6OA.js} +1 -1
- package/dist/template-dispatch-PJFSWEO2.js +1 -0
- package/package.json +1 -1
- package/web/dist/assets/{ArtifactDetail-Dt_xkaYJ.js → ArtifactDetail-DDTEAl2E.js} +1 -1
- package/web/dist/assets/{Artifacts-DlPMk9VQ.js → Artifacts-BrhnC1Ef.js} +1 -1
- package/web/dist/assets/{ChannelDetail-kYtMmy6P.js → ChannelDetail-CSq9o5fq.js} +1 -1
- package/web/dist/assets/{Channels-BppR0Qc_.js → Channels-CAxTh1Bp.js} +1 -1
- package/web/dist/assets/Chat-PUz41HFr.js +2 -0
- package/web/dist/assets/Cost-BHcsPz5T.js +4 -0
- package/web/dist/assets/{Dashboard-XURc0f15.js → Dashboard-BT39_iWc.js} +1 -1
- package/web/dist/assets/{EnvVarEditor-DR-bSU0w.js → EnvVarEditor-D_1d7bTJ.js} +1 -1
- package/web/dist/assets/{EventDefDetail-DtkbGbQ0.js → EventDefDetail-jKN3gO_7.js} +1 -1
- package/web/dist/assets/{Events-C_J4jvDh.js → Events-CpeHg3fh.js} +1 -1
- package/web/dist/assets/{Evolution-CEaSpRAm.js → Evolution-DsWyv2_a.js} +1 -1
- package/web/dist/assets/{ExtensionDetail-D5Qfq-W4.js → ExtensionDetail-CJHNaNii.js} +1 -1
- package/web/dist/assets/Extensions-Pg2vx_ZK.js +1 -0
- package/web/dist/assets/{FeatureRequests-D8WEYtoU.js → FeatureRequests-3Yl8wTNT.js} +1 -1
- package/web/dist/assets/{GoalDetail-DnMS_WWw.js → GoalDetail-L3T1zqqs.js} +1 -1
- package/web/dist/assets/{Goals-BeKwpAss.js → Goals-B-__r-Yq.js} +1 -1
- package/web/dist/assets/LineChart-Ck1vfYHs.js +33 -0
- package/web/dist/assets/{Logs-BfXBv-dV.js → Logs-CMkjUkmu.js} +1 -1
- package/web/dist/assets/{Memories-QRH7O8qP.js → Memories-Q1eKfPQ2.js} +1 -1
- package/web/dist/assets/{Mistakes-mXU9PXft.js → Mistakes-BROkixt_.js} +1 -1
- package/web/dist/assets/{Plugins-C8v4AsvM.js → Plugins-v17MyPVe.js} +1 -1
- package/web/dist/assets/RoleDetail-DCGFBLP1.js +3 -0
- package/web/dist/assets/{Roles-B8dQCKuS.js → Roles-C7SNebvY.js} +1 -1
- package/web/dist/assets/Settings-QuKwKbKg.js +1 -0
- package/web/dist/assets/{Strategies-DFUWEKfU.js → Strategies-CXQYvCkc.js} +1 -1
- package/web/dist/assets/{Switch-BcS5rOWb.js → Switch--h1rqagh.js} +1 -1
- package/web/dist/assets/{TaskDetail-BdhBhvKg.js → TaskDetail-B0G5ZjDD.js} +1 -1
- package/web/dist/assets/{Work-D-t80Ekv.js → Work-DbFst_9-.js} +1 -1
- package/web/dist/assets/api-BP4ZP9kk.js +1 -0
- package/web/dist/assets/index-D35OGE0z.css +2 -0
- package/web/dist/assets/index-Dd3NDYZR.js +12 -0
- package/web/dist/assets/{usePluginsWithUsage-DE13JW16.js → usePluginsWithUsage-DpTxJuFQ.js} +1 -1
- package/web/dist/index.html +3 -3
- package/dist/approval-handler-FONN2EGB.js +0 -1
- package/dist/audit-diagnostics-D4M4SA5O.js +0 -1
- package/dist/audit-manager-YEOJRE6K.js +0 -1
- package/dist/bree-engine-RGTBKKFE.js +0 -1
- package/dist/channels-WFU4CVGW.js +0 -1
- package/dist/chat-tool-calls-WQGFYTUV.js +0 -1
- package/dist/chunk-2V2H5PG5.js +0 -182
- package/dist/chunk-4G2OZPP5.js +0 -1
- package/dist/chunk-725BGAO2.js +0 -143
- package/dist/chunk-7IXYCDUF.js +0 -1
- package/dist/chunk-CFPXWGFD.js +0 -1
- package/dist/chunk-FJ3DUJXO.js +0 -1
- package/dist/chunk-FMJVKJJE.js +0 -1
- package/dist/chunk-OH6VBBDV.js +0 -1
- package/dist/chunk-SJTIMT5U.js +0 -5
- package/dist/chunk-TNBQFCXR.js +0 -14
- package/dist/chunk-UAF4KNXE.js +0 -32
- package/dist/chunk-VO24C673.js +0 -1
- package/dist/config-GRL6O2ZY.js +0 -1
- package/dist/db-LIKGSZCL.js +0 -1
- package/dist/engine-JVPM3XE5.js +0 -1
- package/dist/execution-tools-7MK257DY.js +0 -1
- package/dist/memory-service-XI3JZQ4E.js +0 -1
- package/dist/outbound-gateway-O27KKVOI.js +0 -1
- package/dist/presets-UAH3OG3C.js +0 -1
- package/dist/role-presets-RVYTO5FS.js +0 -1
- package/dist/role-workspace-KOTVFJD3.js +0 -1
- package/dist/runtime-C3XN33A3.js +0 -1
- package/dist/session-manager-HO2ZCB47.js +0 -1
- package/dist/skill-registry-X2GY7SMI.js +0 -1
- package/dist/template-dispatch-BAMKX3QH.js +0 -1
- package/web/dist/assets/Chat-BLVREMCu.js +0 -2
- package/web/dist/assets/Extensions-B_egkUP1.js +0 -1
- package/web/dist/assets/RoleDetail-Ct-k3uoK.js +0 -35
- package/web/dist/assets/Settings-CqtCBP6I.js +0 -1
- package/web/dist/assets/api-BRfbZQSW.js +0 -1
- package/web/dist/assets/index-DWU9AURw.css +0 -2
- package/web/dist/assets/index-PIFMZAPo.js +0 -12
- /package/web/dist/assets/{NotFound-DuH6sFz7.js → NotFound-t66RIvqO.js} +0 -0
- /package/web/dist/assets/{Table-D2K039zr.js → Table-CvSmzzkm.js} +0 -0
- /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-76MMY2XC.js";import"./chunk-IAGTZGGV.js";import"./chunk-DRS5NOAA.js";import"./chunk-VZL2DGC4.js";import"./chunk-YEGUFMLJ.js";import"./chunk-4G4CKAXY.js";import"./chunk-L4APYD5A.js";import"./chunk-ORFLN4BF.js";import"./chunk-L7JP7DUO.js";import"./chunk-WG3C43QS.js";import"./chunk-EBZCHLYS.js";import"./chunk-CN5NEJXG.js";import"./chunk-J2VSAXVU.js";import"./chunk-3MROEPGR.js";import"./chunk-6GYNUTPP.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.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-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"./chunk-6GYNUTPP.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.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-4G4CKAXY.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.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{M as a,N as b,O as c,P as d,Q as e,R as f,S as g}from"./chunk-NKS7LEA7.js";import"./chunk-QMW7VEPC.js";import"./chunk-R7Q6FSV4.js";import"./chunk-QJXV4SQE.js";import"./chunk-EPLSB63A.js";import"./chunk-KM4EFB4N.js";import"./chunk-A3YUIWLK.js";import"./chunk-WDMSZS4W.js";import"./chunk-DRS5NOAA.js";import"./chunk-DFTRUOT6.js";import"./chunk-MMVDXKYS.js";import"./chunk-FQHGIY3E.js";import"./chunk-2JM3URDG.js";import"./chunk-L4APYD5A.js";import"./chunk-GQS3ED3B.js";import"./chunk-ORFLN4BF.js";import"./chunk-L7JP7DUO.js";import"./chunk-HEHST2E2.js";import"./chunk-PO66F7UQ.js";import"./chunk-4ZG4UMAK.js";import"./chunk-T2Z2JDPY.js";import"./chunk-FN64ZULV.js";import"./chunk-WG3C43QS.js";import"./chunk-AUSR5JYV.js";import"./chunk-CN5NEJXG.js";import"./chunk-J2VSAXVU.js";import"./chunk-3MROEPGR.js";import"./chunk-6GYNUTPP.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.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-7QT2ZX3K.js";import"./chunk-KQMKRRYW.js";import"./chunk-R7Q6FSV4.js";import"./chunk-QJXV4SQE.js";import"./chunk-EPLSB63A.js";import"./chunk-KM4EFB4N.js";import"./chunk-4ZESWP3J.js";import"./chunk-4N5G7ND2.js";import"./chunk-WDMSZS4W.js";import"./chunk-NNMQGISW.js";import"./chunk-IAGTZGGV.js";import"./chunk-DRS5NOAA.js";import"./chunk-VZL2DGC4.js";import"./chunk-YEGUFMLJ.js";import"./chunk-4G4CKAXY.js";import"./chunk-FQHGIY3E.js";import"./chunk-2JM3URDG.js";import"./chunk-L4APYD5A.js";import"./chunk-GQS3ED3B.js";import"./chunk-ORFLN4BF.js";import"./chunk-L7JP7DUO.js";import"./chunk-T2Z2JDPY.js";import"./chunk-FN64ZULV.js";import"./chunk-WG3C43QS.js";import"./chunk-EBZCHLYS.js";import"./chunk-CN5NEJXG.js";import"./chunk-T7EKW3B7.js";import"./chunk-J2VSAXVU.js";import"./chunk-JRRNGKDK.js";import"./chunk-3MROEPGR.js";import"./chunk-6GYNUTPP.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.js";import"./chunk-EZLBMUQD.js";import"./chunk-5M6IGE5G.js";import"./chunk-5PELJRUQ.js";export{a as BreeEngine,b as getBreeEngine,c as setBreeEngine};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as a,j as b,k as c}from"./chunk-JXZCQ5XW.js";import"./chunk-WDMSZS4W.js";import"./chunk-NNMQGISW.js";import"./chunk-VZL2DGC4.js";import"./chunk-YEGUFMLJ.js";import"./chunk-4G4CKAXY.js";import"./chunk-EBZCHLYS.js";import"./chunk-J2VSAXVU.js";import"./chunk-3MROEPGR.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.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{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-
|
|
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-EBZCHLYS.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.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{a,b,c}from"./chunk-VOH52UDS.js";import"./chunk-LMQPGVM7.js";import"./chunk-ITVCPC7G.js";import"./chunk-EZLBMUQD.js";import"./chunk-5PELJRUQ.js";export{c as hasAnyToolCallInTurn,b as listChatToolCallsByTrace,a as recordChatToolCall};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o as e,q as i}from"./chunk-LMQPGVM7.js";import{c as o,e as d}from"./chunk-5M6IGE5G.js";i();d();function s(t){return{id:t.id,taskId:t.task_id,index:t.index,type:t.type,content:t.content,toolName:t.tool_name??void 0,toolInput:t.tool_input?JSON.parse(t.tool_input):void 0,toolOutput:t.tool_output??void 0,truncated:t.truncated===1,timestamp:t.timestamp,tokenUsage:t.token_usage?JSON.parse(t.token_usage):void 0,planStepIndex:t.plan_step_index??void 0,traceId:t.trace_id??void 0}}function _(t){e().prepare(`
|
|
2
2
|
INSERT INTO step_logs (id, task_id, "index", type, content, tool_name,
|
|
3
3
|
tool_input, tool_output, truncated, timestamp, token_usage, plan_step_index, trace_id)
|
|
4
4
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
@@ -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{
|
|
1
|
+
import{o as r,q as n}from"./chunk-LMQPGVM7.js";import{c,e as u}from"./chunk-5M6IGE5G.js";import{b as d,c as o}from"./chunk-5PELJRUQ.js";var D={};o(D,{listAuditDiagnostics:()=>A,recordAuditDiagnostic:()=>g});import{v4 as a}from"uuid";function g(e){let t={id:a(),source:e.source,severity:e.severity,traceId:e.traceId??c()??void 0,sourceId:e.sourceId,message:e.message,createdAt:e.createdAt??Date.now()};return r().prepare(`
|
|
2
2
|
INSERT INTO audit_diagnostics (id, source, severity, trace_id, source_id, message, created_at)
|
|
3
3
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
4
4
|
`).run(t.id,t.source,t.severity,t.traceId??null,t.sourceId??null,t.message,t.createdAt),t}function A(e={}){let t=[],i=[];e.source&&(t.push("source = ?"),i.push(e.source)),e.traceId&&(t.push("trace_id = ?"),i.push(e.traceId));let s="SELECT * FROM audit_diagnostics";return t.length>0&&(s+=` WHERE ${t.join(" AND ")}`),s+=" ORDER BY created_at DESC",e.limit!==void 0&&(s+=" LIMIT ?",i.push(e.limit)),r().prepare(s).all(...i).map(m)}function m(e){return{id:e.id,source:e.source,severity:e.severity,traceId:e.trace_id??void 0,sourceId:e.source_id??void 0,message:e.message,createdAt:e.created_at}}var I=d(()=>{n();u()});export{g as a,A as b,D as c,I as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as x,e as C}from"./chunk-WDMSZS4W.js";import{a as y,b as u,c,d as m,e as h,g as v}from"./chunk-YEGUFMLJ.js";import{a as i}from"./chunk-L7JP7DUO.js";import{b as l}from"./chunk-T2Z2JDPY.js";import{a as g}from"./chunk-FN64ZULV.js";import{e as f}from"./chunk-T7EKW3B7.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,4 +1,4 @@
|
|
|
1
|
-
import{h as c}from"./chunk-
|
|
1
|
+
import{h as c}from"./chunk-FN64ZULV.js";import{K as u,L as p}from"./chunk-WG3C43QS.js";import{o as s,q as f}from"./chunk-LMQPGVM7.js";f();p();function r(e){return{id:e.id,roleId:e.role_id,content:e.content,isAnti:e.is_anti===1,evidenceObsIds:e.evidence_obs_ids?JSON.parse(e.evidence_obs_ids):[],embedding:e.embedding?new Float32Array(e.embedding.buffer,e.embedding.byteOffset,e.embedding.byteLength/4):void 0,supersededBy:e.superseded_by??void 0,createdAt:e.created_at,lastUsedAt:e.last_used_at,lastValidatedAt:e.last_validated_at,scopeKey:e.scope_key??void 0,status:e.status,successEma:e.success_ema??void 0,injectCount:e.inject_count??0}}function _(e){return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}function g(e){let t=s(),n=e.lastUsedAt??u(e.roleId);t.prepare(`
|
|
2
2
|
INSERT INTO beliefs (id, role_id, content,
|
|
3
3
|
is_anti, evidence_obs_ids, embedding, superseded_by,
|
|
4
4
|
created_at, last_used_at, last_validated_at,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o,q as k}from"./chunk-LMQPGVM7.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,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{j as y}from"./chunk-IAGTZGGV.js";import{c as m}from"./chunk-EBZCHLYS.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 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{t as b}from"./chunk-KQMKRRYW.js";import{s,u as m,w as x}from"./chunk-ORFLN4BF.js";import{a as p}from"./chunk-L7JP7DUO.js";import{q as T}from"./chunk-FN64ZULV.js";import{G as f,L as J}from"./chunk-WG3C43QS.js";import{c as h,h as C}from"./chunk-EZLBMUQD.js";C();J();import{v4 as l}from"uuid";import{CronExpressionParser as E}from"cron-parser";var n=h("scheduler"),y=class{cronJobs=new Map;started=!1;templateExecutionCompletionHandler=null;async start(){if(this.started)return;this.started=!0;let e=m(!0),t=0;for(let r of e)r.trigger.type==="cron"&&r.trigger.cron&&(this.scheduleCronJob(r),t++);let o=0;for(let r of e)r.trigger.type==="once"&&r.trigger.runAt&&(this.scheduleOnceJob(r.id),o++);this.templateExecutionCompletionHandler=r=>{(r.status==="completed"||r.status==="partial")&&this.checkTemplateCompleteTriggers(r.templateId).catch(i=>{n.error({templateId:r.templateId,error:i},"Template-complete trigger check failed")})},p.on("template_execution_status_change",this.templateExecutionCompletionHandler),this.cronJobs.set("memory-cleanup",setInterval(()=>{this.runMemoryCleanup()},36e5)),n.info({cronCount:t,onceCount:o},"Bree engine started with cron jobs + memory cleanup")}runMemoryCleanup(){try{let e=f(void 0,1e3,0),t=0;for(let o of e)t+=T(o.id);t>0&&n.info({totalCleaned:t},"Memory cleanup completed")}catch(e){n.warn({error:e},"Memory cleanup failed")}}async stop(){for(let[,e]of this.cronJobs)clearTimeout(e),clearInterval(e);this.cronJobs.clear(),this.templateExecutionCompletionHandler&&(p.off("template_execution_status_change",this.templateExecutionCompletionHandler),this.templateExecutionCompletionHandler=null),this.started=!1,n.info("Bree engine stopped")}scheduleCronJob(e){let t=`template-${e.id}`;this.cronJobs.has(t)&&(clearTimeout(this.cronJobs.get(t)),this.cronJobs.delete(t));let o;try{o=E.parse(e.trigger.cron)}catch{n.warn({templateId:e.id,cron:e.trigger.cron},"Invalid cron expression");return}let r=()=>{let u=o.next().getTime()-Date.now();return Math.max(u,1e3)},i=()=>{this.executeCronTrigger(e.id).catch(u=>{n.error({templateId:e.id,error:u},"Cron trigger failed")});let d=setTimeout(i,r());this.cronJobs.set(t,d)},c=r(),a=setTimeout(i,c);this.cronJobs.set(t,a),n.debug({jobName:t,nextRun:new Date(Date.now()+c).toISOString()},"Scheduled cron job")}async executeCronTrigger(e){let t=s(e);!t||!t.enabled||(n.info({templateName:t.name},"Cron triggered"),await this.executeTemplateExecution(t,l()))}async scheduleJob(e){let t=s(e);t&&t.trigger.type==="cron"&&t.trigger.cron&&this.scheduleCronJob(t)}async unscheduleJob(e){let t=`template-${e}`,o=this.cronJobs.get(t);o&&(clearTimeout(o),this.cronJobs.delete(t))}async runNow(e,t){let o=s(e);if(!o)throw new Error(`Template ${e} not found`);let r=l();return this.executeTemplateExecution(o,r,t).catch(i=>{n.error({templateId:e,error:i},"TemplateExecution failed")}),r}async checkTemplateCompleteTriggers(e){let o=m(!0).filter(r=>r.trigger.type!=="template_complete"||!r.trigger.event?!1:r.trigger.event===`template_complete:${e}`);for(let r of o)n.info({templateName:r.name,sourceTemplateId:e},"Template-complete trigger matched"),await this.executeTemplateExecution(r,l())}async executeTemplateExecution(e,t,o={}){await b(e,{...o,executionId:t,triggerContext:o.triggerContext??{source:"bree"}})}scheduleOnceJob(e){let t=s(e);if(!t||!t.enabled||t.trigger.type!=="once")return;let r=(t.trigger.runAt?new Date(t.trigger.runAt).getTime():0)-Date.now();if(r<=0){n.info({templateId:e,runAt:t.trigger.runAt},"Once-shot template past due, executing immediately"),this.executeOnceTrigger(e).catch(a=>{n.error({templateId:e,error:a},"Once trigger execution failed")});return}let i=`template-${e}`;this.cronJobs.has(i)&&clearTimeout(this.cronJobs.get(i));let c=setTimeout(()=>{this.cronJobs.delete(i),this.executeOnceTrigger(e).catch(a=>{n.error({templateId:e,error:a},"Once trigger execution failed")})},r);this.cronJobs.set(i,c),n.info({templateId:e,runAt:t.trigger.runAt,delayMs:r},"Scheduled once-shot job")}async executeOnceTrigger(e){let t=s(e);!t||!t.enabled||(n.info({templateName:t.name},"Once-shot triggered"),await this.executeTemplateExecution(t,l()),x(e),n.info({templateId:e},"Once-shot template auto-disabled after execution"))}},v=null;function N(){return v}function j(g){v=g}export{y as a,N as b,j as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o,q as a}from"./chunk-LMQPGVM7.js";import{c as u,e as c}from"./chunk-5M6IGE5G.js";a();c();import{v4 as p}from"uuid";function R(t){o().prepare(`
|
|
2
2
|
INSERT INTO evolution_audit (id, timestamp, old_rules, new_rules, diff, trigger_task_id, role_id, source, trace_id)
|
|
3
3
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
4
4
|
`).run(p(),t.timestamp,t.oldRules,t.newRules,t.diff,t.triggerTaskId??null,t.roleId??null,t.source??"reflection",t.traceId??u()??null)}function _(t=100,e=0){return o().prepare(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as w,
|
|
1
|
+
import{d as w,i as S}from"./chunk-ITVCPC7G.js";import{c as g,h as P}from"./chunk-EZLBMUQD.js";P();S();import{readFileSync as v,existsSync as E}from"fs";import{join as p}from"path";import{homedir as R}from"os";var T=g("ws"),x=p(R(),".adam"),f=p(x,"adam.port"),b=p(w,"adam.key");function d(){let n=process.env.ADAM_API_KEY;if(n)return n;if(E(b))return v(b,"utf-8").trim()||void 0}function m(){if(!E(f))return null;let n=parseInt(v(f,"utf-8").trim(),10);return isNaN(n)?null:n}function C(){let n=m();if(!n)throw new Error("Server not running. Run: adam server start");return`http://localhost:${n}`}var u=class extends Error{constructor(e,s){super(s);this.status=e;this.name="ApiError"}status};async function A(n,t={}){let s=`${C()}${n}`,r=d(),o=await fetch(s,{method:t.method||"GET",headers:{"Content-Type":"application/json",...r?{"x-api-key":r}:{},...t.headers},body:t.body?JSON.stringify(t.body):void 0});if(!o.ok){let a=await o.text().catch(()=>"Unknown error");throw new u(o.status,a)}return o.headers.get("content-type")?.includes("application/json")?o.json():o.text()}function D(){return A("/healthz")}var k=class{ws=null;callbacks=new Map;reconnectAttempts=0;reconnectTimer=null;url;constructor(t="/events"){let e=m();if(!e)throw new Error("Server not running. Run: adam server start");let s=d(),r=new URL(`ws://localhost:${e}${t}`);s&&r.searchParams.set("api_key",s),this.url=r.toString()}connect(){return new Promise((t,e)=>{try{this.ws=new WebSocket(this.url),this.ws.onopen=()=>{this.reconnectAttempts=0,t()},this.ws.onmessage=s=>{try{let r=JSON.parse(s.data),{type:o,data:c,...a}=r,i=this.callbacks.get(o);i&&i.forEach(l=>l(c??a))}catch(r){T.error({error:r},"Failed to parse WebSocket message")}},this.ws.onclose=()=>{this.scheduleReconnect()},this.ws.onerror=s=>{e(s)}}catch(s){e(s)}})}scheduleReconnect(){let t=[1e3,2e3,4e3,8e3,15e3],e=t[Math.min(this.reconnectAttempts,t.length-1)];this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>{this.connect().catch(()=>{})},e)}on(t,e){this.callbacks.has(t)||this.callbacks.set(t,new Set),this.callbacks.get(t).add(e)}off(t,e){this.callbacks.get(t)?.delete(e)}close(){this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.ws?.close()}isConnected(){return this.ws?.readyState===WebSocket.OPEN}},y=class{ws=null;callbacks=new Map;url;constructor(t){let e=m();if(!e)throw new Error("Server not running. Run: adam server start");let s=d(),r=new URL(`ws://localhost:${e}/tasks/${t}/stream`);s&&r.searchParams.set("api_key",s),this.url=r.toString()}connect(){return new Promise((t,e)=>{try{this.ws=new WebSocket(this.url),this.ws.onopen=()=>{t()},this.ws.onmessage=s=>{try{let r=JSON.parse(s.data),{type:o,data:c,...a}=r,i=this.callbacks.get(o);i&&i.forEach(h=>h(c??a));let l=this.callbacks.get("*");l&&l.forEach(h=>h(r))}catch(r){T.error({error:r},"Failed to parse task stream message")}},this.ws.onerror=s=>{e(s)},this.ws.onclose=()=>{}}catch(s){e(s)}})}on(t,e){this.callbacks.has(t)||this.callbacks.set(t,new Set),this.callbacks.get(t).add(e)}off(t,e){this.callbacks.get(t)?.delete(e)}close(){this.ws?.close()}isConnected(){return this.ws?.readyState===WebSocket.OPEN}};export{d as a,A as b,D as c,k as d,y as e};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
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,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o as r,q as s}from"./chunk-LMQPGVM7.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};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g}from"./chunk-
|
|
1
|
+
import{g}from"./chunk-MMVDXKYS.js";import{f as T,i as K}from"./chunk-GQS3ED3B.js";import{r as _,t as E,u as f}from"./chunk-ORFLN4BF.js";import{C as R,D as A,E as c,F as x,G as C,L as z}from"./chunk-WG3C43QS.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-NGJEJG3H.js"),{getRole:e}=await import("./roles-LZCJ7QFS.js"),{mkdir:a,readFile:n,writeFile:o,access:s}=await import("fs/promises"),{join:l}=await import("path"),d=e(t);if(!d)throw new Error(`Role '${t}' not found`);let u=r(d),m=l(u,".claude","skills");await a(m,{recursive:!0});let i=[{name:"aggregate_feature",description:"Aggregate a feature value over a window",inputs:[{name:"feature_name",desc:"Name of the feature to aggregate"},{name:"aggregation",desc:"Aggregation type: sum | avg | count | latest"},{name:"window_days",desc:"Number of days to look back"},{name:"field",desc:"Event payload field to aggregate"}],body:"Query events via sqlite3, compute aggregation, print numeric result."},{name:"check_threshold",description:"Compare a value vs threshold, emit breach if exceeded",inputs:[{name:"feature",desc:"Feature value (number)"},{name:"operator",desc:"Comparison operator: gt | gte | lt | lte | eq"},{name:"threshold",desc:"Threshold value"},{name:"on_breach_type",desc:"Event type to emit on breach"},{name:"on_breach_payload",desc:"JSON payload for breach event"}],body:"Read feature value, compare against threshold using the operator. On breach, emit new event via emit_event Skill."},{name:"query_events",description:"Range-query events table",inputs:[{name:"type_pattern",desc:"Event type pattern (e.g. 'scheduler.tick')"},{name:"window",desc:"Lookback window in hours"},{name:"limit",desc:"Maximum number of events to return"}],body:"sqlite3 parameterized query against the events table, returning matching rows as JSON."},{name:"query_state",description:"Read latest state_snapshot (not yet available)",inputs:[{name:"select",desc:"Dot-notation path to select (e.g. 'goals.active')"}],body:`Returns { state: null, available: false } \u2014 state_snapshot table not yet built (deferred to Phase 2).
|
|
2
2
|
|
|
3
3
|
When the state_snapshot table is available, this Skill will query it for the latest snapshot matching the select path and return the value.`},{name:"query_goals",description:"Read active goals (goal_graph_nodes not built)",inputs:[{name:"types",desc:"Goal type filter (e.g. 'daily|weekly')"},{name:"status",desc:"Goal status filter: active | completed | paused"}],body:`Returns { goals: [], available: false } \u2014 goal_graph_nodes table not yet built (deferred to Phase 2).
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o as s,q as d}from"./chunk-LMQPGVM7.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,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o as s,q as m}from"./chunk-LMQPGVM7.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)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import{k as D}from"./chunk-WDMSZS4W.js";import{c as L,p as K}from"./chunk-WG3C43QS.js";import{a as M,e as E}from"./chunk-3MROEPGR.js";import{o as y,q as W}from"./chunk-LMQPGVM7.js";import{c as b,h as w}from"./chunk-EZLBMUQD.js";W();function N(m){if(m.length===0)return;let s=y(),e=s.prepare(`
|
|
2
|
+
INSERT OR IGNORE INTO llm_costs
|
|
3
|
+
(id, call_id, source, model, role_id, task_id, session_id, message_id,
|
|
4
|
+
input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens,
|
|
5
|
+
cost_usd, priced, estimated, sdk_total_cost_usd, num_turns, created_at)
|
|
6
|
+
VALUES
|
|
7
|
+
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
8
|
+
`);s.transaction(i=>{for(let o of i)e.run(o.id,o.callId,o.source,o.model,o.roleId??null,o.taskId??null,o.sessionId??null,o.messageId??null,o.inputTokens,o.outputTokens,o.cacheReadTokens,o.cacheCreationTokens,o.costUsd,o.priced,o.estimated,o.sdkTotalCostUsd??null,o.numTurns??null,o.createdAt)})(m)}var R=new Set(["model","role","source","date"]),O=new Set(["day","week","month"]),B=new Set(["source","model"]);async function X(m){let{from:s,to:e,groupBy:c,granularity:i,trendStackBy:o}=m;if(!R.has(c))throw new Error(`Invalid groupBy: ${c}. Must be one of ${[...R].join(", ")}`);if(!O.has(i))throw new Error(`Invalid granularity: ${i}. Must be one of ${[...O].join(", ")}`);if(o!==void 0&&!B.has(o))throw new Error(`Invalid trendStackBy: ${o}. Must be one of ${[...B].join(", ")}`);let a=y(),p=`datetime(created_at / 1000 + (${Math.trunc(m.tzOffsetMinutes??0)*60}), 'unixepoch')`,d;c==="model"?d="model":c==="role"?d="COALESCE(role_id, 'system')":c==="source"?d="source":d=`strftime('%Y-%m-%d', ${p})`;let U=a.prepare(`
|
|
9
|
+
SELECT
|
|
10
|
+
${d} AS key,
|
|
11
|
+
SUM(cost_usd) AS costUsd,
|
|
12
|
+
SUM(input_tokens) AS inputTokens,
|
|
13
|
+
SUM(output_tokens) AS outputTokens,
|
|
14
|
+
SUM(cache_read_tokens) AS cacheReadTokens,
|
|
15
|
+
SUM(cache_creation_tokens) AS cacheCreationTokens,
|
|
16
|
+
COUNT(DISTINCT call_id) AS callCount
|
|
17
|
+
FROM llm_costs
|
|
18
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
19
|
+
GROUP BY key
|
|
20
|
+
ORDER BY costUsd DESC
|
|
21
|
+
`).all(s,e).map(n=>({key:n.key,costUsd:n.costUsd??0,inputTokens:n.inputTokens??0,outputTokens:n.outputTokens??0,cacheReadTokens:n.cacheReadTokens??0,cacheCreationTokens:n.cacheCreationTokens??0,callCount:n.callCount??0})),k=a.prepare(`
|
|
22
|
+
SELECT
|
|
23
|
+
SUM(cost_usd) AS totalCostUsd,
|
|
24
|
+
SUM(input_tokens) AS inputTokens,
|
|
25
|
+
SUM(output_tokens) AS outputTokens,
|
|
26
|
+
SUM(cache_read_tokens) AS cacheReadTokens,
|
|
27
|
+
SUM(cache_creation_tokens) AS cacheCreationTokens,
|
|
28
|
+
COUNT(DISTINCT call_id) AS callCount
|
|
29
|
+
FROM llm_costs
|
|
30
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
31
|
+
`).get(s,e),r=a.prepare(`
|
|
32
|
+
SELECT
|
|
33
|
+
COUNT(DISTINCT call_id) AS unpricedCallCount,
|
|
34
|
+
SUM(input_tokens + output_tokens) AS unpricedTokens
|
|
35
|
+
FROM llm_costs
|
|
36
|
+
WHERE created_at >= ? AND created_at <= ? AND priced = 0
|
|
37
|
+
`).get(s,e),f=a.prepare(`
|
|
38
|
+
SELECT model
|
|
39
|
+
FROM llm_costs
|
|
40
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
41
|
+
GROUP BY model
|
|
42
|
+
ORDER BY SUM(cost_usd) DESC
|
|
43
|
+
LIMIT 1
|
|
44
|
+
`).get(s,e),T;i==="day"?T="%Y-%m-%d":i==="week"?T="%Y-W%W":T="%Y-%m";let C=a.prepare(`
|
|
45
|
+
SELECT
|
|
46
|
+
strftime('${T}', ${p}) AS bucket,
|
|
47
|
+
SUM(cost_usd) AS costUsd,
|
|
48
|
+
COUNT(DISTINCT call_id) AS callCount
|
|
49
|
+
FROM llm_costs
|
|
50
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
51
|
+
GROUP BY bucket
|
|
52
|
+
ORDER BY bucket ASC
|
|
53
|
+
`).all(s,e),g,l;if(o!==void 0){let n=o==="source"?"source":"model",F=a.prepare(`
|
|
54
|
+
SELECT
|
|
55
|
+
strftime('${T}', ${p}) AS bucket,
|
|
56
|
+
${n} AS stackKey,
|
|
57
|
+
SUM(cost_usd) AS costUsd
|
|
58
|
+
FROM llm_costs
|
|
59
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
60
|
+
GROUP BY bucket, stackKey
|
|
61
|
+
ORDER BY bucket ASC
|
|
62
|
+
`).all(s,e),h=new Set,I=new Map;for(let S of F){let A=S.stackKey??"unknown";h.add(A);let _=I.get(S.bucket);_||(_={bucket:S.bucket},I.set(S.bucket,_)),_[A]=(_[A]??0)+(S.costUsd??0)}l=[...h],g=[...I.values()]}return{totalCostUsd:k?.totalCostUsd??0,callCount:k?.callCount??0,topModel:f?.model,tokens:{input:k?.inputTokens??0,output:k?.outputTokens??0,cacheRead:k?.cacheReadTokens??0,cacheCreation:k?.cacheCreationTokens??0},unpricedCallCount:r?.unpricedCallCount??0,unpricedTokens:r?.unpricedTokens??0,groups:U,trend:C.map(n=>({bucket:n.bucket,costUsd:n.costUsd??0,callCount:n.callCount??0})),...g?{trendStacked:g,trendStackKeys:l}:{}}}async function q(m){let{groupBy:s,groupKey:e,from:c,to:i}=m;if(!R.has(s))throw new Error(`Invalid groupBy: ${s}. Must be one of ${[...R].join(", ")}`);let o=y(),a,u;s==="model"?(a="model = ?",u=e):s==="role"?(a=e==="system"?"role_id IS NULL":"role_id = ?",u=e):s==="source"?(a="source = ?",u=e):(a=`strftime('%Y-%m-%d', datetime(created_at / 1000 + (${Math.trunc(m.tzOffsetMinutes??0)*60}), 'unixepoch')) = ?`,u=e);let p=s==="role"&&e==="system";return o.prepare(`
|
|
63
|
+
SELECT
|
|
64
|
+
call_id AS callId,
|
|
65
|
+
source,
|
|
66
|
+
model,
|
|
67
|
+
SUM(cost_usd) AS costUsd,
|
|
68
|
+
SUM(input_tokens) AS inputTokens,
|
|
69
|
+
SUM(output_tokens) AS outputTokens,
|
|
70
|
+
MIN(priced) AS priced,
|
|
71
|
+
MIN(created_at) AS createdAt,
|
|
72
|
+
MAX(task_id) AS taskId,
|
|
73
|
+
MAX(session_id) AS sessionId,
|
|
74
|
+
MAX(message_id) AS messageId
|
|
75
|
+
FROM llm_costs
|
|
76
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
77
|
+
AND ${a}
|
|
78
|
+
GROUP BY call_id
|
|
79
|
+
ORDER BY createdAt DESC
|
|
80
|
+
`).all(p?[c,i]:[c,i,u]).map(t=>({callId:t.callId,source:t.source,model:t.model,costUsd:t.costUsd??0,inputTokens:t.inputTokens??0,outputTokens:t.outputTokens??0,priced:t.priced??0,createdAt:t.createdAt,...t.taskId?{taskId:t.taskId}:{},...t.sessionId?{sessionId:t.sessionId}:{},...t.messageId?{messageId:t.messageId}:{}}))}import{randomUUID as j}from"crypto";K();w();var x=b("store");async function $(m){let{source:s,recompute:e,callId:c,roleId:i,taskId:o,sessionId:a,messageId:u,numTurns:p,mirror:d=!0}=m,t=c??j(),U=Date.now();if(d)try{if(s==="task"&&o){let r=e.perModel.reduce((l,n)=>l+n.inputTokens,0),f=e.perModel.reduce((l,n)=>l+n.outputTokens,0),T=e.perModel.reduce((l,n)=>l+n.cacheReadTokens,0),C=e.perModel.reduce((l,n)=>l+n.cacheCreationTokens,0),g={input:r,output:f,cacheRead:T,cacheCreation:C};L(o,{costUsd:e.costUsd,tokenUsage:g,...p!==void 0?{numTurns:p}:{},costBreakdown:e})}else if(s==="chat"&&u){let r=e.perModel.reduce((g,l)=>g+l.inputTokens,0),f=e.perModel.reduce((g,l)=>g+l.outputTokens,0),T=JSON.stringify({input:r,output:f}),C=e.perModel[0]?.model??"unknown";D(u,{costUsd:e.costUsd,tokenUsage:T,model:C})}}catch(r){x.warn({err:r,source:s,taskId:o,messageId:u},"recordLlmCost mirror write failed")}if(e.perModel.length===0)return{callId:t,rowsInserted:0};let k=e.perModel.map((r,f)=>({id:`${t}-${f}`,callId:t,source:s,model:r.model,roleId:i,taskId:o,sessionId:a,messageId:u,inputTokens:r.inputTokens,outputTokens:r.outputTokens,cacheReadTokens:r.cacheReadTokens,cacheCreationTokens:r.cacheCreationTokens,costUsd:r.costUsd,priced:r.priced?1:0,estimated:r.estimated?1:0,sdkTotalCostUsd:e.sdkTotalCostUsd,numTurns:p,createdAt:U}));try{N(k)}catch(r){return x.warn({err:r,callId:t,source:s},"recordLlmCost insertLlmCostRows failed"),{callId:t,rowsInserted:0}}return{callId:t,rowsInserted:k.length}}w();import{query as z}from"@anthropic-ai/claude-agent-sdk";import*as P from"fs/promises";import*as Y from"path";import*as G from"os";var H=b("manager"),v=Y.join(G.homedir(),".adam","llm-eval");async function de(m,s){await P.mkdir(v,{recursive:!0});let e=typeof s=="string"?{systemPrompt:s}:s??{},c={cwd:v,maxTurns:e.maxTurns??3,maxBudgetUsd:e.maxBudgetUsd??.05,persistSession:!1};e.systemPrompt&&(c.systemPrompt=e.systemPrompt),e.model&&(c.model=e.model);let i=z({prompt:m,options:c}),o="",a,u,p;for await(let d of i){let t=d;t.type==="result"&&typeof t.result=="string"&&(o=t.result,typeof t.total_cost_usd=="number"&&(a=t.total_cost_usd),t.modelUsage&&typeof t.modelUsage=="object"&&(u=t.modelUsage),typeof t.num_turns=="number"&&(p=t.num_turns))}if(u)try{let d=E().pricing?.models??{},t=M(u,d,a);$({source:"eval",recompute:t,numTurns:p,mirror:!1})}catch(d){H.warn({err:d},"llm-eval: cost capture failed (non-fatal)")}return o}export{X as a,q as b,$ as c,de as d};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{D as M,L as D}from"./chunk-
|
|
1
|
+
import{D as M,L as D}from"./chunk-WG3C43QS.js";import{o as u,q as O}from"./chunk-LMQPGVM7.js";O();D();function E(e){return{id:e.id,roleId:e.role_id,type:e.type,content:e.content,embedding:e.embedding?new Float32Array(e.embedding.buffer,e.embedding.byteOffset,e.embedding.byteLength/4):void 0,keywords:e.keywords?JSON.parse(e.keywords):[],importance:e.importance,sourceType:e.source_type,sourceTaskId:e.source_task_id??void 0,evidence:e.evidence?JSON.parse(e.evidence):void 0,createdAt:e.created_at,lastAccessed:e.last_accessed,retrievedCount:e.retrieved_count,tier:e.tier,supersededBy:e.superseded_by??void 0}}function _(e){return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}function I(e){u().prepare(`
|
|
2
2
|
INSERT INTO memories (id, role_id, type, content, embedding, keywords,
|
|
3
3
|
importance, source_type, source_task_id, evidence,
|
|
4
4
|
created_at, last_accessed, retrieved_count, tier, superseded_by)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h as m,i as d}from"./chunk-L4APYD5A.js";import{c as s,h as u}from"./chunk-EZLBMUQD.js";import{c,e as f}from"./chunk-5M6IGE5G.js";f();u();var r=s("adam");function w(e){let n=e.traceIdOverride??c();if(!n){r.debug({toolName:e.toolName,entityType:e.entityType,verb:e.verb},"Mutation receipt skipped: no active trace context");return}let i={traceId:n,toolName:e.toolName,taskId:e.taskId,roleId:e.roleId};try{d({traceId:n,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:i,outcome:"success"})}catch(o){o instanceof m?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"}),C=t.discriminatedUnion("kind",[p,g,k,y,b,x,I]),M=t.array(C);function l(e){return e.kind==="lengthTarget"||e.kind==="format"||e.kind==="requireHeading"||e.kind==="mime"}function a(e){return e.outputContract?.contractRules??[]}function S(e){return a(e).some(n=>!l(n)||n.kind==="mime"&&n.declared.toLowerCase()!=="application/json")}function B(e,n){return typeof n!="string"?!1:a(e).some(i=>i.kind==="format"&&(i.value==="markdown"||i.value==="text"))}var R="ExecutionManager: SDK loop force-closed after activity timeout";function h(e){return e===R}function q(e){if(e.kind==="json"){let n=e.value;return typeof n=="object"&&n!==null&&n.status==="no_content"?!0:!(typeof n=="string"&&(n.trim().length===0||h(n)))}return e.sizeBytes>0}function P(e){return S(e)?!1:!a(e).some(n=>n.kind==="format"&&n.value==="json"||n.kind==="mime"&&n.declared.toLowerCase()==="application/json")}export{w as a,C as b,M as c,l as d,a as e,S as f,B as g,R as h,h as i,q as j,P as k};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{F as R,L as E}from"./chunk-
|
|
1
|
+
import{F as R,L as E}from"./chunk-WG3C43QS.js";import{d as h,i as A}from"./chunk-ITVCPC7G.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,4 +1,4 @@
|
|
|
1
|
-
import{a as A,b as E}from"./chunk-
|
|
1
|
+
import{a as A,b as E}from"./chunk-PO66F7UQ.js";import{c as p,d as j,i as v}from"./chunk-4ZG4UMAK.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-FN64ZULV.js";import{K as g,L as w}from"./chunk-WG3C43QS.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
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import{b as K,c as A,d as L}from"./chunk-DRS5NOAA.js";import{a as te,e as re,g as ne}from"./chunk-VZL2DGC4.js";import{a as N,d as be}from"./chunk-4G4CKAXY.js";import{b as X,h as Q,i as Z}from"./chunk-L4APYD5A.js";import{s as G}from"./chunk-ORFLN4BF.js";import{a as w}from"./chunk-L7JP7DUO.js";import{c as R,h as ee}from"./chunk-EBZCHLYS.js";import{d as Y,r as ve}from"./chunk-6GYNUTPP.js";import{o as D,q as _e}from"./chunk-LMQPGVM7.js";import{c as q,h as Ie}from"./chunk-EZLBMUQD.js";import{c as O,e as J}from"./chunk-5M6IGE5G.js";import{existsSync as Ue}from"fs";import{createHash as Ve}from"crypto";import{isAbsolute as Pe}from"path";be();_e();J();import{v4 as Te}from"uuid";function oe(e){return{id:e.id,eventKey:e.event_key,sourceType:e.source_type,sourceId:e.source_id,taskId:e.task_id??void 0,templateId:e.template_id??void 0,templateName:e.template_name??void 0,messageType:e.message_type,viewerKey:e.viewer_key,title:e.title??void 0,contentPreview:e.content_preview,attachments:C(e.attachments_json),targets:C(e.targets_json),firstDeliveredAt:e.first_delivered_at,lastDeliveredAt:e.last_delivered_at,createdAt:e.created_at,traceId:e.trace_id??void 0}}function C(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function de(e){if(!e.viewerKey||e.viewerKey.trim().length===0)throw new Error("recordUserVisibleDeliveryEvent requires viewerKey");if(!e.eventKey||e.eventKey.trim().length===0)throw new Error("recordUserVisibleDeliveryEvent requires eventKey");if(!e.sourceId||e.sourceId.trim().length===0)throw new Error("recordUserVisibleDeliveryEvent requires sourceId");let t=D(),r=Date.now(),n=e.deliveredAt??r,a=t.prepare("SELECT * FROM user_visible_events WHERE event_key = ?").get(e.eventKey);if(!a){let d=Te();return t.prepare(`
|
|
2
|
+
INSERT INTO user_visible_events (
|
|
3
|
+
id, event_key, source_type, source_id, task_id, template_id, template_name,
|
|
4
|
+
message_type, viewer_key, title, content_preview, attachments_json,
|
|
5
|
+
targets_json, first_delivered_at, last_delivered_at, created_at, trace_id
|
|
6
|
+
)
|
|
7
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
8
|
+
`).run(d,e.eventKey,e.sourceType,e.sourceId,e.taskId??null,e.templateId??null,e.templateName??null,e.messageType,e.viewerKey,e.title??null,e.contentPreview,JSON.stringify(e.attachments??[]),JSON.stringify(e.targets??[]),n,n,r,e.traceId??O()??null),ie(e.eventKey)}let i=we(C(a.targets_json),e.targets??[]),o=Ae(C(a.attachments_json),e.attachments??[]);return t.prepare(`
|
|
9
|
+
UPDATE user_visible_events
|
|
10
|
+
SET task_id = COALESCE(task_id, ?),
|
|
11
|
+
template_id = COALESCE(template_id, ?),
|
|
12
|
+
template_name = COALESCE(template_name, ?),
|
|
13
|
+
title = COALESCE(title, ?),
|
|
14
|
+
content_preview = CASE WHEN content_preview = '' THEN ? ELSE content_preview END,
|
|
15
|
+
attachments_json = ?,
|
|
16
|
+
targets_json = ?,
|
|
17
|
+
last_delivered_at = MAX(last_delivered_at, ?),
|
|
18
|
+
trace_id = COALESCE(trace_id, ?)
|
|
19
|
+
WHERE event_key = ?
|
|
20
|
+
`).run(e.taskId??null,e.templateId??null,e.templateName??null,e.title??null,e.contentPreview,JSON.stringify(o),JSON.stringify(i),n,e.traceId??O()??null,e.eventKey),ie(e.eventKey)}function ie(e){let t=D().prepare("SELECT * FROM user_visible_events WHERE event_key = ?").get(e);return t?oe(t):void 0}function Je(e){let t=D(),r=e.excludeSourceIds??[],n=[e.viewerKey,e.since,e.until],a=`
|
|
21
|
+
SELECT * FROM user_visible_events
|
|
22
|
+
WHERE viewer_key = ?
|
|
23
|
+
AND last_delivered_at >= ?
|
|
24
|
+
AND last_delivered_at <= ?
|
|
25
|
+
`;return r.length>0&&(a+=` AND source_id NOT IN (${r.map(()=>"?").join(",")})`,n.push(...r)),a+=" ORDER BY last_delivered_at ASC",e.limit!==void 0&&(a+=" LIMIT ?",n.push(e.limit)),t.prepare(a).all(...n).map(oe)}function we(e,t){let r=[...e];for(let n of t){let a=se(n);r.some(i=>se(i)===a)||r.push(n)}return r}function se(e){return[e.type,e.channelId??"",e.webhookUrl??"",e.chatId??"",e.sessionId??""].join("|")}function Ae(e,t){let r=[...e];for(let n of t){let a=ae(n),i=r.findIndex(o=>ae(o)===a);i>=0?r[i]={...r[i],...n}:r.push(n)}return r}function ae(e){return e.artifactId?`artifact:${e.artifactId}`:["file",e.filename??"",e.sizeBytes??"",e.mimeType??""].join("|")}Ie();import{v4 as B}from"uuid";J();ve();import{basename as U,extname as ce}from"path";import{readFileSync as ke}from"fs";function le(e){return Y(e).filter(t=>t.kind==="file"&&!!t.blobPath)}function tt(e){return e.replace(/[\\/:*?"<>|]/g,"").replace(/\s+/g,"").replace(/^\.+/,"").trim()}function rt(e){if(e.kind!=="file"||!e.blobPath)return;let t;try{t=ke(e.blobPath,"utf-8")}catch{return}let n=t.match(/^#\s+(.+?)\s*$/m)?.[1]?.trim();return n&&n.length>0?n:void 0}function Ee(e){let t=e.mime??"";return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function Oe(e){let t=U(e.key??"").replace(/[\\/]/g,"-");if(e.originalFilename){let r=U(e.originalFilename).replace(/[\\/]/g,"-");if(ce(r))return r}if(ce(t))return t;if(e.mime){let r=ne(e.mime);if(r&&r!==".bin"&&t)return`${t}${r}`}return e.originalFilename?U(e.originalFilename).replace(/[\\/]/g,"-"):t||(e.blobPath?U(e.blobPath):e.id)}function ue(e){return e.map(t=>xe(t))}function xe(e,t){return{path:e.blobPath,mediaType:t?.mediaType??Ee(e),filename:t?.filename??Oe(e),contentType:e.mime,mimeType:e.mime,artifactId:e.id,locator:e.locator,sizeBytes:e.sizeBytes,purpose:e.purpose,contentHash:e.contentHash}}function $(e){if(e.priority!==void 0&&e.priority!==null)return e.priority;let t=e.mime??"";return t.startsWith("audio/")||t.startsWith("video/")?10:t==="text/markdown"||t==="text/plain"?50:t.startsWith("image/")?100:200}var x=1.33;function me(e,t){if(e.length===0)return{included:[],dropped:[]};let r=[...e].sort((d,s)=>{let g=$(d),y=$(s);return g!==y?g-y:s.sizeBytes-d.sizeBytes}),n=r[0];if(n.sizeBytes*x>t){if(r.length===1)return{firstItemOverflow:n};let d=r.slice(1),s=[],g=[],y=0;for(let _ of d){let l=_.sizeBytes*x;y+l<=t?(s.push(_),y+=l):g.push(_)}return s.length===0?{firstItemOverflow:n}:{included:s,dropped:[n,...g],firstOverflowWarning:!0}}let a=[],i=[],o=0;for(let d of r){let s=d.sizeBytes*x;o+s<=t?(a.push(d),o+=s):i.push(d)}return{included:a,dropped:i}}function pe(e,t,r,n){if(t.length===0)return e;let a=(r/(1024*1024)).toFixed(1),i=t.map(d=>`- ${d.filename} (${Se(d.sizeBytes)})`),o=e.endsWith(`---
|
|
26
|
+
`)||e.endsWith("---")?"":`
|
|
27
|
+
|
|
28
|
+
---`;return`${e}${o}
|
|
29
|
+
\u26A0\uFE0F \u56E0 ${n} \u90AE\u7BB1 ${a}MB \u4E0A\u9650\uFF0C\u4EE5\u4E0B\u4EA7\u7269\u672A\u9644\uFF1A
|
|
30
|
+
${i.join(`
|
|
31
|
+
`)}
|
|
32
|
+
`}function Se(e){return e<1024?`${e} bytes`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`}var F=class extends Error{constructor(r,n,a,i,o){super(`OutboundFirstAttachmentExceedsCap: artifactKey=${r} sizeBytes=${n} effectiveSizeBytes=${a} capBytes=${i} recipientDomain=${o}`);this.artifactKey=r;this.sizeBytes=n;this.effectiveSizeBytes=a;this.capBytes=i;this.recipientDomain=o;this.name="OutboundFirstAttachmentExceedsCap"}artifactKey;sizeBytes;effectiveSizeBytes;capBytes;recipientDomain};function De(e){if(!e)return"";let t=e.lastIndexOf("@");return t<0||t===e.length-1?"":e.slice(t+1).toLowerCase().trim()}function Re(e,t){return t.find(r=>r.id===e)?.key??e}function Ce(e,t){return t.find(r=>r.artifactId===e)?.filename??e}function fe(e,t,r,n,a){let i=De(t),o=ee(e,i),d=r.map(l=>({id:l.id,sizeBytes:l.sizeBytes??0,priority:l.priority??void 0,mime:l.mime??void 0})),s=me(d,o);if("firstItemOverflow"in s){let l=s.firstItemOverflow,h=Re(l.id,r);return{ok:!1,error:new F(h,l.sizeBytes,Math.floor(l.sizeBytes*x),o,i).message}}let g=new Set(s.included.map(l=>l.id)),y=n.filter(l=>l.artifactId&&g.has(l.artifactId)),_=a;if(s.dropped.length>0){let l=s.dropped.map(h=>({filename:Ce(h.id,n),sizeBytes:h.sizeBytes}));_=pe(a,l,o,i)}return{ok:!0,result:{perTargetAttachments:y,perTargetContent:_}}}var E=q("adam"),z=class{_dedupCache=new Map;_rateLimitWindows=new Map;_recentlySentIds=new Set;_laneTails=new Map;async _acquireLane(t,r){let n=`${t}:${r}`,a=this._laneTails.get(n)??Promise.resolve(),i,o=new Promise(d=>{i=d});return this._laneTails.set(n,o),o.then(()=>{this._laneTails.get(n)===o&&this._laneTails.delete(n)}),await a,i}isRecentlySent(t){return this._recentlySentIds.has(t)}async send(t){let{taskId:r,channelId:n,chatId:a,content:i,messageType:o,platform:d,webhookUrl:s,replyMarkup:g,replyToMessageId:y,quoteExcerpt:_,quoteTitle:l,mediaUrl:h,mediaType:k,attachments:S,dedupDiscriminator:W}=t,I=ge(o),ye=I!=="reply"&&!!r,u;if(ye){u=`${r}:${n??"none"}:${a??"none"}:${I}${W?`:${W}`:""}`;let f=this._dedupCache.get(u);if(f&&Date.now()-f.timestamp<300*1e3)return E.debug({dedupKey:u},"Dedup hit, returning cached log entry"),{success:!0,logEntryId:f.logEntryId}}if(n){let f=Date.now(),v=6e4,p=this._rateLimitWindows.get(n);p||(p=[],this._rateLimitWindows.set(n,p));let P=f-v;for(;p.length>0&&p[0]<P;)p.shift();if(p.length>=60){let M=B();E.warn({channelId:n,count:p.length},"Rate limited, not sending");let b={type:"channel",channelId:n,chatId:a??""};return this._writeOutboundReceipt(t,b,i,"failure"),{success:!1,logEntryId:M,error:"rate_limited"}}p.push(f)}let he=d??(n?R(n)?.platform:void 0)??"unknown",H=s?i:te(i,he,r),c=B(),m={id:c,ruleId:void 0,taskId:r??void 0,status:"pending",target:n&&a?{type:"channel",channelId:n,chatId:a}:s?{type:"webhook",webhookUrl:s}:{type:"channel",channelId:n??"",chatId:a??""},content:H,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:I};K(m),u&&this._dedupCache.set(u,{logEntryId:c,timestamp:Date.now()});try{let f=je(h);if(f)return A(c,"failed",f),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:f,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:f};if(s){let v=await fetch(s,{method:"POST",body:JSON.stringify({result:i,taskId:r,timestamp:new Date().toISOString()}),signal:AbortSignal.timeout(1e4)});if(v.ok)return L(c),this._recordDeliveryLedgerAfterSuccess(t,m.target,I,i),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"delivered",messageType:I}),{success:!0,logEntryId:c};{let p=`Webhook returned ${v.status}`;return A(c,"failed",p),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:p,messageType:I}),{success:!1,logEntryId:c,error:p}}}else if(n&&a){let{getChannelManager:v}=await Be(),p=v();if(!p){let T="ChannelManager not available";return A(c,"failed",T),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:T,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:T}}let P={content:H,messageType:I,...g?{replyMarkup:g}:{},...y?{replyToMessageId:y}:{},..._?{quoteExcerpt:_}:{},...l?{quoteTitle:l}:{},...h?{mediaUrl:h}:{},...k?{mediaType:k}:{},...S?{attachments:S}:{}},M=await this._acquireLane(n,a),b;try{b=await p.sendMessage(n,a,P)}finally{M()}if(b===null){let T="Channel adapter send failed (returned null)";return A(c,"failed",T),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:T,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:T}}if(b&&(this._recentlySentIds.add(b),setTimeout(()=>this._recentlySentIds.delete(b),300*1e3)),b?.startsWith("queued-")){let T="queued_not_delivered";return u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"pending",error:T,messageType:I}),{success:!1,messageId:b,logEntryId:c,error:T}}return L(c),this._recordDeliveryLedgerAfterSuccess(t,m.target,I,i),this._writeOutboundReceipt(t,m.target,i,"success"),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"delivered",messageType:I}),{success:!0,messageId:b??void 0,logEntryId:c}}else{let v="No channelId/chatId or webhookUrl provided";return A(c,"failed",v),u&&this._dedupCache.delete(u),{success:!1,logEntryId:c,error:v}}}catch(f){let v=f instanceof Error?f.message:String(f);return A(c,"failed",v),u&&this._dedupCache.delete(u),w.emit({type:"delivery_status_change",logEntryId:c,taskId:r,target:m.target,status:"failed",error:v,messageType:I}),this._writeOutboundReceipt(t,m.target,i,"failure"),{success:!1,logEntryId:c,error:v}}}_writeOutboundReceipt(t,r,n,a){if(r.type!=="channel"||!r.channelId)return;let i=O();if(!i){E.debug({taskId:t.taskId,channelId:r.channelId,outcome:a},"Outbound receipt skipped: no active trace context");return}let o=(t.attachments??[]).map(s=>s.artifactId).filter(s=>typeof s=="string"&&s.length>0),d=t.actorToolName??"OutboundGateway.send";try{Z({traceId:i,taskId:t.taskId,sessionId:t.sessionId,effectCategory:"outbound_message",verb:"send",entityType:"channel_message",target:{channelId:r.channelId,chatId:r.chatId,platform:t.platform},payload:{textChars:n.length,attachmentCount:t.attachments?.length??0,attachmentRefs:o.length>0?o:void 0},actor:{traceId:i,toolName:d,taskId:t.taskId},outcome:a})}catch(s){s instanceof Q?E.warn({errors:s.errors,taskId:t.taskId,channelId:r.channelId},"Outbound receipt validation failed"):E.warn({error:s instanceof Error?s.message:String(s),taskId:t.taskId},"Outbound receipt write failed")}}async redeliverExecutionTo(t){let r=t.includeArtifacts??!0,n=t.messageType??"result_delivery",a=t.dedupDiscriminator??`redelivery:${Date.now()}`,i=r?t.fileArtifacts??le(t.executionId):[],o=t.attachments??(i.length>0?ue(i):void 0),d=[];for(let s of t.targets){let g=R(s.channelId);if(!g){d.push({target:{channelId:s.channelId,chatId:s.chatId},deliveryLogId:"",status:"failed",attachmentCount:0,error:`Channel not found: ${s.channelId}`});continue}let y=o,_=t.content;if(g.platform==="email"&&o&&o.length>0){let h=fe(s.channelId,s.chatId,i,o,t.content);if(!h.ok){let k=B(),S={type:"channel",channelId:s.channelId,chatId:s.chatId??""};K({id:k,ruleId:void 0,taskId:t.executionId,status:"pending",target:S,content:t.content,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:ge(n)}),A(k,"failed",h.error),d.push({target:{channelId:s.channelId,chatId:s.chatId},deliveryLogId:k,status:"failed",attachmentCount:0,error:h.error});continue}y=h.result.perTargetAttachments,_=h.result.perTargetContent}let l=await this.send({taskId:t.executionId,sessionId:t.sessionId,channelId:s.channelId,chatId:s.chatId,content:_,messageType:n,platform:g.platform,attachments:y,dedupDiscriminator:a,actorToolName:t.actorToolName});d.push({target:{channelId:s.channelId,chatId:s.chatId},deliveryLogId:l.logEntryId,status:l.success?"delivered":"failed",attachmentCount:y?.length??0,...l.error?{error:l.error}:{}})}return{deliveries:d}}_recordDeliveryLedgerAfterSuccess(t,r,n,a){if(Me(n,t.taskId))try{let i=Ke(t,r);if(!i){N({source:"delivery_ledger",severity:"warning",sourceId:t.taskId,message:`Skipped user-visible delivery ledger write for ${n}: viewer identity unresolved`});return}let o=Le(t.taskId),d=Fe(a);de({eventKey:`${i}|${o.sourceId}|${n}|${d}`,sourceType:o.sourceType,sourceId:o.sourceId,taskId:t.taskId,templateId:o.templateId,templateName:o.templateName,messageType:n,viewerKey:i,title:o.templateName,contentPreview:a,attachments:(t.attachments??[]).map(Ne),targets:[$e(r)]})}catch(i){let o=i instanceof Error?i.message:String(i);E.warn({error:o,taskId:t.taskId,messageType:n},"User-visible delivery ledger write failed");try{N({source:"delivery_ledger",severity:"error",sourceId:t.taskId,message:o})}catch{}}}};function Me(e,t){return t?!["reply","assistant_text","user_message","approval","approval_prompt"].includes(e):!1}function Ke(e,t){if(e.viewerKey)return e.viewerKey;if(t.type==="channel"&&t.channelId)return re({type:"channel",channelId:t.channelId,chatId:t.chatId})}function Le(e){let t=X(e);if(!t)return{sourceType:"task",sourceId:e};let r=G(t.templateId);return{sourceType:"template_execution",sourceId:t.id,templateId:t.templateId,templateName:r?.name}}function Ne(e){return{artifactId:e.artifactId,locator:e.locator,filename:e.filename,mimeType:e.mimeType??e.contentType,sizeBytes:e.sizeBytes,purpose:e.purpose,contentHash:e.contentHash}}function $e(e){if(e.type==="webhook")return{type:"webhook",webhookUrl:e.webhookUrl};let t=e.channelId?R(e.channelId):void 0;return{type:"channel",channelId:e.channelId,chatId:e.chatId,label:t?.name}}function Fe(e){return Ve("sha256").update(e).digest("hex")}var V=null;function Be(){return V||(V=import("./channels-IDBWHLLE.js")),V}function Dt(){V=null}function je(e){if(!e)return;if(e.includes("://")&&!e.startsWith("file://"))return"mediaUrl must be a local file path";let t=e.startsWith("file://")?new URL(e).pathname:e;if(!Pe(t))return"mediaUrl must be absolute";if(!Ue(t))return"mediaUrl file does not exist"}function ge(e){return e==="report"?"status_report":e==="deliver"?"result_delivery":e}var j=null;function ze(){return j||(j=new z),j}function Rt(e){return ze().isRecentlySent(e)}export{Je as a,le as b,tt as c,rt as d,Ee as e,Oe as f,xe as g,z as h,Dt as i,ze as j,Rt as k};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as s}from"./chunk-5PELJRUQ.js";import{join as o}from"path";import{homedir as r}from"os";var T,e,c,t,E,p,a,S,D,x,L,A=s(()=>{"use strict";T=["Read","Write","Edit","Bash","Grep","Glob","WebSearch","WebFetch","LSP","NotebookEdit","Agent"],e=["~/.ssh","~/.aws","~/.gnupg","/etc/shadow"],c=e,t=o(r(),".adam"),E=o(t,"adam.db"),p=o(t,"adam.config.yaml"),a=o(t,".env"),S=o(t,"CLAUDE.md"),D=o(t,"logs"),x=10*1024,L="\u81EA\u68C0 \xB7 \u5BA1\u8BA1\u8FB9\u8F66"});export{T as a,e as b,c,t as d,E as e,p as f,a as g,L as h,A as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as e,d as t,i as a}from"./chunk-ITVCPC7G.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 as u,
|
|
1
|
+
import{g as u,i as g}from"./chunk-ITVCPC7G.js";g();import{readFileSync as p,writeFileSync as h,existsSync as m}from"fs";var f={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_EMAIL_ADDRESS:"emailGateway.address",ADAM_EMAIL_IMAP_HOST:"emailGateway.imap.host",ADAM_EMAIL_IMAP_PORT:"emailGateway.imap.port",ADAM_EMAIL_IMAP_SECURE:"emailGateway.imap.secure",ADAM_EMAIL_IMAP_USER:"emailGateway.imap.auth.user",ADAM_EMAIL_IMAP_PASS:"emailGateway.imap.auth.pass",ADAM_EMAIL_IMAP_MAILBOX:"emailGateway.imap.mailbox",ADAM_EMAIL_SMTP_HOST:"emailGateway.smtp.host",ADAM_EMAIL_SMTP_PORT:"emailGateway.smtp.port",ADAM_EMAIL_SMTP_SECURE:"emailGateway.smtp.secure",ADAM_EMAIL_SMTP_USER:"emailGateway.smtp.auth.user",ADAM_EMAIL_SMTP_PASS:"emailGateway.smtp.auth.pass",ADAM_EMAIL_SMTP_FROM:"emailGateway.smtp.from",ADAM_EMAIL_SUBJECT_PREFIX:"emailGateway.subjectPrefix"},y=Object.fromEntries(Object.entries(f).map(([r,e])=>[e,r]));function P(r){return r in f}function v(r,e){if(r==="server.port"||r.endsWith(".port")){let n=parseInt(e,10);return Number.isNaN(n)?e:n}return r.endsWith(".secure")||r.endsWith(".enabled")?e==="true"||e==="1":e}function E(r){let e={};for(let n of r.split(`
|
|
2
2
|
`)){let o=n.trim();if(!o||o.startsWith("#"))continue;let i=o.startsWith("export ")?o.slice(7).trim():o,a=i.indexOf("=");if(a===-1)continue;let s=i.slice(0,a).trim(),t=i.slice(a+1).trim();(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1)),!(t.includes("$")&&(t=t.replace(/\$\{(\w+)\}|\$(\w+)/g,(c,_,l)=>{let A=_??l;return e[A]??process.env[A]??""}),!t))&&(e[s]=t)}return e}function R(){if(!m(u))return null;let r=E(p(u,"utf-8")),e={};for(let[n,o]of Object.entries(r))n in f&&(e[n]=o);return e}function O(){return m(u)?E(p(u,"utf-8")):null}function b(r){let e=O();if(!e)return[];let n=[];for(let[i,a]of Object.entries(f)){let s=r[a],t=e[i];if(t===void 0)continue;let c=s?String(s):"";c!==t&&n.push({configPath:a,envKey:i,dbValue:c,envValue:t})}let o=r["defaults.env"]??{};for(let[i,a]of Object.entries(e)){if(i in f)continue;let s=o[i]??"";s!==a&&n.push({configPath:`defaults.env.${i}`,envKey:i,dbValue:s,envValue:a})}for(let[i,a]of Object.entries(o))i in e||n.push({configPath:`defaults.env.${i}`,envKey:i,dbValue:a,envValue:""});return n}function T(r){if(!m(u))return 0;let n=p(u,"utf-8").split(`
|
|
3
3
|
`),o=0,i=new Set,a=r["defaults.env"]??{};for(let s=0;s<n.length;s++){let t=n[s].trim();if(!t||t.startsWith("#"))continue;let c=t.startsWith("export ")?t.slice(7).trim():t,_=c.indexOf("=");if(_===-1)continue;let l=c.slice(0,_).trim(),A=t.startsWith("export ")?"export ":"",M=f[l];if(M){let d=r[M];d!=null&&String(d).length>0&&(n[s]=`${A}${l}=${String(d)}`,i.add(l),o++);continue}l in a&&(n[s]=`${A}${l}=${a[l]}`,i.add(l),o++)}for(let[s,t]of Object.entries(f)){if(i.has(s))continue;let c=r[t];c&&String(c).length>0&&(n.push(`${s}=${String(c)}`),o++)}for(let[s,t]of Object.entries(a))i.has(s)||t&&t.length>0&&(n.push(`${s}=${t}`),o++);return o>0&&h(u,n.join(`
|
|
4
4
|
`)),o}export{f as a,P as b,v as c,R as d,O as e,b as f,T as g};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{d as D}from"./chunk-
|
|
1
|
+
import{d as D}from"./chunk-76MMY2XC.js";import{a as b}from"./chunk-4N5G7ND2.js";import{f as v}from"./chunk-WDMSZS4W.js";import{j as O}from"./chunk-IAGTZGGV.js";import{a as S,b as P,c,d as I,e as w,f as C,g as M}from"./chunk-DRS5NOAA.js";import{b as y}from"./chunk-YEGUFMLJ.js";import{b as R}from"./chunk-L4APYD5A.js";import{s as k}from"./chunk-ORFLN4BF.js";import{a as f}from"./chunk-L7JP7DUO.js";import{b as h,p as B}from"./chunk-WG3C43QS.js";import{c as x}from"./chunk-EBZCHLYS.js";import{o as d,q as j}from"./chunk-LMQPGVM7.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-
|
|
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-S3NV7OPO.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(`
|