@solana-agent-wallet-adapter/cli 0.1.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.
Files changed (29) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +107 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +84340 -0
  6. package/dist/index.js.map +7 -0
  7. package/dist/wallet-host/.well-known/assetlinks.json +12 -0
  8. package/dist/wallet-host/assets/codex-B1ZwolvK.svg +3 -0
  9. package/dist/wallet-host/assets/index-D5ySS2CU.js +2143 -0
  10. package/dist/wallet-host/assets/index-ZynMhs1G.css +1 -0
  11. package/dist/wallet-host/assets/mobile-wallet-adapter-CqDJSDZ5.js +738 -0
  12. package/dist/wallet-host/assets/saturn-source-cutout-wQ5itUw-.png +0 -0
  13. package/dist/wallet-host/assets/solana-runtime-BhiDfU5_.js +20 -0
  14. package/dist/wallet-host/assets/wallet-standard-eoxEevjj.js +11 -0
  15. package/dist/wallet-host/icons/agentic-192.png +0 -0
  16. package/dist/wallet-host/icons/agentic-192.png.bak +0 -0
  17. package/dist/wallet-host/icons/agentic-512.png +0 -0
  18. package/dist/wallet-host/icons/agentic-512.png.bak +0 -0
  19. package/dist/wallet-host/icons/agentic.png +0 -0
  20. package/dist/wallet-host/icons/agentic.png.bak +0 -0
  21. package/dist/wallet-host/icons/agentic.svg +44 -0
  22. package/dist/wallet-host/icons/favicon-transparent.png +0 -0
  23. package/dist/wallet-host/index.html +45 -0
  24. package/dist/wallet-host/manifest.webmanifest +20 -0
  25. package/dist/wallet-host/og/agentic-multi-wallet-agent-signer-1200.png +0 -0
  26. package/dist/wallet-host/og/agentic-solana-multi-wallet-agent-signer-agentic-bigger.png +0 -0
  27. package/dist/wallet-host/og/agentic-solana-multi-wallet-agent-signer.png +0 -0
  28. package/dist/wallet-host/og/og-card.png +0 -0
  29. package/package.json +55 -0
@@ -0,0 +1,11 @@
1
+ var q=Object.defineProperty;var D=(n,e,t)=>e in n?q(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var d=(n,e,t)=>D(n,typeof e!="symbol"?e+"":e,t);import{C as N}from"./solana-runtime-BhiDfU5_.js";function z(n){if(n.length>=255)throw new TypeError("Alphabet too long");const e=new Uint8Array(256);for(let o=0;o<e.length;o++)e[o]=255;for(let o=0;o<n.length;o++){const u=n.charAt(o),g=u.charCodeAt(0);if(e[g]!==255)throw new TypeError(u+" is ambiguous");e[g]=o}const t=n.length,a=n.charAt(0),r=Math.log(t)/Math.log(256),s=Math.log(256)/Math.log(t);function c(o){if(o instanceof Uint8Array||(ArrayBuffer.isView(o)?o=new Uint8Array(o.buffer,o.byteOffset,o.byteLength):Array.isArray(o)&&(o=Uint8Array.from(o))),!(o instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(o.length===0)return"";let u=0,g=0,h=0;const p=o.length;for(;h!==p&&o[h]===0;)h++,u++;const m=(p-h)*s+1>>>0,f=new Uint8Array(m);for(;h!==p;){let b=o[h],w=0;for(let v=m-1;(b!==0||w<g)&&v!==-1;v--,w++)b+=256*f[v]>>>0,f[v]=b%t>>>0,b=b/t>>>0;if(b!==0)throw new Error("Non-zero carry");g=w,h++}let y=m-g;for(;y!==m&&f[y]===0;)y++;let T=a.repeat(u);for(;y<m;++y)T+=n.charAt(f[y]);return T}function l(o){if(typeof o!="string")throw new TypeError("Expected String");if(o.length===0)return new Uint8Array;let u=0,g=0,h=0;for(;o[u]===a;)g++,u++;const p=(o.length-u)*r+1>>>0,m=new Uint8Array(p);for(;u<o.length;){const b=o.charCodeAt(u);if(b>255)return;let w=e[b];if(w===255)return;let v=0;for(let P=p-1;(w!==0||v<h)&&P!==-1;P--,v++)w+=t*m[P]>>>0,m[P]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");h=v,u++}let f=p-h;for(;f!==p&&m[f]===0;)f++;const y=new Uint8Array(g+(p-f));let T=g;for(;f!==p;)y[T++]=m[f++];return y}function E(o){const u=l(o);if(u)return u;throw new Error("Non-base"+t+" character")}return{encode:c,decodeUnsafe:l,decode:E}}var B="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";const M=z(B),L=new Set(["user_no_response","wallet_unreachable","simulation_failed","expired"]);class i extends Error{constructor(t,a,r){super(a,r);d(this,"code");d(this,"recoverable");this.name="ProtocolError",this.code=t,this.recoverable=L.has(t)}toPayload(){return{code:this.code,message:this.message,recoverable:this.recoverable}}static fromPayload(t){return new i(t.code,t.message)}}function G(){const n=new Uint8Array(12);return globalThis.crypto.getRandomValues(n),`sar_${V(n)}`}function V(n){return Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")}class we{constructor(e){d(this,"backend");d(this,"defaultPollIntervalMs");d(this,"defaultTimeoutMs");this.backend=e.backend,this.defaultPollIntervalMs=e.pollIntervalMs??500,this.defaultTimeoutMs=e.timeoutMs??12e4}capabilities(){return this.backend.capabilities()}getAddress(){return this.backend.getAddress()}signMessage(e,t){return this.run({kind:"sign_message",payload:{data:e,encoding:"utf8"},...t})}signTransaction(e,t){return this.run({kind:"sign_transaction",payload:{data:e,encoding:"base64"},...t})}signAndSendTransaction(e,t){return this.run({kind:"sign_and_send_transaction",payload:{data:e,encoding:"base64"},...t})}async simulateTransaction(e,t){if(!this.backend.simulate)throw new i("unsupported_method","The configured wallet backend does not support transaction simulation.");const a=this.buildRequest({kind:"sign_transaction",payload:{data:e,encoding:"base64"},...t});return this.backend.simulate(a)}cancel(e){return this.backend.cancel?this.backend.cancel(e):Promise.resolve()}async run(e){const t=this.buildRequest(e),a=await this.backend.submit(t),r=await this.waitForResolution(a,e.pollIntervalMs??this.defaultPollIntervalMs,e.timeoutMs??this.defaultTimeoutMs);if(r.status==="approved"){if(!r.result)throw new i("wallet_unreachable",`Backend approved request ${t.id} but returned no signing result.`);return r.result}const s=r.error??{code:r.status==="rejected"?"user_rejected":"wallet_unreachable",message:`Approval ${r.status} for request ${t.id}`,recoverable:!1};throw i.fromPayload(s)}buildRequest(e){const t={id:G(),kind:e.kind,payload:e.payload,cluster:e.cluster};return e.summary!==void 0&&(t.display={summary:e.summary}),t}async waitForResolution(e,t,a){if(e.status!=="pending")return e;const r=Date.now();let s=e;for(;s.status==="pending";){if(Date.now()-r>a)throw this.backend.cancel&&await this.backend.cancel(s.requestId).catch(()=>{}),new i("expired",`Approval request ${s.requestId} timed out after ${a}ms.`);await X(t),s=await this.backend.poll(s.requestId)}return s}}function X(n){return new Promise(e=>{setTimeout(e,n)})}const I="solana:signAndSendTransaction",ge="solana:signIn",W="solana:signMessage",k="solana:signTransaction",F="standard:connect",O="standard:disconnect",pe="standard:events";class me{constructor(e){d(this,"wallet");d(this,"cluster");d(this,"chain");d(this,"connection");d(this,"signAndSendStrategy");d(this,"commitment");d(this,"skipPreflight");d(this,"maxRetries");d(this,"pending",new Map);d(this,"connectedAccount",null);const t=J(e.wallet)?e.wallet.wallet:e.wallet;if(this.wallet=t,this.cluster=e.cluster,this.chain=K(e.cluster),this.connection=new N(e.rpcUrl??Q(e.cluster),"confirmed"),this.signAndSendStrategy=e.signAndSendStrategy??"auto",this.commitment=e.commitment??"confirmed",this.skipPreflight=e.skipPreflight??!1,this.maxRetries=e.maxRetries??3,!t.chains.includes(this.chain))throw new i("cluster_mismatch",`Wallet ${t.name} does not advertise support for chain ${this.chain}.`)}async capabilities(){const e=this.wallet.features,t={backend:"wallet-standard-web",cluster:[this.cluster],supports:{signMessage:Object.prototype.hasOwnProperty.call(e,W),signTransaction:Object.prototype.hasOwnProperty.call(e,k),signAndSendTransaction:Object.prototype.hasOwnProperty.call(e,I),multiSign:!1,simulationPreview:!1}};return this.connectedAccount?{...t,address:this.connectedAccount.address}:t}async getAddress(){return(await this.ensureConnected()).address}async connect(e){return(await this.ensureConnected(e)).address}async submit(e){if(e.cluster!==this.cluster)throw new i("cluster_mismatch",`Backend connected to ${this.cluster}; request targets ${e.cluster}.`);const t=await this.ensureConnected(),a=new AbortController,r={requestId:e.id,status:"pending"};return this.pending.set(e.id,{approval:r,controller:a}),this.execute(e,t,a.signal).then(s=>{const c=this.pending.get(e.id);c&&(c.approval=s)}).catch(s=>{const c=this.pending.get(e.id);if(!c)return;const l=s instanceof i?s:new i("wallet_unreachable",s instanceof Error?s.message:"Wallet rejected the request.");c.approval={requestId:e.id,status:l.code==="user_rejected"?"rejected":"failed",error:l.toPayload()}}),r}async poll(e){const t=this.pending.get(e);if(!t)throw new i("invalid_request",`Unknown request id: ${e}`);return t.approval}async cancel(e){const t=this.pending.get(e);t&&(t.controller.abort(),t.approval={requestId:e,status:"rejected",error:{code:"user_rejected",message:"Request cancelled by caller.",recoverable:!1}})}async simulate(){throw new i("unsupported_method",`Wallet ${this.wallet.name} does not expose a Wallet Standard transaction simulation feature.`)}async ensureConnected(e){if(this.connectedAccount)return this.connectedAccount;const a=this.wallet.features[F];if(!a)throw new i("unauthorized",`Wallet ${this.wallet.name} does not implement StandardConnect.`);const s=(await a.connect(e)).accounts.find(c=>c.chains.includes(this.chain));if(!s)throw new i("unauthorized",`No connected account on chain ${this.chain}. Switch wallet account to ${this.cluster}.`);return this.connectedAccount=s,s}async disconnect(){const t=this.wallet.features[O];t&&await t.disconnect(),this.connectedAccount=null}async execute(e,t,a){if(a.aborted)throw new i("user_rejected","Request aborted before execution.");const r=this.wallet.features;switch(e.kind){case"sign_message":{const s=r[W];if(!s)throw new i("invalid_request",`Wallet ${this.wallet.name} does not support sign_message.`);const c=$(e.payload.data,e.payload.encoding),[l]=await s.signMessage({account:t,message:c});if(!l)throw new i("wallet_unreachable","Wallet returned no signature.");return{requestId:e.id,status:"approved",result:{signature:M.encode(l.signature)}}}case"sign_transaction":{const s=r[k];if(!s)throw new i("invalid_request",`Wallet ${this.wallet.name} does not support sign_transaction.`);const c=$(e.payload.data,e.payload.encoding),[l]=await s.signTransaction({account:t,chain:this.chain,transaction:c});if(!l)throw new i("wallet_unreachable","Wallet returned no signed transaction.");return{requestId:e.id,status:"approved",result:{signature:Z(l.signedTransaction)}}}case"sign_and_send_transaction":return this.executeSignAndSend(e,t,r);default:throw new i("invalid_request",`Unsupported signing kind: ${e.kind}`)}}async executeSignAndSend(e,t,a){const r=$(e.payload.data,e.payload.encoding),s=a[I];if(this.signAndSendStrategy==="sign-then-send"||this.signAndSendStrategy==="auto"&&Y(this.wallet.name)||!s)return this.signThenSend(e,t,a,r);const l=await this.connection.getLatestBlockhashAndContext(this.commitment),[E]=await s.signAndSendTransaction({account:t,chain:this.chain,transaction:r,options:{minContextSlot:l.context.slot,preflightCommitment:this.commitment,commitment:this.commitment,skipPreflight:this.skipPreflight,maxRetries:this.maxRetries}});if(!E)throw new i("wallet_unreachable","Wallet returned no signature.");const o=M.encode(E.signature);return{requestId:e.id,status:"approved",result:{signature:o,txid:o}}}async signThenSend(e,t,a,r){const s=a[k];if(!s)throw new i("invalid_request",`Wallet ${this.wallet.name} does not support sign_transaction or sign_and_send_transaction.`);const[c]=await s.signTransaction({account:t,chain:this.chain,transaction:r,options:{preflightCommitment:this.commitment}});if(!c)throw new i("wallet_unreachable","Wallet returned no signed transaction.");const l=await this.connection.sendRawTransaction(c.signedTransaction,{preflightCommitment:this.commitment,skipPreflight:this.skipPreflight,maxRetries:this.maxRetries});return await this.connection.confirmTransaction(l,this.commitment),{requestId:e.id,status:"approved",result:{signature:l,txid:l}}}}function J(n){return typeof n=="object"&&n!==null&&"wallet"in n}function K(n){switch(n){case"mainnet-beta":return"solana:mainnet";case"testnet":return"solana:testnet";case"devnet":return"solana:devnet";case"localnet":return"solana:localnet"}}function Q(n){switch(n){case"mainnet-beta":return"https://api.mainnet-beta.solana.com";case"testnet":return"https://api.testnet.solana.com";case"devnet":return"https://api.devnet.solana.com";case"localnet":return"http://127.0.0.1:8899"}}function Y(n){return n.toLowerCase().includes("backpack")}function $(n,e){if(e==="utf8")return new TextEncoder().encode(n);const t=atob(n),a=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)a[r]=t.charCodeAt(r);return a}function Z(n){let e="";for(const t of n)e+=String.fromCharCode(t);return btoa(e)}var H=function(n,e,t,a){if(t==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!a:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?a:t==="a"?a.call(n):a?a.value:e.get(n)},ee=function(n,e,t,a,r){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!r:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?r.call(n,t):r?r.value=t:e.set(n,t),t},x;let S;const R=new Set;function te(n){A=void 0,R.add(n)}function ne(n){A=void 0,R.delete(n)}const _={};function ae(){if(S||(S=Object.freeze({register:j,get:re,on:se}),typeof window>"u"))return S;const n=Object.freeze({register:j});try{window.addEventListener("wallet-standard:register-wallet",({detail:e})=>e(n))}catch(e){console.error(`wallet-standard:register-wallet event listener could not be added
2
+ `,e)}try{window.dispatchEvent(new oe(n))}catch(e){console.error(`wallet-standard:app-ready event could not be dispatched
3
+ `,e)}return S}function j(...n){var e;return n=n.filter(t=>!R.has(t)),n.length?(n.forEach(t=>te(t)),(e=_.register)==null||e.forEach(t=>U(()=>t(...n))),function(){var a;n.forEach(r=>ne(r)),(a=_.unregister)==null||a.forEach(r=>U(()=>r(...n)))}):()=>{}}let A;function re(){return A||(A=[...R]),A}function se(n,e){var t;return(t=_[n])!=null&&t.push(e)||(_[n]=[e]),function(){var r;_[n]=(r=_[n])==null?void 0:r.filter(s=>e!==s)}}function U(n){try{n()}catch(e){console.error(e)}}class oe extends Event{get detail(){return H(this,x,"f")}get type(){return"wallet-standard:app-ready"}constructor(e){super("wallet-standard:app-ready",{bubbles:!1,cancelable:!1,composed:!1}),x.set(this,void 0),ee(this,x,e,"f")}preventDefault(){throw new Error("preventDefault cannot be called")}stopImmediatePropagation(){throw new Error("stopImmediatePropagation cannot be called")}stopPropagation(){throw new Error("stopPropagation cannot be called")}}x=new WeakMap;const ie="solana:";function ye(){const{get:n}=ae();return n().map(ce).filter(t=>t!==null)}function ce(n){const e=n.chains.filter(r=>r.startsWith(ie));if(e.length===0)return null;const t=n.features,a=r=>Object.prototype.hasOwnProperty.call(t,r);return{wallet:n,name:n.name,icon:n.icon,supportedChains:e,accounts:n.accounts,features:{connect:a(F),disconnect:a(O),signMessage:a(W),signTransaction:a(k),signAndSendTransaction:a(I)}}}const be="solana:mainnet";function ve(n){let e=`${n.domain} wants you to sign in with your Solana account:
4
+ `;e+=`${n.address}`,n.statement&&(e+=`
5
+
6
+ ${n.statement}`);const t=[];if(n.uri&&t.push(`URI: ${n.uri}`),n.version&&t.push(`Version: ${n.version}`),n.chainId&&t.push(`Chain ID: ${n.chainId}`),n.nonce&&t.push(`Nonce: ${n.nonce}`),n.issuedAt&&t.push(`Issued At: ${n.issuedAt}`),n.expirationTime&&t.push(`Expiration Time: ${n.expirationTime}`),n.notBefore&&t.push(`Not Before: ${n.notBefore}`),n.requestId&&t.push(`Request ID: ${n.requestId}`),n.resources){t.push("Resources:");for(const a of n.resources)t.push(`- ${a}`)}return t.length&&(e+=`
7
+
8
+ ${t.join(`
9
+ `)}`),e}var le=function(n,e,t,a){if(t==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!a:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?a:t==="a"?a.call(n):a?a.value:e.get(n)},de=function(n,e,t,a,r){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!r:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?r.call(n,t):r?r.value=t:e.set(n,t),t},C;function _e(n){const e=({register:t})=>t(n);try{window.dispatchEvent(new ue(e))}catch(t){console.error(`wallet-standard:register-wallet event could not be dispatched
10
+ `,t)}try{window.addEventListener("wallet-standard:app-ready",({detail:t})=>e(t))}catch(t){console.error(`wallet-standard:app-ready event listener could not be added
11
+ `,t)}}class ue extends Event{get detail(){return le(this,C,"f")}get type(){return"wallet-standard:register-wallet"}constructor(e){super("wallet-standard:register-wallet",{bubbles:!1,cancelable:!1,composed:!1}),C.set(this,void 0),de(this,C,e,"f")}preventDefault(){throw new Error("preventDefault cannot be called")}stopImmediatePropagation(){throw new Error("stopImmediatePropagation cannot be called")}stopPropagation(){throw new Error("stopPropagation cannot be called")}}C=new WeakMap;export{i as P,ge as S,me as W,W as a,pe as b,ve as c,O as d,F as e,k as f,I as g,M as h,be as i,we as j,ye as l,_e as r};
@@ -0,0 +1,44 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
+ <defs>
3
+ <linearGradient id="agenticIconRingBack" x1="13" y1="26" x2="54" y2="38" gradientUnits="userSpaceOnUse">
4
+ <stop stop-color="#2c3134"/>
5
+ <stop offset=".5" stop-color="#6f7168"/>
6
+ <stop offset="1" stop-color="#b9975d"/>
7
+ </linearGradient>
8
+ <linearGradient id="agenticIconRingFront" x1="7" y1="41" x2="56" y2="27" gradientUnits="userSpaceOnUse">
9
+ <stop stop-color="#c6b27a"/>
10
+ <stop offset=".3" stop-color="#efe6ce"/>
11
+ <stop offset=".66" stop-color="#8d9088"/>
12
+ <stop offset="1" stop-color="#252a2d"/>
13
+ </linearGradient>
14
+ <linearGradient id="agenticIconPlanetEdge" x1="20" y1="18" x2="44" y2="45" gradientUnits="userSpaceOnUse">
15
+ <stop stop-color="#cfc8ac"/>
16
+ <stop offset=".3" stop-color="#777d78"/>
17
+ <stop offset=".7" stop-color="#20282b"/>
18
+ <stop offset="1" stop-color="#070909"/>
19
+ </linearGradient>
20
+ <radialGradient id="agenticIconPlanetCore" cx="0" cy="0" r="1" gradientTransform="matrix(17 -15 14 17 27 23)" gradientUnits="userSpaceOnUse">
21
+ <stop stop-color="#343d3d"/>
22
+ <stop offset=".5" stop-color="#151d1f"/>
23
+ <stop offset="1" stop-color="#050606"/>
24
+ </radialGradient>
25
+ <clipPath id="agenticIconPlanetClip">
26
+ <path d="M21.6 21.8c4.2-7.6 15.8-9.4 22.4-3.7 6.5 5.6 6.3 17.1-.5 23.1-6.8 6-17.8 5.4-23.3-1.5-4.3-5.4-2.3-12.2 1.4-17.9Z"/>
27
+ </clipPath>
28
+ </defs>
29
+
30
+ <rect width="64" height="64" rx="14" fill="#050706"/>
31
+ <path d="M12 28.6c10.6-5.2 31.2-5.6 42 1" stroke="#070909" stroke-width="5.4" stroke-linecap="round" opacity=".82"/>
32
+ <path d="M12.5 28.6c10.4-4.8 30.5-5.2 41 1" stroke="url(#agenticIconRingBack)" stroke-width="2.2" stroke-linecap="round" opacity=".78"/>
33
+
34
+ <g clip-path="url(#agenticIconPlanetClip)">
35
+ <path d="M21.6 21.8c4.2-7.6 15.8-9.4 22.4-3.7 6.5 5.6 6.3 17.1-.5 23.1-6.8 6-17.8 5.4-23.3-1.5-4.3-5.4-2.3-12.2 1.4-17.9Z" fill="url(#agenticIconPlanetCore)"/>
36
+ <path d="M24.3 25.1c5.9-2 13.3-1.3 18.3 1.4" stroke="#d8cfaf" stroke-width=".62" stroke-linecap="round" opacity=".15"/>
37
+ <path d="M22.2 32.3c6.6 2.5 15.3 2.1 22.3-.7" stroke="#9b9888" stroke-width=".64" stroke-linecap="round" opacity=".18"/>
38
+ </g>
39
+ <path d="M21.6 21.8c4.2-7.6 15.8-9.4 22.4-3.7 6.5 5.6 6.3 17.1-.5 23.1-6.8 6-17.8 5.4-23.3-1.5-4.3-5.4-2.3-12.2 1.4-17.9Z" stroke="url(#agenticIconPlanetEdge)" stroke-width="1.25"/>
40
+
41
+ <path d="M7.5 38.4c12 7.5 36 6.2 50-3.9" stroke="#070909" stroke-width="5.8" stroke-linecap="round"/>
42
+ <path d="M7.5 38.4c12 7.5 36 6.2 50-3.9" stroke="url(#agenticIconRingFront)" stroke-width="2.35" stroke-linecap="round"/>
43
+ <path d="M18.3 42.1c10.8 2.4 26.3-.1 37.1-7.1" stroke="#efe6ce" stroke-width=".68" stroke-linecap="round" opacity=".62"/>
44
+ </svg>
@@ -0,0 +1,45 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
+ <meta name="theme-color" content="#050706" />
7
+ <meta name="mobile-web-app-capable" content="yes" />
8
+ <meta name="application-name" content="Agentic" />
9
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
11
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&display=swap" />
12
+ <link rel="manifest" href="/manifest.webmanifest" />
13
+ <link rel="icon" type="image/png" href="/icons/favicon-transparent.png?v=saturn6-transparent" />
14
+ <link rel="apple-touch-icon" href="/icons/agentic.png?v=saturn6" />
15
+ <title>Agentic | Solana Agent Wallet Adapter</title>
16
+ <meta name="description" content="Let agents use your Solana wallet without giving them one." />
17
+ <link rel="canonical" href="https://agenticwalletadapter.com/" />
18
+
19
+ <meta property="og:type" content="website" />
20
+ <meta property="og:site_name" content="Agentic" />
21
+ <meta property="og:title" content="Agentic — Wallet authority for AI agents" />
22
+ <meta property="og:description" content="Let agents use your Solana wallet without giving them one." />
23
+ <meta property="og:url" content="https://agenticwalletadapter.com/" />
24
+ <meta property="og:image" content="https://agenticwalletadapter.com/og/og-card.png" />
25
+ <meta property="og:image:secure_url" content="https://agenticwalletadapter.com/og/og-card.png" />
26
+ <meta property="og:image:type" content="image/png" />
27
+ <meta property="og:image:width" content="1200" />
28
+ <meta property="og:image:height" content="630" />
29
+ <meta property="og:image:alt" content="Agentic logo: a saturn-like planet with a glowing white ring." />
30
+
31
+ <meta name="twitter:card" content="summary_large_image" />
32
+ <meta name="twitter:title" content="Agentic — Wallet authority for AI agents" />
33
+ <meta name="twitter:description" content="Let agents use your Solana wallet without giving them one." />
34
+ <meta name="twitter:image" content="https://agenticwalletadapter.com/og/og-card.png" />
35
+ <meta name="twitter:image:alt" content="Agentic logo: a saturn-like planet with a glowing white ring." />
36
+ <script type="module" crossorigin src="/assets/index-D5ySS2CU.js"></script>
37
+ <link rel="modulepreload" crossorigin href="/assets/solana-runtime-BhiDfU5_.js">
38
+ <link rel="modulepreload" crossorigin href="/assets/wallet-standard-eoxEevjj.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/mobile-wallet-adapter-CqDJSDZ5.js">
40
+ <link rel="stylesheet" crossorigin href="/assets/index-ZynMhs1G.css">
41
+ </head>
42
+ <body>
43
+ <main id="app"></main>
44
+ </body>
45
+ </html>
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "Agentic",
3
+ "short_name": "Agentic",
4
+ "description": "Let agents use your Solana wallet without giving them one.",
5
+ "start_url": "/#app",
6
+ "scope": "/",
7
+ "display": "standalone",
8
+ "background_color": "#050706",
9
+ "theme_color": "#050706",
10
+ "orientation": "portrait-primary",
11
+ "categories": ["finance", "productivity", "utilities"],
12
+ "icons": [
13
+ {
14
+ "src": "/icons/agentic.png",
15
+ "sizes": "512x512",
16
+ "type": "image/png",
17
+ "purpose": "any maskable"
18
+ }
19
+ ]
20
+ }
Binary file
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@solana-agent-wallet-adapter/cli",
3
+ "version": "0.1.0",
4
+ "description": "Terminal CLI for the Solana Agent Wallet Adapter local bridge.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=20"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "bin": {
13
+ "solana-agent-wallet": "./dist/index.js"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist/index.js",
23
+ "dist/index.js.map",
24
+ "dist/index.d.ts",
25
+ "dist/index.d.ts.map",
26
+ "dist/wallet-host",
27
+ "README.md"
28
+ ],
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "pkg": {
33
+ "assets": [
34
+ "dist/wallet-host/**/*"
35
+ ]
36
+ },
37
+ "devDependencies": {
38
+ "@yao-pkg/pkg": "^6.19.0",
39
+ "esbuild": "^0.25.12",
40
+ "typescript": "^5.6.0",
41
+ "@solana-agent-wallet-adapter/mcp-server": "0.0.1"
42
+ },
43
+ "scripts": {
44
+ "build": "pnpm -F @solana-agent-wallet-adapter/core build && pnpm -F @solana-agent-wallet-adapter/ios-link build && pnpm -F @solana-agent-wallet-adapter/mcp-server build && pnpm -F @solana-agent-wallet-adapter/browser-demo build && tsc -p tsconfig.json && node scripts/build.mjs",
45
+ "start": "node dist/index.js",
46
+ "typecheck": "pnpm -F @solana-agent-wallet-adapter/core build && pnpm -F @solana-agent-wallet-adapter/ios-link build && pnpm -F @solana-agent-wallet-adapter/mcp-server build && tsc -p tsconfig.json --noEmit",
47
+ "test": "pnpm -F @solana-agent-wallet-adapter/cli build && node --test dist/__tests__/*.test.js",
48
+ "build:binary:macos-arm64": "node scripts/build-standalone.mjs macos-arm64",
49
+ "build:binary:macos-x64": "node scripts/build-standalone.mjs macos-x64",
50
+ "build:binary:linux-x64": "node scripts/build-standalone.mjs linux-x64",
51
+ "build:binary:windows-x64": "node scripts/build-standalone.mjs windows-x64",
52
+ "smoke:standalone": "node scripts/smoke-standalone.mjs",
53
+ "clean": "rm -rf dist"
54
+ }
55
+ }