chore: scaffold PYRE MVP monorepo (structure + docs)
pnpm + TypeScript workspace per design doc §13:
- apps/{web,api,worker} skeletons (Next.js 16, Fastify 5, BullMQ)
- packages/{core,solana,prometheus,db,config} (core has real types/DTOs;
solana/prometheus are stubs)
- programs/pyre-core placeholder (future Anchor, v1.0)
- docs/: PYRE_MVP_DESIGN (canonical), ARCHITECTURE, SECURITY, TOKEN_CLASSIFICATION
- CLAUDE.md, README, .env.example (no private-key var by design)
Skeleton + docs only — no Solana/business logic yet. All workspaces typecheck clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
23
.serena/memories/codebase_structure.md
Normal file
23
.serena/memories/codebase_structure.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Repo structure (pnpm + TypeScript monorepo)
|
||||
|
||||
Root: `/home/pyre/pyre`. pnpm workspaces (`apps/*`, `packages/*`). All packages: `@pyre/<name>`, ESM (`"type":"module"`), tsconfig extends `tsconfig.base.json` (strict, Bundler resolution, verbatimModuleSyntax → use `.js` extensions on relative imports).
|
||||
|
||||
## apps/ (runtime services)
|
||||
- `apps/web` (@pyre/web) — Next.js 15 + React 19 + Tailwind + Solana Wallet Adapter. Landing, wallet connect, scanner UI, cleanup preview, receipt page, Prometheus preview, admin review.
|
||||
- `apps/api` (@pyre/api) — Fastify 5. Endpoints (§14): POST /api/scan, /api/build/close-empty, /api/build/burn, /api/receipt, /api/prometheus/generate, + admin. Has /health live.
|
||||
- `apps/worker` (@pyre/worker) — BullMQ jobs: metadata enrichment, AI generation, image prompts, safety checks, collision checks, confirmation tracking, receipt enrichment.
|
||||
|
||||
## packages/ (shared libs)
|
||||
- `packages/core` (@pyre/core) — **real type defs**: `TokenClassification` enum (EMPTY_CLOSE_ONLY, INCINERATE_ONLY, TRANSMUTABLE, PROTECTED_SKIP, UNSUPPORTED), API DTOs, CleanupReceipt, Prometheus I/O, risk types. Lamports as strings.
|
||||
- `packages/solana` (@pyre/solana) — STUBS only (throw "not implemented"): parseTokenAccounts, buildCloseEmptyAccountsTx, buildBurnTx, simulateTransaction, decodeTransaction. deps @solana/web3.js, @solana/spl-token.
|
||||
- `packages/prometheus` (@pyre/prometheus) — STUBS: buildPrompt, runMetaMixer, parseOutput, runSafetyChecks, generateImagePrompt.
|
||||
- `packages/db` (@pyre/db) — table-name constants + createPool() stub (pg). Tables in §15.
|
||||
- `packages/config` (@pyre/config) — Env interface + loadConfig() stub mapping `.env.example`. No private-key var by design.
|
||||
|
||||
## other
|
||||
- `programs/pyre-core` — future Anchor program (v1.0, placeholder README).
|
||||
- `docs/` — PYRE_MVP_DESIGN.md (canonical), ARCHITECTURE.md, SECURITY.md, TOKEN_CLASSIFICATION.md.
|
||||
- `preview.html`, `scripts/`, `infra/`, `CLAUDE.md`, `.env.example`.
|
||||
|
||||
## CURRENT STATE
|
||||
Scaffold + docs only. NO Solana/business logic implemented (intentional). `pnpm install` has NOT been run. Dependency version ranges were set from model knowledge — verify against registry/context7 before relying on exact majors.
|
||||
21
.serena/memories/project_overview.md
Normal file
21
.serena/memories/project_overview.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# PYRE / Prometheus Protocol
|
||||
|
||||
Solana wallet-cleanup + ritual meme-rebirth protocol. Tagline: "Burn the dead. Feed the PYRE. Claim the Spawn."
|
||||
|
||||
## What it does
|
||||
Users connect a Solana wallet; PYRE scans SPL token accounts, classifies them, and helps the user safely close empty associated token accounts (ATAs) and burn junk — **returning reclaimed ATA rent to the user**. A later AI layer ("Prometheus") generates a new meme-token identity ("Spawn") from burned/transmuted remnants, launched semi-manually via Pump.fun.
|
||||
|
||||
## MVP scope (build order)
|
||||
- **v0.1 Burner/Cleaner** (current focus): wallet connect → scan → classify → close empty ATAs → optional burn → return rent → receipt.
|
||||
- v0.2 Prometheus Meta Mixer (AI generation, human-reviewed) · v0.3 Manual Pump.fun workflow · v0.4 Essence ledger (off-chain) · v1.0 PYRE Core Anchor program.
|
||||
|
||||
## NON-NEGOTIABLE trust rules
|
||||
- PYRE **never holds private keys**; never custodial signing; never auto-execute.
|
||||
- Recovered ATA rent **returns to the user by default** (never silently taxed/pooled).
|
||||
- Always **show + decode + match** a transaction preview before the user signs.
|
||||
- Classifier is conservative: **"Unknown means skip."** Never say "this token is safe" — say "appears eligible based on current checks."
|
||||
|
||||
## Out of scope for v0.1
|
||||
Auto Pump.fun launch, Essence vault, custom Solana program, Token-2022, NFTs, automatic valuable-token sacrifice, custodial signing, background automation.
|
||||
|
||||
Canonical spec: `docs/PYRE_MVP_DESIGN.md` (source of truth). See also `docs/SECURITY.md`, `docs/TOKEN_CLASSIFICATION.md`, `docs/ARCHITECTURE.md`, `CLAUDE.md`.
|
||||
23
.serena/memories/suggested_commands_and_conventions.md
Normal file
23
.serena/memories/suggested_commands_and_conventions.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Commands & conventions
|
||||
|
||||
## Toolchain (Linux, no sudo)
|
||||
- Node 22, `pnpm` 11.5.0 installed standalone at `~/.local/share/pnpm/bin` (added to ~/.bashrc PATH; new shells get it). If `pnpm` not found, use `~/.local/share/pnpm/bin/pnpm` or `source ~/.bashrc`.
|
||||
- `uv`/`uvx` at `~/.local/bin` (used by the Serena MCP server).
|
||||
|
||||
## Workspace commands (from repo root)
|
||||
- `pnpm install` — install all workspace deps (NOT yet run; expect first-run version fixups).
|
||||
- `pnpm -r build` · `pnpm -r typecheck` · `pnpm -r test` · `pnpm dev` (parallel dev).
|
||||
- Per package: `pnpm --filter @pyre/api dev`, etc.
|
||||
- `lint`/`test` are placeholder echo scripts for now.
|
||||
|
||||
## Conventions
|
||||
- TypeScript strict; ESM only. Because base tsconfig uses `verbatimModuleSyntax` + `moduleResolution: Bundler`, relative imports need explicit `.js` extensions.
|
||||
- Internal deps via `workspace:*`. Package names `@pyre/<name>`.
|
||||
- Lamport/SOL amounts passed as **strings** in DTOs.
|
||||
- Server must **recompute classification**; never trust client-submitted classifications.
|
||||
- Secrets only via env (`.env`, never committed). There is intentionally **no private-key/mnemonic env var**.
|
||||
|
||||
## First Claude Code prompts (from §20)
|
||||
1. Plan-only: "Read CLAUDE.md and docs/PYRE_MVP_DESIGN.md. Do not write code yet. Produce an implementation plan for PYRE MVP v0.1 ..."
|
||||
2. Then skeleton (already done): monorepo with pnpm workspaces.
|
||||
Next real work = Phase 1 (Wallet Scanner): implement scan endpoint + classification in @pyre/core/@pyre/solana, wallet-connect UI.
|
||||
Reference in New Issue
Block a user