From 43d8ff27d52e7b7384c9cfa4c235b4fb941f3a49 Mon Sep 17 00:00:00 2001 From: YairEtzion Date: Mon, 6 Apr 2026 16:49:15 +0300 Subject: [PATCH] community: add GitHub community files and social preview SECURITY.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, issue/PR templates, and social preview image for public launch readiness. --- .github/ISSUE_TEMPLATE/bug_report.yml | 64 ++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 ++ .github/ISSUE_TEMPLATE/feature_request.yml | 36 ++++++++ .github/PULL_REQUEST_TEMPLATE.md | 19 ++++ .github/social-preview.png | Bin 0 -> 73935 bytes CODE_OF_CONDUCT.md | 31 +++++++ CONTRIBUTING.md | 96 +++++++++++++++++++++ SECURITY.md | 54 ++++++++++++ 8 files changed, 308 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/social-preview.png create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 SECURITY.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..5f23a1d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,64 @@ +name: Bug Report +description: Report a bug in amesh +labels: ["bug"] +body: + - type: input + id: version + attributes: + label: amesh version + description: "Run `amesh --version` or check your package.json" + placeholder: "0.5.0" + validations: + required: true + - type: dropdown + id: package + attributes: + label: Affected package + options: + - "@authmesh/cli" + - "@authmesh/agent" + - "@authmesh/sdk" + - "@authmesh/core" + - "@authmesh/keystore" + - "@authmesh/relay" + - "Other" + validations: + required: true + - type: input + id: os + attributes: + label: OS and architecture + placeholder: "macOS 15.4 arm64 / Ubuntu 24.04 x64" + validations: + required: true + - type: textarea + id: description + attributes: + label: What happened? + description: "A clear description of the bug" + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to reproduce + description: "Minimal steps to reproduce the behavior" + value: | + 1. + 2. + 3. + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + description: "What you expected to happen" + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant logs or error output + description: "Paste any error messages or logs (redact sensitive data)" + render: shell diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..88a858d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Questions & Discussion + url: https://github.com/ameshdev/amesh/discussions + about: Ask questions and discuss ideas in GitHub Discussions + - name: Security Vulnerability + url: https://github.com/ameshdev/amesh/security/advisories/new + about: Report security vulnerabilities privately (do not open a public issue) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..72280d0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,36 @@ +name: Feature Request +description: Suggest a new feature or improvement +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: Problem + description: "What problem does this solve? What's the use case?" + validations: + required: true + - type: textarea + id: solution + attributes: + label: Proposed solution + description: "How do you think this should work?" + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: "What other approaches did you consider?" + - type: dropdown + id: package + attributes: + label: Related package + options: + - "@authmesh/cli" + - "@authmesh/agent" + - "@authmesh/sdk" + - "@authmesh/core" + - "@authmesh/keystore" + - "@authmesh/relay" + - "Documentation" + - "Other" diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..24e83fc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ +## What + + + +## Why + + + +## How to test + + + +## Checklist + +- [ ] `bun run build` passes +- [ ] `bun run test` passes +- [ ] `bun run lint` passes +- [ ] Documentation updated (if user-facing change) +- [ ] Crypto changes reference `docs/protocol-spec.md` diff --git a/.github/social-preview.png b/.github/social-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d44584b32f3f737809a74c5541703c0ef83d50 GIT binary patch literal 73935 zcmZs?WmFvM5-f_lJ4^^paAzPua0?RL-ED9P?vmi{5Zv7z26qV-1}6}l;2y{w_CDv_ z`__8=fq%^EsjjZBt}jCQlME&r85#@>4CY5!NmUpaMChMzfhcg$UkVB0w=gg`Fdrqw z)IGCLx>3RQGAi#jo*RVl;6g)baZ=+$>(F9Pu=3y<7`V~CZcz&S&2Y}ag;i147Yz~< zdn0+Pfg|-@>$~IL;Op?=7;??wRMd}gT?jzji+v{-aFND zkF&!g=#Q|0LFw81+d+IKH>82SU=KFRasLFv12m%xRzeKihbyBB~-0o29~` zbxH>3Y{1W-OHgyiA%gt@p}-cU!bHq#iBV?Cn!;a+yj(vCE0SWL1PpQINH&@k7O zIwPk#?tX2FT(oB-+Ct}++J8!@+bn#*pDY`Ab}q390F!C)8XVY>@jRr6ev$gKWW4;Q z3lSV{5UNyS@X~*x$k0kOwQf6VY*r#c*l2mI{jsQF0l|i{-px2Q|7R4_aRFQYy@}ZS zD}R)y;TH-&=&QN6{FzZcX6}?R19af={mr9-HWn25t^4xvR&sMa4yYji= zmSgFDi^)h&q>N06n1P7xkfoxshO;bqlK!hgBy+itT8q5I#Wc#El};@mM0wU@XtWu3 z%u=!MFW@+Go$AH&CwDiuKB|{kFS<0ME!Eio(g53b`cACiG$}?Ws?bC~p!Z$Rmg93n zhb(7Gn3>pC2oL8{n0J?tBGM^$twf7+3Q&d69`OjqMIv9uAYrv3i+!kgmr^G4ken%; zlfO@^S#)o;GjpA8KV}Odh=;3SG?#B6iqSzn0}j>>;D8R=2_@3zqdcgXil#B3KnWh^ zpGPSzlRJ&VM0c8GYcWwdNqwL;32Lj8?a{P&EKj}OsCfIOSd;FV?b6j?fNT(DKV#a@ zgo6ch0tWCIof35H6f(98^JV2ghA*koTFO0*8PTMeFY#vTpb$h`pH7n{rPgJZgGrDU zV|B&0D0ou~4CqK!C14{u{Z0^x92b!Y;Dfcg{DPVD*0rC@4Ti61%ReVJZFEyC>)emb zA`Y3NZ1jyBrFyH6iMzq&a2{H6#&(G=q?rt zU&_;{J%}+l5<4n=#kefYA`lZ9VfW7~s0pr^9$bDkJepIB7)EM)yX3N(hg>Z&>M7bY zn^0&>Xa&cPs$8#?)?^D}oL(NRfVM_M3iv2aY!g+DOZF^5<-wPT93`4oob+;9(@k8hf5L zo%a1v#mHAEYQsm7+{7-hn0v|^*dXF!*|5_4{^Z)DmfaOw_BMKDloj8F#iLM@@mcj{ z#d11y=evS(w4NoyIkx468zqvXn0+n;B@TN=@60wqB*-aqVQ^$00Ff18mIbbcXe0Q^ zF=>lBo3JT+wJq3HtlXX*fo&Hcfn&g(O-FdS2sX=G>9Vlo5i*QU*w?R~WVb8pnR>7C zmlkm>LZ44A3yRj9wUzf;WjJ3KS=K@3vTmMo6QSrDT!x|VPVQsaYA4ROCssWiEX3?( zJ8Q+3JuizU_jt#J6@vW-o&dVS&}vAyEe3wMAKtO0PW~4IuA+A#P}vT-c+X2Rm1s7ScbVxZ!{X zNiaHLUOy{h&dmK#A52@!$#lCBty>UfOj+t|ul4uf(S&#KFPU3L&cFF|quDH&h1+bM z;7ZscWK9B8f{!{o@}>s4_gkZ^`~+kDGNkgJzTjL%7&U7~Gsj;{O%03b>JnPuPdkuX zC)4gc2iG6L#3;pzVms^R9D3w#9f2ER4Dr z)657VAvNoPsZ6b3uCxXqV#77&szN^0yc3c*uOM+hP|g=VR747TzBOJHxb|jF3Xz7?=J8~KCn5#W0Dt;`e4|To8!-m^S9$x;qK3D z)`W{cc!9W?EyLnE*7R>|<>LP@^WwJ3oCu||25wT-h~w6Yr5JQjvn*6-KBH=lf6WqG^CelQZdV=yO~ zi)p+J_sMdwTCHq<6kCj-M~GsySaCD(HscPdwrBq>AiTO-?0a@3Tyg(V2N_x3B*ugt znb)q!Rh#CE0M8Egj!4^9@1pQ5&iZ4p8dYQdY^@m@b>W7d5$y+f{l+0RlCx>!Wgrxk z%O>%z`{!Y%Cc0F;`s$RjIUhpqSiZ;5j`2ipJ~P`psN|Orp(re)HL#~b^hF7Ows2Va zP533BdPG`25uY0dETxqjs}KO#b=~rp04T>FYtScg$(f($la zrscykU7`zt6~LmKd8{Fp-eGm=(P4WXrl72^&i<9(%_#S^{_XL_ux&Pfx45i_l_6@e4>zCst;M>qN00M> zbqz)W?lg1+8e321ex!#Pl)ec@+u@vT4U8c4gUrsGC_G7oR33h-{4n?VbSGwl<91XI zG*q?XEY%UZN}n(>i$$)Qm2}d*X?U571+)(a#`1jtcGbgczYd=7Fd$(5ljHssIC)IP zh>xcs%a6;9VtSkW#F2yLmDXD@&yF1lX=Av9B*=?pK5!o$vJtm<5&dA4O;RU3HfpjE z+Z`>;YNDq=_sGj|a>lwZAF|L=o~SxUPf4K0q)= zt$UqG>A8DsU!pJ=9wLyI?uu)leQwa_gq5LQ=%;P95>HGE;xtOTcOfP5i^O#`Q?y<~ zZRqQ`0tW{w+u#SywB8_=esYHDoe_d-_Bf$i>p*J>8SxQ&aw`rH_J8`{^`*c`WwLVD zLnS!^QC^kyk8B~LOtw3SA0A^$0RgYQh2crc)9b@%&+@r6e3$uik*J>~$&HUmrwPnJ zk_g;8Pd5`P0&;_KG2J&R}WlkO|Qz`M-569VMQezDhp^daVjgWl&*WLkknb9xlN0>jxl~H5sEa$$h zNN?7mWF)akMxXOmAI@wyRM0`If#OpI!t|~xKTe>W#TKJ6 zdb)R~m3vAg=(ydB^0Ir|=)=9=pbXv~7K7i0%oowW!$Eqr^(NWcC`U!GZ{a$x6#6$wvUyG=RN`=HE44*#B_(Wr=+cNEI3=x`JS_%^&v*LE`@1vxV?d@GXB zipGEE##O3z3r0T9Xsh@c62MitU9?iv%N108wfgo0wbqxlYgB*+ibq{MmiB@sYMVE6 zNunZyT+M7onYS8~WRlA}c-$QV1lmjoTm&X{Aw0?S8)kwt|om0cUHoZG7$vFjd*S#@#V zUwY#1NzG{`k9HLYnbM=MTA3(Xz08DIIL=#wH+k_H-d5sVIOq}73jxsatu?q zYqd}>gI$u5;w!<)!CM!t>uc@?QQkm|AvA>;ig5SOGpfQgWu^5rrdX>ClN)xHDeg7SquiS)M zyn^;Rdtg&yXy56!e)NACW4Vul17oQ6z=D~{9J5W!+2Orp9!f^X z=6f=^!924YqEwVC%(1-v02avNfyn3to^E=l(BQr=WCr5W^0^2fR7_rDrF+HUS)x4= zV3Pk>t7fOINXQa2ai$BcsmS`|n|G2uv30X&Vl?tNN}28bNMm?UAN#4MAx)ji;Lw9p zt|UT=kXjc*JvBh&91Fow5s~QJ-WQ2vBdW6(KfQhE=1!yA?;Ii0n$r|W(t`ZTqR3}x zae=l6lsHHj#@_VYLN+#4-;OR_>{ z5L)dV-;@t<%H!}_F~1Clc}d(}XX_WS>9iB#Ln+&_h5|TT2tysM3gtQ-#CVK!t4pBV z7VSxWaklTpi@C-J7P<8qd=Ljex@`x>PMes9nE(F- z+Zt#Z1%-Z5*J~l_Z@Gh2gN=<2S@m4v^A``D<33p-HMUNcdPHBTAh2ND|56Yo7elPi zb~JD8ubB%woSLYscvyMVV~s}xbZE>(8kl?ikn%X@s{|7tXEvMXy|n$1JmcejI3|zJ z4bQNSmT%A)GuKcLLTO8hz0|Wr26***b2P>@t)ebsT=NKyZifh9giT52Ch@XXo77Az zBQJpveO%viz$x`z$EcfBfTt?M)XzL`uS2;(&wO7ctOTsII#}PUc|#P^1XZV*?5YGf zi;D(_3L}Gb8r7!0;At2$Lav^bLav2HZV{uo_@K0y->?vyh>I#ivn6BY{#Po6`NmtA z!hRtolrg?*Wo@?oz=pg2BN7$JNH+t6jjlHOPOKB3#tdIKelE}UL9RF|!5OgCAy8v} zM7)nMfo@_{D5YR0)6i2vim0LOEfG}RI<&bwX04dA@BSt6Vdj0$BdBhMP0a$~yv2OWDQeQcC71mR`^?`mnvL5>i#oA@D>P-NudwbnbBmaz*_wg^m zpclX3c>Q>z>2Wl;A)X|d$wG7#y4#BrrsfXrNVZjd=n|;;D+0Ms<$p{!e}I zmPU(i)tUD+s<+b(n!7`_wss#$`uFGM0X^#RUJB3a?O|@PICl{-BO1dmJ_f~imzhAa zf~5jZ=24{MX_(I4p2FpKxYrYNuzEZ;zki3r3B$!#tO>awSKZG}bs>cyy($8d(TBum z>h3bJo-QZNcv0b0YS6ZKb)tDlxq?|oJ4fIS;H2;*js6MUZ4|`j23ui!bgTcFZJr(S zLf7JsgmMq+HK+bz0UElN-;n5B=sfUr%&+T?QpJoky{48ToDI@3Gr%MK8CYaK@TVA|m%Fm3uQp7M0cW$5V@VYuE*O5hJ|# zb(sQgk#h%?XwmVZre2a7OOCnrK5fp%;iN5A+5M$;2!YkB3b@c*VG!vK?RfM1(W;@Z z;w46%p*7U4P&$j@l!if>>o>Jwre@v!lmCZ{L7pRz^qlkJt4jFH=k~?1RM@3_Sv%&@ z6)(|jURyLcI=2P;+!5gnVPS*$`vnX{A2dM;9W9UI6dj}KDF_jig->&lHE-ox>j%mk zb1=h}(GInx{iuYovw1aYDAaNZybAkfiC=3AGwPN6Pi_6(w`Fns-&F1t=2teOJ^kMF z%r`<$@FROH7<Z*b;= zzDKN9a`()AbfgQ{1h@3{U{G6(%4bfglJSKmcVi|LbgOX4=a0iRsu4vx7bA%7<8hdU zS72thQ|b+!PPgdMNiMsOyLT|c*g~6yh#Q547pD#|Z+5Cf8pnh)E+!NVkp^1+t+n6& z>VTUPLaWTL_D$Ij>%Zv4WEn{5JP;}aN=!oW)>xZZx7ZP4BrG@_Dq^g-Z*h@q7BA^u z)S8xHDx5+B8vM|FsIGc8_oi~1Gz5$=a{!wx4VeCg%wqZPJJE-}8(umqijFG32yvtx zW~%3ngcTev-fp9L9Mec2z-6JUZ05h$kH;+G9#AmC=j12;vwsqQw>o|Mg~=R<`{*v6 z62PV8Mfs!^t?a)m5Mt8!%5Wp1)3L8K%vqbruEkcVB;mvy|4q_9k{j$LPdKT+)UnJC zna~qk39ySx-l@v0GgAJ`1UC&Ecy^ZS&8)(xlAk+j7h$Up(wCP>RPZIwT?+FeWEErR zc^f@zF!_i@85~p~Tf>MkmHiavTW|UU8LFI!AMl>XbGoSJH94FU4cS^Kq^}{1&7)%TS$(wOzW4QmTM?} zaliIG*edW)Gr>VUz9?v=Y24rDpd%3rUYYbytwzPtp$-x1+I`_Y{4ESQi-tVmpWFEDQykCXrN>nsdl+d@<9bmOE zLp{7m=}XxBP|J|v-SuAM`m!Z1E7G}_>Kx2n`9G!B)v)M~R@p%bIj{~T5*7;481qEp zPssp?ltMY2iG=|}jTZKaX-0(rO6J}+YZpbj?>mm&RgiXFR)rGtE+2z|!v3rJ1#UTx zib_8VzJ#FP7k}Ow{xR35=YXGYWJNH@v6CzaU$xPeFgs?Ky1d9m;`yJ=SN6Z9FK=?x z^!LpoT%#>OL?F#hZj6OL*t=y^wyhKIK^T3x4j1=BtSJ%!h}t&xWlZKzgLM8Xgjyml zE?ez}WuZ3{@+rbsgpukc`~Rdd=L>H;6uWHiG0fv?@k&UYRaR$(I(&+%)wGn`UGH(# zMwj=?wuH{ZLz+&_{Qzj{2A>GST={cv2(O_#JMr6t1F`Qt4v+sz9 zK!}Jv#2qRM&o{FQ8q%2hj8z+3p5o#IOkZqQ3y*2{?O~UH;!HyR)Y#|6N+(n(LR!@9 z-l7}bz~1pdOC(U&XjO6sZ7bfeW9rWgJVJf>Tuw@!W6_HWK6!c?u0bb|t;3^|z`DG> zliZ0MWX)AM9peNCPzQ#|*5_yJt;|wr%fApV zyTSY{xAP%|7{~v!q`}k+Oe<8t2V39h5+pIF;&N^*d|B+6G54>q`D1N;9V@mN_guyz zVWiGOr=e}{T0G}gQm;zgmj=geU*Z9t9C4^oH<~4mTFzCYN;*4LsaG{;Gi!O>c-69!O=lXCoqz+zG@tlC}df1;t_tMfuyVXE%K5jF)S6wX-K()&7b}R z@B1T93IWI~={^GVEtut$r5S3kx=e?%}))koV2U_(gb&BaT3N#;zn^W$o!~VdktF)YXXTxIIx|1MR z)JcT-5g^|8%iq%yjDQ$0qI&bWG>i})(xu`uvFYGk9gG&Mq(F4}4;Rx0g)Mg23`1%o zoO{C5(_TcI*i|6=@iR&AlKCuR2Qf-P%=GVM@OH3QaKoO}S$l|Rjgo=V6N->s761*t zVqx&9~8SnZt>y%|s+*2|^J z8TO&C=m^7nBb@3j9Vb`CLI|!LGWK&k3FpoJlJsRC>MFY%QlbbvM(G%AwLuV|?l=qG zdHd4~sgHy=5{X5K-VDqP>&Hg|j}}?ga+4G&Vkue95x(@zzFrc5=x1LMto(JD~v@9o8mp{eAl8fM@E4q1n`W)Evo`Bp1GFsDO zdr%neK)|?SBN60oMGX*I=w9ar>yV{RBc;8@g-6mH>~s^k(8 zG3z`Nqc0Pb5Z+3G*7j-&-AI-pYv<$@hdzOoZEWRej z!b^R9+zrhTzMT4M z5dOlLqA6kMPOGl)I?EsRp;v?K@w))bMVAs8Mpp2v{{$y!mk9e&lzH6t;U=u`D%5{l zA>rKyGYLDxU4H%7ya+U!R9lAwfdnj@t^8$4W5>y@7kP{IFBMEP&sZs9KODYxW{@p? z26G*s&ScA6}=cnJt^q=wrup^6SF>!$hzO~91J-wfPR9XPJ}DE<OmpuTr5J7HfNh@`(A|!tH5t0m z=jHCp}L6EucUdB2|+Jc{Q`sx_}qbQ_a6-D-B z@E_Y>>0g~-=yE%&>uvEMqacnkzJ$F+pvtXO(iEZq$i|f_H|WF@iGMYYEce7Zpn%jl ziHzBf{fl{&DzoiQE`#odx9%NRVtQ4=TFGVXH9D%G&e%3Q|BcwO}Z#H`R=&*Nbb{jtBZ z;|>O!!864*IIy~;D zcJey=v3EOx6mRoYEw>)N3y7|GkV;{OEB-4i+Epzb)uF;-QRg3Ff$JA<8E>2BP)|A= z+o0q>XjdoB$f2wg-cx2RS5ddJCs#awUp_D_wxCOWEUd1fKWy1G!NT)S0O{M-emdrKGZmDTuk?@#U5=4NfSm zX$%?gsb! zpLd+^+1`is$#S}+A8sG&%e`JVUgdl;nx#PsM`8$jii$Tj--M}vJU|vP<8QO41YJB3YkXwP7W~aUBEElIk+Z(5L z3%^R5VMw+m#XMV(?y_A)S;xPG9154|gMDtx!a*v_xNxgNWZfV_6dFq8A!hqJ$Jn8w zgO0Bj?Gka=zM;Kn#r{LSC^1;cepmfBmw2i35ypSZ|DG7j2%JpnsuJ?&sJ}k%!GSUn z`%J6=Ai)U8_Q}rL|Hn11pt1vg2>cb9(Im~0iJc>4@H1(Wq^_3*pkPUZ=!bkCU4WJg zYK%KCkFkAN6ecB%9X6N`$CBymU$@%C9k+;F#!$642CJ;y2I7~IlFsfCL`oGKBd{ji zSX8p=sk^<^PIb4kzNp{cE)!oV)d22;62~5I%M_qBryw5PXWzaTH@f!3u4`+@{EU;? zSkCdbl<*QW+~QSCBlVeY(DK2X648Yq3%E+H)qwjgx~8W1gj~iQ9R9F4LRV8K#y8Y0&r>-v& z0cbI@L?a-lpUhf$ww!LTz{UlFH+V-yfAC=SO4<*J-)GecxE%>-TF+YeIm_!CPSMVz z2ZZUx-;jeZrfzWw48c%(2ew9V?BmY$s9A2^(71`#P~iU;`>a7ZyirlvNDuboQda21 zW0YdtUpL_Ou@n4~{esS1Qf{r>a7q*{@KA;Ei!`1uKUa`-|1E5V*OK7Na%GAK@I5oB zJr)VT*Fv<%yoE3}!cNx*foJh7s zizTJ30_(l--aRjsyu}%5C;hU zRsCU6h8{QrzNXblU|#npmqfVyl4sIA`8vd@&Etk(LiQ6~gJ!$CoYix5*QXQ_!4Rb- z>x)}jS#Zm==F{Y!FV|7$SDD*)GcZwyFqu|U`e#YqCu*})J8R_IX*z!hwWbgj8Po~p zwMnWownwBGEp+|6vZ2P1UBL?dc#m~MyXcoSdU<3gwOUF5i_b}JWM6xrh!t`y8+lg> zAMOg1-OX6S&r%?gjp7bxL4MXp%y7Kd^BC-wmvH{8!SVh<1FBDwA+o<)hBK*jla_q~ z6K2D>9BXDJ*#Pw87*g94my!PGJV*G5eGVx8FNS_5kKT?M9w) znlUm#(|Eb+tGyqijhE`HYE8cU1Ke%*3_jmist!H>WkeOeV!psqrVql@cAkgT^FuV( zuo*xjvQN(K^!zZ?`J-k^CHRP2Yx(lfDvPd0o=$y>L7 zB_H?9rz1VvP|Qa_mcSAV0VQruif0J^nEJ-8jvR{UuE{0ie3fylAFhaCRS^Es7sWbM<+S_15^UE8ASMf2(27?AHz>ZmFd-1DIuV4$6k!Y$cpM*(1jj zHJl;WWZO&jy=!qz47xsX;lur5{M9;Ne^k1K%8Vt!K>p{2P~G0d9Ae)ta1(y5uu-bS z{vgW1mJ9Gf4@w_Nfa#B*g2uQ!UU^405)8T50skI@>PV^lKC5a(mYN&Xem2sP zh_Vv>tt&)iI*y2b~}+2QIwWuU7%98$|c;V#ZZO`e8~&NVnqM zKMYUa2s1V-S!`=7C;8T+twXJhncg4{pIW-stk~OA&mzvQ*uY#ZNbf91m*u>+;J@BzyVJd? zA#D9WC(~%+@yJO)7jlFH#;-e=I6my3&JN$$c~tE2E5fTF*D$G95EkX9J-EV$H;N|# z@s3x49)c_xu}Y}jmKVmzSk`{g*an}DnL3(wV*mtz&S3Y@9B1F1 zegG#Z=DB*b1c=Z^?RbIBAB%K*Br)FR*!)Ghj%wi1@LmZ_HljA3Sbp~$+*MX2QCedb zhGeir+&cJcQGu)b_U)E>*pxl>);mUMEF$Pf+${9Cr$E5_@3zu{@Og=a&4p~Ym614y zTc0|FAY&V*2U(ldsJx8Bo+(N8JcDv-16~MVO;(B-W3qeftC|z^15{=H;oBJ4V{KV3 zSlc##5-Di~B2D1i0F3*UV9#ho&4cFj)${usNGUScFdjsMiUNz~O_?&mlh-x|2M~Lq zp+pbi1+oCuum59Mb{8c6v+y#dr+f1#MQyPRZHVzQ(koT5+&bbKeppZ9G3>{hn}`da z=FzC~{HSP0ZulldNdz*x;tFf{( z>bH>14fsh^+r-`vILsD5qtZ1eJmgT^MC~l^omJ#wr6IC6K7oL&MfE(jANAsgIdKjE zw81su%OQ-S6Cn=55LeiMX{uYr|!{7Y>kSZ5M zR!-PM&uj{(TIu8iSk`)E5@3Y7lsgd~!8IV9<#qLG?Nt$*dFiu~9=2$-Co4_oq@|51gTk`(>qf#8@^EZ?0 zGm8Lg3apxr#ecyH^(^Evx>Yby3N)-#6l%1k5xM}9ckCu*nkB_mXXarmS77Qaf>SWD z=Bj=<4{7{$yzph{^Op()Sl=F{(($}3=0z)8hTlYPoH*}4MR2Y%7;&xH2zsU=oi3y& zg0dM8@@C$g^xa)2o*`ou&(voRH}=#t#asN$BaE}p(kG-*^ZW2Kj4R)*7tw9lDJ(pK zYz&iJ=bRmdzV+el)?41MzS0M0(94Bw$-e(~+r|lWF+SNc-vcqRI5~uv0A6d~cpj^r z-ZIPYiLz^|etFz5^sk38O6WmcC-8%hr32RI2#MvC(PSwN3nf1l(?AT;+a40+8)1{; zhwCodtu$;3rb#|F@`+8gbC?G6MNj2(S>{umA*f?_g%{Y0DPE?*R=RX?4z^Uv8^nZ_ zK6nw zea43v8`6@*eX2W@elP#T?~XK3@=p*TFb6kHp8=bJkPtQV3<=FWv|2YK|NgDp)=hbd4Seu40DGMay6BaPR0*E$=6{fl^H3vdf`l5S2_ zGGqf1N~3nK(wuz%L#^e|T~83>pItB6D`^d5nK2ccYPNveE0n+O+WBXM9;FzGO_L;e z_%%w^WdVfR8adQ}Hwds}FtJuVGI5HxN1!m9Fh5*CYx^++InrmKMODG6b^=~fVM^OP$*YR08{f%+FB8O&2 z|F5-S4G?Is9aGG18IOdg>0V2+QtQS?IL%Z{rPPesHVKdS>8d+lrrH%$Ryjv~es5-l zmT?3%m%snN+n&&DI_BOqjEpnU9F(y8f18I8B5FU}*v*vwu~;g(5~$(by|JM&~yMN506DlpPIoXOs1T_CXh!eU%mxLz0G~n~K7XfO;hE z!N5Nj#@suL+AOlr<7zb%3X7mm>!WCx9iX}ndf=9pCFRxc8RQ35!P#MhL3$hbmc|HW zwm{%vNu>p;@#+7792=BP3}K&(BHPs>CMpVKWW@6?k_2)Id(cjbx^xM=RsX;Cg&_}g zX$1X^G-VFABBTptv&j9Vm`GcO8{zGE)d=;yzzL!M1Ne&)5iu)6oh}OD>Y}>-+Zf?#y@^&O63RDQ<40z72et>fAFsV z=1nlPAITLLGX8dI(HnQ3d8>jB4mh$Z=aw*?m!rOC4~I-^l(>UBK0FajagiCyZvH93 zijd}q^e&J9iG|C5C(!5|rTYbgV@Y@w&+xy%MHZcIhOnFV==!^xw9#5DmHo=HPfgS@ z65Rd=ePN3(?Pm$1iG@hn})z@r9}o#% zPF#=YBB#>G3o<@`FGd4K%Y2NEX1ak1o`Z!Ks1?Mcna282n&779k~}8rA|@}Sh;^_` z7zJW0Q`BR@A^yFaThDjC?+*Za9Hi3vMGETCmM_%FJ)!8vll1>5VaqS18`z?3n;@V* zpDBiCRD+YOqr+EVO}P{ak0$37!Jy+wISQT;c??_XaA7UJrLv#X3|X;?+*oH2(RwwL zzX(x5Y_hRZaA8GyWG(PhY*wo^Kz1EZLlz!%JZ$I|6+WUNpG*;g3lKT6P@+_e==H5A zJ9D3=cv@HJ>zrD9jNMS6u+@JYExa(CL`r)_*|3CDSXDW~TLNGb<{kiQGLHrnyoH8? zy%&0AJSoZ>2S26ufd^hgE%5JU8ld^WU*<%+TFmcc2^kkZGG<^p2*c}JYle|uV%9W4 zmqWycK79@4fNVOuNhIWYW=?u@!qeXEe$7s8V0u|)VJ%*;OP26#(`o^~^j-)og2@Lu z9)e;7s{D*5cVdo3+eX{$ceu~RD1hZE_H5U=7PpoeHUt|?#0s{3&jR*?D#zbxxyVjk z+J8U6*Fv|rXqN5>V-B8IFEb`&x=Yc>^51iwB$CTLvBz(ZY4Lbyu+4`kL9IjPeE3Ko zlwOrE`7041w8;MLQOf#|bPE>m+xLL_Kt(EP2=TgaA}*SctN)jyrh5Prv+bKEvsAAI zp|_$l$~mQV|W@)xju78fzUoHEE z<4#l)89Ccc-{bE5ezI+jZDh*`RFtFPjz2?qTV-q&nAOm8qS!%@ZUYSwr9UiBr5q7I zyHY*T5aLp&GMXsrt{=2X$GaFpYM~s0) z_ev8y0^e9M*kb&^s$r94Vwox`9_`{d-I+D1XJ`U4NUE!_8(9aGMr24hq@GO2QE>fi zsZ=LPsB^ZJ>Q4&aJBQLH)C=$DNR18HiL2gURXwBt6Y`QsLF2@C0!PbB;aF_mQZ;c{Y~D=yB-ZTHYz*cnM3sJwp3)}Mf{KKr&EVYm-sc! zjQ-p(VV1-=J{>t;&Y(x>O?Zs`(@*5JY!xR_biQ-O2MGU2ii=?WfC1U1<)0vpZQP~& zNS!Q&hPplkHXYtO%;oe7)90wxdg+HlIs$gjZ0+^l!C<5-(f4yNULVQI6e~~C!fTih zIqDiMF871NR_1wWJcA;djn_K#wYbAfSd6!|Bht>VA7I5_et-u;fy zDiB%rDdGC#f3hsEjQnc#U|v?D%LE^=V7hac6*b(!9A|2P3O2B+h!k%}g5zgDWuctJ ztf`^ydF97rZqaE*?KqV6fYpP^_EO{vpXr!T_y{@{if@=ZNRqlKh@%4IvPStl1e1ZN z4pHY-c~)t)Lj}BGSJ^K9Vd*ot7S{fD9a{h0B+i;nbd=y!et6XVO4uobWYi6B{-DuG z%;&j0`rGM<{l>nI7sBY_GNp`*0()}_m4v+LLa2@if6c#vNx&aNLb-l5221#f-7q(F zQQ8Y8>1j7H*cSLv{Y;Fes=|-5CIgKP&4Rtoc2^aa>LpxXL&jN;i0INuaw`E@JhAd9pJ{@4ZC8FXEk9RI-cSol4aFxNdf(ZJXBZAzcCBllY1_|d>-j`IkOtMY`+cuLd3 zX}OpijF|GY%#?JK)9kc}bGW(nHF&~;W_%iE0M6WGqs`CnKL~DtJ=1rUlvvvmNw4MHWg?hVbJbj9~J%w0MqBHTuOi+%Z zQkUMMPbpbxg^I$R5A?HEW1|B&^5Sxy^844C33q3nW3?*bd*yEKyv9XZudQq9U}|UJ zo(aF_t?F;-f79T`V;6wWZpE^<4D(Zep8F0>3Jqa~Nk6n(D*6ie6GA*8+Hd1;Jjc2J zTSS=masMkKYOo!v4o*!`12^~v2O_gftiDbEWF{tSU8;y6?fsr)0`VNL(&DE>`4Z$6 zsv|vH3sg_08IfUZI!xI!8xq1-p;Dj!6nr3h&t5zaHPq;BiGSTdZ+3TLT?DtBxd^D_ z#}=z}O@0!MkxYZndRXdmCAPeJ+FJ?hvOSUt61^;2ttuQDUC7#e{)ldm$VZz6diDc~}3GRtVFEy}s!!+F&01y(Dw<_COF4J8S7M7u{9 z+fgPpgvTyBi!3u4qO4ZwSqgA_F6b6AIvyMt;yJ*5On8ExIRp0~HDzUDAz?#~aLaj8 z9oC4G{jIDh1hXOjNNsunCeZB!f?>W(r()C?_c^UG7G%_l@CQ!914;z_Z~(NNKaGFP zWkxuU`>FSMN#tIai4o;&_8}-Fp{6E2?l>*cLi7@AMiMv^qiD8?NziFXKwH@E{fvm% zs(y@X!CqwJSGsY_Z-~z%7n6nkMYCa|KoG1}`Z4v9J;j-LzFxkz5~=!6yTER|@5S6w zpw0t!aKYw|YcJyXNID#M<5hSbYYn!Gm`mKa*PgGp#bMkT7Gas_Zj5rM;^N#Y{6=#r>RF7dgary`f!XMM z5ScBVD90Xt!Fj6%^iTZE6;1)d1lR0VY1-nIW9r0vGty zbP`U6vR`R!AiGYVzV4y%f5Au@S9fSye3iA+Ol|rLrIHjH-(ZKC?kCGE(JPC9E4>|c zPK$(G2(y#wnVL8J(5o&7y2TXXuj3FSH+Ps%~ zo_oUJm`{xaE5J9CSoE^|tZWMo%IP$@xPvDi@f6TEMjCM4*R?R5hySMY=NGbcz~t#q zP~xwBcTcM2<765+Mezr{88Ai`Q{k-dKTH3+VnhID_FdE?!`QXM-}T;#ei^AH;<#he zUV`Dyoe{>N{p8m`o&0OxBL`YdnKw^NU&LI}nU06`Wn>@pXkyG2@#yL|SOvNRZ5otR zj-?-5ig6WVYL+GA*G3;Gy9P+N@*4sZ%{5x^7M7szHI9^_5!&63EiR2ipNzfL z_n!F-Lpk9+uPtDrI*lq)$xnsrHFA&-F$bFM&&f19)5bo-OB!>X7`qO)cMW}*hzrmM zCZ$$^+uh64Fom$QkQXEg_SgPbbPE7*M0|H<>T~++H&7ev`pCL!?0;c1>mI1y8t5e4LnX@*8_!0VwxC3w?OG9rhH4vn zMUe&C$jKlyiEN)${~%6Z=7W?*|TTjr_98xyY9Ip_ugPLl$r?P>nFDtG>wY z4mAn5-v!xC!<)HVFH(oKB#>$nGaRZd#wf;_tmakcu=2+ls|J zZ@K+3e$Mz39xIYd_4H=q`;qiz0y*^)flaAlh%m?1yfz>hQ<&p8rl24!>Hw~wql1}s z*=@@bQw1I3U~*O(;#9L4HkAmGgYGKuK+`$MU^pDbIkEwgA@CL|O_Q&cLQH)A8BC(n zBmb4ABmak~x8RC{X}WgN!8Q0mAi>?;-QC??6I_G41b25QxH|-QcL?t8kTc|dpLM=J zFf*&CySi%EuB-jKVQ${4T>K;yo~M=Z>t_*8ipbPf3%0MN3YlZS{oj}yRZsqUUT5@< zoj+(){;X+PH!w)R%o}^f3H3;sn*(G(NhHlS?o8_ieNldi73;b#!FT6shNOzJF%H_r zz-*{t0M#6yz~uS5(&b=;3YSwhoh*yS>)ORy++&vi>p}w?Xf6{+@LwM+^F!}!WPA^u zzHo-E!9aC+hk0oX3y83iUU?AJ+U0pJddeG zpNuHMg0f+rt+tc13uGgMer3}u@%znsG@GISEzEa?qyyHNlWT_C1$BMLrko)J z&$&7R(GDo%J^}Kx>6mN9l_4a+m!E(pUJtW5V|Y-W#2A4(69Qs<0{vS$m-G#A_fHev zJ*73;KzM(0k?)>rNKUowJvF=^C+q(mc{3KgSr;ZD+^7>_kF)3j*(Duv!;T@m{%|`J zBXE5U>9OSp8~-!Lua`54;OcC~5ieJMNLQ7$laGMlM*ubu1@|q2J%>5>hk9DIE2Y8e zSE=fRHb8AR@Yt{fJX6Jik|{ z_2k%fnYC&mz+y=Iqq{U@*12ZKjw4GSu%E!wFRKAmN$OnbYibvH_qdbEQO=Q?8M^;2{E zUqstj9?sgEcJ1myLmrCS;oc5rPsICpj@eaaoB#@{VmeTF0E7teHGvc&3j(QI&yifS zCqL%_Pe_gEZks!rn`59c!jal>|74l=TK(I)9^X@mP)t^w#(&ri#Q$&>AB+};wH8;7 zBaWMf(f&}eUm9MYDdAVJIUr?L%gXfA+G5c|L|j)C4D2s$E*VVW?yIq(ZrX8kUixr! zmN5qTbjEMsDe|Wvh?qjkDlUq0n9N;Aj%qj!LWtCNo+5YR%3`UX^Cq+cAYzY}Fy^32 zwiLH_y}O1oc-OyR*BEN64kd@$99D~}=)EE`IH}sa8#)@+3~w>tMV*>uk1d5by1~2v z5v4zbm@`P8=2hcFoCC*TJOi>~k^mJ&SNC57b+DRLWth0kn0R6oJ+!Xaokg>ojJg?x?-Xlf0~B+eDT4dNe(hJzxT+Yx9K z1J}(9(2UP59Rj^=!udn(K{`IgXnT(x4KWz{<9C9<3^ma0662c&ad!@E4Bc(h%ZMa% z!5Qc2vRk1B#`%J2251~Pb6a^}%R;$R^c|aUGEL!56-GC^2ALXPYjeA>t_*d+%ObDN z<~>j@p()=eFvVT-=h7MztBaaDA{1LM0>jY@S96qF%Y0im(f~xcsmMu^->w(LR0lLY zdY)#$@%0sitO&pTV7&_x$%JOZ`1(|eF!t&dwl(eX2GZ0(vz-5YzyEDvoZYpt|J`gP zup2LCS*`9WO0N+Kvzb3XkPVFF63g_Nt%`HLpij#45%HFV78=+K9V2m@j=xl;9h%Qr zR$KzB$z`t3IUG#j%js^+!>SH~^-RryDA&yCbyrcgHCsC}v+w!S^Q{PNf)>&v&HZQ` zw&5ue`WZxQcspv*Pdk3@$RTrDHFV77`Fw(>sj4#PFFOGV5QhAyr*M78wbcpB!6<0cTiTEjv<#{VOTsK2k#{}xwG zl<8GqBZ~a}&Id1hWZbu87t~$xi%wEIFiVqCf38dCM~~+r`o+8H>epG7AW-vHjjkit zfPv;8kp4}zvh_ocExb6-c$(2WB{ zHx5tu?{eFLX^xj5ZLx{=T|mEnqy!Rbmly)AXM8*@BV^CbLI z_0tb;gD$Hk-C_~gkL1Pj#Z}RwMIiC)h358r(Yy-?u$o_%xzxkgw zsEe01IROeLur;x*KMrpbV9Ln|tEX{b`PM(hRD#Mf?X?aOI(ta33X4oE&u|TfTm$tv zPJr`;Of8=tl9#gY-h=!QEhz?1?nInJ`>hs;nQ(Obtb9I^G z13^R(^5oxc9C%XoQZ%I{z*HSMuuHTdP%¤wk7b#L%acvG@50WBg|v$JHxi?1_G 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 Bukio? literal 0 HcmV?d00001 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..144cf74 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,31 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a friendly, safe, and welcoming experience for everyone. + +## Our Standards + +Examples of behavior that contributes to a positive environment: + +- Being respectful and constructive in discussions +- Giving and accepting feedback gracefully +- Focusing on what is best for the community +- Showing empathy towards others + +Examples of unacceptable behavior: + +- Trolling, insults, or personal attacks +- Publishing others' private information without permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement + +Instances of unacceptable behavior may be reported via [GitHub Private Vulnerability Reporting](https://github.com/ameshdev/amesh/security/advisories/new) or by opening a [Discussion](https://github.com/ameshdev/amesh/discussions). + +All complaints will be reviewed and investigated promptly and fairly. Maintainers are obligated to maintain confidentiality with regard to the reporter. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f4687ad --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,96 @@ +# Contributing to amesh + +Thanks for your interest in contributing to amesh! This guide will help you get started. + +## Getting Started + +### Prerequisites + +- [Bun](https://bun.sh) 1.3+ +- Git + +### Setup + +```bash +git clone https://github.com/ameshdev/amesh.git +cd amesh +bun install +bun run build +bun run test +``` + +### Project Structure + +``` +packages/ + core/ — crypto primitives (sign, verify, HMAC, HKDF, ECDH) + keystore/ — key storage drivers (Secure Enclave, TPM, encrypted file) + cli/ — amesh CLI (oclif) + agent/ — amesh-agent daemon + remote shell + sdk/ — signing fetch client + verification middleware + relay/ — WebSocket relay for device pairing +``` + +## Development Workflow + +1. **Fork** the repository and create a branch from `main` +2. **Make your changes** — keep commits focused and atomic +3. **Run checks** before pushing: + +```bash +bun run build # TypeScript compilation +bun run test # All tests +bun run lint # ESLint + Prettier +``` + +4. **Open a pull request** against `main` + +## Pull Request Guidelines + +- Keep PRs focused — one concern per PR +- Include tests for new functionality +- Update documentation if you change user-facing behavior +- All CI checks must pass + +## What to Contribute + +- **Bug fixes** — always welcome +- **Tests** — especially adversarial/edge case tests +- **Documentation** — typo fixes, clarifications, new examples +- **New keystore drivers** — Windows DPAPI, Android Keystore, etc. +- **SDK ports** — Python, Go, Rust verification middleware + +If you're considering a large change, [open a discussion](https://github.com/ameshdev/amesh/discussions) first so we can align on the approach. + +## Code Style + +- TypeScript with strict mode +- ESLint + Prettier (config at repo root) +- `bun run lint` must pass with no warnings +- Prefer explicit types at module boundaries, inferred types internally + +## Cryptography Changes + +Changes to cryptographic code require extra scrutiny: + +- Reference the relevant section of `docs/protocol-spec.md` +- Explain **why** the change is correct in the PR description +- Pin exact versions for `@noble/*` dependencies — never use `^` +- Include test vectors where applicable + +## Reporting Bugs + +Use [GitHub Issues](https://github.com/ameshdev/amesh/issues/new?template=bug_report.yml). Include: + +- amesh version (`amesh --version`) +- OS and architecture +- Steps to reproduce +- Expected vs actual behavior + +## Security Issues + +See [SECURITY.md](SECURITY.md) — do **not** open public issues for vulnerabilities. + +## License + +By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..47ee133 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,54 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +|---------|-----------| +| 0.5.x | Yes | +| < 0.5 | No | + +## Reporting a Vulnerability + +**Please do not open a public GitHub issue for security vulnerabilities.** + +Instead, use [GitHub Private Vulnerability Reporting](https://github.com/ameshdev/amesh/security/advisories/new) to submit your report. This ensures the issue stays confidential until a fix is available. + +### What to include + +- Description of the vulnerability +- Steps to reproduce +- Affected package(s) and version(s) +- Impact assessment (what an attacker could achieve) + +### What to expect + +- **Acknowledgment** within 48 hours +- **Status update** within 7 days +- **Fix timeline** depends on severity — critical issues are patched within 72 hours + +### Scope + +The following are in scope: + +- All `@authmesh/*` npm packages +- The relay server (`relay.authmesh.dev`) +- The CLI and agent binaries +- The protocol specification (`docs/protocol-spec.md`) + +### Out of scope + +- The documentation website (`authmesh.dev`) — unless it exposes sensitive data +- Social engineering attacks +- Denial of service against the public relay + +## Security Design + +amesh underwent a full security audit in April 2026. The findings and fixes are documented in [`docs/security-audit-2026-04.md`](docs/security-audit-2026-04.md). + +Key security properties: + +- Private keys never leave the device (hardware keystore or encrypted file) +- All signatures use P-256 ECDSA with raw r||s encoding +- Replay protection via nonce + timestamp window +- HMAC-sealed allow lists with atomic writes +- Shell sessions use transcript-bound authentication and ChaCha20-Poly1305