agentix-cli 0.52.1 → 0.54.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/{App-X6FGYBLX.js → App-VRTLAPRF.js} +2 -2
- package/dist/{ChatApp-XMUOXQ2M.js → ChatApp-YENWPZT4.js} +2 -2
- package/dist/{agent-KKVMU3VB.js → agent-HVUGHYBF.js} +2 -2
- package/dist/{board-dashboard-KETIFTBD.js → board-dashboard-3XJVYDB3.js} +729 -191
- package/dist/board-dashboard-3XJVYDB3.js.map +1 -0
- package/dist/chunk-2D3RYIDU.js +3 -0
- package/dist/chunk-2D3RYIDU.js.map +1 -0
- package/dist/{chunk-H7R3F2CO.js → chunk-2TJYZF4E.js} +2 -2
- package/dist/chunk-33QV5O6P.js +7 -0
- package/dist/chunk-33QV5O6P.js.map +1 -0
- package/dist/{chunk-MHBUAU2B.js → chunk-37EABIOJ.js} +2 -2
- package/dist/chunk-3RCFUIYR.js +29 -0
- package/dist/chunk-3RCFUIYR.js.map +1 -0
- package/dist/{chunk-B5UA3X6E.js → chunk-3W2KMI5O.js} +2 -2
- package/dist/{chunk-3IUU4YFI.js → chunk-4FFWNPFX.js} +5 -5
- package/dist/chunk-4FFWNPFX.js.map +1 -0
- package/dist/{chunk-7BQQWI4T.js → chunk-4HNHHKJF.js} +2 -2
- package/dist/chunk-6JHA3ZE6.js +1111 -0
- package/dist/chunk-6JHA3ZE6.js.map +1 -0
- package/dist/{chunk-76NNONUJ.js → chunk-BKDUCPZ3.js} +2 -2
- package/dist/{chunk-64UYAWAK.js → chunk-BMSPRUEJ.js} +33 -33
- package/dist/chunk-BMSPRUEJ.js.map +1 -0
- package/dist/{chunk-NKSCUCVZ.js → chunk-ENRJ2QEH.js} +2 -2
- package/dist/{chunk-AWRRBNWQ.js → chunk-HQMISQ7L.js} +2 -2
- package/dist/{chunk-E57WKMRR.js → chunk-KLDGJSR5.js} +2 -2
- package/dist/{ntfy-ZY2NPGBA.js → chunk-KZKDVIOE.js} +3 -3
- package/dist/chunk-KZKDVIOE.js.map +1 -0
- package/dist/{chunk-7NF45XCM.js → chunk-M67AN4J7.js} +2 -2
- package/dist/{chunk-WKTFP3SK.js → chunk-NO2HOK4B.js} +2 -2
- package/dist/chunk-QD6IICK7.js +2 -0
- package/dist/chunk-QD6IICK7.js.map +1 -0
- package/dist/{chunk-QDPLR3SB.js → chunk-QX4R5WY7.js} +2 -2
- package/dist/{chunk-QZ4M2KAC.js → chunk-QYHABRLM.js} +2 -2
- package/dist/{chunk-AKAM4BNC.js → chunk-TLFJVLVQ.js} +166 -160
- package/dist/chunk-TLFJVLVQ.js.map +1 -0
- package/dist/{chunk-YS3Z2Z64.js → chunk-UYMK3XNB.js} +44 -45
- package/dist/chunk-UYMK3XNB.js.map +1 -0
- package/dist/{chunk-7M7VJMGP.js → chunk-WLRHL2P7.js} +2 -2
- package/dist/chunk-WWMFNLKD.js +10 -0
- package/dist/chunk-WWMFNLKD.js.map +1 -0
- package/dist/{chunk-YPPTPBBV.js → chunk-XWU7O3S5.js} +2 -2
- package/dist/{chunk-XOUIZBAQ.js → chunk-ZOJUHPD5.js} +2 -2
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/client-N4XQEAVL.js +2 -0
- package/dist/{compaction-NWPBPWY2.js → compaction-H5U32UU6.js} +2 -2
- package/dist/{config-FGCJVXYX.js → config-KHKIY6LI.js} +2 -2
- package/dist/config-mutator-ZZKFQ7HJ.js +2 -0
- package/dist/doctor-QICAXIQB.js +2 -0
- package/dist/index.d.ts +130 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/memory-extract-F76BE6KA.js +2 -0
- package/dist/ntfy-52EXHVMD.js +2 -0
- package/dist/program-ZWNGK3RB.js +2 -0
- package/dist/{promote-NBFF7ZIW.js → promote-H6ZHJXTY.js} +2 -2
- package/dist/push-HEDA6P3B.js +2 -0
- package/dist/push-HEDA6P3B.js.map +1 -0
- package/dist/push-keys-2DTD7YNQ.js +2 -0
- package/dist/push-store-LXTYULUF.js +2 -0
- package/dist/query-FTE4FLYK.js +2 -0
- package/dist/registry-HDOFVNRK.js +2 -0
- package/dist/{request-planner-ZEXFARZE.js → request-planner-ABD4WIGM.js} +2 -2
- package/dist/{review-candidates-F2HNH2TZ.js → review-candidates-B6574GOJ.js} +2 -2
- package/dist/{routing-XSRZ7V23.js → routing-BGKZOHOA.js} +2 -2
- package/dist/schedule-tool-UDHXTKWV.js +2 -0
- package/dist/scheduler-NQM3HVUY.js +2 -0
- package/dist/scheduler-NQM3HVUY.js.map +1 -0
- package/dist/{seat-IPDLEUI5.js → seat-VGST5AQB.js} +2 -2
- package/dist/seat-VGST5AQB.js.map +1 -0
- package/dist/{select-BYOX63CR.js → select-Y7SBUCGJ.js} +2 -2
- package/dist/set-enabled-ARKMDLXN.js +2 -0
- package/dist/set-enabled-ARKMDLXN.js.map +1 -0
- package/dist/{tool-WW4YCMSP.js → tool-5EVYUN2G.js} +2 -2
- package/dist/wiki-GREI2TSP.js +2 -0
- package/dist/wiki-GREI2TSP.js.map +1 -0
- package/package.json +3 -1
- package/dist/board-dashboard-KETIFTBD.js.map +0 -1
- package/dist/chunk-3IUU4YFI.js.map +0 -1
- package/dist/chunk-64UYAWAK.js.map +0 -1
- package/dist/chunk-6BXKZY76.js +0 -7
- package/dist/chunk-6BXKZY76.js.map +0 -1
- package/dist/chunk-7PK32QT5.js +0 -1107
- package/dist/chunk-7PK32QT5.js.map +0 -1
- package/dist/chunk-AKAM4BNC.js.map +0 -1
- package/dist/chunk-HRBKSZ34.js +0 -2
- package/dist/chunk-HRBKSZ34.js.map +0 -1
- package/dist/chunk-WCNKTV6G.js +0 -28
- package/dist/chunk-WCNKTV6G.js.map +0 -1
- package/dist/chunk-YS3Z2Z64.js.map +0 -1
- package/dist/client-AVQSLPIZ.js +0 -2
- package/dist/config-mutator-5JSG3CHW.js +0 -2
- package/dist/doctor-VITHTLEC.js +0 -2
- package/dist/memory-extract-MGGXIZTE.js +0 -2
- package/dist/ntfy-ZY2NPGBA.js.map +0 -1
- package/dist/program-MNFDOQGQ.js +0 -2
- package/dist/query-XCXR57IV.js +0 -2
- package/dist/registry-5ZP3ZNSH.js +0 -2
- package/dist/schedule-tool-AKCVLCWK.js +0 -2
- package/dist/scheduler-BEGZJWJU.js +0 -2
- package/dist/wiki-IVJJQUKB.js +0 -2
- /package/dist/{App-X6FGYBLX.js.map → App-VRTLAPRF.js.map} +0 -0
- /package/dist/{ChatApp-XMUOXQ2M.js.map → ChatApp-YENWPZT4.js.map} +0 -0
- /package/dist/{agent-KKVMU3VB.js.map → agent-HVUGHYBF.js.map} +0 -0
- /package/dist/{chunk-H7R3F2CO.js.map → chunk-2TJYZF4E.js.map} +0 -0
- /package/dist/{chunk-MHBUAU2B.js.map → chunk-37EABIOJ.js.map} +0 -0
- /package/dist/{chunk-B5UA3X6E.js.map → chunk-3W2KMI5O.js.map} +0 -0
- /package/dist/{chunk-7BQQWI4T.js.map → chunk-4HNHHKJF.js.map} +0 -0
- /package/dist/{chunk-76NNONUJ.js.map → chunk-BKDUCPZ3.js.map} +0 -0
- /package/dist/{chunk-NKSCUCVZ.js.map → chunk-ENRJ2QEH.js.map} +0 -0
- /package/dist/{chunk-AWRRBNWQ.js.map → chunk-HQMISQ7L.js.map} +0 -0
- /package/dist/{chunk-E57WKMRR.js.map → chunk-KLDGJSR5.js.map} +0 -0
- /package/dist/{chunk-7NF45XCM.js.map → chunk-M67AN4J7.js.map} +0 -0
- /package/dist/{chunk-WKTFP3SK.js.map → chunk-NO2HOK4B.js.map} +0 -0
- /package/dist/{chunk-QDPLR3SB.js.map → chunk-QX4R5WY7.js.map} +0 -0
- /package/dist/{chunk-QZ4M2KAC.js.map → chunk-QYHABRLM.js.map} +0 -0
- /package/dist/{chunk-7M7VJMGP.js.map → chunk-WLRHL2P7.js.map} +0 -0
- /package/dist/{chunk-YPPTPBBV.js.map → chunk-XWU7O3S5.js.map} +0 -0
- /package/dist/{chunk-XOUIZBAQ.js.map → chunk-ZOJUHPD5.js.map} +0 -0
- /package/dist/{client-AVQSLPIZ.js.map → client-N4XQEAVL.js.map} +0 -0
- /package/dist/{compaction-NWPBPWY2.js.map → compaction-H5U32UU6.js.map} +0 -0
- /package/dist/{config-FGCJVXYX.js.map → config-KHKIY6LI.js.map} +0 -0
- /package/dist/{config-mutator-5JSG3CHW.js.map → config-mutator-ZZKFQ7HJ.js.map} +0 -0
- /package/dist/{doctor-VITHTLEC.js.map → doctor-QICAXIQB.js.map} +0 -0
- /package/dist/{memory-extract-MGGXIZTE.js.map → memory-extract-F76BE6KA.js.map} +0 -0
- /package/dist/{program-MNFDOQGQ.js.map → ntfy-52EXHVMD.js.map} +0 -0
- /package/dist/{promote-NBFF7ZIW.js.map → program-ZWNGK3RB.js.map} +0 -0
- /package/dist/{query-XCXR57IV.js.map → promote-H6ZHJXTY.js.map} +0 -0
- /package/dist/{registry-5ZP3ZNSH.js.map → push-keys-2DTD7YNQ.js.map} +0 -0
- /package/dist/{routing-XSRZ7V23.js.map → push-store-LXTYULUF.js.map} +0 -0
- /package/dist/{schedule-tool-AKCVLCWK.js.map → query-FTE4FLYK.js.map} +0 -0
- /package/dist/{scheduler-BEGZJWJU.js.map → registry-HDOFVNRK.js.map} +0 -0
- /package/dist/{request-planner-ZEXFARZE.js.map → request-planner-ABD4WIGM.js.map} +0 -0
- /package/dist/{review-candidates-F2HNH2TZ.js.map → review-candidates-B6574GOJ.js.map} +0 -0
- /package/dist/{seat-IPDLEUI5.js.map → routing-BGKZOHOA.js.map} +0 -0
- /package/dist/{wiki-IVJJQUKB.js.map → schedule-tool-UDHXTKWV.js.map} +0 -0
- /package/dist/{select-BYOX63CR.js.map → select-Y7SBUCGJ.js.map} +0 -0
- /package/dist/{tool-WW4YCMSP.js.map → tool-5EVYUN2G.js.map} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import{a as m,b as U}from"./chunk-QIJLFPWE.js";import{z as a}from"zod";var N,q,G,Z,
|
|
1
|
+
import{a as m,b as U}from"./chunk-QIJLFPWE.js";import{z as a}from"zod";var N,q,H,G,Z,K,F,V,Y,S,w=m(()=>{"use strict";N=a.enum(["mon","tue","wed","thu","fri","sat","sun"]),q=a.object({days:a.array(N).default(["mon","tue","wed","thu","fri"]),start:a.string().regex(/^\d{2}:\d{2}$/),end:a.string().regex(/^\d{2}:\d{2}$/),lunch:a.object({start:a.string().regex(/^\d{2}:\d{2}$/),end:a.string().regex(/^\d{2}:\d{2}$/)}).optional()}),H=a.object({title:a.string(),responsibilities:a.array(a.string()).default([]),sopPath:a.string().optional(),kpis:a.array(a.string()).default([])}),G=a.object({role:a.string(),reportsTo:a.string().optional(),schedule:q,utilizationTarget:a.number().min(0).max(1).default(.8)}),Z=a.object({channel:a.string(),chatId:a.string(),accountId:a.string().optional()}),K=a.discriminatedUnion("type",[a.object({type:a.literal("backlog"),path:a.string().default(".agentx/backlog.md")}),a.object({type:a.literal("gitlab"),projects:a.array(a.string()).default([])}),a.object({type:a.literal("wiki"),path:a.string(),glob:a.string().default("**/*.md")})]),F=a.object({id:a.string(),pm:a.string().optional(),client:a.string().optional()}),V=a.object({channel:a.string().optional(),chatId:a.string().optional(),username:a.string().optional(),senderId:a.string().optional(),client:a.string(),project:a.string().optional(),displayName:a.string().optional()}),Y=a.object({name:a.string().optional(),kind:a.enum(["client","internal","own"]).optional(),respondWithin:a.string().optional(),standing:a.array(a.string()).default([])}),S=a.object({enabled:a.boolean().default(!1),timezone:a.string().default("UTC"),mainChannel:Z,workSource:K,roles:a.record(a.string(),H).default({}),orgChart:a.record(a.string(),G).default({}),projects:a.array(F).default([]),contactMap:a.array(V).default([]),clients:a.record(a.string(),Y).default({}),workTickMinutes:a.number().int().min(1).max(60).default(15),idleQueueThreshold:a.number().int().min(0).default(0),standup:a.object({enabled:a.boolean().default(!0),plansDir:a.string().default(".agentx/plans"),maxAgentsPerDay:a.number().int().min(1).max(100).default(20),dryRun:a.boolean().default(!1)}).default({})})});import{z as l}from"zod";function nt(t,n){let r=new Set(t.labels||[]);if(t.state==="closed"){let i=n.find(s=>s.kind==="closed");if(i)return i.id}for(let i of n)if(i.kind==="scoped-label"&&i.scopedLabel&&r.has(i.scopedLabel))return i.id;for(let i of n)if(i.kind==="label"&&i.mapsToLabel&&r.has(i.mapsToLabel))return i.id;let o=n.find(i=>i.kind==="open-backlog");if(o){let i=o.scopedPrefix+"::";return[...r].some(d=>d.startsWith(i))?null:o.id}return n[0]?.id??null}function ot(t,n){let r=[],o=[],i=!1,s=!1;return n.kind==="scoped-label"&&n.scopedLabel?r.push(n.scopedLabel):n.kind==="label"&&n.mapsToLabel?r.push(n.mapsToLabel):n.kind==="closed"&&(i=!0),t&&(t.kind==="scoped-label"&&t.scopedLabel?o.push(t.scopedLabel):t.kind==="label"&&t.mapsToLabel?o.push(t.mapsToLabel):t.kind==="closed"&&n.kind!=="closed"&&(s=!0)),{addLabels:r.length?r:void 0,removeLabels:o.length?o:void 0,closeIssue:i||void 0,reopen:s||void 0}}var J,X,Q,ee,te,ne,v,oe,k,j=m(()=>{"use strict";J=l.object({name:l.string(),color:l.string().regex(/^#[0-9a-f]{6}$/i).default("#6366f1"),description:l.string().optional()}),X=l.object({id:l.string().regex(/^[a-z0-9_-]+$/,"column id must be lowercase slug"),title:l.string(),kind:l.enum(["open-backlog","scoped-label","closed","label"]).default("label"),mapsToLabel:l.string().optional(),scopedLabel:l.string().optional(),scopedPrefix:l.string().default("Status"),accent:l.string().optional()}),Q=l.object({enabled:l.boolean().default(!0),staleDoingMinutes:l.number().int().min(1).default(45),respectLunchBreak:l.boolean().default(!0),respectSchedule:l.boolean().default(!0),action:l.enum(["badge","notify"]).default("badge")}),ee=l.discriminatedUnion("type",[l.object({type:l.literal("gitlab"),projects:l.array(l.string()).min(1)})]),te=[{id:"open",title:"Open",kind:"open-backlog",scopedPrefix:"Status",accent:"#6b7280"},{id:"todo",title:"To Do",kind:"scoped-label",scopedLabel:"Status::To Do",scopedPrefix:"Status",accent:"#fb7a35"},{id:"doing",title:"Doing",kind:"scoped-label",scopedLabel:"Status::Doing",scopedPrefix:"Status",accent:"#22c55e"},{id:"onhold",title:"On Hold",kind:"scoped-label",scopedLabel:"Status::On Hold",scopedPrefix:"Status",accent:"#f59e0b"},{id:"review",title:"Review",kind:"scoped-label",scopedLabel:"Status::Review",scopedPrefix:"Status",accent:"#3b82f6"},{id:"closed",title:"Closed",kind:"closed",scopedPrefix:"Status",accent:"#6b7280"}],ne=l.object({id:l.string().regex(/^[a-z0-9_-]+$/,"board id must be lowercase slug"),name:l.string(),source:ee,primaryToolLabel:l.string().optional(),labels:l.array(J).default([]),columns:l.array(X).min(1).default(te),timeRangeDays:l.number().int().min(1).max(365).default(30),closedWindowDays:l.number().int().min(1).max(365).default(30),reconciliation:Q.default({})}),v=l.array(ne).default([]),oe=l.object({name:l.string(),url:l.string(),dashboardUrl:l.string().optional(),token:l.string().optional(),dashboardToken:l.string().optional()}),k=l.object({enabled:l.boolean().default(!1),port:l.number().int().default(4202),bind:l.string().default("127.0.0.1"),token:l.string().optional(),daemonUrl:l.string().default("http://localhost:18800"),daemons:l.array(oe).default([]),draftAgent:l.string().optional()}).default({})});import{z as ae}from"zod";function it(t){return t==="report"||t==="propose"}function se(t){return t.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9]+/).filter(Boolean).map(n=>n.toLowerCase())}function y(t){return se(t).slice(2).join(" ").replace(/\b(merge|pull)\s+requests?\b/g,"mergerequest").split(" ").filter(Boolean)}function C(t){let n=t.replace(/<<-?\s*(['"]?)([A-Za-z_][A-Za-z0-9_]*)\1([\s\S]*?)^\s*\2\s*$/gm,(i,s,d,u)=>!s&&/\$\(|`/.test(u)?i:i.split(`
|
|
2
2
|
`)[0]+`
|
|
3
|
-
`),r="",o=0;for(;o<n.length;){let i=n[o];if(i==="\\"){r+=n.slice(o,o+2),o+=2;continue}if(i==="'"){let s=n.indexOf("'",o+1);if(s<0)return null;r+="''",o=s+1;continue}if(i==='"'){let s=o+1;for(;s<n.length&&n[s]!=='"';)s+=n[s]==="\\"?2:1;if(s>=n.length)return null;let d=n.slice(o+1,s);r+=/\$\(|`/.test(d)?` ${d} `:'""',o=s+1;continue}r+=i,o++}return r}function _(t){return t.split(/\|\||&&|[;|&\n`()]|\$\(|<\(|>\(/).map(n=>n.trim().split(/\s+/).filter(Boolean)).filter(n=>n.length>0)}function D(t){let n=0;for(;n<t.length;){let r=t[n];if(ue.has(r))return[];if(de.has(r)||/^[A-Za-z_][A-Za-z0-9_]*=/.test(r)){n++;continue}break}return t.slice(n)}function I(t){let n=0;for(;n<t.length&&t[n].startsWith("-");)n+=/^-(C|c)$|^--(git-dir|work-tree|namespace)$/.test(t[n])?2:1;return{sub:t[n],rest:t.slice(n+1)}}function me(t){let[n,...r]=t,o=n.replace(/^.*\//,"");if(!ce.has(o))return`\`${o}\` is not a read-only command`;let i=s=>r.some(d=>s.test(d));switch(o){case"find":return i(/^-(exec|execdir|ok|okdir|delete|fprint|fprint0|fprintf|fls)$/)?"find with -exec/-delete":null;case"sort":return i(/^(-o|--output)/)?"sort -o writes a file":null;case"git":{if(i(/^(-c|--exec-path|--output)/))return"git option that can execute or write";let{sub:s,rest:d}=I(r);return!s||!pe.has(s)?`git ${s??""} is not read-only`.trim():s==="branch"&&d.some(u=>/^-(d|D|m|M|c|C|f|u)$|^--(delete|move|copy|force|set-upstream|unset-upstream|edit-description)/.test(u)||!u.startsWith("-"))?"git branch that changes branches":s==="tag"&&d.some(u=>!/^(-l|--list|-n\d*|--contains|--points-at|--sort=.*|--merged|--no-merged)$/.test(u))?"git tag that creates or deletes tags":s==="remote"&&d.length>0&&!/^(-v|--verbose|show|get-url)$/.test(d[0])?"git remote that changes remotes":s==="config"&&!d.some(u=>/^(--get|--get-all|--get-regexp|--list|-l)$/.test(u))?"git config write":s==="reflog"&&d.length>0&&!/^(show|-)/.test(d[0])?"git reflog that expires or deletes":null}case"gh":case"glab":{let[s,d]=r.filter(u=>!u.startsWith("-"));if(s==="search")return null;if(s==="api"){let u=r.findIndex(p=>/^(-X|--method)$/.test(p));return u>=0&&!/^GET$/i.test(r[u+1]??"")?`${o} api with a non-GET method`:i(/^-X(?!GET$)\w+|^--method=(?!GET$)/i)?`${o} api with a non-GET method`:i(/^(-f|-F|--field|--raw-field|--input)/)?`${o} api with a request body`:null}return!d||!fe.has(d)?`${o} ${s??""} ${d??""} is not read-only`.replace(/\s+/g," ").trim():null}case"curl":{let s=r.findIndex(d=>/^(-X|--request)$/.test(d));return s>=0&&!/^(GET|HEAD|OPTIONS)$/i.test(r[s+1]??"")||i(/^-X(?!GET$|HEAD$)\w+|^--request=(?!GET$|HEAD$)/i)?"curl with a non-GET method":i(/^(-d|--data|--data-\w+|--json|-F|--form|-T|--upload-file|-o|--output|-O|--remote-name|-K|--config)/)?"curl that sends a body or writes a file":null}default:return null}}function ge(t){let n=t.replace(/\d*>>?\s*\/dev\/null/g," ").replace(/&>>?\s*\/dev\/null/g," ").replace(/\d*>&\s*\d+/g," ");return/[>]/.test(n)}function be(t){let n=C(t);if(n===null)return c("report","shell","command too irregular to verify as read-only");if(ge(n))return c("report","shell","output redirection writes a file");for(let r of _(n)){let o=D(r);if(o.length===0)continue;let i=me(o);if(i)return c("report","shell",i)}return f}function he(t){if(re.has(t.tool))return c("report","write",`${t.tool} modifies files`);if(t.tool==="Bash")return be(t.command??"");if(ie.has(t.tool))return f;if(t.tool.startsWith("mcp__")){let n=y(t.tool),r=n.find(o=>le.has(o));return r?c("report","outward",`tool "${t.tool}" can change state (${r})`):n.some(o=>T.has(o))?f:c("report","outward",`tool "${t.tool}" is not recognisably read-only`)}return c("report","tool",`tool "${t.tool}" is not on the read-only list`)}function ve(t){let n=[];for(let o=0;o<t.length;o++){let i=t[o];if(we.test(i)){o++;continue}if(/^(--force.*|-d|--delete|--mirror|--all|--tags|--prune)$/.test(i)||/^-[a-zA-Z]*f/.test(i))return c("propose","push","force, delete, mirror and tag pushes are act-level actions");i.startsWith("-")||n.push(i)}let r=n.slice(1);if(r.length===0)return c("propose","push","name the feature branch explicitly: git push <remote> <branch>");for(let o of r){if(o.startsWith("+")||o.startsWith(":"))return c("propose","push",`refspec "${o}" force-pushes or deletes`);let i=(o.includes(":")?o.slice(o.indexOf(":")+1):o).replace(/^refs\/heads\//,"");if(Se.test(i))return c("propose","push",`pushing to "${i}" is an act-level action; push a feature branch and open a merge request`)}return null}function ke(t){for(let r of ye)if(r.re.test(t))return c("propose",r.id,r.reason);let n=C(t);if(n===null)return c("propose","shell","command too irregular to verify");for(let r of _(n)){let o=D(r);if(o.length===0)continue;let i=[$(o[0]),...o.slice(1)].join(" ");for(let s of xe)if(s.re.test(i))return c("propose",s.id,s.reason);if($(o[0])==="git"){let{sub:s,rest:d}=I(o.slice(1));if(s==="push"){let u=ve(d);if(u)return u}}}return f}function je(t){if(t.tool==="Bash")return ke(t.command??"");if(t.tool.startsWith("mcp__")){let n=y(t.tool).find(r=>E.has(r));if(n)return c("propose","outward",`tool "${t.tool}" performs an act-level action (${n})`);if($e(y(t.tool)))return c("propose","delegate",`tool "${t.tool}" hands work to another agent, which would run at its own full autonomy`)}return f}function $e(t){return t.includes("delegate")||t.includes("handoff")||t.includes("agent")&&t.some(n=>n==="send"||n==="ask"||n==="message"||n==="task")?!0:t.includes("task")&&!t.some(n=>T.has(n))}function st(t,n){return t==="report"?he(n):t==="propose"?je(n):f}function lt(t){return t==="report"?"[Autonomy: report] This routine runs read-only. Investigate and report; do not modify files, run mutating commands, or post anywhere. Your final answer is the deliverable. Blocked actions are enforced and logged; if something needs doing, describe it in the report instead.":t==="propose"?"[Autonomy: propose] You may edit files, commit, push a named feature branch, and open a merge request or draft. You may not merge, deploy, delete, force-push, push to protected branches, or operate hosts. These limits are enforced and logged; leave act-level steps as clear recommendations.":""}var A,f,c,re,ie,T,E,le,de,ue,$,ce,pe,fe,ye,xe,Se,we,R=m(()=>{"use strict";A=ae.enum(["report","propose","act"]);f={allowed:!0,ruleId:null,reason:null},c=(t,n,r)=>({allowed:!1,ruleId:`autonomy.${t}.${n}`,reason:r}),re=new Set(["Write","Edit","MultiEdit","NotebookEdit"]),ie=new Set(["Read","Glob","Grep","LS","NotebookRead","WebFetch","WebSearch","TodoWrite","TodoRead","Task","Agent","Skill","ToolSearch","BashOutput","KillShell","ExitPlanMode","EnterPlanMode","ListMcpResourcesTool","ReadMcpResourceTool"]);T=new Set(["get","list","search","read","view","fetch","query","find","show","describe","status","diff","inspect","lookup","count","stats","browse","whoami","download"]),E=new Set(["merge","delete","remove","destroy","drop","deploy","publish","release","approve","archive","revoke","purge","close","transfer","force","rollback","restart","erase","unprotect","truncate","wipe","kill","terminate","unpublish","promote"]),le=new Set([...E,"create","update","post","send","write","edit","add","set","comment","reply","push","run","execute","exec","trigger","upload","move","rename","cancel","retry","assign","label","react","invite","notify","schedule","start","stop","submit","save","patch","put","insert","upsert","apply","install","import","mark","toggle","enable","disable","open","commit","sync","reset","store","remember","forget","broadcast","message","call","dispatch","enqueue","resolve","unassign","lock","unlock","pin"]);de=new Set(["then","do","else","elif","if","while","until","!","{","}","time"]),ue=new Set(["done","fi","esac","for","case","select","in",";;"]);$=t=>t.replace(/^.*\//,""),ce=new Set(["ls","pwd","cd","cat","head","tail","wc","grep","egrep","fgrep","rg","fd","tree","stat","file","du","df","date","whoami","id","hostname","uname","which","type","sort","uniq","cut","tr","diff","cmp","comm","basename","dirname","realpath","readlink","jq","column","nl","seq","true","false","test","[","sleep","ps","uptime","echo","printf","base64","md5","md5sum","shasum","sha256sum","less","more","printenv","dig","nslookup","host","find","git","gh","glab","curl"]),pe=new Set(["status","log","diff","show","rev-parse","ls-files","ls-tree","blame","shortlog","describe","cat-file","grep","branch","tag","remote","config","reflog","rev-list","merge-base","name-rev","show-ref","for-each-ref","whatchanged"]),fe=new Set(["view","list","diff","status","checks","ls"]);ye=[{id:"merge",re:/merge_when_pipeline_succeeds|\bauto[_-]merge\b/i,reason:"auto-merging is an act-level action"},{id:"merge",re:/\b(curl|wget|http|gh\s+api|glab\s+api)\b[^\n]*\/merges?\b/i,reason:"calling a merge endpoint is an act-level action"},{id:"delete",re:/(?:^|\W)(drop|truncate)\s+(table|database|schema|index|collection)\b|(?:^|\W)delete\s+from\b|\bflushall\b|\bflushdb\b/i,reason:"destroying data is an act-level action"},{id:"delete",re:/(-X|--request)[\s=]*['"]?DELETE\b/i,reason:"HTTP DELETE is an act-level action"},{id:"delegate",re:/\b(curl|wget|http)\b[^\n]*(localhost|127\.0\.0\.1|\[::1\])[^\n]*\/(ask|task|send|chat|mesh|workflows?|crons?|reload|config)\b/i,reason:"calling the local daemon to dispatch work escapes this routine's limit"}],xe=[{id:"merge",re:/^(gh\s+pr\s+merge|glab\s+mr\s+merge)\b/i,reason:"merging is an act-level action"},{id:"delete",re:/^rm\s+(.*\s)?(-\w*[rR]\w*|--recursive)\b|^(shred|dropdb)\b|^find\b.*\s-delete\b/i,reason:"deleting is an act-level action"},{id:"delete",re:/^git\s+(clean\s+-\w*f|reset\s+--hard|branch\s+(-\w*[dD]\w*|--delete)|tag\s+(-d|--delete)|stash\s+(drop|clear)|remote\s+(remove|rm))\b/i,reason:"deleting is an act-level action"},{id:"delete",re:/^(gh|glab)\s+\S+\s+delete\b|^docker\s+(rm|rmi|volume\s+rm|system\s+prune)\b|^(kubectl\s+delete|aws\s+s3\s+(rm|rb)|gsutil\s+rm)\b|^doctl\s+.*\sdelete\b/i,reason:"deleting is an act-level action"},{id:"deploy",re:/^(kubectl\s+(apply|rollout|scale|set|patch|replace|create|edit)|helm\s+(install|upgrade|rollback|uninstall|delete)|terraform\s+(apply|destroy|import|taint)|pulumi\s+(up|destroy)|docker\s+push|netlify\s+deploy|fly(ctl)?\s+deploy|serverless\s+deploy|vercel\b.*--prod)\b/i,reason:"deploying is an act-level action"},{id:"deploy",re:/^((npm|pnpm|yarn|bun)(\s+run)?|make|just|task|rake)\s+(\S+:)?deploy\b|^((ba|z)?sh|node|python3?)\s+\S*deploy[^\s/]*$|^\S*\/deploy(\.\w+)?\b|^deploy(\.\w+)?\b/i,reason:"deploying is an act-level action"},{id:"deploy",re:/^((npm|pnpm|yarn|bun)\s+publish|cargo\s+publish|twine\s+upload|(gh|glab)\s+release\s+(create|upload|edit)|(npx\s+)?prisma\s+(migrate\s+(deploy|reset)|db\s+push))\b/i,reason:"publishing or migrating is an act-level action"},{id:"prod",re:/^(ssh|scp|sudo|doas|systemctl|launchctl|service|kill|pkill|killall|reboot|shutdown)\b|^rsync\b.*\s\S+:\S*/i,reason:"operating hosts and services is an act-level action"},{id:"delegate",re:/^(agentx|agentix)\s+(ask|send|task|exec|run|chat|mesh|cron|workflow|daemon|config)\b/i,reason:"handing work to another agent or reconfiguring the daemon escapes this routine's limit"}],Se=/^(main|master|trunk|develop|development|prod|production|staging|stable|release([/-].*)?|HEAD|@)$/i,we=/^(-o|--push-option|--repo|--receive-pack|--exec)$/});var Je={};U(Je,{INTEGRATION_KINDS:()=>Re,approvalsConfigSchema:()=>z,daemonConfigSchema:()=>B,expandEnvVars:()=>h,loadDaemonConfig:()=>Ve,validateWorkspaces:()=>Ye});import{z as e}from"zod";import{readFileSync as L,existsSync as g}from"fs";import{resolve as b}from"path";function Ae(t){let n=b(t,".env");if(!g(n))return;let r=L(n,"utf-8");for(let o of r.split(`
|
|
3
|
+
`),r="",o=0;for(;o<n.length;){let i=n[o];if(i==="\\"){r+=n.slice(o,o+2),o+=2;continue}if(i==="'"){let s=n.indexOf("'",o+1);if(s<0)return null;r+="''",o=s+1;continue}if(i==='"'){let s=o+1;for(;s<n.length&&n[s]!=='"';)s+=n[s]==="\\"?2:1;if(s>=n.length)return null;let d=n.slice(o+1,s);r+=/\$\(|`/.test(d)?` ${d} `:'""',o=s+1;continue}r+=i,o++}return r}function _(t){return t.split(/\|\||&&|[;|&\n`()]|\$\(|<\(|>\(/).map(n=>n.trim().split(/\s+/).filter(Boolean)).filter(n=>n.length>0)}function R(t){let n=0;for(;n<t.length;){let r=t[n];if(ue.has(r))return[];if(de.has(r)||/^[A-Za-z_][A-Za-z0-9_]*=/.test(r)){n++;continue}break}return t.slice(n)}function D(t){let n=0;for(;n<t.length&&t[n].startsWith("-");)n+=/^-(C|c)$|^--(git-dir|work-tree|namespace)$/.test(t[n])?2:1;return{sub:t[n],rest:t.slice(n+1)}}function me(t){let[n,...r]=t,o=n.replace(/^.*\//,"");if(!ce.has(o))return`\`${o}\` is not a read-only command`;let i=s=>r.some(d=>s.test(d));switch(o){case"find":return i(/^-(exec|execdir|ok|okdir|delete|fprint|fprint0|fprintf|fls)$/)?"find with -exec/-delete":null;case"sort":return i(/^(-o|--output)/)?"sort -o writes a file":null;case"git":{if(i(/^(-c|--exec-path|--output)/))return"git option that can execute or write";let{sub:s,rest:d}=D(r);return!s||!pe.has(s)?`git ${s??""} is not read-only`.trim():s==="branch"&&d.some(u=>/^-(d|D|m|M|c|C|f|u)$|^--(delete|move|copy|force|set-upstream|unset-upstream|edit-description)/.test(u)||!u.startsWith("-"))?"git branch that changes branches":s==="tag"&&d.some(u=>!/^(-l|--list|-n\d*|--contains|--points-at|--sort=.*|--merged|--no-merged)$/.test(u))?"git tag that creates or deletes tags":s==="remote"&&d.length>0&&!/^(-v|--verbose|show|get-url)$/.test(d[0])?"git remote that changes remotes":s==="config"&&!d.some(u=>/^(--get|--get-all|--get-regexp|--list|-l)$/.test(u))?"git config write":s==="reflog"&&d.length>0&&!/^(show|-)/.test(d[0])?"git reflog that expires or deletes":null}case"gh":case"glab":{let[s,d]=r.filter(u=>!u.startsWith("-"));if(s==="search")return null;if(s==="api"){let u=r.findIndex(p=>/^(-X|--method)$/.test(p));return u>=0&&!/^GET$/i.test(r[u+1]??"")?`${o} api with a non-GET method`:i(/^-X(?!GET$)\w+|^--method=(?!GET$)/i)?`${o} api with a non-GET method`:i(/^(-f|-F|--field|--raw-field|--input)/)?`${o} api with a request body`:null}return!d||!fe.has(d)?`${o} ${s??""} ${d??""} is not read-only`.replace(/\s+/g," ").trim():null}case"curl":{let s=r.findIndex(d=>/^(-X|--request)$/.test(d));return s>=0&&!/^(GET|HEAD|OPTIONS)$/i.test(r[s+1]??"")||i(/^-X(?!GET$|HEAD$)\w+|^--request=(?!GET$|HEAD$)/i)?"curl with a non-GET method":i(/^(-d|--data|--data-\w+|--json|-F|--form|-T|--upload-file|-o|--output|-O|--remote-name|-K|--config)/)?"curl that sends a body or writes a file":null}default:return null}}function ge(t){let n=t.replace(/\d*>>?\s*\/dev\/null/g," ").replace(/&>>?\s*\/dev\/null/g," ").replace(/\d*>&\s*\d+/g," ");return/[>]/.test(n)}function be(t){let n=C(t);if(n===null)return c("report","shell","command too irregular to verify as read-only");if(ge(n))return c("report","shell","output redirection writes a file");for(let r of _(n)){let o=R(r);if(o.length===0)continue;let i=me(o);if(i)return c("report","shell",i)}return f}function he(t){if(re.has(t.tool))return c("report","write",`${t.tool} modifies files`);if(t.tool==="Bash")return be(t.command??"");if(ie.has(t.tool))return f;if(t.tool.startsWith("mcp__")){let n=y(t.tool),r=n.find(o=>le.has(o));return r?c("report","outward",`tool "${t.tool}" can change state (${r})`):n.some(o=>T.has(o))?f:c("report","outward",`tool "${t.tool}" is not recognisably read-only`)}return c("report","tool",`tool "${t.tool}" is not on the read-only list`)}function ve(t){let n=[];for(let o=0;o<t.length;o++){let i=t[o];if(we.test(i)){o++;continue}if(/^(--force.*|-d|--delete|--mirror|--all|--tags|--prune)$/.test(i)||/^-[a-zA-Z]*f/.test(i))return c("propose","push","force, delete, mirror and tag pushes are act-level actions");i.startsWith("-")||n.push(i)}let r=n.slice(1);if(r.length===0)return c("propose","push","name the feature branch explicitly: git push <remote> <branch>");for(let o of r){if(o.startsWith("+")||o.startsWith(":"))return c("propose","push",`refspec "${o}" force-pushes or deletes`);let i=(o.includes(":")?o.slice(o.indexOf(":")+1):o).replace(/^refs\/heads\//,"");if(Se.test(i))return c("propose","push",`pushing to "${i}" is an act-level action; push a feature branch and open a merge request`)}return null}function ke(t){for(let r of ye)if(r.re.test(t))return c("propose",r.id,r.reason);let n=C(t);if(n===null)return c("propose","shell","command too irregular to verify");for(let r of _(n)){let o=R(r);if(o.length===0)continue;let i=[A(o[0]),...o.slice(1)].join(" ");for(let s of xe)if(s.re.test(i))return c("propose",s.id,s.reason);if(A(o[0])==="git"){let{sub:s,rest:d}=D(o.slice(1));if(s==="push"){let u=ve(d);if(u)return u}}}return f}function je(t){if(t.tool==="Bash")return ke(t.command??"");if(t.tool.startsWith("mcp__")){let n=y(t.tool).find(r=>E.has(r));if(n)return c("propose","outward",`tool "${t.tool}" performs an act-level action (${n})`);if(Ae(y(t.tool)))return c("propose","delegate",`tool "${t.tool}" hands work to another agent, which would run at its own full autonomy`)}return f}function Ae(t){return t.includes("delegate")||t.includes("handoff")||t.includes("agent")&&t.some(n=>n==="send"||n==="ask"||n==="message"||n==="task")?!0:t.includes("task")&&!t.some(n=>T.has(n))}function st(t,n){return t==="report"?he(n):t==="propose"?je(n):f}function lt(t){return t==="report"?"[Autonomy: report] This routine runs read-only. Investigate and report; do not modify files, run mutating commands, or post anywhere. Your final answer is the deliverable. Blocked actions are enforced and logged; if something needs doing, describe it in the report instead.":t==="propose"?"[Autonomy: propose] You may edit files, commit, push a named feature branch, and open a merge request or draft. You may not merge, deploy, delete, force-push, push to protected branches, or operate hosts. These limits are enforced and logged; leave act-level steps as clear recommendations.":""}var $,f,c,re,ie,T,E,le,de,ue,A,ce,pe,fe,ye,xe,Se,we,I=m(()=>{"use strict";$=ae.enum(["report","propose","act"]);f={allowed:!0,ruleId:null,reason:null},c=(t,n,r)=>({allowed:!1,ruleId:`autonomy.${t}.${n}`,reason:r}),re=new Set(["Write","Edit","MultiEdit","NotebookEdit"]),ie=new Set(["Read","Glob","Grep","LS","NotebookRead","WebFetch","WebSearch","TodoWrite","TodoRead","Task","Agent","Skill","ToolSearch","BashOutput","KillShell","ExitPlanMode","EnterPlanMode","ListMcpResourcesTool","ReadMcpResourceTool"]);T=new Set(["get","list","search","read","view","fetch","query","find","show","describe","status","diff","inspect","lookup","count","stats","browse","whoami","download"]),E=new Set(["merge","delete","remove","destroy","drop","deploy","publish","release","approve","archive","revoke","purge","close","transfer","force","rollback","restart","erase","unprotect","truncate","wipe","kill","terminate","unpublish","promote"]),le=new Set([...E,"create","update","post","send","write","edit","add","set","comment","reply","push","run","execute","exec","trigger","upload","move","rename","cancel","retry","assign","label","react","invite","notify","schedule","start","stop","submit","save","patch","put","insert","upsert","apply","install","import","mark","toggle","enable","disable","open","commit","sync","reset","store","remember","forget","broadcast","message","call","dispatch","enqueue","resolve","unassign","lock","unlock","pin"]);de=new Set(["then","do","else","elif","if","while","until","!","{","}","time"]),ue=new Set(["done","fi","esac","for","case","select","in",";;"]);A=t=>t.replace(/^.*\//,""),ce=new Set(["ls","pwd","cd","cat","head","tail","wc","grep","egrep","fgrep","rg","fd","tree","stat","file","du","df","date","whoami","id","hostname","uname","which","type","sort","uniq","cut","tr","diff","cmp","comm","basename","dirname","realpath","readlink","jq","column","nl","seq","true","false","test","[","sleep","ps","uptime","echo","printf","base64","md5","md5sum","shasum","sha256sum","less","more","printenv","dig","nslookup","host","find","git","gh","glab","curl"]),pe=new Set(["status","log","diff","show","rev-parse","ls-files","ls-tree","blame","shortlog","describe","cat-file","grep","branch","tag","remote","config","reflog","rev-list","merge-base","name-rev","show-ref","for-each-ref","whatchanged"]),fe=new Set(["view","list","diff","status","checks","ls"]);ye=[{id:"merge",re:/merge_when_pipeline_succeeds|\bauto[_-]merge\b/i,reason:"auto-merging is an act-level action"},{id:"merge",re:/\b(curl|wget|http|gh\s+api|glab\s+api)\b[^\n]*\/merges?\b/i,reason:"calling a merge endpoint is an act-level action"},{id:"delete",re:/(?:^|\W)(drop|truncate)\s+(table|database|schema|index|collection)\b|(?:^|\W)delete\s+from\b|\bflushall\b|\bflushdb\b/i,reason:"destroying data is an act-level action"},{id:"delete",re:/(-X|--request)[\s=]*['"]?DELETE\b/i,reason:"HTTP DELETE is an act-level action"},{id:"delegate",re:/\b(curl|wget|http)\b[^\n]*(localhost|127\.0\.0\.1|\[::1\])[^\n]*\/(ask|task|send|chat|mesh|workflows?|crons?|reload|config)\b/i,reason:"calling the local daemon to dispatch work escapes this routine's limit"}],xe=[{id:"merge",re:/^(gh\s+pr\s+merge|glab\s+mr\s+merge)\b/i,reason:"merging is an act-level action"},{id:"delete",re:/^rm\s+(.*\s)?(-\w*[rR]\w*|--recursive)\b|^(shred|dropdb)\b|^find\b.*\s-delete\b/i,reason:"deleting is an act-level action"},{id:"delete",re:/^git\s+(clean\s+-\w*f|reset\s+--hard|branch\s+(-\w*[dD]\w*|--delete)|tag\s+(-d|--delete)|stash\s+(drop|clear)|remote\s+(remove|rm))\b/i,reason:"deleting is an act-level action"},{id:"delete",re:/^(gh|glab)\s+\S+\s+delete\b|^docker\s+(rm|rmi|volume\s+rm|system\s+prune)\b|^(kubectl\s+delete|aws\s+s3\s+(rm|rb)|gsutil\s+rm)\b|^doctl\s+.*\sdelete\b/i,reason:"deleting is an act-level action"},{id:"deploy",re:/^(kubectl\s+(apply|rollout|scale|set|patch|replace|create|edit)|helm\s+(install|upgrade|rollback|uninstall|delete)|terraform\s+(apply|destroy|import|taint)|pulumi\s+(up|destroy)|docker\s+push|netlify\s+deploy|fly(ctl)?\s+deploy|serverless\s+deploy|vercel\b.*--prod)\b/i,reason:"deploying is an act-level action"},{id:"deploy",re:/^((npm|pnpm|yarn|bun)(\s+run)?|make|just|task|rake)\s+(\S+:)?deploy\b|^((ba|z)?sh|node|python3?)\s+\S*deploy[^\s/]*$|^\S*\/deploy(\.\w+)?\b|^deploy(\.\w+)?\b/i,reason:"deploying is an act-level action"},{id:"deploy",re:/^((npm|pnpm|yarn|bun)\s+publish|cargo\s+publish|twine\s+upload|(gh|glab)\s+release\s+(create|upload|edit)|(npx\s+)?prisma\s+(migrate\s+(deploy|reset)|db\s+push))\b/i,reason:"publishing or migrating is an act-level action"},{id:"prod",re:/^(ssh|scp|sudo|doas|systemctl|launchctl|service|kill|pkill|killall|reboot|shutdown)\b|^rsync\b.*\s\S+:\S*/i,reason:"operating hosts and services is an act-level action"},{id:"delegate",re:/^(agentx|agentix)\s+(ask|send|task|exec|run|chat|mesh|cron|workflow|daemon|config)\b/i,reason:"handing work to another agent or reconfiguring the daemon escapes this routine's limit"}],Se=/^(main|master|trunk|develop|development|prod|production|staging|stable|release([/-].*)?|HEAD|@)$/i,we=/^(-o|--push-option|--repo|--receive-pack|--exec)$/});var Je={};U(Je,{INTEGRATION_KINDS:()=>Ie,approvalsConfigSchema:()=>z,daemonConfigSchema:()=>B,expandEnvVars:()=>h,loadDaemonConfig:()=>Ve,validateWorkspaces:()=>Ye});import{z as e}from"zod";import{readFileSync as L,existsSync as g}from"fs";import{resolve as b}from"path";function $e(t){let n=b(t,".env");if(!g(n))return;let r=L(n,"utf-8");for(let o of r.split(`
|
|
4
4
|
`)){let i=o.trim();if(!i||i.startsWith("#"))continue;let s=i.indexOf("=");if(s===-1)continue;let d=i.slice(0,s).trim(),u=i.slice(s+1).trim();process.env[d]||(process.env[d]=u)}}function h(t){if(typeof t=="string")return t.replace(/\$\{(\w+)\}/g,(n,r)=>process.env[r]||"");if(Array.isArray(t))return t.map(h);if(t!==null&&typeof t=="object"){let n={};for(let[r,o]of Object.entries(t))n[r]=h(o);return n}return t}function Fe(t,n){let r=[],o=new Set;for(let i of t){let s=i.path.join("."),d=/^channels\.telegram\.accounts\.([^.]+)\.token$/.exec(s);if(d&&i.message.toLowerCase().includes("required")){let u=d[1],p=`tg:${u}`;if(o.has(p))continue;o.add(p),r.push(`Hint: Telegram account "${u}" is enabled but has no bot token.
|
|
5
5
|
Either:
|
|
6
6
|
A) Open ${n} and set channels.telegram.accounts.${u}.token to your bot token (or "\${TG_${u.toUpperCase()}_BOT_TOKEN}" + the matching .env entry).
|
|
7
|
-
B) If you don't need Telegram on this instance, remove the entire "telegram" block under "channels" (or set channels.telegram.enabled to false AND drop accounts.${u}).`)}}return r}function Ve(t){let n=t?[t]:[b(process.cwd(),"agentx.json"),b(process.cwd(),".agentx/config.json")]
|
|
7
|
+
B) If you don't need Telegram on this instance, remove the entire "telegram" block under "channels" (or set channels.telegram.enabled to false AND drop accounts.${u}).`)}}return r}function Ve(t){let n=t?[t]:[b(process.cwd(),"agentx.json"),b(process.cwd(),".agentx/config.json")];$e(process.cwd());let r,o;for(let u of n)if(g(u)){r=L(u,"utf-8"),o=u;break}if(!r||!o)throw new Error(`No config found. Create agentx.json or .agentx/config.json
|
|
8
8
|
Searched: ${n.join(", ")}`);let i;try{i=JSON.parse(r)}catch(u){throw new Error(`Invalid JSON in ${o}: ${u.message}`)}let s=h(i),d=B.safeParse(s);if(!d.success){let u=d.error.issues.map(x=>` ${x.path.join(".")}: ${x.message}`).join(`
|
|
9
9
|
`),p=Fe(d.error.issues,o),W=p.length?`
|
|
10
10
|
|
|
11
11
|
${p.join(`
|
|
12
12
|
|
|
13
13
|
`)}`:"";throw new Error(`Config validation failed (${o}):
|
|
14
|
-
${u}${W}`)}return d.data}function Ye(t){let n=[];for(let[r,o]of Object.entries(t.agents)){if(!g(o.workspace)){n.push(`Agent "${r}": workspace not found at ${o.workspace}`);continue}if(o.tier==="claude-code"){let d=b(o.workspace,".claude");g(d)||n.push(`Agent "${r}": no .claude/ directory in workspace ${o.workspace}. Claude Code native features (hooks, MCP, skills) won't be available.`)}let i=o.provider||"claude",s=t.providers[i];!["claude-code","codex-cli","opencode"].includes(o.tier)&&(!s||!s.apiKey)&&n.push(`Agent "${r}": provider "${i}" has no API key configured. Set providers.${i}.apiKey in config or use a CLI-backed tier ("claude-code", "codex-cli", or "opencode").`)}for(let[r,o]of Object.entries(t.crons))t.agents[o.agent]||n.push(`Cron "${r}": references unknown agent "${o.agent}"`);if(t.channels.telegram.enabled)for(let[r,o]of Object.entries(t.channels.telegram.accounts))t.agents[o.agentBinding]||n.push(`Telegram account "${r}": references unknown agent "${o.agentBinding}"`);return n}var Te,Ee,Ce,_e,De,Ie,Re,P,M,O,Le,Pe,Me,Oe,ze,Be,We,Ue,Ne,qe,Ge,Ze,He,Ke,z,B,Xe=m(()=>{w();j();R();Te=e.object({apiKey:e.string().optional(),defaultModel:e.string().optional(),baseUrl:e.string().optional(),thinking:e.boolean().optional()}),Ee=e.object({type:e.literal("stdio").optional(),command:e.string(),args:e.array(e.string()).default([]),env:e.record(e.string(),e.string()).optional()}),Ce=e.object({type:e.literal("http"),url:e.string().url(),headers:e.record(e.string(),e.string()).optional()}),_e=e.union([Ce,Ee]),De=e.object({tokenEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),privateAppTokenEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),apiKeyEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),refreshTokenEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),clientIdEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),clientSecretEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),auth:e.literal("keyring").optional(),sessionDir:e.string().optional()}).strict(),Ie=e.object({kind:e.string().min(1),label:e.string().min(1),credentials:De.default({}),metadata:e.record(e.string(),e.union([e.string(),e.number(),e.boolean()])).default({}),enabled:e.boolean().default(!0)}),Re=["telegram-bot","whatsapp","gitlab-user","github-user","gmail","hotmail","smtp","hubspot","salesforce","pipedrive","odoo","trello","linear","asana","jira","notion","stripe","sentry","vercel","twilio","custom"],P=e.enum(["system","elevenlabs"]),M=e.union([e.string(),e.record(e.string(),e.string())]),O=e.object({provider:P.optional(),system:M.optional(),elevenlabsVoiceId:e.string().optional(),gender:e.enum(["female","male","neutral"]).optional(),style:e.string().optional(),intro:e.string().optional(),narrate:e.enum(["off","on","all"]).optional()}),Le=e.object({name:e.string(),workspace:e.string(),tier:e.enum(["claude-code","codex-cli","opencode","sdk","orchestrator"]).default("claude-code"),provider:e.string().optional(),model:e.string().optional(),systemPrompt:e.string().optional(),mentions:e.array(e.string()).default([]),intents:e.array(e.string()).default([]),maxDelegationDepth:e.number().int().min(0).max(50).default(5),mcp:e.record(e.string(),_e).optional(),codegraph:e.boolean().default(!1),contextStrategy:e.enum(["layered","planner"]).optional(),contextReferences:e.boolean().default(!1),richMessages:e.boolean().default(!0),maxConcurrent:e.number().default(1),maxExecutionMinutes:e.number().int().min(1).max(240).default(20),preSpawnTimeoutSec:e.number().int().min(10).max(3600).default(300),permissionMode:e.string().default("default"),billing:e.enum(["subscription","api"]).default("subscription"),toolUseRequired:e.array(e.string()).default([]),gitlabAutoReply:e.boolean().optional(),persistentProcess:e.boolean().default(!1),queueMode:e.enum(["collect","followup","drop"]).default("collect"),heartbeat:e.object({enabled:e.boolean().default(!1),intervalMinutes:e.number().default(30),prompt:e.string().default("Check inbox, pending tasks, and system health. Report anything that needs attention."),channel:e.string().default("heartbeat")}).default({}),access:e.enum(["private","public"]).default("private"),admin:e.boolean().optional(),integrations:e.array(Ie).default([]),voice:O.optional(),presence:e.object({color:e.string().regex(/^#[0-9a-fA-F]{6}$/).optional(),initial:e.string().max(2).optional(),label:e.string().optional(),allowActions:e.boolean().optional()}).optional()}),Pe=e.object({token:e.string(),agentBinding:e.string(),allowFrom:e.array(e.string()).optional(),pollInbound:e.boolean().default(!0)}),Me=e.object({telegram:e.object({enabled:e.boolean().default(!1),accounts:e.record(e.string(),Pe).default({}),policy:e.object({dm:e.enum(["pair","block"]).default("pair"),group:e.enum(["mention-required","all"]).default("mention-required"),allowFrom:e.array(e.string()).optional()}).default({})}).default({}),whatsapp:e.object({enabled:e.boolean().default(!1),sessionDir:e.string().default(".agentx/whatsapp-sessions"),defaultAgent:e.string().optional(),allowFrom:e.array(e.string()).optional(),routes:e.array(e.object({contact:e.string().optional(),group:e.string().optional(),agent:e.string()})).default([]),ingest:e.object({enabled:e.boolean().default(!1),mode:e.enum(["metadata-only","messages"]).default("metadata-only"),allowContacts:e.array(e.string()).default([]),allowGroups:e.array(e.string()).default([]),denyContacts:e.array(e.string()).default([]),denyGroups:e.array(e.string()).default([]),messageCap:e.number().int().min(1).max(500).default(50),historyDays:e.number().int().min(1).max(365).default(30),contactRefreshDays:e.number().int().min(1).max(90).default(7),throttle:e.object({minMsBetweenCalls:e.number().int().min(100).default(1500),maxCallsPerMinute:e.number().int().min(1).default(20),maxChatsPerSweep:e.number().int().min(1).default(25)}).default({}),retentionDays:e.number().int().min(0).default(0)}).default({})}).default({}),gitlab:e.object({enabled:e.boolean().default(!1),webhookPort:e.number().default(18810),webhookSecret:e.string().optional(),host:e.string().default("https://gitlab.com"),token:e.string().optional(),autoReplyLegacy:e.boolean().default(!0),routes:e.array(e.object({project:e.string(),agent:e.string()})).default([]),agentMappings:e.array(e.object({agentId:e.string(),gitlabUsernames:e.array(e.string()).default([]),keywords:e.array(e.string()).default([]),token:e.string().optional(),node:e.string().optional()})).default([]),agentUsernamePrefixes:e.array(e.string().min(1)).default([])}).default({}),github:e.object({enabled:e.boolean().default(!1),autoReplyLegacy:e.boolean().default(!0),token:e.string().optional(),tokenFile:e.string().optional(),appId:e.number().optional(),clientId:e.string().optional(),privateKeyFile:e.string().optional(),webhookSecret:e.string().optional(),routes:e.array(e.object({repo:e.string(),agent:e.string()})).default([]),agentMappings:e.array(e.object({agentId:e.string(),githubUsernames:e.array(e.string()).default([]),token:e.string().optional(),tokenFile:e.string().optional(),node:e.string().optional()})).default([])}).default({}),ntfy:e.object({enabled:e.boolean().default(!1),server:e.string().default("https://ntfy.sh"),topic:e.string().optional(),token:e.string().optional(),defaultPriority:e.number().int().min(1).max(5).default(3),defaultTitle:e.string().optional()}).default({}),webrtc:e.object({enabled:e.boolean().default(!1),stunServers:e.array(e.string()).default(["stun:stun.l.google.com:19302"]),turnServers:e.array(e.object({urls:e.string(),username:e.string().optional(),credential:e.string().optional()})).default([]),allowedCallers:e.array(e.string()).default([]),ringNotify:e.array(e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()})).default([]),callUrlBase:e.string().optional(),bot:e.object({enabled:e.boolean().default(!1),defaultAgentId:e.string().optional(),whisperBackend:e.enum(["auto","mlx","openai"]).default("auto"),whisperModel:e.string().optional(),whisperLanguage:e.string().default("auto"),mlxBinary:e.string().optional(),transcriptChannel:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional(),maxCallMinutes:e.number().int().min(1).max(240).default(30)}).default({})}).default({})}),Oe=e.object({enabled:e.boolean().default(!0),schedule:e.string(),timezone:e.string().default("UTC"),agent:e.string(),prompt:e.string().default(""),command:e.string().optional(),timeout:e.number().default(600),model:e.string().optional(),maxOutputTokens:e.number().int().min(50).max(8e3).optional(),autonomy:A.optional(),onError:e.union([e.enum(["log","notify","disable"]),e.array(e.enum(["log","notify","disable"]))]).default("log").transform(t=>Array.isArray(t)?t:[t]),notify:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional(),fireToken:e.string().optional(),createdBy:e.string().optional(),approval:e.object({action:e.enum(["create","delete"]),requestedBy:e.string(),requestedAt:e.string()}).optional()}).refine(t=>!!(t.command?.trim()||t.prompt?.trim()),{message:"a cron needs either a prompt (dispatch an agent) or a command (run it directly)"}).refine(t=>!(t.command?.trim()&&t.autonomy&&t.autonomy!=="act"),{message:"autonomy applies to agent routines; a command cron runs no agent (remove autonomy or the command)"}),ze=e.object({name:e.string(),triggers:e.array(e.object({pattern:e.string(),channel:e.string().optional()})),allowedContacts:e.array(e.string()).optional(),agent:e.string(),prompt:e.string(),schedule:e.string().optional(),timezone:e.string().default("UTC"),notify:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional()}),Be=e.object({url:e.string(),name:e.string(),token:e.string().optional()}),We=e.object({name:e.string(),agent:e.string(),enabled:e.boolean().default(!0)}),Ue=e.object({enabled:e.boolean().default(!1),peers:e.array(Be).default([]),inboxes:e.array(We).default([]),discovery:e.enum(["static","mdns"]).default("static"),healthCheck:e.object({interval:e.number().default(60),timeout:e.number().default(10)}).default({})}),Ne=e.object({enabled:e.boolean().default(!1),baseDir:e.string().default(".agentx/graph"),draftAgent:e.string().optional(),reviewAgent:e.string().optional(),autoApproveStructure:e.enum(["strict","extend-leaves","any"]).default("extend-leaves"),autoApproveConfidence:e.number().min(0).max(1).default(1),classifierModel:e.string().default("claude-haiku-4-5-20251001"),retrievalWeights:e.object({graph:e.number().min(0).default(.6),bm25:e.number().min(0).default(.4)}).default({})}).default({}),qe=e.object({mode:e.enum(["off","shadow","active"]).default("off"),backend:e.string().optional(),model:e.string().optional(),timeoutMs:e.number().int().min(100).default(1e4),temperature:e.number().min(.01).default(1),explore:e.number().min(0).max(1).default(.15),holdout:e.number().min(0).max(1).optional()}).default({}),Ge=e.object({enabled:e.boolean().default(!1),dbPath:e.string().default(".agentx/decisions/decisions.sqlite"),redactState:e.boolean().default(!1),keepStateRows:e.number().int().min(0).default(2e3),defaultBackend:e.string().default("local"),backends:e.object({local:e.object({provider:e.string().default("claude-code"),model:e.string().default("claude-haiku-4-5-20251001"),structureMode:e.enum(["auto","tool","text"]).default("auto"),normalizeProbabilities:e.boolean().default(!0),nRetryMalformedStructure:e.number().int().min(0).max(3).default(1),maxStateChars:e.number().int().min(500).default(24e3)}).default({}),simpleJev:e.object({baseUrl:e.string().default("http://127.0.0.1:8000/v1"),model:e.string().optional(),apiKeyEnv:e.string().optional(),timeoutMs:e.number().int().min(100).default(3e4),maxStateChars:e.number().int().min(500).default(6e3),maxChoiceOptions:e.number().int().min(2).max(255).default(50)}).default({}),jev:e.object({baseUrl:e.string().default("https://openrouter.ai/api/alpha"),path:e.string().default("/decisions"),model:e.string().default("jev-latest"),apiKeyEnv:e.string().default("OPENROUTER_API_KEY"),timeoutMs:e.number().int().min(100).default(3e4),maxStateChars:e.number().int().min(500).default(9e4),maxChoiceOptions:e.number().int().min(2).max(255).default(255)}).default({}),typesafe:e.object({baseUrl:e.string().default("https://api.typesafe.ai/v1"),path:e.string().default("/systemone"),model:e.string().default("jev-latest"),apiKeyEnv:e.string().default("TYPESAFE_API_KEY"),timeoutMs:e.number().int().min(100).default(3e4),maxStateChars:e.number().int().min(500).default(9e4),maxChoiceOptions:e.number().int().min(2).max(255).default(255)}).default({})}).default({}),seats:e.record(e.string(),qe).default({}),routing:e.object({cheapModel:e.string().optional(),cheapModels:e.object({"claude-code":e.string().optional(),"codex-cli":e.string().optional()}).optional()}).default({})}).default({}),Ze=e.object({longTaskThreshold:e.number().default(30),destination:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional(),on:e.object({taskComplete:e.boolean().default(!0),taskError:e.boolean().default(!0),taskQueued:e.boolean().default(!1)}).default({}),local:e.object({banner:e.boolean().default(!0),sound:e.boolean().default(!0),soundName:e.string().regex(/^[\w -]+$/).default("Glass"),volume:e.number().min(0).max(1).default(.4),icon:e.string().optional()}).default({})}).default({}),He=e.object({x:e.number(),y:e.number(),width:e.number().positive(),height:e.number().positive()}),Ke=e.object({maxPixels:e.number().int().positive().default(12e5),timeoutMs:e.number().int().positive().default(5e3),intervalMs:e.number().int().positive().default(100),changeThreshold:e.number().min(0).max(1).default(.015),stableMs:e.number().int().nonnegative().default(400),regions:e.record(e.string().regex(/^[a-z][\w-]*$/),He).default({}),buffer:e.object({enabled:e.boolean().default(!1),seconds:e.number().positive().max(120).default(10),fps:e.number().positive().max(10).default(2),region:e.string().default("screen"),maxPixels:e.number().int().positive().default(3e5)}).default({})}).default({}),z=e.object({defaultExpiryDays:e.number().positive().max(365).default(3),maxExpiryDays:e.number().positive().max(365).default(30),laterHours:e.number().positive().max(24*30).default(24),notifyAgent:e.boolean().default(!0),digest:e.object({enabled:e.boolean().default(!0),time:e.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"use HH:MM, 24-hour").default("09:00"),timezone:e.string().refine(t=>{try{return new Intl.DateTimeFormat("en-US",{timeZone:t}),!0}catch{return!1}},"unknown timezone").optional(),destination:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional()}).default({})}).default({}),B=e.object({node:e.object({id:e.string(),name:e.string(),bind:e.string().default("127.0.0.1:18800"),defaultAgent:e.string().optional()}),providers:e.record(e.string(),Te).default({}),agents:e.record(e.string(),Le).default({}),channels:Me.default({}),crons:e.record(e.string(),Oe).default({}),services:e.record(e.string(),ze).default({}),notifications:Ze,approvals:z,resume:e.object({enabled:e.boolean().default(!0),maxAgeMinutes:e.number().int().positive().default(30),maxAttempts:e.number().int().min(0).default(1),reportOnlyChannels:e.array(e.string()).default([]),directChannels:e.array(e.string()).default([]),crashLoop:e.object({restarts:e.number().int().positive().default(3),windowMinutes:e.number().positive().default(10)}).default({})}).default({}),events:e.object({ringSize:e.number().int().min(1).max(1e5).default(1e3)}).default({}),screen:Ke,mesh:Ue.default({}),meshVoices:e.record(e.string(),O.extend({name:e.string().optional()})).default({}),voice:e.object({provider:P.default("system"),fallback:e.enum(["system","none"]).default("system"),system:M.optional(),locale:e.string().default("en"),listener:e.string().optional()}).default({}),business:S.optional(),boards:v,dashboard:k,graph:Ne,decisions:Ge,workflows:e.object({enabled:e.boolean().default(!1),dir:e.string().default(".agentx/workflows"),n8n:e.object({baseUrl:e.string().default(""),apiKey:e.string().default("")}).default({baseUrl:"",apiKey:""}),matching:e.object({enabled:e.boolean().default(!1),mode:e.enum(["suggest","auto"]).default("suggest"),autoRunThreshold:e.number().min(0).max(1).default(.85),suggestThreshold:e.number().min(0).max(1).default(.65)}).default({}),editor:e.enum(["disabled","readonly","edit"]).default("edit")}).default({}),procedures:e.object({enabled:e.boolean().default(!0),dir:e.string().default(".agentx/procedures"),extraction:e.object({enabled:e.boolean().default(!1),onTaskCompletion:e.boolean().default(!1),minOccurrences:e.number().int().min(2).default(3),sinceDays:e.number().int().min(1).default(7),maxClusters:e.number().int().min(1).default(5),via:e.string().optional()}).default({}),injection:e.object({enabled:e.boolean().default(!0),maxProcedures:e.number().int().min(1).default(2),minScore:e.number().min(0).max(1).default(.5)}).default({})}).default({}),webhooks:e.array(e.object({id:e.string().regex(/^[a-z0-9][a-z0-9_-]*$/,"webhook id must be lowercase slug"),source:e.string().min(1),agentId:e.string(),secretEnv:e.string().optional(),description:e.string().optional(),enabled:e.boolean().default(!0),node:e.string().optional(),triggers:e.record(e.string(),e.string()).optional(),defaultWorkflow:e.string().optional()})).default([]),session:e.object({staleMinutes:e.number().int().min(1).max(1440).default(720),maxTurnsPerSession:e.number().int().min(2).max(200).default(40),tierTwoThresholdTokens:e.number().int().min(5e4).max(2e5).default(18e4),contextStrategy:e.enum(["layered","planner"]).default("layered"),maxClaudeCodeDispatchesPerHour:e.number().int().min(1).max(1e4).default(80),maxClaudeCodeDispatchesPer5h:e.number().int().min(1).max(5e4).default(180),continuityStateTurns:e.number().int().min(0).max(5).default(0)}).default({}),plugins:e.array(e.string()).default([]),processPool:e.object({maxIdleSeconds:e.number().int().min(5).max(86400).default(30),maxAgeSeconds:e.number().int().min(60).max(86400).default(2700),sweepIntervalSeconds:e.number().int().min(1).max(300).default(5)}).default({})})});export{nt as a,ot as b,j as c,A as d,it as e,st as f,lt as g,R as h,Re as i,z as j,B as k,h as l,Ve as m,Ye as n,Je as o,Xe as p};
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
14
|
+
${u}${W}`)}return d.data}function Ye(t){let n=[];for(let[r,o]of Object.entries(t.agents)){if(!g(o.workspace)){n.push(`Agent "${r}": workspace not found at ${o.workspace}`);continue}if(o.tier==="claude-code"){let d=b(o.workspace,".claude");g(d)||n.push(`Agent "${r}": no .claude/ directory in workspace ${o.workspace}. Claude Code native features (hooks, MCP, skills) won't be available.`)}let i=o.provider||"claude",s=t.providers[i];!["claude-code","codex-cli","opencode"].includes(o.tier)&&(!s||!s.apiKey)&&n.push(`Agent "${r}": provider "${i}" has no API key configured. Set providers.${i}.apiKey in config or use a CLI-backed tier ("claude-code", "codex-cli", or "opencode").`)}for(let[r,o]of Object.entries(t.crons))t.agents[o.agent]||n.push(`Cron "${r}": references unknown agent "${o.agent}"`);if(t.channels.telegram.enabled)for(let[r,o]of Object.entries(t.channels.telegram.accounts))t.agents[o.agentBinding]||n.push(`Telegram account "${r}": references unknown agent "${o.agentBinding}"`);return n}var Te,Ee,Ce,_e,Re,De,Ie,P,M,O,Le,Pe,Me,Oe,ze,Be,We,Ue,Ne,qe,He,Ge,Ze,Ke,z,B,Xe=m(()=>{w();j();I();Te=e.object({apiKey:e.string().optional(),defaultModel:e.string().optional(),baseUrl:e.string().optional(),thinking:e.boolean().optional()}),Ee=e.object({type:e.literal("stdio").optional(),command:e.string(),args:e.array(e.string()).default([]),env:e.record(e.string(),e.string()).optional()}),Ce=e.object({type:e.literal("http"),url:e.string().url(),headers:e.record(e.string(),e.string()).optional()}),_e=e.union([Ce,Ee]),Re=e.object({tokenEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),privateAppTokenEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),apiKeyEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),refreshTokenEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),clientIdEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),clientSecretEnv:e.string().regex(/^[A-Z][A-Z0-9_]*$/).optional(),auth:e.literal("keyring").optional(),sessionDir:e.string().optional()}).strict(),De=e.object({kind:e.string().min(1),label:e.string().min(1),credentials:Re.default({}),metadata:e.record(e.string(),e.union([e.string(),e.number(),e.boolean()])).default({}),enabled:e.boolean().default(!0)}),Ie=["telegram-bot","whatsapp","gitlab-user","github-user","gmail","hotmail","smtp","hubspot","salesforce","pipedrive","odoo","trello","linear","asana","jira","notion","stripe","sentry","vercel","twilio","custom"],P=e.enum(["system","elevenlabs"]),M=e.union([e.string(),e.record(e.string(),e.string())]),O=e.object({provider:P.optional(),system:M.optional(),elevenlabsVoiceId:e.string().optional(),gender:e.enum(["female","male","neutral"]).optional(),style:e.string().optional(),intro:e.string().optional(),narrate:e.enum(["off","on","all"]).optional()}),Le=e.object({name:e.string(),workspace:e.string(),tier:e.enum(["claude-code","codex-cli","opencode","sdk","orchestrator"]).default("claude-code"),provider:e.string().optional(),model:e.string().optional(),systemPrompt:e.string().optional(),mentions:e.array(e.string()).default([]),intents:e.array(e.string()).default([]),maxDelegationDepth:e.number().int().min(0).max(50).default(5),mcp:e.record(e.string(),_e).optional(),codegraph:e.boolean().default(!1),contextStrategy:e.enum(["layered","planner"]).optional(),contextReferences:e.boolean().default(!1),richMessages:e.boolean().default(!0),maxConcurrent:e.number().default(1),maxExecutionMinutes:e.number().int().min(1).max(240).default(20),preSpawnTimeoutSec:e.number().int().min(10).max(3600).default(300),permissionMode:e.string().default("default"),billing:e.enum(["subscription","api"]).default("subscription"),toolUseRequired:e.array(e.string()).default([]),gitlabAutoReply:e.boolean().optional(),persistentProcess:e.boolean().default(!1),queueMode:e.enum(["collect","followup","drop"]).default("collect"),heartbeat:e.object({enabled:e.boolean().default(!1),intervalMinutes:e.number().default(30),prompt:e.string().default("Check inbox, pending tasks, and system health. Report anything that needs attention."),channel:e.string().default("heartbeat")}).default({}),access:e.enum(["private","public"]).default("private"),admin:e.boolean().optional(),integrations:e.array(De).default([]),voice:O.optional(),presence:e.object({color:e.string().regex(/^#[0-9a-fA-F]{6}$/).optional(),initial:e.string().max(2).optional(),label:e.string().optional(),allowActions:e.boolean().optional()}).optional()}),Pe=e.object({token:e.string(),agentBinding:e.string(),allowFrom:e.array(e.string()).optional(),pollInbound:e.boolean().default(!0)}),Me=e.object({telegram:e.object({enabled:e.boolean().default(!1),accounts:e.record(e.string(),Pe).default({}),policy:e.object({dm:e.enum(["pair","block"]).default("pair"),group:e.enum(["mention-required","all"]).default("mention-required"),allowFrom:e.array(e.string()).optional()}).default({})}).default({}),whatsapp:e.object({enabled:e.boolean().default(!1),sessionDir:e.string().default(".agentx/whatsapp-sessions"),defaultAgent:e.string().optional(),allowFrom:e.array(e.string()).optional(),routes:e.array(e.object({contact:e.string().optional(),group:e.string().optional(),agent:e.string()})).default([]),ingest:e.object({enabled:e.boolean().default(!1),mode:e.enum(["metadata-only","messages"]).default("metadata-only"),allowContacts:e.array(e.string()).default([]),allowGroups:e.array(e.string()).default([]),denyContacts:e.array(e.string()).default([]),denyGroups:e.array(e.string()).default([]),messageCap:e.number().int().min(1).max(500).default(50),historyDays:e.number().int().min(1).max(365).default(30),contactRefreshDays:e.number().int().min(1).max(90).default(7),throttle:e.object({minMsBetweenCalls:e.number().int().min(100).default(1500),maxCallsPerMinute:e.number().int().min(1).default(20),maxChatsPerSweep:e.number().int().min(1).default(25)}).default({}),retentionDays:e.number().int().min(0).default(0)}).default({})}).default({}),gitlab:e.object({enabled:e.boolean().default(!1),webhookPort:e.number().default(18810),webhookSecret:e.string().optional(),host:e.string().default("https://gitlab.com"),token:e.string().optional(),autoReplyLegacy:e.boolean().default(!0),routes:e.array(e.object({project:e.string(),agent:e.string()})).default([]),agentMappings:e.array(e.object({agentId:e.string(),gitlabUsernames:e.array(e.string()).default([]),keywords:e.array(e.string()).default([]),token:e.string().optional(),node:e.string().optional()})).default([]),agentUsernamePrefixes:e.array(e.string().min(1)).default([])}).default({}),github:e.object({enabled:e.boolean().default(!1),autoReplyLegacy:e.boolean().default(!0),token:e.string().optional(),tokenFile:e.string().optional(),appId:e.number().optional(),clientId:e.string().optional(),privateKeyFile:e.string().optional(),webhookSecret:e.string().optional(),routes:e.array(e.object({repo:e.string(),agent:e.string()})).default([]),agentMappings:e.array(e.object({agentId:e.string(),githubUsernames:e.array(e.string()).default([]),token:e.string().optional(),tokenFile:e.string().optional(),node:e.string().optional()})).default([])}).default({}),ntfy:e.object({enabled:e.boolean().default(!1),server:e.string().default("https://ntfy.sh"),topic:e.string().optional(),token:e.string().optional(),defaultPriority:e.number().int().min(1).max(5).default(3),defaultTitle:e.string().optional()}).default({}),push:e.object({enabled:e.boolean().default(!1),keysFile:e.string().default(".agentx/push-keys.json"),subject:e.string().regex(/^(mailto:|https:\/\/)/,"must start with mailto: or https://").optional(),relayTo:e.string().optional(),ttlSeconds:e.number().int().min(0).max(2419200).default(86400),keepRecent:e.number().int().min(0).max(1e3).default(50),allowedHosts:e.array(e.string().min(1)).default(["fcm.googleapis.com","push.services.mozilla.com","push.apple.com","notify.windows.com"])}).default({}),webrtc:e.object({enabled:e.boolean().default(!1),stunServers:e.array(e.string()).default(["stun:stun.l.google.com:19302"]),turnServers:e.array(e.object({urls:e.string(),username:e.string().optional(),credential:e.string().optional()})).default([]),allowedCallers:e.array(e.string()).default([]),ringNotify:e.array(e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()})).default([]),callUrlBase:e.string().optional(),bot:e.object({enabled:e.boolean().default(!1),defaultAgentId:e.string().optional(),whisperBackend:e.enum(["auto","mlx","openai"]).default("auto"),whisperModel:e.string().optional(),whisperLanguage:e.string().default("auto"),mlxBinary:e.string().optional(),transcriptChannel:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional(),maxCallMinutes:e.number().int().min(1).max(240).default(30)}).default({})}).default({})}),Oe=e.object({enabled:e.boolean().default(!0),schedule:e.string(),timezone:e.string().default("UTC"),agent:e.string(),prompt:e.string().default(""),command:e.string().optional(),timeout:e.number().default(600),model:e.string().optional(),maxOutputTokens:e.number().int().min(50).max(8e3).optional(),autonomy:$.optional(),onError:e.union([e.enum(["log","notify","disable"]),e.array(e.enum(["log","notify","disable"]))]).default("log").transform(t=>Array.isArray(t)?t:[t]),notify:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional(),fireToken:e.string().optional(),createdBy:e.string().optional(),approval:e.object({action:e.enum(["create","delete"]),requestedBy:e.string(),requestedAt:e.string()}).optional()}).refine(t=>!!(t.command?.trim()||t.prompt?.trim()),{message:"a cron needs either a prompt (dispatch an agent) or a command (run it directly)"}).refine(t=>!(t.command?.trim()&&t.autonomy&&t.autonomy!=="act"),{message:"autonomy applies to agent routines; a command cron runs no agent (remove autonomy or the command)"}),ze=e.object({name:e.string(),triggers:e.array(e.object({pattern:e.string(),channel:e.string().optional()})),allowedContacts:e.array(e.string()).optional(),agent:e.string(),prompt:e.string(),schedule:e.string().optional(),timezone:e.string().default("UTC"),notify:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional()}),Be=e.object({url:e.string(),name:e.string(),token:e.string().optional()}),We=e.object({name:e.string(),agent:e.string(),enabled:e.boolean().default(!0)}),Ue=e.object({enabled:e.boolean().default(!1),peers:e.array(Be).default([]),inboxes:e.array(We).default([]),discovery:e.enum(["static","mdns"]).default("static"),healthCheck:e.object({interval:e.number().default(60),timeout:e.number().default(10)}).default({})}),Ne=e.object({enabled:e.boolean().default(!1),baseDir:e.string().default(".agentx/graph"),draftAgent:e.string().optional(),reviewAgent:e.string().optional(),autoApproveStructure:e.enum(["strict","extend-leaves","any"]).default("extend-leaves"),autoApproveConfidence:e.number().min(0).max(1).default(1),classifierModel:e.string().default("claude-haiku-4-5-20251001"),retrievalWeights:e.object({graph:e.number().min(0).default(.6),bm25:e.number().min(0).default(.4)}).default({})}).default({}),qe=e.object({mode:e.enum(["off","shadow","active"]).default("off"),backend:e.string().optional(),model:e.string().optional(),timeoutMs:e.number().int().min(100).default(1e4),temperature:e.number().min(.01).default(1),explore:e.number().min(0).max(1).default(.15),holdout:e.number().min(0).max(1).optional()}).default({}),He=e.object({enabled:e.boolean().default(!1),dbPath:e.string().default(".agentx/decisions/decisions.sqlite"),redactState:e.boolean().default(!1),keepStateRows:e.number().int().min(0).default(2e3),defaultBackend:e.string().default("local"),backends:e.object({local:e.object({provider:e.string().default("claude-code"),model:e.string().default("claude-haiku-4-5-20251001"),structureMode:e.enum(["auto","tool","text"]).default("auto"),normalizeProbabilities:e.boolean().default(!0),nRetryMalformedStructure:e.number().int().min(0).max(3).default(1),maxStateChars:e.number().int().min(500).default(24e3)}).default({}),simpleJev:e.object({baseUrl:e.string().default("http://127.0.0.1:8000/v1"),model:e.string().optional(),apiKeyEnv:e.string().optional(),timeoutMs:e.number().int().min(100).default(3e4),maxStateChars:e.number().int().min(500).default(6e3),maxChoiceOptions:e.number().int().min(2).max(255).default(50)}).default({}),jev:e.object({baseUrl:e.string().default("https://openrouter.ai/api/alpha"),path:e.string().default("/decisions"),model:e.string().default("jev-latest"),apiKeyEnv:e.string().default("OPENROUTER_API_KEY"),timeoutMs:e.number().int().min(100).default(3e4),maxStateChars:e.number().int().min(500).default(9e4),maxChoiceOptions:e.number().int().min(2).max(255).default(255)}).default({}),typesafe:e.object({baseUrl:e.string().default("https://api.typesafe.ai/v1"),path:e.string().default("/systemone"),model:e.string().default("jev-latest"),apiKeyEnv:e.string().default("TYPESAFE_API_KEY"),timeoutMs:e.number().int().min(100).default(3e4),maxStateChars:e.number().int().min(500).default(9e4),maxChoiceOptions:e.number().int().min(2).max(255).default(255)}).default({})}).default({}),seats:e.record(e.string(),qe).default({}),routing:e.object({cheapModel:e.string().optional(),cheapModels:e.object({"claude-code":e.string().optional(),"codex-cli":e.string().optional()}).optional()}).default({})}).default({}),Ge=e.object({longTaskThreshold:e.number().default(30),destination:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional(),channel:e.string().optional(),on:e.object({taskComplete:e.boolean().default(!0),taskError:e.boolean().default(!0),taskQueued:e.boolean().default(!1)}).default({}),local:e.object({banner:e.boolean().default(!0),sound:e.boolean().default(!0),soundName:e.string().regex(/^[\w -]+$/).default("Glass"),volume:e.number().min(0).max(1).default(.4),icon:e.string().optional()}).default({})}).default({}),Ze=e.object({x:e.number(),y:e.number(),width:e.number().positive(),height:e.number().positive()}),Ke=e.object({maxPixels:e.number().int().positive().default(12e5),timeoutMs:e.number().int().positive().default(5e3),intervalMs:e.number().int().positive().default(100),changeThreshold:e.number().min(0).max(1).default(.015),stableMs:e.number().int().nonnegative().default(400),regions:e.record(e.string().regex(/^[a-z][\w-]*$/),Ze).default({}),buffer:e.object({enabled:e.boolean().default(!1),seconds:e.number().positive().max(120).default(10),fps:e.number().positive().max(10).default(2),region:e.string().default("screen"),maxPixels:e.number().int().positive().default(3e5)}).default({})}).default({}),z=e.object({defaultExpiryDays:e.number().positive().max(365).default(3),maxExpiryDays:e.number().positive().max(365).default(30),laterHours:e.number().positive().max(24*30).default(24),notifyAgent:e.boolean().default(!0),digest:e.object({enabled:e.boolean().default(!0),time:e.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"use HH:MM, 24-hour").default("09:00"),timezone:e.string().refine(t=>{try{return new Intl.DateTimeFormat("en-US",{timeZone:t}),!0}catch{return!1}},"unknown timezone").optional(),destination:e.object({channel:e.string(),chatId:e.string(),accountId:e.string().optional()}).optional()}).default({})}).default({}),B=e.object({node:e.object({id:e.string(),name:e.string(),bind:e.string().default("127.0.0.1:18800"),defaultAgent:e.string().optional()}),providers:e.record(e.string(),Te).default({}),agents:e.record(e.string(),Le).default({}),channels:Me.default({}),crons:e.record(e.string(),Oe).default({}),services:e.record(e.string(),ze).default({}),notifications:Ge,approvals:z,resume:e.object({enabled:e.boolean().default(!0),maxAgeMinutes:e.number().int().positive().default(30),maxAttempts:e.number().int().min(0).default(1),reportOnlyChannels:e.array(e.string()).default([]),directChannels:e.array(e.string()).default([]),crashLoop:e.object({restarts:e.number().int().positive().default(3),windowMinutes:e.number().positive().default(10)}).default({})}).default({}),reminders:e.object({enabled:e.boolean().default(!1),lists:e.array(e.string().min(1)).default(["AgentX"]),pollSeconds:e.number().int().min(15).default(60),lookbackHours:e.number().positive().default(24),command:e.string().min(1).default("remindctl")}).default({}),events:e.object({ringSize:e.number().int().min(1).max(1e5).default(1e3)}).default({}),screen:Ke,mesh:Ue.default({}),meshVoices:e.record(e.string(),O.extend({name:e.string().optional()})).default({}),voice:e.object({provider:P.default("system"),fallback:e.enum(["system","none"]).default("system"),system:M.optional(),locale:e.string().default("en"),listener:e.string().optional()}).default({}),business:S.optional(),boards:v,dashboard:k,graph:Ne,decisions:He,workflows:e.object({enabled:e.boolean().default(!1),dir:e.string().default(".agentx/workflows"),n8n:e.object({baseUrl:e.string().default(""),apiKey:e.string().default("")}).default({baseUrl:"",apiKey:""}),matching:e.object({enabled:e.boolean().default(!1),mode:e.enum(["suggest","auto"]).default("suggest"),autoRunThreshold:e.number().min(0).max(1).default(.85),suggestThreshold:e.number().min(0).max(1).default(.65)}).default({}),editor:e.enum(["disabled","readonly","edit"]).default("edit")}).default({}),procedures:e.object({enabled:e.boolean().default(!0),dir:e.string().default(".agentx/procedures"),extraction:e.object({enabled:e.boolean().default(!1),onTaskCompletion:e.boolean().default(!1),minOccurrences:e.number().int().min(2).default(3),sinceDays:e.number().int().min(1).default(7),maxClusters:e.number().int().min(1).default(5),via:e.string().optional()}).default({}),injection:e.object({enabled:e.boolean().default(!0),maxProcedures:e.number().int().min(1).default(2),minScore:e.number().min(0).max(1).default(.5)}).default({})}).default({}),webhooks:e.array(e.object({id:e.string().regex(/^[a-z0-9][a-z0-9_-]*$/,"webhook id must be lowercase slug"),source:e.string().min(1),agentId:e.string(),secretEnv:e.string().optional(),description:e.string().optional(),enabled:e.boolean().default(!0),node:e.string().optional(),triggers:e.record(e.string(),e.string()).optional(),defaultWorkflow:e.string().optional()})).default([]),session:e.object({staleMinutes:e.number().int().min(1).max(1440).default(720),maxTurnsPerSession:e.number().int().min(2).max(200).default(40),tierTwoThresholdTokens:e.number().int().min(5e4).max(2e5).default(18e4),contextStrategy:e.enum(["layered","planner"]).default("layered"),maxClaudeCodeDispatchesPerHour:e.number().int().min(1).max(1e4).default(80),maxClaudeCodeDispatchesPer5h:e.number().int().min(1).max(5e4).default(180),continuityStateTurns:e.number().int().min(0).max(5).default(0)}).default({}),plugins:e.array(e.string()).default([]),processPool:e.object({maxIdleSeconds:e.number().int().min(5).max(86400).default(30),maxAgeSeconds:e.number().int().min(60).max(86400).default(2700),sweepIntervalSeconds:e.number().int().min(1).max(300).default(5)}).default({})})});export{nt as a,ot as b,j as c,$ as d,it as e,st as f,lt as g,I as h,Ie as i,z as j,B as k,h as l,Ve as m,Ye as n,Je as o,Xe as p};
|
|
15
|
+
//# sourceMappingURL=chunk-4FFWNPFX.js.map
|