adam-agent-server 1.13.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/dist/App-DAFKLTGC.js +13 -0
- package/dist/adam-tools-NTUOJ42F.js +1 -0
- package/dist/approval-handler-D4EXPO2F.js +1 -0
- package/dist/audit-manager-FHYCOJZM.js +1 -0
- package/dist/bree-engine-XKEGOG7I.js +1 -0
- package/dist/channels-LV5F7LUJ.js +1 -0
- package/dist/{channels-WFC26TED.js → channels-PXLE7JHU.js} +1 -1
- package/dist/chunk-34WPSSKK.js +7 -0
- package/dist/{chunk-AQO6IIHV.js → chunk-37TV7A5A.js} +81 -25
- package/dist/chunk-43JFJEUT.js +1 -0
- package/dist/chunk-44DK2I4J.js +47 -0
- package/dist/{chunk-UXDTFTG5.js → chunk-45I2IYIE.js} +1 -1
- package/dist/{chunk-Q2JQFDAK.js → chunk-4UCIJKQS.js} +1 -1
- package/dist/{chunk-7T4B2MZ7.js → chunk-5ZP5TJJA.js} +1 -1
- package/dist/{chunk-ZQ4PNKMQ.js → chunk-7B2DHDUD.js} +1 -1
- package/dist/chunk-7QELXWKT.js +3 -0
- package/dist/chunk-7ZCMGQLK.js +1 -0
- package/dist/chunk-CNKUMQ37.js +12 -0
- package/dist/chunk-DAD4PSIZ.js +13 -0
- package/dist/{chunk-FUWPDXXG.js → chunk-E4NFVJ7F.js} +1 -1
- package/dist/{chunk-O7XQSONJ.js → chunk-EEU56CTK.js} +1 -1
- package/dist/chunk-ENHE6VOF.js +1 -0
- package/dist/{chunk-AVM3O74V.js → chunk-EP26G2WS.js} +1 -1
- package/dist/chunk-F44QHTMI.js +6 -0
- package/dist/{chunk-Y5FFL6UO.js → chunk-FG72WBDO.js} +1 -1
- package/dist/{chunk-SC2DDRYB.js → chunk-FNHW2CRA.js} +1 -1
- package/dist/{chunk-X5V4VMET.js → chunk-FP42MZDK.js} +1 -1
- package/dist/{chunk-PXGK5H5C.js → chunk-HGRL5ZKG.js} +1 -1
- package/dist/chunk-IUASV43X.js +9 -0
- package/dist/chunk-KSFVBI2D.js +1 -0
- package/dist/chunk-KZKDPY53.js +1 -0
- package/dist/chunk-LLGJEDNK.js +3 -0
- package/dist/chunk-MC2R5WMN.js +21 -0
- package/dist/chunk-NNMQGISW.js +1 -0
- package/dist/chunk-NNNDVFEY.js +1 -0
- package/dist/chunk-NTVLV7NI.js +1 -0
- package/dist/{chunk-YKYRNTPV.js → chunk-OMLONR4N.js} +1 -1
- package/dist/{chunk-U2LBBBWO.js → chunk-OPCPSPZ2.js} +1 -1
- package/dist/{chunk-MRTJFYPR.js → chunk-RLNMJ2QY.js} +1 -1
- package/dist/{chunk-PHT24MOV.js → chunk-S2WZL5CT.js} +1 -1
- package/dist/chunk-S6HEPXYU.js +80 -0
- package/dist/chunk-SKN4VSLW.js +1 -0
- package/dist/chunk-TLMG5W3L.js +4 -0
- package/dist/{chunk-WQFNB2MQ.js → chunk-TU643PPA.js} +1 -1
- package/dist/{chunk-S6OV7Z6K.js → chunk-UEYKBU5K.js} +1 -1
- package/dist/{chunk-SWP2JC54.js → chunk-UIMIXDAF.js} +1 -1
- package/dist/{chunk-47COBMRF.js → chunk-UMCM25ZR.js} +1 -1
- package/dist/chunk-VOO3FHMD.js +14 -0
- package/dist/{chunk-L7JP7DUO.js → chunk-WGRTN6TX.js} +1 -1
- package/dist/{chunk-B44X7JAJ.js → chunk-WYALKFT7.js} +1 -1
- package/dist/chunk-XMFTVHCC.js +128 -0
- package/dist/chunk-YLM6QTFR.js +40 -0
- package/dist/{chunk-NPIXYK5G.js → chunk-ZYAK567W.js} +1 -1
- package/dist/cli.js +10 -10
- package/dist/config-25UDTFBM.js +1 -0
- package/dist/{config-GKVOAMY2.js → config-NUQGVGQE.js} +1 -1
- package/dist/db-GKWPRABQ.js +1 -0
- package/dist/{delivery-log-JIQMHBJ5.js → delivery-log-XEZBBSRW.js} +1 -1
- package/dist/engine-P7IWX6CX.js +1 -0
- package/dist/evolution-audit-JJOFW6YU.js +1 -0
- package/dist/{external-api-DOVGA3ML.js → external-api-DQX7ZGRF.js} +1 -1
- package/dist/index.js +69 -36
- package/dist/{learner-OUNQSWN7.js → learner-BP3UDHN7.js} +1 -1
- package/dist/{logger-WEXZORHP.js → logger-4IUSEDG4.js} +1 -1
- package/dist/{memories-ABE7PMQL.js → memories-KPMHJLNT.js} +1 -1
- package/dist/{memory-extractor-ZX2NJIBV.js → memory-extractor-QAS5ANET.js} +2 -2
- package/dist/memory-service-YDBU7L54.js +1 -0
- package/dist/outbound-gateway-WE7Q623W.js +1 -0
- package/dist/{presets-RMW3WO5P.js → presets-UKC5MHGV.js} +1 -1
- package/dist/{role-presets-FAXQRBII.js → role-presets-5DDTPDJ4.js} +1 -1
- package/dist/role-workspace-IHQZS56U.js +1 -0
- package/dist/roles-DLCEQ7V7.js +1 -0
- package/dist/{runtime-QA2DCZYQ.js → runtime-WDAYGKY6.js} +1 -1
- package/dist/server-bus-N5LCY73J.js +1 -0
- package/dist/session-manager-UOMXOJJX.js +1 -0
- package/dist/skill-registry-Q5GXSF6I.js +1 -0
- package/dist/target-resolution-ARTZKRBA.js +1 -0
- package/dist/task-templates-XZWRTAQ5.js +1 -0
- package/dist/template-dispatch-UFAGUOHR.js +1 -0
- package/package.json +10 -1
- package/web/dist/assets/{Button-VPwTNGpF.js → Button-Dr7ksRu4.js} +1 -1
- package/web/dist/assets/{Card-C2N6k4gh.js → Card-B4oFZ8tK.js} +1 -1
- package/web/dist/assets/{ChannelDetail-DktmpO0A.js → ChannelDetail-eIcfA57N.js} +1 -1
- package/web/dist/assets/Channels-mwF1UKzb.js +14 -0
- package/web/dist/assets/{Chat-CggvtidD.js → Chat-PUJ7hpK9.js} +1 -1
- package/web/dist/assets/Dashboard-CmRIajQD.js +1 -0
- package/web/dist/assets/{EmptyState-CWS9PJND.js → EmptyState-CDrBzXK-.js} +1 -1
- package/web/dist/assets/{EnvVarEditor-D0kGIBcl.js → EnvVarEditor-Bray2ESp.js} +1 -1
- package/web/dist/assets/{EventDefDetail-BiXTA6LF.js → EventDefDetail-CfNFbtRL.js} +1 -1
- package/web/dist/assets/Events-Bfjb3zYt.js +1 -0
- package/web/dist/assets/{Evolution-C884p_CE.js → Evolution-CQZZH9YR.js} +1 -1
- package/web/dist/assets/{FeatureRequests-Ck0WQnXX.js → FeatureRequests-Chu9p9jf.js} +1 -1
- package/web/dist/assets/{GoalDetail-DJOyf7By.js → GoalDetail-D6YA6oj3.js} +1 -1
- package/web/dist/assets/Goals-CXSFLkYn.js +1 -0
- package/web/dist/assets/{Logs-6r7fnBn7.js → Logs-B05A1bGU.js} +1 -1
- package/web/dist/assets/{Memories-CvPaqv5r.js → Memories-CeNngSKF.js} +1 -1
- package/web/dist/assets/{Mistakes-aUhkqHDC.js → Mistakes-SOFsb4IS.js} +1 -1
- package/web/dist/assets/{NotFound-R6tIzhL0.js → NotFound-Csw1BuG3.js} +1 -1
- package/web/dist/assets/{PageHeader-D9lLjo0N.js → PageHeader-z6FDKzfu.js} +1 -1
- package/web/dist/assets/Plugins-D4L5kw9U.js +1 -0
- package/web/dist/assets/{RoleDetail-B32225ae.js → RoleDetail-JXZ2Wb0p.js} +3 -3
- package/web/dist/assets/{Roles-CGYsxuq8.js → Roles-DsCqCFHr.js} +1 -1
- package/web/dist/assets/{SectionHeader-BB3H3F_P.js → SectionHeader-SRCKtVA-.js} +1 -1
- package/web/dist/assets/Settings-44MJsbkf.js +1 -0
- package/web/dist/assets/{Strategies-DUps-2I9.js → Strategies-Ck28Clr5.js} +1 -1
- package/web/dist/assets/{Switch-B_R_EX9s.js → Switch-BmTw_pcA.js} +1 -1
- package/web/dist/assets/{Table-D4lT5uHx.js → Table-B0PI8kT6.js} +1 -1
- package/web/dist/assets/{Tabs-CwzWpI-7.js → Tabs-BZ6DxWAE.js} +1 -1
- package/web/dist/assets/{TaskDetail-DKminIM_.js → TaskDetail-ZAA7QN_T.js} +2 -2
- package/web/dist/assets/Work-D2E3HWPo.js +1 -0
- package/web/dist/assets/{es2015-DCW7LI8d.js → es2015-BIlLl5hi.js} +1 -1
- package/web/dist/assets/{index-Bl-2p6d8.js → index-CtdnsiU1.js} +3 -3
- package/web/dist/assets/{useIsMobileLayout-D6Tz5o5h.js → useIsMobileLayout-luhqwSbU.js} +1 -1
- package/web/dist/assets/{usePluginsWithUsage-CSQr03vZ.js → usePluginsWithUsage-8a-Ed6EY.js} +1 -1
- package/web/dist/assets/{vendor-icons-jzPiR6xl.js → vendor-icons-ClLF5FTT.js} +1 -1
- package/web/dist/assets/{vendor-react-CIkiuNDu.js → vendor-react-Kuc9eqr3.js} +1 -1
- package/web/dist/assets/{vendor-state-CEOsUh-T.js → vendor-state-CcqA6KbS.js} +1 -1
- package/web/dist/index.html +6 -6
- package/dist/App-5QZKMPRM.js +0 -13
- package/dist/adam-tools-SQD2V4RJ.js +0 -1
- package/dist/approval-handler-J6RUTICJ.js +0 -1
- package/dist/audit-manager-CWVHQAUI.js +0 -1
- package/dist/bree-engine-VGEYMVNP.js +0 -1
- package/dist/channels-OOIM62BX.js +0 -1
- package/dist/chunk-2BXTT4P2.js +0 -6
- package/dist/chunk-6WRZJVQ2.js +0 -1
- package/dist/chunk-7IFLU3CY.js +0 -4
- package/dist/chunk-B544JOZM.js +0 -3
- package/dist/chunk-DZIEY4CH.js +0 -47
- package/dist/chunk-E4WIUUL4.js +0 -27
- package/dist/chunk-HDHMNT6D.js +0 -1
- package/dist/chunk-JYHOGBCP.js +0 -12
- package/dist/chunk-M3RZWIW3.js +0 -50
- package/dist/chunk-N4ES7TCL.js +0 -1
- package/dist/chunk-OZL6VNOR.js +0 -146
- package/dist/chunk-Q2ISNOBQ.js +0 -1
- package/dist/chunk-QYRI4HYA.js +0 -1
- package/dist/chunk-R2WB5BKF.js +0 -7
- package/dist/chunk-RMGBR3XZ.js +0 -21
- package/dist/chunk-SGIKNIC5.js +0 -49
- package/dist/chunk-TI3AKKWZ.js +0 -80
- package/dist/chunk-ZFDULJGB.js +0 -3
- package/dist/config-DRFRLIVN.js +0 -1
- package/dist/db-FACSMWEY.js +0 -1
- package/dist/engine-OHYWUUMJ.js +0 -1
- package/dist/evolution-audit-M7FSYRQR.js +0 -1
- package/dist/memory-service-UWER3T2S.js +0 -1
- package/dist/outbound-gateway-XDCGAXXW.js +0 -1
- package/dist/role-workspace-ISGPO25D.js +0 -1
- package/dist/roles-WNKRM6FD.js +0 -1
- package/dist/server-bus-GEGVMSCA.js +0 -1
- package/dist/session-manager-SOJXQHHY.js +0 -1
- package/dist/task-templates-IS3DJCZB.js +0 -1
- package/dist/workflow-executor-LOMKVFPV.js +0 -1
- package/web/dist/assets/Channels-ozCXdZMq.js +0 -12
- package/web/dist/assets/Dashboard-z37ZVhzH.js +0 -1
- package/web/dist/assets/Events-C4P3jjZd.js +0 -1
- package/web/dist/assets/Goals-CDZWDuXR.js +0 -1
- package/web/dist/assets/Plugins-CtwoMUoj.js +0 -1
- package/web/dist/assets/Settings-D2jrO8-G.js +0 -1
- package/web/dist/assets/Work-uD_6IieV.js +0 -1
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ Manages task lifecycle, concurrent execution pool, real-time streaming, remote h
|
|
|
42
42
|
| | |
|
|
43
43
|
| +-----v------+ |
|
|
44
44
|
| | Scheduler | | Cron + event triggers
|
|
45
|
-
| | (Bree) | | Multi-step
|
|
45
|
+
| | (Bree) | | Multi-step template executions
|
|
46
46
|
| +-----+------+ |
|
|
47
47
|
| | |
|
|
48
48
|
| +-------v--------+ |
|
|
@@ -67,7 +67,7 @@ Manages task lifecycle, concurrent execution pool, real-time streaming, remote h
|
|
|
67
67
|
|----------|-------------|
|
|
68
68
|
| **Task Management** | Submit, queue, run, cancel; full status tracking; cost and token accounting |
|
|
69
69
|
| **Execution Pool** | Configurable concurrent slot pool; event-driven task pickup; poll-based fallback; crash resilience |
|
|
70
|
-
| **Scheduling** | Cron expressions (5-field); event-driven triggers (`template_complete:<id>`); multi-step
|
|
70
|
+
| **Scheduling** | Cron expressions (5-field); event-driven triggers (`template_complete:<id>`); multi-step templates with dependency DAGs |
|
|
71
71
|
| **Goal System** | Natural language SMART goals; metric trees; Thompson Sampling strategy selection |
|
|
72
72
|
| **Role Model** | Role (identity/personality) with allowedTools/disallowedTools; role-level macOS OS Capabilities; learned rules; memory with hybrid search |
|
|
73
73
|
| **Real-time Streaming** | WebSocket per-task stream + global event bus; structured pino logging |
|
|
@@ -160,7 +160,6 @@ adam tasks cancel <id>
|
|
|
160
160
|
# Info
|
|
161
161
|
adam config [--json]
|
|
162
162
|
adam evolution [-l limit]
|
|
163
|
-
adam register-ai-digest
|
|
164
163
|
```
|
|
165
164
|
|
|
166
165
|
### TUI Slash Commands
|
|
@@ -272,7 +271,7 @@ adam/
|
|
|
272
271
|
│ │ ├── index.ts # CLI entry (commander)
|
|
273
272
|
│ │ ├── daemon.ts # Daemon process management
|
|
274
273
|
│ │ ├── client.ts # HTTP client for daemon
|
|
275
|
-
│ │ ├── commands/ # config, evolution, logs, run, tasks
|
|
274
|
+
│ │ ├── commands/ # config, evolution, logs, run, tasks
|
|
276
275
|
│ │ └── tui/ # Ink terminal UI (21 components, 11 slash commands)
|
|
277
276
|
│ ├── server/
|
|
278
277
|
│ │ ├── app.ts # Fastify + Swagger + static files
|
|
@@ -303,7 +302,7 @@ adam/
|
|
|
303
302
|
│ │ └── evaluator/ # L0-L3 collectors, llm-judge, calibration
|
|
304
303
|
│ ├── scheduler/
|
|
305
304
|
│ │ ├── bree-engine.ts # Cron + event trigger scheduling
|
|
306
|
-
│ │ └──
|
|
305
|
+
│ │ └── template-executor.ts # Multi-step TemplateExecution DAG execution
|
|
307
306
|
│ ├── delivery/
|
|
308
307
|
│ │ ├── engine.ts # Event subscription, rule matching
|
|
309
308
|
│ │ └── outbound-gateway.ts # Dedup, format, anti-loop, retry, rate limit
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{b as C,d as mo,e as cr}from"./chunk-S2WZL5CT.js";import{a as uo,f as ar,h as lr}from"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.js";import"./chunk-FCV2DPZQ.js";import{Box as ro,Text as Wt,useInput as Ci}from"ink";import{useState as wi,useEffect as Io,useRef as Yo}from"react";import{createContext as In,useContext as An,useReducer as Pn}from"react";import{jsx as Mn}from"react/jsx-runtime";var Dn={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 Rn(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 dr=In(null);function ur({children:e}){let[t,o]=Pn(Rn,Dn);return Mn(dr.Provider,{value:{state:t,dispatch:o},children:e})}function Ze(){let e=An(dr);if(!e)throw new Error("useTuiState must be used within TuiProvider");return e}import{useEffect as mr,useRef as gr}from"react";var $n=15e3;function fr(){let{state:e,dispatch:t}=Ze(),o=gr(null),T=gr(null);mr(()=>{T.current=e.session?.id??null},[e.session?.id]),mr(()=>{let u=!0,g=null,d=()=>{o.current&&(clearTimeout(o.current),o.current=null)},c=()=>{d(),o.current=setTimeout(()=>{u&&t({type:"SET_SERVER_UNREACHABLE",unreachable:!0})},$n)};return(()=>{try{g=new mo("/events"),g.on("task_status_change",()=>{}),g.on("approval_request",n=>{if(!u)return;let m=n;t({type:"SET_PENDING_APPROVAL",approval:{taskId:m.taskId,approvalId:m.approvalId,toolName:m.toolName,toolInput:m.toolInput,matchedPattern:m.matchedPattern}})}),g.on("plan_approval_request",n=>{if(!u)return;let m=n;t({type:"SET_PENDING_PLAN_APPROVAL",approval:{taskId:m.taskId,planId:m.planId,roleId:m.roleId,plan:m.plan}})}),g.on("plan_approval_decision",()=>{u&&t({type:"SET_PENDING_PLAN_APPROVAL",approval:null})}),g.on("config_changed",()=>{u&&t({type:"CONFIG_CHANGED"})}),g.on("execution_task_start",n=>{if(!u)return;let m=n,f=T.current;f&&(async()=>{try{let B=await C(`/tasks/${m.taskId}`);u&&B.sourceSessionId===f&&t({type:"SET_ACTIVE_TASK",taskId:m.taskId})}catch{}})()}),g.on("stats_update",n=>{if(!u)return;let m=n;t({type:"UPDATE_STATS",activeTasks:m.activeTasks,queuedTasks:m.queuedTasks,costToday:m.totalCostToday})}),g.connect().then(async()=>{if(u){d(),t({type:"SET_CONNECTED",connected:!0}),t({type:"SET_SERVER_UNREACHABLE",unreachable:!1});try{let n=await C("/version");t({type:"SET_VERSION",version:n.version})}catch{t({type:"SET_VERSION",version:null})}}}).catch(()=>{u&&(t({type:"SET_CONNECTED",connected:!1}),c())})}catch{u&&(t({type:"SET_CONNECTED",connected:!1}),c())}})(),()=>{u=!1,d(),g?.close()}},[t])}import{useEffect as Nn,useRef as _n,useState as pr,useCallback as Ln}from"react";function xr(e){let[t,o]=pr([]),[T,u]=pr(!1),g=_n(null),d=Ln(()=>{o([]),u(!1)},[]);return Nn(()=>{if(!e)return;let c=!0;o([]),u(!0);try{let l=new cr(e);return g.current=l,l.on("reasoning",n=>{if(!c)return;let f=n.content??"";o(B=>{let b=B[B.length-1];if(b?.type==="reasoning"){let S=[...B];return S[S.length-1]={...b,content:b.content+f},S}return[...B,{type:"reasoning",content:f,timestamp:Date.now()}]})}),l.on("tool_call",n=>{if(!c)return;let m=n;o(f=>[...f,{type:"tool_call",content:m.toolName??"unknown tool",timestamp:Date.now(),metadata:{toolName:m.toolName}}])}),l.on("tool_result",n=>{if(!c)return;let m=n;o(f=>[...f,{type:"tool_result",content:m.content??"",timestamp:Date.now()}])}),l.on("error",n=>{if(!c)return;let m=n;o(f=>[...f,{type:"error",content:m.error??"unknown error",timestamp:Date.now()}])}),l.on("complete",n=>{if(!c)return;let m=n;o(f=>[...f,{type:"complete",content:m.result??"",timestamp:Date.now(),metadata:{cost:m.costUsd,turns:m.numTurns,duration:m.totalDurationMs}}]),u(!1)}),l.connect().catch(()=>{c&&(o(n=>[...n,{type:"error",content:"Failed to connect to task stream",timestamp:Date.now()}]),u(!1))}),()=>{c=!1,l.close()}}catch{u(!1)}},[e]),{events:t,isStreaming:T,clearEvents:d}}import{useState as $o,useEffect as On,useCallback as Kt}from"react";function No(e){return{id:e.id,status:e.status,messageCount:e.messageCount,createdAt:e.createdAt,lastActiveAt:e.lastActiveAt,title:e.title}}function Tr(){let[e,t]=$o(null),[o,T]=$o(!0),[u,g]=$o(null),d=Kt(async()=>{try{let B=(await C("/chat/sessions?status=active")).sessions.find(b=>b.source.type==="tui");return B?No(B):null}catch{return null}},[]),c=Kt(async()=>{try{let f=await C("/chat/sessions",{method:"POST",body:{source:{type:"tui"}}}),B=No(f.session);return t(B),B}catch{return g("Failed to create session"),null}},[]),l=Kt(async f=>{try{let B=await C("/chat/messages",{method:"POST",body:{content:f,source:{type:"tui"}}});return t(b=>b&&{...b,messageCount:b.messageCount+1,lastActiveAt:Date.now()}),B}catch{return null}},[]),n=Kt(async()=>{if(!e)return!1;try{return await C(`/chat/sessions/${e.id}/archive`,{method:"POST"}),t(null),!0}catch{return!1}},[e]),m=Kt(async()=>{if(e)try{let f=await C(`/chat/sessions/${e.id}`);t(No(f.session))}catch{t(null)}},[e]);return On(()=>{let f=!1;async function B(){T(!0);let b=await d();f||(b?t(b):await c(),f||T(!1))}return B(),()=>{f=!0}},[]),{session:e,loading:o,error:u,sendMessage:l,createNewSession:c,archiveCurrentSession:n,refreshSession:m,setSession:t}}import{useEffect as hr,useRef as Vn,useState as qn}from"react";function yr(e){let[t,o]=qn(null),T=Vn(new Set);return hr(()=>{if(!e)return;let u=!0,g=null;try{g=new mo("/chat/stream"),g.on("chat_message",d=>{if(!u)return;let l=d.message;l&&l.sessionId===e&&l.role==="assistant"&&(T.current.has(l.id)||(T.current.add(l.id),o(l)))}),g.connect().catch(()=>{})}catch{}return()=>{u=!1,g?.close()}},[e]),hr(()=>{T.current.clear(),o(null)},[e]),{latestMessage:t}}import{Box as _o,Text as De}from"ink";import{Fragment as go,jsx as pe,jsxs as Dt}from"react/jsx-runtime";var Fn=90;function br({children:e}){return pe(_o,{children:e})}function vr(){let{state:e}=Ze(),t=e.session,T=(t?Math.floor((Date.now()-t.lastActiveAt)/6e4):1/0)>=25,u=e.connected?"up":"down",g=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,l=(process.stdout.columns??100)<Fn,n=Dt(go,{children:[pe(De,{bold:!0,children:e.version?`Adam v${e.version}`:"Adam"}),pe(De,{dimColor:!0,children:" | "}),pe(De,{color:e.connected?"green":"red",children:(e.connected,"\u25CF")}),pe(De,{children:` ${u}`}),pe(De,{dimColor:!0,children:" | "}),pe(De,{children:g.toLowerCase()})]}),m=Dt(go,{children:[pe(De,{children:`${e.activeTasks} run / ${e.queuedTasks} q`}),pe(De,{dimColor:!0,children:" | "}),pe(De,{children:`$${e.costToday.toFixed(2)}`}),e.view==="chat"&&t&&Dt(go,{children:[pe(De,{dimColor:!0,children:" | "}),pe(De,{children:d}),T&&Dt(go,{children:[pe(De,{dimColor:!0,children:" | "}),pe(De,{color:"yellow",children:"timeout"})]})]})]});return l?Dt(_o,{flexDirection:"column",borderStyle:"round",borderDimColor:!0,paddingX:1,children:[pe(br,{children:n}),pe(br,{children:m})]}):Dt(_o,{borderStyle:"round",borderDimColor:!0,paddingX:1,children:[n,pe(De,{dimColor:!0,children:" | "}),m]})}import{Box as fo,Text as po,useInput as Wn}from"ink";import{useState as Oo,useMemo as Gn}from"react";import Hn from"ink-text-input";var Un=[{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 Lo(e){let t=e.toLowerCase();return Un.filter(o=>o.name.startsWith(t))}function Cr(e){let t=Lo(e.toLowerCase());return t.length===1?t[0]:void 0}import{jsx as xo,jsxs as zt}from"react/jsx-runtime";function wr({onSubmit:e}){let[t,o]=Oo(""),[T,u]=Oo(0),[g,d]=Oo(!1),c=t.startsWith("/")&&t.length>=1,l=t.slice(1),n=Gn(()=>c?Lo(l):[],[c,l]),m=b=>{o(b),b.startsWith("/")?(d(!0),u(0)):d(!1)},f=()=>{let b=t.trim();if(b){if(b.startsWith("/")){let S=b.slice(1),r=Cr(S);e(r?`/${r.name}`:b)}else e(b);o(""),d(!1)}},B=b=>{e(`/${b.name}`),o(""),d(!1)};return Wn((b,S)=>{if(!(!g||!c||n.length===0)){if(S.upArrow){u(r=>r<=0?n.length-1:r-1);return}if(S.downArrow){u(r=>r>=n.length-1?0:r+1);return}if(S.tab){let r=n[T];r&&B(r);return}if(S.escape){d(!1),o("");return}}},{isActive:g&&c&&n.length>0}),zt(fo,{flexDirection:"column",children:[g&&c&&n.length>0&&xo(fo,{flexDirection:"column",marginBottom:0,paddingX:1,children:n.map((b,S)=>{let r=S===T;return zt(fo,{children:[xo(po,{color:r?"cyan":"gray",bold:r,children:r?"\u25B8 ":" "}),zt(po,{color:r?"cyan":"white",bold:r,children:["/",b.name]}),zt(po,{dimColor:!0,children:[" \u2014 ",b.description]})]},b.name)})}),zt(fo,{borderStyle:"round",borderDimColor:!0,children:[xo(po,{bold:!0,children:"\u25B8 "}),xo(Hn,{value:t,onChange:m,onSubmit:f,placeholder:"Type a message or / for commands..."})]})]})}import{Box as Rt,Text as ke,useInput as jn}from"ink";import{useState as Kn}from"react";import{jsx as Le,jsxs as et}from"react/jsx-runtime";function zn({content:e,expanded:t}){let o=e.split(`
|
|
2
|
+
`);return o.length<=5?Le(ke,{color:"green",children:e}):t?Le(ke,{color:"green",children:e}):et(ke,{color:"green",children:[o.slice(0,3).join(`
|
|
3
|
+
`),`
|
|
4
|
+
`,et(ke,{dimColor:!0,children:["(",o.length," lines) [Ctrl+O] expand"]})]})}function Xn({event:e,expanded:t}){switch(e.type){case"reasoning":return Le(Rt,{children:Le(ke,{color:"gray",children:e.content})});case"tool_call":return Le(Rt,{children:et(ke,{color:"blue",children:["[tool] ",e.metadata?.toolName??e.content]})});case"tool_result":return et(Rt,{flexDirection:"column",children:[Le(ke,{color:"blue",dimColor:!0,children:"[result]"}),Le(zn,{content:e.content,expanded:t})]});case"error":return Le(Rt,{children:et(ke,{color:"red",children:["[error] ",e.content]})});case"complete":return et(Rt,{flexDirection:"column",marginTop:1,children:[e.content&&Le(ke,{children:e.content}),Le(ke,{dimColor:!0,children:"\u2500\u2500\u2500 Task complete \u2500\u2500\u2500"}),e.metadata?.cost!==void 0&&et(ke,{dimColor:!0,children:["Cost: $",e.metadata.cost.toFixed(4)]}),e.metadata?.turns!==void 0&&et(ke,{dimColor:!0,children:["Turns: ",e.metadata.turns]}),e.metadata?.duration!==void 0&&et(ke,{dimColor:!0,children:["Duration: ",(e.metadata.duration/1e3).toFixed(1),"s"]})]});default:return null}}function Sr({events:e,isStreaming:t}){let[o,T]=Kn(!1),u=e.some(g=>g.type==="tool_result"&&g.content.split(`
|
|
5
|
+
`).length>5);return jn((g,d)=>{d.ctrl&&g==="o"&&T(c=>!c)},{isActive:u}),e.length===0&&!t?null:et(Rt,{flexDirection:"column",children:[t&&e.length===0&&Le(ke,{dimColor:!0,children:"Waiting for response..."}),e.map((g,d)=>Le(Xn,{event:g,expanded:o},d)),u&&Le(ke,{dimColor:!0,children:o?"[Ctrl+O] collapse full output":"[Ctrl+O] expand full output"})]})}import{Box as Br,Text as kr}from"ink";import{jsx as Vo,jsxs as Qn}from"react/jsx-runtime";function Er({messages:e}){return e.length===0?null:Vo(Br,{flexDirection:"column",children:e.map((t,o)=>Qn(Br,{flexDirection:"column",marginBottom:1,children:[Vo(kr,{dimColor:!0,bold:!0,children:t.role==="user"?"You:":"Adam:"}),Vo(kr,{children:t.content})]},o))})}import{Box as Xt,Text as tt,useInput as Jn}from"ink";import{jsx as ot,jsxs as Qt}from"react/jsx-runtime";function Ir({approval:e,onResolved:t}){return Jn(o=>{o==="a"?C(`/tasks/${e.taskId}/approve`,{method:"POST",body:{approvalId:e.approvalId}}).then(()=>t()).catch(()=>t()):o==="r"&&C(`/tasks/${e.taskId}/reject`,{method:"POST",body:{approvalId:e.approvalId,reason:"rejected by user"}}).then(()=>t()).catch(()=>t())}),Qt(Xt,{flexDirection:"column",borderStyle:"round",borderColor:"yellow",paddingX:1,children:[ot(tt,{bold:!0,color:"yellow",children:"\u26A0 APPROVAL REQUIRED"}),Qt(Xt,{marginTop:1,children:[ot(tt,{children:"Tool: "}),ot(tt,{bold:!0,children:e.toolName})]}),Qt(Xt,{children:[ot(tt,{children:"Input: "}),ot(tt,{children:JSON.stringify(e.toolInput)})]}),Qt(Xt,{children:[ot(tt,{children:"Pattern: "}),ot(tt,{dimColor:!0,children:e.matchedPattern})]}),Qt(Xt,{marginTop:1,children:[ot(tt,{color:"green",children:"[a] Approve"}),ot(tt,{children:" "}),ot(tt,{color:"red",children:"[r] Reject"})]})]})}import{Box as Jt,Text as Ee,useInput as Yn}from"ink";import{useState as Zn,useEffect as es}from"react";import{jsx as dt,jsxs as ze}from"react/jsx-runtime";var ts=300;function Ar({approval:e,onResolved:t,onTimeout:o}){let[T,u]=Zn(ts);es(()=>{let d=setInterval(()=>{u(c=>c<=1?(clearInterval(d),o(),0):c-1)},1e3);return()=>clearInterval(d)},[o]),Yn(d=>{d==="a"?C(`/tasks/${e.taskId}/approve-plan`,{method:"POST",body:{planId:e.planId,decision:"allow",approvalType:"once"}}).then(()=>t()).catch(()=>t()):d==="r"?C(`/tasks/${e.taskId}/approve-plan`,{method:"POST",body:{planId:e.planId,decision:"deny",reason:"rejected by user"}}).then(()=>t()).catch(()=>t()):d==="p"&&C(`/tasks/${e.taskId}/approve-plan`,{method:"POST",body:{planId:e.planId,decision:"allow",approvalType:"permanent"}}).then(()=>t()).catch(()=>t())});let g=e.plan.overallRisk==="high"?"red":e.plan.overallRisk==="medium"?"yellow":"green";return ze(Jt,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,children:[dt(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: ",T,"s"]}),ze(Jt,{marginTop:1,children:[dt(Ee,{children:"Overall Risk: "}),dt(Ee,{bold:!0,color:g,children:e.plan.overallRisk.toUpperCase()})]}),ze(Ee,{bold:!0,children:["Steps (",e.plan.steps.length,"):"]}),e.plan.steps.map(d=>{let c=d.riskLevel==="high"?"red":d.riskLevel==="medium"?"yellow":"green";return ze(Jt,{paddingLeft:2,children:[ze(Ee,{children:["[",d.index,"] "]}),dt(Ee,{children:d.description}),ze(Ee,{dimColor:!0,children:[" (",d.toolsNeeded.join(", "),")"]}),ze(Ee,{color:c,children:[" [",d.riskLevel,"]"]})]},d.index)}),ze(Jt,{marginTop:1,children:[dt(Ee,{dimColor:!0,children:"Permissions: "}),dt(Ee,{children:Object.keys(e.plan.requiredPermissions).join(", ")||"none"})]}),ze(Jt,{marginTop:1,children:[dt(Ee,{color:"green",children:"[a] Allow once "}),dt(Ee,{color:"green",children:"[p] Allow permanent "}),dt(Ee,{color:"red",children:"[r] Deny"})]})]})}import{Box as xe,Text as K,useInput as ds}from"ink";import{useEffect as us,useState as yt,useCallback as Nr}from"react";import{Box as ge,Text as F,useInput as os}from"ink";import{useEffect as rs,useState as Mt}from"react";import{jsx as ie,jsxs as H}from"react/jsx-runtime";var Pr={plan:!0,result:!1,routing:!0,error:!0},ns={pending:"gray",queued:"gray",running:"yellow",paused:"yellow",completed:"green",failed:"red",cancelled:"gray",blocked:"yellow"};function $r({taskId:e,onBack:t}){let[o,T]=Mt(null),[u,g]=Mt([]),[d,c]=Mt([]),[l,n]=Mt(null),[m,f]=Mt(Pr),[B,b]=Mt(!1);rs(()=>{let v=!1;return T(null),g([]),c([]),n(null),f(Pr),b(!1),C(`/tasks/${e}`).then(({task:k})=>{v||T(k)}).catch(k=>{v||n(k instanceof Error?k.message:String(k))}),C(`/tasks/${e}/plan`).then(({plans:k})=>{v||g(k)}).catch(()=>{v||g([])}),C(`/tasks/${e}/delivery-log?limit=8`).then(({logs:k})=>{v||c(k)}).catch(()=>{v||c([])}),()=>{v=!0}},[e]);let S=v=>{f(k=>({...k,[v]:!k[v]}))};if(os((v,k)=>{if(v==="b"||k.escape){t();return}v==="1"&&S("plan"),v==="2"&&S("result"),v==="3"&&S("routing"),v==="4"&&S("error"),v==="5"&&b(j=>!j)}),l)return H(ge,{flexDirection:"column",children:[H(F,{color:"red",children:["Task detail failed: ",l]}),ie(F,{dimColor:!0,children:"[b] Back"})]});if(!o)return H(F,{dimColor:!0,children:["Loading task ",e.slice(0,8),"..."]});let r=u[0],s=ls(o.deliverTo,o.reportTo),I=d.length>0?`${d.length} delivery event${d.length===1?"":"s"}`:"No delivery events";return H(ge,{flexDirection:"column",children:[H(ge,{children:[H(F,{bold:!0,color:"cyan",children:["Task ",o.id.slice(0,8)]}),ie(F,{dimColor:!0,children:" \u2022 "}),ie(F,{color:ns[o.status]??"white",bold:!0,children:o.status.toUpperCase()})]}),H(F,{dimColor:!0,children:[o.roleId?`role ${o.roleId}`:"no role"," \u2022 ",Mr(o.createdAt)," \u2022 ",as(o.totalDurationMs)]}),H(ge,{marginTop:1,flexDirection:"column",children:[ie(F,{bold:!0,children:"Summary"}),ie(F,{children:B?o.prompt:ss(o.prompt,240)}),o.prompt.length>240&&H(F,{dimColor:!0,children:["[5] ",B?"collapse prompt":"expand prompt"]}),H(ge,{marginTop:1,flexDirection:"column",children:[H(F,{dimColor:!0,children:["Cost: ",is(o.costUsd)]}),H(F,{dimColor:!0,children:["Turns: ",o.numTurns??"\u2014"]}),H(F,{dimColor:!0,children:["Template: ",o.templateId??"\u2014"]}),H(F,{dimColor:!0,children:["Source Session: ",o.sourceSessionId?.slice(0,8)??"\u2014"]})]})]}),H(ge,{marginTop:1,flexDirection:"column",children:[H(F,{bold:!0,children:["[1] Plan ",m.plan?"hide":"show"]}),ie(F,{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"}),m.plan&&r&&H(ge,{marginTop:1,flexDirection:"column",children:[r.plan.steps.map(v=>H(ge,{flexDirection:"column",marginBottom:1,children:[H(F,{children:[v.index,". ",v.description]}),H(F,{dimColor:!0,children:[v.riskLevel," risk \u2022 ",v.toolsNeeded.join(", ")||"no tools listed"]}),v.expectedOutput?H(F,{dimColor:!0,children:["Expected: ",v.expectedOutput]}):null]},v.index)),r.learnedRules&&r.learnedRules.length>0&&H(ge,{flexDirection:"column",children:[ie(F,{color:"blue",bold:!0,children:"Learned Rules"}),r.learnedRules.map((v,k)=>H(F,{dimColor:!0,children:["\u2022 ",v]},k))]})]})]}),H(ge,{marginTop:1,flexDirection:"column",children:[H(F,{bold:!0,children:["[2] Result ",m.result?"hide":"show"]}),ie(F,{dimColor:!0,children:o.result?"Execution produced output.":"No result captured yet."}),m.result&&ie(ge,{marginTop:1,children:ie(F,{children:o.result?Rr(o.result,18):"No result yet."})})]}),H(ge,{marginTop:1,flexDirection:"column",children:[H(F,{bold:!0,children:["[3] Routing ",m.routing?"hide":"show"]}),H(F,{dimColor:!0,children:[s," \u2022 ",I]}),m.routing&&H(ge,{marginTop:1,flexDirection:"column",children:[ie(F,{color:"cyan",children:"Deliver To"}),Dr(o.deliverTo),ie(F,{color:"cyan",children:"Report To"}),Dr(o.reportTo),d.length>0&&H(ge,{marginTop:1,flexDirection:"column",children:[ie(F,{color:"cyan",children:"Recent Delivery"}),d.map(v=>H(F,{dimColor:!0,children:[v.status," \u2022 ",cs(v)," \u2022 ",Mr(v.createdAt)]},v.id))]})]})]}),H(ge,{marginTop:1,flexDirection:"column",children:[H(F,{bold:!0,children:["[4] Error ",m.error?"hide":"show"]}),ie(F,{dimColor:!0,children:o.error?"Execution returned an error condition.":"No error recorded."}),m.error&&o.error&&ie(ge,{marginTop:1,children:ie(F,{color:"red",children:Rr(o.error,16)})})]}),ie(ge,{marginTop:1,children:ie(F,{dimColor:!0,children:"[1] plan [2] result [3] routing [4] error [5] prompt [b] back"})})]})}function Dr(e){return!e||e.length===0?ie(F,{dimColor:!0,children:" none"}):ie(ge,{flexDirection:"column",children:e.map((t,o)=>ie(F,{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 Rr(e,t){let o=e.split(`
|
|
6
|
+
`);return o.length<=t?e:`${o.slice(0,t).join(`
|
|
7
|
+
`)}
|
|
8
|
+
\u2026`}function ss(e,t){let o=e.replace(/\s+/g," ").trim();return o.length<=t?o:`${o.slice(0,t-1)}\u2026`}function is(e){return e!==void 0?`$${e.toFixed(4)}`:"\u2014"}function as(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),T=t%60;return T===0?`${o}m`:`${o}m ${T}s`}function Mr(e){return new Date(e).toLocaleString()}function ls(e,t){let o=e?.length??0,T=t?.length??0;return o===0&&T===0?"No delivery targets":`${o} output target${o===1?"":"s"} \u2022 ${T} report target${T===1?"":"s"}`}function cs(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 gs,jsx as te,jsxs as oe}from"react/jsx-runtime";var _r={pending:"gray",queued:"gray",running:"yellow",paused:"yellow",completed:"green",failed:"red",cancelled:"gray",blocked:"yellow"},To=["all","pending","queued","running","completed","failed","cancelled","blocked"],qo=15;function yo({onBack:e}){let[t,o]=yt([]),[T,u]=yt(!0),[g,d]=yt("list"),[c,l]=yt(0),[n,m]=yt("all"),[f,B]=yt(0),[b,S]=yt(0),[r,s]=yt(null),I=Nr(async()=>{u(!0);try{let R=new URLSearchParams({limit:"100"});n!=="all"&&R.set("status",n);let V=await C(`/tasks?${R}`);o(V.tasks)}catch{o([])}finally{u(!1)}},[n]);us(()=>{I()},[I]);let v=Math.max(1,Math.ceil(t.length/qo)),k=t.slice(b*qo,(b+1)*qo),j=Nr(async()=>{let R=k[c];if(R)try{await C(`/tasks/${R.id}/cancel`,{method:"POST"}),s(`Cancelled: ${R.id.slice(0,8)}`),d("list"),I()}catch(V){s(`Failed: ${V instanceof Error?V.message:String(V)}`),d("list")}},[k,c,I]);if(ds((R,V)=>{if(g==="detail"){(V.escape||V.return||R==="q")&&d("list");return}if(g==="cancelling"){R==="y"?j():d("list");return}if(g==="filter"){if(V.escape){d("list");return}V.upArrow&&f>0&&B(L=>L-1),V.downArrow&&f<To.length-1&&B(L=>L+1),V.return&&(m(To[f]),S(0),l(0),d("list"));return}if(V.escape||R==="q"){e();return}if(V.upArrow&&c>0&&l(L=>L-1),V.downArrow&&c<k.length-1&&l(L=>L+1),V.return&&k[c]&&d("detail"),R==="x"&&k[c]){let L=k[c];["running","pending","queued","paused"].includes(L.status)?(d("cancelling"),s(null)):s(`Cannot cancel task in status: ${L.status}`)}R==="f"&&(B(To.indexOf(n)),d("filter")),R==="r"&&I(),(V.pageDown||R==="n")&&b<v-1&&(S(L=>L+1),l(0)),(V.pageUp||R==="p")&&b>0&&(S(L=>L-1),l(0))}),T)return te(K,{dimColor:!0,children:"Loading tasks..."});if(g==="filter")return oe(xe,{flexDirection:"column",children:[te(K,{bold:!0,children:"Filter by status:"}),To.map((R,V)=>te(xe,{children:oe(K,{color:V===f?"cyan":"white",children:[V===f?"> ":" ",R,R===n?" (current)":""]})},R)),te(K,{dimColor:!0,children:"Enter: select Esc: cancel"})]});if(g==="detail"&&k[c])return te($r,{taskId:k[c].id,onBack:()=>d("list")});if(g==="cancelling"&&k[c])return oe(xe,{flexDirection:"column",children:[oe(K,{color:"red",children:['Cancel task "',k[c].id.slice(0,8),'"? (y/n)']}),r&&te(K,{color:"red",children:r})]});let J=k[c]??null;return oe(xe,{flexDirection:"column",children:[oe(xe,{children:[oe(K,{bold:!0,children:["Tasks (",t.length,")"]}),n!=="all"&&oe(K,{dimColor:!0,children:[" [filter: ",n,"]"]}),oe(K,{dimColor:!0,children:[" \u2022 Page ",b+1,"/",v]})]}),r&&te(K,{color:r.startsWith("Failed")||r.startsWith("Cannot")?"red":"green",children:r}),t.length===0?oe(K,{dimColor:!0,children:["No tasks found",n!=="all"?` with status "${n}"`:"","."]}):oe(xe,{marginTop:1,flexDirection:"row",gap:2,children:[te(xe,{flexDirection:"column",flexGrow:3,children:k.map((R,V)=>{let L=V===c,$=_r[R.status]??"white";return oe(xe,{flexDirection:"column",marginBottom:1,children:[oe(xe,{children:[te(K,{color:L?"cyan":"gray",bold:L,children:L?"\u276F ":" "}),te(K,{color:$,bold:!0,children:R.status.toUpperCase()}),te(K,{dimColor:!0,children:` ${R.id.slice(0,8)}`})]}),te(xe,{paddingLeft:2,children:te(K,{color:L?"white":void 0,children:ho(R.prompt,L?72:56)})}),te(xe,{paddingLeft:2,children:oe(K,{dimColor:!0,children:[Vr(R.createdAt)," \u2022 ",Lr(R)," \u2022 ",Or(R.costUsd)]})})]},R.id)})}),te(xe,{flexDirection:"column",flexGrow:2,borderStyle:"round",borderDimColor:!0,paddingX:1,children:J?oe(gs,{children:[te(K,{bold:!0,children:"Preview"}),oe(xe,{marginTop:1,children:[te(K,{color:_r[J.status]??"white",bold:!0,children:J.status.toUpperCase()}),te(K,{dimColor:!0,children:` ${J.id.slice(0,8)}`})]}),te(K,{children:ho(J.prompt,220)}),oe(xe,{marginTop:1,flexDirection:"column",children:[oe(K,{dimColor:!0,children:["Role: ",J.roleId??J.agentId??"\u2014"]}),oe(K,{dimColor:!0,children:["Created: ",Vr(J.createdAt)]}),oe(K,{dimColor:!0,children:["Duration: ",Lr(J)]}),oe(K,{dimColor:!0,children:["Cost: ",Or(J.costUsd)]}),oe(K,{dimColor:!0,children:["Turns: ",J.numTurns??"\u2014"]})]}),J.error?oe(xe,{marginTop:1,flexDirection:"column",children:[te(K,{color:"red",bold:!0,children:"Error"}),te(K,{color:"red",children:ho(J.error,180)})]}):J.result?oe(xe,{marginTop:1,flexDirection:"column",children:[te(K,{color:"green",bold:!0,children:"Latest Result"}),te(K,{children:ho(J.result,180)})]}):null,te(xe,{marginTop:1,children:te(K,{dimColor:!0,children:"Enter opens full detail"})})]}):te(K,{dimColor:!0,children:"Select a task to inspect it."})})]})]})}function ms(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}function ho(e,t){return ms(e.replace(/\s+/g," ").trim(),t)}function Lr(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 T=Math.floor(o/60),u=o%60;return u===0?`${T}m`:`${T}m ${u}s`}function Or(e){return e!==void 0?`$${e.toFixed(4)}`:"no cost"}function Vr(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 T=Math.floor(o/60);return T<24?`${T}h ago`:`${Math.floor(T/24)}d ago`}lr();import{Box as St,Text as Re,useInput as fs}from"ink";import{useEffect as ps,useState as qr}from"react";import{readFileSync as xs,existsSync as Ts}from"fs";import{parse as hs}from"yaml";import{Fragment as bs,jsx as Ie,jsxs as Oe}from"react/jsx-runtime";function Fr({onBack:e}){let[t,o]=qr(null),[T,u]=qr(null);return fs((g,d)=>{(d.escape||g==="q")&&e()}),ps(()=>{try{let g=ar;if(!Ts(g)){u(`Config file not found: ${g}`);return}let d=xs(g,"utf-8");o(hs(d))}catch(g){u(g.message)}},[]),T?Oe(St,{flexDirection:"column",children:[Ie(Re,{color:"red",children:T}),Ie(Re,{dimColor:!0,children:"Press Esc to go back"})]}):t?Oe(St,{flexDirection:"column",children:[Ie(Re,{bold:!0,children:"Configuration (Esc to go back)"}),Ie(St,{marginTop:1,flexDirection:"column",children:Ie(Fo,{obj:t,indent:0})})]}):Ie(Re,{dimColor:!0,children:"Loading config..."})}function Fo({obj:e,indent:t}){let o=" ".repeat(t);return Ie(bs,{children:Object.entries(e).map(([T,u])=>Ie(ys,{label:T,value:u,indent:t,parentKey:T},T))})}function ys({label:e,value:t,indent:o,parentKey:T}){let u=" ".repeat(o);return Array.isArray(t)?Oe(St,{flexDirection:"column",children:[Oe(Re,{children:[u,Ie(Re,{color:"cyan",children:e}),":"]}),t.length===0?Oe(Re,{dimColor:!0,children:[u," []"]}):t.map((g,d)=>Ie(Ur,{value:g,indent:o+1,parentKey:T,index:d},`${e}-${d}`))]}):t&&typeof t=="object"?Oe(St,{flexDirection:"column",children:[Oe(Re,{children:[u,Ie(Re,{color:"cyan",children:e}),":"]}),Ie(Fo,{obj:t,indent:o+1})]}):Oe(Re,{children:[u,Ie(Re,{color:"cyan",children:e}),": ",Wr(T,Gr(t))]})}function Ur({value:e,indent:t,parentKey:o,index:T}){let u=" ".repeat(t);return Array.isArray(e)?Oe(St,{flexDirection:"column",children:[Oe(Re,{children:[u,"- [",T,"]"]}),e.map((g,d)=>Ie(Ur,{value:g,indent:t+1,parentKey:o,index:d},`${T}-${d}`))]}):e&&typeof e=="object"?Oe(St,{flexDirection:"column",children:[Oe(Re,{children:[u,"-"]}),Ie(Fo,{obj:e,indent:t+1})]}):Oe(Re,{children:[u,"- ",Wr(o,Gr(e))]})}function Wr(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 Gr(e){return e===null?"null":e===void 0?"undefined":typeof e=="string"?e:String(e)}import{Box as bo,Text as Xe,useInput as vs}from"ink";import{useEffect as Cs,useState as Uo}from"react";import{jsx as Yt,jsxs as rt}from"react/jsx-runtime";function Hr({onBack:e}){let[t,o]=Uo([]),[T,u]=Uo(!0),[g,d]=Uo(null);return vs((c,l)=>{(l.escape||c==="q")&&e()}),Cs(()=>{C("/evolution-audit?limit=20").then(c=>{o(c),u(!1)}).catch(c=>{d(c.message),u(!1)})},[]),T?Yt(Xe,{dimColor:!0,children:"Loading evolution log..."}):g?rt(bo,{flexDirection:"column",children:[Yt(Xe,{color:"red",children:g}),Yt(Xe,{dimColor:!0,children:"Press Esc to go back"})]}):t.length===0?rt(bo,{flexDirection:"column",children:[Yt(Xe,{dimColor:!0,children:"No evolution records yet"}),Yt(Xe,{dimColor:!0,children:"Press Esc to go back"})]}):rt(bo,{flexDirection:"column",children:[rt(Xe,{bold:!0,children:["Evolution Audit Log (",t.length," records) \u2014 Esc to go back"]}),t.map(c=>rt(bo,{flexDirection:"column",marginTop:1,children:[rt(Xe,{bold:!0,children:["[",new Date(c.timestamp).toLocaleString(),"]"]}),c.triggerTaskId&&rt(Xe,{dimColor:!0,children:[" Task: ",c.triggerTaskId.slice(0,8)]}),c.diff.split(`
|
|
9
|
+
`).map((l,n)=>l.startsWith("+")?rt(Xe,{color:"green",children:[" ",l]},n):l.startsWith("-")?rt(Xe,{color:"red",children:[" ",l]},n):rt(Xe,{dimColor:!0,children:[" ",l]},n))]},c.id))]})}import{Box as ut,Text as ae,useInput as ws}from"ink";import Ss from"ink-text-input";import{useEffect as Bs,useState as $t}from"react";import{jsx as Me,jsxs as Te}from"react/jsx-runtime";var ks={pending:"gray",planning:"cyan",executing:"yellow",evaluating:"blue",replanning:"magenta",completed:"green",failed:"red",paused:"gray"};function Es(e,t=20){let o=Math.round(e*t),T=t-o;return"\u2588".repeat(o)+"\u2591".repeat(T)}function Is(e){let t=Math.max(0,Math.floor((e-Date.now())/864e5));return t===0?"< 1d":`${t}d`}function vo({onBack:e}){let[t,o]=$t([]),[T,u]=$t(null),[g,d]=$t("list"),[c,l]=$t(""),[n,m]=$t(!1),[f,B]=$t(null);ws((r,s)=>{if(g==="create"){s.escape&&(d("list"),l(""),B(null));return}(s.escape||r==="q")&&e(),r==="c"&&(d("create"),B(null)),r==="r"&&b()});let b=()=>{C("/goals?limit=20").then(({goals:r})=>o(r)).catch(r=>u(r.message))};Bs(()=>{b()},[]);let S=async r=>{if(r.trim()){m(!0),B(null);try{let s=await C("/goals",{method:"POST",body:{input:r.trim()}});B(`Goal created: ${s.goal.name}`),l(""),d("list"),b()}catch(s){B(`Failed: ${s instanceof Error?s.message:String(s)}`)}finally{m(!1)}}};return T?Te(ut,{flexDirection:"column",children:[Te(ae,{color:"red",children:["Failed to load goals: ",T]}),Me(ae,{dimColor:!0,children:"Press Esc or q to return"})]}):g==="create"?Te(ut,{flexDirection:"column",children:[Me(ae,{bold:!0,children:"Create Goal"}),Me(ae,{dimColor:!0,children:"Describe your SMART goal in natural language:"}),Te(ut,{marginTop:1,children:[Me(ae,{color:"cyan",children:"> "}),Me(Ss,{value:c,onChange:l,onSubmit:S})]}),n&&Me(ae,{color:"yellow",children:"Creating goal..."}),f&&Me(ae,{color:f.startsWith("Failed")?"red":"green",children:f}),Me(ae,{dimColor:!0,children:"Press Esc to cancel"})]}):Te(ut,{flexDirection:"column",children:[Te(ae,{bold:!0,children:["Goal Dashboard (",t.length,")"]}),t.length===0?Me(ae,{dimColor:!0,children:"No goals found. Press c to create one."}):Me(ut,{marginTop:1,flexDirection:"column",children:t.map(r=>{let s=r.targetValue>0?r.currentValue/r.targetValue:0,I=ks[r.status]??"white";return Te(ut,{marginBottom:1,flexDirection:"column",children:[Te(ut,{children:[Me(ae,{bold:!0,color:I,children:r.name}),Te(ae,{dimColor:!0,children:[" (",r.role,")"]}),Me(ae,{dimColor:!0,children:" \u2014 "}),Me(ae,{color:I,children:r.status})]}),Te(ut,{children:[Te(ae,{dimColor:!0,children:[" ",Es(s)," "]}),Te(ae,{color:s>=1?"green":"white",children:[Math.round(s*100),"%"]}),Te(ae,{dimColor:!0,children:[" (",r.currentValue,"/",r.targetValue," ",r.metricType,")"]})]}),Te(ut,{children:[Te(ae,{dimColor:!0,children:[" \u23F0 ",Is(r.deadline)," left"]}),Te(ae,{dimColor:!0,children:[" | \u{1F4B0} $",r.budgetUsd]}),Te(ae,{dimColor:!0,children:[" | ID: ",r.id.slice(0,8)]})]})]},r.id)})}),Me(ae,{dimColor:!0,children:"c:create r:refresh Esc/q:back"})]})}import{Box as Nt,Text as Fe,useInput as As}from"ink";import{useEffect as Ps,useState as jr}from"react";import{jsx as gt,jsxs as mt}from"react/jsx-runtime";function Ds(e,t,o=15){let T=e/(e+t),u=Math.round(T*o);return"\u2593".repeat(u)+"\u2591".repeat(o-u)}function Kr({onBack:e}){let[t,o]=jr([]),[T,u]=jr(null);if(As((d,c)=>{(c.escape||d==="q")&&e()}),Ps(()=>{C("/strategies?limit=50").then(d=>o(d.strategies??[])).catch(d=>u(d.message))},[]),T)return mt(Nt,{flexDirection:"column",children:[mt(Fe,{color:"red",children:["Failed to load strategies: ",T]}),gt(Fe,{dimColor:!0,children:"Press Esc or q to return"})]});if(t.length===0)return mt(Nt,{flexDirection:"column",children:[gt(Fe,{dimColor:!0,children:"No strategies yet. Strategies are created when goals are executed."}),gt(Fe,{dimColor:!0,children:"Press Esc or q to return"})]});let g=new Map;for(let d of t){let c=`${d.role}/${d.taskType}`,l=g.get(c)??[];l.push(d),g.set(c,l)}return mt(Nt,{flexDirection:"column",children:[gt(Fe,{bold:!0,children:"Strategy Lab"}),gt(Fe,{dimColor:!0,children:"Thompson Sampling populations \u2014 higher bar = higher selection probability"}),gt(Nt,{marginTop:1,flexDirection:"column",children:Array.from(g.entries()).map(([d,c])=>mt(Nt,{marginBottom:1,flexDirection:"column",children:[gt(Fe,{bold:!0,color:"cyan",children:d}),c.sort((l,n)=>{let m=l.alpha/(l.alpha+l.beta);return n.alpha/(n.alpha+n.beta)-m}).map(l=>{let n=l.alpha/(l.alpha+l.beta);return mt(Nt,{children:[gt(Fe,{dimColor:!0,children:" "}),mt(Fe,{children:[Ds(l.alpha,l.beta)," "]}),mt(Fe,{color:n>.6?"green":n>.4?"yellow":"red",children:[(n*100).toFixed(0),"%"]}),mt(Fe,{dimColor:!0,children:[" ",l.name," (\u03B1=",l.alpha.toFixed(1)," \u03B2=",l.beta.toFixed(1)," trials=",l.totalTrials,")"]})]},l.id)})]},d))}),gt(Fe,{dimColor:!0,children:"Press Esc or q to return"})]})}import{Box as he,Text as z,useInput as _s}from"ink";import Wo from"ink-text-input";import{useEffect as Ls,useState as We,useCallback as bt}from"react";import{CronExpressionParser as Os}from"cron-parser";import{useState as Rs,useEffect as Ms,useCallback as zr,useRef as $s}from"react";var Ns=3e3;function Ue(){let[e,t]=Rs(null),o=$s(null),T=zr(()=>{o.current&&(clearTimeout(o.current),o.current=null),t(null)},[]),u=zr((g,d)=>{o.current&&(clearTimeout(o.current),o.current=null),t({text:g,type:d}),d==="success"&&(o.current=setTimeout(()=>{t(null),o.current=null},Ns))},[]);return Ms(()=>()=>{o.current&&clearTimeout(o.current)},[]),{message:e,setMessage:u,clearMessage:T}}import{jsx as Z,jsxs as re}from"react/jsx-runtime";var Go=["manual","cron","once","template_complete"],Xr=["cron","once","template_complete"],Co={name:"",triggerType:"manual",cron:"",targetTemplateId:"",stepPrompt:""};function Vs(e){try{return Os.parse(e).next().toDate().toLocaleString()}catch{return"invalid"}}function wo({onBack:e}){let[t,o]=We([]),[T,u]=We(!0),[g,d]=We(0),[c,l]=We("list"),[n,m]=We({...Co}),[f,B]=We("name"),[b,S]=We(null),{message:r,setMessage:s,clearMessage:I}=Ue(),[v,k]=We(!1),[j,J]=We(!1),[R,V]=We({}),[L,$]=We(null),[Y,se]=We(!1),Se=bt(()=>{u(!0),C("/task-templates").then(({templates:x})=>{o(x),new Set(x.flatMap(P=>P.steps?.map(W=>W.roleId).filter(Boolean)??[])).size>0?C("/roles").then(({roles:P})=>{if(!Array.isArray(P)){V({});return}V(Object.fromEntries(P.map(W=>[W.id,W.name])))}).catch(()=>V({})):V({}),u(!1)}).catch(()=>u(!1))},[]);Ls(()=>{Se()},[Se]);let Ct=c==="create"||c==="edit",_e=bt(async()=>{let x=t[g];if(!(!x||v)){k(!0),s(`Triggering ${x.name}...`,"loading");try{let w=await C(`/task-templates/${x.id}/run`,{method:"POST"});s(`Triggered: ${x.name} (${w.executionId})`,"success")}catch(w){s(`Trigger failed: ${w instanceof Error?w.message:String(w)}`,"error")}finally{k(!1)}}},[t,g,v,s]),ve=bt(async()=>{let x=t[g];if(!x||j)return;if(!Xr.includes(x.trigger?.type??"manual")){s("Toggle not applicable for manual triggers","error");return}let w=!x.enabled;J(!0),s(`${x.name} \u2192 ${w?"enabling":"disabling"}...`,"loading");try{await C(`/task-templates/${x.id}`,{method:"PATCH",body:{enabled:w}}),o(P=>P.map(W=>W.id===x.id?{...W,enabled:w}:W)),s(`${x.name} ${w?"enabled":"disabled"}`,"success")}catch(P){s(`Toggle failed: ${P instanceof Error?P.message:String(P)}`,"error")}finally{J(!1)}},[t,g,j,s]),It=bt(async()=>{if(Y)return;let x=t[g];if(x){se(!0);try{let w=await C(`/task-templates/${x.id}/dependents`,{method:"GET"});$({templateId:x.id,templateName:x.name,executionCount:w.dependents.executionCount,taskCount:w.dependents.taskCount}),w.dependents.taskCount===0&&w.dependents.executionCount===0?s(`Delete "${x.name}"? Press d to confirm, Esc to cancel.`,"loading"):s(`"${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){s(`Failed to inspect dependents: ${w instanceof Error?w.message:String(w)}`,"error")}finally{se(!1)}}},[t,g,s,Y]),Ce=bt(async x=>{let w=L;if(w){$(null);try{let P=await C(`/task-templates/${w.templateId}?mode=${x}`,{method:"DELETE"}),W=[];P.deletedCounts.templateExecutions>0&&W.push(`${P.deletedCounts.templateExecutions} template exec`),P.deletedCounts.tasks>0&&W.push(`${P.deletedCounts.tasks} task${P.deletedCounts.tasks===1?"":"s"}`);let de=W.length?` (+${W.join(", ")})`:"";s(`Deleted: ${w.templateName}${de}`,"success"),Se(),d(Be=>Math.max(0,Math.min(Be,t.length-2)))}catch(P){s(`Delete failed: ${P instanceof Error?P.message:String(P)}`,"error")}}},[L,Se,s,t.length]),je=bt(()=>{$(null),I()},[I]),ht=bt(()=>{let x=t[g];x&&(S(x.id),m({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??""}),B("name"),l("edit"))},[t,g]),_=bt(async()=>{let x={name:n.name,trigger:{type:n.triggerType,...n.triggerType==="cron"?{cron:n.cron}:{},...n.triggerType==="template_complete"&&n.targetTemplateId?{event:`template_complete:${n.targetTemplateId}`}:{}},steps:[{id:"step-1",prompt:n.stepPrompt}],enabled:!0};try{c==="create"?(await C("/task-templates",{method:"POST",body:x}),s(`Created: ${n.name}`,"success")):c==="edit"&&b&&(await C(`/task-templates/${b}`,{method:"PATCH",body:x}),s(`Updated: ${n.name}`,"success"))}catch(w){s(`Save failed: ${w instanceof Error?w.message:String(w)}`,"error")}l("list"),m({...Co}),S(null),Se()},[n,c,b,Se]);return _s((x,w)=>{if(Ct){if(w.escape){l("list"),m({...Co}),S(null);return}if(w.return){let P=["name","triggerType","cron","stepPrompt"],de=n.triggerType==="template_complete"?["name","triggerType","targetTemplateId","stepPrompt"]:P.filter(G=>G!=="targetTemplateId"),Be=de.indexOf(f);if(Be<de.length-1){let G=Be+1;if(de[G]==="cron"&&n.triggerType!=="cron"&&G++,G<de.length){B(de[G]);return}}_();return}if(w.tab&&f==="triggerType"){m(P=>{let W=Go.indexOf(P.triggerType);return{...P,triggerType:Go[(W+1)%Go.length]}});return}if(w.tab&&f==="targetTemplateId"){m(P=>{let W=t.filter(G=>G.id!==b),de=W.findIndex(G=>G.id===P.targetTemplateId),Be=W[(de+1)%W.length];return{...P,targetTemplateId:Be?.id??""}});return}return}if(L){if(w.escape){je();return}if(x==="D"&&w.shift){Ce("with_tasks");return}if(x==="d"&&!w.shift){Ce("template_only");return}return}if(w.escape||x==="q"){e();return}if(w.upArrow){d(P=>Math.max(0,P-1));return}if(w.downArrow){d(P=>Math.min(t.length-1,P+1));return}if(x==="t"){_e();return}if(x==="d"&&!w.shift){It();return}if(x==="e"){ht();return}if(x==="c"){m({...Co}),B("name"),l("create");return}if(x==="s"||x===" "){ve();return}x==="r"&&(Se(),I())}),T?Z(z,{dimColor:!0,children:"Loading templates..."}):Ct?re(he,{flexDirection:"column",children:[re(z,{bold:!0,children:[c==="create"?"Create Template":"Edit Template"," (Esc to cancel)"]}),re(he,{marginTop:1,flexDirection:"column",children:[re(he,{children:[re(z,{bold:f==="name",color:f==="name"?"cyan":void 0,children:["Name:"," "]}),f==="name"?Z(Wo,{value:n.name,onChange:x=>m(w=>({...w,name:x})),placeholder:"template name"}):Z(z,{children:n.name||"(empty)"})]}),re(he,{children:[re(z,{bold:f==="triggerType",color:f==="triggerType"?"cyan":void 0,children:["Trigger:"," "]}),Z(z,{children:n.triggerType}),f==="triggerType"&&Z(z,{dimColor:!0,children:" (Tab to cycle, Enter to continue)"})]}),n.triggerType==="cron"&&re(he,{children:[re(z,{bold:f==="cron",color:f==="cron"?"cyan":void 0,children:["Cron:"," "]}),f==="cron"?Z(Wo,{value:n.cron,onChange:x=>m(w=>({...w,cron:x})),placeholder:"*/5 * * * *"}):Z(z,{children:n.cron||"(empty)"})]}),n.triggerType==="template_complete"&&re(he,{children:[re(z,{bold:f==="targetTemplateId",color:f==="targetTemplateId"?"cyan":void 0,children:["Target:"," "]}),Z(z,{children:(()=>{let x=t.find(w=>w.id===n.targetTemplateId);return x?x.name:n.targetTemplateId?`(id: ${n.targetTemplateId.slice(0,8)})`:"(Tab to select)"})()}),f==="targetTemplateId"&&Z(z,{dimColor:!0,children:" (Tab to cycle)"})]}),re(he,{children:[re(z,{bold:f==="stepPrompt",color:f==="stepPrompt"?"cyan":void 0,children:["Step Prompt:"," "]}),f==="stepPrompt"?Z(Wo,{value:n.stepPrompt,onChange:x=>m(w=>({...w,stepPrompt:x})),placeholder:"What should this template do?"}):Z(z,{children:n.stepPrompt||"(empty)"})]})]}),Z(he,{marginTop:1,children:Z(z,{dimColor:!0,children:"Enter: next field / submit | Esc: cancel"})})]}):re(he,{flexDirection:"column",children:[re(z,{bold:!0,children:["Automations (",t.length,") (Esc to go back)"]}),r&&Z(he,{marginTop:1,children:re(z,{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?Z(he,{marginTop:1,children:Z(z,{dimColor:!0,children:"No templates found. Press c to create one."})}):Z(he,{marginTop:1,flexDirection:"column",children:t.map((x,w)=>{let P=w===g,W=x.trigger?.type==="cron"&&x.trigger?.cron?Vs(x.trigger.cron):"",de=new Set(x.steps?.filter(G=>G.roleId).map(G=>G.roleId)),Be=x.steps?.length>1?`${x.steps.length} steps${de.size>0?` / ${de.size} roles`:""}`:`${x.steps?.length??0} step`;return re(he,{flexDirection:"column",children:[re(he,{children:[Z(z,{color:P?"cyan":void 0,bold:P,children:P?"> ":" "}),Z(z,{color:P?"cyan":void 0,bold:P,children:Zt(x.name,24)}),Z(z,{dimColor:!0,children:Zt(x.trigger?.type,10)}),Xr.includes(x.trigger?.type??"manual")?Z(z,{color:x.enabled?"green":"gray",children:Zt(x.enabled?"on":"off",6)}):Z(z,{dimColor:!0,children:Zt("\u2014",6)}),Z(z,{dimColor:!0,children:Zt(Be,18)}),W&&re(z,{dimColor:!0,children:["next: ",W]})]}),P&&x.steps?.length>1&&Z(he,{flexDirection:"column",marginLeft:4,marginTop:0,children:x.steps.map((G,Ye)=>re(he,{children:[re(z,{dimColor:!0,children:[" ",Ye+1,". "]}),Z(z,{dimColor:!0,children:G.id}),G.roleId&&re(z,{color:"yellow",children:[" @",R[G.roleId]??G.roleId]}),G.dependsOn&&G.dependsOn.length>0&&re(z,{dimColor:!0,children:[" (after: ",G.dependsOn.join(", "),")"]}),G.config&&re(z,{dimColor:!0,children:[" ","[",[G.config.timeout!==void 0?`timeout:${G.config.timeout}s`:"",G.config.maxTurns!==void 0?`turns:${G.config.maxTurns}`:""].filter(Boolean).join(", "),"]"]})]},G.id))})]},x.id)})}),Z(he,{marginTop:1,children:Z(z,{dimColor:!0,children:"t:trigger s:toggle d:delete e:edit c:create r:refresh"})})]})}function Zt(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}import{Box as vt,Text as Ve,useInput as qs}from"ink";import Fs from"ink-text-input";import{useEffect as Us,useState as _t,useCallback as Qr}from"react";import{jsx as Ae,jsxs as Bt}from"react/jsx-runtime";function Jr({onBack:e}){let[t,o]=_t([]),[T,u]=_t(""),[g,d]=_t(!0),[c,l]=_t(!1),[n,m]=_t(""),[f,B]=_t(null),b=Qr(()=>{d(!0),C("/webhooks").then(({webhooks:r,auth:s})=>{o(r),u(s),d(!1)}).catch(()=>d(!1))},[]);Us(()=>{b()},[b]);let S=Qr(async r=>{if(r.trim())try{let s=await C(`/webhooks/${encodeURIComponent(r.trim())}`,{method:"POST"});B(`Triggered: ${s.executionId}`)}catch(s){B(`Trigger failed: ${s instanceof Error?s.message:String(s)}`)}},[]);return qs((r,s)=>{if(c){if(s.escape){l(!1),m("");return}if(s.return){S(n),l(!1),m("");return}return}if(s.escape||r==="q"){e();return}if(r==="t"){l(!0),m(""),B(null);return}r==="r"&&(b(),B(null))}),g?Ae(Ve,{dimColor:!0,children:"Loading webhooks..."}):Bt(vt,{flexDirection:"column",children:[Bt(Ve,{bold:!0,children:["Webhooks (",t.length,") (Esc to go back)"]}),Bt(Ve,{dimColor:!0,children:["Auth: ",T]}),f&&Ae(vt,{marginTop:1,children:Ae(Ve,{color:"yellow",children:f})}),c&&Bt(vt,{marginTop:1,children:[Ae(Ve,{bold:!0,color:"cyan",children:"Trigger webhook: "}),Ae(Fs,{value:n,onChange:m,placeholder:"webhook name or ID"}),Ae(Ve,{dimColor:!0,children:" (Enter to trigger, Esc to cancel)"})]}),t.length===0?Ae(vt,{marginTop:1,children:Ae(Ve,{dimColor:!0,children:"No webhooks available. Create templates with triggers to expose webhooks."})}):Bt(vt,{marginTop:1,flexDirection:"column",children:[Ae(vt,{children:Bt(Ve,{bold:!0,children:[Lt("NAME",24),Lt("DESCRIPTION",36),Lt("TRIGGER",28),"TAGS"]})}),t.map(r=>Bt(vt,{children:[Ae(Ve,{children:Lt(r.displayName,24)}),Ae(Ve,{dimColor:!0,children:Lt(Ws(r.description??"",34),36)}),Ae(Ve,{dimColor:!0,children:Lt(r.trigger,28)}),Ae(Ve,{dimColor:!0,children:r.tags?.join(", ")??""})]},r.name))]}),Ae(vt,{marginTop:1,children:Ae(Ve,{dimColor:!0,children:"t:trigger r:refresh"})})]})}function Lt(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}function Ws(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}import{Box as nt,Text as ue,useInput as Gs}from"ink";import Hs from"ink-text-input";import{useEffect as Yr,useState as ft,useCallback as Ho}from"react";import{jsx as me,jsxs as Qe}from"react/jsx-runtime";function js(e){return e>=4?"red":e===3?"yellow":"gray"}function Ks(e){return e>=4?"HIGH":e===3?"MED ":"LOW "}function zs(e){return new Date(e).toLocaleDateString()}function en({onBack:e}){let[t,o]=ft([]),[T,u]=ft(0),[g,d]=ft([]),[c,l]=ft(!0),[n,m]=ft(!1),[f,B]=ft(""),[b,S]=ft("all"),[r,s]=ft(null),[I,v]=ft(!1),k=Ho(()=>{C("/agents").then(({agents:$})=>{o($),l(!1)}).catch(()=>l(!1))},[]);Yr(()=>{k()},[k]);let j=t[T],J=Ho(()=>{j&&(v(!1),C(`/memories/${j.id}`).then(({memories:$})=>{d($),s(null)}).catch($=>s(`Failed: ${$ instanceof Error?$.message:String($)}`)))},[j]);Yr(()=>{j&&J()},[j,J]);let R=Ho(async $=>{if(!(!j||!$.trim()))try{let Y=await C("/memories/query",{method:"POST",body:{agentId:j.id,prompt:$.trim()}});d(Y.memories),v(!0),s(`Search: ${Y.count} results`)}catch(Y){s(`Search failed: ${Y instanceof Error?Y.message:String(Y)}`)}},[j]),V=n,L=g.filter($=>b==="all"?!0:b==="high"?$.importance>3:b==="medium"?$.importance===3:$.importance<3);return Gs(($,Y)=>{if(V){if(Y.escape){m(!1),B("");return}if(Y.return){R(f),m(!1),B("");return}return}if(Y.escape||$==="q"){e();return}if($==="a"){u(se=>(se+1)%Math.max(1,t.length));return}if(Y.leftArrow){u(se=>(se-1+t.length)%Math.max(1,t.length));return}if(Y.rightArrow){u(se=>(se+1)%Math.max(1,t.length));return}if($==="s"){m(!0),B(""),s(null);return}if($==="h"){S(se=>se==="high"?"all":"high");return}if($==="m"){S(se=>se==="medium"?"all":"medium");return}if($==="l"){S(se=>se==="low"?"all":"low");return}$==="r"&&J()}),c?me(ue,{dimColor:!0,children:"Loading agents..."}):t.length===0?Qe(nt,{flexDirection:"column",children:[me(ue,{dimColor:!0,children:"No agents found"}),me(ue,{dimColor:!0,children:"Press Esc to go back"})]}):Qe(nt,{flexDirection:"column",children:[me(ue,{bold:!0,children:"Memories (Esc to go back)"}),Qe(nt,{marginTop:1,children:[me(ue,{children:"Agent: "}),me(ue,{bold:!0,color:"cyan",children:j?.name??"?"}),Qe(ue,{dimColor:!0,children:[" (",T+1,"/",t.length,") [a/arrows to switch]"]})]}),me(nt,{children:Qe(ue,{dimColor:!0,children:["Filter: ",b==="all"?"all":b," | ",I?"search results":"all memories"," (",L.length,")"]})}),r&&me(nt,{children:me(ue,{color:"yellow",children:r})}),n&&Qe(nt,{marginTop:1,children:[me(ue,{bold:!0,color:"cyan",children:"Search: "}),me(Hs,{value:f,onChange:B,placeholder:"search query..."}),me(ue,{dimColor:!0,children:" (Enter to search, Esc to cancel)"})]}),L.length===0?me(nt,{marginTop:1,children:Qe(ue,{dimColor:!0,children:["No memories",b!=="all"?` matching filter '${b}'`:""]})}):me(nt,{marginTop:1,flexDirection:"column",children:L.map($=>Qe(nt,{marginBottom:0,children:[Qe(ue,{color:js($.importance),bold:!0,children:[Ks($.importance)," "]}),me(ue,{dimColor:!0,children:Zr($.type??"?",12)}),me(ue,{dimColor:!0,children:Zr(`\xD7${$.retrievedCount??0}`,5)}),Qe(ue,{children:[Xs($.content,55)," "]}),me(ue,{dimColor:!0,children:zs($.createdAt)}),$.score!==void 0&&Qe(ue,{dimColor:!0,children:[" (",$.score.toFixed(2),")"]})]},$.id))}),me(nt,{marginTop:1,children:me(ue,{dimColor:!0,children:"s:search h:high m:medium l:low a:agent r:refresh"})})]})}function Zr(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}function Xs(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}import{Box as Je,Text as ce,useInput as Qs}from"ink";import So from"ink-text-input";import{useState as $e,useEffect as tn,useCallback as jo}from"react";import{jsx as ye,jsxs as fe}from"react/jsx-runtime";var on={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"]},Js={"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 rn({onBack:e}){let{state:t}=Ze(),[o,T]=$e({}),[u,g]=$e([]),[d,c]=$e(null),[l,n]=$e("view"),[m,f]=$e(0),[B,b]=$e(""),[S,r]=$e(null),[s,I]=$e(!1),[v,k]=$e([]),[j,J]=$e({}),[R,V]=$e(0),[L,$]=$e(""),[Y,se]=$e(""),[Se,Ct]=$e(""),_e=Object.values(on).flat(),ve=jo(()=>{C("/config").then(_=>{T(_.config),g(_.mutable)}).catch(_=>c(_.message)),C("/config/env-diff").then(_=>{k(_.diffs)}).catch(()=>{}),C("/config/env").then(_=>J(_.env??{})).catch(()=>{})},[]);tn(()=>{ve()},[ve]),tn(()=>{t.configVersion>0&&ve()},[t.configVersion,ve]);let It=jo(async()=>{let _=_e[m];if(_){I(!0),r(null);try{let x=B,w=o[_];if(w&&typeof w.value=="number"&&(x=Number(B),isNaN(x))){r("Invalid number"),I(!1);return}let P=await C("/config",{method:"PATCH",body:{[_]:x}});P.updated.length>0&&(r(`Updated: ${_}`),ve()),P.errors.length>0&&r(P.errors[0]),n("view")}catch(x){r(`Failed: ${x instanceof Error?x.message:String(x)}`)}finally{I(!1)}}},[_e,m,B,o,ve]),Ce=Object.keys(j),je=jo(async _=>{try{await C("/config/env",{method:"PUT",body:_}),r("Env vars saved"),ve()}catch(x){r(`Failed: ${x instanceof Error?x.message:String(x)}`)}},[ve]);if(Qs((_,x)=>{if(l==="edit"){if(x.escape){n("view");return}return}if(l==="env-list"){if(x.escape){n("view");return}if(x.upArrow&&R>0&&V(w=>w-1),x.downArrow&&R<Ce.length-1&&V(w=>w+1),_==="a"){$(""),n("env-add-key");return}if(_==="d"&&Ce.length>0){let w=Ce[R],P={...j};delete P[w],je(P),R>=Ce.length-1&&R>0&&V(W=>W-1);return}if(x.return&&Ce.length>0){Ct(j[Ce[R]]??""),n("env-edit-value");return}return}if(l==="env-add-key"){if(x.escape){n("env-list");return}return}if(l==="env-add-value"){if(x.escape){n("env-list");return}return}if(l==="env-edit-value"){if(x.escape){n("env-list");return}return}if(x.escape||_==="q"){e();return}if(x.upArrow&&m>0&&f(w=>w-1),x.downArrow&&m<_e.length-1&&f(w=>w+1),x.return||_==="e"){let w=_e[m],P=o[w];P&&P.mutable?(b(String(P.value??"")),n("edit"),r(null)):P&&!P.mutable&&r("This setting requires a restart to change")}_==="v"&&(V(0),n("env-list"),r(null)),_==="r"&&(ve(),r("Refreshed")),_==="s"&&v.length>0&&C("/config/sync-to-env",{method:"POST"}).then(()=>{r("Synced to .env"),k([]),ve()}),_==="l"&&v.length>0&&C("/config/load-from-env",{method:"POST"}).then(()=>{r("Loaded from .env"),ve()})}),d)return fe(Je,{flexDirection:"column",children:[fe(ce,{color:"red",children:["Failed to load config: ",d]}),ye(ce,{dimColor:!0,children:"Press Esc or q to return"})]});let ht=0;return fe(Je,{flexDirection:"column",children:[ye(ce,{bold:!0,children:"Settings"}),S&&ye(ce,{color:S.startsWith("Failed")||S.startsWith("This setting")?"yellow":"green",children:S}),v&&v.length>0&&fe(Je,{flexDirection:"column",marginBottom:1,children:[fe(ce,{color:"yellow",children:[".env differs from DB (",v.length," key(s)): ",v.map(_=>_.envKey).join(", ")]}),ye(ce,{dimColor:!0,children:"s:sync DB\u2192.env l:load .env\u2192DB"})]}),ye(Je,{marginTop:1,flexDirection:"column",children:Object.entries(on).map(([_,x])=>fe(Je,{marginBottom:1,flexDirection:"column",children:[ye(ce,{bold:!0,color:"cyan",children:_}),x.map(w=>{let P=o[w],de=ht++===m,Be=u.includes(w),G=Js[w]??w,Ye=P?String(P.value??""):"...";return l==="edit"&&de?fe(Je,{children:[fe(ce,{color:"cyan",children:["> ",G,": "]}),ye(So,{value:B,onChange:b,onSubmit:()=>{It()}}),s&&ye(ce,{color:"yellow",children:" saving..."})]},w):fe(Je,{children:[fe(ce,{color:de?"cyan":"white",children:[de?"> ":" ",Be?" ":"\u{1F512} ",G,": "," "]}),ye(ce,{color:Be?"white":"gray",children:Ye}),!Be&&ye(ce,{dimColor:!0,children:" (restart required)"})]},w)})]},_))}),ye(ce,{dimColor:!0,children:"Enter/e:edit v:env vars r:refresh Esc/q:back"}),l.startsWith("env")&&fe(Je,{flexDirection:"column",marginTop:1,children:[fe(ce,{bold:!0,color:"cyan",children:["Environment Variables (",Ce.length,")"]}),Ce.length===0&&l==="env-list"&&ye(ce,{dimColor:!0,children:" No env vars. Press a to add."}),Ce.map((_,x)=>{let w=x===R;return l==="env-edit-value"&&w?fe(Je,{children:[fe(ce,{color:"cyan",children:["> ",_," = "]}),ye(So,{value:Se,onChange:Ct,onSubmit:()=>{je({...j,[_]:Se}),n("env-list")}})]},_):fe(ce,{color:w&&l==="env-list"?"cyan":"white",children:[w&&l==="env-list"?"> ":" ",_," = ",j[_]]},_)}),l==="env-add-key"&&fe(Je,{children:[ye(ce,{color:"green",children:" New key: "}),ye(So,{value:L,onChange:$,onSubmit:()=>{L.trim()&&(se(""),n("env-add-value"))}})]}),l==="env-add-value"&&fe(Je,{children:[fe(ce,{color:"green",children:[" ",L," = "]}),ye(So,{value:Y,onChange:se,onSubmit:()=>{je({...j,[L.trim()]:Y}),n("env-list")}})]}),ye(ce,{dimColor:!0,children:"a:add Enter:edit d:delete Esc:back"})]})]})}import{Box as kt,Text as Pe,useInput as Ys}from"ink";import{useEffect as Zs,useState as Ko,useCallback as ei}from"react";import{jsx as we,jsxs as Vt}from"react/jsx-runtime";function nn({onBack:e}){let[t,o]=Ko([]),[T,u]=Ko(!0),[g,d]=Ko(0),{message:c,setMessage:l,clearMessage:n}=Ue(),m=ei(()=>{u(!0),C("/plugins").then(({plugins:f})=>{o(f),u(!1)}).catch(()=>u(!1))},[]);return Zs(()=>{m()},[m]),Ys((f,B)=>{if(B.escape||f==="q"){e();return}if(B.upArrow){d(b=>Math.max(0,b-1));return}if(B.downArrow){d(b=>Math.min(t.length-1,b+1));return}f==="r"&&(m(),n())}),T?we(Pe,{dimColor:!0,children:"Loading plugins..."}):Vt(kt,{flexDirection:"column",children:[Vt(Pe,{bold:!0,children:["Plugins (",t.length,") (Esc to go back)"]}),c&&we(kt,{marginTop:1,children:Vt(Pe,{color:c.type==="success"?"green":c.type==="error"?"red":"gray",children:[c.type==="success"?"\u2713 ":c.type==="error"?"\u2717 ":"\u2192 ",c.text]})}),t.length===0?we(kt,{marginTop:1,children:we(Pe,{dimColor:!0,children:"No plugins installed."})}):Vt(kt,{marginTop:1,flexDirection:"column",children:[Vt(kt,{children:[we(Pe,{dimColor:!0,children:" "}),we(Pe,{dimColor:!0,children:Ot("Name",24)}),we(Pe,{dimColor:!0,children:Ot("Scope",8)}),we(Pe,{dimColor:!0,children:Ot("User",6)}),we(Pe,{dimColor:!0,children:"Path"})]}),t.map((f,B)=>{let b=B===g,S=f.id.split("@")[0];return Vt(kt,{children:[we(Pe,{color:b?"cyan":void 0,bold:b,children:b?"> ":" "}),we(Pe,{color:b?"cyan":void 0,bold:b,children:Ot(S,24)}),we(Pe,{color:b?"cyan":void 0,bold:b,children:Ot(f.scope,8)}),we(Pe,{color:f.globalEnabled?"green":"gray",children:Ot(f.globalEnabled?"on":"off",6)}),we(Pe,{dimColor:!0,children:f.installPath})]},f.id)})]}),we(kt,{marginTop:1,children:we(Pe,{dimColor:!0,children:"r:refresh"})})]})}function Ot(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}import{Box as zo,Text as Xo,useInput as ti}from"ink";import{useState as oi}from"react";import{jsx as Et,jsxs as sn}from"react/jsx-runtime";var ri=[{key:"1",id:"tasks",label:"Tasks"},{key:"2",id:"automations",label:"Automations"},{key:"3",id:"goals",label:"Goals"}];function an({onBack:e}){let[t,o]=oi("tasks");return ti((T,u)=>{if(u.escape||T==="q"){e();return}if(T==="1"){o("tasks");return}if(T==="2"){o("automations");return}if(T==="3"){o("goals");return}}),sn(zo,{flexDirection:"column",children:[Et(Xo,{bold:!0,children:"Work Surface"}),Et(Xo,{dimColor:!0,children:"Browse tasks, automations, and goals without dropping back into chat mode."}),Et(zo,{gap:3,marginBottom:1,marginTop:1,children:ri.map(T=>{let u=t===T.id;return Et(zo,{children:sn(Xo,{color:u?"cyan":"gray",bold:u,children:[u?"\u25CF":"\u25CB"," ",T.key,". ",T.label]})},T.id)})}),t==="tasks"&&Et(yo,{onBack:e}),t==="automations"&&Et(wo,{onBack:e}),t==="goals"&&Et(vo,{onBack:e})]})}import{Box as ne,Text as Q,useInput as ni}from"ink";import{useEffect as si,useState as eo}from"react";import{jsx as q,jsxs as be}from"react/jsx-runtime";var ln={connected:"green",connecting:"yellow",disconnected:"gray",error:"red"};function cn({onBack:e}){let[t,o]=eo([]),[T,u]=eo(!0),[g,d]=eo(0),[c,l]=eo(null),[n,m]=eo("");si(()=>{f()},[]);async function f(){try{let S=await C("/channels");o(S.channels)}catch{}u(!1)}async function B(S){if(t.find(s=>s.id===S)?.platform==="wechat")try{m("Starting WeChat QR login...");let s=await C(`/channels/${S}/wechat/qr-start`,{method:"POST"});if(s.qrcodeUrl){m(`Scan QR: ${s.qrcodeUrl}
|
|
10
|
+
Waiting for scan...`);let I=await C(`/channels/${S}/wechat/qr-wait`,{method:"POST",body:{sessionKey:s.sessionKey,timeoutMs:12e4}});m(I.message)}else m(s.message);f()}catch{m("WeChat connect failed")}else try{await C(`/channels/${S}/connect`,{method:"POST"}),m("Connecting..."),f()}catch{m("Connect failed")}}async function b(S){try{await C(`/channels/${S}/disconnect`,{method:"POST"}),m("Disconnected"),f()}catch{m("Disconnect failed")}}return ni((S,r)=>{if(c){if(r.escape||S==="q"){l(null);return}if(S==="c"){B(c.id);return}if(S==="d"){b(c.id);return}return}if(r.escape){e();return}if(r.upArrow){d(s=>Math.max(0,s-1));return}if(r.downArrow){d(s=>Math.min(t.length-1,s+1));return}if(r.return&&t[g]){l(t[g]),m("");return}}),T?q(ne,{flexDirection:"column",children:q(Q,{dimColor:!0,children:"Loading channels..."})}):c?be(ne,{flexDirection:"column",children:[be(ne,{marginBottom:1,children:[be(Q,{bold:!0,children:["Channel: ",c.name]}),q(Q,{dimColor:!0,children:" (Esc to go back)"})]}),be(ne,{flexDirection:"column",gap:0,children:[be(Q,{children:["ID: ",c.id]}),be(Q,{children:["Platform: ",c.platform]}),be(Q,{children:["Status: ",q(Q,{color:ln[c.status]??"white",children:c.status})]}),be(Q,{children:["Enabled: ",c.enabled?"yes":"no"]}),be(Q,{children:["Messages: ",c.messageCount]}),be(Q,{children:["Config: ",JSON.stringify(c.config)]})]}),q(ne,{marginTop:1,children:q(Q,{dimColor:!0,children:"[c] Connect [d] Disconnect [Esc] Back"})}),n&&q(Q,{color:"yellow",children:n})]}):be(ne,{flexDirection:"column",children:[be(ne,{marginBottom:1,children:[q(Q,{bold:!0,children:"Channels"}),be(Q,{dimColor:!0,children:[" (",t.length," total) "]}),q(Q,{dimColor:!0,children:"Arrow keys to select, Enter for detail, Esc to return"})]}),t.length===0?q(Q,{dimColor:!0,children:"No channels configured. Add channels via API or config."}):be(ne,{flexDirection:"column",children:[be(ne,{children:[q(ne,{width:3,children:q(Q,{dimColor:!0,children:" "})}),q(ne,{width:12,children:q(Q,{bold:!0,dimColor:!0,children:"ID"})}),q(ne,{width:16,children:q(Q,{bold:!0,dimColor:!0,children:"Name"})}),q(ne,{width:12,children:q(Q,{bold:!0,dimColor:!0,children:"Platform"})}),q(ne,{width:14,children:q(Q,{bold:!0,dimColor:!0,children:"Status"})}),q(ne,{width:10,children:q(Q,{bold:!0,dimColor:!0,children:"Enabled"})}),q(ne,{width:10,children:q(Q,{bold:!0,dimColor:!0,children:"Messages"})})]}),t.map((S,r)=>be(ne,{children:[q(ne,{width:3,children:q(Q,{children:r===g?">":" "})}),q(ne,{width:12,children:q(Q,{inverse:r===g,children:S.id.slice(0,8)})}),q(ne,{width:16,children:q(Q,{children:S.name})}),q(ne,{width:12,children:q(Q,{children:S.platform})}),q(ne,{width:14,children:be(Q,{color:ln[S.status]??"white",children:[S.status==="connected"?"\u25CF":S.status==="error"?"\u2717":"\u25CB"," ",S.status]})}),q(ne,{width:10,children:q(Q,{color:S.enabled?"green":"gray",children:S.enabled?"yes":"no"})}),q(ne,{width:10,children:q(Q,{children:S.messageCount})})]},S.id))]})]})}import{Box as qt,Text as at,useInput as li}from"ink";import{useEffect as ci,useState as to,useCallback as di}from"react";import{Box as D,Text as p,useInput as ii}from"ink";import st from"ink-text-input";import{useEffect as dn,useState as U,useCallback as it}from"react";lr();import{Fragment as un,jsx as y,jsxs as E}from"react/jsx-runtime";var ai=/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/;function mn({roleId:e,onBack:t}){let[o,T]=U(null),[u,g]=U([]),[d,c]=U(!0),[l,n]=U("view"),[m,f]=U(""),[B,b]=U(0),[S,r]=U(""),[s,I]=U([]),[v,k]=U(0),[j,J]=U(new Set),[R,V]=U("inline"),[L,$]=U(""),[Y,se]=U(""),[Se,Ct]=U([]),[_e,ve]=U(new Set),[It,Ce]=U(0),[je,ht]=U("default"),[_,x]=U(""),[w,P]=U(""),[W,de]=U("mode"),[Be,G]=U([]),[Ye,Tn]=U(null),[Ao,hn]=U([]),[At,Po]=U([]),[Zo,Do]=U(""),[wt,no]=U(0),[so,er]=U(""),[tr,or]=U(""),[rr,nr]=U(""),[io,Ro]=U(0),[Ht,sr]=U([]),[ao,Mo]=U(0),[lo,co]=U(!1),[Pt,yn]=U(""),{message:M,setMessage:N}=Ue(),ee=it(()=>{c(!0),C(`/roles/${e}`).then(({role:a,projectPlugins:h,workspacePath:i})=>{T(a),g(h??[]),yn(i??""),f(a.cagPrompt??""),J(new Set(a.allowedTools??[])),V(a.executionMode??"inline"),$(a.model??""),se(a.maxBudgetUsd!=null?String(a.maxBudgetUsd):""),c(!1)}).catch(()=>c(!1))},[e]);dn(()=>{ee(),C("/config").then(a=>{let h=a.config["defaults.deniedReadPaths"]?.value;Array.isArray(h)&&G(h),Tn(a.sandbox),hn(a.osCapabilities?.registry??[])}).catch(()=>{})},[ee]),dn(()=>{V(o?.executionMode??"inline"),$(o?.model??""),se(o?.maxBudgetUsd!=null?String(o?.maxBudgetUsd):""),ht(o?.permissionMode??"default"),x((o?.allowedBashPatterns??[]).join(", ")),P((o?.deniedBashPatterns??[]).join(", ")),Po(o?.osCapabilities??[]);let a=o?.osCapabilities?.find(h=>h.id==="automation")?.targets??[];Do(a.join(", "))},[o?.id,o?.executionMode,o?.model,o?.maxBudgetUsd,o?.permissionMode,o?.allowedBashPatterns,o?.deniedBashPatterns,o?.osCapabilities]);let bn=it(async()=>{if(o)try{await C(`/roles/${o.id}`,{method:"PATCH",body:{cagPrompt:m}}),N("CAG prompt saved","success"),n("view"),ee()}catch(a){N(`Save failed: ${a instanceof Error?a.message:String(a)}`,"error")}},[o,m,ee,N]),vn=it(async()=>{if(o)try{await C(`/roles/${o.id}`,{method:"PATCH",body:{additionalDirectories:Ke}}),N("Directories saved","success"),n("view"),ee()}catch(a){N(`Save failed: ${a instanceof Error?a.message:String(a)}`,"error")}},[o,ee,N]),Cn=it(async()=>{if(o)try{await C(`/roles/${o.id}`,{method:"PATCH",body:{allowedTools:Array.from(j)}}),N("Tool permissions saved","success"),n("view"),ee()}catch(a){N(`Save failed: ${a instanceof Error?a.message:String(a)}`,"error")}},[o,j,ee,N]),wn=it(async()=>{if(!o)return;let a={executionMode:R};L!==void 0&&(a.model=L);let h=parseFloat(Y);isNaN(h)||(a.maxBudgetUsd=h);try{await C(`/roles/${o.id}`,{method:"PATCH",body:a}),N("Execution config saved","success"),n("view"),ee()}catch(i){N(`Save failed: ${i instanceof Error?i.message:String(i)}`,"error")}},[o,R,L,Y,ee,N]),Sn=it(async()=>{if(!o)return;let a={permissionMode:je},h=_.split(",").map(A=>A.trim()).filter(Boolean),i=w.split(",").map(A=>A.trim()).filter(Boolean);a.allowedBashPatterns=h.length>0?h:[],a.deniedBashPatterns=i.length>0?i:[];try{await C(`/roles/${o.id}`,{method:"PATCH",body:a}),N("Permission config saved","success"),n("view"),ee()}catch(A){N(`Save failed: ${A instanceof Error?A.message:String(A)}`,"error")}},[o,je,_,w,ee,N]),ir=it(a=>{let h=new Map;for(let i of a){if(!i.id)continue;let A={id:i.id};i.targets?.length&&(A.targets=Array.from(new Set(i.targets.map(O=>O.trim()).filter(Boolean)))),h.set(i.id,A)}return Array.from(h.values()).sort((i,A)=>i.id.localeCompare(A.id))},[]),Bn=it(async()=>{if(!o)return;let a=ir(At),h=a.find(i=>i.id==="automation")?.targets??[];if(a.some(i=>i.id==="automation")&&(h.length===0||h.some(i=>!ai.test(i)))){N("Automation requires valid bundle id targets","error");return}try{await C(`/roles/${o.id}`,{method:"PATCH",body:{osCapabilities:a}}),N("OS capabilities saved","success"),n("view"),ee()}catch(i){N(`Save failed: ${i instanceof Error?i.message:String(i)}`,"error")}},[o,At,ir,ee,N]),kn=it(async a=>{if(!Pt){N("workspace path not loaded yet","error");return}co(!0);try{await C(`/plugins/install/${encodeURIComponent(a)}`,{method:"POST",body:JSON.stringify({scope:"project",cwd:Pt})}),N(`Bound ${a.split("@")[0]}`,"success"),ee()}catch(h){N(`Bind failed: ${h instanceof Error?h.message:"unknown"}`,"error")}finally{co(!1)}},[Pt,ee,N]),En=it(async a=>{if(!Pt){N("workspace path not loaded yet","error");return}co(!0);try{await C(`/plugins/uninstall/${encodeURIComponent(a)}`,{method:"POST",body:JSON.stringify({scope:"project",cwd:Pt})}),N(`Unbound ${a.split("@")[0]}`,"success"),ee()}catch(h){N(`Unbind failed: ${h instanceof Error?h.message:"unknown"}`,"error")}finally{co(!1)}},[Pt,ee,N]),Ke=o?.additionalDirectories??[];if(ii((a,h)=>{if(h.escape){n("view");return}if(a==="r"){ee();return}switch(l){case"view":{if(a==="c"){n("edit-cag");return}if(a==="d"){n("edit-dirs"),b(0),r("");return}if(a==="t"){n("edit-tools");return}if(a==="o"){n("edit-oscaps");return}if(a==="x"){n("edit-exec");return}if(a==="h"){C("/channels?enabled=true").then(({channels:i})=>{Ct(i.map(A=>({name:A.name,id:A.id}))),ve(new Set(o?.allowedChannels??[])),Ce(0),n("edit-channels")}).catch(()=>N("Failed to load channels","error"));return}if(a==="p"){ht(o?.permissionMode??"default"),x((o?.allowedBashPatterns??[]).join(", ")),P((o?.deniedBashPatterns??[]).join(", ")),de("mode"),n("edit-permissions");return}if(a==="v"){no(0),n("edit-env");return}if(a==="b"){Ro(0),n("edit-plugins");return}if(a==="i"){if(!o)return;let i=!o.inheritUserSettings;C(`/roles/${o.id}`,{method:"PATCH",body:{inheritUserSettings:i}}).then(()=>{N(`Inherit user settings: ${i?"ON":"OFF"}`,"success"),ee()}).catch(()=>N("Failed to toggle","error"));return}if(a==="R"&&o?.presetId){C(`/presets/role/${o.presetId}/restore`,{method:"POST"}).then(()=>{N("Preset restored","success"),ee()}).catch(i=>N(`Restore failed: ${i instanceof Error?i.message:String(i)}`,"error"));return}break}case"edit-cag":{if(h.ctrl&&a==="s"){bn();return}break}case"edit-dirs":{if(a==="s"){vn();return}if(a==="a"){n("edit-dirs-add");return}if(a==="m"&&Ke.length>0){let i=Ke[B];if(i){T(O=>O&&{...O,additionalDirectories:O.additionalDirectories?.map((le,ct)=>ct===B?{...typeof le=="string"?{path:le}:le,mode:le.mode==="ro"?"rw":"ro"}:le)});let A=i.mode==="ro"?"rw":"ro";N(`Mode set to ${A.toUpperCase()}`,"success")}return}if(a==="x"&&Ke.length>0){T(i=>i&&{...i,additionalDirectories:Ke.filter((A,O)=>O!==B)}),b(i=>Math.max(0,Math.min(i,Ke.length-2)));return}if(h.upArrow){b(i=>Math.max(0,i-1));return}if(h.downArrow){b(i=>Math.min(Ke.length-1,i+1));return}break}case"edit-dirs-add":{if(h.escape){n("edit-dirs"),r(""),I([]);return}if(h.return&&s.length>0){let i=s[v];i&&(r(i.endsWith("/")?i:i+"/"),I([]));return}if(h.return){let i=S.trim();i&&i.startsWith("/")?(T(A=>A&&{...A,additionalDirectories:[...A.additionalDirectories??[],{path:i,mode:"rw"}]}),r(""),I([]),n("edit-dirs")):N("Path must be absolute (must start with /)","error");return}if(h.tab){let i=S.trim();if(!i||!i.startsWith("/"))return;C(`/fs/suggest-dirs?prefix=${encodeURIComponent(i)}`).then(({suggestions:A})=>{A.length===1?(r(A[0]+"/"),I([])):A.length>1&&(I(A),k(0))}).catch(()=>{I([])});return}if(h.upArrow&&s.length>0){k(i=>Math.max(0,i-1));return}if(h.downArrow&&s.length>0){k(i=>Math.min(s.length-1,i+1));return}break}case"edit-tools":{if(a==="s"){Cn();return}let i=parseInt(a,10)-1;if(!isNaN(i)&&i>=0&&i<uo.length){let A=uo[i];J(O=>{let le=new Set(O);return le.has(A)?le.delete(A):le.add(A),le});return}break}case"edit-oscaps":{if(a==="s"){Bn();return}if(a==="a"&&At.some(O=>O.id==="automation")){let O=At.find(le=>le.id==="automation")?.targets??[];Do(O.join(", ")),n("edit-oscaps-targets");return}let i=Ao.filter(O=>O.editable),A=parseInt(a,10)-1;if(!isNaN(A)&&A>=0&&A<i.length){let O=i[A];Po(le=>le.some(jt=>jt.id===O.id)?le.filter(jt=>jt.id!==O.id):[...le,{id:O.id,targets:O.id==="automation"?[]:void 0}]);return}break}case"edit-oscaps-targets":{if(h.return){let i=Zo.split(",").map(A=>A.trim()).filter(Boolean);Po(A=>A.map(O=>O.id==="automation"?{...O,targets:i}:O)),n("edit-oscaps");return}break}case"edit-exec":{if(a==="s"){wn();return}if(h.tab){V(i=>i==="inline"?"isolated":"inline");return}break}case"edit-permissions":{if(a==="s"){Sn();return}if(h.tab){de(i=>i==="mode"?"allowed":i==="allowed"?"denied":"mode");return}if(W==="mode"&&(h.upArrow||h.downArrow)){let i=["default","acceptEdits","dontAsk","bypassPermissions"],A=i.indexOf(je);h.upArrow&&ht(i[Math.max(0,A-1)]),h.downArrow&&ht(i[Math.min(i.length-1,A+1)]);return}break}case"edit-channels":{if(a==="s"){if(!o)return;let i=_e.size>0?Array.from(_e):[];C(`/roles/${o.id}`,{method:"PATCH",body:{allowedChannels:i}}).then(()=>{N("Channels saved","success"),n("view"),ee()}).catch(()=>N("Save failed","error"));return}if(a==="u"){if(!o)return;C(`/roles/${o.id}`,{method:"PATCH",body:{allowedChannels:null}}).then(()=>{N("Channels: unrestricted","success"),n("view"),ee()}).catch(()=>N("Save failed","error"));return}if(a===" "){let i=Se[It];i&&ve(A=>{let O=new Set(A);return O.has(i.name)?O.delete(i.name):O.add(i.name),O});return}if(h.upArrow){Ce(i=>Math.max(0,i-1));return}if(h.downArrow){Ce(i=>Math.min(Se.length-1,i+1));return}break}case"edit-env":{let i=Object.keys(o?.envVars??{});if(a==="a"){er(""),n("edit-env-add-key");return}if(a==="d"&&i.length>0){let A=i[wt],O={...o?.envVars??{}};delete O[A],C(`/roles/${o.id}`,{method:"PATCH",body:{envVars:O}}).then(()=>{N("Deleted","success"),ee()}).catch(()=>N("Delete failed","error")),wt>=i.length-1&&wt>0&&no(le=>le-1);return}if(h.return&&i.length>0){nr((o?.envVars??{})[i[wt]]??""),n("edit-env-edit-value");return}h.upArrow&&wt>0&&no(A=>A-1),h.downArrow&&wt<i.length-1&&no(A=>A+1);break}case"edit-env-add-key":case"edit-env-add-value":case"edit-env-edit-value":break;case"edit-plugins":{if(lo)return;if(a==="a"){C("/plugins").then(({plugins:i})=>{let A=new Set(u.map(O=>O.id));sr(i.filter(O=>!A.has(O.id))),Mo(0),n("edit-plugins-add")}).catch(()=>N("Failed to load plugins","error"));return}if(a==="x"&&u.length>0){let i=u[io];i&&En(i.id);return}if(h.upArrow){Ro(i=>Math.max(0,i-1));return}if(h.downArrow){Ro(i=>Math.min(u.length-1,i+1));return}break}case"edit-plugins-add":{if(lo)return;if(h.escape){n("edit-plugins"),sr([]);return}if(h.return&&Ht.length>0){let i=Ht[ao];i&&kn(i.id);return}if(h.upArrow){Mo(i=>Math.max(0,i-1));return}if(h.downArrow){Mo(i=>Math.min(Ht.length-1,i+1));return}break}}}),d)return y(p,{dimColor:!0,children:"Loading role..."});if(!o)return y(p,{dimColor:!0,children:"Role not found."});if(l==="edit-plugins")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Plugins (\u2191\u2193 navigate, x:unbind a:add Esc:cancel)"}),lo&&y(p,{dimColor:!0,children:"Binding..."}),u.length===0?y(p,{dimColor:!0,children:"No plugins bound. Press a to add."}):u.map((a,h)=>E(D,{children:[E(p,{color:h===io?"cyan":void 0,bold:h===io,children:[h===io?"> ":" ",a.name]}),E(p,{dimColor:!0,children:[" v",a.version]})]},a.id)),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]});if(l==="edit-plugins-add")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Add Plugin (\u2191\u2193 navigate, Enter:bind Esc:cancel)"}),lo&&y(p,{dimColor:!0,children:"Binding..."}),Ht.length===0?y(p,{dimColor:!0,children:"No available plugins."}):Ht.map((a,h)=>E(D,{children:[E(p,{color:h===ao?"cyan":void 0,bold:h===ao,children:[h===ao?"> ":" ",a.name]}),E(p,{dimColor:!0,children:[" v",a.version]})]},a.id)),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]});if(l==="edit-cag")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"CAG Prompt \u2014 Edit (Esc cancel, Ctrl+S save)"}),y(st,{value:m,onChange:f,placeholder:"Character And Guidance prompt..."}),M&&y(D,{marginTop:1,children:y(p,{color:M.type==="error"?"red":"green",children:M.text})})]});if(l==="edit-dirs-add")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Add Directory (Enter confirm, Esc cancel, Tab:complete)"}),y(st,{value:S,onChange:a=>{r(a),I([])},placeholder:"/absolute/path/to/directory"}),s.length>0&&E(D,{flexDirection:"column",marginTop:1,children:[s.map((a,h)=>E(p,{color:h===v?"cyan":void 0,dimColor:h!==v,children:[h===v?"> ":" ",a,"/"]},a)),y(p,{dimColor:!0,children:"\u2191\u2193 navigate, Enter select, Tab:confirm"})]}),M&&y(D,{marginTop:1,children:y(p,{color:M.type==="error"?"red":"green",children:M.text})})]});if(l==="edit-dirs")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Additional Directories (\u2191\u2193 navigate, a:add m:mode x:remove s:save Esc:cancel)"}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})}),Ke.length===0?y(p,{dimColor:!0,children:"No directories. Press a to add one."}):Ke.map((a,h)=>{let i=typeof a=="string"?{path:a,mode:"rw"}:a,A=i.mode!=="ro";return E(D,{children:[y(p,{color:h===B?"cyan":void 0,bold:h===B,children:h===B?"> ":" "}),E(p,{color:A?"green":"yellow",children:["[",A?"RW":"RO","]"," "]}),y(p,{color:h===B?"cyan":void 0,children:i.path})]},i.path)})]});if(l==="edit-tools")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Tool Permissions \u2014 toggle with number key (s:save Esc:cancel)"}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})}),uo.map((a,h)=>{let i=j.has(a);return E(D,{children:[E(p,{dimColor:!0,children:[h+1,". "]}),y(p,{color:i?"green":"red",children:i?"[ON] ":"[OFF] "}),y(p,{children:a})]},a)})]});if(l==="edit-oscaps"){let a=Ao.filter(h=>h.editable);return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"OS Capabilities \u2014 toggle with number key (a:automation targets s:save Esc:cancel)"}),Ye&&E(p,{dimColor:!0,children:["Platform: ",Ye.platform," ",Ye.available?"(sandbox active)":"(sandbox unavailable)"]}),Ao.map(h=>{let i=a.findIndex(ct=>ct.id===h.id),A=At.some(ct=>ct.id===h.id),O=i>=0?`${i+1}.`:" -",le=h.id==="automation"?(()=>{let ct=At.find(jt=>jt.id===h.id)?.targets??[];return ct.length>0?` targets: ${ct.join(", ")}`:" targets: (none)"})():"";return E(D,{flexDirection:"column",marginBottom:1,children:[E(p,{color:A?"green":h.editable?"red":"gray",children:[O," ",A?"[ON]":"[OFF]"," ",h.label," [",h.availability,"]"]}),E(p,{dimColor:!0,children:[" ",h.description,le]}),h.effectiveDisabledReason&&!h.editable&&E(p,{dimColor:!0,children:[" ",h.effectiveDisabledReason]})]},h.id)}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]})}if(l==="edit-oscaps-targets")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Automation Targets (comma-separated bundle ids; Enter confirm, Esc cancel)"}),y(st,{value:Zo,onChange:Do,placeholder:"com.apple.mail, com.apple.systemevents"}),y(p,{dimColor:!0,children:"Example: com.apple.mail, com.apple.systemevents"}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]});if(l==="edit-exec")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Execution Config (Tab:cycle mode, Enter on field, s:save Esc:cancel)"}),E(D,{children:[y(p,{bold:!0,children:" Mode: "}),y(p,{color:"cyan",children:R}),y(p,{dimColor:!0,children:" (Tab to toggle)"})]}),E(D,{children:[y(p,{bold:!0,children:" Model: "}),y(st,{value:L,onChange:$,placeholder:"sonnet, opus, haiku, or blank"})]}),E(D,{children:[y(p,{bold:!0,children:" Max Budget (USD): "}),y(st,{value:Y,onChange:se,placeholder:"0 = unlimited"})]}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]});if(l==="edit-permissions")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Permission Config (Tab:cycle field, \u2191\u2193:mode, s:save, Esc:cancel)"}),E(D,{children:[y(p,{bold:!0,color:W==="mode"?"cyan":void 0,children:" Mode: "}),["default","acceptEdits","dontAsk","bypassPermissions"].map(h=>E(p,{color:h===je?"green":"gray",children:[h===je?`[${h}]`:` ${h} `," "]},h))]}),E(D,{children:[y(p,{bold:!0,color:W==="allowed"?"cyan":void 0,children:" Allowed Bash: "}),W==="allowed"?y(st,{value:_,onChange:x,placeholder:"git add *, pnpm test*"}):y(p,{children:_||"(none)"})]}),E(D,{children:[y(p,{bold:!0,color:W==="denied"?"cyan":void 0,children:" Denied Bash: "}),W==="denied"?y(st,{value:w,onChange:P,placeholder:"rm -rf *, ssh *"}):y(p,{children:w||"(none)"})]}),y(p,{dimColor:!0,children:"Patterns: comma-separated, glob syntax (* = wildcard)"}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]});if(l==="edit-channels")return E(D,{flexDirection:"column",children:[y(p,{bold:!0,children:"Allowed Channels (Space:toggle, u:unrestricted, s:save, Esc:cancel)"}),Se.length===0?y(p,{dimColor:!0,children:"No channels available"}):Se.map((a,h)=>E(D,{children:[E(p,{children:[h===It?">":" "," "]}),E(p,{color:_e.has(a.name)?"green":"gray",children:["[",_e.has(a.name)?"x":" ","] ",a.name]})]},a.id)),E(p,{dimColor:!0,children:["Selected: ",_e.size>0?Array.from(_e).join(", "):"none (= block all)"]}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})})]});if(l.startsWith("edit-env")){let a=Object.keys(o.envVars??{});return E(D,{flexDirection:"column",children:[E(p,{bold:!0,children:["Environment Variables (",a.length,")"]}),a.length===0&&l==="edit-env"&&y(p,{dimColor:!0,children:" No env vars. Press a to add."}),a.map((h,i)=>{let A=i===wt;return l==="edit-env-edit-value"&&A?E(D,{children:[E(p,{color:"cyan",children:["> ",h," = "]}),y(st,{value:rr,onChange:nr,onSubmit:()=>{let O={...o.envVars??{},[h]:rr};C(`/roles/${o.id}`,{method:"PATCH",body:{envVars:O}}).then(()=>{N("Saved","success"),ee(),n("edit-env")}).catch(()=>N("Save failed","error"))}})]},h):E(p,{color:A&&l==="edit-env"?"cyan":"white",children:[A&&l==="edit-env"?"> ":" ",h," = ",(o.envVars??{})[h]]},h)}),l==="edit-env-add-key"&&E(D,{children:[y(p,{color:"green",children:" New key: "}),y(st,{value:so,onChange:er,onSubmit:()=>{so.trim()&&(or(""),n("edit-env-add-value"))}})]}),l==="edit-env-add-value"&&E(D,{children:[E(p,{color:"green",children:[" ",so," = "]}),y(st,{value:tr,onChange:or,onSubmit:()=>{let h={...o.envVars??{},[so.trim()]:tr};C(`/roles/${o.id}`,{method:"PATCH",body:{envVars:h}}).then(()=>{N("Added","success"),ee(),n("edit-env")}).catch(()=>N("Add failed","error"))}})]}),y(p,{dimColor:!0,children:"a:add Enter:edit d:delete Esc:back"}),M&&y(p,{color:M.type==="error"?"red":"green",children:M.text})]})}return E(D,{flexDirection:"column",children:[E(p,{bold:!0,children:["Role: ",o.name]}),E(D,{children:[y(p,{dimColor:!0,children:"ID: "}),y(p,{children:o.id})]}),E(D,{children:[y(p,{dimColor:!0,children:"Status: "}),y(p,{color:o.status==="active"?"green":o.status==="probation"?"yellow":"red",children:o.status})]}),o.performanceScore!=null&&E(D,{children:[y(p,{dimColor:!0,children:"Score: "}),E(p,{children:[(o.performanceScore*100).toFixed(0),"%"]})]}),E(D,{children:[y(p,{dimColor:!0,children:"Created: "}),y(p,{children:new Date(o.createdAt).toLocaleString()})]}),E(D,{children:[y(p,{dimColor:!0,children:"Execution: "}),E(p,{children:[o.executionMode??"inline"," / ",o.model??"inherit"," / ",o.maxBudgetUsd!=null?`$${o.maxBudgetUsd}`:"no limit"]})]}),E(D,{children:[y(p,{dimColor:!0,children:"OS Capabilities: "}),y(p,{children:(o.osCapabilities?.length??0)>0?o.osCapabilities.map(a=>a.id==="automation"&&a.targets?.length?`automation(${a.targets.join(",")})`:a.id).join(", "):"None"})]}),Ye&&E(D,{children:[y(p,{dimColor:!0,children:"Sandbox Platform: "}),E(p,{children:[Ye.platform," ",Ye.available?"(active)":"(unavailable)"]})]}),Ke.length>0&&E(un,{children:[y(p,{bold:!0,children:"Additional Directories:"}),Ke.map(a=>E(p,{dimColor:!0,children:[" ",a.path]},a.path))]}),E(D,{children:[y(p,{dimColor:!0,children:"Permission: "}),y(p,{children:o.permissionMode??"default"})]}),(o.allowedBashPatterns?.length??0)>0&&E(D,{children:[y(p,{dimColor:!0,children:" Bash Allow: "}),y(p,{children:o.allowedBashPatterns.join(", ")})]}),(o.deniedBashPatterns?.length??0)>0&&E(D,{children:[y(p,{dimColor:!0,children:" Bash Deny: "}),y(p,{children:o.deniedBashPatterns.join(", ")})]}),Be.length>0&&E(D,{flexDirection:"column",children:[y(p,{dimColor:!0,children:"Denied Read Paths (global):"}),Be.map(a=>E(p,{dimColor:!0,children:[" ",a]},a)),E(p,{dimColor:!0,italic:!0,children:[" (Settings ",">"," Advanced)"]})]}),E(D,{children:[y(p,{dimColor:!0,children:"Channels: "}),y(p,{children:o.allowedChannels===void 0?"Unrestricted":o.allowedChannels.length===0?"Blocked":o.allowedChannels.join(", ")})]}),E(D,{children:[y(p,{dimColor:!0,children:"Inherit User Settings: "}),y(p,{color:o.inheritUserSettings?"green":"gray",children:o.inheritUserSettings?"Yes":"No"})]}),o.learnedRules.length>0&&E(un,{children:[y(p,{bold:!0,children:"Learned Rules:"}),o.learnedRules.map(a=>E(p,{dimColor:!0,children:[" - ",a]},a))]}),E(D,{children:[y(p,{dimColor:!0,children:"Plugins: "}),u.length===0?y(p,{dimColor:!0,children:"None"}):u.map(a=>E(p,{children:[a.name," "]},a.id))]}),M&&y(D,{children:y(p,{color:M.type==="error"?"red":M.type==="success"?"green":"gray",children:M.text})}),y(D,{marginTop:1,children:E(p,{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 Ge,jsxs as oo}from"react/jsx-runtime";function gn({onBack:e}){let[t,o]=to([]),[T,u]=to(!0),[g,d]=to(0),[c,l]=to("list"),[n,m]=to(null),{message:f,setMessage:B,clearMessage:b}=Ue(),S=di(()=>{u(!0),C("/roles").then(({roles:r})=>{o(r.map(s=>({id:s.id,name:s.name,status:s.status,performanceScore:s.performanceScore,createdAt:s.createdAt,presetId:s.presetId}))),u(!1)}).catch(()=>u(!1))},[]);return ci(()=>{S()},[S]),li((r,s)=>{if(s.escape||r==="q"){e();return}if(s.upArrow){d(I=>Math.max(0,I-1));return}if(s.downArrow){d(I=>Math.min(t.length-1,I+1));return}if(r==="r"&&(S(),b()),r===`
|
|
11
|
+
`||r==="o"||r==="e"){t.length>0&&(m(t[g].id),l("detail"));return}}),T?Ge(at,{dimColor:!0,children:"Loading roles..."}):c==="detail"&&n?Ge(mn,{roleId:n,onBack:()=>l("list")}):oo(qt,{flexDirection:"column",children:[oo(at,{bold:!0,children:["Roles (",t.length,") (Esc to go back)"]}),f&&Ge(qt,{marginTop:1,children:oo(at,{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?Ge(qt,{marginTop:1,children:Ge(at,{dimColor:!0,children:"No roles found. Roles define agent behavior and bind plugins."})}):Ge(qt,{marginTop:1,flexDirection:"column",children:t.map((r,s)=>{let I=s===g,v=r.performanceScore!=null?`${(r.performanceScore*100).toFixed(0)}%`:"\u2014";return oo(qt,{children:[Ge(at,{color:I?"cyan":void 0,bold:I,children:I?"> ":" "}),Ge(at,{color:I?"cyan":void 0,bold:I,children:Qo(r.name,24)}),r.presetId&&oo(at,{dimColor:!0,children:["[",r.presetId,"]"]}),Ge(at,{color:ui(r.status),children:Qo(r.status,12)}),Ge(at,{dimColor:!0,children:Qo(v,8)})]},r.id)})}),Ge(qt,{marginTop:1,children:Ge(at,{dimColor:!0,children:"Enter/O/E:open Esc:back r:refresh"})})]})}function ui(e){return e==="active"?"green":e==="probation"?"yellow":e==="retired"||e==="dead"?"red":"gray"}function Qo(e,t){return e?e.length>=t?e:e+" ".repeat(t-e.length):" ".repeat(t)}import{Box as mi,Text as Jo}from"ink";import gi from"react";import{jsx as Bo,jsxs as pi}from"react/jsx-runtime";var Ne={key:"Esc",label:"back"},fi={work:[{key:"1",label:"tasks"},{key:"2",label:"automations"},{key:"3",label:"goals"},Ne],tasks:[{key:"\u2191\u2193",label:"move"},{key:"Enter",label:"detail"},{key:"x",label:"cancel"},{key:"f",label:"filter"},{key:"r",label:"refresh"},Ne],config:[Ne],evolution:[Ne],goals:[{key:"c",label:"create"},{key:"r",label:"refresh"},Ne],strategies:[Ne],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"},Ne],webhooks:[Ne],memories:[Ne],plugins:[{key:"\u2191\u2193",label:"move"},{key:"r",label:"refresh"},Ne],roles:[Ne],settings:[Ne],channels:[Ne]};function fn(){let{state:e}=Ze(),t=fi[e.view]??[Ne];return Bo(mi,{borderStyle:"round",borderDimColor:!0,paddingX:1,children:t.map((o,T)=>pi(gi.Fragment,{children:[T>0&&Bo(Jo,{dimColor:!0,children:" "}),Bo(Jo,{color:"cyan",children:o.key}),Bo(Jo,{dimColor:!0,children:` ${o.label}`})]},`${o.key}-${o.label}`))})}import{Box as Ft,Text as He,useInput as xi}from"ink";import{useEffect as Ti,useState as ko,useCallback as hi}from"react";import{jsx as xt,jsxs as pt}from"react/jsx-runtime";function pn({onBack:e}){let[t,o]=ko([]),[T,u]=ko(!0),[g,d]=ko(0),[c,l]=ko("all"),{message:n,setMessage:m}=Ue(),f=hi(()=>{u(!0);let s=c!=="all"?`?status=${c}`:"";C(`/feature-requests${s}`).then(({featureRequests:I})=>{o(I),d(0),u(!1)}).catch(()=>u(!1))},[c]);Ti(()=>{f()},[f]);let B=async(s,I)=>{try{await C(`/feature-requests/${s}/status`,{method:"PATCH",body:{status:I}}),m(`Marked as ${I}`,"success"),await f()}catch(v){m(`Failed: ${v instanceof Error?v.message:String(v)}`,"error")}},b=t;xi((s,I)=>{if(I.escape||s==="q"){e();return}if(I.upArrow){d(k=>Math.max(0,k-1));return}if(I.downArrow){d(k=>Math.min(b.length-1,k+1));return}if(s==="r"){f();return}let v={0:"all",1:"new",2:"reviewed",3:"dismissed",4:"converted"};if(v[s]){l(v[s]);return}if(s==="s"&&b.length>0){let k=b[g];if(k&&k.status==="new"){B(k.id,"reviewed");return}}if(s==="d"&&b.length>0){let k=b[g];if(k){B(k.id,"dismissed");return}}if(s==="c"&&b.length>0){let k=b[g];if(k){B(k.id,"converted");return}}});let S=s=>s==="new"?"cyan":s==="reviewed"?"green":s==="dismissed"?"gray":s==="converted"?"yellow":"white",r=s=>{let I=Date.now()-s;if(Math.floor(I/6e4)<1)return"now";let k=Math.floor(I/36e5);return k<24?`${k}h ago`:`${Math.floor(k/24)}d ago`};return pt(Ft,{flexDirection:"column",children:[pt(He,{bold:!0,children:["Feature Requests (",b.length,") (Esc:back q:quit r:refresh)"]}),n&&xt(Ft,{marginTop:1,children:pt(He,{color:n.type==="error"?"red":"green",children:[n.type==="success"?"\u2713 ":"\u2717 ",n.text]})}),xt(He,{dimColor:!0,children:"Filters: 0=all 1=new 2=reviewed 3=dismissed 4=converted"}),xt(He,{dimColor:!0,children:"Actions: s=reviewed d=dismissed c=converted"}),T?xt(He,{dimColor:!0,children:"Loading..."}):b.length===0?xt(He,{dimColor:!0,children:"No feature requests found."}):xt(Ft,{marginTop:1,flexDirection:"column",children:b.map((s,I)=>{let v=I===g,k=s.content.length>80?s.content.slice(0,80)+"...":s.content;return pt(Ft,{flexDirection:"column",children:[pt(Ft,{children:[xt(He,{color:v?"cyan":void 0,bold:v,children:v?"> ":" "}),pt(He,{color:S(s.status),children:["[",s.status,"]"]}),pt(He,{dimColor:!0,children:[" ",r(s.extractedAt)]}),s.tags&&s.tags.length>0&&pt(He,{dimColor:!0,children:[" ",s.tags.slice(0,3).join(", ")]})]}),pt(Ft,{paddingLeft:4,flexDirection:"column",children:[s.summary&&xt(He,{color:v?"cyan":"white",children:s.summary}),xt(He,{dimColor:!0,children:k})]})]},s.id)})})]})}import{Box as Ut,Text as qe,useInput as yi}from"ink";import{useEffect as bi,useState as Eo,useCallback as vi}from"react";import{jsx as Tt,jsxs as lt}from"react/jsx-runtime";function xn({onBack:e}){let[t,o]=Eo([]),[T,u]=Eo(!0),[g,d]=Eo(0),[c,l]=Eo("all"),{message:n,setMessage:m}=Ue(),f=vi(()=>{u(!0);let r=c!=="all"?`?status=${c}`:"";C(`/mistake-patterns${r}`).then(({mistakePatterns:s})=>{o(s),d(0),u(!1)}).catch(()=>u(!1))},[c]);bi(()=>{f()},[f]);let B=async(r,s)=>{try{await C(`/mistake-patterns/${r}`,{method:"PATCH",body:{status:s}}),m(`Marked as ${s}`,"success"),await f()}catch(I){m(`Failed: ${I instanceof Error?I.message:String(I)}`,"error")}};yi((r,s)=>{if(s.escape||r==="q"){e();return}if(s.upArrow){d(v=>Math.max(0,v-1));return}if(s.downArrow){d(v=>Math.min(t.length-1,v+1));return}if(r==="r"){f();return}let I={0:"all",1:"new",2:"acknowledged",3:"dismissed"};if(I[r]){l(I[r]);return}if(r==="a"&&t.length>0){let v=t[g];if(v&&v.status!=="acknowledged"){B(v.id,"acknowledged");return}}if(r==="d"&&t.length>0){let v=t[g];if(v&&v.status!=="dismissed"){B(v.id,"dismissed");return}}if(r==="n"&&t.length>0){let v=t[g];if(v&&v.status!=="new"){B(v.id,"new");return}}});let b=r=>r==="new"?"cyan":r==="acknowledged"?"green":r==="dismissed"?"gray":"white",S=r=>{let s=Date.now()-r;if(Math.floor(s/6e4)<1)return"now";let v=Math.floor(s/36e5);return v<24?`${v}h ago`:`${Math.floor(v/24)}d ago`};return lt(Ut,{flexDirection:"column",children:[lt(qe,{bold:!0,children:["Mistake Patterns (",t.length,") (Esc:back q:quit r:refresh)"]}),n&&Tt(Ut,{marginTop:1,children:lt(qe,{color:n.type==="error"?"red":"green",children:[n.type==="success"?"\u2713 ":"\u2717 ",n.text]})}),Tt(qe,{dimColor:!0,children:"Filters: 0=all 1=new 2=acknowledged 3=dismissed"}),Tt(qe,{dimColor:!0,children:"Actions: a=acknowledge d=dismiss n=mark new"}),T?Tt(qe,{dimColor:!0,children:"Loading..."}):t.length===0?Tt(qe,{dimColor:!0,children:"No mistake patterns found."}):Tt(Ut,{marginTop:1,flexDirection:"column",children:t.map((r,s)=>{let I=s===g,v=r.dimensionValue.length>80?r.dimensionValue.slice(0,80)+"...":r.dimensionValue;return lt(Ut,{flexDirection:"column",children:[lt(Ut,{children:[Tt(qe,{color:I?"cyan":void 0,bold:I,children:I?"> ":" "}),lt(qe,{color:b(r.status),children:["[",r.status,"]"]}),lt(qe,{dimColor:!0,children:[" ",S(r.lastSeen)]}),lt(qe,{dimColor:!0,children:[" [",r.dimensionType,"]"]}),lt(qe,{dimColor:!0,children:[" ",r.roleIds.length," role(s)"]}),lt(qe,{dimColor:!0,children:[" x",r.count]})]}),Tt(Ut,{paddingLeft:4,flexDirection:"column",children:Tt(qe,{color:I?"cyan":"white",children:v})})]},r.id)})})]})}import{Fragment as Ei,jsx as X,jsxs as Gt}from"react/jsx-runtime";function Si(){let{state:e,dispatch:t}=Ze(),{session:o,sendMessage:T,createNewSession:u,archiveCurrentSession:g}=Tr(),[d,c]=wi([]);Io(()=>{t({type:"SET_SESSION",session:o})},[o,t]),fr();let{latestMessage:l}=yr(o?.id??null),n=Yo(null);Io(()=>{l&&l.id!==n.current&&(n.current=l.id,c(k=>[...k,{role:"assistant",content:l.content}]))},[l]);let{events:m,isStreaming:f,clearEvents:B}=xr(e.activeTaskId),b=m[m.length-1],S=b?.type==="complete"&&!f,r=Yo(null),s=Yo("");Io(()=>{s.current=m.filter(k=>k.type==="reasoning").map(k=>k.content).join("")},[m]),Io(()=>{if(S&&e.activeTaskId!==r.current){r.current=e.activeTaskId;let k=b?.content||s.current;k&&c(j=>[...j,{role:"assistant",content:k}])}},[S,b,e.activeTaskId]);let I=async k=>{let j=k.trim().toLowerCase();if(["quit","exit","/quit","/exit"].includes(j)&&process.exit(0),k.startsWith("/")){let R=k.slice(1),L={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"}[R];if(L){t({type:"SET_VIEW",view:L});return}if(R==="new"){if(await g()){let Y=await u();c([]),B(),Y&&c([{role:"assistant",content:`Session archived. New session started: ${Y.id.slice(0,8)}`}])}return}if(R==="session"){let $=o?`Session: ${o.id}
|
|
12
|
+
Turns: ${o.messageCount}
|
|
13
|
+
Last active: ${new Date(o.lastActiveAt).toLocaleString()}`:"No active session";c(Y=>[...Y,{role:"assistant",content:$}]);return}}if(c(R=>[...R,{role:"user",content:k}]),B(),!await T(k)){c(R=>[...R,{role:"assistant",content:"Failed to send message. Server may be disconnected."}]);return}},v=e.view==="chat"&&!e.pendingPlanApproval&&!e.pendingApproval;return Gt(ro,{flexDirection:"column",paddingX:1,children:[X(vr,{}),Gt(ro,{flexGrow:1,flexDirection:"column",paddingY:1,children:[e.view==="chat"&&Gt(Ei,{children:[X(Er,{messages:d}),X(Sr,{events:m,isStreaming:f}),!e.connected&&!e.serverUnreachable&&X(ro,{children:X(Wt,{color:"red",children:"Server disconnected. Attempting to reconnect..."})}),e.serverUnreachable&&Gt(ro,{flexDirection:"column",children:[X(Wt,{color:"red",bold:!0,children:"Server unreachable after 15s."}),X(Wt,{dimColor:!0,children:"Check: adam server logs"}),X(Wt,{dimColor:!0,children:"Type /quit to exit."})]})]}),e.view==="work"&&X(an,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="tasks"&&X(yo,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="config"&&X(Fr,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="evolution"&&X(Hr,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="goals"&&X(vo,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="strategies"&&X(Kr,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="templates"&&X(wo,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="webhooks"&&X(Jr,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="memories"&&X(en,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="plugins"&&X(nn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="roles"&&X(gn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="featureRequests"&&X(pn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="mistakes"&&X(xn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="settings"&&X(rn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})}),e.view==="channels"&&X(cn,{onBack:()=>t({type:"SET_VIEW",view:"chat"})})]}),e.pendingPlanApproval?X(Ar,{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?X(Ir,{approval:e.pendingApproval,onResolved:()=>t({type:"SET_PENDING_APPROVAL",approval:null})}):v?X(wr,{onSubmit:I}):X(fn,{}),e.planTimeoutNotice&&X(Bi,{planId:e.planTimeoutNotice.planId,onDismiss:()=>t({type:"SET_PLAN_TIMEOUT_NOTICE",planId:null})})]})}function Bi({planId:e,onDismiss:t}){return Ci(o=>{o==="d"&&t()}),Gt(ro,{borderStyle:"round",borderColor:"yellow",paddingX:1,children:[Gt(Wt,{color:"yellow",children:["Plan ",e," was auto-denied after 300s timeout."]}),X(Wt,{dimColor:!0,children:" [d] Dismiss"})]})}function ki(){return X(ur,{children:X(Si,{})})}export{ki as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as a,C as b,D as c}from"./chunk-S6HEPXYU.js";import"./chunk-ZYAK567W.js";import"./chunk-44DK2I4J.js";import"./chunk-IUASV43X.js";import"./chunk-CNKUMQ37.js";import"./chunk-VOO3FHMD.js";import"./chunk-7ZCMGQLK.js";import"./chunk-UEYKBU5K.js";import"./chunk-5ZP5TJJA.js";import"./chunk-34WPSSKK.js";import"./chunk-EP26G2WS.js";import"./chunk-45I2IYIE.js";import"./chunk-FG72WBDO.js";import"./chunk-HGRL5ZKG.js";import"./chunk-E4NFVJ7F.js";import"./chunk-UIMIXDAF.js";import"./chunk-FP42MZDK.js";import"./chunk-7B2DHDUD.js";import"./chunk-QMW7VEPC.js";import"./chunk-4UCIJKQS.js";import"./chunk-MC2R5WMN.js";import"./chunk-F44QHTMI.js";import"./chunk-WGRTN6TX.js";import"./chunk-6JBSBSCL.js";import"./chunk-KSFVBI2D.js";import"./chunk-UMCM25ZR.js";import"./chunk-TLMG5W3L.js";import"./chunk-KZKDPY53.js";import"./chunk-OPCPSPZ2.js";import"./chunk-WYALKFT7.js";import"./chunk-37TV7A5A.js";import"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.js";import"./chunk-FCV2DPZQ.js";export{c as createAdamTools,b as getToolsFingerprint,a as resolveDeliveryTargets};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d,e}from"./chunk-FNHW2CRA.js";import"./chunk-43JFJEUT.js";import"./chunk-7QELXWKT.js";import"./chunk-FG72WBDO.js";import"./chunk-WGRTN6TX.js";import"./chunk-EEU56CTK.js";import"./chunk-6JBSBSCL.js";import"./chunk-37TV7A5A.js";import"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.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{m as a,n as b,o as c,p as d,q as e}from"./chunk-XMFTVHCC.js";import"./chunk-DAD4PSIZ.js";import"./chunk-CNKUMQ37.js";import"./chunk-VOO3FHMD.js";import"./chunk-7ZCMGQLK.js";import"./chunk-TU643PPA.js";import"./chunk-UEYKBU5K.js";import"./chunk-5ZP5TJJA.js";import"./chunk-34WPSSKK.js";import"./chunk-EP26G2WS.js";import"./chunk-45I2IYIE.js";import"./chunk-UIMIXDAF.js";import"./chunk-FP42MZDK.js";import"./chunk-7B2DHDUD.js";import"./chunk-QMW7VEPC.js";import"./chunk-4UCIJKQS.js";import"./chunk-MC2R5WMN.js";import"./chunk-F44QHTMI.js";import"./chunk-WGRTN6TX.js";import"./chunk-EEU56CTK.js";import"./chunk-6JBSBSCL.js";import"./chunk-OMLONR4N.js";import"./chunk-KZKDPY53.js";import"./chunk-OPCPSPZ2.js";import"./chunk-WYALKFT7.js";import"./chunk-37TV7A5A.js";import"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.js";import"./chunk-FCV2DPZQ.js";export{a as evaluateTaskCompletion,e as getSecurityPosture,d as reportViolation,b as startAuditManager,c as stopAuditManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c}from"./chunk-NNNDVFEY.js";import"./chunk-YLM6QTFR.js";import"./chunk-44DK2I4J.js";import"./chunk-DAD4PSIZ.js";import"./chunk-VOO3FHMD.js";import"./chunk-7ZCMGQLK.js";import"./chunk-UEYKBU5K.js";import"./chunk-34WPSSKK.js";import"./chunk-EP26G2WS.js";import"./chunk-43JFJEUT.js";import"./chunk-7QELXWKT.js";import"./chunk-FG72WBDO.js";import"./chunk-HGRL5ZKG.js";import"./chunk-E4NFVJ7F.js";import"./chunk-UIMIXDAF.js";import"./chunk-FP42MZDK.js";import"./chunk-7B2DHDUD.js";import"./chunk-SKN4VSLW.js";import"./chunk-NNMQGISW.js";import"./chunk-MC2R5WMN.js";import"./chunk-F44QHTMI.js";import"./chunk-WGRTN6TX.js";import"./chunk-EEU56CTK.js";import"./chunk-6JBSBSCL.js";import"./chunk-KSFVBI2D.js";import"./chunk-UMCM25ZR.js";import"./chunk-TLMG5W3L.js";import"./chunk-KZKDPY53.js";import"./chunk-OPCPSPZ2.js";import"./chunk-WYALKFT7.js";import"./chunk-37TV7A5A.js";import"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.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-ENHE6VOF.js";import"./chunk-7QELXWKT.js";import"./chunk-FG72WBDO.js";import"./chunk-7B2DHDUD.js";import"./chunk-NNMQGISW.js";import"./chunk-6JBSBSCL.js";import"./chunk-KZKDPY53.js";import"./chunk-37TV7A5A.js";import"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.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-FG72WBDO.js";import"./chunk-37TV7A5A.js";import"./chunk-WBAPIPST.js";import"./chunk-RLNMJ2QY.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,7 @@
|
|
|
1
|
+
import{c as l}from"./chunk-6JBSBSCL.js";import{k as r,m as c}from"./chunk-37TV7A5A.js";c();function u(e){return{id:e.id,parentId:e.parent_id??void 0,status:e.status,prompt:e.prompt,originalPrompt:e.original_prompt??void 0,config:JSON.parse(e.config),result:e.result??void 0,error:e.error??void 0,sdkSessionId:e.sdk_session_id??void 0,templateId:e.template_id??void 0,roleId:e.role_id??void 0,stepId:e.step_id??void 0,sourceSessionId:e.source_session_id??void 0,deliverTo:e.deliver_to?JSON.parse(e.deliver_to):void 0,reportTo:e.report_to?JSON.parse(e.report_to):void 0,createdAt:e.created_at,startedAt:e.started_at??void 0,completedAt:e.completed_at??void 0,costUsd:e.cost_usd??void 0,tokenUsage:e.token_usage?JSON.parse(e.token_usage):void 0,numTurns:e.num_turns??void 0,totalDurationMs:e.total_duration_ms??void 0,blockReason:e.block_reason_json?JSON.parse(e.block_reason_json):void 0,traceId:e.trace_id??void 0,errorCategory:e.error_category??void 0,retryCount:e.retry_count}}function m(e){r().prepare(`
|
|
2
|
+
INSERT INTO tasks (id, parent_id, status, prompt, original_prompt, config, result, error,
|
|
3
|
+
sdk_session_id, template_id, role_id, step_id, source_session_id, notify_targets, deliver_to, report_to,
|
|
4
|
+
created_at, started_at, completed_at,
|
|
5
|
+
cost_usd, token_usage, num_turns, total_duration_ms, trace_id, error_category, retry_count)
|
|
6
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
7
|
+
`).run(e.id,e.parentId??null,e.status,e.prompt,e.originalPrompt??null,JSON.stringify(e.config),e.result??null,e.error??null,e.sdkSessionId??null,e.templateId??null,e.roleId??null,e.stepId??null,e.sourceSessionId??null,null,e.deliverTo?JSON.stringify(e.deliverTo):null,e.reportTo?JSON.stringify(e.reportTo):null,e.createdAt,e.startedAt??null,e.completedAt??null,e.costUsd??null,e.tokenUsage?JSON.stringify(e.tokenUsage):null,e.numTurns??null,e.totalDurationMs??null,e.traceId??l()??null,e.errorCategory??null,e.retryCount??0)}function y(e){let n=r().prepare("SELECT * FROM tasks WHERE id = ?").get(e);return n?u(n):void 0}function T(e,t){let n=r(),s=[],o=[],a={parentId:"parent_id",status:"status",prompt:"prompt",result:"result",error:"error",sdkSessionId:"sdk_session_id",templateId:"template_id",roleId:"role_id",stepId:"step_id",sourceSessionId:"source_session_id",originalPrompt:"original_prompt",startedAt:"started_at",completedAt:"completed_at",costUsd:"cost_usd",numTurns:"num_turns",totalDurationMs:"total_duration_ms",errorCategory:"error_category",retryCount:"retry_count"};for(let[i,d]of Object.entries(a))i in t&&(s.push(`${d} = ?`),o.push(t[i]??null));"config"in t&&(s.push("config = ?"),o.push(JSON.stringify(t.config))),"tokenUsage"in t&&(s.push("token_usage = ?"),o.push(t.tokenUsage?JSON.stringify(t.tokenUsage):null)),"deliverTo"in t&&(s.push("deliver_to = ?"),o.push(t.deliverTo?JSON.stringify(t.deliverTo):null)),"reportTo"in t&&(s.push("report_to = ?"),o.push(t.reportTo?JSON.stringify(t.reportTo):null)),"blockReason"in t&&(s.push("block_reason_json = ?"),o.push(t.blockReason?JSON.stringify(t.blockReason):null)),s.length!==0&&(o.push(e),n.prepare(`UPDATE tasks SET ${s.join(", ")} WHERE id = ?`).run(...o))}function E(e,t=100,n=0,s){let o=r(),a="SELECT * FROM tasks",i=[],d=[];return e&&(i.push("status = ?"),d.push(e)),s&&(i.push("role_id = ?"),d.push(s)),i.length>0&&(a+=" WHERE "+i.join(" AND ")),a+=" ORDER BY created_at DESC LIMIT ? OFFSET ?",d.push(t,n),o.prepare(a).all(...d).map(u)}function R(e){return r().prepare("SELECT * FROM tasks WHERE parent_id = ? ORDER BY created_at ASC").all(e).map(u)}function b(e){return r().prepare("SELECT COALESCE(SUM(cost_usd), 0) as total FROM tasks WHERE completed_at >= ? AND cost_usd IS NOT NULL").get(e).total}function k(e){return r().prepare("SELECT trace_id FROM tasks WHERE id = ?").get(e)?.trace_id??void 0}function S(e){let t=r();return t.prepare("UPDATE tasks SET retry_count = retry_count + 1 WHERE id = ?").run(e),t.prepare("SELECT retry_count FROM tasks WHERE id = ?").get(e)?.retry_count??1}function p(e){return{id:e.id,taskId:e.task_id,retryAt:e.retry_at,createdAt:e.created_at}}function O(e){r().prepare("INSERT INTO delayed_retries (id, task_id, retry_at, created_at) VALUES (?, ?, ?, ?)").run(e.id,e.taskId,e.retryAt,e.createdAt)}function D(e){return r().prepare("SELECT * FROM delayed_retries WHERE retry_at <= ? ORDER BY retry_at ASC").all(e).map(p)}function I(e){r().prepare("DELETE FROM delayed_retries WHERE id = ?").run(e)}export{m as a,y as b,T as c,E as d,R as e,b as f,k as g,S as h,O as i,D as j,I as k};
|