agentix-cli 0.64.0 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/apps/mac-voice/Sources/AgentXVoice/AgentClient.swift +29 -8
  2. package/apps/mac-voice/Sources/AgentXVoice/MiniOrbs.swift +219 -0
  3. package/apps/mac-voice/Sources/AgentXVoice/Panel.swift +32 -3
  4. package/apps/mac-voice/Sources/AgentXVoice/PillBusy.swift +126 -0
  5. package/apps/mac-voice/Sources/AgentXVoice/StatusMenu.swift +53 -12
  6. package/apps/mac-voice/Sources/AgentXVoice/main.swift +49 -3
  7. package/dist/{agent-3M5EI4S6.js → agent-BQ5CCARE.js} +2 -2
  8. package/dist/{board-dashboard-JBRO26JC.js → board-dashboard-K3P2M7A7.js} +877 -375
  9. package/dist/board-dashboard-K3P2M7A7.js.map +1 -0
  10. package/dist/{chunk-WWMFNLKD.js → chunk-2NYP4OQU.js} +3 -3
  11. package/dist/chunk-2NYP4OQU.js.map +1 -0
  12. package/dist/{chunk-KZDG26LI.js → chunk-6CFAF5CH.js} +2 -2
  13. package/dist/{chunk-VUB6XYWD.js → chunk-AWKZ3BF2.js} +54 -54
  14. package/dist/chunk-AWKZ3BF2.js.map +1 -0
  15. package/dist/{chunk-HYKILAEJ.js → chunk-BBXBSM4R.js} +183 -183
  16. package/dist/chunk-BBXBSM4R.js.map +1 -0
  17. package/dist/{chunk-VVQDKHF5.js → chunk-EPTZ6JMA.js} +4 -4
  18. package/dist/chunk-JWDJMFU6.js +4 -0
  19. package/dist/chunk-JWDJMFU6.js.map +1 -0
  20. package/dist/{chunk-S2VETB7B.js → chunk-YDHI2CJG.js} +26 -26
  21. package/dist/chunk-YDHI2CJG.js.map +1 -0
  22. package/dist/{chunk-NNXHRO7H.js → chunk-ZIEUP56T.js} +17 -17
  23. package/dist/chunk-ZIEUP56T.js.map +1 -0
  24. package/dist/cli.js +1 -1
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.js +1 -1
  27. package/dist/{program-FSRL275V.js → program-4W45H3J2.js} +2 -2
  28. package/dist/push-announce-PM5FZJRW.js +3 -0
  29. package/dist/push-announce-PM5FZJRW.js.map +1 -0
  30. package/dist/push-prefs-YOJNTOJF.js +2 -0
  31. package/dist/push-store-5VJ4FNI4.js +2 -0
  32. package/dist/registry-TERSIHOC.js +2 -0
  33. package/dist/registry-TERSIHOC.js.map +1 -0
  34. package/package.json +1 -1
  35. package/dist/board-dashboard-JBRO26JC.js.map +0 -1
  36. package/dist/chunk-HYKILAEJ.js.map +0 -1
  37. package/dist/chunk-NNXHRO7H.js.map +0 -1
  38. package/dist/chunk-S2VETB7B.js.map +0 -1
  39. package/dist/chunk-VUB6XYWD.js.map +0 -1
  40. package/dist/chunk-WWMFNLKD.js.map +0 -1
  41. package/dist/push-store-LXTYULUF.js +0 -2
  42. package/dist/registry-T4R7LVFZ.js +0 -2
  43. /package/dist/{agent-3M5EI4S6.js.map → agent-BQ5CCARE.js.map} +0 -0
  44. /package/dist/{chunk-KZDG26LI.js.map → chunk-6CFAF5CH.js.map} +0 -0
  45. /package/dist/{chunk-VVQDKHF5.js.map → chunk-EPTZ6JMA.js.map} +0 -0
  46. /package/dist/{program-FSRL275V.js.map → program-4W45H3J2.js.map} +0 -0
  47. /package/dist/{push-store-LXTYULUF.js.map → push-prefs-YOJNTOJF.js.map} +0 -0
  48. /package/dist/{registry-T4R7LVFZ.js.map → push-store-5VJ4FNI4.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{a as n}from"./chunk-VVQDKHF5.js";import"./chunk-5WMHW4A6.js";import"./chunk-N42YWYIR.js";import"./chunk-WMDDQVCI.js";import"./chunk-Z3IP66SL.js";import"./chunk-C4CDVE2E.js";import"./chunk-RKPAVWXF.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-HYKILAEJ.js";import"./chunk-S2VETB7B.js";import"./chunk-5QP56S4O.js";import"./chunk-BYJ3A55Y.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-I2SD4XZ6.js";import"./chunk-XT3E5MLX.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import"./chunk-VUB6XYWD.js";import"./chunk-NNXHRO7H.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.js";import"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import"./chunk-KZDG26LI.js";import"./chunk-SFQUP3BP.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";var r=["SIGINT","SIGTERM"];function o(t=process){for(let i of r)t.on(i,()=>{t.listenerCount(i)<=1&&t.exit(0)})}o();async function s(){let t=await n();if(process.argv.slice(2).length===0){t.outputHelp();return}t.parse()}s();
2
+ import{a as n}from"./chunk-EPTZ6JMA.js";import"./chunk-5WMHW4A6.js";import"./chunk-WMDDQVCI.js";import"./chunk-Z3IP66SL.js";import"./chunk-N42YWYIR.js";import"./chunk-C4CDVE2E.js";import"./chunk-RKPAVWXF.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-BBXBSM4R.js";import"./chunk-YDHI2CJG.js";import"./chunk-5QP56S4O.js";import"./chunk-ZVP6GB4G.js";import"./chunk-BYJ3A55Y.js";import"./chunk-LQRBGQIR.js";import"./chunk-I2SD4XZ6.js";import"./chunk-XT3E5MLX.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import"./chunk-AWKZ3BF2.js";import"./chunk-ZIEUP56T.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import"./chunk-6CFAF5CH.js";import"./chunk-SFQUP3BP.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";var r=["SIGINT","SIGTERM"];function o(t=process){for(let i of r)t.on(i,()=>{t.listenerCount(i)<=1&&t.exit(0)})}o();async function s(){let t=await n();if(process.argv.slice(2).length===0){t.outputHelp();return}t.parse()}s();
3
3
  //# sourceMappingURL=cli.js.map
package/dist/index.d.ts CHANGED
@@ -1393,6 +1393,8 @@ interface AgentSkill {
1393
1393
  description: string;
1394
1394
  tags: string[];
1395
1395
  examples?: string[];
1396
+ /** AgentX: the agent's on-screen colour ("#RRGGBB"), for peers' voice widgets. */
1397
+ color?: string;
1396
1398
  }
1397
1399
  type TaskState = "submitted" | "working" | "input-required" | "completed" | "failed" | "canceled";
1398
1400
  interface Task {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as L}from"./chunk-Y57CULGE.js";import{a as St,b as kt,c as vt,d as xt,da as Tt,e as $t,ea as Mt,f as Ct,g as Pt,h as bt}from"./chunk-HYKILAEJ.js";import"./chunk-S2VETB7B.js";import"./chunk-5QP56S4O.js";import"./chunk-BYJ3A55Y.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-I2SD4XZ6.js";import"./chunk-XT3E5MLX.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import{S as yt,l as lt,m as ct,n as dt,o as mt,p as pt}from"./chunk-VUB6XYWD.js";import"./chunk-NNXHRO7H.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.js";import{s as ut}from"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import{A as D,B as z,C as V,a as ye,b as we,c as Se,d as Ae,e as Ie,f as Oe,g as Ne,h as He,i as je,j as Ue,k as _e,l as I,m as q,n as Be,o as qe,p as Ye,q as O,r as ze,s as Ve,t as Xe,u as x,v as Y,w as Qe,x as Ze,y as et,z as wt}from"./chunk-KZDG26LI.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import{a as gt,b as ft,e as ht}from"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import{a as ke,b as ve,c as xe,d as $e,e as Ce,f as Pe,g as be,h as Te,i as Me,j as Re,l as Ee,m as Ge,o as T,p as W}from"./chunk-SZJMS7K4.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{a as Fe,b as Le,c as A,d as De}from"./chunk-VDMYBPYB.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{u as tt,w as st,x as ot,z as nt}from"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";W();G();import{execa as Rt}from"execa";import{existsSync as se,promises as X}from"fs";import S from"path";import ie from"node-fetch";async function Et(o,e){let t=o.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${o}. Expected format: owner/repo`);let s=t[0],i=t[1],n=t[2];try{let a=n?`${s}/${i}/${n}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${o}`);let r=S.resolve(e,".skills",`${s}_${i}`);if(se(r))return await ne(r,o);let d=S.resolve(e,".skills");return se(d)?await ne(d,o):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Gt(s,i,n,e)}}async function Gt(o,e,t,s){let i=[];try{let n=`https://api.github.com/repos/${o}/${e}/git/trees/main?recursive=1`,a=await ie(n);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let d=(await a.json()).tree.filter(p=>p.type==="blob"&&p.path.endsWith("SKILL.md"));if(t){let p=d.find(f=>f.path.includes(`/${t}/`)||f.path===`${t}/SKILL.md`);if(p){let f=await oe(o,e,p.path,s);f&&i.push(f)}}else for(let p of d){let f=await oe(o,e,p.path,s);f&&i.push(f)}}catch(n){m.error(`Failed to fetch skills from GitHub: ${n.message}`)}return i}async function oe(o,e,t,s){try{let i=`https://raw.githubusercontent.com/${o}/${e}/main/${t}`,n=await ie(i);if(!n.ok)return null;let a=await n.text(),r=A(a);if(r){r.source="remote",r.packageId=`${o}/${e}`;let d=S.dirname(t),p=S.resolve(s,".skills",`${o}_${e}`,d);await X.mkdir(p,{recursive:!0}),await X.writeFile(S.resolve(p,"SKILL.md"),a),r.path=S.resolve(p,"SKILL.md")}return r}catch{return null}}async function ne(o,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:o,deep:5});for(let n of i)try{let a=S.resolve(o,n),r=await X.readFile(a,"utf8"),d=A(r);d&&(d.source="remote",d.path=a,d.packageId=e,t.push(d))}catch{}return t}async function At(o,e,t,s,i){let n=["---",`name: ${o}`,`description: ${e}`];if(s?.length){n.push("tags:");for(let a of s)n.push(` - ${a}`)}if(i?.length){n.push("globs:");for(let a of i)n.push(` - ${a}`)}return n.push("---"),`${n.join(`
1
+ import{a as L}from"./chunk-Y57CULGE.js";import{a as St,b as kt,c as vt,d as xt,da as Tt,e as $t,ea as Mt,f as Ct,g as Pt,h as bt}from"./chunk-BBXBSM4R.js";import"./chunk-YDHI2CJG.js";import"./chunk-5QP56S4O.js";import"./chunk-ZVP6GB4G.js";import"./chunk-BYJ3A55Y.js";import"./chunk-LQRBGQIR.js";import"./chunk-I2SD4XZ6.js";import"./chunk-XT3E5MLX.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import{S as yt,l as lt,m as ct,n as dt,o as mt,p as pt}from"./chunk-AWKZ3BF2.js";import"./chunk-ZIEUP56T.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import{s as ut}from"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import{A as D,B as z,C as V,a as ye,b as we,c as Se,d as Ae,e as Ie,f as Oe,g as Ne,h as He,i as je,j as Ue,k as _e,l as I,m as q,n as Be,o as qe,p as Ye,q as O,r as ze,s as Ve,t as Xe,u as x,v as Y,w as Qe,x as Ze,y as et,z as wt}from"./chunk-6CFAF5CH.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import{a as gt,b as ft,e as ht}from"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import{a as ke,b as ve,c as xe,d as $e,e as Ce,f as Pe,g as be,h as Te,i as Me,j as Re,l as Ee,m as Ge,o as T,p as W}from"./chunk-SZJMS7K4.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{a as Fe,b as Le,c as A,d as De}from"./chunk-VDMYBPYB.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{u as tt,w as st,x as ot,z as nt}from"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";W();G();import{execa as Rt}from"execa";import{existsSync as se,promises as X}from"fs";import S from"path";import ie from"node-fetch";async function Et(o,e){let t=o.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${o}. Expected format: owner/repo`);let s=t[0],i=t[1],n=t[2];try{let a=n?`${s}/${i}/${n}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${o}`);let r=S.resolve(e,".skills",`${s}_${i}`);if(se(r))return await ne(r,o);let d=S.resolve(e,".skills");return se(d)?await ne(d,o):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Gt(s,i,n,e)}}async function Gt(o,e,t,s){let i=[];try{let n=`https://api.github.com/repos/${o}/${e}/git/trees/main?recursive=1`,a=await ie(n);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let d=(await a.json()).tree.filter(p=>p.type==="blob"&&p.path.endsWith("SKILL.md"));if(t){let p=d.find(f=>f.path.includes(`/${t}/`)||f.path===`${t}/SKILL.md`);if(p){let f=await oe(o,e,p.path,s);f&&i.push(f)}}else for(let p of d){let f=await oe(o,e,p.path,s);f&&i.push(f)}}catch(n){m.error(`Failed to fetch skills from GitHub: ${n.message}`)}return i}async function oe(o,e,t,s){try{let i=`https://raw.githubusercontent.com/${o}/${e}/main/${t}`,n=await ie(i);if(!n.ok)return null;let a=await n.text(),r=A(a);if(r){r.source="remote",r.packageId=`${o}/${e}`;let d=S.dirname(t),p=S.resolve(s,".skills",`${o}_${e}`,d);await X.mkdir(p,{recursive:!0}),await X.writeFile(S.resolve(p,"SKILL.md"),a),r.path=S.resolve(p,"SKILL.md")}return r}catch{return null}}async function ne(o,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:o,deep:5});for(let n of i)try{let a=S.resolve(o,n),r=await X.readFile(a,"utf8"),d=A(r);d&&(d.source="remote",d.path=a,d.packageId=e,t.push(d))}catch{}return t}async function At(o,e,t,s,i){let n=["---",`name: ${o}`,`description: ${e}`];if(s?.length){n.push("tags:");for(let a of s)n.push(` - ${a}`)}if(i?.length){n.push("globs:");for(let a of i)n.push(` - ${a}`)}return n.push("---"),`${n.join(`
2
2
  `)}
3
3
 
4
4
  ${t}`}async function It(o){let{loadLocalSkills:e}=await import("./loader-EVHZ2R73.js");return e(o)}async function Ot(o,e,t,s,i){let a=[{role:"system",content:`You are a skill author for the Agent Skills ecosystem (skills.sh).
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-VVQDKHF5.js";import"./chunk-5WMHW4A6.js";import"./chunk-N42YWYIR.js";import"./chunk-WMDDQVCI.js";import"./chunk-Z3IP66SL.js";import"./chunk-C4CDVE2E.js";import"./chunk-RKPAVWXF.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-HYKILAEJ.js";import"./chunk-S2VETB7B.js";import"./chunk-5QP56S4O.js";import"./chunk-BYJ3A55Y.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-I2SD4XZ6.js";import"./chunk-XT3E5MLX.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import"./chunk-VUB6XYWD.js";import"./chunk-NNXHRO7H.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.js";import"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import"./chunk-KZDG26LI.js";import"./chunk-SFQUP3BP.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as buildProgram};
2
- //# sourceMappingURL=program-FSRL275V.js.map
1
+ import{a}from"./chunk-EPTZ6JMA.js";import"./chunk-5WMHW4A6.js";import"./chunk-WMDDQVCI.js";import"./chunk-Z3IP66SL.js";import"./chunk-N42YWYIR.js";import"./chunk-C4CDVE2E.js";import"./chunk-RKPAVWXF.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-BBXBSM4R.js";import"./chunk-YDHI2CJG.js";import"./chunk-5QP56S4O.js";import"./chunk-ZVP6GB4G.js";import"./chunk-BYJ3A55Y.js";import"./chunk-LQRBGQIR.js";import"./chunk-I2SD4XZ6.js";import"./chunk-XT3E5MLX.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import"./chunk-AWKZ3BF2.js";import"./chunk-ZIEUP56T.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import"./chunk-6CFAF5CH.js";import"./chunk-SFQUP3BP.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as buildProgram};
2
+ //# sourceMappingURL=program-4W45H3J2.js.map
@@ -0,0 +1,3 @@
1
+ import"./chunk-QIJLFPWE.js";var h=200;function f(n){let t=n.agentId?`${n.agentId}: ${n.summary}`:n.summary,r=[...t];return r.length>200?r.slice(0,200-1).join("")+"\u2026":t}function l(n){let t=n.now??Date.now,r=n.startedAt??t(),m=n.maxAgeMs??10*6e4,p=n.log??(()=>{}),s=new Set;return n.bus.subscribe(o=>{if(o.kind!=="announce")return;let i=`${o.node}:${o.id}`;if(s.has(i))return;s.add(i),s.size>1e3&&s.delete(s.values().next().value);let u=Date.parse(o.at);if(!Number.isFinite(u)||u<r||u<t()-m)return;let a=[...new Set(n.store.list().map(e=>e.deviceId))].filter(e=>n.prefs.on(e,"announce"));if(a.length===0)return;let g=`Announcement
2
+ ${f(o)}`;for(let e of a)n.send({channel:"push",chatId:e,text:g}).catch(c=>{p(`push: announcement not sent to ${e}: ${c?.message??c}`)})})}export{h as ANNOUNCE_PUSH_MAX,f as announceBody,l as attachAnnouncePush};
3
+ //# sourceMappingURL=push-announce-PM5FZJRW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/channels/push-announce.ts"],"sourcesContent":["import type { EnvelopeListener } from \"@/events/bus\"\nimport type { EventEnvelope } from \"@/events/envelope\"\nimport type { OutgoingMessage } from \"./types\"\nimport type { PushStore } from \"./push-store\"\nimport type { PushPrefs } from \"./push-prefs\"\n\n// --- Push a notification for each new mesh announcement (#268) ---\n//\n// Runs only on the node that hosts the phone app (the one running\n// PushAdapter). Announcements from other nodes reach this node's bus\n// through the peer feed, so listening to the bus covers the whole mesh\n// and each announcement is pushed once, by one node.\n//\n// Not pushed:\n// - the same event twice (key node:id; the bus already refuses repeats\n// from the feed, this guards against a second path in),\n// - anything published before this process started, which is what the\n// feed's first-contact backfill and catch-up reads bring in,\n// - anything older than `maxAgeMs`, so a peer that reconnects after a\n// long outage doesn't fire a stack of stale notifications,\n// - phones that turned \"Notify me of announcements\" off (push_prefs\n// switch \"announce\").\n\n/** Longest announcement text in a notification body. */\nexport const ANNOUNCE_PUSH_MAX = 200\nconst SEEN_MAX = 1000\n\nexport interface AnnouncePushDeps {\n bus: { subscribe(fn: EnvelopeListener): () => void }\n store: Pick<PushStore, \"list\">\n prefs: Pick<PushPrefs, \"on\">\n /** The PushAdapter's send; chatId is one phone's device id. */\n send: (msg: OutgoingMessage) => Promise<unknown>\n /** Events stamped before this are replays. Defaults to attach time. */\n startedAt?: number\n maxAgeMs?: number\n now?: () => number\n log?: (...args: unknown[]) => void\n}\n\nexport function announceBody(e: Pick<EventEnvelope, \"summary\" | \"agentId\">): string {\n const text = e.agentId ? `${e.agentId}: ${e.summary}` : e.summary\n const chars = [...text]\n return chars.length > ANNOUNCE_PUSH_MAX ? chars.slice(0, ANNOUNCE_PUSH_MAX - 1).join(\"\") + \"…\" : text\n}\n\n/** Subscribes to the bus; returns the unsubscribe function. */\nexport function attachAnnouncePush(deps: AnnouncePushDeps): () => void {\n const now = deps.now ?? Date.now\n const startedAt = deps.startedAt ?? now()\n const maxAgeMs = deps.maxAgeMs ?? 10 * 60_000\n const log = deps.log ?? (() => {})\n const seen = new Set<string>()\n\n return deps.bus.subscribe((e) => {\n if (e.kind !== \"announce\") return\n const key = `${e.node}:${e.id}`\n if (seen.has(key)) return\n seen.add(key)\n if (seen.size > SEEN_MAX) seen.delete(seen.values().next().value as string)\n\n const at = Date.parse(e.at)\n if (!Number.isFinite(at) || at < startedAt || at < now() - maxAgeMs) return\n\n const devices = [...new Set(deps.store.list().map((s) => s.deviceId))]\n .filter((id) => deps.prefs.on(id, \"announce\"))\n if (devices.length === 0) return\n const text = `Announcement\\n${announceBody(e)}`\n for (const chatId of devices) {\n deps.send({ channel: \"push\", chatId, text }).catch((err: any) => {\n log(`push: announcement not sent to ${chatId}: ${err?.message ?? err}`)\n })\n }\n })\n}\n"],"mappings":"4BAwBO,IAAMA,EAAoB,IAgB1B,SAASC,EAAaC,EAAuD,CAClF,IAAMC,EAAOD,EAAE,QAAU,GAAGA,EAAE,YAAYA,EAAE,UAAYA,EAAE,QACpDE,EAAQ,CAAC,GAAGD,CAAI,EACtB,OAAOC,EAAM,OAAS,IAAoBA,EAAM,MAAM,EAAG,IAAoB,CAAC,EAAE,KAAK,EAAE,EAAI,SAAMD,CACnG,CAGO,SAASE,EAAmBC,EAAoC,CACrE,IAAMC,EAAMD,EAAK,KAAO,KAAK,IACvBE,EAAYF,EAAK,WAAaC,EAAI,EAClCE,EAAWH,EAAK,UAAY,GAAK,IACjCI,EAAMJ,EAAK,MAAQ,IAAM,CAAC,GAC1BK,EAAO,IAAI,IAEjB,OAAOL,EAAK,IAAI,UAAWJ,GAAM,CAC/B,GAAIA,EAAE,OAAS,WAAY,OAC3B,IAAMU,EAAM,GAAGV,EAAE,QAAQA,EAAE,KAC3B,GAAIS,EAAK,IAAIC,CAAG,EAAG,OACnBD,EAAK,IAAIC,CAAG,EACRD,EAAK,KAAO,KAAUA,EAAK,OAAOA,EAAK,OAAO,EAAE,KAAK,EAAE,KAAe,EAE1E,IAAME,EAAK,KAAK,MAAMX,EAAE,EAAE,EAC1B,GAAI,CAAC,OAAO,SAASW,CAAE,GAAKA,EAAKL,GAAaK,EAAKN,EAAI,EAAIE,EAAU,OAErE,IAAMK,EAAU,CAAC,GAAG,IAAI,IAAIR,EAAK,MAAM,KAAK,EAAE,IAAKS,GAAMA,EAAE,QAAQ,CAAC,CAAC,EAClE,OAAQC,GAAOV,EAAK,MAAM,GAAGU,EAAI,UAAU,CAAC,EAC/C,GAAIF,EAAQ,SAAW,EAAG,OAC1B,IAAMX,EAAO;AAAA,EAAiBF,EAAaC,CAAC,IAC5C,QAAWe,KAAUH,EACnBR,EAAK,KAAK,CAAE,QAAS,OAAQ,OAAAW,EAAQ,KAAAd,CAAK,CAAC,EAAE,MAAOe,GAAa,CAC/DR,EAAI,kCAAkCO,MAAWC,GAAK,SAAWA,GAAK,CACxE,CAAC,CAEL,CAAC,CACH","names":["ANNOUNCE_PUSH_MAX","announceBody","e","text","chars","attachAnnouncePush","deps","now","startedAt","maxAgeMs","log","seen","key","at","devices","s","id","chatId","err"]}
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-JWDJMFU6.js";import"./chunk-QIJLFPWE.js";export{a as PUSH_PREFS,b as PushPrefs};
2
+ //# sourceMappingURL=push-prefs-YOJNTOJF.js.map
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-2NYP4OQU.js";import"./chunk-JWDJMFU6.js";import"./chunk-QIJLFPWE.js";export{a as PushStore};
2
+ //# sourceMappingURL=push-store-5VJ4FNI4.js.map
@@ -0,0 +1,2 @@
1
+ import{I as a,J as b,K as c,L as d,M as e,N as f,O as g,P as h,Q as i,R as j,S as k,T as l}from"./chunk-AWKZ3BF2.js";import"./chunk-ZIEUP56T.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import"./chunk-BHE5TJSN.js";import"./chunk-EA7H3EUX.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-LQ5J6COO.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-AZBOYKQA.js";import"./chunk-WGWNVLVW.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-P4GOKVK2.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-PTB2TPOC.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-FX3D7YON.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DSYKYZMT.js";import"./chunk-OVF37EXJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{k as AgentRegistry,f as TRACE_STEP_SUMMARY_BYTES,c as buildEntryMeta,d as buildEventDigest,e as buildWikiContext,g as clipForTrace,j as emitTraceStepsFromStreamEvent,i as firstMissingRequiredTool,b as getGlobalRegistry,l as richReplyPrompt,a as setGlobalRegistry,h as tallyToolUses};
2
+ //# sourceMappingURL=registry-TERSIHOC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentix-cli",
3
- "version": "0.64.0",
3
+ "version": "0.66.0",
4
4
  "description": "AI operations layer for small and medium businesses. Routes Telegram, WhatsApp, GitLab, GitHub, crons, webhooks, and mesh tasks to AI agents. Web wizard for operators, CLI for engineers. Self-hosted.",
5
5
  "license": "MIT",
6
6
  "author": {