358 lines
13 KiB
HTML
358 lines
13 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>EDUT Launcher</title>
|
|
<link rel="stylesheet" href="./style.css" />
|
|
</head>
|
|
<body>
|
|
<main class="shell">
|
|
<header class="hero">
|
|
<h1>EDUT Launcher</h1>
|
|
<p>Deterministic infrastructure control surface.</p>
|
|
</header>
|
|
|
|
<section class="panel">
|
|
<h2>Control Surface</h2>
|
|
<div class="actions">
|
|
<button id="btnQuickConnect">Connect wallet</button>
|
|
<button id="btnQuickActivate">Activate membership</button>
|
|
<button id="btnQuickRefresh">Refresh status + feed</button>
|
|
<button id="btnQuickInstallStatus">Governance status</button>
|
|
<button id="btnRefreshBalances">Refresh balances</button>
|
|
<button id="btnCopyWallet">Copy address</button>
|
|
<button id="btnModeHuman" class="mode-active">Human mode</button>
|
|
<button id="btnModeAuto">Auto mode</button>
|
|
</div>
|
|
<p id="flowStatus" class="flow-status">ready</p>
|
|
<div class="grid two">
|
|
<article class="stat">
|
|
<h3>Wallet</h3>
|
|
<p id="summaryWallet">not connected</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Session</h3>
|
|
<p id="summarySession">none</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Wallet Funds</h3>
|
|
<p id="summaryFunds">-- ETH | -- USDC</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Membership</h3>
|
|
<p id="summaryMembership">unknown</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Mode</h3>
|
|
<p id="summaryMode">human_manual</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Designation</h3>
|
|
<p id="summaryDesignation">-</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Identity Assurance</h3>
|
|
<p id="summaryAssurance">unknown</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Admin Policy</h3>
|
|
<p id="summaryAdminPolicy">blocked</p>
|
|
</article>
|
|
<article class="stat">
|
|
<h3>Last Sync</h3>
|
|
<p id="summaryLastSync">never</p>
|
|
</article>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<h2>Updates</h2>
|
|
<p class="note">Communication is pull-first. No broadcast notifications.</p>
|
|
<div id="eventList" class="event-list"></div>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<h2>Support</h2>
|
|
<label>
|
|
Support summary (owner only)
|
|
<input id="supportSummary" value="Need diagnostics snapshot." />
|
|
</label>
|
|
<div class="actions">
|
|
<button id="btnSupportTicket">Open support ticket</button>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<h2>Response Log</h2>
|
|
<pre id="log"></pre>
|
|
</section>
|
|
|
|
<details class="panel advanced">
|
|
<summary>Advanced Integration Controls</summary>
|
|
<div class="advanced-body">
|
|
<section class="subpanel">
|
|
<h2>Connection</h2>
|
|
<div class="grid two">
|
|
<label>
|
|
API base URL
|
|
<input id="apiBase" value="https://api.edut.ai" />
|
|
</label>
|
|
<label>
|
|
Chain ID
|
|
<input id="chainId" type="number" value="84532" />
|
|
</label>
|
|
<label>
|
|
USDC token address
|
|
<input id="usdcTokenAddress" value="0x036cbd53842c5426634e7929541ec2318f3dcf7e" />
|
|
</label>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="subpanel">
|
|
<h2>Membership Flow Controls</h2>
|
|
<div class="actions">
|
|
<button id="btnRunMembershipFlow">Run membership flow</button>
|
|
<button id="btnConnectWallet">Connect wallet</button>
|
|
<button id="btnIntent">Create intent</button>
|
|
<button id="btnSignIntent">Sign intent (EIP-712)</button>
|
|
<button id="btnVerify">Verify signature</button>
|
|
<button id="btnRefreshSession">Refresh session</button>
|
|
<button id="btnRevokeSession">Revoke session</button>
|
|
<button id="btnStatus">Membership status</button>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Wallet
|
|
<input id="walletAddress" placeholder="0x..." />
|
|
</label>
|
|
<label>
|
|
Origin
|
|
<input id="walletOrigin" value="https://edut.ai" />
|
|
</label>
|
|
<label>
|
|
Locale
|
|
<input id="walletLocale" value="en" />
|
|
</label>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Intent ID
|
|
<input id="intentId" />
|
|
</label>
|
|
<label>
|
|
Designation code
|
|
<input id="designationCode" />
|
|
</label>
|
|
<label>
|
|
Display token
|
|
<input id="displayToken" />
|
|
</label>
|
|
</div>
|
|
<label>
|
|
Signature (EIP-712)
|
|
<textarea id="walletSignature" rows="2" placeholder="0x..."></textarea>
|
|
</label>
|
|
</section>
|
|
|
|
<section class="subpanel">
|
|
<h2>Quote + Confirm</h2>
|
|
<div class="actions">
|
|
<button id="btnQuote">Get quote</button>
|
|
<button id="btnSignPayerProof">Sign payer proof</button>
|
|
<button id="btnSendMembershipTx">Send membership tx</button>
|
|
<button id="btnConfirmMembership">Confirm membership tx</button>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Payer wallet (optional)
|
|
<input id="payerWallet" placeholder="0x..." />
|
|
</label>
|
|
<label>
|
|
Payer proof (optional)
|
|
<input id="payerProof" placeholder="0x..." />
|
|
</label>
|
|
<label>
|
|
Sponsor org root (optional)
|
|
<input id="sponsorOrgRoot" placeholder="org_root_id" />
|
|
</label>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Quote ID
|
|
<input id="quoteId" />
|
|
</label>
|
|
<label>
|
|
Tx value
|
|
<input id="quoteValue" />
|
|
</label>
|
|
<label>
|
|
Payer used
|
|
<input id="quotePayer" />
|
|
</label>
|
|
</div>
|
|
<label>
|
|
Confirm tx hash
|
|
<input id="confirmTxHash" placeholder="0x..." />
|
|
</label>
|
|
<div class="grid three">
|
|
<label>
|
|
Identity assurance (optional)
|
|
<select id="membershipIdentityAssurance">
|
|
<option value="">(auto)</option>
|
|
<option value="onramp_attested">onramp_attested</option>
|
|
<option value="crypto_direct_unattested">crypto_direct_unattested</option>
|
|
<option value="sponsored_unattested">sponsored_unattested</option>
|
|
</select>
|
|
</label>
|
|
<label>
|
|
Attested by (optional)
|
|
<input id="membershipIdentityAttestedBy" placeholder="moonpay" />
|
|
</label>
|
|
<label>
|
|
Attestation id (optional)
|
|
<input id="membershipIdentityAttestationId" placeholder="provider-session-id" />
|
|
</label>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="subpanel">
|
|
<h2>Marketplace Checkout</h2>
|
|
<div class="actions">
|
|
<button id="btnListOffers">List offers</button>
|
|
<button id="btnRunCheckoutFlow">Run checkout flow</button>
|
|
<button id="btnCheckoutQuote">Checkout quote</button>
|
|
<button id="btnSendCheckoutTx">Send checkout tx</button>
|
|
<button id="btnCheckoutConfirm">Checkout confirm</button>
|
|
<button id="btnListEntitlements">List entitlements</button>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Offer ID
|
|
<select id="checkoutOfferId">
|
|
<option value="edut.solo.core">edut.solo.core</option>
|
|
<option value="edut.workspace.core">edut.workspace.core</option>
|
|
<option value="edut.workspace.ai">edut.workspace.ai</option>
|
|
<option value="edut.workspace.lane24">edut.workspace.lane24</option>
|
|
<option value="edut.workspace.sovereign">edut.workspace.sovereign</option>
|
|
</select>
|
|
</label>
|
|
<label>
|
|
Checkout quote ID
|
|
<input id="checkoutQuoteId" />
|
|
</label>
|
|
<label>
|
|
Checkout tx hash
|
|
<input id="checkoutTxHash" placeholder="0x..." />
|
|
</label>
|
|
</div>
|
|
<div class="grid two">
|
|
<label>
|
|
Checkout total
|
|
<input id="checkoutTotal" />
|
|
</label>
|
|
<label>
|
|
Checkout entitlement ID
|
|
<input id="checkoutEntitlementId" />
|
|
</label>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="subpanel">
|
|
<h2>Member Channel</h2>
|
|
<div class="grid three">
|
|
<label>
|
|
Device ID
|
|
<input id="deviceId" value="desktop-local-01" />
|
|
</label>
|
|
<label>
|
|
Platform
|
|
<select id="platform">
|
|
<option>desktop</option>
|
|
<option>ios</option>
|
|
<option>android</option>
|
|
</select>
|
|
</label>
|
|
<label>
|
|
App version
|
|
<input id="appVersion" value="0.1.0" />
|
|
</label>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Org root ID
|
|
<input id="orgRootId" value="org.local.root" />
|
|
</label>
|
|
<label>
|
|
Principal ID
|
|
<input id="principalId" value="human.local" />
|
|
</label>
|
|
<label>
|
|
Principal role
|
|
<select id="principalRole">
|
|
<option>org_root_owner</option>
|
|
<option>workspace_member</option>
|
|
</select>
|
|
</label>
|
|
</div>
|
|
<div class="grid two">
|
|
<label>
|
|
Cursor
|
|
<input id="eventCursor" />
|
|
</label>
|
|
<label>
|
|
Limit
|
|
<input id="eventLimit" type="number" value="25" />
|
|
</label>
|
|
</div>
|
|
<div class="actions">
|
|
<button id="btnRegisterChannel">Register channel</button>
|
|
<button id="btnUnregisterChannel">Unregister channel</button>
|
|
<button id="btnPollEvents">Poll events</button>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="subpanel">
|
|
<h2>Governance Install + Lease</h2>
|
|
<div class="actions">
|
|
<button id="btnInstallToken">Issue install token</button>
|
|
<button id="btnInstallStatus">Install status</button>
|
|
</div>
|
|
<div class="grid three">
|
|
<label>
|
|
Install token
|
|
<input id="installToken" />
|
|
</label>
|
|
<label>
|
|
Entitlement ID
|
|
<input id="entitlementId" />
|
|
</label>
|
|
<label>
|
|
Runtime version
|
|
<input id="runtimeVersion" />
|
|
</label>
|
|
</div>
|
|
<label>
|
|
Operation mode
|
|
<select id="operationMode">
|
|
<option value="human_manual">human_manual</option>
|
|
<option value="worker_auto">worker_auto</option>
|
|
</select>
|
|
</label>
|
|
<label>
|
|
Package hash
|
|
<input id="packageHash" />
|
|
</label>
|
|
<div class="actions">
|
|
<button id="btnInstallConfirm">Confirm install</button>
|
|
<button id="btnLeaseHeartbeat">Lease heartbeat</button>
|
|
<button id="btnOfflineRenew">Offline renew</button>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</details>
|
|
</main>
|
|
<script src="./app.js"></script>
|
|
</body>
|
|
</html>
|