Files
archy/loop/prompt.md
T
DorianandClaude Opus 4.6 705e184a5b chore(loop): update overnight plan with Archy integration and 17 tasks
6 phases: ContentPanel wiring, Archy service integration, extraction
hardening to 100+ tests, Archy integration tests, code mode UX, and
final verification. Prompt updated with full Archy service inventory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:09:28 +00:00

5.4 KiB
Raw Blame History

You are hardening the AIUI content extraction pipeline, integrating Archy services, and completing incomplete features. Read these files first:

  1. loop/plan.md — Your task checklist (mark items - [x] as you complete them)
  2. CLAUDE.md — Project conventions, design system rules, and coding standards

Key Context

Content Extraction Pipeline

  • packages/app/src/composables/contentExtraction.ts — Extracts books, films, TV, songs, podcasts, places, images, code blocks, apps from AI response text
  • packages/app/src/composables/contentFiltering.ts — Query/response classifiers (isBookQuery, isTVQuery, etc.) and tab routing (filterTabsByContext)
  • packages/app/src/composables/useContentPanel.ts — Wires extraction functions to Vue reactive state and tab system
  • packages/app/src/components/content/ContentPanel.vue — Main content panel rendering grids and detail views
  • packages/app/src/components/content/ContentGridView.vue — Grid view (already has ImageGrid/PlaceGrid wired)
  • packages/app/src/__tests__/extractionQuality.test.ts — Extraction quality test suite (currently 64 tests)

Content flows: AI response text → extraction functions → useContentPanel refs → filterTabsByContext → ContentPanel/ContentGridView rendering

Archy Integration (CRITICAL — this is the main new work)

  • packages/app/src/services/archyBridge.ts — PostMessage client for AIUI ↔ Archipelago IPC (already implemented)
  • packages/app/src/composables/useArchy.ts — Reactive Vue wrapper (just created, needs extension)
  • packages/app/src/composables/useAI.ts — Already injects Archy context via buildArchyContext() in buildSystemPrompt()

Archy is a self-hosted Linux node OS with 23+ apps. AIUI runs as an iframe inside Archy at /aiui/. Communication is via postMessage with 5 context categories: apps, system, network, wallet, files. The bridge is initialized when ?embedded=true is in the URL.

Archy Services Available (that AIUI should know about):

  • Bitcoin Core (blockchain data, UTXO, fee estimates)
  • LND / Core Lightning / Lightning Stack (channels, payments, invoices)
  • BTCPay Server (payment processing)
  • Mempool (blockchain explorer)
  • Nextcloud (files, notes, contacts, calendar via WebDAV)
  • Immich (photos, ML-tagging)
  • Nostr relays (nostr-rs-relay, strfry)
  • Home Assistant (smart home)
  • Grafana (monitoring)
  • SearXNG (privacy search)
  • Ollama (local LLM)
  • Penpot (design)
  • OnlyOffice (documents)
  • Fedimint (federated custody)
  • Meshtastic (mesh networking)
  • DID Wallet (Web5 identity)

Data Handshake: AIUI requests context via archyBridge.requestContext(category). Archy's contextBroker responds with sanitized data (no secrets, no IPs, no keys). Currently wallet and files categories are stubs in Archy — build the AIUI consumer side anyway so it's ready when Archy implements them. Use realistic mock shapes.

API Path Note: All API paths use import.meta.env.BASE_URL prefix so they work at both / (dev) and /aiui/ (production). This was just implemented — don't change it.

Design System Rules (must follow for every file you touch)

  • Glass morphism only — use .glass, .glass-card, .glass-button, .glass-button-sm from src/styles/main.css
  • No light-mode conditionals — never use isDark ? pattern. The app is dark-only. Remove any existing light-mode code you encounter.
  • No bg-gray-* or bg-white — use bg-white/5, bg-white/10, bg-black/35 etc.
  • Text opacity scaletext-white/25/40/60/70/80/90/96text-white
  • Accent colourtext-accent (#F7931A), bg-accent/15, border-accent/30 for Bitcoin-orange highlights
  • Touch targets — min 44×44px, 8px gaps between targets
  • Font size — min 16px on all inputs (prevents iOS zoom)
  • Animationsanimate-scale-in, animate-fade-up, animate-fade-in from design system only

For each task in loop/plan.md:

  1. Find the first unchecked - [ ] item
  2. Read the task description carefully
  3. Read the relevant source files before making changes
  4. Implement the feature/fix following conventions and design system rules
  5. Run pnpm typecheck && pnpm lint — fix all errors before committing
  6. Run pnpm test — fix any failing tests
  7. If the task involves tests, run cd packages/app && npx vitest run specifically
  8. Commit: type(scope): description (conventional commits)
  9. Mark it done - [x] in loop/plan.md
  10. Move to the next unchecked task immediately

Rules

  • Never skip a testing gate — if tests fail, fix them before moving on
  • If a task is proving difficult, keep trying different approaches. Make at least 30 genuine attempts before giving up and moving on.
  • Always run typecheck + lint after every code change
  • Keep initial bundle < 250 KB gzipped — lazy-load anything heavy
  • Bitcoin only — never altcoins, never fiat payment flows
  • Privacy first — no external analytics calls, no telemetry
  • Do not stop until all tasks are checked or you are rate limited
  • When adding tests, aim for realistic AI response patterns, not trivial examples
  • When wiring components into ContentPanel.vue, follow the exact same pattern used for existing content types (BookGrid/BookDetail, TVSeriesGrid/TVSeriesDetail, etc.)
  • When building Archy integration, the AIUI side should be resilient — always handle the case where Archy doesn't respond or data is empty
  • Commit and push after each completed phase (TEST: tasks)