adam-agent-server 1.14.0 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App-6TRGTNZ7.js +13 -0
- package/dist/approval-handler-ZWZZ3FKR.js +1 -0
- package/dist/audit-diagnostics-MASYIEGZ.js +1 -0
- package/dist/audit-manager-3YOVBIFV.js +1 -0
- package/dist/bree-engine-Y6WEQCC4.js +1 -0
- package/dist/channels-2DFKJ33W.js +1 -0
- package/dist/{channels-PXLE7JHU.js → channels-2IL6USWL.js} +1 -1
- package/dist/chat-tool-calls-KARPW7PE.js +1 -0
- package/dist/chunk-245WE5AF.js +1 -0
- package/dist/chunk-27C637GL.js +9 -0
- package/dist/{chunk-IUASV43X.js → chunk-2N4EOZZ4.js} +4 -4
- package/dist/chunk-2Q6XLYCC.js +25 -0
- package/dist/chunk-3BRHWRZ5.js +2 -0
- package/dist/chunk-ASPPM7TQ.js +1 -0
- package/dist/chunk-BKNXRSJU.js +4 -0
- package/dist/{chunk-RLNMJ2QY.js → chunk-BLCNUT53.js} +1 -1
- package/dist/chunk-BPXS4QEO.js +1006 -0
- package/dist/chunk-CLNYHWZ6.js +5 -0
- package/dist/chunk-D3SPXZZY.js +6 -0
- package/dist/chunk-DMDZ3QW7.js +1 -0
- package/dist/{chunk-UIMIXDAF.js → chunk-DRO3DG7X.js} +1 -1
- package/dist/chunk-F6U5TMM3.js +5 -0
- package/dist/chunk-ICAM2GUU.js +1 -0
- package/dist/{chunk-WYALKFT7.js → chunk-IRUR4DVD.js} +1 -1
- package/dist/chunk-ISKCTUI7.js +9 -0
- package/dist/{chunk-5ZP5TJJA.js → chunk-J3VYLSJI.js} +1 -1
- package/dist/chunk-JUVQWLWM.js +14 -0
- package/dist/chunk-JYJWNUGH.js +1 -0
- package/dist/chunk-KJNAORKM.js +15 -0
- package/dist/chunk-L47LZYVG.js +21 -0
- package/dist/{chunk-WGRTN6TX.js → chunk-L7JP7DUO.js} +1 -1
- package/dist/{chunk-4UCIJKQS.js → chunk-LBINDAPE.js} +11 -11
- package/dist/chunk-LZDO4PXK.js +34 -0
- package/dist/chunk-MFFJ5HFI.js +178 -0
- package/dist/{chunk-OMLONR4N.js → chunk-N2OLEUAQ.js} +1 -1
- package/dist/{chunk-S2WZL5CT.js → chunk-NLTYJUQG.js} +1 -1
- package/dist/chunk-NPGZRSGL.js +5 -0
- package/dist/{chunk-SKN4VSLW.js → chunk-NUJSTEV4.js} +1 -1
- package/dist/{chunk-E4NFVJ7F.js → chunk-NWGRLNUM.js} +1 -1
- package/dist/{chunk-HGRL5ZKG.js → chunk-OW3HDZV5.js} +1 -1
- package/dist/chunk-QZ34KQ76.js +3 -0
- package/dist/chunk-RBJPQYV3.js +6 -0
- package/dist/chunk-RX274IH7.js +5 -0
- package/dist/{chunk-TU643PPA.js → chunk-TZCMK3UG.js} +6 -6
- package/dist/{chunk-KSFVBI2D.js → chunk-VKKDSXMR.js} +1 -1
- package/dist/chunk-VLS3BPCG.js +1 -0
- package/dist/chunk-VNXTBIPI.js +31 -0
- package/dist/chunk-VVPRB2JU.js +114 -0
- package/dist/chunk-XA3MZOWU.js +61 -0
- package/dist/chunk-XF7YHFVR.js +15 -0
- package/dist/{chunk-FP42MZDK.js → chunk-XIVFVKMB.js} +2 -2
- package/dist/chunk-XYZVMTNN.js +1 -0
- package/dist/chunk-Z6LHGA27.js +1 -0
- package/dist/cli.js +2 -2
- package/dist/config-VHWLMFIN.js +1 -0
- package/dist/{config-NUQGVGQE.js → config-XO7TGH27.js} +1 -1
- package/dist/db-WCTOLFAZ.js +1 -0
- package/dist/delivery-log-ML4RJOBM.js +1 -0
- package/dist/dist-HCSYRPJU.js +1 -0
- package/dist/engine-IZRMVJRH.js +1 -0
- package/dist/evolution-audit-HLU7LQL6.js +1 -0
- package/dist/execution-tools-3UATAFUL.js +1 -0
- package/dist/{external-api-DQX7ZGRF.js → external-api-YMEFVZGG.js} +1 -1
- package/dist/index.js +194 -23
- package/dist/learner-NJXX2RUL.js +1 -0
- package/dist/{logger-4IUSEDG4.js → logger-PAMNFWI3.js} +1 -1
- package/dist/memories-JDTQM3UN.js +1 -0
- package/dist/memory-extractor-X2HTMKCV.js +1 -0
- package/dist/memory-gc-BCHTOSXK.js +1 -0
- package/dist/memory-service-66EMRJXO.js +1 -0
- package/dist/onnxruntime_binding-2BPLI7ZQ.node +0 -0
- package/dist/onnxruntime_binding-5J67DTMJ.node +0 -0
- package/dist/onnxruntime_binding-7ZZLEQ2F.node +0 -0
- package/dist/onnxruntime_binding-KDCXAPN5.node +0 -0
- package/dist/onnxruntime_binding-R73P2IQW.node +0 -0
- package/dist/outbound-gateway-R6EVRWHP.js +1 -0
- package/dist/presets-ZZVLCPB2.js +1 -0
- package/dist/reflection-job-BHX3BWAG.js +23 -0
- package/dist/role-presets-JJI7532O.js +1 -0
- package/dist/role-workspace-SIHNI6HO.js +1 -0
- package/dist/roles-F6AEM6B5.js +1 -0
- package/dist/{runtime-WDAYGKY6.js → runtime-TWLGJSL6.js} +1 -1
- package/dist/server-bus-GEGVMSCA.js +1 -0
- package/dist/session-manager-6MUWHQYF.js +1 -0
- package/dist/skill-registry-4JT62GEF.js +1 -0
- package/dist/target-resolution-PSSBM4LX.js +1 -0
- package/dist/task-templates-6G46OVYT.js +1 -0
- package/dist/template-dispatch-NDQH6S2P.js +1 -0
- package/dist/template-execution-artifacts-NEPSVD2B.js +1 -0
- package/dist/trace-context-UR7DI5ME.js +1 -0
- package/package.json +30 -19
- package/web/dist/assets/{Button-Dr7ksRu4.js → Button-fLMsJd5o.js} +1 -1
- package/web/dist/assets/{Card-B4oFZ8tK.js → Card-cy-gHU0O.js} +1 -1
- package/web/dist/assets/{ChannelDetail-eIcfA57N.js → ChannelDetail-CsKBPHkT.js} +1 -1
- package/web/dist/assets/{Channels-mwF1UKzb.js → Channels-DMutLV9r.js} +2 -2
- package/web/dist/assets/Chat-DWTs-iOw.js +2 -0
- package/web/dist/assets/Dashboard-CoatfhW8.js +1 -0
- package/web/dist/assets/{EmptyState-CDrBzXK-.js → EmptyState-C5kVDHc7.js} +1 -1
- package/web/dist/assets/{EnvVarEditor-Bray2ESp.js → EnvVarEditor-BvRsHayG.js} +1 -1
- package/web/dist/assets/{EventDefDetail-CfNFbtRL.js → EventDefDetail-zuJydp12.js} +1 -1
- package/web/dist/assets/Events-nCImjXyr.js +1 -0
- package/web/dist/assets/{Evolution-CQZZH9YR.js → Evolution-Br41g99g.js} +1 -1
- package/web/dist/assets/ExtensionDetail-BXlphIkn.js +1 -0
- package/web/dist/assets/Extensions-3lhbw0A2.js +1 -0
- package/web/dist/assets/{FeatureRequests-Chu9p9jf.js → FeatureRequests-oaXQNu43.js} +1 -1
- package/web/dist/assets/{GoalDetail-D6YA6oj3.js → GoalDetail-DRDg1JDv.js} +1 -1
- package/web/dist/assets/Goals-DGmKvtGA.js +1 -0
- package/web/dist/assets/{Logs-B05A1bGU.js → Logs-BZKxhdnb.js} +1 -1
- package/web/dist/assets/{Memories-CeNngSKF.js → Memories-DhJJk-KB.js} +1 -1
- package/web/dist/assets/{Mistakes-SOFsb4IS.js → Mistakes-DxThj9as.js} +1 -1
- package/web/dist/assets/{NotFound-Csw1BuG3.js → NotFound-buXr2gl7.js} +1 -1
- package/web/dist/assets/{PageHeader-z6FDKzfu.js → PageHeader-BgNbz3JV.js} +1 -1
- package/web/dist/assets/Plugins-BXrsGsXs.js +1 -0
- package/web/dist/assets/RoleDetail-rClUsHwS.js +35 -0
- package/web/dist/assets/Roles-DH9cRv8h.js +1 -0
- package/web/dist/assets/{SectionHeader-SRCKtVA-.js → SectionHeader-CwX6m1f6.js} +1 -1
- package/web/dist/assets/{Settings-44MJsbkf.js → Settings-My2lOEWv.js} +1 -1
- package/web/dist/assets/{Strategies-Ck28Clr5.js → Strategies-YLMryJlG.js} +1 -1
- package/web/dist/assets/{Switch-BmTw_pcA.js → Switch-PNpjNoGn.js} +1 -1
- package/web/dist/assets/{Table-B0PI8kT6.js → Table-BrERwl-F.js} +1 -1
- package/web/dist/assets/{Tabs-BZ6DxWAE.js → Tabs-CGHmpUAD.js} +1 -1
- package/web/dist/assets/TaskDetail-Bkaq0NwW.js +2 -0
- package/web/dist/assets/Work-4OcGMu_a.js +1 -0
- package/web/dist/assets/api-BkdixMz9.js +1 -0
- package/web/dist/assets/{es2015-BIlLl5hi.js → es2015-JqLIWAgH.js} +1 -1
- package/web/dist/assets/index-C-e-qpXc.js +12 -0
- package/web/dist/assets/index-DGTVc0qD.css +2 -0
- package/web/dist/assets/{useIsMobileLayout-luhqwSbU.js → useIsMobileLayout-Blj4Mk4K.js} +1 -1
- package/web/dist/assets/{usePluginsWithUsage-8a-Ed6EY.js → usePluginsWithUsage-Ch9WCFTb.js} +1 -1
- package/web/dist/assets/vendor-icons-U4igmrUq.js +1 -0
- package/web/dist/assets/{vendor-react-Kuc9eqr3.js → vendor-react-Bp_V-Hsf.js} +1 -1
- package/web/dist/assets/{vendor-state-CcqA6KbS.js → vendor-state-Zjl_6-V3.js} +1 -1
- package/web/dist/index.html +8 -8
- package/dist/App-DAFKLTGC.js +0 -13
- package/dist/adam-tools-NTUOJ42F.js +0 -1
- package/dist/approval-handler-D4EXPO2F.js +0 -1
- package/dist/audit-manager-FHYCOJZM.js +0 -1
- package/dist/bree-engine-XKEGOG7I.js +0 -1
- package/dist/channels-LV5F7LUJ.js +0 -1
- package/dist/chunk-34WPSSKK.js +0 -7
- package/dist/chunk-37TV7A5A.js +0 -740
- package/dist/chunk-43JFJEUT.js +0 -1
- package/dist/chunk-44DK2I4J.js +0 -47
- package/dist/chunk-45I2IYIE.js +0 -10
- package/dist/chunk-6JBSBSCL.js +0 -1
- package/dist/chunk-7B2DHDUD.js +0 -10
- package/dist/chunk-7QELXWKT.js +0 -3
- package/dist/chunk-7ZCMGQLK.js +0 -1
- package/dist/chunk-CNKUMQ37.js +0 -12
- package/dist/chunk-DAD4PSIZ.js +0 -13
- package/dist/chunk-EEU56CTK.js +0 -5
- package/dist/chunk-ENHE6VOF.js +0 -1
- package/dist/chunk-EP26G2WS.js +0 -5
- package/dist/chunk-F44QHTMI.js +0 -6
- package/dist/chunk-FG72WBDO.js +0 -5
- package/dist/chunk-FNHW2CRA.js +0 -5
- package/dist/chunk-KZKDPY53.js +0 -1
- package/dist/chunk-LLGJEDNK.js +0 -3
- package/dist/chunk-MC2R5WMN.js +0 -21
- package/dist/chunk-NNNDVFEY.js +0 -1
- package/dist/chunk-OPCPSPZ2.js +0 -8
- package/dist/chunk-S6HEPXYU.js +0 -80
- package/dist/chunk-UEYKBU5K.js +0 -1
- package/dist/chunk-UMCM25ZR.js +0 -1
- package/dist/chunk-VOO3FHMD.js +0 -14
- package/dist/chunk-XMFTVHCC.js +0 -128
- package/dist/chunk-YLM6QTFR.js +0 -40
- package/dist/chunk-ZYAK567W.js +0 -5
- package/dist/config-25UDTFBM.js +0 -1
- package/dist/db-GKWPRABQ.js +0 -1
- package/dist/delivery-log-XEZBBSRW.js +0 -1
- package/dist/dist-CDWBOTZS.js +0 -1
- package/dist/engine-P7IWX6CX.js +0 -1
- package/dist/evolution-audit-JJOFW6YU.js +0 -1
- package/dist/learner-BP3UDHN7.js +0 -1
- package/dist/memories-KPMHJLNT.js +0 -1
- package/dist/memory-extractor-QAS5ANET.js +0 -6
- package/dist/memory-service-YDBU7L54.js +0 -1
- package/dist/onnxruntime_binding-6Q6HXASN.node +0 -0
- package/dist/onnxruntime_binding-EKZT2NRK.node +0 -0
- package/dist/onnxruntime_binding-P6S7V3CI.node +0 -0
- package/dist/onnxruntime_binding-PJNNIIUO.node +0 -0
- package/dist/onnxruntime_binding-UN6SPTQK.node +0 -0
- package/dist/outbound-gateway-WE7Q623W.js +0 -1
- package/dist/presets-UKC5MHGV.js +0 -1
- package/dist/role-presets-5DDTPDJ4.js +0 -1
- package/dist/role-workspace-IHQZS56U.js +0 -1
- package/dist/roles-DLCEQ7V7.js +0 -1
- package/dist/server-bus-N5LCY73J.js +0 -1
- package/dist/session-manager-UOMXOJJX.js +0 -1
- package/dist/skill-registry-Q5GXSF6I.js +0 -1
- package/dist/target-resolution-ARTZKRBA.js +0 -1
- package/dist/task-templates-XZWRTAQ5.js +0 -1
- package/dist/template-dispatch-UFAGUOHR.js +0 -1
- package/dist/token-estimator-HMPVGDCN.js +0 -1
- package/web/dist/assets/Chat-PUJ7hpK9.js +0 -2
- package/web/dist/assets/Dashboard-CmRIajQD.js +0 -1
- package/web/dist/assets/Events-Bfjb3zYt.js +0 -1
- package/web/dist/assets/Goals-CXSFLkYn.js +0 -1
- package/web/dist/assets/Plugins-D4L5kw9U.js +0 -1
- package/web/dist/assets/RoleDetail-JXZ2Wb0p.js +0 -33
- package/web/dist/assets/Roles-DsCqCFHr.js +0 -1
- package/web/dist/assets/TaskDetail-ZAA7QN_T.js +0 -2
- package/web/dist/assets/Work-D2E3HWPo.js +0 -1
- package/web/dist/assets/api-D-UzHSDq.js +0 -1
- package/web/dist/assets/index-6f2jcj0h.css +0 -2
- package/web/dist/assets/index-CtdnsiU1.js +0 -12
- package/web/dist/assets/vendor-icons-ClLF5FTT.js +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{b as v,d as vo,e as Br}from"./chunk-NLTYJUQG.js";import{a as bo,f as wr,h as kr}from"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-FCV2DPZQ.js";import{Box as go,Text as Xt,useInput as fa}from"ink";import{useState as pa,useEffect as Ho,useRef as Rt,useReducer as xa}from"react";import{createContext as os,useContext as rs,useReducer as ns}from"react";import{jsx as as}from"react/jsx-runtime";var ss={connected:!1,serverInfo:null,activeTasks:0,queuedTasks:0,costToday:0,activeTaskId:null,activeTaskSubmitted:!1,pendingApproval:null,pendingPlanApproval:null,planTimeoutNotice:null,serverUnreachable:!1,view:"chat",configVersion:0,session:null,version:null};function is(e,t){switch(t.type){case"SET_CONNECTED":return{...e,connected:t.connected};case"SET_SERVER_INFO":return{...e,serverInfo:t.info};case"UPDATE_STATS":return{...e,activeTasks:t.activeTasks,queuedTasks:t.queuedTasks,costToday:t.costToday};case"SET_ACTIVE_TASK":return{...e,activeTaskId:t.taskId,activeTaskSubmitted:!1};case"TASK_SUBMITTED":return{...e,activeTaskSubmitted:!0};case"SET_PENDING_APPROVAL":return{...e,pendingApproval:t.approval};case"SET_SERVER_UNREACHABLE":return{...e,serverUnreachable:t.unreachable};case"SET_VIEW":return{...e,view:t.view};case"CONFIG_CHANGED":return{...e,configVersion:e.configVersion+1};case"SET_SESSION":return{...e,session:t.session};case"SET_PENDING_PLAN_APPROVAL":return{...e,pendingPlanApproval:t.approval};case"SET_PLAN_TIMEOUT_NOTICE":return{...e,pendingPlanApproval:null,planTimeoutNotice:t.planId?{planId:t.planId}:null};case"SET_VERSION":return{...e,version:t.version};default:return e}}var Ir=os(null);function Er({children:e}){let[t,o]=ns(is,ss);return as(Ir.Provider,{value:{state:t,dispatch:o},children:e})}function tt(){let e=rs(Ir);if(!e)throw new Error("useTuiState must be used within TuiProvider");return e}import{useEffect as Ar,useRef as Pr}from"react";var ls=15e3;function Rr(){let{state:e,dispatch:t}=tt(),o=Pr(null),g=Pr(null);Ar(()=>{g.current=e.session?.id??null},[e.session?.id]),Ar(()=>{let n=!0,m=null,d=()=>{o.current&&(clearTimeout(o.current),o.current=null)},a=()=>{d(),o.current=setTimeout(()=>{n&&t({type:"SET_SERVER_UNREACHABLE",unreachable:!0})},ls)};return(()=>{try{m=new vo("/events"),m.on("task_status_change",()=>{}),m.on("approval_request",s=>{if(!n)return;let p=s;t({type:"SET_PENDING_APPROVAL",approval:{taskId:p.taskId,approvalId:p.approvalId,toolName:p.toolName,toolInput:p.toolInput,matchedPattern:p.matchedPattern}})}),m.on("plan_approval_request",s=>{if(!n)return;let p=s;t({type:"SET_PENDING_PLAN_APPROVAL",approval:{taskId:p.taskId,planId:p.planId,roleId:p.roleId,plan:p.plan}})}),m.on("plan_approval_decision",()=>{n&&t({type:"SET_PENDING_PLAN_APPROVAL",approval:null})}),m.on("config_changed",()=>{n&&t({type:"CONFIG_CHANGED"})}),m.on("execution_task_start",s=>{if(!n)return;let p=s,f=g.current;f&&(async()=>{try{let S=await v(`/tasks/${p.taskId}`);n&&S.sourceSessionId===f&&t({type:"SET_ACTIVE_TASK",taskId:p.taskId})}catch{}})()}),m.on("stats_update",s=>{if(!n)return;let p=s;t({type:"UPDATE_STATS",activeTasks:p.activeTasks,queuedTasks:p.queuedTasks,costToday:p.totalCostToday})}),m.connect().then(async()=>{if(n){d(),t({type:"SET_CONNECTED",connected:!0}),t({type:"SET_SERVER_UNREACHABLE",unreachable:!1});try{let s=await v("/version");t({type:"SET_VERSION",version:s.version})}catch{t({type:"SET_VERSION",version:null})}}}).catch(()=>{n&&(t({type:"SET_CONNECTED",connected:!1}),a())})}catch{n&&(t({type:"SET_CONNECTED",connected:!1}),a())}})(),()=>{n=!1,d(),m?.close()}},[t])}import{useEffect as cs,useRef as ds,useState as Dr,useCallback as us}from"react";function Mr(e){let[t,o]=Dr([]),[g,n]=Dr(!1),m=ds(null),d=us(()=>{o([]),n(!1)},[]);return cs(()=>{if(!e)return;let a=!0;o([]),n(!0);try{let i=new Br(e);return m.current=i,i.on("reasoning",s=>{if(!a)return;let f=s.content??"";o(S=>{let b=S[S.length-1];if(b?.type==="reasoning"){let k=[...S];return k[k.length-1]={...b,content:b.content+f},k}return[...S,{type:"reasoning",content:f,timestamp:Date.now()}]})}),i.on("tool_call",s=>{if(!a)return;let p=s;o(f=>[...f,{type:"tool_call",content:p.toolName??"unknown tool",timestamp:Date.now(),metadata:{toolName:p.toolName}}])}),i.on("tool_result",s=>{if(!a)return;let p=s;o(f=>[...f,{type:"tool_result",content:p.content??"",timestamp:Date.now()}])}),i.on("error",s=>{if(!a)return;let p=s;o(f=>[...f,{type:"error",content:p.error??"unknown error",timestamp:Date.now()}])}),i.on("complete",s=>{if(!a)return;let p=s;o(f=>[...f,{type:"complete",content:p.result??"",timestamp:Date.now(),metadata:{cost:p.costUsd,turns:p.numTurns,duration:p.totalDurationMs}}]),n(!1)}),i.connect().catch(()=>{a&&(o(s=>[...s,{type:"error",content:"Failed to connect to task stream",timestamp:Date.now()}]),n(!1))}),()=>{a=!1,i.close()}}catch{n(!1)}},[e]),{events:t,isStreaming:g,clearEvents:d}}import{useState as Yo,useEffect as ms,useCallback as Zt}from"react";function Jo(e){return{id:e.id,status:e.status,messageCount:e.messageCount,createdAt:e.createdAt,lastActiveAt:e.lastActiveAt,title:e.title}}function $r(){let[e,t]=Yo(null),[o,g]=Yo(!0),[n,m]=Yo(null),d=Zt(async()=>{try{let S=(await v("/chat/sessions?status=active")).sessions.find(b=>b.source.type==="tui");return S?Jo(S):null}catch{return null}},[]),a=Zt(async()=>{try{let f=await v("/chat/sessions",{method:"POST",body:{source:{type:"tui"}}}),S=Jo(f.session);return t(S),S}catch{return m("Failed to create session"),null}},[]),i=Zt(async f=>{try{let S=await v("/chat/messages",{method:"POST",body:{content:f,source:{type:"tui"}}});return t(b=>b&&{...b,messageCount:b.messageCount+1,lastActiveAt:Date.now()}),S}catch{return null}},[]),s=Zt(async()=>{if(!e)return!1;try{return await v(`/chat/sessions/${e.id}/archive`,{method:"POST"}),t(null),!0}catch{return!1}},[e]),p=Zt(async()=>{if(e)try{let f=await v(`/chat/sessions/${e.id}`);t(Jo(f.session))}catch{t(null)}},[e]);return ms(()=>{let f=!1;async function S(){g(!0);let b=await d();f||(b?t(b):await a(),f||g(!1))}return S(),()=>{f=!0}},[]),{session:e,loading:o,error:n,sendMessage:i,createNewSession:a,archiveCurrentSession:s,refreshSession:p,setSession:t}}import{useEffect as Nr,useRef as gs,useState as fs}from"react";function _r(e){let[t,o]=fs(null),g=gs(new Set);return Nr(()=>{if(!e)return;let n=!0,m=null;try{m=new vo("/chat/stream"),m.on("chat_message",d=>{if(!n)return;let i=d.message;i&&i.sessionId===e&&i.role==="assistant"&&(g.current.has(i.id)||(g.current.add(i.id),o(i)))}),m.connect().catch(()=>{})}catch{}return()=>{n=!1,m?.close()}},[e]),Nr(()=>{g.current.clear(),o(null)},[e]),{latestMessage:t}}import{Box as Zo,Text as Me}from"ink";import{Fragment as Co,jsx as ye,jsxs as _t}from"react/jsx-runtime";var ps=90;function Lr({children:e}){return ye(Zo,{children:e})}function Or(){let{state:e}=tt(),t=e.session,g=(t?Math.floor((Date.now()-t.lastActiveAt)/6e4):1/0)>=25,n=e.connected?"up":"down",m=e.view==="chat"?"Chat":e.view.charAt(0).toUpperCase()+e.view.slice(1),d=t?t.messageCount===0?"new session":`${t.id.slice(0,8)} \xB7 ${t.messageCount}t`:null,i=(process.stdout.columns??100)<ps,s=_t(Co,{children:[ye(Me,{bold:!0,children:e.version?`Adam v${e.version}`:"Adam"}),ye(Me,{dimColor:!0,children:" | "}),ye(Me,{color:e.connected?"green":"red",children:(e.connected,"\u25CF")}),ye(Me,{children:` ${n}`}),ye(Me,{dimColor:!0,children:" | "}),ye(Me,{children:m.toLowerCase()})]}),p=_t(Co,{children:[ye(Me,{children:`${e.activeTasks} run / ${e.queuedTasks} q`}),ye(Me,{dimColor:!0,children:" | "}),ye(Me,{children:`$${e.costToday.toFixed(2)}`}),e.view==="chat"&&t&&_t(Co,{children:[ye(Me,{dimColor:!0,children:" | "}),ye(Me,{children:d}),g&&_t(Co,{children:[ye(Me,{dimColor:!0,children:" | "}),ye(Me,{color:"yellow",children:"timeout"})]})]})]});return i?_t(Zo,{flexDirection:"column",borderStyle:"round",borderDimColor:!0,paddingX:1,children:[ye(Lr,{children:s}),ye(Lr,{children:p})]}):_t(Zo,{borderStyle:"round",borderDimColor:!0,paddingX:1,children:[s,ye(Me,{dimColor:!0,children:" | "}),p]})}import{Box as So,Text as wo,useInput as Ts}from"ink";import{useState as tr,useMemo as hs}from"react";import ys from"ink-text-input";var xs=[{name:"work",description:"Tasks, Automations & Goals"},{name:"config",description:"Configuration"},{name:"evolution",description:"Evolution audit"},{name:"webhooks",description:"Webhook triggers"},{name:"memories",description:"Memory browser"},{name:"strategies",description:"Strategy lab"},{name:"plugins",description:"Plugin management"},{name:"roles",description:"Role management"},{name:"settings",description:"Runtime settings"},{name:"back",description:"Return to chat"},{name:"quit",description:"Exit TUI"}];function er(e){let t=e.toLowerCase();return xs.filter(o=>o.name.startsWith(t))}function Fr(e){let t=er(e.toLowerCase());return t.length===1?t[0]:void 0}import{jsx as ko,jsxs as eo}from"react/jsx-runtime";function qr({onSubmit:e}){let[t,o]=tr(""),[g,n]=tr(0),[m,d]=tr(!1),a=t.startsWith("/")&&t.length>=1,i=t.slice(1),s=hs(()=>a?er(i):[],[a,i]),p=b=>{o(b),b.startsWith("/")?(d(!0),n(0)):d(!1)},f=()=>{let b=t.trim();if(b){if(b.startsWith("/")){let k=b.slice(1),r=Fr(k);e(r?`/${r.name}`:b)}else e(b);o(""),d(!1)}},S=b=>{e(`/${b.name}`),o(""),d(!1)};return Ts((b,k)=>{if(!(!m||!a||s.length===0)){if(k.upArrow){n(r=>r<=0?s.length-1:r-1);return}if(k.downArrow){n(r=>r>=s.length-1?0:r+1);return}if(k.tab){let r=s[g];r&&S(r);return}if(k.escape){d(!1),o("");return}}},{isActive:m&&a&&s.length>0}),eo(So,{flexDirection:"column",children:[m&&a&&s.length>0&&ko(So,{flexDirection:"column",marginBottom:0,paddingX:1,children:s.map((b,k)=>{let r=k===g;return eo(So,{children:[ko(wo,{color:r?"cyan":"gray",bold:r,children:r?"\u25B8 ":" "}),eo(wo,{color:r?"cyan":"white",bold:r,children:["/",b.name]}),eo(wo,{dimColor:!0,children:[" \u2014 ",b.description]})]},b.name)})}),eo(So,{borderStyle:"round",borderDimColor:!0,children:[ko(wo,{bold:!0,children:"\u25B8 "}),ko(ys,{value:t,onChange:p,onSubmit:f,placeholder:"Type a message or / for commands..."})]})]})}import{Box as Lt,Text as Ie,useInput as bs}from"ink";import{useState as vs}from"react";import{jsx as Oe,jsxs as ot}from"react/jsx-runtime";function Cs({content:e,expanded:t}){let o=e.split(`
|
|
2
|
+
`);return o.length<=5?Oe(Ie,{color:"green",children:e}):t?Oe(Ie,{color:"green",children:e}):ot(Ie,{color:"green",children:[o.slice(0,3).join(`
|
|
3
|
+
`),`
|
|
4
|
+
`,ot(Ie,{dimColor:!0,children:["(",o.length," lines) [Ctrl+O] expand"]})]})}function Ss({event:e,expanded:t}){switch(e.type){case"reasoning":return Oe(Lt,{children:Oe(Ie,{color:"gray",children:e.content})});case"tool_call":return Oe(Lt,{children:ot(Ie,{color:"blue",children:["[tool] ",e.metadata?.toolName??e.content]})});case"tool_result":return ot(Lt,{flexDirection:"column",children:[Oe(Ie,{color:"blue",dimColor:!0,children:"[result]"}),Oe(Cs,{content:e.content,expanded:t})]});case"error":return Oe(Lt,{children:ot(Ie,{color:"red",children:["[error] ",e.content]})});case"complete":return ot(Lt,{flexDirection:"column",marginTop:1,children:[e.content&&Oe(Ie,{children:e.content}),Oe(Ie,{dimColor:!0,children:"\u2500\u2500\u2500 Task complete \u2500\u2500\u2500"}),e.metadata?.cost!==void 0&&ot(Ie,{dimColor:!0,children:["Cost: $",e.metadata.cost.toFixed(4)]}),e.metadata?.turns!==void 0&&ot(Ie,{dimColor:!0,children:["Turns: ",e.metadata.turns]}),e.metadata?.duration!==void 0&&ot(Ie,{dimColor:!0,children:["Duration: ",(e.metadata.duration/1e3).toFixed(1),"s"]})]});default:return null}}function Vr({events:e,isStreaming:t}){let[o,g]=vs(!1),n=e.some(m=>m.type==="tool_result"&&m.content.split(`
|
|
5
|
+
`).length>5);return bs((m,d)=>{d.ctrl&&m==="o"&&g(a=>!a)},{isActive:n}),e.length===0&&!t?null:ot(Lt,{flexDirection:"column",children:[t&&e.length===0&&Oe(Ie,{dimColor:!0,children:"Waiting for response..."}),e.map((m,d)=>Oe(Ss,{event:m,expanded:o},d)),n&&Oe(Ie,{dimColor:!0,children:o?"[Ctrl+O] collapse full output":"[Ctrl+O] expand full output"})]})}import{Box as en,Text as Do}from"ink";import{Box as ws,Text as Bo}from"ink";import ks from"ink-spinner";import{jsx as Io,jsxs as Ur}from"react/jsx-runtime";var Bs={running:{glyph:"",color:"blue"},completed:{glyph:"\u2713",color:"green"},failed:{glyph:"\u2717",color:"red"},retrying:{glyph:"\u21BB",color:"yellow"},blocked:{glyph:"\u23F8",color:"yellow"}};function Wr({content:e,phase:t,taskShortId:o}){let g=Bs[t];return Ur(ws,{children:[Io(Bo,{color:g.color,children:t==="running"?Io(ks,{type:"dots"}):g.glyph}),Io(Bo,{children:" "}),o&&Ur(Bo,{dimColor:!0,children:["[",o,"] "]}),Io(Bo,{dimColor:!0,children:e})]})}import{Box as to,Text as Po}from"ink";var Gr=["cyan","magenta","green","yellow","blue","red"];function Is(e){let t=5381;for(let o=0;o<e.length;o++)t=(t<<5)+t^e.charCodeAt(o);return Math.abs(t)}function Eo(e){return e?Gr[Is(e)%Gr.length]:"cyan"}function Ao(e){return e?`T-${e.replace(/-/g,"").slice(0,8).toUpperCase()}`:""}import{jsx as oo,jsxs as Ro}from"react/jsx-runtime";function Es(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function As(e){if(!e)return"";let t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function Ps(e){return e.map(t=>{if(t.type==="channel"&&t.channelId)return t.channelId;if(t.type==="webhook"&&t.webhookUrl)try{return new URL(t.webhookUrl).hostname}catch{return t.webhookUrl}return t.type}).join(", ")}function Hr(e){let t=Eo(e.roleId),o=e.roleName??"?",g=e.taskShortIdLabel?` \xB7 ${e.taskShortIdLabel}`:"";return Ro(to,{flexDirection:"column",borderStyle:"round",borderColor:t,paddingX:1,children:[oo(to,{children:Ro(Po,{bold:!0,color:t,children:["[",o,g,"]"]})}),oo(to,{marginTop:1,children:oo(Po,{children:e.content})}),e.attachments&&e.attachments.length>0&&oo(to,{flexDirection:"column",marginTop:1,children:e.attachments.map(n=>{let m=n.purpose?`purpose=${n.purpose}, `:"";return Ro(Po,{dimColor:!0,children:["[file] ",n.filename," (",m,Es(n.size),") \u2192 ",n.locator]},n.artifactId)})}),e.mirroredToTargets&&e.mirroredToTargets.length>0&&oo(to,{marginTop:1,children:Ro(Po,{dimColor:!0,italic:!0,children:["(also delivered to: ",Ps(e.mirroredToTargets)," @ ",As(e.createdAt),")"]})})]})}import{Box as Bt,Text as Ot}from"ink";import Rs from"ink-select-input";import{useState as jr}from"react";import{jsx as dt,jsxs as ro}from"react/jsx-runtime";var Ds=[{label:"\u6279\u51C6 / Yes",value:"\u6279\u51C6"},{label:"\u62D2\u7EDD / No",value:"\u62D2\u7EDD"}];function Kr({promptId:e,content:t,shape:o,choices:g,onSubmitted:n,onSubmitFailure:m}){let[d,a]=jr(null),[i,s]=jr(null),p=o==="yes_no"?Ds:o==="choose_one"&&g&&g.length>0?g.map(S=>({label:S,value:S})):[],f=async S=>{try{await v("/chat/messages",{method:"POST",body:{content:S.value,source:{type:"tui"},buttonPayload:{promptId:e,value:S.value}}}),a(S.value),n?.(S.value)}catch{s(`Failed to submit. Try again or type "#${e} ${S.value}" in the input bar.`),m?.()}};return ro(Bt,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:1,children:[ro(Ot,{bold:!0,color:"yellow",children:["\u26A0 #",e]}),dt(Bt,{marginTop:1,children:dt(Ot,{children:t})}),d?dt(Bt,{marginTop:1,children:ro(Ot,{color:"green",children:["[\u5DF2\u63D0\u4EA4: ",d," \u2713]"]})}):o==="free_input"?dt(Bt,{marginTop:1,children:ro(Ot,{dimColor:!0,children:["Free-input shape: \u8BF7\u56DE\u590D #",e," \u4F60\u7684\u7B54\u590D"]})}):p.length>0?dt(Bt,{marginTop:1,children:dt(Rs,{items:p,onSelect:f})}):dt(Bt,{marginTop:1,children:ro(Ot,{color:"red",dimColor:!0,children:["(no choices configured for shape=",o,")"]})}),i&&dt(Bt,{marginTop:1,children:dt(Ot,{color:"red",children:i})})]})}import{Box as Ms,Text as $s}from"ink";import{jsx as _s,jsxs as Ns}from"react/jsx-runtime";function zr({content:e}){return _s(Ms,{children:Ns($s,{dimColor:!0,children:["\xB7 ",e]})})}import{Box as or,Text as Ls}from"ink";import{jsx as Qr,jsxs as Xr}from"react/jsx-runtime";function Yr({threadRoot:e,roleId:t,roleName:o,taskShortIdLabel:g,brief:n,children:m}){let d=Eo(t),a=[g,o,n].filter(Boolean),i=a.length>0?a.join(" / "):e.slice(0,8);return Xr(or,{flexDirection:"column",borderStyle:"round",borderColor:d,paddingX:1,marginBottom:1,children:[Qr(or,{children:Xr(Ls,{bold:!0,color:d,children:["[Thread ",i,"]"]})}),Qr(or,{flexDirection:"column",marginTop:1,children:m})]})}import{useEffect as Os,useState as Jr}from"react";function Zr(){let[e,t]=Jr(new Map),[o,g]=Jr(!1);return Os(()=>{let n=!1;async function m(){try{let d=await v("/roles");if(n)return;let a=new Map;for(let i of d.roles)a.set(i.id,i.name);t(a)}catch{}finally{n||g(!0)}}return m(),()=>{n=!0}},[]),{getName:n=>n&&e.get(n)||"?",loaded:o}}import{jsx as bt,jsxs as rr}from"react/jsx-runtime";function Fs(e){let t=e.toLowerCase();return t.includes("completed")||t.includes("done")||t.includes("\u6210\u529F")?"completed":t.includes("failed")||t.includes("error")||t.includes("\u5931\u8D25")?"failed":t.includes("retry")||t.includes("\u91CD\u8BD5")?"retrying":t.includes("blocked")||t.includes("auth_required")||t.includes("\u963B\u585E")?"blocked":"running"}function qs(e,t,o){return function(n,m){if(!n.kind||n.kind==="user_message"||n.kind==="assistant_text")return rr(en,{flexDirection:"column",marginBottom:1,children:[bt(Do,{dimColor:!0,bold:!0,children:n.role==="user"?"You:":"Adam:"}),bt(Do,{children:n.content})]},m);if(n.kind==="status_report")return bt(Wr,{content:n.content,phase:Fs(n.content),taskShortId:Ao(n.taskId)},m);if(n.kind==="result_delivery")return bt(Hr,{content:n.content,roleId:n.roleId,roleName:e(n.roleId),taskShortIdLabel:Ao(n.taskId),attachments:n.attachments,mirroredToTargets:n.mirroredToTargets,createdAt:n.createdAt},m);if(n.kind==="approval_prompt"&&n.promptId&&n.approvalShape){let d=n.promptId;return bt(Kr,{promptId:d,content:n.content,shape:n.approvalShape,onSubmitted:()=>t?.(d),onSubmitFailure:()=>o?.(d)},m)}return n.kind==="system_note"?bt(zr,{content:n.content},m):bt(Do,{dimColor:!0,children:n.content},m)}}function Vs(e){let t=[],o=0;for(;o<e.length;){let g=e[o];if(g.kind==="status_report"){let n=o;for(;n<e.length&&e[n].kind==="status_report";)n++;let m=n-o;if(m>=3){t.push({__synthetic:!0,count:m,lastContent:e[n-1].content}),o=n;continue}}t.push(g),o++}return t}function tn({messages:e,onApprovalSubmitted:t,onApprovalFailed:o}){let{getName:g}=Zr(),n=qs(g,t,o);if(e.length===0)return null;let m=[],d=new Map;for(let a of e)if(!a.threadRoot)m.push(a);else{let i=d.get(a.threadRoot)??[];i.push(a),d.set(a.threadRoot,i)}return rr(en,{flexDirection:"column",children:[m.map((a,i)=>n(a,`free-${a.id??i}`)),Array.from(d.entries()).map(([a,i])=>{let s=i[0],p=Vs(i);return bt(Yr,{threadRoot:a,roleId:s.roleId,roleName:g(s.roleId),taskShortIdLabel:Ao(s.taskId),brief:s.content.slice(0,30),children:p.map((f,S)=>"__synthetic"in f?rr(Do,{dimColor:!0,children:["\u2026 ",f.count," \u6761\u8FDB\u5C55\uFF08\u6700\u8FD1: ",f.lastContent.slice(0,40),"\uFF09"]},`compressed-${S}`):n(f,`${a}-${f.id??S}`))},`thread-${a}`)})]})}import{Box as no,Text as rt,useInput as Us}from"ink";import{jsx as nt,jsxs as so}from"react/jsx-runtime";function on({approval:e,onResolved:t}){return Us(o=>{o==="a"?v(`/tasks/${e.taskId}/approve`,{method:"POST",body:{approvalId:e.approvalId}}).then(()=>t()).catch(()=>t()):o==="r"&&v(`/tasks/${e.taskId}/reject`,{method:"POST",body:{approvalId:e.approvalId,reason:"rejected by user"}}).then(()=>t()).catch(()=>t())}),so(no,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:1,children:[nt(rt,{bold:!0,color:"yellow",children:"\u26A0 APPROVAL REQUIRED"}),so(no,{marginTop:1,children:[nt(rt,{children:"Tool: "}),nt(rt,{bold:!0,children:e.toolName})]}),so(no,{children:[nt(rt,{children:"Input: "}),nt(rt,{children:JSON.stringify(e.toolInput)})]}),so(no,{children:[nt(rt,{children:"Pattern: "}),nt(rt,{dimColor:!0,children:e.matchedPattern})]}),so(no,{marginTop:1,children:[nt(rt,{color:"green",children:"[a] Approve"}),nt(rt,{children:" "}),nt(rt,{color:"red",children:"[r] Reject"})]})]})}import{Box as io,Text as Ee,useInput as Ws}from"ink";import{useState as Gs,useEffect as Hs}from"react";import{jsx as ut,jsxs as ze}from"react/jsx-runtime";var js=300;function rn({approval:e,onResolved:t,onTimeout:o}){let[g,n]=Gs(js);Hs(()=>{let d=setInterval(()=>{n(a=>a<=1?(clearInterval(d),o(),0):a-1)},1e3);return()=>clearInterval(d)},[o]),Ws(d=>{d==="a"?v(`/tasks/${e.taskId}/approve-plan`,{method:"POST",body:{planId:e.planId,decision:"allow",approvalType:"once"}}).then(()=>t()).catch(()=>t()):d==="r"?v(`/tasks/${e.taskId}/approve-plan`,{method:"POST",body:{planId:e.planId,decision:"deny",reason:"rejected by user"}}).then(()=>t()).catch(()=>t()):d==="p"&&v(`/tasks/${e.taskId}/approve-plan`,{method:"POST",body:{planId:e.planId,decision:"allow",approvalType:"permanent"}}).then(()=>t()).catch(()=>t())});let m=e.plan.overallRisk==="high"?"red":e.plan.overallRisk==="medium"?"yellow":"green";return ze(io,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[ut(Ee,{bold:!0,color:"cyan",children:"EXECUTION PLAN \u2014 APPROVAL REQUIRED"}),ze(Ee,{dimColor:!0,children:["Plan ID: ",e.planId]}),ze(Ee,{dimColor:!0,children:["Time remaining: ",g,"s"]}),ze(io,{marginTop:1,children:[ut(Ee,{children:"Overall Risk: "}),ut(Ee,{bold:!0,color:m,children:e.plan.overallRisk.toUpperCase()})]}),ze(Ee,{bold:!0,children:["Steps (",e.plan.steps.length,"):"]}),e.plan.steps.map(d=>{let a=d.riskLevel==="high"?"red":d.riskLevel==="medium"?"yellow":"green";return ze(io,{paddingLeft:2,children:[ze(Ee,{children:["[",d.index,"] "]}),ut(Ee,{children:d.description}),ze(Ee,{dimColor:!0,children:[" (",d.toolsNeeded.join(", "),")"]}),ze(Ee,{color:a,children:[" [",d.riskLevel,"]"]})]},d.index)}),ze(io,{marginTop:1,children:[ut(Ee,{dimColor:!0,children:"Permissions: "}),ut(Ee,{children:Object.keys(e.plan.requiredPermissions).join(", ")||"none"})]}),ze(io,{marginTop:1,children:[ut(Ee,{color:"green",children:"[a] Allow once "}),ut(Ee,{color:"green",children:"[p] Allow permanent "}),ut(Ee,{color:"red",children:"[r] Deny"})]})]})}import{Box as be,Text as K,useInput as ti}from"ink";import{useEffect as oi,useState as vt,useCallback as dn}from"react";import{Box as xe,Text as U,useInput as Ks}from"ink";import{useEffect as zs,useState as Ft}from"react";import{jsx as ae,jsxs as H}from"react/jsx-runtime";var nn={plan:!0,result:!1,routing:!0,error:!0},Xs={pending:"gray",queued:"gray",running:"yellow",paused:"yellow",completed:"green",failed:"red",cancelled:"gray",blocked:"yellow"};function cn({taskId:e,onBack:t}){let[o,g]=Ft(null),[n,m]=Ft([]),[d,a]=Ft([]),[i,s]=Ft(null),[p,f]=Ft(nn),[S,b]=Ft(!1);zs(()=>{let C=!1;return g(null),m([]),a([]),s(null),f(nn),b(!1),v(`/tasks/${e}`).then(({task:A})=>{C||g(A)}).catch(A=>{C||s(A instanceof Error?A.message:String(A))}),v(`/tasks/${e}/plan`).then(({plans:A})=>{C||m(A)}).catch(()=>{C||m([])}),v(`/tasks/${e}/delivery-log?limit=8`).then(({logs:A})=>{C||a(A)}).catch(()=>{C||a([])}),()=>{C=!0}},[e]);let k=C=>{f(A=>({...A,[C]:!A[C]}))};if(Ks((C,A)=>{if(C==="b"||A.escape){t();return}C==="1"&&k("plan"),C==="2"&&k("result"),C==="3"&&k("routing"),C==="4"&&k("error"),C==="5"&&b(X=>!X)}),i)return H(xe,{flexDirection:"column",children:[H(U,{color:"red",children:["Task detail failed: ",i]}),ae(U,{dimColor:!0,children:"[b] Back"})]});if(!o)return H(U,{dimColor:!0,children:["Loading task ",e.slice(0,8),"..."]});let r=n[0],l=Zs(o.deliverTo,o.reportTo),E=d.length>0?`${d.length} delivery event${d.length===1?"":"s"}`:"No delivery events";return H(xe,{flexDirection:"column",children:[H(xe,{children:[H(U,{bold:!0,color:"cyan",children:["Task ",o.id.slice(0,8)]}),ae(U,{dimColor:!0,children:" \u2022 "}),ae(U,{color:Xs[o.status]??"white",bold:!0,children:o.status.toUpperCase()})]}),H(U,{dimColor:!0,children:[o.roleId?`role ${o.roleId}`:"no role"," \u2022 ",ln(o.createdAt)," \u2022 ",Js(o.totalDurationMs)]}),H(xe,{marginTop:1,flexDirection:"column",children:[ae(U,{bold:!0,children:"Summary"}),ae(U,{children:S?o.prompt:Qs(o.prompt,240)}),o.prompt.length>240&&H(U,{dimColor:!0,children:["[5] ",S?"collapse prompt":"expand prompt"]}),H(xe,{marginTop:1,flexDirection:"column",children:[H(U,{dimColor:!0,children:["Cost: ",Ys(o.costUsd)]}),H(U,{dimColor:!0,children:["Turns: ",o.numTurns??"\u2014"]}),H(U,{dimColor:!0,children:["Template: ",o.templateId??"\u2014"]}),H(U,{dimColor:!0,children:["Source Session: ",o.sourceSessionId?.slice(0,8)??"\u2014"]})]})]}),H(xe,{marginTop:1,flexDirection:"column",children:[H(U,{bold:!0,children:["[1] Plan ",p.plan?"hide":"show"]}),ae(U,{dimColor:!0,children:r?`${r.plan.steps.length} planned step${r.plan.steps.length===1?"":"s"} \u2022 ${r.plan.overallRisk} risk \u2022 ${r.status}`:"No execution plan"}),p.plan&&r&&H(xe,{marginTop:1,flexDirection:"column",children:[r.plan.steps.map(C=>H(xe,{flexDirection:"column",marginBottom:1,children:[H(U,{children:[C.index,". ",C.description]}),H(U,{dimColor:!0,children:[C.riskLevel," risk \u2022 ",C.toolsNeeded.join(", ")||"no tools listed"]}),C.expectedOutput?H(U,{dimColor:!0,children:["Expected: ",C.expectedOutput]}):null]},C.index)),r.learnedRules&&r.learnedRules.length>0&&H(xe,{flexDirection:"column",children:[ae(U,{color:"blue",bold:!0,children:"Learned Rules"}),r.learnedRules.map((C,A)=>H(U,{dimColor:!0,children:["\u2022 ",C]},A))]})]})]}),H(xe,{marginTop:1,flexDirection:"column",children:[H(U,{bold:!0,children:["[2] Result ",p.result?"hide":"show"]}),ae(U,{dimColor:!0,children:o.result?"Execution produced output.":"No result captured yet."}),p.result&&ae(xe,{marginTop:1,children:ae(U,{children:o.result?an(o.result,18):"No result yet."})})]}),H(xe,{marginTop:1,flexDirection:"column",children:[H(U,{bold:!0,children:["[3] Routing ",p.routing?"hide":"show"]}),H(U,{dimColor:!0,children:[l," \u2022 ",E]}),p.routing&&H(xe,{marginTop:1,flexDirection:"column",children:[ae(U,{color:"cyan",children:"Deliver To"}),sn(o.deliverTo),ae(U,{color:"cyan",children:"Report To"}),sn(o.reportTo),d.length>0&&H(xe,{marginTop:1,flexDirection:"column",children:[ae(U,{color:"cyan",children:"Recent Delivery"}),d.map(C=>H(U,{dimColor:!0,children:[C.status," \u2022 ",ei(C)," \u2022 ",ln(C.createdAt)]},C.id))]})]})]}),H(xe,{marginTop:1,flexDirection:"column",children:[H(U,{bold:!0,children:["[4] Error ",p.error?"hide":"show"]}),ae(U,{dimColor:!0,children:o.error?"Execution returned an error condition.":"No error recorded."}),p.error&&o.error&&ae(xe,{marginTop:1,children:ae(U,{color:"red",children:an(o.error,16)})})]}),ae(xe,{marginTop:1,children:ae(U,{dimColor:!0,children:"[1] plan [2] result [3] routing [4] error [5] prompt [b] back"})})]})}function sn(e){return!e||e.length===0?ae(U,{dimColor:!0,children:" none"}):ae(xe,{flexDirection:"column",children:e.map((t,o)=>ae(U,{dimColor:!0,children:t.type==="channel"?` channel ${t.channelId.slice(0,8)}${t.chatId?` / ${t.chatId.slice(0,8)}`:""}`:` session ${t.sessionId.slice(0,8)}`},`${t.type}-${o}`))})}function an(e,t){let o=e.split(`
|
|
6
|
+
`);return o.length<=t?e:`${o.slice(0,t).join(`
|
|
7
|
+
`)}
|
|
8
|
+
\u2026`}function Qs(e,t){let o=e.replace(/\s+/g," ").trim();return o.length<=t?o:`${o.slice(0,t-1)}\u2026`}function Ys(e){return e!==void 0?`$${e.toFixed(4)}`:"\u2014"}function Js(e){if(!e)return"waiting";let t=Math.max(1,Math.round(e/1e3));if(t<60)return`${t}s`;let o=Math.floor(t/60),g=t%60;return g===0?`${o}m`:`${o}m ${g}s`}function ln(e){return new Date(e).toLocaleString()}function Zs(e,t){let o=e?.length??0,g=t?.length??0;return o===0&&g===0?"No delivery targets":`${o} output target${o===1?"":"s"} \u2022 ${g} report target${g===1?"":"s"}`}function ei(e){return e.target.type==="webhook"?e.target.webhookUrl??"webhook":e.target.type==="channel"?`channel ${e.target.channelId?.slice(0,8)??"unknown"}`:"unknown target"}import{Fragment as ni,jsx as oe,jsxs as re}from"react/jsx-runtime";var un={pending:"gray",queued:"gray",running:"yellow",paused:"yellow",completed:"green",failed:"red",cancelled:"gray",blocked:"yellow"},Mo=["all","pending","queued","running","completed","failed","cancelled","blocked"],nr=15;function No({onBack:e}){let[t,o]=vt([]),[g,n]=vt(!0),[m,d]=vt("list"),[a,i]=vt(0),[s,p]=vt("all"),[f,S]=vt(0),[b,k]=vt(0),[r,l]=vt(null),E=dn(async()=>{n(!0);try{let N=new URLSearchParams({limit:"100"});s!=="all"&&N.set("status",s);let F=await v(`/tasks?${N}`);o(F.tasks)}catch{o([])}finally{n(!1)}},[s]);oi(()=>{E()},[E]);let C=Math.max(1,Math.ceil(t.length/nr)),A=t.slice(b*nr,(b+1)*nr),X=dn(async()=>{let N=A[a];if(N)try{await v(`/tasks/${N.id}/cancel`,{method:"POST"}),l(`Cancelled: ${N.id.slice(0,8)}`),d("list"),E()}catch(F){l(`Failed: ${F instanceof Error?F.message:String(F)}`),d("list")}},[A,a,E]);if(ti((N,F)=>{if(m==="detail"){(F.escape||F.return||N==="q")&&d("list");return}if(m==="cancelling"){N==="y"?X():d("list");return}if(m==="filter"){if(F.escape){d("list");return}F.upArrow&&f>0&&S(q=>q-1),F.downArrow&&f<Mo.length-1&&S(q=>q+1),F.return&&(p(Mo[f]),k(0),i(0),d("list"));return}if(F.escape||N==="q"){e();return}if(F.upArrow&&a>0&&i(q=>q-1),F.downArrow&&a<A.length-1&&i(q=>q+1),F.return&&A[a]&&d("detail"),N==="x"&&A[a]){let q=A[a];["running","pending","queued","paused"].includes(q.status)?(d("cancelling"),l(null)):l(`Cannot cancel task in status: ${q.status}`)}N==="f"&&(S(Mo.indexOf(s)),d("filter")),N==="r"&&E(),(F.pageDown||N==="n")&&b<C-1&&(k(q=>q+1),i(0)),(F.pageUp||N==="p")&&b>0&&(k(q=>q-1),i(0))}),g)return oe(K,{dimColor:!0,children:"Loading tasks..."});if(m==="filter")return re(be,{flexDirection:"column",children:[oe(K,{bold:!0,children:"Filter by status:"}),Mo.map((N,F)=>oe(be,{children:re(K,{color:F===f?"cyan":"white",children:[F===f?"> ":" ",N,N===s?" (current)":""]})},N)),oe(K,{dimColor:!0,children:"Enter: select Esc: cancel"})]});if(m==="detail"&&A[a])return oe(cn,{taskId:A[a].id,onBack:()=>d("list")});if(m==="cancelling"&&A[a])return re(be,{flexDirection:"column",children:[re(K,{color:"red",children:['Cancel task "',A[a].id.slice(0,8),'"? (y/n)']}),r&&oe(K,{color:"red",children:r})]});let Q=A[a]??null;return re(be,{flexDirection:"column",children:[re(be,{children:[re(K,{bold:!0,children:["Tasks (",t.length,")"]}),s!=="all"&&re(K,{dimColor:!0,children:[" [filter: ",s,"]"]}),re(K,{dimColor:!0,children:[" \u2022 Page ",b+1,"/",C]})]}),r&&oe(K,{color:r.startsWith("Failed")||r.startsWith("Cannot")?"red":"green",children:r}),t.length===0?re(K,{dimColor:!0,children:["No tasks found",s!=="all"?` with status "${s}"`:"","."]}):re(be,{marginTop:1,flexDirection:"row",gap:2,children:[oe(be,{flexDirection:"column",flexGrow:3,children:A.map((N,F)=>{let q=F===a,I=un[N.status]??"white";return re(be,{flexDirection:"column",marginBottom:1,children:[re(be,{children:[oe(K,{color:q?"cyan":"gray",bold:q,children:q?"\u276F ":" "}),oe(K,{color:I,bold:!0,children:N.status.toUpperCase()}),oe(K,{dimColor:!0,children:` ${N.id.slice(0,8)}`})]}),oe(be,{paddingLeft:2,children:oe(K,{color:q?"white":void 0,children:$o(N.prompt,q?72:56)})}),oe(be,{paddingLeft:2,children:re(K,{dimColor:!0,children:[fn(N.createdAt)," \u2022 ",mn(N)," \u2022 ",gn(N.costUsd)]})})]},N.id)})}),oe(be,{flexDirection:"column",flexGrow:2,borderStyle:"round",borderDimColor:!0,paddingX:1,children:Q?re(ni,{children:[oe(K,{bold:!0,children:"Preview"}),re(be,{marginTop:1,children:[oe(K,{color:un[Q.status]??"white",bold:!0,children:Q.status.toUpperCase()}),oe(K,{dimColor:!0,children:` ${Q.id.slice(0,8)}`})]}),oe(K,{children:$o(Q.prompt,220)}),re(be,{marginTop:1,flexDirection:"column",children:[re(K,{dimColor:!0,children:["Role: ",Q.roleId??Q.agentId??"\u2014"]}),re(K,{dimColor:!0,children:["Created: ",fn(Q.createdAt)]}),re(K,{dimColor:!0,children:["Duration: ",mn(Q)]}),re(K,{dimColor:!0,children:["Cost: ",gn(Q.costUsd)]}),re(K,{dimColor:!0,children:["Turns: ",Q.numTurns??"\u2014"]})]}),Q.error?re(be,{marginTop:1,flexDirection:"column",children:[oe(K,{color:"red",bold:!0,children:"Error"}),oe(K,{color:"red",children:$o(Q.error,180)})]}):Q.result?re(be,{marginTop:1,flexDirection:"column",children:[oe(K,{color:"green",bold:!0,children:"Latest Result"}),oe(K,{children:$o(Q.result,180)})]}):null,oe(be,{marginTop:1,children:oe(K,{dimColor:!0,children:"Enter opens full detail"})})]}):oe(K,{dimColor:!0,children:"Select a task to inspect it."})})]})]})}function ri(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}function $o(e,t){return ri(e.replace(/\s+/g," ").trim(),t)}function mn(e){let t=e.totalDurationMs??(e.startedAt?Date.now()-e.startedAt:void 0);if(!t)return"waiting";let o=Math.max(1,Math.round(t/1e3));if(o<60)return`${o}s`;let g=Math.floor(o/60),n=o%60;return n===0?`${g}m`:`${g}m ${n}s`}function gn(e){return e!==void 0?`$${e.toFixed(4)}`:"no cost"}function fn(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<60)return`${t}s ago`;let o=Math.floor(t/60);if(o<60)return`${o}m ago`;let g=Math.floor(o/60);return g<24?`${g}h ago`:`${Math.floor(g/24)}d ago`}kr();import{Box as It,Text as $e,useInput as si}from"ink";import{useEffect as ii,useState as pn}from"react";import{readFileSync as ai,existsSync as li}from"fs";import{parse as ci}from"yaml";import{Fragment as ui,jsx as Ae,jsxs as Fe}from"react/jsx-runtime";function xn({onBack:e}){let[t,o]=pn(null),[g,n]=pn(null);return si((m,d)=>{(d.escape||m==="q")&&e()}),ii(()=>{try{let m=wr;if(!li(m)){n(`Config file not found: ${m}`);return}let d=ai(m,"utf-8");o(ci(d))}catch(m){n(m.message)}},[]),g?Fe(It,{flexDirection:"column",children:[Ae($e,{color:"red",children:g}),Ae($e,{dimColor:!0,children:"Press Esc to go back"})]}):t?Fe(It,{flexDirection:"column",children:[Ae($e,{bold:!0,children:"Configuration (Esc to go back)"}),Ae(It,{marginTop:1,flexDirection:"column",children:Ae(sr,{obj:t,indent:0})})]}):Ae($e,{dimColor:!0,children:"Loading config..."})}function sr({obj:e,indent:t}){let o=" ".repeat(t);return Ae(ui,{children:Object.entries(e).map(([g,n])=>Ae(di,{label:g,value:n,indent:t,parentKey:g},g))})}function di({label:e,value:t,indent:o,parentKey:g}){let n=" ".repeat(o);return Array.isArray(t)?Fe(It,{flexDirection:"column",children:[Fe($e,{children:[n,Ae($e,{color:"cyan",children:e}),":"]}),t.length===0?Fe($e,{dimColor:!0,children:[n," []"]}):t.map((m,d)=>Ae(Tn,{value:m,indent:o+1,parentKey:g,index:d},`${e}-${d}`))]}):t&&typeof t=="object"?Fe(It,{flexDirection:"column",children:[Fe($e,{children:[n,Ae($e,{color:"cyan",children:e}),":"]}),Ae(sr,{obj:t,indent:o+1})]}):Fe($e,{children:[n,Ae($e,{color:"cyan",children:e}),": ",hn(g,yn(t))]})}function Tn({value:e,indent:t,parentKey:o,index:g}){let n=" ".repeat(t);return Array.isArray(e)?Fe(It,{flexDirection:"column",children:[Fe($e,{children:[n,"- [",g,"]"]}),e.map((m,d)=>Ae(Tn,{value:m,indent:t+1,parentKey:o,index:d},`${g}-${d}`))]}):e&&typeof e=="object"?Fe(It,{flexDirection:"column",children:[Fe($e,{children:[n,"-"]}),Ae(sr,{obj:e,indent:t+1})]}):Fe($e,{children:[n,"- ",hn(o,yn(e))]})}function hn(e,t){let o=e.toLowerCase();return o.includes("key")||o.includes("token")||o.includes("secret")||o.includes("password")?!t||t.length<8?"****":t.slice(0,4)+"****":t}function yn(e){return e===null?"null":e===void 0?"undefined":typeof e=="string"?e:String(e)}import{Box as _o,Text as Xe,useInput as mi}from"ink";import{useEffect as gi,useState as ir}from"react";import{jsx as ao,jsxs as st}from"react/jsx-runtime";function bn({onBack:e}){let[t,o]=ir([]),[g,n]=ir(!0),[m,d]=ir(null);return mi((a,i)=>{(i.escape||a==="q")&&e()}),gi(()=>{v("/evolution-audit?limit=20").then(a=>{o(a),n(!1)}).catch(a=>{d(a.message),n(!1)})},[]),g?ao(Xe,{dimColor:!0,children:"Loading evolution log..."}):m?st(_o,{flexDirection:"column",children:[ao(Xe,{color:"red",children:m}),ao(Xe,{dimColor:!0,children:"Press Esc to go back"})]}):t.length===0?st(_o,{flexDirection:"column",children:[ao(Xe,{dimColor:!0,children:"No evolution records yet"}),ao(Xe,{dimColor:!0,children:"Press Esc to go back"})]}):st(_o,{flexDirection:"column",children:[st(Xe,{bold:!0,children:["Evolution Audit Log (",t.length," records) \u2014 Esc to go back"]}),t.map(a=>st(_o,{flexDirection:"column",marginTop:1,children:[st(Xe,{bold:!0,children:["[",new Date(a.timestamp).toLocaleString(),"]"]}),a.triggerTaskId&&st(Xe,{dimColor:!0,children:[" Task: ",a.triggerTaskId.slice(0,8)]}),a.diff.split(`
|
|
9
|
+
`).map((i,s)=>i.startsWith("+")?st(Xe,{color:"green",children:[" ",i]},s):i.startsWith("-")?st(Xe,{color:"red",children:[" ",i]},s):st(Xe,{dimColor:!0,children:[" ",i]},s))]},a.id))]})}import{Box as mt,Text as le,useInput as fi}from"ink";import pi from"ink-text-input";import{useEffect as xi,useState as qt}from"react";import{jsx as Ne,jsxs as ve}from"react/jsx-runtime";var Ti={pending:"gray",planning:"cyan",executing:"yellow",evaluating:"blue",replanning:"magenta",completed:"green",failed:"red",paused:"gray"};function hi(e,t=20){let o=Math.round(e*t),g=t-o;return"\u2588".repeat(o)+"\u2591".repeat(g)}function yi(e){let t=Math.max(0,Math.floor((e-Date.now())/864e5));return t===0?"< 1d":`${t}d`}function Lo({onBack:e}){let[t,o]=qt([]),[g,n]=qt(null),[m,d]=qt("list"),[a,i]=qt(""),[s,p]=qt(!1),[f,S]=qt(null);fi((r,l)=>{if(m==="create"){l.escape&&(d("list"),i(""),S(null));return}(l.escape||r==="q")&&e(),r==="c"&&(d("create"),S(null)),r==="r"&&b()});let b=()=>{v("/goals?limit=20").then(({goals:r})=>o(r)).catch(r=>n(r.message))};xi(()=>{b()},[]);let k=async r=>{if(r.trim()){p(!0),S(null);try{let l=await v("/goals",{method:"POST",body:{input:r.trim()}});S(`Goal created: ${l.goal.name}`),i(""),d("list"),b()}catch(l){S(`Failed: ${l instanceof Error?l.message:String(l)}`)}finally{p(!1)}}};return g?ve(mt,{flexDirection:"column",children:[ve(le,{color:"red",children:["Failed to load goals: ",g]}),Ne(le,{dimColor:!0,children:"Press Esc or q to return"})]}):m==="create"?ve(mt,{flexDirection:"column",children:[Ne(le,{bold:!0,children:"Create Goal"}),Ne(le,{dimColor:!0,children:"Describe your SMART goal in natural language:"}),ve(mt,{marginTop:1,children:[Ne(le,{color:"cyan",children:"> "}),Ne(pi,{value:a,onChange:i,onSubmit:k})]}),s&&Ne(le,{color:"yellow",children:"Creating goal..."}),f&&Ne(le,{color:f.startsWith("Failed")?"red":"green",children:f}),Ne(le,{dimColor:!0,children:"Press Esc to cancel"})]}):ve(mt,{flexDirection:"column",children:[ve(le,{bold:!0,children:["Goal Dashboard (",t.length,")"]}),t.length===0?Ne(le,{dimColor:!0,children:"No goals found. Press c to create one."}):Ne(mt,{marginTop:1,flexDirection:"column",children:t.map(r=>{let l=r.targetValue>0?r.currentValue/r.targetValue:0,E=Ti[r.status]??"white";return ve(mt,{marginBottom:1,flexDirection:"column",children:[ve(mt,{children:[Ne(le,{bold:!0,color:E,children:r.name}),ve(le,{dimColor:!0,children:[" (",r.role,")"]}),Ne(le,{dimColor:!0,children:" \u2014 "}),Ne(le,{color:E,children:r.status})]}),ve(mt,{children:[ve(le,{dimColor:!0,children:[" ",hi(l)," "]}),ve(le,{color:l>=1?"green":"white",children:[Math.round(l*100),"%"]}),ve(le,{dimColor:!0,children:[" (",r.currentValue,"/",r.targetValue," ",r.metricType,")"]})]}),ve(mt,{children:[ve(le,{dimColor:!0,children:[" \u23F0 ",yi(r.deadline)," left"]}),ve(le,{dimColor:!0,children:[" | \u{1F4B0} $",r.budgetUsd]}),ve(le,{dimColor:!0,children:[" | ID: ",r.id.slice(0,8)]})]})]},r.id)})}),Ne(le,{dimColor:!0,children:"c:create r:refresh Esc/q:back"})]})}import{Box as Vt,Text as We,useInput as bi}from"ink";import{useEffect as vi,useState as vn}from"react";import{jsx as ft,jsxs as gt}from"react/jsx-runtime";function Ci(e,t,o=15){let g=e/(e+t),n=Math.round(g*o);return"\u2593".repeat(n)+"\u2591".repeat(o-n)}function Cn({onBack:e}){let[t,o]=vn([]),[g,n]=vn(null);if(bi((d,a)=>{(a.escape||d==="q")&&e()}),vi(()=>{v("/strategies?limit=50").then(d=>o(d.strategies??[])).catch(d=>n(d.message))},[]),g)return gt(Vt,{flexDirection:"column",children:[gt(We,{color:"red",children:["Failed to load strategies: ",g]}),ft(We,{dimColor:!0,children:"Press Esc or q to return"})]});if(t.length===0)return gt(Vt,{flexDirection:"column",children:[ft(We,{dimColor:!0,children:"No strategies yet. Strategies are created when goals are executed."}),ft(We,{dimColor:!0,children:"Press Esc or q to return"})]});let m=new Map;for(let d of t){let a=`${d.role}/${d.taskType}`,i=m.get(a)??[];i.push(d),m.set(a,i)}return gt(Vt,{flexDirection:"column",children:[ft(We,{bold:!0,children:"Strategy Lab"}),ft(We,{dimColor:!0,children:"Thompson Sampling populations \u2014 higher bar = higher selection probability"}),ft(Vt,{marginTop:1,flexDirection:"column",children:Array.from(m.entries()).map(([d,a])=>gt(Vt,{marginBottom:1,flexDirection:"column",children:[ft(We,{bold:!0,color:"cyan",children:d}),a.sort((i,s)=>{let p=i.alpha/(i.alpha+i.beta);return s.alpha/(s.alpha+s.beta)-p}).map(i=>{let s=i.alpha/(i.alpha+i.beta);return gt(Vt,{children:[ft(We,{dimColor:!0,children:" "}),gt(We,{children:[Ci(i.alpha,i.beta)," "]}),gt(We,{color:s>.6?"green":s>.4?"yellow":"red",children:[(s*100).toFixed(0),"%"]}),gt(We,{dimColor:!0,children:[" ",i.name," (\u03B1=",i.alpha.toFixed(1)," \u03B2=",i.beta.toFixed(1)," trials=",i.totalTrials,")"]})]},i.id)})]},d))}),ft(We,{dimColor:!0,children:"Press Esc or q to return"})]})}import{Box as Te,Text as W,useInput as Ii}from"ink";import ar from"ink-text-input";import{useEffect as Ei,useState as He,useCallback as Ct}from"react";import{CronExpressionParser as Ai}from"cron-parser";import{useState as Si,useEffect as wi,useCallback as Sn,useRef as ki}from"react";var Bi=3e3;function Ge(){let[e,t]=Si(null),o=ki(null),g=Sn(()=>{o.current&&(clearTimeout(o.current),o.current=null),t(null)},[]),n=Sn((m,d)=>{o.current&&(clearTimeout(o.current),o.current=null),t({text:m,type:d}),d==="success"&&(o.current=setTimeout(()=>{t(null),o.current=null},Bi))},[]);return wi(()=>()=>{o.current&&clearTimeout(o.current)},[]),{message:e,setMessage:n,clearMessage:g}}import{Fragment as Ri,jsx as ee,jsxs as Y}from"react/jsx-runtime";var lr=["manual","cron","once","template_complete"],wn=["cron","once","template_complete"],Oo={name:"",triggerType:"manual",cron:"",targetTemplateId:"",stepPrompt:""};function Pi(e){try{return Ai.parse(e).next().toDate().toLocaleString()}catch{return"invalid"}}function Fo({onBack:e}){let[t,o]=He([]),[g,n]=He(!0),[m,d]=He(0),[a,i]=He("list"),[s,p]=He({...Oo}),[f,S]=He("name"),[b,k]=He(null),{message:r,setMessage:l,clearMessage:E}=Ge(),[C,A]=He(!1),[X,Q]=He(!1),[N,F]=He({}),[q,I]=He(null),[Z,se]=He(!1),ie=Ct(()=>{n(!0),v("/task-templates").then(({templates:x})=>{o(x),new Set(x.flatMap(R=>R.steps?.map(j=>j.roleId).filter(Boolean)??[])).size>0?v("/roles").then(({roles:R})=>{if(!Array.isArray(R)){F({});return}F(Object.fromEntries(R.map(j=>[j.id,j.name])))}).catch(()=>F({})):F({}),n(!1)}).catch(()=>n(!1))},[]);Ei(()=>{ie()},[ie]);let et=a==="create"||a==="edit",De=Ct(async()=>{let x=t[m];if(!(!x||C)){A(!0),l(`Triggering ${x.name}...`,"loading");try{let w=await v(`/task-templates/${x.id}/run`,{method:"POST"});l(`Triggered: ${x.name} (${w.executionId})`,"success")}catch(w){l(`Trigger failed: ${w instanceof Error?w.message:String(w)}`,"error")}finally{A(!1)}}},[t,m,C,l]),pe=Ct(async()=>{let x=t[m];if(!x||X)return;if(!wn.includes(x.trigger?.type??"manual")){l("Toggle not applicable for manual triggers","error");return}let w=!x.enabled;Q(!0),l(`${x.name} \u2192 ${w?"enabling":"disabling"}...`,"loading");try{await v(`/task-templates/${x.id}`,{method:"PATCH",body:{enabled:w}}),o(R=>R.map(j=>j.id===x.id?{...j,enabled:w}:j)),l(`${x.name} ${w?"enabled":"disabled"}`,"success")}catch(R){l(`Toggle failed: ${R instanceof Error?R.message:String(R)}`,"error")}finally{Q(!1)}},[t,m,X,l]),ke=Ct(async()=>{if(Z)return;let x=t[m];if(x){se(!0);try{let w=await v(`/task-templates/${x.id}/dependents`,{method:"GET"});I({templateId:x.id,templateName:x.name,executionCount:w.dependents.executionCount,taskCount:w.dependents.taskCount}),w.dependents.taskCount===0&&w.dependents.executionCount===0?l(`Delete "${x.name}"? Press d to confirm, Esc to cancel.`,"loading"):l(`"${x.name}" has ${w.dependents.executionCount} template execution${w.dependents.executionCount===1?"":"s"}, ${w.dependents.taskCount} task${w.dependents.taskCount===1?"":"s"}. [d] template only (keep tasks) | [D] template + tasks | [Esc] cancel.`,"loading")}catch(w){l(`Failed to inspect dependents: ${w instanceof Error?w.message:String(w)}`,"error")}finally{se(!1)}}},[t,m,l,Z]),Be=Ct(async x=>{let w=q;if(w){I(null);try{let R=await v(`/task-templates/${w.templateId}?mode=${x}`,{method:"DELETE"}),j=[];R.deletedCounts.templateExecutions>0&&j.push(`${R.deletedCounts.templateExecutions} template exec`),R.deletedCounts.tasks>0&&j.push(`${R.deletedCounts.tasks} task${R.deletedCounts.tasks===1?"":"s"}`);let ce=j.length?` (+${j.join(", ")})`:"";l(`Deleted: ${w.templateName}${ce}`,"success"),ie(),d(me=>Math.max(0,Math.min(me,t.length-2)))}catch(R){l(`Delete failed: ${R instanceof Error?R.message:String(R)}`,"error")}}},[q,ie,l,t.length]),yt=Ct(()=>{I(null),E()},[E]),wt=Ct(()=>{let x=t[m];x&&(k(x.id),p({name:x.name,triggerType:x.trigger?.type??"manual",cron:x.trigger?.cron??"",targetTemplateId:x.trigger?.type==="template_complete"?x.trigger.event?.split(":")[1]??"":"",stepPrompt:x.steps?.[0]?.prompt??""}),S("name"),i("edit"))},[t,m]),L=Ct(async()=>{let x={name:s.name,trigger:{type:s.triggerType,...s.triggerType==="cron"?{cron:s.cron}:{},...s.triggerType==="template_complete"&&s.targetTemplateId?{event:`template_complete:${s.targetTemplateId}`}:{}},steps:[{id:"step-1",prompt:s.stepPrompt}],enabled:!0};try{a==="create"?(await v("/task-templates",{method:"POST",body:x}),l(`Created: ${s.name}`,"success")):a==="edit"&&b&&(await v(`/task-templates/${b}`,{method:"PATCH",body:x}),l(`Updated: ${s.name}`,"success"))}catch(w){l(`Save failed: ${w instanceof Error?w.message:String(w)}`,"error")}i("list"),p({...Oo}),k(null),ie()},[s,a,b,ie]);return Ii((x,w)=>{if(et){if(w.escape){i("list"),p({...Oo}),k(null);return}if(w.return){let R=["name","triggerType","cron","stepPrompt"],ce=s.triggerType==="template_complete"?["name","triggerType","targetTemplateId","stepPrompt"]:R.filter(M=>M!=="targetTemplateId"),me=ce.indexOf(f);if(me<ce.length-1){let M=me+1;if(ce[M]==="cron"&&s.triggerType!=="cron"&&M++,M<ce.length){S(ce[M]);return}}L();return}if(w.tab&&f==="triggerType"){p(R=>{let j=lr.indexOf(R.triggerType);return{...R,triggerType:lr[(j+1)%lr.length]}});return}if(w.tab&&f==="targetTemplateId"){p(R=>{let j=t.filter(M=>M.id!==b),ce=j.findIndex(M=>M.id===R.targetTemplateId),me=j[(ce+1)%j.length];return{...R,targetTemplateId:me?.id??""}});return}return}if(q){if(w.escape){yt();return}if(x==="D"&&w.shift){Be("with_tasks");return}if(x==="d"&&!w.shift){Be("template_only");return}return}if(w.escape||x==="q"){e();return}if(w.upArrow){d(R=>Math.max(0,R-1));return}if(w.downArrow){d(R=>Math.min(t.length-1,R+1));return}if(x==="t"){De();return}if(x==="d"&&!w.shift){ke();return}if(x==="e"){wt();return}if(x==="c"){p({...Oo}),S("name"),i("create");return}if(x==="s"||x===" "){pe();return}x==="r"&&(ie(),E())}),g?ee(W,{dimColor:!0,children:"Loading templates..."}):et?Y(Te,{flexDirection:"column",children:[Y(W,{bold:!0,children:[a==="create"?"Create Template":"Edit Template"," (Esc to cancel)"]}),Y(Te,{marginTop:1,flexDirection:"column",children:[Y(Te,{children:[Y(W,{bold:f==="name",color:f==="name"?"cyan":void 0,children:["Name:"," "]}),f==="name"?ee(ar,{value:s.name,onChange:x=>p(w=>({...w,name:x})),placeholder:"template name"}):ee(W,{children:s.name||"(empty)"})]}),Y(Te,{children:[Y(W,{bold:f==="triggerType",color:f==="triggerType"?"cyan":void 0,children:["Trigger:"," "]}),ee(W,{children:s.triggerType}),f==="triggerType"&&ee(W,{dimColor:!0,children:" (Tab to cycle, Enter to continue)"})]}),s.triggerType==="cron"&&Y(Te,{children:[Y(W,{bold:f==="cron",color:f==="cron"?"cyan":void 0,children:["Cron:"," "]}),f==="cron"?ee(ar,{value:s.cron,onChange:x=>p(w=>({...w,cron:x})),placeholder:"*/5 * * * *"}):ee(W,{children:s.cron||"(empty)"})]}),s.triggerType==="template_complete"&&Y(Te,{children:[Y(W,{bold:f==="targetTemplateId",color:f==="targetTemplateId"?"cyan":void 0,children:["Target:"," "]}),ee(W,{children:(()=>{let x=t.find(w=>w.id===s.targetTemplateId);return x?x.name:s.targetTemplateId?`(id: ${s.targetTemplateId.slice(0,8)})`:"(Tab to select)"})()}),f==="targetTemplateId"&&ee(W,{dimColor:!0,children:" (Tab to cycle)"})]}),Y(Te,{children:[Y(W,{bold:f==="stepPrompt",color:f==="stepPrompt"?"cyan":void 0,children:["Step Prompt:"," "]}),f==="stepPrompt"?ee(ar,{value:s.stepPrompt,onChange:x=>p(w=>({...w,stepPrompt:x})),placeholder:"What should this template do?"}):ee(W,{children:s.stepPrompt||"(empty)"})]})]}),ee(Te,{marginTop:1,children:ee(W,{dimColor:!0,children:"Enter: next field / submit | Esc: cancel"})})]}):Y(Te,{flexDirection:"column",children:[Y(W,{bold:!0,children:["Automations (",t.length,") (Esc to go back)"]}),r&&ee(Te,{marginTop:1,children:Y(W,{color:r.type==="success"?"green":r.type==="error"?"red":"gray",children:[r.type==="success"?"\u2713 ":r.type==="error"?"\u2717 ":"\u2192 ",r.text]})}),t.length===0?ee(Te,{marginTop:1,children:ee(W,{dimColor:!0,children:"No templates found. Press c to create one."})}):ee(Te,{marginTop:1,flexDirection:"column",children:t.map((x,w)=>{let R=w===m,j=x.trigger?.type==="cron"&&x.trigger?.cron?Pi(x.trigger.cron):"",ce=new Set(x.steps?.filter(M=>M.roleId).map(M=>M.roleId)),me=x.steps?.length>1?`${x.steps.length} steps${ce.size>0?` / ${ce.size} roles`:""}`:`${x.steps?.length??0} step`;return Y(Te,{flexDirection:"column",children:[Y(Te,{children:[ee(W,{color:R?"cyan":void 0,bold:R,children:R?"> ":" "}),ee(W,{color:R?"cyan":void 0,bold:R,children:lo(x.name,24)}),ee(W,{dimColor:!0,children:lo(x.trigger?.type,10)}),wn.includes(x.trigger?.type??"manual")?ee(W,{color:x.enabled?"green":"gray",children:lo(x.enabled?"on":"off",6)}):ee(W,{dimColor:!0,children:lo("\u2014",6)}),ee(W,{dimColor:!0,children:lo(me,18)}),j&&Y(W,{dimColor:!0,children:["next: ",j]})]}),R&&Y(Ri,{children:[x.config?.delivery&&ee(Te,{marginLeft:4,marginTop:0,children:Y(W,{dimColor:!0,children:[" Delivery: ",x.config.delivery.mode,x.config.delivery.mode==="primary-artifact"&&x.config.delivery.primaryArtifact&&` (${x.config.delivery.primaryArtifact.stepId}/${x.config.delivery.primaryArtifact.key})`]})}),x.steps&&x.steps.length>1&&ee(Te,{flexDirection:"column",marginLeft:4,marginTop:0,children:x.steps.map((M,Dt)=>Y(Te,{children:[Y(W,{dimColor:!0,children:[" ",Dt+1,". "]}),ee(W,{dimColor:!0,children:M.id}),M.roleId&&Y(W,{color:"yellow",children:[" @",N[M.roleId]??M.roleId]}),M.dependsOn&&M.dependsOn.length>0&&Y(W,{dimColor:!0,children:[" (after: ",M.dependsOn.join(", "),")"]}),M.consumesFrom&&M.consumesFrom.length>0&&Y(W,{dimColor:!0,children:[" [consumes: ",M.consumesFrom.join(", "),"]"]}),M.consumesFromOptional&&M.consumesFromOptional.length>0&&Y(W,{dimColor:!0,children:[" [consumes?: ",M.consumesFromOptional.join(", "),"]"]}),M.persona&&Y(W,{dimColor:!0,children:[" [speak as: ",M.persona.speakAs,M.persona.voiceConstraints?` / ${M.persona.voiceConstraints}`:"","]"]}),M.outputContract&&Y(W,{dimColor:!0,children:[" [",M.outputContract.lengthTarget?`${M.outputContract.lengthTarget.min}-${M.outputContract.lengthTarget.max} ${M.outputContract.lengthTarget.unit}`:"",M.outputContract.format?` ${M.outputContract.format}`:"",M.outputContract.mustReferenceArtifacts?" ref-artifacts":"","]"]}),M.config&&Y(W,{dimColor:!0,children:[" ","[",[M.config.timeout!==void 0?`timeout:${M.config.timeout}s`:"",M.config.maxTurns!==void 0?`turns:${M.config.maxTurns}`:""].filter(Boolean).join(", "),"]"]})]},M.id))})]})]},x.id)})}),ee(Te,{marginTop:1,children:ee(W,{dimColor:!0,children:"t:trigger s:toggle d:delete e:edit c:create r:refresh"})})]})}function lo(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}import{Box as St,Text as qe,useInput as Di}from"ink";import Mi from"ink-text-input";import{useEffect as $i,useState as Ut,useCallback as kn}from"react";import{jsx as Pe,jsxs as Et}from"react/jsx-runtime";function Bn({onBack:e}){let[t,o]=Ut([]),[g,n]=Ut(""),[m,d]=Ut(!0),[a,i]=Ut(!1),[s,p]=Ut(""),[f,S]=Ut(null),b=kn(()=>{d(!0),v("/webhooks").then(({webhooks:r,auth:l})=>{o(r),n(l),d(!1)}).catch(()=>d(!1))},[]);$i(()=>{b()},[b]);let k=kn(async r=>{if(r.trim())try{let l=await v(`/webhooks/${encodeURIComponent(r.trim())}`,{method:"POST"});S(`Triggered: ${l.executionId}`)}catch(l){S(`Trigger failed: ${l instanceof Error?l.message:String(l)}`)}},[]);return Di((r,l)=>{if(a){if(l.escape){i(!1),p("");return}if(l.return){k(s),i(!1),p("");return}return}if(l.escape||r==="q"){e();return}if(r==="t"){i(!0),p(""),S(null);return}r==="r"&&(b(),S(null))}),m?Pe(qe,{dimColor:!0,children:"Loading webhooks..."}):Et(St,{flexDirection:"column",children:[Et(qe,{bold:!0,children:["Webhooks (",t.length,") (Esc to go back)"]}),Et(qe,{dimColor:!0,children:["Auth: ",g]}),f&&Pe(St,{marginTop:1,children:Pe(qe,{color:"yellow",children:f})}),a&&Et(St,{marginTop:1,children:[Pe(qe,{bold:!0,color:"cyan",children:"Trigger webhook: "}),Pe(Mi,{value:s,onChange:p,placeholder:"webhook name or ID"}),Pe(qe,{dimColor:!0,children:" (Enter to trigger, Esc to cancel)"})]}),t.length===0?Pe(St,{marginTop:1,children:Pe(qe,{dimColor:!0,children:"No webhooks available. Create templates with triggers to expose webhooks."})}):Et(St,{marginTop:1,flexDirection:"column",children:[Pe(St,{children:Et(qe,{bold:!0,children:[Wt("NAME",24),Wt("DESCRIPTION",36),Wt("TRIGGER",28),"TAGS"]})}),t.map(r=>Et(St,{children:[Pe(qe,{children:Wt(r.displayName,24)}),Pe(qe,{dimColor:!0,children:Wt(Ni(r.description??"",34),36)}),Pe(qe,{dimColor:!0,children:Wt(r.trigger,28)}),Pe(qe,{dimColor:!0,children:r.tags?.join(", ")??""})]},r.name))]}),Pe(St,{marginTop:1,children:Pe(qe,{dimColor:!0,children:"t:trigger r:refresh"})})]})}function Wt(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}function Ni(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}import{Box as it,Text as ge,useInput as _i}from"ink";import Li from"ink-text-input";import{useEffect as In,useState as pt,useCallback as cr}from"react";import{jsx as fe,jsxs as Qe}from"react/jsx-runtime";function Oi(e){return e>=4?"red":e===3?"yellow":"gray"}function Fi(e){return e>=4?"HIGH":e===3?"MED ":"LOW "}function qi(e){return new Date(e).toLocaleDateString()}function An({onBack:e}){let[t,o]=pt([]),[g,n]=pt(0),[m,d]=pt([]),[a,i]=pt(!0),[s,p]=pt(!1),[f,S]=pt(""),[b,k]=pt("all"),[r,l]=pt(null),[E,C]=pt(!1),A=cr(()=>{v("/agents").then(({agents:I})=>{o(I),i(!1)}).catch(()=>i(!1))},[]);In(()=>{A()},[A]);let X=t[g],Q=cr(()=>{X&&(C(!1),v(`/memories/${X.id}`).then(({memories:I})=>{d(I),l(null)}).catch(I=>l(`Failed: ${I instanceof Error?I.message:String(I)}`)))},[X]);In(()=>{X&&Q()},[X,Q]);let N=cr(async I=>{if(!(!X||!I.trim()))try{let Z=await v("/memories/query",{method:"POST",body:{agentId:X.id,prompt:I.trim()}});d(Z.memories),C(!0),l(`Search: ${Z.count} results`)}catch(Z){l(`Search failed: ${Z instanceof Error?Z.message:String(Z)}`)}},[X]),F=s,q=m.filter(I=>b==="all"?!0:b==="high"?I.importance>3:b==="medium"?I.importance===3:I.importance<3);return _i((I,Z)=>{if(F){if(Z.escape){p(!1),S("");return}if(Z.return){N(f),p(!1),S("");return}return}if(Z.escape||I==="q"){e();return}if(I==="a"){n(se=>(se+1)%Math.max(1,t.length));return}if(Z.leftArrow){n(se=>(se-1+t.length)%Math.max(1,t.length));return}if(Z.rightArrow){n(se=>(se+1)%Math.max(1,t.length));return}if(I==="s"){p(!0),S(""),l(null);return}if(I==="h"){k(se=>se==="high"?"all":"high");return}if(I==="m"){k(se=>se==="medium"?"all":"medium");return}if(I==="l"){k(se=>se==="low"?"all":"low");return}I==="r"&&Q()}),a?fe(ge,{dimColor:!0,children:"Loading agents..."}):t.length===0?Qe(it,{flexDirection:"column",children:[fe(ge,{dimColor:!0,children:"No agents found"}),fe(ge,{dimColor:!0,children:"Press Esc to go back"})]}):Qe(it,{flexDirection:"column",children:[fe(ge,{bold:!0,children:"Memories (Esc to go back)"}),Qe(it,{marginTop:1,children:[fe(ge,{children:"Agent: "}),fe(ge,{bold:!0,color:"cyan",children:X?.name??"?"}),Qe(ge,{dimColor:!0,children:[" (",g+1,"/",t.length,") [a/arrows to switch]"]})]}),fe(it,{children:Qe(ge,{dimColor:!0,children:["Filter: ",b==="all"?"all":b," | ",E?"search results":"all memories"," (",q.length,")"]})}),r&&fe(it,{children:fe(ge,{color:"yellow",children:r})}),s&&Qe(it,{marginTop:1,children:[fe(ge,{bold:!0,color:"cyan",children:"Search: "}),fe(Li,{value:f,onChange:S,placeholder:"search query..."}),fe(ge,{dimColor:!0,children:" (Enter to search, Esc to cancel)"})]}),q.length===0?fe(it,{marginTop:1,children:Qe(ge,{dimColor:!0,children:["No memories",b!=="all"?` matching filter '${b}'`:""]})}):fe(it,{marginTop:1,flexDirection:"column",children:q.map(I=>Qe(it,{marginBottom:0,children:[Qe(ge,{color:Oi(I.importance),bold:!0,children:[Fi(I.importance)," "]}),fe(ge,{dimColor:!0,children:En(I.type??"?",12)}),fe(ge,{dimColor:!0,children:En(`\xD7${I.retrievedCount??0}`,5)}),Qe(ge,{children:[Vi(I.content,55)," "]}),fe(ge,{dimColor:!0,children:qi(I.createdAt)}),I.score!==void 0&&Qe(ge,{dimColor:!0,children:[" (",I.score.toFixed(2),")"]})]},I.id))}),fe(it,{marginTop:1,children:fe(ge,{dimColor:!0,children:"s:search h:high m:medium l:low a:agent r:refresh"})})]})}function En(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}function Vi(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}import{Box as Ye,Text as ue,useInput as Ui}from"ink";import qo from"ink-text-input";import{useState as _e,useEffect as Pn,useCallback as dr}from"react";import{jsx as Ce,jsxs as he}from"react/jsx-runtime";var Rn={Anthropic:["anthropic.apiKey","anthropic.baseUrl","anthropic.model","anthropic.defaultOpusModel","anthropic.defaultSonnetModel","anthropic.defaultHaikuModel","anthropic.smallFastModel"],Defaults:["defaults.model","defaults.effort","defaults.maxTurns","defaults.maxBudgetUsd","defaults.timeout","defaults.approvalTimeout"],Server:["server.port","server.host","server.apiKey","server.timezone"],Logging:["logging.level"],Evolution:["roles.evolution.triggerEvery","roles.evolution.reflectionThreshold"],Chat:["chat.sessionTimeoutMinutes","chat.maxSessionTurns","chat.autoTitle","chat.archiveExtractMemory"],"Execution Artifacts":["watchdog.rules.artifactCleanup.enabled","watchdog.rules.artifactCleanup.ttlDays","watchdog.rules.artifactCleanup.orphanGcMinAgeHours"]},Wi={"anthropic.apiKey":"API Key","anthropic.baseUrl":"Base URL","anthropic.model":"Model","anthropic.defaultOpusModel":"Default Opus","anthropic.defaultSonnetModel":"Default Sonnet","anthropic.defaultHaikuModel":"Default Haiku","anthropic.smallFastModel":"Small Fast","defaults.model":"Default Model","defaults.effort":"Effort","defaults.maxTurns":"Max Turns","defaults.maxBudgetUsd":"Max Budget (USD)","defaults.timeout":"Timeout (sec)","defaults.approvalTimeout":"Approval Timeout (sec)","server.port":"Port","server.host":"Host","server.apiKey":"API Key","server.timezone":"Timezone","logging.level":"Log Level","roles.evolution.triggerEvery":"Evolution Trigger Every","chat.sessionTimeoutMinutes":"Session Timeout (min)","chat.maxSessionTurns":"Max Session Turns","chat.autoTitle":"Auto Title","chat.archiveExtractMemory":"Archive Extract Memory","roles.evolution.reflectionThreshold":"Reflection Threshold","watchdog.rules.artifactCleanup.enabled":"Artifact Cleanup Enabled","watchdog.rules.artifactCleanup.ttlDays":"Artifact Retention (days)","watchdog.rules.artifactCleanup.orphanGcMinAgeHours":"Orphan GC Min Age (hours)"};function Dn({onBack:e}){let{state:t}=tt(),[o,g]=_e({}),[n,m]=_e([]),[d,a]=_e(null),[i,s]=_e("view"),[p,f]=_e(0),[S,b]=_e(""),[k,r]=_e(null),[l,E]=_e(!1),[C,A]=_e([]),[X,Q]=_e({}),[N,F]=_e(0),[q,I]=_e(""),[Z,se]=_e(""),[ie,et]=_e(""),De=Object.values(Rn).flat(),pe=dr(()=>{v("/config").then(L=>{g(L.config),m(L.mutable)}).catch(L=>a(L.message)),v("/config/env-diff").then(L=>{A(L.diffs)}).catch(()=>{}),v("/config/env").then(L=>Q(L.env??{})).catch(()=>{})},[]);Pn(()=>{pe()},[pe]),Pn(()=>{t.configVersion>0&&pe()},[t.configVersion,pe]);let ke=dr(async()=>{let L=De[p];if(L){E(!0),r(null);try{let x=S,w=o[L];if(w&&typeof w.value=="number"&&(x=Number(S),isNaN(x))){r("Invalid number"),E(!1);return}let R=await v("/config",{method:"PATCH",body:{[L]:x}});R.updated.length>0&&(r(`Updated: ${L}`),pe()),R.errors.length>0&&r(R.errors[0]),s("view")}catch(x){r(`Failed: ${x instanceof Error?x.message:String(x)}`)}finally{E(!1)}}},[De,p,S,o,pe]),Be=Object.keys(X),yt=dr(async L=>{try{await v("/config/env",{method:"PUT",body:L}),r("Env vars saved"),pe()}catch(x){r(`Failed: ${x instanceof Error?x.message:String(x)}`)}},[pe]);if(Ui((L,x)=>{if(i==="edit"){if(x.escape){s("view");return}return}if(i==="env-list"){if(x.escape){s("view");return}if(x.upArrow&&N>0&&F(w=>w-1),x.downArrow&&N<Be.length-1&&F(w=>w+1),L==="a"){I(""),s("env-add-key");return}if(L==="d"&&Be.length>0){let w=Be[N],R={...X};delete R[w],yt(R),N>=Be.length-1&&N>0&&F(j=>j-1);return}if(x.return&&Be.length>0){et(X[Be[N]]??""),s("env-edit-value");return}return}if(i==="env-add-key"){if(x.escape){s("env-list");return}return}if(i==="env-add-value"){if(x.escape){s("env-list");return}return}if(i==="env-edit-value"){if(x.escape){s("env-list");return}return}if(x.escape||L==="q"){e();return}if(x.upArrow&&p>0&&f(w=>w-1),x.downArrow&&p<De.length-1&&f(w=>w+1),x.return||L==="e"){let w=De[p],R=o[w];R&&R.mutable?(b(String(R.value??"")),s("edit"),r(null)):R&&!R.mutable&&r("This setting requires a restart to change")}L==="v"&&(F(0),s("env-list"),r(null)),L==="r"&&(pe(),r("Refreshed")),L==="s"&&C.length>0&&v("/config/sync-to-env",{method:"POST"}).then(()=>{r("Synced to .env"),A([]),pe()}),L==="l"&&C.length>0&&v("/config/load-from-env",{method:"POST"}).then(()=>{r("Loaded from .env"),pe()})}),d)return he(Ye,{flexDirection:"column",children:[he(ue,{color:"red",children:["Failed to load config: ",d]}),Ce(ue,{dimColor:!0,children:"Press Esc or q to return"})]});let wt=0;return he(Ye,{flexDirection:"column",children:[Ce(ue,{bold:!0,children:"Settings"}),k&&Ce(ue,{color:k.startsWith("Failed")||k.startsWith("This setting")?"yellow":"green",children:k}),C&&C.length>0&&he(Ye,{flexDirection:"column",marginBottom:1,children:[he(ue,{color:"yellow",children:[".env differs from DB (",C.length," key(s)): ",C.map(L=>L.envKey).join(", ")]}),Ce(ue,{dimColor:!0,children:"s:sync DB\u2192.env l:load .env\u2192DB"})]}),Ce(Ye,{marginTop:1,flexDirection:"column",children:Object.entries(Rn).map(([L,x])=>he(Ye,{marginBottom:1,flexDirection:"column",children:[Ce(ue,{bold:!0,color:"cyan",children:L}),x.map(w=>{let R=o[w],ce=wt++===p,me=n.includes(w),M=Wi[w]??w,Dt=R?String(R.value??""):"...";return i==="edit"&&ce?he(Ye,{children:[he(ue,{color:"cyan",children:["> ",M,": "]}),Ce(qo,{value:S,onChange:b,onSubmit:()=>{ke()}}),l&&Ce(ue,{color:"yellow",children:" saving..."})]},w):he(Ye,{children:[he(ue,{color:ce?"cyan":"white",children:[ce?"> ":" ",me?" ":"\u{1F512} ",M,": "," "]}),Ce(ue,{color:me?"white":"gray",children:Dt}),!me&&Ce(ue,{dimColor:!0,children:" (restart required)"})]},w)})]},L))}),Ce(ue,{dimColor:!0,children:"Enter/e:edit v:env vars r:refresh Esc/q:back"}),i.startsWith("env")&&he(Ye,{flexDirection:"column",marginTop:1,children:[he(ue,{bold:!0,color:"cyan",children:["Environment Variables (",Be.length,")"]}),Be.length===0&&i==="env-list"&&Ce(ue,{dimColor:!0,children:" No env vars. Press a to add."}),Be.map((L,x)=>{let w=x===N;return i==="env-edit-value"&&w?he(Ye,{children:[he(ue,{color:"cyan",children:["> ",L," = "]}),Ce(qo,{value:ie,onChange:et,onSubmit:()=>{yt({...X,[L]:ie}),s("env-list")}})]},L):he(ue,{color:w&&i==="env-list"?"cyan":"white",children:[w&&i==="env-list"?"> ":" ",L," = ",X[L]]},L)}),i==="env-add-key"&&he(Ye,{children:[Ce(ue,{color:"green",children:" New key: "}),Ce(qo,{value:q,onChange:I,onSubmit:()=>{q.trim()&&(se(""),s("env-add-value"))}})]}),i==="env-add-value"&&he(Ye,{children:[he(ue,{color:"green",children:[" ",q," = "]}),Ce(qo,{value:Z,onChange:se,onSubmit:()=>{yt({...X,[q.trim()]:Z}),s("env-list")}})]}),Ce(ue,{dimColor:!0,children:"a:add Enter:edit d:delete Esc:back"})]})]})}import{Box as At,Text as Re,useInput as Gi}from"ink";import{useEffect as Hi,useState as ur,useCallback as ji}from"react";import{jsx as we,jsxs as Ht}from"react/jsx-runtime";function Mn({onBack:e}){let[t,o]=ur([]),[g,n]=ur(!0),[m,d]=ur(0),{message:a,setMessage:i,clearMessage:s}=Ge(),p=ji(()=>{n(!0),v("/plugins").then(({plugins:f})=>{o(f),n(!1)}).catch(()=>n(!1))},[]);return Hi(()=>{p()},[p]),Gi((f,S)=>{if(S.escape||f==="q"){e();return}if(S.upArrow){d(b=>Math.max(0,b-1));return}if(S.downArrow){d(b=>Math.min(t.length-1,b+1));return}f==="r"&&(p(),s())}),g?we(Re,{dimColor:!0,children:"Loading plugins..."}):Ht(At,{flexDirection:"column",children:[Ht(Re,{bold:!0,children:["Plugins (",t.length,") (Esc to go back)"]}),a&&we(At,{marginTop:1,children:Ht(Re,{color:a.type==="success"?"green":a.type==="error"?"red":"gray",children:[a.type==="success"?"\u2713 ":a.type==="error"?"\u2717 ":"\u2192 ",a.text]})}),t.length===0?we(At,{marginTop:1,children:we(Re,{dimColor:!0,children:"No plugins installed."})}):Ht(At,{marginTop:1,flexDirection:"column",children:[Ht(At,{children:[we(Re,{dimColor:!0,children:" "}),we(Re,{dimColor:!0,children:Gt("Name",24)}),we(Re,{dimColor:!0,children:Gt("Scope",8)}),we(Re,{dimColor:!0,children:Gt("User",6)}),we(Re,{dimColor:!0,children:"Path"})]}),t.map((f,S)=>{let b=S===m,k=f.id.split("@")[0];return Ht(At,{children:[we(Re,{color:b?"cyan":void 0,bold:b,children:b?"> ":" "}),we(Re,{color:b?"cyan":void 0,bold:b,children:Gt(k,24)}),we(Re,{color:b?"cyan":void 0,bold:b,children:Gt(f.scope,8)}),we(Re,{color:f.globalEnabled?"green":"gray",children:Gt(f.globalEnabled?"on":"off",6)}),we(Re,{dimColor:!0,children:f.installPath})]},f.id)})]}),we(At,{marginTop:1,children:we(Re,{dimColor:!0,children:"r:refresh"})})]})}function Gt(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}import{Box as mr,Text as gr,useInput as Ki}from"ink";import{useState as zi}from"react";import{jsx as Pt,jsxs as $n}from"react/jsx-runtime";var Xi=[{key:"1",id:"tasks",label:"Tasks"},{key:"2",id:"automations",label:"Automations"},{key:"3",id:"goals",label:"Goals"}];function Nn({onBack:e}){let[t,o]=zi("tasks");return Ki((g,n)=>{if(n.escape||g==="q"){e();return}if(g==="1"){o("tasks");return}if(g==="2"){o("automations");return}if(g==="3"){o("goals");return}}),$n(mr,{flexDirection:"column",children:[Pt(gr,{bold:!0,children:"Work Surface"}),Pt(gr,{dimColor:!0,children:"Browse tasks, automations, and goals without dropping back into chat mode."}),Pt(mr,{gap:3,marginBottom:1,marginTop:1,children:Xi.map(g=>{let n=t===g.id;return Pt(mr,{children:$n(gr,{color:n?"cyan":"gray",bold:n,children:[n?"\u25CF":"\u25CB"," ",g.key,". ",g.label]})},g.id)})}),t==="tasks"&&Pt(No,{onBack:e}),t==="automations"&&Pt(Fo,{onBack:e}),t==="goals"&&Pt(Lo,{onBack:e})]})}import{Box as ne,Text as J,useInput as Qi}from"ink";import{useEffect as Yi,useState as co}from"react";import{jsx as V,jsxs as Se}from"react/jsx-runtime";var _n={connected:"green",connecting:"yellow",disconnected:"gray",error:"red"};function Ln({onBack:e}){let[t,o]=co([]),[g,n]=co(!0),[m,d]=co(0),[a,i]=co(null),[s,p]=co("");Yi(()=>{f()},[]);async function f(){try{let k=await v("/channels");o(k.channels)}catch{}n(!1)}async function S(k){if(t.find(l=>l.id===k)?.platform==="wechat")try{p("Starting WeChat QR login...");let l=await v(`/channels/${k}/wechat/qr-start`,{method:"POST"});if(l.qrcodeUrl){p(`Scan QR: ${l.qrcodeUrl}
|
|
10
|
+
Waiting for scan...`);let E=await v(`/channels/${k}/wechat/qr-wait`,{method:"POST",body:{sessionKey:l.sessionKey,timeoutMs:12e4}});p(E.message)}else p(l.message);f()}catch{p("WeChat connect failed")}else try{await v(`/channels/${k}/connect`,{method:"POST"}),p("Connecting..."),f()}catch{p("Connect failed")}}async function b(k){try{await v(`/channels/${k}/disconnect`,{method:"POST"}),p("Disconnected"),f()}catch{p("Disconnect failed")}}return Qi((k,r)=>{if(a){if(r.escape||k==="q"){i(null);return}if(k==="c"){S(a.id);return}if(k==="d"){b(a.id);return}return}if(r.escape){e();return}if(r.upArrow){d(l=>Math.max(0,l-1));return}if(r.downArrow){d(l=>Math.min(t.length-1,l+1));return}if(r.return&&t[m]){i(t[m]),p("");return}}),g?V(ne,{flexDirection:"column",children:V(J,{dimColor:!0,children:"Loading channels..."})}):a?Se(ne,{flexDirection:"column",children:[Se(ne,{marginBottom:1,children:[Se(J,{bold:!0,children:["Channel: ",a.name]}),V(J,{dimColor:!0,children:" (Esc to go back)"})]}),Se(ne,{flexDirection:"column",gap:0,children:[Se(J,{children:["ID: ",a.id]}),Se(J,{children:["Platform: ",a.platform]}),Se(J,{children:["Status: ",V(J,{color:_n[a.status]??"white",children:a.status})]}),Se(J,{children:["Enabled: ",a.enabled?"yes":"no"]}),Se(J,{children:["Messages: ",a.messageCount]}),Se(J,{children:["Config: ",JSON.stringify(a.config)]})]}),V(ne,{marginTop:1,children:V(J,{dimColor:!0,children:"[c] Connect [d] Disconnect [Esc] Back"})}),s&&V(J,{color:"yellow",children:s})]}):Se(ne,{flexDirection:"column",children:[Se(ne,{marginBottom:1,children:[V(J,{bold:!0,children:"Channels"}),Se(J,{dimColor:!0,children:[" (",t.length," total) "]}),V(J,{dimColor:!0,children:"Arrow keys to select, Enter for detail, Esc to return"})]}),t.length===0?V(J,{dimColor:!0,children:"No channels configured. Add channels via API or config."}):Se(ne,{flexDirection:"column",children:[Se(ne,{children:[V(ne,{width:3,children:V(J,{dimColor:!0,children:" "})}),V(ne,{width:12,children:V(J,{bold:!0,dimColor:!0,children:"ID"})}),V(ne,{width:16,children:V(J,{bold:!0,dimColor:!0,children:"Name"})}),V(ne,{width:12,children:V(J,{bold:!0,dimColor:!0,children:"Platform"})}),V(ne,{width:14,children:V(J,{bold:!0,dimColor:!0,children:"Status"})}),V(ne,{width:10,children:V(J,{bold:!0,dimColor:!0,children:"Enabled"})}),V(ne,{width:10,children:V(J,{bold:!0,dimColor:!0,children:"Messages"})})]}),t.map((k,r)=>Se(ne,{children:[V(ne,{width:3,children:V(J,{children:r===m?">":" "})}),V(ne,{width:12,children:V(J,{inverse:r===m,children:k.id.slice(0,8)})}),V(ne,{width:16,children:V(J,{children:k.name})}),V(ne,{width:12,children:V(J,{children:k.platform})}),V(ne,{width:14,children:Se(J,{color:_n[k.status]??"white",children:[k.status==="connected"?"\u25CF":k.status==="error"?"\u2717":"\u25CB"," ",k.status]})}),V(ne,{width:10,children:V(J,{color:k.enabled?"green":"gray",children:k.enabled?"yes":"no"})}),V(ne,{width:10,children:V(J,{children:k.messageCount})})]},k.id))]})]})}import{Box as jt,Text as Ze,useInput as ea}from"ink";import{useEffect as ta,useState as uo,useCallback as oa}from"react";import{Box as D,Text as T,useInput as Ji}from"ink";import Je from"ink-text-input";import{useEffect as On,useState as G,useCallback as at}from"react";kr();import{Fragment as Vo,jsx as y,jsxs as B}from"react/jsx-runtime";var Zi=/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/;function Fn({roleId:e,onBack:t}){let[o,g]=G(null),[n,m]=G([]),[d,a]=G(!0),[i,s]=G("view"),[p,f]=G(""),[S,b]=G(0),[k,r]=G(""),[l,E]=G([]),[C,A]=G(0),[X,Q]=G(new Set),[N,F]=G("inline"),[q,I]=G(""),[Z,se]=G(""),[ie,et]=G(""),[De,pe]=G([]),[ke,Be]=G(new Set),[yt,wt]=G(0),[L,x]=G("default"),[w,R]=G(""),[j,ce]=G(""),[me,M]=G("mode"),[Dt,Gn]=G([]),[Mt,Hn]=G(null),[jo,jn]=G([]),[$t,Ko]=G([]),[xr,zo]=G(""),[kt,fo]=G(0),[po,Tr]=G(""),[hr,yr]=G(""),[br,vr]=G(""),[xo,Xo]=G(0),[Yt,Cr]=G([]),[To,Qo]=G(0),[ho,yo]=G(!1),[Nt,Kn]=G(""),{message:$,setMessage:_}=Ge(),te=at(()=>{a(!0),v(`/roles/${e}`).then(({role:c,projectPlugins:h,workspacePath:u})=>{g(c),m(h??[]),Kn(u??""),f(c.cagPrompt??""),Q(new Set(c.allowedTools??[])),F(c.executionMode??"inline"),I(c.model??""),se(c.effortTier??""),et(c.maxBudgetUsd!=null?String(c.maxBudgetUsd):""),a(!1)}).catch(()=>a(!1))},[e]);On(()=>{te(),v("/config").then(c=>{let h=c.config["defaults.deniedReadPaths"]?.value;Array.isArray(h)&&Gn(h),Hn(c.sandbox),jn(c.osCapabilities?.registry??[])}).catch(()=>{})},[te]),On(()=>{F(o?.executionMode??"inline"),I(o?.model??""),se(o?.effortTier??""),et(o?.maxBudgetUsd!=null?String(o?.maxBudgetUsd):""),x(o?.permissionMode??"default"),R((o?.allowedBashPatterns??[]).join(", ")),ce((o?.deniedBashPatterns??[]).join(", ")),Ko(o?.osCapabilities??[]);let c=o?.osCapabilities?.find(h=>h.id==="automation")?.targets??[];zo(c.join(", "))},[o?.id,o?.executionMode,o?.model,o?.effortTier,o?.maxBudgetUsd,o?.permissionMode,o?.allowedBashPatterns,o?.deniedBashPatterns,o?.osCapabilities]);let zn=at(async()=>{if(o)try{await v(`/roles/${o.id}`,{method:"PATCH",body:{cagPrompt:p}}),_("CAG prompt saved","success"),s("view"),te()}catch(c){_(`Save failed: ${c instanceof Error?c.message:String(c)}`,"error")}},[o,p,te,_]),Xn=at(async()=>{if(o)try{await v(`/roles/${o.id}`,{method:"PATCH",body:{additionalDirectories:Ke}}),_("Directories saved","success"),s("view"),te()}catch(c){_(`Save failed: ${c instanceof Error?c.message:String(c)}`,"error")}},[o,te,_]),Qn=at(async()=>{if(o)try{await v(`/roles/${o.id}`,{method:"PATCH",body:{allowedTools:Array.from(X)}}),_("Tool permissions saved","success"),s("view"),te()}catch(c){_(`Save failed: ${c instanceof Error?c.message:String(c)}`,"error")}},[o,X,te,_]),Yn=at(async()=>{if(!o)return;let c={executionMode:N};q!==void 0&&(c.model=q),c.effortTier=Z===""?null:Z;let h=parseFloat(ie);isNaN(h)||(c.maxBudgetUsd=h);try{await v(`/roles/${o.id}`,{method:"PATCH",body:c}),_("Execution config saved","success"),s("view"),te()}catch(u){_(`Save failed: ${u instanceof Error?u.message:String(u)}`,"error")}},[o,N,q,Z,ie,te,_]),Jn=at(async()=>{if(!o)return;let c={permissionMode:L},h=w.split(",").map(P=>P.trim()).filter(Boolean),u=j.split(",").map(P=>P.trim()).filter(Boolean);c.allowedBashPatterns=h.length>0?h:[],c.deniedBashPatterns=u.length>0?u:[];try{await v(`/roles/${o.id}`,{method:"PATCH",body:c}),_("Permission config saved","success"),s("view"),te()}catch(P){_(`Save failed: ${P instanceof Error?P.message:String(P)}`,"error")}},[o,L,w,j,te,_]),Sr=at(c=>{let h=new Map;for(let u of c){if(!u.id)continue;let P={id:u.id};u.targets?.length&&(P.targets=Array.from(new Set(u.targets.map(O=>O.trim()).filter(Boolean)))),h.set(u.id,P)}return Array.from(h.values()).sort((u,P)=>u.id.localeCompare(P.id))},[]),Zn=at(async()=>{if(!o)return;let c=Sr($t),h=c.find(u=>u.id==="automation")?.targets??[];if(c.some(u=>u.id==="automation")&&(h.length===0||h.some(u=>!Zi.test(u)))){_("Automation requires valid bundle id targets","error");return}try{await v(`/roles/${o.id}`,{method:"PATCH",body:{osCapabilities:c}}),_("OS capabilities saved","success"),s("view"),te()}catch(u){_(`Save failed: ${u instanceof Error?u.message:String(u)}`,"error")}},[o,$t,Sr,te,_]),es=at(async c=>{if(!Nt){_("workspace path not loaded yet","error");return}yo(!0);try{await v(`/plugins/install/${encodeURIComponent(c)}`,{method:"POST",body:JSON.stringify({scope:"project",cwd:Nt})}),_(`Bound ${c.split("@")[0]}`,"success"),te()}catch(h){_(`Bind failed: ${h instanceof Error?h.message:"unknown"}`,"error")}finally{yo(!1)}},[Nt,te,_]),ts=at(async c=>{if(!Nt){_("workspace path not loaded yet","error");return}yo(!0);try{await v(`/plugins/uninstall/${encodeURIComponent(c)}`,{method:"POST",body:JSON.stringify({scope:"project",cwd:Nt})}),_(`Unbound ${c.split("@")[0]}`,"success"),te()}catch(h){_(`Unbind failed: ${h instanceof Error?h.message:"unknown"}`,"error")}finally{yo(!1)}},[Nt,te,_]),Ke=o?.additionalDirectories??[];if(Ji((c,h)=>{if(h.escape){s("view");return}if(c==="r"){te();return}switch(i){case"view":{if(c==="c"){s("edit-cag");return}if(c==="d"){s("edit-dirs"),b(0),r("");return}if(c==="t"){s("edit-tools");return}if(c==="o"){s("edit-oscaps");return}if(c==="x"){s("edit-exec");return}if(c==="h"){v("/channels?enabled=true").then(({channels:u})=>{pe(u.map(P=>({name:P.name,id:P.id}))),Be(new Set(o?.allowedChannels??[])),wt(0),s("edit-channels")}).catch(()=>_("Failed to load channels","error"));return}if(c==="p"){x(o?.permissionMode??"default"),R((o?.allowedBashPatterns??[]).join(", ")),ce((o?.deniedBashPatterns??[]).join(", ")),M("mode"),s("edit-permissions");return}if(c==="v"){fo(0),s("edit-env");return}if(c==="b"){Xo(0),s("edit-plugins");return}if(c==="i"){if(!o)return;let u=!o.inheritUserSettings;v(`/roles/${o.id}`,{method:"PATCH",body:{inheritUserSettings:u}}).then(()=>{_(`Inherit user settings: ${u?"ON":"OFF"}`,"success"),te()}).catch(()=>_("Failed to toggle","error"));return}if(c==="R"&&o?.presetId){v(`/presets/role/${o.presetId}/restore`,{method:"POST"}).then(()=>{_("Preset restored","success"),te()}).catch(u=>_(`Restore failed: ${u instanceof Error?u.message:String(u)}`,"error"));return}break}case"edit-cag":{if(h.ctrl&&c==="s"){zn();return}break}case"edit-dirs":{if(c==="s"){Xn();return}if(c==="a"){s("edit-dirs-add");return}if(c==="m"&&Ke.length>0){let u=Ke[S];if(u){g(O=>O&&{...O,additionalDirectories:O.additionalDirectories?.map((de,ct)=>ct===S?{...typeof de=="string"?{path:de}:de,mode:de.mode==="ro"?"rw":"ro"}:de)});let P=u.mode==="ro"?"rw":"ro";_(`Mode set to ${P.toUpperCase()}`,"success")}return}if(c==="x"&&Ke.length>0){g(u=>u&&{...u,additionalDirectories:Ke.filter((P,O)=>O!==S)}),b(u=>Math.max(0,Math.min(u,Ke.length-2)));return}if(h.upArrow){b(u=>Math.max(0,u-1));return}if(h.downArrow){b(u=>Math.min(Ke.length-1,u+1));return}break}case"edit-dirs-add":{if(h.escape){s("edit-dirs"),r(""),E([]);return}if(h.return&&l.length>0){let u=l[C];u&&(r(u.endsWith("/")?u:u+"/"),E([]));return}if(h.return){let u=k.trim();u&&u.startsWith("/")?(g(P=>P&&{...P,additionalDirectories:[...P.additionalDirectories??[],{path:u,mode:"rw"}]}),r(""),E([]),s("edit-dirs")):_("Path must be absolute (must start with /)","error");return}if(h.tab){let u=k.trim();if(!u||!u.startsWith("/"))return;v(`/fs/suggest-dirs?prefix=${encodeURIComponent(u)}`).then(({suggestions:P})=>{P.length===1?(r(P[0]+"/"),E([])):P.length>1&&(E(P),A(0))}).catch(()=>{E([])});return}if(h.upArrow&&l.length>0){A(u=>Math.max(0,u-1));return}if(h.downArrow&&l.length>0){A(u=>Math.min(l.length-1,u+1));return}break}case"edit-tools":{if(c==="s"){Qn();return}let u=parseInt(c,10)-1;if(!isNaN(u)&&u>=0&&u<bo.length){let P=bo[u];Q(O=>{let de=new Set(O);return de.has(P)?de.delete(P):de.add(P),de});return}break}case"edit-oscaps":{if(c==="s"){Zn();return}if(c==="a"&&$t.some(O=>O.id==="automation")){let O=$t.find(de=>de.id==="automation")?.targets??[];zo(O.join(", ")),s("edit-oscaps-targets");return}let u=jo.filter(O=>O.editable),P=parseInt(c,10)-1;if(!isNaN(P)&&P>=0&&P<u.length){let O=u[P];Ko(de=>de.some(Jt=>Jt.id===O.id)?de.filter(Jt=>Jt.id!==O.id):[...de,{id:O.id,targets:O.id==="automation"?[]:void 0}]);return}break}case"edit-oscaps-targets":{if(h.return){let u=xr.split(",").map(P=>P.trim()).filter(Boolean);Ko(P=>P.map(O=>O.id==="automation"?{...O,targets:u}:O)),s("edit-oscaps");return}break}case"edit-exec":{if(c==="s"){Yn();return}if(h.tab){F(u=>u==="inline"?"isolated":"inline");return}break}case"edit-permissions":{if(c==="s"){Jn();return}if(h.tab){M(u=>u==="mode"?"allowed":u==="allowed"?"denied":"mode");return}if(me==="mode"&&(h.upArrow||h.downArrow)){let u=["default","acceptEdits","dontAsk","bypassPermissions"],P=u.indexOf(L);h.upArrow&&x(u[Math.max(0,P-1)]),h.downArrow&&x(u[Math.min(u.length-1,P+1)]);return}break}case"edit-channels":{if(c==="s"){if(!o)return;let u=ke.size>0?Array.from(ke):[];v(`/roles/${o.id}`,{method:"PATCH",body:{allowedChannels:u}}).then(()=>{_("Channels saved","success"),s("view"),te()}).catch(()=>_("Save failed","error"));return}if(c==="u"){if(!o)return;v(`/roles/${o.id}`,{method:"PATCH",body:{allowedChannels:null}}).then(()=>{_("Channels: unrestricted","success"),s("view"),te()}).catch(()=>_("Save failed","error"));return}if(c===" "){let u=De[yt];u&&Be(P=>{let O=new Set(P);return O.has(u.name)?O.delete(u.name):O.add(u.name),O});return}if(h.upArrow){wt(u=>Math.max(0,u-1));return}if(h.downArrow){wt(u=>Math.min(De.length-1,u+1));return}break}case"edit-env":{let u=Object.keys(o?.envVars??{});if(c==="a"){Tr(""),s("edit-env-add-key");return}if(c==="d"&&u.length>0){let P=u[kt],O={...o?.envVars??{}};delete O[P],v(`/roles/${o.id}`,{method:"PATCH",body:{envVars:O}}).then(()=>{_("Deleted","success"),te()}).catch(()=>_("Delete failed","error")),kt>=u.length-1&&kt>0&&fo(de=>de-1);return}if(h.return&&u.length>0){vr((o?.envVars??{})[u[kt]]??""),s("edit-env-edit-value");return}h.upArrow&&kt>0&&fo(P=>P-1),h.downArrow&&kt<u.length-1&&fo(P=>P+1);break}case"edit-env-add-key":case"edit-env-add-value":case"edit-env-edit-value":break;case"edit-plugins":{if(ho)return;if(c==="a"){v("/plugins").then(({plugins:u})=>{let P=new Set(n.map(O=>O.id));Cr(u.filter(O=>!P.has(O.id))),Qo(0),s("edit-plugins-add")}).catch(()=>_("Failed to load plugins","error"));return}if(c==="x"&&n.length>0){let u=n[xo];u&&ts(u.id);return}if(h.upArrow){Xo(u=>Math.max(0,u-1));return}if(h.downArrow){Xo(u=>Math.min(n.length-1,u+1));return}break}case"edit-plugins-add":{if(ho)return;if(h.escape){s("edit-plugins"),Cr([]);return}if(h.return&&Yt.length>0){let u=Yt[To];u&&es(u.id);return}if(h.upArrow){Qo(u=>Math.max(0,u-1));return}if(h.downArrow){Qo(u=>Math.min(Yt.length-1,u+1));return}break}}}),d)return y(T,{dimColor:!0,children:"Loading role..."});if(!o)return y(T,{dimColor:!0,children:"Role not found."});if(i==="edit-plugins")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Plugins (\u2191\u2193 navigate, x:unbind a:add Esc:cancel)"}),ho&&y(T,{dimColor:!0,children:"Binding..."}),n.length===0?y(T,{dimColor:!0,children:"No plugins bound. Press a to add."}):n.map((c,h)=>B(D,{children:[B(T,{color:h===xo?"cyan":void 0,bold:h===xo,children:[h===xo?"> ":" ",c.name]}),B(T,{dimColor:!0,children:[" v",c.version]})]},c.id)),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]});if(i==="edit-plugins-add")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Add Plugin (\u2191\u2193 navigate, Enter:bind Esc:cancel)"}),ho&&y(T,{dimColor:!0,children:"Binding..."}),Yt.length===0?y(T,{dimColor:!0,children:"No available plugins."}):Yt.map((c,h)=>B(D,{children:[B(T,{color:h===To?"cyan":void 0,bold:h===To,children:[h===To?"> ":" ",c.name]}),B(T,{dimColor:!0,children:[" v",c.version]})]},c.id)),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]});if(i==="edit-cag")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"CAG Prompt \u2014 Edit (Esc cancel, Ctrl+S save)"}),y(Je,{value:p,onChange:f,placeholder:"Character And Guidance prompt..."}),$&&y(D,{marginTop:1,children:y(T,{color:$.type==="error"?"red":"green",children:$.text})})]});if(i==="edit-dirs-add")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Add Directory (Enter confirm, Esc cancel, Tab:complete)"}),y(Je,{value:k,onChange:c=>{r(c),E([])},placeholder:"/absolute/path/to/directory"}),l.length>0&&B(D,{flexDirection:"column",marginTop:1,children:[l.map((c,h)=>B(T,{color:h===C?"cyan":void 0,dimColor:h!==C,children:[h===C?"> ":" ",c,"/"]},c)),y(T,{dimColor:!0,children:"\u2191\u2193 navigate, Enter select, Tab:confirm"})]}),$&&y(D,{marginTop:1,children:y(T,{color:$.type==="error"?"red":"green",children:$.text})})]});if(i==="edit-dirs")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Additional Directories (\u2191\u2193 navigate, a:add m:mode x:remove s:save Esc:cancel)"}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})}),Ke.length===0?y(T,{dimColor:!0,children:"No directories. Press a to add one."}):Ke.map((c,h)=>{let u=typeof c=="string"?{path:c,mode:"rw"}:c,P=u.mode!=="ro";return B(D,{children:[y(T,{color:h===S?"cyan":void 0,bold:h===S,children:h===S?"> ":" "}),B(T,{color:P?"green":"yellow",children:["[",P?"RW":"RO","]"," "]}),y(T,{color:h===S?"cyan":void 0,children:u.path})]},u.path)})]});if(i==="edit-tools")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Tool Permissions \u2014 toggle with number key (s:save Esc:cancel)"}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})}),bo.map((c,h)=>{let u=X.has(c);return B(D,{children:[B(T,{dimColor:!0,children:[h+1,". "]}),y(T,{color:u?"green":"red",children:u?"[ON] ":"[OFF] "}),y(T,{children:c})]},c)})]});if(i==="edit-oscaps"){let c=jo.filter(h=>h.editable);return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"OS Capabilities \u2014 toggle with number key (a:automation targets s:save Esc:cancel)"}),Mt&&B(T,{dimColor:!0,children:["Platform: ",Mt.platform," ",Mt.available?"(sandbox active)":"(sandbox unavailable)"]}),jo.map(h=>{let u=c.findIndex(ct=>ct.id===h.id),P=$t.some(ct=>ct.id===h.id),O=u>=0?`${u+1}.`:" -",de=h.id==="automation"?(()=>{let ct=$t.find(Jt=>Jt.id===h.id)?.targets??[];return ct.length>0?` targets: ${ct.join(", ")}`:" targets: (none)"})():"";return B(D,{flexDirection:"column",marginBottom:1,children:[B(T,{color:P?"green":h.editable?"red":"gray",children:[O," ",P?"[ON]":"[OFF]"," ",h.label," [",h.availability,"]"]}),B(T,{dimColor:!0,children:[" ",h.description,de]}),h.effectiveDisabledReason&&!h.editable&&B(T,{dimColor:!0,children:[" ",h.effectiveDisabledReason]})]},h.id)}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]})}if(i==="edit-oscaps-targets")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Automation Targets (comma-separated bundle ids; Enter confirm, Esc cancel)"}),y(Je,{value:xr,onChange:zo,placeholder:"com.apple.mail, com.apple.systemevents"}),y(T,{dimColor:!0,children:"Example: com.apple.mail, com.apple.systemevents"}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]});if(i==="edit-exec")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Execution Config (Tab:cycle mode, Enter on field, s:save Esc:cancel)"}),B(D,{children:[y(T,{bold:!0,children:" Mode: "}),y(T,{color:"cyan",children:N}),y(T,{dimColor:!0,children:" (Tab to toggle)"})]}),B(D,{children:[y(T,{bold:!0,children:" Model: "}),y(Je,{value:q,onChange:I,placeholder:"sonnet, opus, haiku, or blank"})]}),B(D,{children:[y(T,{bold:!0,children:" Effort Tier: "}),y(Je,{value:Z,onChange:se,placeholder:"low, medium, high, or blank to inherit"})]}),B(D,{children:[y(T,{bold:!0,children:" Max Budget (USD): "}),y(Je,{value:ie,onChange:et,placeholder:"0 = unlimited"})]}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]});if(i==="edit-permissions")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Permission Config (Tab:cycle field, \u2191\u2193:mode, s:save, Esc:cancel)"}),B(D,{children:[y(T,{bold:!0,color:me==="mode"?"cyan":void 0,children:" Mode: "}),["default","acceptEdits","dontAsk","bypassPermissions"].map(h=>B(T,{color:h===L?"green":"gray",children:[h===L?`[${h}]`:` ${h} `," "]},h))]}),B(D,{children:[y(T,{bold:!0,color:me==="allowed"?"cyan":void 0,children:" Allowed Bash: "}),me==="allowed"?y(Je,{value:w,onChange:R,placeholder:"git add *, pnpm test*"}):y(T,{children:w||"(none)"})]}),B(D,{children:[y(T,{bold:!0,color:me==="denied"?"cyan":void 0,children:" Denied Bash: "}),me==="denied"?y(Je,{value:j,onChange:ce,placeholder:"rm -rf *, ssh *"}):y(T,{children:j||"(none)"})]}),y(T,{dimColor:!0,children:"Patterns: comma-separated, glob syntax (* = wildcard)"}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]});if(i==="edit-channels")return B(D,{flexDirection:"column",children:[y(T,{bold:!0,children:"Allowed Channels (Space:toggle, u:unrestricted, s:save, Esc:cancel)"}),De.length===0?y(T,{dimColor:!0,children:"No channels available"}):De.map((c,h)=>B(D,{children:[B(T,{children:[h===yt?">":" "," "]}),B(T,{color:ke.has(c.name)?"green":"gray",children:["[",ke.has(c.name)?"x":" ","] ",c.name]})]},c.id)),B(T,{dimColor:!0,children:["Selected: ",ke.size>0?Array.from(ke).join(", "):"none (= block all)"]}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})})]});if(i.startsWith("edit-env")){let c=Object.keys(o.envVars??{});return B(D,{flexDirection:"column",children:[B(T,{bold:!0,children:["Environment Variables (",c.length,")"]}),c.length===0&&i==="edit-env"&&y(T,{dimColor:!0,children:" No env vars. Press a to add."}),c.map((h,u)=>{let P=u===kt;return i==="edit-env-edit-value"&&P?B(D,{children:[B(T,{color:"cyan",children:["> ",h," = "]}),y(Je,{value:br,onChange:vr,onSubmit:()=>{let O={...o.envVars??{},[h]:br};v(`/roles/${o.id}`,{method:"PATCH",body:{envVars:O}}).then(()=>{_("Saved","success"),te(),s("edit-env")}).catch(()=>_("Save failed","error"))}})]},h):B(T,{color:P&&i==="edit-env"?"cyan":"white",children:[P&&i==="edit-env"?"> ":" ",h," = ",(o.envVars??{})[h]]},h)}),i==="edit-env-add-key"&&B(D,{children:[y(T,{color:"green",children:" New key: "}),y(Je,{value:po,onChange:Tr,onSubmit:()=>{po.trim()&&(yr(""),s("edit-env-add-value"))}})]}),i==="edit-env-add-value"&&B(D,{children:[B(T,{color:"green",children:[" ",po," = "]}),y(Je,{value:hr,onChange:yr,onSubmit:()=>{let h={...o.envVars??{},[po.trim()]:hr};v(`/roles/${o.id}`,{method:"PATCH",body:{envVars:h}}).then(()=>{_("Added","success"),te(),s("edit-env")}).catch(()=>_("Add failed","error"))}})]}),y(T,{dimColor:!0,children:"a:add Enter:edit d:delete Esc:back"}),$&&y(T,{color:$.type==="error"?"red":"green",children:$.text})]})}return B(D,{flexDirection:"column",children:[B(T,{bold:!0,children:["Role: ",o.name]}),B(D,{children:[y(T,{dimColor:!0,children:"ID: "}),y(T,{children:o.id})]}),B(D,{children:[y(T,{dimColor:!0,children:"Status: "}),y(T,{color:o.status==="active"?"green":o.status==="probation"?"yellow":"red",children:o.status})]}),o.performanceScore!=null&&B(D,{children:[y(T,{dimColor:!0,children:"Score: "}),B(T,{children:[(o.performanceScore*100).toFixed(0),"%"]})]}),B(D,{children:[y(T,{dimColor:!0,children:"Created: "}),y(T,{children:new Date(o.createdAt).toLocaleString()})]}),B(D,{children:[y(T,{dimColor:!0,children:"Execution: "}),B(T,{children:[o.executionMode??"inline"," / tier:",o.effortTier??"\u2014"," / model:",o.model??"inherit"," / ",o.maxBudgetUsd!=null?`$${o.maxBudgetUsd}`:"no limit"]})]}),B(D,{children:[y(T,{dimColor:!0,children:"OS Capabilities: "}),y(T,{children:(o.osCapabilities?.length??0)>0?o.osCapabilities.map(c=>c.id==="automation"&&c.targets?.length?`automation(${c.targets.join(",")})`:c.id).join(", "):"None"})]}),Mt&&B(D,{children:[y(T,{dimColor:!0,children:"Sandbox Platform: "}),B(T,{children:[Mt.platform," ",Mt.available?"(active)":"(unavailable)"]})]}),Ke.length>0&&B(Vo,{children:[y(T,{bold:!0,children:"Additional Directories:"}),Ke.map(c=>B(T,{dimColor:!0,children:[" ",c.path]},c.path))]}),B(D,{children:[y(T,{dimColor:!0,children:"Permission: "}),y(T,{children:o.permissionMode??"default"})]}),(o.allowedBashPatterns?.length??0)>0&&B(D,{children:[y(T,{dimColor:!0,children:" Bash Allow: "}),y(T,{children:o.allowedBashPatterns.join(", ")})]}),(o.deniedBashPatterns?.length??0)>0&&B(D,{children:[y(T,{dimColor:!0,children:" Bash Deny: "}),y(T,{children:o.deniedBashPatterns.join(", ")})]}),Dt.length>0&&B(D,{flexDirection:"column",children:[y(T,{dimColor:!0,children:"Denied Read Paths (global):"}),Dt.map(c=>B(T,{dimColor:!0,children:[" ",c]},c)),B(T,{dimColor:!0,italic:!0,children:[" (Settings ",">"," Advanced)"]})]}),B(D,{children:[y(T,{dimColor:!0,children:"Channels: "}),y(T,{children:o.allowedChannels===void 0?"Unrestricted":o.allowedChannels.length===0?"Blocked":o.allowedChannels.join(", ")})]}),B(D,{children:[y(T,{dimColor:!0,children:"Inherit User Settings: "}),y(T,{color:o.inheritUserSettings?"green":"gray",children:o.inheritUserSettings?"Yes":"No"})]}),o.learnedRules.stylePreferences.length>0&&B(Vo,{children:[y(T,{bold:!0,children:"Style Preferences:"}),o.learnedRules.stylePreferences.map(c=>B(T,{dimColor:!0,children:[" - ",c]},c))]}),o.learnedRules.avoidedActions.length>0&&B(Vo,{children:[y(T,{bold:!0,children:"Avoided Actions:"}),o.learnedRules.avoidedActions.map(c=>B(T,{dimColor:!0,children:[" - ",c]},c))]}),o.learnedRules.pinnedParameters.length>0&&B(Vo,{children:[y(T,{bold:!0,children:"Pinned Parameters:"}),o.learnedRules.pinnedParameters.map(c=>{let h=Object.entries(c.params).map(([P,O])=>`${P}=${JSON.stringify(O)}`).join(", "),u=c.condition?` [when: ${c.condition}]`:"";return B(T,{dimColor:!0,children:[" - ",c.tool," \u2192 ",h,u]},`${c.tool}-${c.pinnedAt}`)})]}),B(D,{children:[y(T,{dimColor:!0,children:"Plugins: "}),n.length===0?y(T,{dimColor:!0,children:"None"}):n.map(c=>B(T,{children:[c.name," "]},c.id))]}),$&&y(D,{children:y(T,{color:$.type==="error"?"red":$.type==="success"?"green":"gray",children:$.text})}),y(D,{marginTop:1,children:B(T,{dimColor:!0,children:["c:CAG d:dirs t:tools b:plugins o:oscaps x:exec p:perms h:channels v:env i:inherit"," ",o?.presetId?"R:restore-preset ":"","r:refresh Esc:back"]})})]})}import{jsx as Ve,jsxs as mo}from"react/jsx-runtime";function qn({onBack:e}){let[t,o]=uo([]),[g,n]=uo(!0),[m,d]=uo(0),[a,i]=uo("list"),[s,p]=uo(null),{message:f,setMessage:S,clearMessage:b}=Ge(),k=oa(()=>{n(!0),v("/roles").then(({roles:r})=>{o(r.map(l=>({id:l.id,name:l.name,status:l.status,performanceScore:l.performanceScore,createdAt:l.createdAt,presetId:l.presetId,contractComplianceEma:l.contractComplianceEma}))),n(!1)}).catch(()=>n(!1))},[]);return ta(()=>{k()},[k]),ea((r,l)=>{if(l.escape||r==="q"){e();return}if(l.upArrow){d(E=>Math.max(0,E-1));return}if(l.downArrow){d(E=>Math.min(t.length-1,E+1));return}if(r==="r"&&(k(),b()),r===`
|
|
11
|
+
`||r==="o"||r==="e"){t.length>0&&(p(t[m].id),i("detail"));return}}),g?Ve(Ze,{dimColor:!0,children:"Loading roles..."}):a==="detail"&&s?Ve(Fn,{roleId:s,onBack:()=>i("list")}):mo(jt,{flexDirection:"column",children:[mo(Ze,{bold:!0,children:["Roles (",t.length,") (Esc to go back)"]}),f&&Ve(jt,{marginTop:1,children:mo(Ze,{color:f.type==="success"?"green":f.type==="error"?"red":"gray",children:[f.type==="success"?"\u2713 ":f.type==="error"?"\u2717 ":"\u2192 ",f.text]})}),t.length===0?Ve(jt,{marginTop:1,children:Ve(Ze,{dimColor:!0,children:"No roles found. Roles define agent behavior and bind plugins."})}):Ve(jt,{marginTop:1,flexDirection:"column",children:t.map((r,l)=>{let E=l===m,C=r.performanceScore!=null?`${(r.performanceScore*100).toFixed(0)}%`:"\u2014",A=r.contractComplianceEma!=null?`[\u5951\u7EA6 ${r.contractComplianceEma.toFixed(2)}]`:"[\u5951\u7EA6 \u2014]";return mo(jt,{children:[Ve(Ze,{color:E?"cyan":void 0,bold:E,children:E?"> ":" "}),Ve(Ze,{color:E?"cyan":void 0,bold:E,children:fr(r.name,24)}),r.presetId&&mo(Ze,{dimColor:!0,children:["[",r.presetId,"]"]}),Ve(Ze,{color:ra(r.status),children:fr(r.status,12)}),Ve(Ze,{dimColor:!0,children:fr(C,8)}),Ve(Ze,{dimColor:!0,children:A})]},r.id)})}),Ve(jt,{marginTop:1,children:Ve(Ze,{dimColor:!0,children:"Enter/O/E:open Esc:back r:refresh"})})]})}function ra(e){return e==="active"?"green":e==="probation"?"yellow":e==="retired"||e==="dead"?"red":"gray"}function fr(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}import{Box as na,Text as pr}from"ink";import sa from"react";import{jsx as Uo,jsxs as aa}from"react/jsx-runtime";var Le={key:"Esc",label:"back"},ia={work:[{key:"1",label:"tasks"},{key:"2",label:"automations"},{key:"3",label:"goals"},Le],tasks:[{key:"\u2191\u2193",label:"move"},{key:"Enter",label:"detail"},{key:"x",label:"cancel"},{key:"f",label:"filter"},{key:"r",label:"refresh"},Le],config:[Le],evolution:[Le],goals:[{key:"c",label:"create"},{key:"r",label:"refresh"},Le],strategies:[Le],templates:[{key:"\u2191\u2193",label:"move"},{key:"t",label:"run"},{key:"s",label:"toggle"},{key:"e",label:"edit"},{key:"c",label:"create"},{key:"d",label:"delete"},{key:"r",label:"refresh"},Le],webhooks:[Le],memories:[Le],plugins:[{key:"\u2191\u2193",label:"move"},{key:"r",label:"refresh"},Le],roles:[Le],settings:[Le],channels:[Le]};function Vn(){let{state:e}=tt(),t=ia[e.view]??[Le];return Uo(na,{borderStyle:"round",borderDimColor:!0,paddingX:1,children:t.map((o,g)=>aa(sa.Fragment,{children:[g>0&&Uo(pr,{dimColor:!0,children:" "}),Uo(pr,{color:"cyan",children:o.key}),Uo(pr,{dimColor:!0,children:` ${o.label}`})]},`${o.key}-${o.label}`))})}import{Box as Kt,Text as je,useInput as la}from"ink";import{useEffect as ca,useState as Wo,useCallback as da}from"react";import{jsx as Tt,jsxs as xt}from"react/jsx-runtime";function Un({onBack:e}){let[t,o]=Wo([]),[g,n]=Wo(!0),[m,d]=Wo(0),[a,i]=Wo("all"),{message:s,setMessage:p}=Ge(),f=da(()=>{n(!0);let l=a!=="all"?`?status=${a}`:"";v(`/feature-requests${l}`).then(({featureRequests:E})=>{o(E),d(0),n(!1)}).catch(()=>n(!1))},[a]);ca(()=>{f()},[f]);let S=async(l,E)=>{try{await v(`/feature-requests/${l}/status`,{method:"PATCH",body:{status:E}}),p(`Marked as ${E}`,"success"),await f()}catch(C){p(`Failed: ${C instanceof Error?C.message:String(C)}`,"error")}},b=t;la((l,E)=>{if(E.escape||l==="q"){e();return}if(E.upArrow){d(A=>Math.max(0,A-1));return}if(E.downArrow){d(A=>Math.min(b.length-1,A+1));return}if(l==="r"){f();return}let C={0:"all",1:"new",2:"reviewed",3:"dismissed",4:"converted"};if(C[l]){i(C[l]);return}if(l==="s"&&b.length>0){let A=b[m];if(A&&A.status==="new"){S(A.id,"reviewed");return}}if(l==="d"&&b.length>0){let A=b[m];if(A){S(A.id,"dismissed");return}}if(l==="c"&&b.length>0){let A=b[m];if(A){S(A.id,"converted");return}}});let k=l=>l==="new"?"cyan":l==="reviewed"?"green":l==="dismissed"?"gray":l==="converted"?"yellow":"white",r=l=>{let E=Date.now()-l;if(Math.floor(E/6e4)<1)return"now";let A=Math.floor(E/36e5);return A<24?`${A}h ago`:`${Math.floor(A/24)}d ago`};return xt(Kt,{flexDirection:"column",children:[xt(je,{bold:!0,children:["Feature Requests (",b.length,") (Esc:back q:quit r:refresh)"]}),s&&Tt(Kt,{marginTop:1,children:xt(je,{color:s.type==="error"?"red":"green",children:[s.type==="success"?"\u2713 ":"\u2717 ",s.text]})}),Tt(je,{dimColor:!0,children:"Filters: 0=all 1=new 2=reviewed 3=dismissed 4=converted"}),Tt(je,{dimColor:!0,children:"Actions: s=reviewed d=dismissed c=converted"}),g?Tt(je,{dimColor:!0,children:"Loading..."}):b.length===0?Tt(je,{dimColor:!0,children:"No feature requests found."}):Tt(Kt,{marginTop:1,flexDirection:"column",children:b.map((l,E)=>{let C=E===m,A=l.content.length>80?l.content.slice(0,80)+"...":l.content;return xt(Kt,{flexDirection:"column",children:[xt(Kt,{children:[Tt(je,{color:C?"cyan":void 0,bold:C,children:C?"> ":" "}),xt(je,{color:k(l.status),children:["[",l.status,"]"]}),xt(je,{dimColor:!0,children:[" ",r(l.extractedAt)]}),l.tags&&l.tags.length>0&&xt(je,{dimColor:!0,children:[" ",l.tags.slice(0,3).join(", ")]})]}),xt(Kt,{paddingLeft:4,flexDirection:"column",children:[l.summary&&Tt(je,{color:C?"cyan":"white",children:l.summary}),Tt(je,{dimColor:!0,children:A})]})]},l.id)})})]})}import{Box as zt,Text as Ue,useInput as ua}from"ink";import{useEffect as ma,useState as Go,useCallback as ga}from"react";import{jsx as ht,jsxs as lt}from"react/jsx-runtime";function Wn({onBack:e}){let[t,o]=Go([]),[g,n]=Go(!0),[m,d]=Go(0),[a,i]=Go("all"),{message:s,setMessage:p}=Ge(),f=ga(()=>{n(!0);let r=a!=="all"?`?status=${a}`:"";v(`/mistake-patterns${r}`).then(({mistakePatterns:l})=>{o(l),d(0),n(!1)}).catch(()=>n(!1))},[a]);ma(()=>{f()},[f]);let S=async(r,l)=>{try{await v(`/mistake-patterns/${r}`,{method:"PATCH",body:{status:l}}),p(`Marked as ${l}`,"success"),await f()}catch(E){p(`Failed: ${E instanceof Error?E.message:String(E)}`,"error")}};ua((r,l)=>{if(l.escape||r==="q"){e();return}if(l.upArrow){d(C=>Math.max(0,C-1));return}if(l.downArrow){d(C=>Math.min(t.length-1,C+1));return}if(r==="r"){f();return}let E={0:"all",1:"new",2:"acknowledged",3:"dismissed"};if(E[r]){i(E[r]);return}if(r==="a"&&t.length>0){let C=t[m];if(C&&C.status!=="acknowledged"){S(C.id,"acknowledged");return}}if(r==="d"&&t.length>0){let C=t[m];if(C&&C.status!=="dismissed"){S(C.id,"dismissed");return}}if(r==="n"&&t.length>0){let C=t[m];if(C&&C.status!=="new"){S(C.id,"new");return}}});let b=r=>r==="new"?"cyan":r==="acknowledged"?"green":r==="dismissed"?"gray":"white",k=r=>{let l=Date.now()-r;if(Math.floor(l/6e4)<1)return"now";let C=Math.floor(l/36e5);return C<24?`${C}h ago`:`${Math.floor(C/24)}d ago`};return lt(zt,{flexDirection:"column",children:[lt(Ue,{bold:!0,children:["Mistake Patterns (",t.length,") (Esc:back q:quit r:refresh)"]}),s&&ht(zt,{marginTop:1,children:lt(Ue,{color:s.type==="error"?"red":"green",children:[s.type==="success"?"\u2713 ":"\u2717 ",s.text]})}),ht(Ue,{dimColor:!0,children:"Filters: 0=all 1=new 2=acknowledged 3=dismissed"}),ht(Ue,{dimColor:!0,children:"Actions: a=acknowledge d=dismiss n=mark new"}),g?ht(Ue,{dimColor:!0,children:"Loading..."}):t.length===0?ht(Ue,{dimColor:!0,children:"No mistake patterns found."}):ht(zt,{marginTop:1,flexDirection:"column",children:t.map((r,l)=>{let E=l===m,C=r.dimensionValue.length>80?r.dimensionValue.slice(0,80)+"...":r.dimensionValue;return lt(zt,{flexDirection:"column",children:[lt(zt,{children:[ht(Ue,{color:E?"cyan":void 0,bold:E,children:E?"> ":" "}),lt(Ue,{color:b(r.status),children:["[",r.status,"]"]}),lt(Ue,{dimColor:!0,children:[" ",k(r.lastSeen)]}),lt(Ue,{dimColor:!0,children:[" [",r.dimensionType,"]"]}),lt(Ue,{dimColor:!0,children:[" ",r.roleIds.length," role(s)"]}),lt(Ue,{dimColor:!0,children:[" x",r.count]})]}),ht(zt,{paddingLeft:4,flexDirection:"column",children:ht(Ue,{color:E?"cyan":"white",children:C})})]},r.id)})})]})}import{Fragment as ba,jsx as z,jsxs as Qt}from"react/jsx-runtime";function Ta(){let{state:e,dispatch:t}=tt(),{session:o,sendMessage:g,createNewSession:n,archiveCurrentSession:m}=$r(),[d,a]=pa([]);Ho(()=>{t({type:"SET_SESSION",session:o})},[o,t]),Rr();let{latestMessage:i}=_r(o?.id??null),s=Rt(null),p=Rt(new Set),f=Rt(new Set),S=Rt(new Set),b=Rt(new Set),[,k]=xa(I=>I+1,0);Ho(()=>{if(!i||i.id===s.current)return;s.current=i.id;let I=!i.kind||i.kind==="result_delivery"||i.kind==="assistant_text";if(I&&i.taskId&&f.current.has(i.taskId)){p.current.add(i.taskId);return}I&&i.taskId&&p.current.add(i.taskId),a(Z=>[...Z,{id:i.id,role:"assistant",content:i.content,taskId:i.taskId,createdAt:i.createdAt,kind:i.kind,threadRoot:i.threadRoot,parentMessageId:i.parentMessageId,promptId:i.promptId,approvalShape:i.approvalShape,roleId:i.roleId,attachments:i.attachments,mirroredToTargets:i.mirroredToTargets,platformMessageId:i.platformMessageId,seq:i.seq}])},[i]);let{events:r,isStreaming:l,clearEvents:E}=Mr(e.activeTaskId),C=r[r.length-1],A=C?.type==="complete"&&!l,X=Rt(null),Q=Rt("");Ho(()=>{Q.current=r.filter(I=>I.type==="reasoning").map(I=>I.content).join("")},[r]),Ho(()=>{if(A&&e.activeTaskId!==X.current){if(X.current=e.activeTaskId,e.activeTaskId&&p.current.has(e.activeTaskId))return;let I=C?.content||Q.current;I&&(e.activeTaskId&&f.current.add(e.activeTaskId),a(Z=>[...Z,{role:"assistant",content:I,taskId:e.activeTaskId??void 0,kind:"assistant_text"}]))}},[A,C,e.activeTaskId]);let N=async I=>{let Z=I.trim().toLowerCase();if(["quit","exit","/quit","/exit"].includes(Z)&&process.exit(0),I.startsWith("/")){let ie=I.slice(1),De={work:"work",tasks:"tasks",config:"config",evolution:"evolution",templates:"templates",memories:"memories",goals:"goals",strategies:"strategies",roles:"roles",settings:"settings",channels:"channels",plugins:"plugins","feature-requests":"featureRequests",mistakes:"mistakes",back:"chat"}[ie];if(De){t({type:"SET_VIEW",view:De});return}if(ie==="new"){if(await m()){let ke=await n();a([]),E(),p.current.clear(),f.current.clear(),S.current.clear(),b.current.clear(),ke&&a([{role:"assistant",content:`Session archived. New session started: ${ke.id.slice(0,8)}`}])}return}if(ie==="session"){let pe=o?`Session: ${o.id}
|
|
12
|
+
Turns: ${o.messageCount}
|
|
13
|
+
Last active: ${new Date(o.lastActiveAt).toLocaleString()}`:"No active session";a(ke=>[...ke,{role:"assistant",content:pe}]);return}}if(a(ie=>[...ie,{role:"user",content:I}]),E(),!await g(I)){a(ie=>[...ie,{role:"assistant",content:"Failed to send message. Server may be disconnected."}]);return}},F=d.some(I=>I.kind==="approval_prompt"&&I.promptId&&!S.current.has(I.promptId)&&!b.current.has(I.promptId)),q=e.view==="chat"&&!e.pendingPlanApproval&&!e.pendingApproval&&!F;return Qt(go,{flexDirection:"column",paddingX:1,children:[z(Or,{}),Qt(go,{flexGrow:1,flexDirection:"column",paddingY:1,children:[e.view==="chat"&&Qt(ba,{children:[z(tn,{messages:d,onApprovalSubmitted:I=>{S.current.add(I),k()},onApprovalFailed:I=>{b.current.add(I),k()}}),z(Vr,{events:r,isStreaming:l}),!e.connected&&!e.serverUnreachable&&z(go,{children:z(Xt,{color:"red",children:"Server disconnected. Attempting to reconnect..."})}),e.serverUnreachable&&Qt(go,{flexDirection:"column",children:[z(Xt,{color:"red",bold:!0,children:"Server unreachable after 15s."}),z(Xt,{dimColor:!0,children:"Check: adam server logs"}),z(Xt,{dimColor:!0,children:"Type /quit to exit."})]})]}),e.view==="work"&&z(Nn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="tasks"&&z(No,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="config"&&z(xn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="evolution"&&z(bn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="goals"&&z(Lo,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="strategies"&&z(Cn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="templates"&&z(Fo,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="webhooks"&&z(Bn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="memories"&&z(An,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="plugins"&&z(Mn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="roles"&&z(qn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="featureRequests"&&z(Un,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="mistakes"&&z(Wn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="settings"&&z(Dn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="channels"&&z(Ln,{onBack:()=>t({type:"SET_VIEW",view:"chat"})})]}),e.pendingPlanApproval?z(rn,{approval:e.pendingPlanApproval,onResolved:()=>t({type:"SET_PENDING_PLAN_APPROVAL",approval:null}),onTimeout:()=>t({type:"SET_PLAN_TIMEOUT_NOTICE",planId:e.pendingPlanApproval.planId})}):e.pendingApproval?z(on,{approval:e.pendingApproval,onResolved:()=>t({type:"SET_PENDING_APPROVAL",approval:null})}):q?z(qr,{onSubmit:N}):z(Vn,{}),e.planTimeoutNotice&&z(ha,{planId:e.planTimeoutNotice.planId,onDismiss:()=>t({type:"SET_PLAN_TIMEOUT_NOTICE",planId:null})})]})}function ha({planId:e,onDismiss:t}){return fa(o=>{o==="d"&&t()}),Qt(go,{borderStyle:"round",borderColor:"yellow",paddingX:1,children:[Qt(Xt,{color:"yellow",children:["Plan ",e," was auto-denied after 300s timeout."]}),z(Xt,{dimColor:!0,children:" [d] Dismiss"})]})}function ya(){return z(Er,{children:z(Ta,{})})}export{ya as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a,d as b,e as c,f as d,g as e}from"./chunk-RX274IH7.js";import"./chunk-2Q6XLYCC.js";import"./chunk-NPGZRSGL.js";import"./chunk-QZ34KQ76.js";import"./chunk-CLNYHWZ6.js";import"./chunk-NWGRLNUM.js";import"./chunk-BKNXRSJU.js";import"./chunk-LZDO4PXK.js";import"./chunk-RBJPQYV3.js";import"./chunk-L7JP7DUO.js";import"./chunk-KJNAORKM.js";import"./chunk-IRUR4DVD.js";import"./chunk-ASPPM7TQ.js";import"./chunk-Z6LHGA27.js";import"./chunk-L47LZYVG.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-245WE5AF.js";import"./chunk-FCV2DPZQ.js";export{b as formatPlanForChannel,e as getPendingApprovalRequestIds,d as handleInboundForApproval,a as parseApprovalReply,c as sendApprovalToChannel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,d as c}from"./chunk-BKNXRSJU.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-245WE5AF.js";import"./chunk-FCV2DPZQ.js";c();export{b as listAuditDiagnostics,a as recordAuditDiagnostic};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as a,J as b,K as c,L as d,M as e,N as f,O as g}from"./chunk-MFFJ5HFI.js";import"./chunk-QMW7VEPC.js";import"./chunk-LBINDAPE.js";import"./chunk-XA3MZOWU.js";import"./chunk-J3VYLSJI.js";import"./chunk-XYZVMTNN.js";import"./chunk-ICAM2GUU.js";import"./chunk-TZCMK3UG.js";import"./chunk-XF7YHFVR.js";import"./chunk-NPGZRSGL.js";import"./chunk-JUVQWLWM.js";import"./chunk-DMDZ3QW7.js";import"./chunk-F6U5TMM3.js";import"./chunk-LZDO4PXK.js";import"./chunk-VNXTBIPI.js";import"./chunk-RBJPQYV3.js";import"./chunk-L7JP7DUO.js";import"./chunk-D3SPXZZY.js";import"./chunk-ISKCTUI7.js";import"./chunk-DRO3DG7X.js";import"./chunk-XIVFVKMB.js";import"./chunk-KJNAORKM.js";import"./chunk-N2OLEUAQ.js";import"./chunk-IRUR4DVD.js";import"./chunk-ASPPM7TQ.js";import"./chunk-Z6LHGA27.js";import"./chunk-L47LZYVG.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-245WE5AF.js";import"./chunk-FCV2DPZQ.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-VLS3BPCG.js";import"./chunk-VVPRB2JU.js";import"./chunk-XA3MZOWU.js";import"./chunk-J3VYLSJI.js";import"./chunk-XYZVMTNN.js";import"./chunk-ICAM2GUU.js";import"./chunk-OW3HDZV5.js";import"./chunk-NUJSTEV4.js";import"./chunk-XF7YHFVR.js";import"./chunk-NNMQGISW.js";import"./chunk-2Q6XLYCC.js";import"./chunk-NPGZRSGL.js";import"./chunk-QZ34KQ76.js";import"./chunk-CLNYHWZ6.js";import"./chunk-NWGRLNUM.js";import"./chunk-BKNXRSJU.js";import"./chunk-DMDZ3QW7.js";import"./chunk-F6U5TMM3.js";import"./chunk-LZDO4PXK.js";import"./chunk-VNXTBIPI.js";import"./chunk-RBJPQYV3.js";import"./chunk-L7JP7DUO.js";import"./chunk-DRO3DG7X.js";import"./chunk-XIVFVKMB.js";import"./chunk-KJNAORKM.js";import"./chunk-IRUR4DVD.js";import"./chunk-VKKDSXMR.js";import"./chunk-ASPPM7TQ.js";import"./chunk-TLMG5W3L.js";import"./chunk-Z6LHGA27.js";import"./chunk-L47LZYVG.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-245WE5AF.js";import"./chunk-FCV2DPZQ.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-JYJWNUGH.js";import"./chunk-XF7YHFVR.js";import"./chunk-NNMQGISW.js";import"./chunk-QZ34KQ76.js";import"./chunk-CLNYHWZ6.js";import"./chunk-NWGRLNUM.js";import"./chunk-BKNXRSJU.js";import"./chunk-ASPPM7TQ.js";import"./chunk-Z6LHGA27.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-245WE5AF.js";import"./chunk-FCV2DPZQ.js";export{c as channelRoutes,b as getChannelManager,a as setChannelManager};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e,f}from"./chunk-CLNYHWZ6.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-FCV2DPZQ.js";export{a as createChannel,e as deleteChannel,b as getChannel,d as listChannels,c as updateChannel,f as updateChannelStatus};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c}from"./chunk-3BRHWRZ5.js";import"./chunk-BPXS4QEO.js";import"./chunk-WBAPIPST.js";import"./chunk-BLCNUT53.js";import"./chunk-FCV2DPZQ.js";export{c as hasAnyToolCallInTurn,b as listChatToolCallsByTrace,a as recordChatToolCall};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as o}from"./chunk-FCV2DPZQ.js";import{AsyncLocalStorage as a}from"async_hooks";import{v4 as c}from"uuid";function g(e,t){return r.run({traceId:c(),origin:e},t)}function S(e,t,n){return r.run({traceId:e,origin:t},n)}function d(){return r.getStore()?.traceId}function f(){return r.getStore()}var r,i=o(()=>{r=new a});export{g as a,S as b,d as c,f as d,i as e};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{d as D}from"./chunk-RX274IH7.js";import{a as b}from"./chunk-NUJSTEV4.js";import{f as v}from"./chunk-XF7YHFVR.js";import{e as O}from"./chunk-2Q6XLYCC.js";import{a as S,b as P,c,d as I,e as w,f as C,g as M}from"./chunk-NPGZRSGL.js";import{b as x}from"./chunk-CLNYHWZ6.js";import{b as y}from"./chunk-NWGRLNUM.js";import{b as R}from"./chunk-LZDO4PXK.js";import{s as k}from"./chunk-RBJPQYV3.js";import{a as f}from"./chunk-L7JP7DUO.js";import{b as h,o as B}from"./chunk-KJNAORKM.js";import{l as d,n as j}from"./chunk-BPXS4QEO.js";import{c as E,h as N}from"./chunk-BLCNUT53.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
|
+
INSERT INTO delivery_rules (id, event_type, match_criteria, target, format_template,
|
|
3
|
+
max_per_minute, skip_origin_channel, enabled, created_at, created_by)
|
|
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-ZWZZ3FKR.js");await p(a.channelId,a.chatId,n,e,o)}let s=D(r)+`
|
|
6
|
+
|
|
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
|
+
First error: ${a[0][1].error.slice(0,300)}`:""].filter(Boolean).join(`
|
|
9
|
+
`);await this.matchAndDeliver("template_execution_failed",{templateId:n,roleId:void 0,prompt:void 0,taskStatus:"failed"},s,void 0,e)}getSourceChannelForTask(e){try{let n=v(e);if(!n)return null;let r=y(n.sessionId);return!r||r.source.type!=="channel"||!r.source.channelId||!r.source.chatId?null:{channelId:r.source.channelId,chatId:r.source.chatId}}catch{return null}}async handleTaskStatusChange(e,n){let r=h(e);if(!r)return;if(F(r)){l.debug({taskId:e,templateId:r.templateId,stepId:r.stepId},"Skipping delivery for TemplateExecution step task");return}if(r.config?.taskType==="contract-verifier"){l.debug({taskId:e},"Skipping delivery for contract-verifier task");return}let t={templateId:r.templateId,roleId:r.roleId,prompt:r.prompt,taskStatus:n},a=n==="completed"?"task_complete":"task_error",s=r.result??r.error??"";await this.matchAndDeliver(a,t,s,e)}async matchAndDeliver(e,n,r,t,a){let s=A(e,n);if(s.length!==0){l.debug({eventType:e,ruleCount:s.length,taskId:t},"Matched delivery rules");for(let o of s){if(!this.checkRateLimit(o)){l.warn({ruleId:o.id,maxPerMinute:o.maxPerMinute},"Delivery rate limit exceeded, skipping");continue}if(o.skipOriginChannel&&o.target.type==="channel"&&t&&this.isOriginChannel(t,o.target))continue;let p={id:J(),ruleId:o.id,taskId:t,executionId:a,status:"pending",target:o.target,content:r,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+S,source:"rule"};P(p),await this.attemptDelivery(p,o)}}}async attemptDeliveryPublic(e,n){return this.attemptDelivery(e,n)}async attemptDelivery(e,n){let r=O();try{if(e.target.type==="channel"){let t=e.target.chatId;if(!t&&e.target.channelId){let s=x(e.target.channelId);t=s?b(s):void 0}let a=await r.send({taskId:e.taskId,channelId:e.target.channelId,chatId:t,content:e.content,messageType:"deliver"});a.success?(I(e.id),l.info({entryId:e.id,ruleId:n.id,targetType:"channel"},"Delivery successful")):c(e.id,"failed",a.error??"Gateway returned failure")}else if(e.target.type==="webhook"){let t=await r.send({taskId:e.taskId,webhookUrl:e.target.webhookUrl,content:e.content,messageType:"deliver"});t.success?(I(e.id),l.info({entryId:e.id,ruleId:n.id,targetType:"webhook"},"Webhook delivery successful")):c(e.id,"failed",t.error??"Gateway returned failure")}}catch(t){let a=t instanceof Error?t.message:String(t);c(e.id,"failed",a),l.warn({entryId:e.id,error:a},"Delivery attempt failed")}}checkRateLimit(e){let n=Date.now(),r=6e4,t=_.get(e.id);t||(t=[],_.set(e.id,t));let a=n-r;for(;t.length>0&&t[0]<a;)t.shift();return t.length>=e.maxPerMinute?!1:(t.push(n),!0)}isOriginChannel(e,n){try{if(n.type!=="channel"||!n.channelId)return!1;let r=v(e);if(!r)return!1;let t=y(r.sessionId);return t?t.source.type==="channel"&&t.source.channelId===n.channelId&&(!n.chatId||t.source.chatId===n.chatId):!1}catch{return!1}}async retryPending(){let e=w("rule",50),n=C("rule",50),r=[...e,...n];if(r.length!==0){l.debug({count:r.length},"Retrying pending/failed deliveries");for(let t of r){if(t.attempts>=3){c(t.id,"failed","Max retries (3) exceeded");continue}let a={id:t.ruleId??"retry-synthetic",eventType:"*",matchCriteria:{},target:t.target,maxPerMinute:5,skipOriginChannel:!0,enabled:!0,createdAt:0};await this.attemptDelivery(t,a)}}}};function ce(){return u}function ue(){u||(u=new T,m=setInterval(()=>{u?.retryPending().catch(i=>{l.error({error:i},"Delivery retry scan failed")})},6e4),g=setInterval(()=>{try{let i=M();i>0&&l.info({cleaned:i},"Expired delivery log entries cleaned up")}catch(i){l.error({error:i},"Delivery cleanup failed")}},36e5),l.info("DeliveryEngine started with retry (60s) and cleanup (1h) timers"))}function pe(){m&&(clearInterval(m),m=null),g&&(clearInterval(g),g=null),u=null,_.clear(),l.info("DeliveryEngine stopped")}export{q as a,H as b,W as c,U as d,G as e,F as f,T as g,ce as h,ue as i,pe as j};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{b as E,c as A,
|
|
1
|
+
import{b as E,c as A,i as R}from"./chunk-ICAM2GUU.js";import{e as C,i as T}from"./chunk-VNXTBIPI.js";import{F as _,I}from"./chunk-KJNAORKM.js";import{l as w,n as F}from"./chunk-BPXS4QEO.js";I();T();import{existsSync as W,readdirSync as L,readFileSync as j}from"fs";import{join as P}from"path";function v(l){let s=l.split(`
|
|
2
2
|
`),n=s[0]??"";return n.startsWith("```yaml")||n.startsWith("```")?s.slice(1).join(`
|
|
3
|
-
`):l}function
|
|
4
|
-
`);for(let t of o){let u=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*):\s*(.*)$/);if(u)s[u[1].toLowerCase()]=u[2].trim();else if(t.trim()&&!t.startsWith("#")&&!t.startsWith(" ")&&!t.startsWith(" "))break}return s}function M(l,s){let n=[];try{let o=C(s),t=P(o,".claude","skills");if(!W(t))return n;let u=
|
|
3
|
+
`):l}function H(l){let s={},o=v(l).split(`
|
|
4
|
+
`);for(let t of o){let u=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*):\s*(.*)$/);if(u)s[u[1].toLowerCase()]=u[2].trim();else if(t.trim()&&!t.startsWith("#")&&!t.startsWith(" ")&&!t.startsWith(" "))break}return s}function M(l,s){let n=[];try{let o=C(s),t=P(o,".claude","skills");if(!W(t))return n;let u=L(t,{withFileTypes:!0});for(let e of u){if(!e.isDirectory()&&!e.isSymbolicLink())continue;let i=P(t,e.name,"SKILL.md");if(W(i))try{let a=j(i,"utf-8"),r=H(a),m=r.name??e.name,c=r.description??"";n.push({name:m,description:c,roleName:s,roleId:l,path:i,rawFrontmatter:r})}catch{}}}catch{}return n}F();var O=new Set(["the","a","an","is","are","was","were","be","been","being","have","has","had","do","does","did","will","would","could","should","may","might","must","shall","can","need","dare","ought","used","to","of","in","for","on","with","at","by","from","as","into","through","during","before","after","above","below","between","under","again","further","then","once","here","there","when","where","why","how","all","each","few","more","most","other","some","such","no","nor","not","only","own","same","so","than","too","very","just","also","now","and","but","or","if","because","until","while","about","against","this","that","these","those","it","its"]);function S(l){return l.toLowerCase().replace(/[^a-z0-9\s]/g," ").split(/\s+/).filter(s=>s.length>1&&!O.has(s))}function g(l,s){if(s.length===0)return 0;let n=S(l),o=0;for(let t of s){n.includes(t)&&o++;for(let u of n)u.startsWith(t)&&u!==t&&(o+=.5)}return o}function D(l){let s=w(),n=new Map;if(l.length===0)return n;let o=l.map(()=>"?").join(","),t=s.prepare(`
|
|
5
5
|
SELECT rs.task_type, rs.score_json, t.status, t.error_category, t.completed_at, rs.created_at
|
|
6
6
|
FROM role_scores rs
|
|
7
7
|
JOIN tasks t ON t.id = rs.task_id
|
|
8
8
|
WHERE rs.task_type IN (${o})
|
|
9
|
-
`).all(...l),u=new Map;for(let e of t){let i=e.task_type,a=u.get(i);a||(a={successes:0,failures:0,lastSuccessAt:null,lastFailureAt:null,errorCounts:new Map},u.set(i,a));let r=JSON.parse(e.score_json);e.status==="completed"||r.taskSuccess===1?(a.successes++,e.completed_at?a.lastSuccessAt=e.completed_at:e.created_at&&(a.lastSuccessAt=e.created_at)):(a.failures++,e.completed_at&&(a.lastFailureAt=e.completed_at),e.error_category&&a.errorCounts.set(e.error_category,(a.errorCounts.get(e.error_category)??0)+1))}for(let[e,i]of u){let a=i.successes+i.failures,r=Array.from(i.errorCounts.entries()).map(([m,c])=>({category:m,count:c})).sort((m,c)=>c.count-m.count);n.set(e,{totalTasks:a,successCount:i.successes,failureCount:i.failures,successRate:a>0?i.successes/a:0,lastSuccessAt:i.lastSuccessAt,lastFailureAt:i.lastFailureAt,commonErrors:r})}return n}var k=null,y=0,
|
|
9
|
+
`).all(...l),u=new Map;for(let e of t){let i=e.task_type,a=u.get(i);a||(a={successes:0,failures:0,lastSuccessAt:null,lastFailureAt:null,errorCounts:new Map},u.set(i,a));let r=JSON.parse(e.score_json);e.status==="completed"||r.taskSuccess===1?(a.successes++,e.completed_at?a.lastSuccessAt=e.completed_at:e.created_at&&(a.lastSuccessAt=e.created_at)):(a.failures++,e.completed_at&&(a.lastFailureAt=e.completed_at),e.error_category&&a.errorCounts.set(e.error_category,(a.errorCounts.get(e.error_category)??0)+1))}for(let[e,i]of u){let a=i.successes+i.failures,r=Array.from(i.errorCounts.entries()).map(([m,c])=>({category:m,count:c})).sort((m,c)=>c.count-m.count);n.set(e,{totalTasks:a,successCount:i.successes,failureCount:i.failures,successRate:a>0?i.successes/a:0,lastSuccessAt:i.lastSuccessAt,lastFailureAt:i.lastFailureAt,commonErrors:r})}return n}var k=null,y=0,z=3e4,x=class l{static build(s=!1){let n=Date.now();if(!s&&k&&n-y<z)return k;let o=[],t=_("active"),u=new Map,e=A();for(let r of e){if(!r.enabled)continue;let m=E(r.installPath);if(m)for(let c of m.skills){let d=[];for(let f of t){let h=u.get(f.id);h||(h=R(f),u.set(f.id,h)),h.plugins.some(b=>b.name===r.name||b.name===r.id)&&d.push({roleId:f.id,roleName:f.name})}let p=N(c.name,c.description);o.push({name:c.name,description:c.description,source:"plugin",sourceName:r.name??r.id,boundRoles:d,triggers:p,errorPatterns:c.error_patterns?.map(f=>({pattern:f.pattern,category:f.category,userAction:f.user_action}))})}}for(let r of t){let m=M(r.id,r.name);for(let c of m){let d=r.name==="adam-automator"?"adam-automator":"role-workspace",p=o.find(f=>f.name===c.name&&f.sourceName===c.roleName);if(p)p.boundRoles.some(f=>f.roleId===r.id)||p.boundRoles.push({roleId:r.id,roleName:r.name});else{let f=N(c.name,c.description);o.push({name:c.name,description:c.description,source:d,sourceName:c.roleName,boundRoles:[{roleId:r.id,roleName:r.name}],triggers:f})}}}k=o,y=n;let i=o.map(r=>r.name),a=D(i);for(let r of o){let m=a.get(r.name);m&&(r.health=m)}return o}static query(s){return l.build().filter(o=>{if(s.source&&o.source!==s.source||s.roleId&&!o.boundRoles.some(t=>t.roleId===s.roleId))return!1;if(s.query){let t=S(s.query),u=g(o.name,t),e=g(o.description,t),i=Math.max(...o.triggers.map(r=>g(r,t)));if(u+e+i===0)return!1}return!0})}static match(s,n=3){let o=l.build(),t=S(s);return t.length===0?[]:o.map(e=>{let i=g(e.name,t)*2,a=g(e.description,t),r=Math.max(...e.triggers.map(m=>g(m,t)*1.5));return{entry:e,score:i+a+r}}).filter(e=>e.score>0).sort((e,i)=>i.score-e.score).slice(0,n).map(e=>e.entry)}static invalidateCache(){k=null,y=0}};function N(l,s){let n=[];for(let t of l.split(/[_-]/))t.length>2&&n.push(t.toLowerCase());let o=s.slice(0,200).toLowerCase();for(let t of o.split(/\W+/))t.length>4&&n.push(t);return[...new Set(n)]}export{x as a};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import{b as X,c as I,d as D}from"./chunk-NPGZRSGL.js";import{a as G,e as Y,g as Q}from"./chunk-QZ34KQ76.js";import{b as A}from"./chunk-CLNYHWZ6.js";import{a as C,d as ge}from"./chunk-BKNXRSJU.js";import{b as B,h as J,i as z}from"./chunk-LZDO4PXK.js";import{s as H}from"./chunk-RBJPQYV3.js";import{a as v}from"./chunk-L7JP7DUO.js";import{c as W,l as ue}from"./chunk-L47LZYVG.js";import{l as E,n as me}from"./chunk-BPXS4QEO.js";import{c as F,h as ce}from"./chunk-BLCNUT53.js";import{c as w,e as q}from"./chunk-245WE5AF.js";import{existsSync as _e}from"fs";import{createHash as Ie}from"crypto";import{isAbsolute as be}from"path";ge();me();q();import{v4 as pe}from"uuid";function re(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:k(e.attachments_json),targets:k(e.targets_json),firstDeliveredAt:e.first_delivered_at,lastDeliveredAt:e.last_delivered_at,createdAt:e.created_at,traceId:e.trace_id??void 0}}function k(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function ne(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=E(),r=Date.now(),n=e.deliveredAt??r,i=t.prepare("SELECT * FROM user_visible_events WHERE event_key = ?").get(e.eventKey);if(!i){let p=pe();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(p,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??w()??null),Z(e.eventKey)}let s=fe(k(i.targets_json),e.targets??[]),l=ye(k(i.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(l),JSON.stringify(s),n,e.traceId??w()??null,e.eventKey),Z(e.eventKey)}function Z(e){let t=E().prepare("SELECT * FROM user_visible_events WHERE event_key = ?").get(e);return t?re(t):void 0}function Le(e){let t=E(),r=e.excludeSourceIds??[],n=[e.viewerKey,e.since,e.until],i=`
|
|
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&&(i+=` AND source_id NOT IN (${r.map(()=>"?").join(",")})`,n.push(...r)),i+=" ORDER BY last_delivered_at ASC",e.limit!==void 0&&(i+=" LIMIT ?",n.push(e.limit)),t.prepare(i).all(...n).map(re)}function fe(e,t){let r=[...e];for(let n of t){let i=ee(n);r.some(s=>ee(s)===i)||r.push(n)}return r}function ee(e){return[e.type,e.channelId??"",e.webhookUrl??"",e.chatId??"",e.sessionId??""].join("|")}function ye(e,t){let r=[...e];for(let n of t){let i=te(n),s=r.findIndex(l=>te(l)===i);s>=0?r[s]={...r[s],...n}:r.push(n)}return r}function te(e){return e.artifactId?`artifact:${e.artifactId}`:["file",e.filename??"",e.sizeBytes??"",e.mimeType??""].join("|")}ce();import{v4 as oe}from"uuid";q();ue();import{basename as x,extname as se}from"path";function ie(e){return W(e).filter(t=>t.kind==="file"&&!!t.blobPath)}function he(e){let t=e.mime??"";return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function ve(e){let t=x(e.key).replace(/[\\/]/g,"-");if(e.originalFilename){let r=x(e.originalFilename).replace(/[\\/]/g,"-");if(se(r))return r}if(se(t))return t;if(e.mime){let r=Q(e.mime);if(r&&r!==".bin"&&t)return`${t}${r}`}return e.originalFilename?x(e.originalFilename).replace(/[\\/]/g,"-"):t||(e.blobPath?x(e.blobPath):e.id)}function ae(e){return e.map(t=>({path:t.blobPath,mediaType:he(t),filename:ve(t),contentType:t.mime,mimeType:t.mime,artifactId:t.id,locator:t.locator,sizeBytes:t.sizeBytes,purpose:t.purpose,contentHash:t.contentHash}))}var b=F("adam"),K=class{_dedupCache=new Map;_rateLimitWindows=new Map;_recentlySentIds=new Set;_laneTails=new Map;async _acquireLane(t,r){let n=`${t}:${r}`,i=this._laneTails.get(n)??Promise.resolve(),s,l=new Promise(p=>{s=p});return this._laneTails.set(n,l),l.then(()=>{this._laneTails.get(n)===l&&this._laneTails.delete(n)}),await i,s}isRecentlySent(t){return this._recentlySentIds.has(t)}async send(t){let{taskId:r,channelId:n,chatId:i,content:s,messageType:l,platform:p,webhookUrl:o,replyMarkup:T,replyToMessageId:_,quoteExcerpt:L,quoteTitle:R,mediaUrl:U,mediaType:N,attachments:P,dedupDiscriminator:j}=t,g=Ve(l),le=g!=="reply"&&!!r,d;if(le){d=`${r}:${n??"none"}:${i??"none"}:${g}${j?`:${j}`:""}`;let m=this._dedupCache.get(d);if(m&&Date.now()-m.timestamp<300*1e3)return b.debug({dedupKey:d},"Dedup hit, returning cached log entry"),{success:!0,logEntryId:m.logEntryId}}if(n){let m=Date.now(),f=6e4,u=this._rateLimitWindows.get(n);u||(u=[],this._rateLimitWindows.set(n,u));let V=m-f;for(;u.length>0&&u[0]<V;)u.shift();if(u.length>=60){let O=oe();b.warn({channelId:n,count:u.length},"Rate limited, not sending");let y={type:"channel",channelId:n,chatId:i??""};return this._writeOutboundReceipt(t,y,s,"failure"),{success:!1,logEntryId:O,error:"rate_limited"}}u.push(m)}let de=p??(n?A(n)?.platform:void 0)??"unknown",$=o?s:G(s,de,r),a=oe(),c={id:a,ruleId:void 0,taskId:r??void 0,status:"pending",target:n&&i?{type:"channel",channelId:n,chatId:i}:o?{type:"webhook",webhookUrl:o}:{type:"channel",channelId:n??"",chatId:i??""},content:$,attempts:0,createdAt:Date.now(),expiresAt:Date.now()+1440*60*1e3,source:"direct",messageType:g};X(c),d&&this._dedupCache.set(d,{logEntryId:a,timestamp:Date.now()});try{let m=Ue(U);if(m)return I(a,"failed",m),d&&this._dedupCache.delete(d),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"failed",error:m,messageType:g}),this._writeOutboundReceipt(t,c.target,s,"failure"),{success:!1,logEntryId:a,error:m};if(o){let f=await fetch(o,{method:"POST",body:JSON.stringify({result:s,taskId:r,timestamp:new Date().toISOString()}),signal:AbortSignal.timeout(1e4)});if(f.ok)return D(a),this._recordDeliveryLedgerAfterSuccess(t,c.target,g,s),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"delivered",messageType:g}),{success:!0,logEntryId:a};{let u=`Webhook returned ${f.status}`;return I(a,"failed",u),d&&this._dedupCache.delete(d),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"failed",error:u,messageType:g}),{success:!1,logEntryId:a,error:u}}}else if(n&&i){let{getChannelManager:f}=await Se(),u=f();if(!u){let h="ChannelManager not available";return I(a,"failed",h),d&&this._dedupCache.delete(d),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"failed",error:h,messageType:g}),this._writeOutboundReceipt(t,c.target,s,"failure"),{success:!1,logEntryId:a,error:h}}let V={content:$,messageType:g,...T?{replyMarkup:T}:{},..._?{replyToMessageId:_}:{},...L?{quoteExcerpt:L}:{},...R?{quoteTitle:R}:{},...U?{mediaUrl:U}:{},...N?{mediaType:N}:{},...P?{attachments:P}:{}},O=await this._acquireLane(n,i),y;try{y=await u.sendMessage(n,i,V)}finally{O()}if(y===null){let h="Channel adapter send failed (returned null)";return I(a,"failed",h),d&&this._dedupCache.delete(d),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"failed",error:h,messageType:g}),this._writeOutboundReceipt(t,c.target,s,"failure"),{success:!1,logEntryId:a,error:h}}if(y&&(this._recentlySentIds.add(y),setTimeout(()=>this._recentlySentIds.delete(y),300*1e3)),y?.startsWith("queued-")){let h="queued_not_delivered";return d&&this._dedupCache.delete(d),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"pending",error:h,messageType:g}),{success:!1,messageId:y,logEntryId:a,error:h}}return D(a),this._recordDeliveryLedgerAfterSuccess(t,c.target,g,s),this._writeOutboundReceipt(t,c.target,s,"success"),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"delivered",messageType:g}),{success:!0,messageId:y??void 0,logEntryId:a}}else{let f="No channelId/chatId or webhookUrl provided";return I(a,"failed",f),d&&this._dedupCache.delete(d),{success:!1,logEntryId:a,error:f}}}catch(m){let f=m instanceof Error?m.message:String(m);return I(a,"failed",f),d&&this._dedupCache.delete(d),v.emit({type:"delivery_status_change",logEntryId:a,taskId:r,target:c.target,status:"failed",error:f,messageType:g}),this._writeOutboundReceipt(t,c.target,s,"failure"),{success:!1,logEntryId:a,error:f}}}_writeOutboundReceipt(t,r,n,i){if(r.type!=="channel"||!r.channelId)return;let s=w();if(!s){b.debug({taskId:t.taskId,channelId:r.channelId,outcome:i},"Outbound receipt skipped: no active trace context");return}let l=(t.attachments??[]).map(o=>o.artifactId).filter(o=>typeof o=="string"&&o.length>0),p=t.actorToolName??"OutboundGateway.send";try{z({traceId:s,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:l.length>0?l:void 0},actor:{traceId:s,toolName:p,taskId:t.taskId},outcome:i})}catch(o){o instanceof J?b.warn({errors:o.errors,taskId:t.taskId,channelId:r.channelId},"Outbound receipt validation failed"):b.warn({error:o instanceof Error?o.message:String(o),taskId:t.taskId},"Outbound receipt write failed")}}async redeliverExecutionTo(t){let r=t.includeArtifacts??!0,n=t.messageType??"result_delivery",i=t.dedupDiscriminator??`redelivery:${Date.now()}`,s=r?t.fileArtifacts??ie(t.executionId):[],l=s.length>0?ae(s):void 0,p=[];for(let o of t.targets){let T=A(o.channelId);if(!T){p.push({target:{channelId:o.channelId,chatId:o.chatId},deliveryLogId:"",status:"failed",attachmentCount:0,error:`Channel not found: ${o.channelId}`});continue}let _=await this.send({taskId:t.executionId,sessionId:t.sessionId,channelId:o.channelId,chatId:o.chatId,content:t.content,messageType:n,platform:T.platform,attachments:l,dedupDiscriminator:i,actorToolName:t.actorToolName});p.push({target:{channelId:o.channelId,chatId:o.chatId},deliveryLogId:_.logEntryId,status:_.success?"delivered":"failed",attachmentCount:s.length,..._.error?{error:_.error}:{}})}return{deliveries:p}}_recordDeliveryLedgerAfterSuccess(t,r,n,i){if(Te(n,t.taskId))try{let s=we(t,r);if(!s){C({source:"delivery_ledger",severity:"warning",sourceId:t.taskId,message:`Skipped user-visible delivery ledger write for ${n}: viewer identity unresolved`});return}let l=Ee(t.taskId),p=xe(i);ne({eventKey:`${s}|${l.sourceId}|${n}|${p}`,sourceType:l.sourceType,sourceId:l.sourceId,taskId:t.taskId,templateId:l.templateId,templateName:l.templateName,messageType:n,viewerKey:s,title:l.templateName,contentPreview:i,attachments:(t.attachments??[]).map(Ae),targets:[ke(r)]})}catch(s){let l=s instanceof Error?s.message:String(s);b.warn({error:l,taskId:t.taskId,messageType:n},"User-visible delivery ledger write failed");try{C({source:"delivery_ledger",severity:"error",sourceId:t.taskId,message:l})}catch{}}}};function Te(e,t){return t?!["reply","assistant_text","user_message","approval","approval_prompt"].includes(e):!1}function we(e,t){if(e.viewerKey)return e.viewerKey;if(t.type==="channel"&&t.channelId)return Y({type:"channel",channelId:t.channelId,chatId:t.chatId})}function Ee(e){let t=B(e);if(!t)return{sourceType:"task",sourceId:e};let r=H(t.templateId);return{sourceType:"template_execution",sourceId:t.id,templateId:t.templateId,templateName:r?.name}}function Ae(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 ke(e){if(e.type==="webhook")return{type:"webhook",webhookUrl:e.webhookUrl};let t=e.channelId?A(e.channelId):void 0;return{type:"channel",channelId:e.channelId,chatId:e.chatId,label:t?.name}}function xe(e){return Ie("sha256").update(e).digest("hex")}var S=null;function Se(){return S||(S=import("./channels-2DFKJ33W.js")),S}function it(){S=null}function Ue(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(!be(t))return"mediaUrl must be absolute";if(!_e(t))return"mediaUrl file does not exist"}function Ve(e){return e==="report"?"status_report":e==="deliver"?"result_delivery":e}var M=null;function Oe(){return M||(M=new K),M}function at(e){return Oe().isRecentlySent(e)}export{Le as a,ie as b,K as c,it as d,Oe as e,at as f};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{l as e,n as s}from"./chunk-BPXS4QEO.js";s();import{v4 as u}from"uuid";var r,a;function i(){return r||(r=e().prepare(`INSERT INTO chat_tool_calls (id, trace_id, session_id, tool_name, tool_input_json, tool_output_summary, called_at)
|
|
2
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`)),r}function d(){return a||(a=e().prepare("SELECT * FROM chat_tool_calls WHERE trace_id = ? ORDER BY called_at ASC")),a}function I(t){let o=u(),n=t.calledAt??Date.now(),l=t.toolInput!==void 0?JSON.stringify(t.toolInput):null;return i().run(o,t.traceId,t.sessionId??null,t.toolName,l,t.toolOutputSummary??null,n),{id:o,traceId:t.traceId,sessionId:t.sessionId,toolName:t.toolName,toolInput:t.toolInput,toolOutputSummary:t.toolOutputSummary,calledAt:n}}function g(t){return d().all(t).map(n=>({id:n.id,traceId:n.trace_id,sessionId:n.session_id??void 0,toolName:n.tool_name,toolInput:n.tool_input_json?c(n.tool_input_json):void 0,toolOutputSummary:n.tool_output_summary??void 0,calledAt:n.called_at}))}function f(t,o){if(o.length===0)return!1;let l=`SELECT 1 FROM chat_tool_calls WHERE trace_id = ? AND tool_name IN (${o.map(()=>"?").join(",")}) LIMIT 1`;return e().prepare(l).get(t,...o)!==void 0}function c(t){try{return JSON.parse(t)}catch{return}}export{I as a,g as b,f as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as e,d as t,h as a}from"./chunk-WBAPIPST.js";a();var n={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,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,confidence:.2,successRate:.15,tokenCost:.05},globalBudgetTokens:1500,retrievalDecayDays:30,attributionThresholds:{high:.7,low:.4},antiFlipMinUses:5,antiFlipMaxSuccessRate:.3,reflection:{maxBudgetUsd:5}},watchdog:{enabled:!0,intervalMinutes:5,rules:{managerHealthCheck:{enabled:!0,action:"notify",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,beliefConfidenceMin:.2,beliefStaleDays:60}}},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"}};export{n as a};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{l as r,n}from"./chunk-BPXS4QEO.js";import{c,e as u}from"./chunk-245WE5AF.js";import{c as d,e as o}from"./chunk-FCV2DPZQ.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
|
+
INSERT INTO audit_diagnostics (id, source, severity, trace_id, source_id, message, created_at)
|
|
3
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as m,c as d}from"./chunk-FCV2DPZQ.js";import o from"pino";import{Writable as g}from"stream";function b(n){r.push(n)}function L(){if(u)try{return m("pino-pretty")({colorize:!0,translateTime:"HH:MM:ss.l",ignore:"pid,hostname"})}catch{}return process.stdout}function
|
|
1
|
+
import{a as m,c as d}from"./chunk-FCV2DPZQ.js";import o from"pino";import{Writable as g}from"stream";function b(n){r.push(n)}function L(){if(u)try{return m("pino-pretty")({colorize:!0,translateTime:"HH:MM:ss.l",ignore:"pid,hostname"})}catch{}return process.stdout}function w(n){return a[n]||e}function y(n){e.level=n;for(let t of Object.values(a))t.level=n}function E(){return e.level}function S(n){i=n}function C(){return i}var p,r,h,u,e,a,i,v=d(()=>{p=process.env.ADAM_LOG_LEVEL||"info",r=[];h=new g({write(n,t,c){try{let l=JSON.parse(n.toString());for(let s of r)s(l)}catch{}c()}}),u=process.env.NODE_ENV!=="production";e=o({level:p,timestamp:o.stdTimeFunctions.epochTime,formatters:{level:n=>({level:n}),bindings:n=>({component:n.name})},serializers:{error:o.stdSerializers.err}},o.multistream([{stream:L()},{stream:h}])),a={adam:e.child({name:"adam"}),manager:e.child({name:"manager"}),scheduler:e.child({name:"scheduler"}),api:e.child({name:"api"}),ws:e.child({name:"ws"}),cli:e.child({name:"cli"}),store:e.child({name:"store"}),embedding:e.child({name:"embedding"}),admin:e.child({name:"admin"}),agent:e.child({name:"agent"}),channels:e.child({name:"channels"}),"plugin-sync":e.child({name:"plugin-sync"}),watchdog:e.child({name:"watchdog"}),"chat-manager":e.child({name:"chat-manager"}),execution:e.child({name:"execution"}),"execution-pool":e.child({name:"execution-pool"}),"message-handler":e.child({name:"message-handler"}),"goal-manager":e.child({name:"goal-manager"}),"sandbox-macos":e.child({name:"sandbox-macos"}),"sandbox-linux":e.child({name:"sandbox-linux"}),sandbox:e.child({name:"sandbox"}),audit:e.child({name:"audit"}),config:e.child({name:"config"}),"event-dispatcher":e.child({name:"event-dispatcher"}),"context-compact":e.child({name:"context-compact"}),"workspace-watcher":e.child({name:"workspace-watcher"})};i=null});export{b as a,e as b,w as c,y as d,E as e,S as f,C as g,v as h};
|