Skip to content

wallet-wall/walletwall

v0.3.0Apache-2.0

Stablecoin intelligence and vault readiness for GitHub Copilot.

WalletWall plugin (Agent Plugins 1.0.0)

This directory is the Copilot plugin. It is self-contained.

plugin/
  plugin.json                                   manifest (name: walletwall, version 0.3.0)
  mcp.json                                      one local stdio server
  skills/walletwall-evidence/                   skill: how to use the tools without over-claiming
  server/walletwall-mcp.mjs                     GENERATED bundle of packages/mcp: WalletWall MCP (do not edit)
  THIRD_PARTY_NOTICES.md                        GENERATED license notices for the bundled packages and embedded fonts
  com.github.copilot/extensions/
    walletwall-evidence-explorer/               canvas extension: WalletWall (canvas id kept for continuity)

server/walletwall-mcp.mjs is produced by npm run build:bundle and checked for reproducibility by npm run verify:bundle (hash in security/bundle.sha512). THIRD_PARTY_NOTICES.md is produced by npm run gen:notices and checked by npm run verify:notices.

It needs no WalletWall account, no WalletWall backend, no GitHub App authentication and no remote service. It needs node on PATH.

WalletWall canvas

com.github.copilot/extensions/walletwall-evidence-explorer/ is a Copilot canvas extension (plain .mjs, no dependencies). It shows one WWEP evidence bundle as The Wall (a deterministic relationship graph of sources, observations, claims, WalletWall derivation and the vault readiness keystone), with the selected piece's support, authority class, freshness, finality, conflicts, limitations, sources and source lineage beside it, the readiness assembly, a Wallprint and a reserved (disabled) Receipt area. Design rules: docs/CANVAS_DESIGN_SYSTEM.md.

  • It asks the bundled MCP server (the same server/walletwall-mcp.mjs) for every state it displays. It computes nothing itself.
  • It serves its page from a loopback-only (127.0.0.1) listener that the Copilot app embeds. The listener is protected by an unguessable path key and a Host check, refuses a foreign Origin on its one state-changing route, and the page carries a Content-Security-Policy that allows no origin but its own. Fonts and brand images are embedded (brand.mjs, generated by npm run gen:canvas-brand from canvas/brand/); nothing is fetched.
  • Addresses are shown in full with their chain ID and Copy controls that copy exactly the full value.
  • It writes nothing to disk, stores nothing in the browser, and contacts no remote service. See docs/PLUGIN_PATH_PRIVACY.md for what is tested and what is not.
  • fixtures.mjs is generated from the conformance corpus by npm run gen:canvas (synthetic data only).
  • WallPrint disclosure view (wallprint-render.mjs, wallprint-styles.mjs, wallprint-client.mjs): opened with { "wallprint": "<lineage>" }, the same page shows one bundled synthetic WallPrint disclosure lineage as a disclosure document: the record, its lifecycle, every assessment as recorded, provenance, corrections and supersessions with the engine's semantic diff, and the receipt and replay results with their boundary. wallprint-fixtures.mjs is generated from the canonical WallPrint engine by npm run gen:wallprint; the page decides nothing. Contract: canvas/README.md, items 11 to 14.

Installing

The repository root carries a marketplace manifest (.github/plugin/marketplace.json) so the plugin can be added from a local checkout or from this repository. The exact steps and what was verified are in docs/DESKTOP_INSTALL_PROOF.md.