@agent-live/cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin.mjs ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync } from 'node:fs'
3
+ import { fileURLToPath } from 'node:url'
4
+ import { dirname, join } from 'node:path'
5
+ import { exec } from 'node:child_process'
6
+
7
+ const here = dirname(fileURLToPath(import.meta.url))
8
+ const assetsDir = join(here, 'console-dist')
9
+ const { createServer } = await import(join(here, 'server', 'http.mjs'))
10
+ const noOpen = process.argv.includes('--no-open')
11
+ const dbPath = process.env.AGENT_LIVE_DB || './.agent-live/agent-live.db'
12
+ const port = Number(process.env.PORT || 3848)
13
+ if (!Number.isInteger(port) || port < 0 || port > 65535) throw new Error('PORT must be an integer between 0 and 65535')
14
+
15
+ if (!existsSync(join(assetsDir, 'index.html'))) {
16
+ console.error('Bundled console assets are missing from this package — try reinstalling agent-live.')
17
+ process.exit(1)
18
+ }
19
+
20
+ const { server, dispose } = createServer({ mode: 'real', dbPath, assetsDir })
21
+ server.listen(port, '127.0.0.1', () => {
22
+ const url = `http://127.0.0.1:${server.address().port}`
23
+ console.log(`Agent Live running at ${url}`)
24
+ console.log(`Reading recorded data from ${dbPath}`)
25
+ if (!noOpen) {
26
+ const opener = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open'
27
+ exec(`${opener} ${url}`, () => {})
28
+ }
29
+ })
30
+ server.on('error', (error) => {
31
+ dispose()
32
+ console.error(error.message)
33
+ process.exitCode = 1
34
+ })
35
+ for (const signal of ['SIGINT', 'SIGTERM']) {
36
+ process.on(signal, () => {
37
+ dispose()
38
+ server.close()
39
+ server.closeAllConnections()
40
+ })
41
+ }
@@ -0,0 +1 @@
1
+ import{j as e,f as r,u as i,a as d}from"./index-jfHKGDWM.js";import{E as n,c,b as h}from"./index-49jCgePm.js";function m(){const t=i("agents"),{agentId:s,setAgent:l}=d();return e.jsxs("label",{children:["Agent ",e.jsxs("select",{className:"select",value:s,onChange:a=>l(a.target.value),disabled:t.isPending,children:[e.jsx("option",{value:"all",children:"All agents"}),s!=="all"&&!t.data?.agents.some(a=>a.id===s)&&e.jsx("option",{value:s,children:"Unknown agent"}),t.data?.agents.map(a=>e.jsx("option",{value:a.id,children:a.name},a.id))]}),t.error&&e.jsxs("span",{role:"alert",children:[" Agent list unavailable. ",e.jsx("button",{onClick:()=>{t.refetch()},children:"Retry"})]})]})}function x({items:t}){return t.length?e.jsx("div",{className:"bars",children:t.map(s=>e.jsxs("div",{className:"bar-row",children:[e.jsx("span",{children:s.channel}),e.jsx("progress",{"aria-label":`${s.channel}: ${s.pct}%`,value:s.pct,max:100}),e.jsx("span",{children:s.count})]},s.channel))}):e.jsx(n,{children:"Channel activity will appear when customers interact with agents."})}function j({runs:t}){return t.length?e.jsx(c,{label:"Agent runs",headers:["When","Summary","Agent","Customer","Status"],children:t.map(s=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("time",{dateTime:s.startedAt,children:r(s.startedAt)})}),e.jsxs("td",{children:[s.summary,e.jsx("div",{className:"row-sub",children:s.channel})]}),e.jsx("td",{children:s.agentName}),e.jsxs("td",{children:[s.customerAlias,e.jsx("div",{className:"row-sub",children:s.customerHint})]}),e.jsx("td",{children:e.jsx(h,{status:s.status})})]},s.id))}):e.jsx(n,{children:"No runs match this view. Adjust the filters or wait for agent activity."})}export{m as A,x as C,j as R};
@@ -0,0 +1 @@
1
+ import{j as e}from"./index-jfHKGDWM.js";function i({status:s}){const a=["completed","delivered","approved","idle"].includes(s)?"ok":["failed","degraded","blocked"].includes(s)?"danger":["running","busy","waiting","in_progress"].includes(s)?"warn":"quiet";return e.jsx("span",{className:`pill pill-${a}`,children:s.replaceAll("_"," ")})}function c({title:s,description:a,children:l}){return e.jsxs("div",{className:"page-head",children:[e.jsxs("div",{children:[e.jsx("h1",{children:s}),e.jsx("p",{children:a})]}),l&&e.jsx("div",{className:"filters",children:l})]})}function d({title:s,children:a}){return e.jsxs("section",{className:"card",children:[s&&e.jsx("div",{className:"card-h",children:e.jsx("h2",{children:s})}),a]})}function t({children:s}){return e.jsx("div",{className:"empty",children:s})}function o({pending:s,error:a,retry:l,children:n}){return s?e.jsx("div",{className:"loading",role:"status",children:"Loading this view…"}):e.jsxs(e.Fragment,{children:[a&&e.jsxs("div",{className:"error",role:"alert",children:["Could not update this view. ",e.jsx("button",{className:"select",onClick:l,children:"Retry"})]}),n]})}function x({label:s,headers:a,children:l}){return e.jsx("div",{className:"table-scroll",role:"region","aria-label":s,tabIndex:0,children:e.jsxs("table",{className:"table",children:[e.jsx("caption",{className:"sr-only",children:s}),e.jsx("thead",{children:e.jsx("tr",{children:a.map(n=>e.jsx("th",{scope:"col",children:n},n))})}),e.jsx("tbody",{children:l})]})})}function h({label:s,value:a,detail:l}){return e.jsxs("div",{className:"stat",children:[e.jsx("div",{className:"stat-label",children:s}),e.jsx("div",{className:"stat-value",children:a}),e.jsx("div",{className:"stat-sub",children:l})]})}export{o as D,t as E,c as P,h as S,d as a,i as b,x as c};
@@ -0,0 +1 @@
1
+ :root{--al-bg: #f4f5f3;--al-surface: #ffffff;--al-ink: #121411;--al-muted: #5c6358;--al-line: #e3e6e0;--al-line-strong: #cfd4cb;--al-accent: #1dab61;--al-accent-soft: #e8f7ef;--al-warn: #b45309;--al-warn-soft: #fff7ed;--al-danger: #b42318;--al-danger-soft: #fef3f2;--al-info: #175cd3;--al-info-soft: #eff8ff;--al-sidebar: #0f1410;--al-sidebar-ink: #f3f5f1;--al-sidebar-muted: #9aa396;--al-radius: 14px;--al-radius-sm: 10px;--al-shadow: 0 1px 0 rgba(18,20,17,.04), 0 8px 24px rgba(18,20,17,.04);--al-font: "DM Sans", ui-sans-serif, system-ui, sans-serif;--al-mono: "IBM Plex Mono", ui-monospace, monospace;--al-sidebar-w: 248px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.page-head h1{margin:0;font-size:1.55rem;letter-spacing:-.03em;font-weight:700}.page-head p{margin:.35rem 0 0;color:var(--al-muted);font-size:.92rem;max-width:44rem}.filters{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.select{border:1px solid var(--al-line);background:var(--al-surface);border-radius:999px;padding:.55rem .9rem;color:var(--al-ink)}.grid-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem;margin-bottom:1rem}.stat{background:var(--al-surface);border:1px solid var(--al-line);border-radius:var(--al-radius);padding:1rem 1.1rem;box-shadow:var(--al-shadow)}.stat-label{font-size:.75rem;color:var(--al-muted);text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:1.7rem;font-weight:700;letter-spacing:-.04em;margin-top:.25rem}.stat-sub{font-size:.8rem;color:var(--al-muted);margin-top:.2rem}.panels{display:grid;grid-template-columns:1.4fr 1fr;gap:.85rem}.card{background:var(--al-surface);border:1px solid var(--al-line);border-radius:var(--al-radius);box-shadow:var(--al-shadow);overflow:hidden}.card-h{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.95rem 1.1rem;border-bottom:1px solid var(--al-line)}.card-h h2{margin:0;font-size:.95rem;letter-spacing:-.01em}.card-b{padding:.4rem .45rem .65rem}.row{display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:start;padding:.8rem .7rem;border-radius:var(--al-radius-sm);width:100%;text-align:left;border:0;background:transparent;cursor:default;color:inherit}button.row{cursor:pointer}button.row:hover,button.row:focus-visible{background:#f7f8f5;outline:none}.row-title{font-size:.92rem;font-weight:550;letter-spacing:-.01em}.row-sub{font-size:.8rem;color:var(--al-muted);margin-top:.22rem;line-height:1.35}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:.28rem .55rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--al-line);white-space:nowrap}.pill-ok{color:#0f7a43;background:var(--al-accent-soft);border-color:#cfeedd}.pill-warn{color:var(--al-warn);background:var(--al-warn-soft);border-color:#f5e1c4}.pill-danger{color:var(--al-danger);background:var(--al-danger-soft);border-color:#f5d0cb}.pill-quiet{color:var(--al-muted);background:#f3f4f1}.pill-info{color:var(--al-info);background:var(--al-info-soft);border-color:#d1e9ff}.bars{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.1rem 1.2rem}.bar-row{display:grid;grid-template-columns:88px 1fr 40px;gap:.65rem;align-items:center;font-size:.85rem}.bar-track{height:8px;background:#eef0eb;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:var(--al-accent);border-radius:999px}.table{width:100%;border-collapse:collapse;font-size:.88rem}.table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--al-muted);font-weight:600;padding:.75rem 1rem;border-bottom:1px solid var(--al-line)}.table td{padding:.85rem 1rem;border-bottom:1px solid var(--al-line);vertical-align:top}.table tr:last-child td{border-bottom:0}.mono{font-family:var(--al-mono);font-size:.78rem}.empty,.loading,.error{padding:2rem 1.25rem;text-align:center;color:var(--al-muted);font-size:.9rem}.error{color:var(--al-danger)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--al-font);color:var(--al-ink);background:var(--al-bg);-webkit-font-smoothing:antialiased}button,input{font:inherit}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:var(--al-sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--al-sidebar);color:var(--al-sidebar-ink);padding:1.25rem 1rem 1.5rem;display:flex;flex-direction:column;gap:1.5rem;position:sticky;top:0;height:100vh}.brand{display:flex;flex-direction:column;gap:.35rem;padding:.25rem .5rem}.brand-mark{font-weight:700;letter-spacing:-.03em;font-size:1.15rem}.brand-mark span{color:var(--al-accent)}.brand-org{font-size:.78rem;color:var(--al-sidebar-muted)}.nav{display:flex;flex-direction:column;gap:.2rem;flex:1}.nav a{appearance:none;border:0;background:transparent;color:var(--al-sidebar-muted);text-align:left;padding:.7rem .8rem;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.nav a:hover{background:#ffffff0d;color:var(--al-sidebar-ink)}.nav a.active{background:#1dab6129;color:#fff}.nav-badge{font-size:.68rem;font-family:var(--al-mono);background:#ffffff14;padding:.15rem .4rem;border-radius:999px;color:var(--al-sidebar-ink)}.nav a.active .nav-badge{background:var(--al-accent);color:#062616}.sidebar-foot{padding:.75rem .8rem;border:1px solid rgba(255,255,255,.08);border-radius:12px;font-size:.78rem;color:var(--al-sidebar-muted)}.sidebar-foot strong{display:block;color:var(--al-sidebar-ink);margin-bottom:.2rem;font-weight:600}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:1rem;padding:.9rem 1.5rem;border-bottom:1px solid var(--al-line);background:#f4f5f3e0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:5}.search{flex:1;max-width:420px;background:var(--al-surface);border:1px solid var(--al-line);border-radius:999px;padding:.65rem 1rem;color:var(--al-ink)}.search::placeholder{color:#8a9184}.live-pill,.user-pill{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .75rem;border-radius:999px;border:1px solid var(--al-line);background:var(--al-surface);font-size:.8rem;white-space:nowrap}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--al-accent);box-shadow:0 0 0 4px #1dab612e}.content{padding:1.35rem 1.5rem 2.5rem}.agent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.agent-card{background:var(--al-surface);border:1px solid var(--al-line);border-radius:var(--al-radius);padding:1.1rem 1.15rem;box-shadow:var(--al-shadow);cursor:pointer;text-align:left;color:inherit;width:100%}.agent-card:hover,.agent-card:focus-visible{border-color:var(--al-accent);outline:none}.agent-card h2{margin:0;font-size:1.02rem;letter-spacing:-.02em}.agent-card p{margin:.4rem 0 .85rem;color:var(--al-muted);font-size:.85rem;line-height:1.4}.agent-meta{display:flex;gap:.5rem;flex-wrap:wrap;font-size:.78rem;color:var(--al-muted)}.menu-btn{display:none;border:1px solid var(--al-line);background:var(--al-surface);border-radius:10px;padding:.5rem .7rem}.toast{position:fixed;right:1rem;bottom:1rem;background:var(--al-sidebar);color:#fff;padding:.75rem 1rem;border-radius:12px;font-size:.85rem;box-shadow:0 12px 30px #0003;opacity:0;transform:translateY(8px);transition:.25s ease;pointer-events:none;z-index:20}.toast.show{opacity:1;transform:translateY(0)}@media(max-width:980px){.grid-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.panels,.agent-grid{grid-template-columns:1fr}}@media(max-width:820px){.app{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:min(86vw,280px);transform:translate(-105%);transition:transform .2s ease;z-index:30}.sidebar.open{transform:translate(0)}.menu-btn{display:inline-flex}.backdrop{display:none;position:fixed;inset:0;background:#00000059;z-index:25}.backdrop.show{display:block}}:focus-visible{outline:2px solid var(--al-info);outline-offset:3px}.nav a{font-size:.95rem}.nav a.active{color:var(--al-sidebar-ink)}.stack{display:grid;gap:1rem}.table-scroll{overflow-x:auto}.table{min-width:560px}.agent-title{display:flex;justify-content:space-between;align-items:center;gap:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;top:-100px;left:1rem;z-index:100;padding:1rem;background:var(--al-surface)}.skip-link:focus{top:1rem}.refresh-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem;border:1px solid var(--al-line);border-radius:var(--al-radius-sm);margin-bottom:1rem}.live-pill{margin-left:auto}.live-pill[data-state=disconnected] .live-dot{background:var(--al-danger);box-shadow:none}.live-pill[data-state=connecting] .live-dot{background:var(--al-warn);box-shadow:none}.pill{font-size:.75rem}.stat-label,.table th{font-size:.8rem}.sidebar-close{display:none}progress{width:100%;accent-color:var(--al-accent)}@media(max-width:820px){.sidebar-close{display:inline-flex;align-self:flex-end}.topbar{padding:.75rem;gap:.5rem;flex-wrap:wrap}.content{padding:1rem}.search{min-width:0;width:100%}.user-pill{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}