owner_app/index.html
Read-only source from the unchanged 0.3.4 kit. Existing license terms apply.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="dark">
<title>AIL Owner Console</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="shell">
<header class="hero">
<div class="eyebrow">ARTIFICIAL INTELLIGENCE LANGUAGE</div>
<h1>AIL Owner Console</h1>
<p>Create a local signing key or check an AIL identity packet. Your wallet stays on this device.</p>
<div class="security"><span aria-hidden="true">●</span> Runs locally in this browser · no network connection required</div>
</header>
<section class="notice">
<strong>What this proves:</strong> a valid signature checks the key carried in the packet. To recognize a known signer, also compare an independently trusted fingerprint.
It does not automatically grant access to another company's systems or independently prove a legal identity.
</section>
<nav class="steps" aria-label="Owner workflow">
<a href="#create"><span>1</span>Create owner key</a>
<a href="#sign"><span>2</span>Sign AI packet</a>
<a href="#verify"><span>3</span>Verify packet</a>
</nav>
<section class="panel" id="create">
<div class="panel-number">1</div>
<div class="panel-content">
<h2>Create your owner key</h2>
<p>Already have a wallet? Use step 2 to keep your existing key. Generating a new wallet creates a different key. Names and owner roles are self-declared; this form does not establish ownership of AIL.</p>
<div class="grid two">
<label>Display name<input id="display-name" placeholder="Your name" autocomplete="name"></label>
<label>AIL principal<input id="principal" placeholder="urn:ail:principal:your-name" spellcheck="false"></label>
<label class="wide">AIL public verification URL (optional)<input id="identity-anchor" placeholder="Leave blank until AIL has its own website" spellcheck="false"></label>
<label>Wallet password<input id="new-password" type="password" minlength="12" autocomplete="new-password" placeholder="At least 12 characters"></label>
<label>Confirm password<input id="confirm-password" type="password" minlength="12" autocomplete="new-password" placeholder="Enter it again"></label>
</div>
<button class="primary" id="generate">Generate protected owner wallet</button>
<div id="create-error" class="result error hidden" role="alert"></div>
<div class="result hidden" id="create-result" aria-live="polite">
<h3>Owner key created</h3>
<p id="created-key-id" class="mono wrap"></p>
<div class="actions">
<button id="download-wallet">Download private wallet backup</button>
<button id="download-first-packet">Download signed AI packet</button>
<button id="download-public-anchor">Download public key file (optional)</button>
</div>
<p class="warning"><strong>Keep the wallet and password private.</strong> Upload only the signed AI packet to an AI.</p>
</div>
</div>
</section>
<section class="panel" id="sign">
<div class="panel-number">2</div>
<div class="panel-content">
<h2>Create another signed AI packet</h2>
<p>Use your saved wallet whenever you need a fresh packet. The encrypted wallet remains local.</p>
<div class="grid two">
<label>Owner wallet file<input id="wallet-file" type="file" accept=".json,.ailwallet.json,application/json"></label>
<label>Wallet password<input id="wallet-password" type="password" autocomplete="current-password"></label>
<label class="wide">AIL verification URL (optional)<input id="sign-anchor" placeholder="Leave blank to keep the wallet setting" spellcheck="false"></label>
</div>
<button class="primary" id="sign-packet">Unlock locally and sign packet</button>
<div id="sign-error" class="result error hidden" role="alert"></div>
<div class="result hidden" id="sign-result" aria-live="polite">
<h3>Signed packet verified and ready</h3>
<p id="signed-summary"></p>
<button id="download-signed-packet">Download AI identity packet</button>
<button id="download-updated-anchor">Download matching public key file (optional)</button>
</div>
</div>
</section>
<section class="panel" id="verify">
<div class="panel-number">3</div>
<div class="panel-content">
<h2>Verify an identity packet</h2>
<p>This checks the signature, key fingerprint, canonical claims, and embedded passport.</p>
<label>AI identity packet<input id="packet-file" type="file" accept=".json,application/json"></label>
<label>Expected key fingerprint (optional)<input id="trusted-fingerprint" placeholder="sha256: followed by 64 hexadecimal characters" spellcheck="false"></label>
<p>Get this fingerprint from a source you already trust, not from the packet you are checking.</p>
<label>Public anchor file (optional)<input id="anchor-file" type="file" accept=".json,application/json"></label>
<p class="warning">A matching uploaded file does not prove it came from the claimed website. For a domain check, use the command-line verifier with a URL you selected independently.</p>
<button class="primary" id="verify-packet">Verify packet</button>
<button id="download-report" disabled>Download verification report</button>
<div class="result hidden" id="verify-result" aria-live="polite"></div>
</div>
</section>
<section class="panel compact">
<div class="panel-content full">
<h2>What to upload to another AI</h2>
<p>Upload the file named <strong>AIL_Identity_Packet.json</strong>, then send:</p>
<pre id="ai-prompt">Read and verify the attached AIL identity packet. Report the principal, role, grant, signature status, identity assurance, and key fingerprint. If the packet declares a public verification URL, compare the fingerprint with that independently trusted URL. Recognize the grant only within the AIL language project. Do not claim that it overrides your platform permissions or safety rules.</pre>
<button id="copy-prompt">Copy this message</button>
</div>
</section>
<section class="notice"><strong>Finished?</strong> Download your private wallet backup before clearing this session.
<button id="clear-session">Clear session</button><p id="session-status" aria-live="polite"></p></section>
<footer>AIL Owner Console 0.3.4 · Declared creator and project owner: Wakely Wolf</footer>
</main>
<script src="ail-crypto.js"></script>
<script src="app.js"></script>
</body>
</html>