agentix-cli 0.69.1 → 0.69.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{App-MMWB4O72.js → App-Z66ABY7H.js} +2 -2
- package/dist/{ChatApp-VCHZLQ57.js → ChatApp-Z2LZ7IM3.js} +2 -2
- package/dist/{agent-K7EPLYCP.js → agent-OJQKD5AI.js} +2 -2
- package/dist/{board-dashboard-BWB2FLOA.js → board-dashboard-U6IZQA4W.js} +7 -6
- package/dist/{board-dashboard-BWB2FLOA.js.map → board-dashboard-U6IZQA4W.js.map} +1 -1
- package/dist/{chunk-F2DEKA2Q.js → chunk-3FWJXI7H.js} +2 -2
- package/dist/{chunk-PNWNVOEZ.js → chunk-4DRNEOOW.js} +2 -2
- package/dist/{chunk-KSUCHOH2.js → chunk-B7S66EK7.js} +2 -2
- package/dist/{chunk-N5NPJ6DJ.js → chunk-DTX4I5LQ.js} +4 -4
- package/dist/chunk-DTX4I5LQ.js.map +1 -0
- package/dist/{chunk-X5BWHPR7.js → chunk-DW5EHX3M.js} +2 -2
- package/dist/{chunk-VOS2IW4V.js → chunk-E7OACKES.js} +2 -2
- package/dist/chunk-EKJG63EJ.js +3 -0
- package/dist/chunk-EKJG63EJ.js.map +1 -0
- package/dist/chunk-EQTSOK7L.js +109 -0
- package/dist/chunk-EQTSOK7L.js.map +1 -0
- package/dist/{chunk-Q2WW2HF4.js → chunk-FGFDPYL4.js} +2 -2
- package/dist/{chunk-NEC4RXFT.js → chunk-FSYA4GNU.js} +2 -2
- package/dist/{chunk-LPWPFEIE.js → chunk-FUR3T3IN.js} +2 -2
- package/dist/{chunk-PDGPHE35.js → chunk-IULWZA3J.js} +2 -2
- package/dist/{chunk-3XEN24B7.js → chunk-JQXG2OO6.js} +70 -70
- package/dist/chunk-JQXG2OO6.js.map +1 -0
- package/dist/{chunk-KSDVKLHN.js → chunk-JYBSYW7T.js} +2 -2
- package/dist/{chunk-APKKQGTG.js → chunk-KLHG5ZQH.js} +2 -2
- package/dist/{chunk-HEJOWP7O.js → chunk-KPPGT5FJ.js} +2 -2
- package/dist/{chunk-JHWBCDD2.js → chunk-OPUPVGYP.js} +12 -9
- package/dist/chunk-OPUPVGYP.js.map +1 -0
- package/dist/{chunk-G3SOCQII.js → chunk-OVX6NRMD.js} +2 -2
- package/dist/{chunk-S4ASFOJU.js → chunk-RN5NOIBH.js} +2 -2
- package/dist/{chunk-USTQPX4Y.js → chunk-SXKOI2IF.js} +143 -143
- package/dist/chunk-SXKOI2IF.js.map +1 -0
- package/dist/{chunk-37P3DKSX.js → chunk-USMCN2X3.js} +14 -14
- package/dist/{chunk-ART666G6.js → chunk-VVMOTM3V.js} +2 -2
- package/dist/{chunk-APKAW7LU.js → chunk-YL223TEU.js} +2 -2
- package/dist/cli.js +1 -1
- package/dist/client-GDTX6LFH.js +2 -0
- package/dist/{config-VV4X7PEK.js → config-FZ4D4EAV.js} +2 -2
- package/dist/config-mutator-ETG5V4C5.js +2 -0
- package/dist/doctor-JBIRBRLB.js +2 -0
- package/dist/index.d.ts +62 -1
- package/dist/index.js +1 -1
- package/dist/{migrate-v2-5VGHWPBW.js → migrate-v2-KOMPDC6U.js} +2 -2
- package/dist/program-O67GMIWX.js +2 -0
- package/dist/{promote-XRKH73IB.js → promote-7SU6IJDC.js} +2 -2
- package/dist/query-CY7F5ZFR.js +2 -0
- package/dist/registry-K76DGYLW.js +2 -0
- package/dist/{request-planner-73Y5GI3D.js → request-planner-YIG5RUN2.js} +2 -2
- package/dist/{review-candidates-VF5IWP5P.js → review-candidates-2JFQ2M53.js} +2 -2
- package/dist/{routing-T24BMMLM.js → routing-3CIQQZJ4.js} +2 -2
- package/dist/schedule-tool-NJFROYKY.js +2 -0
- package/dist/scheduler-5N4FC2FQ.js +2 -0
- package/dist/{seat-XNA2O6EO.js → seat-HMF3G6BR.js} +2 -2
- package/dist/{select-WOUZIR3Y.js → select-2P73MN6O.js} +2 -2
- package/dist/{set-enabled-C5RFPCAL.js → set-enabled-53ZPZ5GR.js} +2 -2
- package/dist/shutdown-SNI2B4LI.js +2 -0
- package/dist/{tool-ZENVUVBO.js → tool-FRTZS4TT.js} +2 -2
- package/dist/wiki-VXTUHSRH.js +2 -0
- package/package.json +1 -1
- package/dist/chunk-3XEN24B7.js.map +0 -1
- package/dist/chunk-CUZWGTXT.js +0 -109
- package/dist/chunk-CUZWGTXT.js.map +0 -1
- package/dist/chunk-JHWBCDD2.js.map +0 -1
- package/dist/chunk-L53FTKEP.js +0 -3
- package/dist/chunk-L53FTKEP.js.map +0 -1
- package/dist/chunk-N5NPJ6DJ.js.map +0 -1
- package/dist/chunk-USTQPX4Y.js.map +0 -1
- package/dist/client-SWODYWKD.js +0 -2
- package/dist/config-mutator-BOE7SMT5.js +0 -2
- package/dist/doctor-XIS4TMBI.js +0 -2
- package/dist/program-44FEGUCB.js +0 -2
- package/dist/query-6272PJPD.js +0 -2
- package/dist/registry-HMVIS6QJ.js +0 -2
- package/dist/schedule-tool-ZVKBZOVG.js +0 -2
- package/dist/scheduler-5NBO3J2G.js +0 -2
- package/dist/shutdown-ZAF7RW25.js +0 -2
- package/dist/wiki-W6WI6HL3.js +0 -2
- /package/dist/{App-MMWB4O72.js.map → App-Z66ABY7H.js.map} +0 -0
- /package/dist/{ChatApp-VCHZLQ57.js.map → ChatApp-Z2LZ7IM3.js.map} +0 -0
- /package/dist/{agent-K7EPLYCP.js.map → agent-OJQKD5AI.js.map} +0 -0
- /package/dist/{chunk-F2DEKA2Q.js.map → chunk-3FWJXI7H.js.map} +0 -0
- /package/dist/{chunk-PNWNVOEZ.js.map → chunk-4DRNEOOW.js.map} +0 -0
- /package/dist/{chunk-KSUCHOH2.js.map → chunk-B7S66EK7.js.map} +0 -0
- /package/dist/{chunk-X5BWHPR7.js.map → chunk-DW5EHX3M.js.map} +0 -0
- /package/dist/{chunk-VOS2IW4V.js.map → chunk-E7OACKES.js.map} +0 -0
- /package/dist/{chunk-Q2WW2HF4.js.map → chunk-FGFDPYL4.js.map} +0 -0
- /package/dist/{chunk-NEC4RXFT.js.map → chunk-FSYA4GNU.js.map} +0 -0
- /package/dist/{chunk-LPWPFEIE.js.map → chunk-FUR3T3IN.js.map} +0 -0
- /package/dist/{chunk-PDGPHE35.js.map → chunk-IULWZA3J.js.map} +0 -0
- /package/dist/{chunk-KSDVKLHN.js.map → chunk-JYBSYW7T.js.map} +0 -0
- /package/dist/{chunk-APKKQGTG.js.map → chunk-KLHG5ZQH.js.map} +0 -0
- /package/dist/{chunk-HEJOWP7O.js.map → chunk-KPPGT5FJ.js.map} +0 -0
- /package/dist/{chunk-G3SOCQII.js.map → chunk-OVX6NRMD.js.map} +0 -0
- /package/dist/{chunk-S4ASFOJU.js.map → chunk-RN5NOIBH.js.map} +0 -0
- /package/dist/{chunk-37P3DKSX.js.map → chunk-USMCN2X3.js.map} +0 -0
- /package/dist/{chunk-ART666G6.js.map → chunk-VVMOTM3V.js.map} +0 -0
- /package/dist/{chunk-APKAW7LU.js.map → chunk-YL223TEU.js.map} +0 -0
- /package/dist/{client-SWODYWKD.js.map → client-GDTX6LFH.js.map} +0 -0
- /package/dist/{config-VV4X7PEK.js.map → config-FZ4D4EAV.js.map} +0 -0
- /package/dist/{config-mutator-BOE7SMT5.js.map → config-mutator-ETG5V4C5.js.map} +0 -0
- /package/dist/{doctor-XIS4TMBI.js.map → doctor-JBIRBRLB.js.map} +0 -0
- /package/dist/{migrate-v2-5VGHWPBW.js.map → migrate-v2-KOMPDC6U.js.map} +0 -0
- /package/dist/{program-44FEGUCB.js.map → program-O67GMIWX.js.map} +0 -0
- /package/dist/{promote-XRKH73IB.js.map → promote-7SU6IJDC.js.map} +0 -0
- /package/dist/{query-6272PJPD.js.map → query-CY7F5ZFR.js.map} +0 -0
- /package/dist/{registry-HMVIS6QJ.js.map → registry-K76DGYLW.js.map} +0 -0
- /package/dist/{request-planner-73Y5GI3D.js.map → request-planner-YIG5RUN2.js.map} +0 -0
- /package/dist/{review-candidates-VF5IWP5P.js.map → review-candidates-2JFQ2M53.js.map} +0 -0
- /package/dist/{routing-T24BMMLM.js.map → routing-3CIQQZJ4.js.map} +0 -0
- /package/dist/{schedule-tool-ZVKBZOVG.js.map → schedule-tool-NJFROYKY.js.map} +0 -0
- /package/dist/{scheduler-5NBO3J2G.js.map → scheduler-5N4FC2FQ.js.map} +0 -0
- /package/dist/{seat-XNA2O6EO.js.map → seat-HMF3G6BR.js.map} +0 -0
- /package/dist/{select-WOUZIR3Y.js.map → select-2P73MN6O.js.map} +0 -0
- /package/dist/{set-enabled-C5RFPCAL.js.map → set-enabled-53ZPZ5GR.js.map} +0 -0
- /package/dist/{shutdown-ZAF7RW25.js.map → shutdown-SNI2B4LI.js.map} +0 -0
- /package/dist/{tool-ZENVUVBO.js.map → tool-FRTZS4TT.js.map} +0 -0
- /package/dist/{wiki-W6WI6HL3.js.map → wiki-VXTUHSRH.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as F}from"./chunk-DP7RTNDM.js";import{q as _,r as W}from"./chunk-2AXFYDWF.js";import{b as Y,c as I,d as O}from"./chunk-AQASR6KR.js";import{e as E}from"./chunk-
|
|
1
|
+
import{b as F}from"./chunk-DP7RTNDM.js";import{q as _,r as W}from"./chunk-2AXFYDWF.js";import{b as Y,c as I,d as O}from"./chunk-AQASR6KR.js";import{e as E}from"./chunk-EQTSOK7L.js";import{b as L}from"./chunk-64P4QHSZ.js";import{createHash as ee}from"crypto";import{existsSync as H,readdirSync as te,readFileSync as re,writeFileSync as ne}from"fs";import{resolve as P}from"path";function be(n,r,s,t,o,i,c=""){return Z(r,s,t,o,i,c)}function Z(n,r,s,t,o,i=""){let c=r?`
|
|
2
2
|
## Worldview
|
|
3
3
|
|
|
4
4
|
${r}
|
|
@@ -240,4 +240,4 @@ ${g}`}var x="memory-promoter",oe=["project","reference","feedback"],K="_memory-p
|
|
|
240
240
|
Re-emit the FULL corrected JSON object \u2014 same structure, fixed issues, valid JSON only.`:n,y=await t(`${a}/task`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:r.viaAgent,message:h,freshSession:s===null,context:{channel:"api",chatId:r.chatId??"memory-promote"}}),signal:i.signal});if(!y.ok){let f=await y.text().catch(()=>"");throw new Error(`agent /task ${y.status}: ${f.slice(0,500)}`)}let w=await y.json();if(w.error)throw new Error(`agent reported error: ${w.error}`);let b=String(w.content??"").trim();if(!b)throw new Error("agent returned empty content");return b}if(!r.model)throw new Error("callPromotionLlm: viaAgent or model is required");let p=process.env.ANTHROPIC_API_KEY;if(!p)throw new Error("ANTHROPIC_API_KEY not set; use --via <agentId> instead");let u=[{role:"user",content:n}];s&&(u.push({role:"assistant",content:"(previous attempt; will retry with corrections)"}),u.push({role:"user",content:`Your previous response failed validation: ${s}
|
|
241
241
|
Re-emit the FULL corrected JSON object.`}));let g=await t(me,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":p,"anthropic-version":ge},body:JSON.stringify({model:r.model,max_tokens:8e3,messages:u}),signal:i.signal});if(!g.ok){let a=await g.text().catch(()=>"");throw new Error(`anthropic API ${g.status}: ${a.slice(0,500)}`)}let l=await g.json(),e=(Array.isArray(l.content)?l.content:[]).filter(a=>a?.type==="text").map(a=>a.text).join(`
|
|
242
242
|
`).trim();if(!e)throw new Error("anthropic API returned no text content");return e}finally{clearTimeout(c)}}async function Se(n={}){let r=n.wikiDir??P(process.cwd(),".agentx","wiki"),s=n.memoryRoot??P(process.cwd(),".agentx"),t=n.log??(()=>{}),o=n.now??Date.now(),i={candidates:[],clusters:[],proposed:[],skipped:[],gaps:[],warnings:[],errors:[],dryRun:!n.commit},c=new E(r,(...m)=>t(m.map(String).join(" "))),p=c.rebuildIndex(),u=z(r),g=[...ce(s),...n.extraCandidates??[]];if(i.candidates=de(g,p,u,{types:n.types,sinceMs:n.sinceMs,agentFilter:n.agentFilter,now:o,max:n.max}),i.candidates.length===0)return t("no unpromoted memories in window"),i;if(i.clusters=le(i.candidates),i.dryRun)return i;let l=p.articles.map(m=>({title:m.title,path:m.path,type:m.type})),d=c.getWorldview()??"",e=n.budgetTokens??ue,a=i.clusters,h=D(x,a,l,d);for(;R(h)>e&&a.length>1;)a=a.slice(0,-1),h=D(x,a,l,d);if(R(h)>e)return i.errors.push(`judge prompt (~${R(h)} tokens) exceeds the ${e}-token budget even with one cluster`),i;a.length<i.clusters.length&&i.warnings.push(`token budget: judged ${a.length} of ${i.clusters.length} clusters; the rest wait for the next run`);let y=a.flatMap(m=>m.candidates),w=new Set(y.map(m=>m.stamp)),b=n.chatId??`memory-promote-${new Date(o).toISOString().slice(0,10)}`,f=B(await G(h,{...n,chatId:b}),w);if("error"in f&&(t(`parse failed (${f.error}) \u2014 retrying with feedback`),f=B(await G(h,{...n,chatId:b},f.error),w)),"error"in f)return i.errors.push(`LLM response unusable after retry: ${f.error}`),i;i.warnings.push(...f.warnings),i.gaps=f.gaps;let v=new Date(o).toISOString(),k=[],T=new Map(y.map(m=>[m.stamp,m]));for(let m of f.articles){let A=c.readArticle(m.path);if(A&&!c.canWrite(A.meta,x)){i.errors.push(`write denied for "${m.path}" (owned by ${A.meta.owner??"?"})`);continue}let M=fe(m.promotedFrom,T),S={id:Y(o,m.path),createdAt:v,status:"pending",article:m,evidence:M,...A?{replaces:{lastUpdated:A.meta.lastUpdated,contentHash:V(A.content)}}:{}};I(r,S),i.proposed.push({id:S.id,path:m.path,title:m.title,type:m.type,stamps:m.promotedFrom,agents:M.agents,occurrences:M.occurrences});for(let X of m.promotedFrom)k.push({stamp:X,decision:"proposed",article:m.path,proposal:S.id,at:v})}for(let m of f.skipped)k.push({stamp:m.stamp,decision:"skipped",reason:m.reason,at:v}),i.skipped.push(m);return k.length&&C(r,k),i}var ue=6e4;function R(n){return Math.ceil(n.length/4)}function V(n){return ee("sha256").update(n).digest("hex").slice(0,16)}var he=600;function ye(n){return n.startsWith("review:")?"review":n.startsWith(j)?"failure":"memory"}function fe(n,r){let s=[];for(let t of n){let o=r.get(t);o&&s.push({stamp:t,kind:ye(t),agentId:o.agentId,type:o.memory.type,name:o.memory.name,description:o.memory.description,...o.occurrences?{occurrences:o.occurrences}:{},...o.sessions?.length?{sessions:o.sessions}:{},...o.tasks?.length?{tasks:o.tasks}:{},...o.failure?{failure:o.failure}:{},...o.memory.author?{author:o.memory.author}:{},...o.memory.taskId?{taskId:o.memory.taskId}:{},updatedAt:o.memory.updatedAt,excerpt:o.memory.body.slice(0,he)})}return{agents:[...new Set(s.map(t=>t.agentId))].sort(),occurrences:Math.max(1,...s.map(t=>t.occurrences??1)),sources:s}}function Ee(n,r,s={}){let t=O(n,r);if(!t)return{ok:!1,error:`no proposal "${r}"`};if(t.status!=="pending")return{ok:!1,error:`proposal "${r}" is already ${t.status}`};let o=s.log??(()=>{}),i=new E(n,(...a)=>o(a.map(String).join(" "))),{article:c}=t,p=i.readArticle(c.path);if(!s.force){if(p&&!t.replaces)return{ok:!1,error:`"${c.path}" was created after this proposal; review it, then approve with --force`};if(p&&t.replaces&&V(p.content)!==t.replaces.contentHash)return{ok:!1,error:`"${c.path}" changed since this proposal; review it, then approve with --force`}}let u=s.now??Date.now(),g=new Date(u).toISOString().slice(0,10);if(!i.writeArticle(c.path,{title:c.title,type:L(c.type)?c.type:void 0,related:c.related,tags:c.tags,owner:x,access:"public",created:p?.meta.created??g,lastUpdated:g,sources:ae(p?.meta.sources,c.promotedFrom)},c.content,x))return{ok:!1,error:`write denied for "${c.path}" (owned by ${p?.meta.owner??"?"})`};let d=new Date(u).toISOString();C(n,c.promotedFrom.map(a=>({stamp:a,decision:"promoted",article:c.path,proposal:r,at:d}))),i.rebuildIndex();let e={...t,status:"approved",decidedBy:s.by??"operator",decidedAt:d};return I(n,e),{ok:!0,proposal:e}}function Oe(n,r,s={}){let t=O(n,r);if(!t)return{ok:!1,error:`no proposal "${r}"`};if(t.status!=="pending")return{ok:!1,error:`proposal "${r}" is already ${t.status}`};let o=new Date(s.now??Date.now()).toISOString();C(n,t.article.promotedFrom.map(c=>({stamp:c,decision:"rejected",article:t.article.path,proposal:r,reason:s.reason,at:o})));let i={...t,status:"rejected",decidedBy:s.by??"operator",decidedAt:o,...s.reason?{reason:s.reason}:{}};return I(n,i),{ok:!0,proposal:i}}export{be as a,x as b,oe as c,K as d,q as e,ie as f,$ as g,ae as h,ce as i,z as j,C as k,le as l,B as m,de as n,G as o,Se as p,R as q,ye as r,fe as s,Ee as t,Oe as u};
|
|
243
|
-
//# sourceMappingURL=chunk-
|
|
243
|
+
//# sourceMappingURL=chunk-VVMOTM3V.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{u as m,v as $,z as x}from"./chunk-
|
|
1
|
+
import{u as m,v as $,z as x}from"./chunk-DTX4I5LQ.js";x();import{readFileSync as S,writeFileSync as P,existsSync as b}from"fs";import{resolve as f}from"path";function w(r){if(r)return f(r);let e=[f(process.cwd(),"agentx.json"),f(process.cwd(),".agentx/config.json")];for(let n of e)if(b(n))return n;return e[0]}function v(r){return JSON.parse(JSON.stringify(r))}async function O(r){try{let e=await fetch(`${r.replace(/\/$/,"")}/reload`,{method:"POST",signal:AbortSignal.timeout(3e3)});return e.ok?{ok:!0}:{ok:!1,reason:`HTTP ${e.status}`}}catch(e){return{ok:!1,reason:e?.cause?.code||e?.message||"unreachable"}}}async function J(r,e={}){let{validate:n=!0,dryRun:t=!1,reload:s=!0,configPath:u,daemonUrl:c}=e,o=w(u);if(!b(o))return{success:!1,path:o,error:`Config not found at ${o}. Run \`agentx init\` first.`};let d;try{d=S(o,"utf-8")}catch(a){return{success:!1,path:o,error:`Cannot read ${o}: ${a.message}`}}let g;try{g=JSON.parse(d)}catch(a){return{success:!1,path:o,error:`Invalid JSON in ${o}: ${a.message}`}}let i=v(g);try{await r(i)}catch(a){return{success:!1,path:o,error:`Mutator threw: ${a.message}`}}if(n){let a=$(i),l=m.safeParse(a);if(!l.success){let k=l.error.issues.map(y=>` ${y.path.join(".")||"<root>"}: ${y.message}`).join(`
|
|
2
2
|
`);return{success:!1,path:o,error:`Validation failed:
|
|
3
3
|
${k}`,after:i}}}if(t)return{success:!0,path:o,after:i,dryRun:!0};try{P(o,JSON.stringify(i,null,2)+`
|
|
4
4
|
`)}catch(a){return{success:!1,path:o,error:`Write failed: ${a.message}`,after:i}}let p=!1,h;if(s){let a=c||R(i),l=await O(a);l.ok?p=!0:h=l.reason}return{success:!0,path:o,after:i,reloaded:p,reloadSkipped:h}}function R(r){let e=r?.node?.bind;if(!e)return"http://127.0.0.1:18800";let[n,t]=e.split(":");return`http://${n==="0.0.0.0"||n==="::"?"127.0.0.1":n}:${t}`}function N(r,e,n){let t=e.split("."),s=r;for(let u=0;u<t.length-1;u++){let c=t[u];(s[c]===void 0||s[c]===null)&&(s[c]={}),s=s[c]}s[t[t.length-1]]=n}function j(r,e){let n=e.split("."),t=r;for(let s of n){if(t==null)return;t=t[s]}return t}function A(r,e){let n=e.split("."),t=r;for(let s=0;s<n.length-1;s++){if(t==null)return;t=t[n[s]]}t!=null&&delete t[n[n.length-1]]}export{w as a,J as b,N as c,j as d,A as e};
|
|
5
|
-
//# sourceMappingURL=chunk-
|
|
5
|
+
//# sourceMappingURL=chunk-YL223TEU.js.map
|
package/dist/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as n}from"./chunk-
|
|
2
|
+
import{a as n}from"./chunk-USMCN2X3.js";import"./chunk-OVX6NRMD.js";import"./chunk-KLHG5ZQH.js";import"./chunk-KPPGT5FJ.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-SXKOI2IF.js";import"./chunk-DW5EHX3M.js";import"./chunk-BYJ3A55Y.js";import"./chunk-NMFXY3QU.js";import"./chunk-3FWJXI7H.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-VVMOTM3V.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import"./chunk-JQXG2OO6.js";import"./chunk-B7S66EK7.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import"./chunk-IULWZA3J.js";import"./chunk-SFQUP3BP.js";import"./chunk-FSYA4GNU.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-FGFDPYL4.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-RN5NOIBH.js";import"./chunk-EQTSOK7L.js";import"./chunk-4DRNEOOW.js";import"./chunk-64P4QHSZ.js";import"./chunk-JYBSYW7T.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-DTX4I5LQ.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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as a,s as b,t as c,u as d,v as e,w as f,x as g,z as h}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=config-
|
|
1
|
+
import{r as a,s as b,t as c,u as d,v as e,w as f,x as g,z as h}from"./chunk-DTX4I5LQ.js";import"./chunk-QIJLFPWE.js";h();export{a as INTEGRATION_KINDS,c as approvalsConfigSchema,d as daemonConfigSchema,b as eventSubscriptionSchema,e as expandEnvVars,f as loadDaemonConfig,g as validateWorkspaces};
|
|
2
|
+
//# sourceMappingURL=config-FZ4D4EAV.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as a,c as b,d as c,e as d,f as e}from"./chunk-KLHG5ZQH.js";import"./chunk-BYJ3A55Y.js";import"./chunk-DTX4I5LQ.js";import"./chunk-QIJLFPWE.js";export{e as daemonVoiceCheck,b as doctor,a as runDoctorChecks,c as runNotificationChecks,d as runReminderChecks};
|
|
2
|
+
//# sourceMappingURL=doctor-JBIRBRLB.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1569,6 +1569,10 @@ declare const agentConfigSchema: z.ZodObject<{
|
|
|
1569
1569
|
* its record marked `timeout` with the step it was stuck in. Applies to
|
|
1570
1570
|
* every run, whatever started it. */
|
|
1571
1571
|
preSpawnTimeoutSec: z.ZodDefault<z.ZodNumber>;
|
|
1572
|
+
/** How long a daemon stop waits for this agent's runs before cutting
|
|
1573
|
+
* them off, when that is longer than shutdown.drainTimeoutSeconds. For
|
|
1574
|
+
* agents whose runs are long (renders, builds). */
|
|
1575
|
+
drainTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
1572
1576
|
permissionMode: z.ZodDefault<z.ZodString>;
|
|
1573
1577
|
/** How this agent's `claude` CLI is billed (claude-code tier). Default
|
|
1574
1578
|
* "subscription": the shared OAuth login, ANTHROPIC_API_KEY stripped.
|
|
@@ -1891,6 +1895,7 @@ declare const agentConfigSchema: z.ZodObject<{
|
|
|
1891
1895
|
headers?: Record<string, string> | undefined;
|
|
1892
1896
|
}> | undefined;
|
|
1893
1897
|
contextStrategy?: "layered" | "planner" | undefined;
|
|
1898
|
+
drainTimeoutSeconds?: number | undefined;
|
|
1894
1899
|
gitlabAutoReply?: boolean | undefined;
|
|
1895
1900
|
admin?: boolean | undefined;
|
|
1896
1901
|
voice?: {
|
|
@@ -1939,6 +1944,7 @@ declare const agentConfigSchema: z.ZodObject<{
|
|
|
1939
1944
|
maxConcurrent?: number | undefined;
|
|
1940
1945
|
maxExecutionMinutes?: number | undefined;
|
|
1941
1946
|
preSpawnTimeoutSec?: number | undefined;
|
|
1947
|
+
drainTimeoutSeconds?: number | undefined;
|
|
1942
1948
|
permissionMode?: string | undefined;
|
|
1943
1949
|
billing?: "api" | "subscription" | undefined;
|
|
1944
1950
|
toolUseRequired?: string[] | undefined;
|
|
@@ -2364,6 +2370,10 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
2364
2370
|
* its record marked `timeout` with the step it was stuck in. Applies to
|
|
2365
2371
|
* every run, whatever started it. */
|
|
2366
2372
|
preSpawnTimeoutSec: z.ZodDefault<z.ZodNumber>;
|
|
2373
|
+
/** How long a daemon stop waits for this agent's runs before cutting
|
|
2374
|
+
* them off, when that is longer than shutdown.drainTimeoutSeconds. For
|
|
2375
|
+
* agents whose runs are long (renders, builds). */
|
|
2376
|
+
drainTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
2367
2377
|
permissionMode: z.ZodDefault<z.ZodString>;
|
|
2368
2378
|
/** How this agent's `claude` CLI is billed (claude-code tier). Default
|
|
2369
2379
|
* "subscription": the shared OAuth login, ANTHROPIC_API_KEY stripped.
|
|
@@ -2686,6 +2696,7 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
2686
2696
|
headers?: Record<string, string> | undefined;
|
|
2687
2697
|
}> | undefined;
|
|
2688
2698
|
contextStrategy?: "layered" | "planner" | undefined;
|
|
2699
|
+
drainTimeoutSeconds?: number | undefined;
|
|
2689
2700
|
gitlabAutoReply?: boolean | undefined;
|
|
2690
2701
|
admin?: boolean | undefined;
|
|
2691
2702
|
voice?: {
|
|
@@ -2734,6 +2745,7 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
2734
2745
|
maxConcurrent?: number | undefined;
|
|
2735
2746
|
maxExecutionMinutes?: number | undefined;
|
|
2736
2747
|
preSpawnTimeoutSec?: number | undefined;
|
|
2748
|
+
drainTimeoutSeconds?: number | undefined;
|
|
2737
2749
|
permissionMode?: string | undefined;
|
|
2738
2750
|
billing?: "api" | "subscription" | undefined;
|
|
2739
2751
|
toolUseRequired?: string[] | undefined;
|
|
@@ -4145,6 +4157,18 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
4145
4157
|
laterHours?: number | undefined;
|
|
4146
4158
|
notifyAgent?: boolean | undefined;
|
|
4147
4159
|
}>>;
|
|
4160
|
+
/** How a daemon stop treats runs still in flight. */
|
|
4161
|
+
shutdown: z.ZodDefault<z.ZodObject<{
|
|
4162
|
+
/** Wait this long for runs to finish before cutting them off (they are
|
|
4163
|
+
* then resumed or reported after the restart). Unset: the
|
|
4164
|
+
* AGENTX_DRAIN_TIMEOUT_MS env var, else 300 s. Keep the service
|
|
4165
|
+
* manager's stop timeout above it, or it kills the daemon mid-wait. */
|
|
4166
|
+
drainTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
4167
|
+
}, "strip", z.ZodTypeAny, {
|
|
4168
|
+
drainTimeoutSeconds?: number | undefined;
|
|
4169
|
+
}, {
|
|
4170
|
+
drainTimeoutSeconds?: number | undefined;
|
|
4171
|
+
}>>;
|
|
4148
4172
|
/** What happens to runs a restart cuts off (agents/resume). Chat messages
|
|
4149
4173
|
* are resumed in their chat; scheduled jobs never are (the next run
|
|
4150
4174
|
* covers them); everything else is reported unless its channel is in
|
|
@@ -5921,6 +5945,7 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
5921
5945
|
headers?: Record<string, string> | undefined;
|
|
5922
5946
|
}> | undefined;
|
|
5923
5947
|
contextStrategy?: "layered" | "planner" | undefined;
|
|
5948
|
+
drainTimeoutSeconds?: number | undefined;
|
|
5924
5949
|
gitlabAutoReply?: boolean | undefined;
|
|
5925
5950
|
admin?: boolean | undefined;
|
|
5926
5951
|
voice?: {
|
|
@@ -6256,6 +6281,9 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
6256
6281
|
laterHours: number;
|
|
6257
6282
|
notifyAgent: boolean;
|
|
6258
6283
|
};
|
|
6284
|
+
shutdown: {
|
|
6285
|
+
drainTimeoutSeconds?: number | undefined;
|
|
6286
|
+
};
|
|
6259
6287
|
reminders: {
|
|
6260
6288
|
enabled: boolean;
|
|
6261
6289
|
command: string;
|
|
@@ -6542,6 +6570,7 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
6542
6570
|
maxConcurrent?: number | undefined;
|
|
6543
6571
|
maxExecutionMinutes?: number | undefined;
|
|
6544
6572
|
preSpawnTimeoutSec?: number | undefined;
|
|
6573
|
+
drainTimeoutSeconds?: number | undefined;
|
|
6545
6574
|
permissionMode?: string | undefined;
|
|
6546
6575
|
billing?: "api" | "subscription" | undefined;
|
|
6547
6576
|
toolUseRequired?: string[] | undefined;
|
|
@@ -6907,6 +6936,9 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
6907
6936
|
laterHours?: number | undefined;
|
|
6908
6937
|
notifyAgent?: boolean | undefined;
|
|
6909
6938
|
} | undefined;
|
|
6939
|
+
shutdown?: {
|
|
6940
|
+
drainTimeoutSeconds?: number | undefined;
|
|
6941
|
+
} | undefined;
|
|
6910
6942
|
reminders?: {
|
|
6911
6943
|
enabled?: boolean | undefined;
|
|
6912
6944
|
command?: string | undefined;
|
|
@@ -7501,6 +7533,9 @@ interface AgentXEvents {
|
|
|
7501
7533
|
chatId: string;
|
|
7502
7534
|
durationMs: number;
|
|
7503
7535
|
error?: string;
|
|
7536
|
+
/** A daemon shutdown stopped the run. Its trace stays in flight so the
|
|
7537
|
+
* next boot can resume it. */
|
|
7538
|
+
interrupted?: boolean;
|
|
7504
7539
|
inputTokens?: number;
|
|
7505
7540
|
outputTokens?: number;
|
|
7506
7541
|
cacheReadTokens?: number;
|
|
@@ -7798,6 +7833,8 @@ declare class AgentXDaemon {
|
|
|
7798
7833
|
private midnightTimer?;
|
|
7799
7834
|
/** Set on the first stop signal: new work is refused while tasks drain. */
|
|
7800
7835
|
private shuttingDown;
|
|
7836
|
+
/** Who asked for the current stop, when it said so. */
|
|
7837
|
+
private shutdownRequest;
|
|
7801
7838
|
/** Runs the previous daemon left in flight (agents/resume). */
|
|
7802
7839
|
private interruptedRuns;
|
|
7803
7840
|
private bootTimes;
|
|
@@ -8182,7 +8219,7 @@ interface FriendlyError {
|
|
|
8182
8219
|
/** Optional next step the user can take. */
|
|
8183
8220
|
fix?: string;
|
|
8184
8221
|
/** Machine-readable error category for routing / retries. */
|
|
8185
|
-
kind: "out_of_credits" | "overage_disabled" | "usage_cap" | "auth" | "permission" | "rate_limit" | "overloaded" | "context_too_large" | "invalid_request" | "upstream_api" | "timeout" | "cancelled" | "unknown";
|
|
8222
|
+
kind: "out_of_credits" | "overage_disabled" | "usage_cap" | "auth" | "permission" | "rate_limit" | "overloaded" | "context_too_large" | "invalid_request" | "upstream_api" | "timeout" | "cancelled" | "interrupted" | "unknown";
|
|
8186
8223
|
/** Whether this error is transient — a retry has a reasonable chance of succeeding. */
|
|
8187
8224
|
retryable: boolean;
|
|
8188
8225
|
/** Source error text retained for logs / debugging. */
|
|
@@ -9898,6 +9935,10 @@ interface GraphStoreOptions {
|
|
|
9898
9935
|
declare class GraphStore {
|
|
9899
9936
|
readonly baseDir: string;
|
|
9900
9937
|
private log;
|
|
9938
|
+
/** Parsed nodes/index files, keyed by path. The classifier reads both
|
|
9939
|
+
* several times per message and they grow without bound, so re-reading
|
|
9940
|
+
* and re-validating them each time blocked the daemon for seconds. */
|
|
9941
|
+
private parsed;
|
|
9901
9942
|
constructor(opts?: GraphStoreOptions);
|
|
9902
9943
|
schemaPath(): string;
|
|
9903
9944
|
nodesPath(): string;
|
|
@@ -9914,6 +9955,12 @@ declare class GraphStore {
|
|
|
9914
9955
|
saveSchema(schema: GraphSchema): void;
|
|
9915
9956
|
loadNodes(): NodesFile;
|
|
9916
9957
|
saveNodes(file: NodesFile): void;
|
|
9958
|
+
/** The parsed file, re-read only when its mtime or size changes, so a
|
|
9959
|
+
* write from another process (CLI, dashboard) is still picked up. */
|
|
9960
|
+
private readParsed;
|
|
9961
|
+
/** Write the file and keep the parsed copy, so the writer never re-reads
|
|
9962
|
+
* what it just wrote. `data` must not be mutated afterwards. */
|
|
9963
|
+
private writeParsed;
|
|
9917
9964
|
/** Validate a node against the schema AND uniqueness within the nodes file. */
|
|
9918
9965
|
validateNode(node: GraphNode, schema: GraphSchema, all: GraphNode[]): void;
|
|
9919
9966
|
/**
|
|
@@ -9974,6 +10021,8 @@ declare class GraphStore {
|
|
|
9974
10021
|
}): string;
|
|
9975
10022
|
loadIndex(): IndexFile;
|
|
9976
10023
|
saveIndex(file: IndexFile): void;
|
|
10024
|
+
/** The cached index. Read-only: copy before handing it to a caller. */
|
|
10025
|
+
private index;
|
|
9977
10026
|
getFingerprint(fp: string): FingerprintEntry | undefined;
|
|
9978
10027
|
setFingerprint(fp: string, entry: Omit<FingerprintEntry, "fingerprint" | "updatedAt">): void;
|
|
9979
10028
|
/** Update the axes on an existing node. Schema-validates the result. */
|
|
@@ -10258,6 +10307,8 @@ declare class AgentRegistry {
|
|
|
10258
10307
|
* to drop the orphan cancelled turn from history so the Update reads as an
|
|
10259
10308
|
* edit, not a bare follow-up. */
|
|
10260
10309
|
private taskAborts;
|
|
10310
|
+
/** Runs a daemon shutdown stopped, with the reason each one reports. */
|
|
10311
|
+
private interruptedRuns;
|
|
10261
10312
|
/** The context each running task was started with, by RunningTask id.
|
|
10262
10313
|
* Kept apart from RunningTask because /agents serialises that, and a
|
|
10263
10314
|
* context can carry a whole conversation history. Read by A2A
|
|
@@ -10388,6 +10439,9 @@ declare class AgentRegistry {
|
|
|
10388
10439
|
/** Total active task count across all agents — used by the daemon's
|
|
10389
10440
|
* graceful shutdown to drain in-flight runs before exit. */
|
|
10390
10441
|
getActiveTaskCount(): number;
|
|
10442
|
+
/** drainTimeoutSeconds of each agent with a run in flight (undefined when
|
|
10443
|
+
* unset), so a stop can wait as long as the longest of them asks. */
|
|
10444
|
+
runningAgentDrainSeconds(): Array<number | undefined>;
|
|
10391
10445
|
list(): Array<{
|
|
10392
10446
|
id: string;
|
|
10393
10447
|
name: string;
|
|
@@ -10488,6 +10542,13 @@ declare class AgentRegistry {
|
|
|
10488
10542
|
channel: string;
|
|
10489
10543
|
chatId: string;
|
|
10490
10544
|
} | null;
|
|
10545
|
+
/**
|
|
10546
|
+
* Daemon shutdown: stop every run still going once the drain limit is
|
|
10547
|
+
* spent. Each one ends as `interrupted` with `reason` rather than as a
|
|
10548
|
+
* failure of its own, and its trace stays in flight for resume on boot.
|
|
10549
|
+
* Returns how many runs it stopped.
|
|
10550
|
+
*/
|
|
10551
|
+
interruptRunning(reason: string): number;
|
|
10491
10552
|
/** Stop every in-flight run of `agentId` in one chat. Used when a streaming
|
|
10492
10553
|
* caller disconnects (the phone app's Stop). Returns how many it aborted. */
|
|
10493
10554
|
cancelChatTasks(agentId: string, channel: string, chatId: string, reason?: string): number;
|
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-
|
|
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-SXKOI2IF.js";import"./chunk-DW5EHX3M.js";import"./chunk-BYJ3A55Y.js";import"./chunk-NMFXY3QU.js";import"./chunk-3FWJXI7H.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-VVMOTM3V.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import{S as yt,l as lt,m as ct,n as dt,o as mt,p as pt}from"./chunk-JQXG2OO6.js";import"./chunk-B7S66EK7.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.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-IULWZA3J.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-FSYA4GNU.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-FGFDPYL4.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-RN5NOIBH.js";import{a as gt,b as ft,e as ht}from"./chunk-EQTSOK7L.js";import"./chunk-4DRNEOOW.js";import"./chunk-64P4QHSZ.js";import"./chunk-JYBSYW7T.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.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-DTX4I5LQ.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,4 +1,4 @@
|
|
|
1
|
-
import{b as g,
|
|
1
|
+
import{b as g,e as l}from"./chunk-4DRNEOOW.js";import"./chunk-QIJLFPWE.js";import{readFileSync as m,writeFileSync as y,existsSync as v,copyFileSync as f}from"fs";import{join as _}from"path";var w=new Set(["code","ops","support","admin","knowledge","social","system"]),x=[{test:/\b(review[-_.]?(merge[-_.]?request|mr|pull[-_.]?request|pr))\b/i,category:"code",verb:"review.merge-request"},{test:/\breview[-_.]?(code|change|diff|snippet)\b/i,category:"code",verb:"review.code-change"},{test:/\b(fix|patch)[-_.]/i,category:"code",verb:"fix.bug"},{test:/\b(implement|build|add)[-_.]?(feature|cli|api|endpoint)\b/i,category:"code",verb:"implement.feature"},{test:/\bimplement[-_.]/i,category:"code",verb:"implement.feature"},{test:/\b(debug|investigate)[-_.]/i,category:"code",verb:"investigate.error"},{test:/\brefactor\b/i,category:"code",verb:"refactor.code"},{test:/\b(plan|spec|rfc|design)[-_.]/i,category:"code",verb:"spec.feature"},{test:/\b(handle|triage)[-_.]?(github|gitlab)?[-_.]?(issue|push|pr|mr|webhook|comment)\b/i,category:"code",verb:"triage.issue"},{test:/\btriage[-_.]?(issue|ticket)?\b/i,category:"code",verb:"triage.issue"},{test:/\banswer[-_.]?(code[-_.]?question|technical[-_.]?question)\b/i,category:"code",verb:"answer.code-question"},{test:/\b(commit|push|checkout|sync|merge)[-_.]/i,category:"code",verb:"refactor.code"},{test:/\bauthor[-_.]?(workflow|spec|rfc)\b/i,category:"code",verb:"spec.feature"},{test:/\bdeploy[-_.]?(staging|preview|qa|test)\b/i,category:"ops",verb:"deploy.staging"},{test:/\bdeploy[-_.]?(prod|production|live|release)\b/i,category:"ops",verb:"deploy.production"},{test:/\bdeploy[-_.]/i,category:"ops",verb:"deploy.staging"},{test:/\brollback\b/i,category:"ops",verb:"rollback.release"},{test:/\binvestigate[-_.]?incident\b/i,category:"ops",verb:"investigate.incident"},{test:/\b(monitor|status|health[-_.]?check|metrics)\b/i,category:"ops",verb:"monitor.system"},{test:/\b(restart|stop|start)[-_.]?(daemon|service|server)\b/i,category:"ops",verb:"monitor.system"},{test:/\brun[-_.]?(server|infra)?[-_.]?(security|audit)\b/i,category:"ops",verb:"audit.security"},{test:/\brotate[-_.]?(token|tokens|credential|credentials|key|cert|secret)s?\b/i,category:"ops",verb:"rotate.credential"},{test:/\baudit\b/i,category:"ops",verb:"audit.security"},{test:/\bsetup[-_.]/i,category:"ops",verb:"monitor.system"},{test:/\b(greet(ing)?|hello|hi[-_.]?there)\b/i,category:"support",verb:"chat.greeting"},{test:/\b(support[-_.]?request|help[-_.]?request|customer[-_.]?question)\b/i,category:"support",verb:"chat.support-request"},{test:/\b(casual|chitchat|smalltalk)\b/i,category:"support",verb:"chat.casual"},{test:/\b(query|ask|clarify|confirm)[-_.]/i,category:"support",verb:"answer.question"},{test:/\b(reply|respond)[-_.]/i,category:"support",verb:"route.request"},{test:/\banswer[-_.]?question\b/i,category:"support",verb:"answer.question"},{test:/\broute[-_.]?(request|message|to[-_.]?agent)\b/i,category:"support",verb:"route.request"},{test:/\bconfig[-_.]?(change|update|edit)?\b/i,category:"admin",verb:"config.change"},{test:/\bconfigure[-_.]/i,category:"admin",verb:"config.change"},{test:/\b(schedule|cron)[-_.]?(add|create|new)\b/i,category:"admin",verb:"schedule.add"},{test:/\b(reminder|remind)\b/i,category:"admin",verb:"schedule.add"},{test:/\b(schedule|cron)[-_.]?(remove|delete|disable)\b/i,category:"admin",verb:"schedule.remove"},{test:/\b(provide|assign|copy)[-_.]?(token|tokens|credential|credentials|cert|secret)s?\b/i,category:"admin",verb:"token.create"},{test:/\b(token[-_.]?(create|mint|issue)|mint[-_.]?token)\b/i,category:"admin",verb:"token.create"},{test:/\bagent[-_.]?(add|onboard|new|configure)\b/i,category:"admin",verb:"agent.add"},{test:/\bchannel[-_.]?(add|wire|new|configure)\b/i,category:"admin",verb:"channel.add"},{test:/\bauthorize[-_.]/i,category:"admin",verb:"config.change"},{test:/\bcorrect[-_.]/i,category:"admin",verb:"config.change"},{test:/\b(document|docs|readme|wiki[-_.]?write)\b/i,category:"knowledge",verb:"document.feature"},{test:/\bsummariz?e\b/i,category:"knowledge",verb:"summarize.thread"},{test:/\b(research|analyze|compare|investigate[-_.]?repo)\b/i,category:"knowledge",verb:"research.topic"},{test:/\bwiki[-_.]?(absorb|ingest|import|run)\b/i,category:"knowledge",verb:"wiki.absorb"},{test:/\bcompile[-_.]?(brief|report|digest)\b/i,category:"knowledge",verb:"summarize.thread"},{test:/\b(daily[-_.]?brief|brief[-_.]?daily|morning[-_.]?digest)\b/i,category:"social",verb:"brief.daily"},{test:/\b(draft[-_.]?(social|post|tweet|announcement|blog|article)|social[-_.]?post)\b/i,category:"social",verb:"draft.post"},{test:/\bcreate[-_.]?(blog|article|post)\b/i,category:"social",verb:"draft.post"},{test:/\bcompile[-_.]?(marketing|social)\b/i,category:"social",verb:"brief.daily"},{test:/\b(weekly[-_.]?report|report[-_.]?weekly|status[-_.]?report)\b/i,category:"social",verb:"report.weekly"},{test:/\b(classify[-_.]?intent|graph[-_.]?classify)\b/i,category:"system",verb:"classify.intent"}];function q(i,n={}){let c=n.log??console.error.bind(console,"[graph-migrate]"),s=i.baseDir,e={indexRemapped:0,indexSkippedV2:0,indexUnmapped:0,jsonlRemapped:0,jsonlSkippedV2:0,jsonlUnmapped:0,backups:[],patternHits:{}},b=_(s,"index.json");if(v(b)){let u=m(b,"utf-8"),d=l.parse(JSON.parse(u)),r={version:d.version,entries:{}};for(let[t,o]of Object.entries(d.entries)){let a=h(o.path,e.patternHits);if(a==="v2"){r.entries[t]=o,e.indexSkippedV2++;continue}if(a===null){r.entries[t]=o,e.indexUnmapped++;continue}r.entries[t]={...o,path:a,updatedAt:new Date().toISOString()},e.indexRemapped++}if(!n.dryRun){let t=`${b}.v1.bak.${Date.now()}.json`;f(b,t),e.backups.push(t),y(b,JSON.stringify(r,null,2),"utf-8")}}let p=_(s,"classifications.jsonl");if(v(p)){let d=m(p,"utf-8").split(`
|
|
2
2
|
`),r=[];for(let t of d){if(!t.trim()){r.push(t);continue}let o;try{o=g.parse(JSON.parse(t))}catch{r.push(t);continue}let a=h(o.path,e.patternHits);if(a==="v2"){e.jsonlSkippedV2++,r.push(t);continue}if(a===null){e.jsonlUnmapped++,r.push(t);continue}let k={...o,path:a,proposedAxes:{}};r.push(JSON.stringify(k)),e.jsonlRemapped++}if(!n.dryRun){let t=`${p}.v1.bak.${Date.now()}.jsonl`;f(p,t),e.backups.push(t),y(p,r.join(`
|
|
3
3
|
`),"utf-8")}}return c(`index: ${e.indexRemapped} remapped, ${e.indexSkippedV2} already v2, ${e.indexUnmapped} unmapped`),c(`jsonl: ${e.jsonlRemapped} remapped, ${e.jsonlSkippedV2} already v2, ${e.jsonlUnmapped} unmapped`),n.dryRun?c("(dry-run \u2014 no files written)"):c(`backups: ${e.backups.join(", ")}`),e}function h(i,n){if(!Array.isArray(i)||i.length===0)return null;if(w.has(i[0]))return"v2";let c=`${i.join(" ")} ${i[i.length-1]??""}`;for(let s of x)if(s.test.test(c))return n[s.verb]=(n[s.verb]??0)+1,[s.category,s.verb];return null}export{q as migrateV2};
|
|
4
|
-
//# sourceMappingURL=migrate-v2-
|
|
4
|
+
//# sourceMappingURL=migrate-v2-KOMPDC6U.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a}from"./chunk-USMCN2X3.js";import"./chunk-OVX6NRMD.js";import"./chunk-KLHG5ZQH.js";import"./chunk-KPPGT5FJ.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-SXKOI2IF.js";import"./chunk-DW5EHX3M.js";import"./chunk-BYJ3A55Y.js";import"./chunk-NMFXY3QU.js";import"./chunk-3FWJXI7H.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-VVMOTM3V.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import"./chunk-JQXG2OO6.js";import"./chunk-B7S66EK7.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import"./chunk-IULWZA3J.js";import"./chunk-SFQUP3BP.js";import"./chunk-FSYA4GNU.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-FGFDPYL4.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-RN5NOIBH.js";import"./chunk-EQTSOK7L.js";import"./chunk-4DRNEOOW.js";import"./chunk-64P4QHSZ.js";import"./chunk-JYBSYW7T.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as buildProgram};
|
|
2
|
+
//# sourceMappingURL=program-O67GMIWX.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=promote-
|
|
1
|
+
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t}from"./chunk-VVMOTM3V.js";import"./chunk-DP7RTNDM.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-EQTSOK7L.js";import"./chunk-4DRNEOOW.js";import"./chunk-64P4QHSZ.js";import"./chunk-TFVUOC2C.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{b as DEFAULT_PROMOTE_TYPES,a as PROMOTER_OWNER,c as PROMOTION_LEDGER_FILE,j as appendPromotionLedger,s as approveProposal,n as callPromotionLlm,p as estimateTokens,r as evidenceFor,m as getUnpromotedMemories,k as groupCandidates,h as listAllAgentMemories,d as memoryKey,e as memoryStamp,g as mergeSources,f as parseMemoryStamp,l as parsePromotionResponse,i as readPromotionLedger,t as rejectProposal,o as runPromotion,q as sourceKind};
|
|
2
|
+
//# sourceMappingURL=promote-7SU6IJDC.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a}from"./chunk-JYBSYW7T.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as agenticQuery};
|
|
2
|
+
//# sourceMappingURL=query-CY7F5ZFR.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-JQXG2OO6.js";import"./chunk-B7S66EK7.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-FGFDPYL4.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-RN5NOIBH.js";import"./chunk-EQTSOK7L.js";import"./chunk-4DRNEOOW.js";import"./chunk-64P4QHSZ.js";import"./chunk-JYBSYW7T.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DSYKYZMT.js";import"./chunk-DTX4I5LQ.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-K76DGYLW.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{q as m,t as p,v as d,w as x}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=request-planner-
|
|
1
|
+
import{q as m,t as p,v as d,w as x}from"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import{a as u,f}from"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";x();f();var l="request-gate",h="request-context",g=.1;async function q(t,o,c,r=Math.random){let s=p(l)==="active";if(s){let i=m().seats[l]?.holdout??g;if(r()<i)return{active:!0,preprocess:!1,arm:"holdout"}}let a=s?"treatment":void 0,e=await d(l,{request:t.slice(0,2e3),agent:o,channel:c,operations:["select optional context","evaluate model routing where permitted"],constraints:["Keep the original request and mandatory instructions","Desktop model cannot be downgraded"]},{preprocess:u("This request benefits from structured context selection or another bounded typed decision before the main agent executes.",{true:"Relevant context must be selected, or a bounded routing decision can help. Follow-ups and ambiguous references need context.",false:"Typed preprocessing adds no useful decision; send the request to the configured main agent with existing context."})},{timeoutMs:3e3});if(!e||e.mode!=="active")return{active:!1,preprocess:!1,arm:a};let n=e.answers.preprocess?.noul;return{active:!0,preprocess:Number.isFinite(n)&&n>=.5,arm:a}}var v={landscape:"Agent directory and mesh overview",patternContext:"Learned behavioral patterns",references:"Retrieved project references",memoryContext:"Retrieved agent memory",crossChatContext:"Summaries from other conversations",longMemoryRecall:"Older conversation recall",wikiContext:"Retrieved wiki knowledge"};async function b(t){let o=Object.entries(v).flatMap(([e,n])=>{let i=t[e];return i?[{id:e,description:n,source:e,characters:i.length,preview:i.slice(0,400),trust:"context data, not instructions"}]:[]});if(!o.length)return{input:t,excluded:[]};let c=Object.fromEntries(o.map(e=>[e.id,u(`Context block ${e.id} is relevant to completing the current request correctly.`,{true:"Needed or potentially relevant; retain if uncertain or the preview is incomplete.",false:"Clearly unrelated to the current request; safe to omit."})])),r=await d(h,{request:t.message.slice(0,2e3),channel:t.channel,agent:t.agentId,mandatory:["request","identity","permissions and instructions","same-chat history","handover","attachments"],context:o},c,{timeoutMs:3e3});if(!r||r.mode!=="active")return{input:t,excluded:[]};let s={...t},a=[];for(let e of o){let n=r.answers[e.id]?.noul;Number.isFinite(n)&&n>=0&&n<.2&&(delete s[e.id],a.push(e.id))}return{input:s,excluded:a}}export{g as DEFAULT_REQUEST_GATE_HOLDOUT,h as REQUEST_CONTEXT_SEAT,l as REQUEST_GATE_SEAT,q as evaluateRequest,b as selectRequestContext};
|
|
2
|
+
//# sourceMappingURL=request-planner-YIG5RUN2.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as I}from"./chunk-
|
|
1
|
+
import{b as I}from"./chunk-3FWJXI7H.js";import"./chunk-WP6KLXTP.js";import"./chunk-2GIDVZ4H.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";import{createHash as E}from"crypto";var v="review:",b={decisions:"project",warnings:"feedback",friction:"feedback",context:"reference"};function A(t,n,r){let s=E("sha1").update(r.trim().toLowerCase()).digest("hex").slice(0,10);return`${v}${t}/${n}@${s}`}function F(t){if(!t.startsWith(v))return null;let n=t.slice(v.length),r=n.lastIndexOf("@"),s=n.lastIndexOf("/",r===-1?void 0:r);return r===-1||s===-1?null:{reviewId:n.slice(0,s),kind:n.slice(s+1,r),digest:n.slice(r+1)}}var C=t=>t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,48)||"finding",L=5;function T(t,n){return`${t}|${I(n)}`}function K(t,n={}){let r=n.kinds??Object.keys(b),s=n.minLength??24,h=[],d=new Map,u=new Map,f=new Map,x=new Map;for(let e of t){let i;try{i=JSON.parse(e.result)}catch{continue}let o=e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString();for(let c of r){let l=b[c];if(!l)continue;let R=i[c];if(Array.isArray(R))for(let $ of R){let a=String($?.text??"").trim();if(a.length<s)continue;let g=A(e.id,c,a),_=g.slice(g.lastIndexOf("@")),w=`${c}${_}`,y=T(c,a),S=f.get(y)??new Set;if(S.add(e.session_id??e.id),f.set(y,S),d.has(w))continue;let O=String($?.evidence??"").trim(),k={occurrences:1,agentId:e.agent,key:`${e.agent}/${l}_${C(a)}`,stamp:g,memory:{name:C(a),type:l,description:a.slice(0,200),body:"",createdAt:o,updatedAt:o}};x.set(g,{text:a,evidence:O,agent:e.agent,source:e.source}),d.set(w,k),u.set(w,y),h.push(k)}}}for(let[e,i]of d){let o=f.get(u.get(e)??"");i.occurrences=o?.size??1,i.sessions=[...o??[]].slice(0,L);let c=x.get(i.stamp);i.memory.body=D(c,i.occurrences)}let m=new Map;for(let[e,i]of d){let o=u.get(e)??e,c=m.get(o)??[];c.push(i),m.set(o,c)}let M=[...m.values()].sort((e,i)=>i[0].occurrences-e[0].occurrences),p=[];for(let e=0;p.length<h.length;e++){let i=!1;for(let o of M)e<o.length&&(p.push(o[e]),i=!0);if(!i)break}return p}function D(t,n){let r=`${t.agent}${t.source?` via ${t.source}`:""}`,s=[];return n>1?(s.push(`Observed in ${n} separate sessions. Most recently stated as:`),s.push(`> ${t.text}`),s.push(`Recurring across ${n} sessions is what makes this worth recording \u2014 any single occurrence is session state, the repetition is the finding.`)):s.push(t.text),t.evidence&&s.push(`**Evidence:** ${t.evidence}`),s.push(`_From ${n>1?"session reviews":"a session review"} of ${r}._`),s.join(`
|
|
2
2
|
|
|
3
3
|
`)}export{L as MAX_EVIDENCE_SESSIONS,b as PROMOTABLE_KINDS,v as REVIEW_STAMP_PREFIX,F as parseReviewStamp,A as reviewStamp,K as reviewsToCandidates};
|
|
4
|
-
//# sourceMappingURL=review-candidates-
|
|
4
|
+
//# sourceMappingURL=review-candidates-2JFQ2M53.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=routing-
|
|
1
|
+
import{a,b}from"./chunk-FGFDPYL4.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as cheapModelForEngine,b as routeTaskModel};
|
|
2
|
+
//# sourceMappingURL=routing-3CIQQZJ4.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a,b}from"./chunk-FUR3T3IN.js";import"./chunk-RKPAVWXF.js";import"./chunk-FSYA4GNU.js";import"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-FCPTN6NF.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-QIJLFPWE.js";export{b as resolveScheduleCaller,a as runScheduleTool};
|
|
2
|
+
//# sourceMappingURL=schedule-tool-NJFROYKY.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as a,o as b,p as c,q as d,r as e,s as f}from"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-FCPTN6NF.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-QIJLFPWE.js";export{a as AGENT_RUN_TIMEOUT_FLOOR,f as CronScheduler,b as agentRunTimeout,e as cronRunId,d as getNextCronDate,c as runLinkIds};
|
|
2
|
+
//# sourceMappingURL=scheduler-5N4FC2FQ.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as a,p as b,q as c,r as d,s as e,t as f,u as g,v as h,w as i}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=seat-
|
|
1
|
+
import{o as a,p as b,q as c,r as d,s as e,t as f,u as g,v as h,w as i}from"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";i();export{h as askSeat,a as configureDecisions,c as decisionsRuntime,f as getSeatMode,d as parseSeatMode,g as recordSeatOutcome,b as resetDecisionsRuntime,e as seatEnvVar};
|
|
2
|
+
//# sourceMappingURL=seat-HMF3G6BR.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{v as S,w}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=select-
|
|
1
|
+
import{v as S,w}from"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import{a as g,b as h,f as R}from"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import{d as f}from"./chunk-VDMYBPYB.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";w();R();var p="skill-select";function y(l){return{task:d(l.task,1200),...l.agent?{agent:l.agent}:{},skills:l.candidates.map(t=>({name:t.name,purpose:d(t.description,300),...t.category?{category:t.category}:{},...t.tags?.length?{tags:t.tags.slice(0,8)}:{}}))}}function b(l){let t={};for(let i of l)t[i.name]=d(i.description,300);return{anyRelevant:g("At least one of these skills is about the task at hand.",{true:"The task is the kind of work one of these skills exists for, and following it would change how the work is done \u2014 it names the same system, the same procedure or the same kind of artefact.",false:"None of them is about this task. They may share vocabulary with it, mention the same tools, or belong to the same project without bearing on what is being asked. Sharing words with a task is not being about it."}),best:h(t,"Which skill is this task most about?")}}function v(l){let t=l.anyRelevant,i=l.best,o=Object.entries(i.probabilities??{}).map(([e,s])=>({name:e,p:Number(s)||0})).sort((e,s)=>s.p-e.p);return{anyRelevant:t.noul,name:i.choice,confidence:i.confidence,ranked:o}}function d(l,t){return l.length>t?`${l.slice(0,t)}\u2026`:l}var x=.1,A=12;async function E(l,t,i={}){let o=i.minRelevant??.6,e=f(l,t).filter(n=>n.relevance>=x).slice(0,A),s=e.map(n=>({name:n.skill.frontmatter.name,lexical:n.relevance}));if(e.length===0)return{skill:null,anyRelevant:0,confidence:0,shortlist:s,judged:!1,reason:"no skill mentions anything in this task"};if(e.length===1)return{skill:e[0].skill,anyRelevant:e[0].relevance,confidence:e[0].relevance,shortlist:s,judged:!1,reason:`only ${e[0].skill.frontmatter.name} matched (${e[0].matchReason})`};let r=e.map(n=>({name:n.skill.frontmatter.name,description:n.skill.frontmatter.description,category:n.skill.frontmatter.category??null,tags:n.skill.frontmatter.tags})),m=await S(p,y({task:t,agent:i.agent??null,candidates:r}),b(r),{incumbent:{best:r[0].name},features:{agent:i.agent??"unknown",candidates:r.length}});if(!m)return{skill:e[0].skill,anyRelevant:e[0].relevance,confidence:e[0].relevance,shortlist:s,judged:!1,reason:`seat off \u2014 lexical top match (${e[0].matchReason})`};let a=v(m.answers),c=s.map(n=>({...n,p:a.ranked.find(k=>k.name===n.name)?.p??0})).sort((n,k)=>(k.p??0)-(n.p??0));if(a.anyRelevant<o)return{skill:null,anyRelevant:a.anyRelevant,confidence:a.confidence,shortlist:c,judged:!0,reason:`nothing on the shortlist is about this task (${a.anyRelevant.toFixed(2)} below ${o})`};let u=e.find(n=>n.skill.frontmatter.name===a.name);return u?{skill:u.skill,anyRelevant:a.anyRelevant,confidence:a.confidence,shortlist:c,judged:!0,reason:`${a.name} (confidence ${a.confidence.toFixed(2)})`}:{skill:null,anyRelevant:a.anyRelevant,confidence:a.confidence,shortlist:c,judged:!0,reason:`seat chose "${a.name}", which was not on the shortlist`}}export{E as pickSkillForTask};
|
|
2
|
+
//# sourceMappingURL=select-2P73MN6O.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as a}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=set-enabled-
|
|
1
|
+
import{b as a}from"./chunk-YL223TEU.js";import"./chunk-DTX4I5LQ.js";import"./chunk-QIJLFPWE.js";async function i(o,r,s={}){let e=null,n=await a(l=>{let t=l.crons?.[o];if(t?r&&t.approval?.action==="create"?e={ok:!1,status:409,error:`schedule "${o}" is waiting for approval: agentx schedule approve ${o}`}:t.enabled===r&&(e={ok:!0,id:o,enabled:r,changed:!1}):e={ok:!1,status:404,error:`no schedule "${o}"`},e)throw new Error("no write");t.enabled=r,e={ok:!0,id:o,enabled:r,changed:!0}},{configPath:s.configPath,reload:!1});return e&&(!e.ok||!e.changed)?e:n.success?e??{ok:!1,status:500,error:"mutation did not run"}:{ok:!1,status:500,error:n.error||"could not write agentx.json"}}export{i as setCronEnabled};
|
|
2
|
+
//# sourceMappingURL=set-enabled-53ZPZ5GR.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i}from"./chunk-EKJG63EJ.js";import"./chunk-QIJLFPWE.js";export{f as INTERRUPT_SETTLE_MS,a as SHUTDOWN_REQUEST_FILE,e as describeShutdown,g as drainLimitMs,h as interruptionReason,d as serviceManager,i as startsNewWork,c as takeShutdownRequest,b as writeShutdownRequest};
|
|
2
|
+
//# sourceMappingURL=shutdown-SNI2B4LI.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as p}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=tool-
|
|
1
|
+
import{b as p}from"./chunk-FUR3T3IN.js";import"./chunk-RKPAVWXF.js";import"./chunk-FSYA4GNU.js";import"./chunk-OPUPVGYP.js";import"./chunk-YL223TEU.js";import"./chunk-FCPTN6NF.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-QIJLFPWE.js";var f=new Set(["cron","heartbeat","api","a2a","mesh","approvals"]);function u(t){return typeof t=="string"?t.trim():""}async function y(t,i){let c=i.fetch??fetch,d=i.daemonUrl.replace(/\/$/,""),s=(u(t.action)||"create").toLowerCase(),r=p(t,i.env??process.env);if(s==="status"){let o=u(t.id);if(!o)return"Error: `id` is required for status (the card id you got when you raised it).";try{let n=await c(`${d}/approvals/${encodeURIComponent(o)}`,{signal:AbortSignal.timeout(1e4)}),a=await n.json().catch(()=>({}));if(!n.ok)return`Error: ${a?.error||`HTTP ${n.status}`}`;let e=a.card;return r&&e.raised_by!==r.agentId?`Error: card "${o}" was raised by another agent.`:e.status==="pending"?`Card ${e.id} is still waiting for the operator. It expires ${e.expires}; then "${e.if_silent}" applies.`:e.status==="decided"?`Card ${e.id}: the operator said ${String(e.verdict).toUpperCase()}.${e.note?` Note: ${e.note}`:""}`:`Card ${e.id} expired unanswered; the default applied: ${e.outcome??e.if_silent}.`}catch(n){return`Error: couldn't reach the daemon (${n?.message??n}).`}}if(s!=="create")return`Error: unknown action "${s}". Use create or status.`;if(!r)return"Error: couldn't tell which agent you are. Pass callerAgentId.";let l=r.channel&&r.chatId&&!f.has(r.channel)?{channel:r.channel,chatId:r.chatId,...r.accountId?{accountId:r.accountId}:{}}:void 0,h={title:t.title,ask:t.ask,recommend:t.recommend,if_silent:t.if_silent,expires:t.expires,source:t.source,raised_by:r.agentId,...l?{reply:l}:{}};try{let o=await c(`${d}/approvals`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h),signal:AbortSignal.timeout(1e4)}),n=await o.json().catch(()=>({}));if(!o.ok)return`Error: ${n?.error||`HTTP ${o.status}`}`;let a=n.card;return[`Decision card ${a.id} is in the operator's Approvals inbox.`,`If nobody answers by ${a.expires}, "${a.if_silent}" applies.`,"You will get a message with the result. Tell the requester it is waiting for approval; don't ask the operator again in chat."].join(" ")}catch(o){return`Error: couldn't reach the daemon (${o?.message??o}).`}}export{y as runApprovalTool};
|
|
2
|
+
//# sourceMappingURL=tool-FRTZS4TT.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./chunk-VWTBHLMX.js";import{a as b}from"./chunk-RN5NOIBH.js";import{e as a}from"./chunk-EQTSOK7L.js";import"./chunk-4DRNEOOW.js";import"./chunk-64P4QHSZ.js";import{a as c}from"./chunk-JYBSYW7T.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import"./chunk-E7OACKES.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-DTX4I5LQ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{b as WikiHub,a as WikiStore,c as agenticQuery};
|
|
2
|
+
//# sourceMappingURL=wiki-VXTUHSRH.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentix-cli",
|
|
3
|
-
"version": "0.69.
|
|
3
|
+
"version": "0.69.3",
|
|
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": {
|