feat: Archon Swordsman import + Runecraft bilateral binding display - #1
Open
Flaxscrip wants to merge 1 commit into
Open
feat: Archon Swordsman import + Runecraft bilateral binding display#1Flaxscrip wants to merge 1 commit into
Flaxscrip wants to merge 1 commit into
Conversation
- CeremonyWizard: "Already have an Archon Swordsman?" bypass panel — paste session bundle from export-swordsman-key.ts to skip the ceremony entirely - SwordsmanAccountSettings: "Import Archon" button for post-ceremony identity replacement, with JSON validation and reload - spellweb-blade-bridge: extend SpellwebBladeImportPayloadV1, SpellwebBladeMeta, and InventoryBlade with swordsmanId / runecrafted / swordsmanSignature fields; propagate through applySpellwebBladeToSwordsmanSlots and parseAndAddBladeToInventory (markdown parser reads Runecraft section from blade.md automatically) - BladeInventory: ⚔️🔮 runecrafted badge with swordsmanId tooltip - SpellwebBladeImport: ⚔️🔮 inline badge on runecrafted blades Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds two capabilities to agentprivacy-spellbook:
Archon Swordsman import — users with an Archon-derived Swordsman identity (from
export-swordsman-key.tsagainst their Archon wallet) can import it directly, bypassing the random-key ceremony or replacing an existing identity post-ceremony.Runecraft bilateral binding display — blades imported from spellweb.ai that carry a dual Ed25519 Swordsman signature (
⚔️🔮 runecrafted) now show that status visually throughout the spellbook UI.Both features depend on the companion spellweb PR (mitchuski/spellweb#4) which extends
SpellwebBladePayloadV1with the Runecraft proof fields.Identity Model (context)
The Archon Swordsman is a deterministic Ed25519 keypair derived from an
ExcaliburDID in the user's Archon wallet — the same wallet that backs the spellweb Mage identity. This means:participantIdacross devices and sessionsexport-swordsman-key.ts --name ExcaliburA "session bundle" JSON is the handoff format:
{ "version": 1, "type": "archon-swordsman-session", "participantId": "ap-59f5daa10788eed6", "displayName": "Excalibur", "publicKeyHex": "59f5daa10788eed6...", "privateKeyHex": "<burned on tab close>", "archonDid": "did:cid:bagaaiera...", "trustTier": "dragon", "signature": "<AgentCard payload signed by private key>" }The private key goes to sessionStorage (cleared on tab close); the public key and participantId go to localStorage.
Key Files Changed
src/components/ceremony/CeremonyWizard.tsxsrc/components/ceremony/SwordsmanAccountSettings.tsxsrc/lib/spellweb-blade-bridge.tsSpellwebBladeImportPayloadV1,SpellwebBladeMeta, andInventoryBladeextended withswordsmanId?,runecrafted?,swordsmanSignature?; propagated through apply and markdown parse pathssrc/components/BladeInventory.tsx⚔️🔮 runecraftedbadge withswordsmanIdtooltipsrc/components/SpellwebBladeImport.tsx⚔️🔮inline badge on runecrafted blades in the inventory listRunecraft Bilateral Binding
A blade is "runecrafted" when a Swordsman has co-signed it using
runecraft.ts:The signature is stored in the blade
.mdexport under a## Runecraftsection. When the.mdis imported into spellbook,parseAndAddBladeToInventoryreads:The
⚔️🔮 runecraftedbadge then appears automatically — no extra user action needed.Test Plan
Prerequisites
.mdexports)export-swordsman-key.tsfromarchon-spellweb-demofor Archon Swordsman import1 — Archon Swordsman bypass at ceremony
/ceremonyfor the first time (no existing Swordsman)/orbsshows the correctparticipantId2 — Archon Swordsman import post-ceremony
participantIdandtrustTier3 — Runecrafted blade display
.mdfrom spellweb (one signed withrunecraft.ts)⚔️🔮 runecraftedbadge withswordsmanIdtooltip⚔️🔮inlineCompanion PR
mitchuski/spellweb#4 — Archon wallet integration (Mage identity, vault save/restore). Extend
SpellwebBladePayloadV1withswordsmanId,runecrafted,swordsmanSignatureso the Soulbis button carries bilateral proof to this app.🤖 Generated with Claude Code