agentix-cli 0.148.0 → 0.149.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{board-dashboard-KXSZIMWV.js → board-dashboard-VPDXHHWC.js} +4 -4
- package/dist/{board-dashboard-KXSZIMWV.js.map → board-dashboard-VPDXHHWC.js.map} +1 -1
- package/dist/chunk-A76PNG4E.js +4 -0
- package/dist/chunk-A76PNG4E.js.map +1 -0
- package/dist/{chunk-MMBFAVBR.js → chunk-JOHDOEZ4.js} +2 -2
- package/dist/chunk-MNG2AMKZ.js +3 -0
- package/dist/chunk-MNG2AMKZ.js.map +1 -0
- package/dist/{chunk-OIMJLAWD.js → chunk-P34VSROA.js} +2 -2
- package/dist/{chunk-INT5PIF3.js → chunk-QZ6VBDMX.js} +40 -40
- package/dist/chunk-QZ6VBDMX.js.map +1 -0
- package/dist/{chunk-CHBZHUIF.js → chunk-UZWF7PFH.js} +2 -2
- package/dist/{chunk-S5NGIJDI.js → chunk-WGPMUWX7.js} +2 -2
- package/dist/{chunk-CJVAIAD7.js → chunk-XNS5OQ3U.js} +164 -164
- package/dist/{chunk-CJVAIAD7.js.map → chunk-XNS5OQ3U.js.map} +1 -1
- package/dist/cli.js +1 -1
- package/dist/{doctor-5R6X7JH6.js → doctor-IN6MWP6I.js} +2 -2
- package/dist/{grants-O7SJ2J4B.js → grants-2S33F2LV.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/{program-VS6QDZNX.js → program-OTENO5DS.js} +172 -172
- package/dist/program-OTENO5DS.js.map +1 -0
- package/dist/{tool-PLM6Z42O.js → tool-B23ACEHV.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-INT5PIF3.js.map +0 -1
- package/dist/chunk-TJZGAKIB.js +0 -4
- package/dist/chunk-TJZGAKIB.js.map +0 -1
- package/dist/chunk-VY7TBMJU.js +0 -3
- package/dist/chunk-VY7TBMJU.js.map +0 -1
- package/dist/program-VS6QDZNX.js.map +0 -1
- /package/dist/{chunk-MMBFAVBR.js.map → chunk-JOHDOEZ4.js.map} +0 -0
- /package/dist/{chunk-OIMJLAWD.js.map → chunk-P34VSROA.js.map} +0 -0
- /package/dist/{chunk-CHBZHUIF.js.map → chunk-UZWF7PFH.js.map} +0 -0
- /package/dist/{chunk-S5NGIJDI.js.map → chunk-WGPMUWX7.js.map} +0 -0
- /package/dist/{doctor-5R6X7JH6.js.map → doctor-IN6MWP6I.js.map} +0 -0
- /package/dist/{grants-O7SJ2J4B.js.map → grants-2S33F2LV.js.map} +0 -0
- /package/dist/{tool-PLM6Z42O.js.map → tool-B23ACEHV.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as _e,b as w,c as z,d as We,e as le,f as de,g as M,h as ce,i as N,j as O,n as Me,o as Ne,p as Oe,q as Ue}from"./chunk-XVTD6I34.js";import{e as De,i as ze}from"./chunk-QAWKN2N4.js";import{b as se}from"./chunk-MTX4UPNB.js";import{a as J,b as Pe}from"./chunk-6QFDFYI7.js";import{c as Te,d as oe,e as R,f as ie,g as j}from"./chunk-B2QYMUTD.js";import{a as Re}from"./chunk-7LN4VKDU.js";import{a as Ie}from"./chunk-IMLAPB7G.js";import{c as Ae,e as Se}from"./chunk-LQE73AZR.js";import{b as Ee}from"./chunk-MRIVENBY.js";import{l as ae,n as Ce}from"./chunk-
|
|
1
|
+
import{a as _e,b as w,c as z,d as We,e as le,f as de,g as M,h as ce,i as N,j as O,n as Me,o as Ne,p as Oe,q as Ue}from"./chunk-XVTD6I34.js";import{e as De,i as ze}from"./chunk-QAWKN2N4.js";import{b as se}from"./chunk-MTX4UPNB.js";import{a as J,b as Pe}from"./chunk-6QFDFYI7.js";import{c as Te,d as oe,e as R,f as ie,g as j}from"./chunk-B2QYMUTD.js";import{a as Re}from"./chunk-7LN4VKDU.js";import{a as Ie}from"./chunk-IMLAPB7G.js";import{c as Ae,e as Se}from"./chunk-LQE73AZR.js";import{b as Ee}from"./chunk-MRIVENBY.js";import{l as ae,n as Ce}from"./chunk-A76PNG4E.js";import{b as $e}from"./chunk-YMX3QCV7.js";import{G}from"./chunk-BZ6Y264Z.js";import{a as F,b as K}from"./chunk-E7LPZAXP.js";import{a as ke}from"./chunk-2MW32M2D.js";import{a as we}from"./chunk-ROLSSYXE.js";import{Ia as ne,Ka as q,L as te,La as ye,M as be,T as kt,Ua as re,ia as xe,pa as $t}from"./chunk-PXKIPU27.js";import{existsSync as L,readFileSync as Le,writeFileSync as He,appendFileSync as Ct,mkdirSync as It}from"fs";import{dirname as Et,resolve as _}from"path";import{fileURLToPath as Rt}from"url";import{hostname as Tt}from"os";import{spawn as Pt}from"child_process";function Be(e,t){let n=e.configExists?e.agentCount===0?"Add your first agent":"Add another agent":"Set up your team",r=`<header class="ax-topbar">
|
|
2
2
|
<div class="ax-topbar__left">
|
|
3
3
|
<div class="ax-brand">
|
|
4
4
|
<span class="ax-brand__mark">AX</span>
|
|
@@ -858,4 +858,4 @@ tr:hover td { background: var(--bg-hover); }
|
|
|
858
858
|
WHERE person = ? AND state IN (${n.map(()=>"?").join(",")})
|
|
859
859
|
${r}`).all(t,...n,...a).map(i=>({id:i.id,state:i.state,channel:i.channel,agentId:i.agent_id,text:i.text,createdAt:i.created_at})):[]}function Xr(e,t){return ut(e,t,te,"ORDER BY created_at")}function Qr(e,t,n=50){return ut(e,t,[...te,...be],"ORDER BY created_at DESC, rowid DESC LIMIT ?",Math.max(1,Math.min(n,500)))}$t();var ve="member:",un=90,mn="members",fn="tailscale-user-login",hn=400,vn=60*60*1e3;function bn(e){let t=e.scopes.find(n=>n.startsWith(ve));return t?t.slice(ve.length):null}function ft(e,t){if(!e)return null;let n=t.verify(e),r=n?bn(n):null;return n&&r?{rec:n,personId:r}:null}function oa(e,t){let n=e.people().find(s=>s.id===t);if(!n)return{ok:!1,error:`No person "${t}". Add them first: agentx people add ${t} --name "\u2026"`};let{token:r,record:a}=e.tokens.create({name:`${n.name} (machine not paired yet)`,scopes:[`${ve}${n.id}`],expiresInDays:un}),{code:o,expiresAt:i}=e.codes.create({token:r,tokenId:a.id,name:n.id});return e.members.log({person:n.id,device:a.id,event:"invited"}),{ok:!0,code:o,expiresAt:i,tokenId:a.id,person:n}}var xn=Math.round(Ae/6e4);function yn(e){return e==="client"?"Your project":"My work"}function ia(e){let t=yn(e.person.role),n=e.person.role==="client"?`I use AgentX to keep track of the work I do for you. It has a page for you, "${t}": what you asked us for, and where each request stands.`:`I use AgentX to give our AI agents their jobs. It has a page for you, "${t}": what you asked the agents for, and where each request stands.`;return[`Hi ${e.person.name},`,"",n,"","To open it:","1. Accept the Tailscale share I sent you. Tailscale is a small program that connects your computer to mine, privately.",`2. Open ${e.origin.replace(/\/+$/,"")}/member in Edge or Chrome, give your computer a name and type this code: ${Se(e.code)}`,` The code works once, for ${xn} minutes. If it has stopped working, tell me and I will send you a new one.`,"","I then approve your machine, and the page opens by itself."].join(`
|
|
860
860
|
`)}var wn="The private network says someone else is connecting from this machine. Ask the person who invited you for a new code.",kn="Too many machines are waiting for the owner's answer. Try again later.",mt="That code didn't work. Check it, or ask the person who invited you for a new one.",ht=(e,t)=>{let n=e.headers[t];return(Array.isArray(n)?n[0]:n||"").trim()};function vt(e){let t=e.socket?.remoteAddress||"";return t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1"}function $n(e){if(!vt(e))return null;let t=ht(e,fn).toLowerCase();return t?t.slice(0,80):null}function An(e){let t=e.socket?.remoteAddress||"unknown";if(!vt(e))return t;let n=ht(e,"x-forwarded-for").split(",").pop().trim();return/^[0-9a-fA-F:.]{2,45}$/.test(n)?n:t}function Sn(e){return typeof e=="string"?e.replace(/[^\p{L}\p{N} ._'()-]/gu," ").replace(/\s+/g," ").trim().slice(0,60):""}function Cn(e){return e.identities.map(xe).filter(t=>!!t&&t.channel==="tailscale").map(t=>t.value)}async function sa(e,t){let n=Date.now(),r=t.now??Date.now,a=t.log??(v=>console.log(v)),o=An(e),i=t.limiter.retryAfter(o);if(i>0)return a(`[member] pair-code refused from ${o}: locked out for ${i}s more`),{status:429,body:{error:"too many attempts",retryAfter:i},retryAfter:i};let s=null,l="";try{let v=await $e(e,2048);s=v.code,l=Sn(v.machine)}catch{}let c=t.codes.redeem(s),d=c?ft(c.token,t.tokens):null;if(await En(n,t.minMs??hn),!c||!d)return t.limiter.fail(o),a(`[member] pair-code failed from ${o}`),{status:401,body:{error:mt}};t.limiter.succeed(o);let{rec:m,personId:p}=d,k=t.people().find(v=>v.id===p);if(!k)return t.tokens.revoke(m.id),t.members.log({person:p,device:m.id,event:"refused",address:o,detail:"person no longer listed"}),a(`[member] pair-code for ${p} refused from ${o}: person no longer listed`),{status:403,body:{error:mt}};let u=$n(e),f=Cn(k);if(f.length&&(!u||!f.includes(u)))return t.tokens.revoke(m.id),t.members.log({person:p,device:m.id,event:"refused",address:o,detail:`network login ${u??"missing"}; expected ${f.join(" or ")}`}),a(`[member] ${p}: pairing from ${o} refused: the network says "${u??"nobody"}", expected ${f.join(" or ")}`),{status:403,body:{error:wn}};let C=l||"Unnamed machine",x=k.name.slice(0,40),b=Ce(t.root,{title:`New machine for ${x}`,ask:`From ${o}, ${u?`network login ${u}`:"no network login reported"}. Machine name, as typed there: "${C}". Let it see ${x}'s own work?`,recommend:`Yes if ${x} told you they just paired this machine. No if you did not expect it.`,if_silent:"discard",raised_by:mn},{now:r()});return b.ok?(t.members.add({tokenId:m.id,personId:p,name:C,state:"pending",cardId:b.card.id,address:o,...u?{network:u}:{},createdAt:new Date(r()).toISOString()}),t.members.log({person:p,device:m.id,event:"paired",address:o,detail:C}),a(`[member] ${p} paired "${C}" from ${o}; waiting for the owner (card ${b.card.id})`),{status:200,body:{person:p,name:C,state:"pending"},token:c.token}):(t.tokens.revoke(m.id),t.members.log({person:p,device:m.id,event:"refused",address:o,detail:b.error}),a(`[member] ${p}: pairing from ${o} refused: ${b.error}`),{status:503,body:{error:kn}})}var ee="this machine is not paired",In="waiting for the owner to approve this machine";function bt(e){return e?e.status==="decided"?e.verdict??null:e.status==="expired"?"no":null:null}function la(e,t){return t.state==="pending"&&t.cardId?bt(ae(e,t.cardId)):null}function da(e,t,n){let r=t.now??Date.now,a=t.log??(d=>console.log(d)),o=ft(e,t.tokens);if(!o)return{ok:!1,status:401,error:ee};let{rec:i,personId:s}=o,l=t.members.byToken(i.id);if(!l||l.state==="removed"||l.personId!==s)return{ok:!1,status:401,error:ee};if(t.people&&!t.people().some(d=>d.id===s))return xt(t,i.id,"person no longer listed"),a(`[member] ${s}: "${l.name}" ended: person no longer listed`),{ok:!1,status:401,error:ee};if(l.state==="pending"){let d=l.cardId?ae(t.root,l.cardId):null,m=bt(d);if(m==="yes")l=t.members.update(i.id,{state:"active",approvedAt:new Date(r()).toISOString()})??l,t.members.log({person:s,device:i.id,event:"approved",detail:d?.decided_by}),a(`[member] ${s}: "${l.name}" approved`);else if(m==="no"){let p=d?.status==="expired"?"the owner did not answer in time":"the owner said no";return t.tokens.revoke(i.id),t.members.update(i.id,{state:"removed",removedAt:new Date(r()).toISOString(),removedReason:p}),t.members.log({person:s,device:i.id,event:"refused",detail:p}),a(`[member] ${s}: "${l.name}" refused: ${p}`),{ok:!1,status:401,error:ee}}else return{ok:!1,status:403,error:In,waiting:!0}}let c=l.lastSeenAt?Date.parse(l.lastSeenAt):0;return n&&(r()-c>=vn||l.lastAddress!==n)&&(l=t.members.update(i.id,{lastSeenAt:new Date(r()).toISOString(),lastAddress:n})??l,t.members.log({person:s,device:i.id,event:"signed-in",address:n})),{ok:!0,device:l,personId:s,rec:i}}function xt(e,t,n="removed by the owner"){let r=e.members.byToken(t);if(!r)return null;e.tokens.revoke(t);let a=e.members.update(t,{state:"removed",removedAt:new Date((e.now??Date.now)()).toISOString(),removedReason:n});return e.members.log({person:r.personId,device:t,event:"removed",detail:n}),a}function ca(e,t){return e.members.devices(t).filter(n=>n.state!=="removed").map(n=>xt(e,n.tokenId,"person removed by the owner")).filter(n=>!!n)}async function En(e,t){let n=e+t-Date.now();n>0&&await new Promise(r=>setTimeout(r,n))}var yt=["gitlab","github"];function Rn(e,t,n){let r=String(t||"").trim().toLowerCase();if(!yt.includes(r))throw new Error(`Request status works on ${yt.join(" and ")}, not on "${t}".`);e.requestStatus=e.requestStatus&&typeof e.requestStatus=="object"?e.requestStatus:{};let a=Array.isArray(e.requestStatus.channels)?e.requestStatus.channels.map(o=>String(o).toLowerCase()):[];return e.requestStatus.channels=n?[...new Set([...a,r])]:a.filter(o=>o!==r),`request status on ${r} is ${n?"on":"off"}`}function ua(e){return Array.isArray(e?.requestStatus?.channels)?e.requestStatus.channels.map(t=>String(t).toLowerCase()):[]}function ma(e){let{summary:t}=J(n=>Rn(n,e?.channel,!!e?.enabled));return{summary:t}}function ha(e){return new Set(Object.entries(e).filter(([,t])=>t?.wiki?.absorb?.enabled===!1).map(([t])=>t))}function va(e,t){return t.only?{agents:[t.only],skipped:[]}:{agents:e.filter(n=>!t.off.has(n)),skipped:e.filter(n=>t.off.has(n))}}function ba(e,t){return`absorb is off for this agent (agents.${e}.wiki.absorb.enabled); skipped.${e===t?" It reads the wiki notes inbox, so the inbox was not read.":""} Use --agent ${e} to run it anyway.`}function xa(e,t){if(t){if(!e.wiki?.absorb)return;delete e.wiki.absorb.enabled,Object.keys(e.wiki.absorb).length===0&&delete e.wiki.absorb,Object.keys(e.wiki).length===0&&delete e.wiki;return}e.wiki??={},e.wiki.absorb??={},e.wiki.absorb.enabled=!1}var Tn="https://ntfy.sh";function wa(e){return{enabled:!!e?.enabled,server:e?.server||Tn,topicSet:!!e?.topic,tokenSet:!!e?.token}}function ka(e,t){let n={...e??{}};if("enabled"in t&&(n.enabled=!!t.enabled),"server"in t){let r=String(t.server).trim().replace(/\/+$/,"");if(!/^https?:\/\/\S+$/.test(r))throw new Error("ntfy server must be an http(s) URL");n.server=r}if("topic"in t){let r=String(t.topic).trim();if(!r)throw new Error("ntfy topic cannot be empty");n.topic=r}if("token"in t){let r=String(t.token??"").trim();r?n.token=r:delete n.token}if(n.enabled&&!n.topic)throw new Error("set a topic before enabling ntfy");return n}export{qe as a,jn as b,Ln as c,Hn as d,gt as e,Kr as f,Gr as g,Jn as h,Yn as i,Vn as j,Vr as k,Xr as l,Qr as m,un as n,oa as o,xn as p,yn as q,ia as r,An as s,sa as t,la as u,da as v,xt as w,ca as x,yt as y,Rn as z,ua as A,ma as B,ha as C,va as D,ba as E,xa as F,wa as G,ka as H,nn as I,br as J,Ar as K,Sr as L};
|
|
861
|
-
//# sourceMappingURL=chunk-
|
|
861
|
+
//# sourceMappingURL=chunk-UZWF7PFH.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as k}from"./chunk-IMLAPB7G.js";import{i as y}from"./chunk-
|
|
1
|
+
import{a as k}from"./chunk-IMLAPB7G.js";import{i as y}from"./chunk-A76PNG4E.js";import{b as X}from"./chunk-KP7KDLZ2.js";import{I as W,J as B,K as G,L as J,P as A,T as xe}from"./chunk-PXKIPU27.js";import{existsSync as K,readFileSync as ve}from"node:fs";import{dirname as b,join as h}from"node:path";import{fileURLToPath as Ae}from"node:url";import{homedir as ke}from"node:os";var M="tn.acme.agentx.voice",st="AgentX Desktop.app",V="AgentX Helper.app";function at(e,t,n){return e!=="darwin"||t!=="arm64"||Number(n.split(".")[0])<23?"AgentX Desktop currently requires Apple Silicon and macOS 14 or newer.":null}function lt(e,t){if(t&&!Object.hasOwn(e,t))throw new Error(`Unknown agent: ${t}. Run agentx agent list.`);let n=t||Object.keys(e)[0];if(!n)throw new Error("No agents configured. Run agentx setup first.");return n}function L(e){return`'${e.replace(/'/g,"'\\''")}'`}var z="/usr/bin:/bin:/usr/sbin:/sbin";function ut(e,t){return t||[...new Set([...e?[b(e)]:[],...z.split(":")])].join(":")}function N(e){let t={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};return e.replace(/&(amp|lt|gt|quot|apos);/g,(n,r)=>t[r])}function ct(e){let t=e.match(/<key>PATH<\/key>\s*<string>([^<]*)<\/string>/);return t?N(t[1]):z}var pt=e=>/agentx\.voice.*\.plist$/.test(e);function dt(e,t){let n=null,r=[];for(let{file:o,plist:i}of[...t].sort((s,c)=>s.file<c.file?-1:1)){let s=i.match(/<key>Label<\/key>\s*<string>([^<]*)<\/string>/)?.[1],c=i.match(/<key>ProgramArguments<\/key>\s*<array>\s*<string>([^<]*)<\/string>/)?.[1];!s||!c||!N(c).endsWith("/Contents/MacOS/AgentXVoice")||(n?r.push({file:o,label:N(s)}):n={file:o,label:N(s)})}return{keep:n??{file:h(e,`${M}.plist`),label:M},remove:r}}function Z(e,t,n){for(let r of t.split(":"))if(r&&n(h(r,e)))return h(r,e);return null}function mt(e){let t=r=>r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),n={PATH:e.path,...e.agent?{AGENTX_VOICE_AGENT:e.agent}:{},AGENTX_DAEMON_URL:e.url,AGENTX_MAC_HELPER:e.helper,AGENTX_PASTE_COMMAND:`cd ${L(e.cwd)} && ${L(e.node)} ${L(e.cli)} paste`};return`<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
3
|
<plist version="1.0"><dict>
|
|
4
4
|
<key>Label</key><string>${t(e.label??M)}</string>
|
|
@@ -32,4 +32,4 @@ function run(argv) {
|
|
|
32
32
|
`),Ve(r,n)}var Qe=5*6e4;function yn(e,t,n=Date.now()){let r=ye(e),o=r.checkedAt?Date.parse(r.checkedAt):NaN;return!r.cards||!(n-o<=Qe)?!1:r.items[`card:${t}`]?.state!=="failed"}var j=24*36e5;function he(e,t,n){let r=e+t.dueAfterMinutes*6e4;return new Date(n!==void 0&&Number.isFinite(n)?Math.max(e,Math.min(r,n)):r)}function et(e,t,n,r){let o=Date.parse(e.expires),i=[f(e.ask,y.ask)];return e.choices?.length&&i.push(...e.choices.map((s,c)=>`${c+1}. ${s}`)),e.recommend&&i.push(`Recommended: ${f(e.recommend,y.recommend)}`),i.push(`Answer: ${n}`,`agentx: card=${e.id}`),{key:`card:${e.id}`,title:f(e.title,y.title),notes:i.join(`
|
|
33
33
|
`),due:he(r,t,o),priority:Number.isFinite(o)&&o-r<=j?"high":"none"}}function tt(e,t,n,r){let o=[f(e.question||e.text,y.ask),`Asked of ${e.agentId}.`,`Answer: ${n}`,`agentx: request=${e.id}`],i=e.dueAt??void 0;return{key:`request:${e.id}`,title:f(e.text,y.title),notes:o.join(`
|
|
34
34
|
`),due:he(r,t,i),priority:i!==void 0&&i-r<=j?"high":"none"}}async function hn(e){let{root:t,settings:n,tasks:r,log:o}=e,i=e.now??Date.now(),s=new Date(i).toISOString(),c={created:0,completed:0,dismissed:0,failed:0},l=ye(t);delete l.lastError;let d=a=>{l.lastError={at:s,message:a}},w=new Map;try{if(n.include.includes("card"))for(let a of e.cards())a.status==="pending"&&Date.parse(a.expires)>i&&w.set(`card:${a.id}`,et(a,n,e.answerUrl,i));if(n.include.includes("request"))for(let a of e.requests())a.state==="waiting_owner"&&w.set(`request:${a.id}`,tt(a,n,e.answerUrl,i))}catch(a){return o(`[mirror] could not read what is waiting: ${a?.message??a}`),d(String(a?.message??a)),fe(t,l),c}let U=!0,x=new Map,we=async a=>{if(!x.has(a))try{x.set(a,new Set((await r.listOpen(a)).map(u=>u.id)))}catch(u){o(`[mirror] could not read list "${a}": ${u?.message??u}`),d(String(u?.message??u)),x.set(a,null),U=!1}return x.get(a)};for(let[a,u]of Object.entries(l.items)){if(u.state!=="open"||!u.id)continue;let p=await we(u.list);if(p)if(w.has(a))p.has(u.id)||(l.items[a]={...u,state:"dismissed",at:s},c.dismissed++,o(`[mirror] ${a}: its task was ticked off or deleted; it stays on the Desk and is not mirrored again`));else{if(p.has(u.id))try{await r.complete(u.id)}catch(g){o(`[mirror] ${a}: could not complete its task: ${g?.message??g}`),d(String(g?.message??g));continue}l.items[a]={...u,state:"completed",at:s},c.completed++}}let E=null,S=[];for(let[a,u]of w){let p=l.items[a];if(p&&(p.state==="open"||p.state==="dismissed")||p?.state==="failed"&&p.failures>=H)continue;if(E===null)try{await r.ensureList(n.list),E=!0}catch(m){o(`[mirror] could not make list "${n.list}": ${m?.message??m}`),d(String(m?.message??m)),E=!1}let g=p?.state==="failed"?p.failures:0;try{let{id:m}=await r.add({list:n.list,title:u.title,notes:u.notes,due:u.due,priority:u.priority});l.items[a]={id:m,list:n.list,state:"open",at:s,failures:0},c.created++}catch(m){let v=String(m?.message??m),C=g+1;l.items[a]={list:n.list,state:"failed",at:s,failures:C,lastError:v},d(v),c.failed++,o(`[mirror] ${a}: could not add to Reminders (${C}/${H}): ${v}`),C===H&&S.push({title:u.title,message:v})}}let Se=l.failureToldAt?Date.parse(l.failureToldAt):NaN;if(S.length&&!(i-Se<j)){let a=S[0],u=S.length>1?` (and ${S.length-1} more)`:"";try{await e.notify("Could not add to Reminders",`${a.title}${u}: ${f(a.message,200)}. Still on the Desk.`),l.failureToldAt=s}catch(p){o(`[mirror] could not tell the owner: ${p?.message??p}`)}}U&&(l.checkedAt=s,l.cards=n.include.includes("card"));for(let[a,u]of Object.entries(l.items))u.state!=="open"&&!w.has(a)&&i-Date.parse(u.at)>Ye&&delete l.items[a];return fe(t,l),c}export{st as a,V as b,at as c,lt as d,ut as e,ct as f,pt as g,dt as h,Z as i,mt as j,ft as k,be as l,Ne as m,Re as n,T as o,re as p,D as q,Fe as r,Jt as s,Xt as t,Kt as u,Qt as v,pe as w,q as x,en as y,tn as z,Ue as A,nn as B,rn as C,on as D,f as E,cn as F,ye as G,yn as H,hn as I};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-WGPMUWX7.js.map
|