diff --git a/.pi/SYSTEM.md b/.feynman/SYSTEM.md similarity index 97% rename from .pi/SYSTEM.md rename to .feynman/SYSTEM.md index 37d790a..80e8f72 100644 --- a/.pi/SYSTEM.md +++ b/.feynman/SYSTEM.md @@ -15,9 +15,9 @@ Operating rules: - Never answer a latest/current question from arXiv or alpha-backed paper search alone. - For AI model or product claims, prefer official docs/vendor pages plus recent web sources over old papers. - Use the installed Pi research packages for broader web/PDF access, document parsing, citation workflows, background processes, memory, session recall, and delegated subtasks when they reduce friction. -- Feynman ships project subagents for research work. Prefer the `researcher`, `writer`, `citation`, and `reviewer` subagents for larger research tasks when decomposition clearly helps. +- Feynman ships project subagents for research work. Prefer the `researcher`, `writer`, `verifier`, and `reviewer` subagents for larger research tasks when decomposition clearly helps. - Use subagents when decomposition meaningfully reduces context pressure or lets you parallelize evidence gathering. For detached long-running work, prefer background subagent execution with `clarify: false, async: true`. -- For deep research, act like a lead researcher by default: plan first, use hidden worker batches only when breadth justifies them, synthesize batch results, and finish with a verification/citation pass. +- For deep research, act like a lead researcher by default: plan first, use hidden worker batches only when breadth justifies them, synthesize batch results, and finish with a verification pass. - Do not force chain-shaped orchestration onto the user. Multi-agent decomposition is an internal tactic, not the primary UX. - For AI research artifacts, default to pressure-testing the work before polishing it. Use review-style workflows to check novelty positioning, evaluation design, baseline fairness, ablations, reproducibility, and likely reviewer objections. - Use the visualization packages when a chart, diagram, or interactive widget would materially improve understanding. Prefer charts for quantitative comparisons, Mermaid for simple process/architecture diagrams, and interactive HTML widgets for exploratory visual explanations. diff --git a/.pi/agents/researcher.md b/.feynman/agents/researcher.md similarity index 86% rename from .pi/agents/researcher.md rename to .feynman/agents/researcher.md index eef2717..8b54e97 100644 --- a/.pi/agents/researcher.md +++ b/.feynman/agents/researcher.md @@ -51,6 +51,12 @@ Numbered list matching the evidence table: 1. Author/Title — URL 2. Author/Title — URL +## Context hygiene +- Write findings to the output file progressively. Do not accumulate full page contents in your working memory — extract what you need, write it to file, move on. +- When `includeContent: true` returns large pages, extract relevant quotes and discard the rest immediately. +- If your search produces 10+ results, triage by title/snippet first. Only fetch full content for the top candidates. +- Return a one-line summary to the parent, not full findings. The parent reads the output file. + ## Output contract - Save to the output file (default: `research.md`). - Minimum viable output: evidence table with ≥5 numbered entries, findings with inline references, and a numbered Sources section. diff --git a/.pi/agents/reviewer.md b/.feynman/agents/reviewer.md similarity index 100% rename from .pi/agents/reviewer.md rename to .feynman/agents/reviewer.md diff --git a/.pi/agents/citation.md b/.feynman/agents/verifier.md similarity index 97% rename from .pi/agents/citation.md rename to .feynman/agents/verifier.md index a931abd..d305fd7 100644 --- a/.pi/agents/citation.md +++ b/.feynman/agents/verifier.md @@ -1,5 +1,5 @@ --- -name: citation +name: verifier description: Post-process a draft to add inline citations and verify every source URL. thinking: medium tools: read, bash, grep, find, ls, write, edit @@ -7,7 +7,7 @@ output: cited.md defaultProgress: true --- -You are Feynman's citation agent. +You are Feynman's verifier agent. You receive a draft document and the research files it was built from. Your job is to: diff --git a/.pi/agents/writer.md b/.feynman/agents/writer.md similarity index 91% rename from .pi/agents/writer.md rename to .feynman/agents/writer.md index 1789bab..3e1a6ab 100644 --- a/.pi/agents/writer.md +++ b/.feynman/agents/writer.md @@ -36,8 +36,8 @@ Unresolved issues, disagreements between sources, gaps in evidence. - Use clean Markdown structure and add equations only when they materially help. - Keep the narrative readable, but never outrun the evidence. - Produce artifacts that are ready to review in a browser or PDF preview. -- Do NOT add inline citations — the citation agent handles that as a separate post-processing step. -- Do NOT add a Sources section — the citation agent builds that. +- Do NOT add inline citations — the verifier agent handles that as a separate post-processing step. +- Do NOT add a Sources section — the verifier agent builds that. ## Output contract - Save the main artifact to the specified output path (default: `draft.md`). diff --git a/.pi/settings.json b/.feynman/settings.json similarity index 100% rename from .pi/settings.json rename to .feynman/settings.json diff --git a/.pi/themes/feynman.json b/.feynman/themes/feynman.json similarity index 100% rename from .pi/themes/feynman.json rename to .feynman/themes/feynman.json diff --git a/.gitignore b/.gitignore index e244717..dd61241 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ node_modules .env -.feynman -.pi/npm -.pi/git -.pi/schedule-prompts.json +.feynman/npm +.feynman/git +.feynman/sessions +.feynman/schedule-prompts.json dist *.tgz outputs/* diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..dc41e09 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,53 @@ +# Agents + +`AGENTS.md` is the repo-level contract for agents working in this repository. + +Pi subagent behavior does **not** live here. The source of truth for bundled Pi subagents is `.feynman/agents/*.md`, which the runtime syncs into the Pi agent directory. If you need to change how `researcher`, `reviewer`, `writer`, or `verifier` behave, edit the corresponding file in `.feynman/agents/` instead of duplicating those prompts here. + +## Pi subagents + +Feynman ships four bundled research subagents: + +- `researcher` +- `reviewer` +- `writer` +- `verifier` + +They are defined in `.feynman/agents/` and invoked via the Pi `subagent` tool. + +## What belongs here + +Keep this file focused on cross-agent repo conventions: + +- output locations and file naming expectations +- provenance and verification requirements +- handoff rules between the lead agent and subagents +- remote delegation conventions + +Do **not** restate per-agent prompt text here unless there is a repo-wide constraint that applies to all agents. + +## Output conventions + +- Research outputs go in `outputs/`. +- Paper-style drafts go in `papers/`. +- Session logs go in `notes/`. +- Plan artifacts for long-running workflows go in `outputs/.plans/`. +- Intermediate research artifacts such as `research-web.md` and `research-papers.md` are written to disk by subagents and read by the lead agent. They are not returned inline unless the user explicitly asks for them. + +## Provenance and verification + +- Every output from `/deepresearch` and `/lit` must include a `.provenance.md` sidecar. +- Provenance sidecars should record source accounting and verification status. +- Source verification and citation cleanup belong in the `verifier` stage, not in ad hoc edits after delivery. +- Verification passes should happen before delivery when the workflow calls for them. + +## Delegation rules + +- The lead agent plans, delegates, synthesizes, and delivers. +- Use subagents when the work is meaningfully decomposable; do not spawn them for trivial work. +- Prefer file-based handoffs over dumping large intermediate results back into parent context. +- When delegating to remote machines, retrieve final artifacts back into the local workspace and save them locally. + +## Remote delegation + +Feynman can delegate tasks to remote cloud machines via the `computer-fleet` and `computer-acp` skills. Load those skills on demand for CLI usage, session management, ACP bridging, and file retrieval. diff --git a/README.md b/README.md index 5d9a2dd..dab80cb 100644 --- a/README.md +++ b/README.md @@ -1,161 +1,99 @@ # Feynman -`feynman` is a research-first CLI built on `@mariozechner/pi-coding-agent`. - -It keeps the useful parts of a coding agent: -- file access -- shell execution -- persistent sessions -- custom extensions - -But it biases the runtime toward general research work: -- literature review -- source discovery and paper lookup -- source comparison -- research memo writing -- paper and report drafting -- session recall and durable research memory -- recurring and deferred research jobs -- replication planning when relevant - -The primary paper backend is `@companion-ai/alpha-hub` and your alphaXiv account. -The rest of the workflow is augmented through a curated `.pi/settings.json` package stack. - -## Install +The open source AI research agent ```bash npm install -g @companion-ai/feynman ``` -Then authenticate alphaXiv and start the CLI: - ```bash feynman setup feynman ``` -For local development: +--- + +## What you type → what happens + +| Prompt | Result | +| --- | --- | +| `feynman "what do we know about scaling laws"` | Searches papers and web, produces a cited research brief | +| `feynman deepresearch "mechanistic interpretability"` | Multi-agent investigation with parallel researchers, synthesis, verification | +| `feynman lit "RLHF alternatives"` | Literature review with consensus, disagreements, open questions | +| `feynman audit 2401.12345` | Compares paper claims against the public codebase | +| `feynman replicate "chain-of-thought improves math"` | Asks where to run, then builds a replication plan | +| `feynman "summarize this PDF" --prompt paper.pdf` | One-shot mode, no REPL | + +--- + +## Workflows + +Ask naturally or use slash commands as shortcuts. + +| Command | What it does | +| --- | --- | +| `/deepresearch ` | Source-heavy multi-agent investigation | +| `/lit ` | Literature review from paper search and primary sources | +| `/review ` | Simulated peer review with severity and revision plan | +| `/audit ` | Paper vs. codebase mismatch audit | +| `/replicate ` | Replication plan with environment selection | +| `/compare ` | Source comparison matrix | +| `/draft ` | Paper-style draft from research findings | +| `/autoresearch ` | Autonomous experiment loop | +| `/watch ` | Recurring research watch | + +--- + +## Agents + +Four bundled research agents, dispatched automatically or via subagent commands. + +- **Researcher** — gather evidence across papers, web, repos, docs +- **Reviewer** — simulated peer review with severity-graded feedback +- **Writer** — structured drafts from research notes +- **Verifier** — inline citations, source URL verification, dead link cleanup + +--- + +## Tools + +- **[AlphaXiv](https://www.alphaxiv.org/)** — paper search, Q&A, code reading, persistent annotations +- **Web search** — Gemini or Perplexity, zero-config default via signed-in Chromium +- **Session search** — indexed recall across prior research sessions +- **Preview** — browser and PDF export of generated artifacts + +--- + +## CLI ```bash -cd /Users/advaitpaliwal/Companion/Code/feynman -npm install -cp .env.example .env -npm run start +feynman # REPL +feynman setup # guided setup +feynman doctor # diagnose everything +feynman status # current config summary +feynman model login [provider] # model auth +feynman model set # set default model +feynman alpha login # alphaXiv auth +feynman search status # web search config ``` -Feynman uses Pi under the hood, but the user-facing entrypoint is `feynman`, not `pi`. -When you run `feynman`, it launches the real Pi interactive TUI with Feynman's research extensions, prompt templates, package stack, memory snapshot, and branded defaults preloaded. +--- -Most users should not need slash commands. The intended default is: -- ask naturally -- let Feynman route into the right workflow -- use slash commands only as explicit shortcuts or overrides +## How it works -## Commands +Built on [Pi](https://github.com/mariozechner/pi-coding-agent) and [Alpha Hub](https://github.com/getcompanion-ai/alpha-hub). Pi provides the agent runtime — file access, shell execution, persistent sessions, custom extensions. Alpha Hub connects to [alphaXiv](https://www.alphaxiv.org/) for paper search, Q&A, code reading, and annotations. -Inside the REPL: +Every output is source-grounded. Claims link to papers, docs, or repos with direct URLs. -- `/help` shows local commands -- `/init` bootstraps `AGENTS.md` and `notes/session-logs/` -- `/alpha-login` signs in to alphaXiv -- `/alpha-status` checks alphaXiv auth -- `/new` starts a new persisted session -- `/exit` quits -- `/deepresearch ` runs a thorough source-heavy investigation workflow -- `/lit ` expands the literature-review prompt template -- `/review ` simulates a peer review for an AI research artifact -- `/audit ` expands the paper/code audit prompt template -- `/replicate ` expands the replication prompt template -- `/draft ` expands the paper-style writing prompt template -- `/compare ` expands the source comparison prompt template -- `/autoresearch ` expands the autonomous experiment loop -- `/watch ` schedules or prepares a recurring research watch -- `/log` writes a durable session log to `notes/` -- `/jobs` inspects active background work +--- -Package-powered workflows inside the REPL: +## Contributing -- `/agents` opens the subagent and chain manager -- `/run` and `/parallel` delegate work to subagents when you want explicit decomposition -- `/ps` opens the background process panel -- `/schedule-prompt` manages recurring and deferred jobs -- `/search` opens indexed session search -- `/preview` previews generated artifacts in the terminal, browser, or PDF - -Outside the REPL: - -- `feynman setup` runs the guided setup for model auth, alpha login, Pi web access, and preview deps -- `feynman model login ` logs into a Pi OAuth model provider from the outer Feynman CLI -- `feynman --alpha-login` signs in to alphaXiv -- `feynman --alpha-status` checks alphaXiv auth -- `feynman --doctor` checks models, auth, preview dependencies, and branded settings -- `feynman --setup-preview` installs `pandoc` automatically on macOS/Homebrew systems when preview support is missing - -## Web Search Routing - -Feynman v1 keeps web access simple: it uses the bundled `pi-web-access` package directly instead of maintaining a second Feynman-owned provider layer. - -The Pi web stack underneath supports three runtime routes: - -- `auto` — prefer Perplexity when configured, otherwise fall back to Gemini -- `perplexity` — force Perplexity Sonar -- `gemini` — force Gemini - -By default, the expected path is zero-config Gemini Browser via a signed-in Chromium profile. Advanced users can edit `~/.pi/web-search.json` directly if they want Gemini API keys, Perplexity keys, or a different route. - -Useful commands: - -- `feynman search status` — show the active Pi web-access route and config path - -## Custom Tools - -The starter extension adds: - -- `alpha_search` for alphaXiv-backed paper discovery -- `alpha_get_paper` for fetching paper reports or raw text -- `alpha_ask_paper` for targeted paper Q&A -- `alpha_annotate_paper` for persistent local notes -- `alpha_list_annotations` for recall across sessions -- `alpha_read_code` for reading a paper repository -- `session_search` for recovering prior Feynman work from stored transcripts -- `preview_file` for browser/PDF review of generated artifacts - -Feynman also ships bundled research subagents in `.pi/agents/`: - -- `researcher` for evidence gathering -- `reviewer` for peer-review style criticism -- `writer` for polished memo and draft writing -- `citation` for inline citations and source verification - -Feynman uses `@companion-ai/alpha-hub` directly in-process rather than shelling out to the CLI. - -## Curated Pi Stack - -Feynman loads a lean research stack from [.pi/settings.json](/Users/advaitpaliwal/Companion/Code/feynman/.pi/settings.json): - -- `pi-subagents` for parallel literature gathering and decomposition -- `pi-btw` for fast side-thread /btw conversations without interrupting the main run -- `pi-docparser` for PDFs, Office docs, spreadsheets, and images -- `pi-web-access` for broader web, GitHub, PDF, and media access -- `pi-markdown-preview` for polished Markdown and LaTeX-heavy research writeups -- `@walterra/pi-charts` for charts and quantitative visualizations -- `pi-generative-ui` for interactive HTML-style widgets -- `pi-mermaid` for diagrams in the TUI -- `@aliou/pi-processes` for long-running experiments and log tails -- `pi-zotero` for citation-library workflows -- `@kaiserlich-dev/pi-session-search` for indexed session recall and summarize/resume UI -- `pi-schedule-prompt` for recurring and deferred research jobs -- `@samfp/pi-memory` for automatic preference/correction memory across sessions - -The default expectation is source-grounded outputs with explicit `Sources` sections containing direct URLs and durable artifacts written to `outputs/`, `notes/`, `experiments/`, or `papers/`. - -## Layout - -```text -feynman/ -├── .pi/agents/ # Bundled research subagents and chains -├── extensions/ # Custom research tools -├── papers/ # Polished paper-style drafts and writeups -├── prompts/ # Slash-style prompt templates -└── src/ # Branded launcher around the embedded Pi TUI +```bash +git clone https://github.com/getcompanion-ai/feynman.git +cd feynman && npm install && npm run start ``` + +[Docs](https://feynman.companion.ai/docs) · [MIT License](LICENSE) + +Built on [Pi](https://github.com/mariozechner/pi-coding-agent) and [Alpha Hub](https://github.com/getcompanion-ai/alpha-hub). diff --git a/extensions/research-tools.ts b/extensions/research-tools.ts index 7c7b303..560b2b7 100644 --- a/extensions/research-tools.ts +++ b/extensions/research-tools.ts @@ -6,7 +6,7 @@ import { registerHelpCommand } from "./research-tools/help.js"; import { registerInitCommand, registerPreviewTool, registerSessionSearchTool } from "./research-tools/project.js"; export default function researchTools(pi: ExtensionAPI): void { - const cache: { agentSummaryPromise?: Promise<{ count: number; lines: string[] }> } = {}; + const cache: { agentSummaryPromise?: Promise<{ agents: string[]; chains: string[] }> } = {}; pi.on("session_start", async (_event, ctx) => { await installFeynmanHeader(pi, ctx, cache); diff --git a/extensions/research-tools/alpha.ts b/extensions/research-tools/alpha.ts index 40c294b..d3e3fbf 100644 --- a/extensions/research-tools/alpha.ts +++ b/extensions/research-tools/alpha.ts @@ -15,11 +15,12 @@ import { import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; import { Type } from "@sinclair/typebox"; +import { getExtensionCommandSpec } from "../../metadata/commands.mjs"; import { formatToolText } from "./shared.js"; export function registerAlphaCommands(pi: ExtensionAPI): void { pi.registerCommand("alpha-login", { - description: "Sign in to alphaXiv from inside Feynman.", + description: getExtensionCommandSpec("alpha-login")?.description ?? "Sign in to alphaXiv from inside Feynman.", handler: async (_args, ctx) => { if (isAlphaLoggedIn()) { const name = getAlphaUserName(); @@ -34,7 +35,7 @@ export function registerAlphaCommands(pi: ExtensionAPI): void { }); pi.registerCommand("alpha-logout", { - description: "Clear alphaXiv auth from inside Feynman.", + description: getExtensionCommandSpec("alpha-logout")?.description ?? "Clear alphaXiv auth from inside Feynman.", handler: async (_args, ctx) => { logoutAlpha(); ctx.ui.notify("alphaXiv auth cleared", "info"); @@ -42,7 +43,7 @@ export function registerAlphaCommands(pi: ExtensionAPI): void { }); pi.registerCommand("alpha-status", { - description: "Show alphaXiv authentication status.", + description: getExtensionCommandSpec("alpha-status")?.description ?? "Show alphaXiv authentication status.", handler: async (_args, ctx) => { if (!isAlphaLoggedIn()) { ctx.ui.notify("alphaXiv not connected", "warning"); diff --git a/extensions/research-tools/header.ts b/extensions/research-tools/header.ts index 88a8f1c..370d405 100644 --- a/extensions/research-tools/header.ts +++ b/extensions/research-tools/header.ts @@ -106,7 +106,7 @@ async function buildAgentCatalogSummary(): Promise<{ agents: string[]; chains: s const agents: string[] = []; const chains: string[] = []; try { - const entries = await readdir(resolvePath(APP_ROOT, ".pi", "agents"), { withFileTypes: true }); + const entries = await readdir(resolvePath(APP_ROOT, ".feynman", "agents"), { withFileTypes: true }); for (const entry of entries) { if (!entry.isFile() || !entry.name.endsWith(".md")) continue; if (entry.name.endsWith(".chain.md")) { @@ -243,9 +243,13 @@ export function installFeynmanHeader( pushList("Chains", agentData.chains); if (activity) { + const maxActivityLen = leftW * 2; + const trimmed = activity.length > maxActivityLen + ? `${activity.slice(0, maxActivityLen - 1)}…` + : activity; leftLines.push(""); leftLines.push(theme.fg("accent", theme.bold("Last Activity"))); - for (const line of wrapWords(activity, leftW)) { + for (const line of wrapWords(trimmed, leftW)) { leftLines.push(theme.fg("dim", line)); } } diff --git a/extensions/research-tools/help.ts b/extensions/research-tools/help.ts index e12ec53..fbdedec 100644 --- a/extensions/research-tools/help.ts +++ b/extensions/research-tools/help.ts @@ -1,59 +1,82 @@ import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; +import { + extensionCommandSpecs, + formatSlashUsage, + getExtensionCommandSpec, + livePackageCommandGroups, + readPromptSpecs, +} from "../../metadata/commands.mjs"; +import { APP_ROOT } from "./shared.js"; type HelpCommand = { usage: string; description: string }; type HelpSection = { title: string; commands: HelpCommand[] }; -function buildHelpSections(): HelpSection[] { +function buildHelpSections(pi: ExtensionAPI): HelpSection[] { + const liveCommands = new Map(pi.getCommands().map((command) => [command.name, command])); + const promptSpecs = readPromptSpecs(APP_ROOT); + const sections = new Map(); + + for (const command of promptSpecs.filter((entry) => entry.section !== "Internal")) { + const live = liveCommands.get(command.name); + if (!live) continue; + const items = sections.get(command.section) ?? []; + items.push({ + usage: formatSlashUsage(command), + description: live.description ?? command.description, + }); + sections.set(command.section, items); + } + + for (const command of extensionCommandSpecs.filter((entry) => entry.publicDocs)) { + const live = liveCommands.get(command.name); + if (!live) continue; + const items = sections.get(command.section) ?? []; + items.push({ + usage: formatSlashUsage(command), + description: live.description ?? command.description, + }); + sections.set(command.section, items); + } + + const ownedNames = new Set([ + ...promptSpecs.filter((entry) => entry.section !== "Internal").map((entry) => entry.name), + ...extensionCommandSpecs.filter((entry) => entry.publicDocs).map((entry) => entry.name), + ]); + + for (const group of livePackageCommandGroups) { + const commands: HelpCommand[] = []; + for (const spec of group.commands) { + const command = liveCommands.get(spec.name); + if (!command || ownedNames.has(command.name)) continue; + commands.push({ + usage: spec.usage, + description: command.description ?? "", + }); + } + + if (commands.length > 0) { + sections.set(group.title, commands); + } + } + return [ - { - title: "Research Workflows", - commands: [ - { usage: "/deepresearch ", description: "Source-heavy investigation with parallel researchers." }, - { usage: "/lit ", description: "Literature review using paper search." }, - { usage: "/review ", description: "Simulated peer review with objections and revision plan." }, - { usage: "/audit ", description: "Audit a paper against its public codebase." }, - { usage: "/replicate ", description: "Replication workflow for a paper or claim." }, - { usage: "/draft ", description: "Paper-style draft from research findings." }, - { usage: "/compare ", description: "Compare sources with agreements and disagreements." }, - { usage: "/autoresearch ", description: "Autonomous experiment optimization loop." }, - { usage: "/watch ", description: "Recurring research watch on a topic." }, - ], - }, - { - title: "Agents & Delegation", - commands: [ - { usage: "/agents", description: "Open the agent and chain manager." }, - { usage: "/run ", description: "Run a single subagent." }, - { usage: "/chain agent1 -> agent2", description: "Run agents in sequence." }, - { usage: "/parallel agent1 -> agent2", description: "Run agents in parallel." }, - ], - }, - { - title: "Project & Session", - commands: [ - { usage: "/init", description: "Bootstrap AGENTS.md and session-log folders." }, - { usage: "/log", description: "Write a session log to notes/." }, - { usage: "/jobs", description: "Inspect active background work." }, - { usage: "/search", description: "Search prior sessions." }, - { usage: "/preview", description: "Preview a generated artifact." }, - ], - }, - { - title: "Setup", - commands: [ - { usage: "/alpha-login", description: "Sign in to alphaXiv." }, - { usage: "/alpha-status", description: "Check alphaXiv auth." }, - { usage: "/alpha-logout", description: "Clear alphaXiv auth." }, - ], - }, - ]; + "Research Workflows", + "Project & Session", + "Setup", + "Agents & Delegation", + "Bundled Package Commands", + ] + .map((title) => ({ title, commands: sections.get(title) ?? [] })) + .filter((section) => section.commands.length > 0); } export function registerHelpCommand(pi: ExtensionAPI): void { pi.registerCommand("help", { - description: "Show grouped Feynman commands and prefill the editor with a selected command.", + description: + getExtensionCommandSpec("help")?.description ?? + "Show grouped Feynman commands and prefill the editor with a selected command.", handler: async (_args, ctx) => { - const sections = buildHelpSections(); + const sections = buildHelpSections(pi); const items = sections.flatMap((section) => [ `--- ${section.title} ---`, ...section.commands.map((cmd) => `${cmd.usage} — ${cmd.description}`), diff --git a/extensions/research-tools/project.ts b/extensions/research-tools/project.ts index a81ccb5..8601946 100644 --- a/extensions/research-tools/project.ts +++ b/extensions/research-tools/project.ts @@ -4,13 +4,14 @@ import { dirname, resolve as resolvePath } from "node:path"; import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; import { Type } from "@sinclair/typebox"; +import { getExtensionCommandSpec } from "../../metadata/commands.mjs"; import { renderHtmlPreview, renderPdfPreview, openWithDefaultApp, pathExists, buildProjectAgentsTemplate, buildSessionLogsReadme } from "./preview.js"; import { formatToolText } from "./shared.js"; import { searchSessionTranscripts } from "./session-search.js"; export function registerInitCommand(pi: ExtensionAPI): void { pi.registerCommand("init", { - description: "Initialize AGENTS.md and session-log folders for a research project.", + description: getExtensionCommandSpec("init")?.description ?? "Initialize AGENTS.md and session-log folders for a research project.", handler: async (_args, ctx) => { const agentsPath = resolvePath(ctx.cwd, "AGENTS.md"); const notesDir = resolvePath(ctx.cwd, "notes"); diff --git a/metadata/commands.d.mts b/metadata/commands.d.mts new file mode 100644 index 0000000..2f39d2a --- /dev/null +++ b/metadata/commands.d.mts @@ -0,0 +1,46 @@ +export type PromptSpec = { + name: string; + description: string; + args: string; + section: string; + topLevelCli: boolean; +}; + +export type ExtensionCommandSpec = { + name: string; + args: string; + section: string; + description: string; + publicDocs: boolean; +}; + +export type LivePackageCommandSpec = { + name: string; + usage: string; +}; + +export type LivePackageCommandGroup = { + title: string; + commands: LivePackageCommandSpec[]; +}; + +export type CliCommand = { + usage: string; + description: string; +}; + +export type CliCommandSection = { + title: string; + commands: CliCommand[]; +}; + +export declare function readPromptSpecs(appRoot: string): PromptSpec[]; +export declare const extensionCommandSpecs: ExtensionCommandSpec[]; +export declare const livePackageCommandGroups: LivePackageCommandGroup[]; +export declare const cliCommandSections: CliCommandSection[]; +export declare const legacyFlags: CliCommand[]; +export declare const topLevelCommandNames: string[]; + +export declare function formatSlashUsage(command: { name: string; args?: string }): string; +export declare function formatCliWorkflowUsage(command: { name: string; args?: string }): string; +export declare function getExtensionCommandSpec(name: string): ExtensionCommandSpec | undefined; diff --git a/metadata/commands.mjs b/metadata/commands.mjs new file mode 100644 index 0000000..7e4d1e1 --- /dev/null +++ b/metadata/commands.mjs @@ -0,0 +1,133 @@ +import { readFileSync, readdirSync } from "node:fs"; +import { resolve } from "node:path"; + +function parseFrontmatter(text) { + const match = text.match(/^---\n([\s\S]*?)\n---\n?/); + if (!match) return {}; + + const frontmatter = {}; + for (const line of match[1].split("\n")) { + const separator = line.indexOf(":"); + if (separator === -1) continue; + const key = line.slice(0, separator).trim(); + const value = line.slice(separator + 1).trim(); + if (!key) continue; + frontmatter[key] = value; + } + return frontmatter; +} + +export function readPromptSpecs(appRoot) { + const dir = resolve(appRoot, "prompts"); + return readdirSync(dir) + .filter((f) => f.endsWith(".md")) + .map((f) => { + const text = readFileSync(resolve(dir, f), "utf8"); + const fm = parseFrontmatter(text); + return { + name: f.replace(/\.md$/, ""), + description: fm.description ?? "", + args: fm.args ?? "", + section: fm.section ?? "Research Workflows", + topLevelCli: fm.topLevelCli === "true", + }; + }); +} + +export const extensionCommandSpecs = [ + { name: "help", args: "", section: "Project & Session", description: "Show grouped Feynman commands and prefill the editor with a selected command.", publicDocs: true }, + { name: "init", args: "", section: "Project & Session", description: "Bootstrap AGENTS.md and session-log folders for a research project.", publicDocs: true }, + { name: "alpha-login", args: "", section: "Setup", description: "Sign in to alphaXiv from inside Feynman.", publicDocs: true }, + { name: "alpha-status", args: "", section: "Setup", description: "Show alphaXiv authentication status.", publicDocs: true }, + { name: "alpha-logout", args: "", section: "Setup", description: "Clear alphaXiv auth from inside Feynman.", publicDocs: true }, +]; + +export const livePackageCommandGroups = [ + { + title: "Agents & Delegation", + commands: [ + { name: "agents", usage: "/agents" }, + { name: "run", usage: "/run " }, + { name: "chain", usage: "/chain agent1 -> agent2" }, + { name: "parallel", usage: "/parallel agent1 -> agent2" }, + ], + }, + { + title: "Bundled Package Commands", + commands: [ + { name: "ps", usage: "/ps" }, + { name: "schedule-prompt", usage: "/schedule-prompt" }, + { name: "search", usage: "/search" }, + { name: "preview", usage: "/preview" }, + { name: "new", usage: "/new" }, + { name: "quit", usage: "/quit" }, + { name: "exit", usage: "/exit" }, + ], + }, +]; + +export const cliCommandSections = [ + { + title: "Core", + commands: [ + { usage: "feynman", description: "Launch the interactive REPL." }, + { usage: "feynman chat [prompt]", description: "Start chat explicitly, optionally with an initial prompt." }, + { usage: "feynman help", description: "Show CLI help." }, + { usage: "feynman setup", description: "Run the guided setup wizard." }, + { usage: "feynman doctor", description: "Diagnose config, auth, Pi runtime, and preview dependencies." }, + { usage: "feynman status", description: "Show the current setup summary." }, + ], + }, + { + title: "Model Management", + commands: [ + { usage: "feynman model list", description: "List available models in Pi auth storage." }, + { usage: "feynman model login [id]", description: "Login to a Pi OAuth model provider." }, + { usage: "feynman model logout [id]", description: "Logout from a Pi OAuth model provider." }, + { usage: "feynman model set ", description: "Set the default model." }, + ], + }, + { + title: "AlphaXiv", + commands: [ + { usage: "feynman alpha login", description: "Sign in to alphaXiv." }, + { usage: "feynman alpha logout", description: "Clear alphaXiv auth." }, + { usage: "feynman alpha status", description: "Check alphaXiv auth status." }, + ], + }, + { + title: "Utilities", + commands: [ + { usage: "feynman search status", description: "Show Pi web-access status and config path." }, + { usage: "feynman update [package]", description: "Update installed packages, or a specific package." }, + ], + }, +]; + +export const legacyFlags = [ + { usage: '--prompt ""', description: "Run one prompt and exit." }, + { usage: "--alpha-login", description: "Sign in to alphaXiv and exit." }, + { usage: "--alpha-logout", description: "Clear alphaXiv auth and exit." }, + { usage: "--alpha-status", description: "Show alphaXiv auth status and exit." }, + { usage: "--model ", description: "Force a specific model." }, + { usage: "--thinking ", description: "Set thinking level: off | minimal | low | medium | high | xhigh." }, + { usage: "--cwd ", description: "Set the working directory for tools." }, + { usage: "--session-dir ", description: "Set the session storage directory." }, + { usage: "--new-session", description: "Start a new persisted session." }, + { usage: "--doctor", description: "Alias for `feynman doctor`." }, + { usage: "--setup-preview", description: "Alias for `feynman setup preview`." }, +]; + +export const topLevelCommandNames = ["alpha", "chat", "doctor", "help", "model", "search", "setup", "status", "update"]; + +export function formatSlashUsage(command) { + return `/${command.name}${command.args ? ` ${command.args}` : ""}`; +} + +export function formatCliWorkflowUsage(command) { + return `feynman ${command.name}${command.args ? ` ${command.args}` : ""}`; +} + +export function getExtensionCommandSpec(name) { + return extensionCommandSpecs.find((command) => command.name === name); +} diff --git a/package.json b/package.json index 0cf699d..3a0fa22 100644 --- a/package.json +++ b/package.json @@ -9,13 +9,16 @@ "files": [ "bin/", "dist/", - ".pi/agents/", - ".pi/settings.json", - ".pi/SYSTEM.md", - ".pi/themes/", + "metadata/", + ".feynman/agents/", + ".feynman/settings.json", + ".feynman/SYSTEM.md", + ".feynman/themes/", "extensions/", "prompts/", "scripts/", + "skills/", + "AGENTS.md", "README.md", ".env.example" ], diff --git a/prompts/audit.md b/prompts/audit.md index 9d4611d..d80a61f 100644 --- a/prompts/audit.md +++ b/prompts/audit.md @@ -1,10 +1,13 @@ --- description: Compare a paper's claims against its public codebase and identify mismatches, omissions, and reproducibility risks. +args: +section: Research Workflows +topLevelCli: true --- Audit the paper and codebase for: $@ Requirements: -- Use the `researcher` subagent for evidence gathering and the `citation` subagent to verify sources and add inline citations when the audit is non-trivial. +- Use the `researcher` subagent for evidence gathering and the `verifier` subagent to verify sources and add inline citations when the audit is non-trivial. - Compare claimed methods, defaults, metrics, and data handling against the actual code. - Call out missing code, mismatches, ambiguous defaults, and reproduction risks. - Save exactly one audit artifact to `outputs/` as markdown. diff --git a/prompts/autoresearch.md b/prompts/autoresearch.md index 5f1deaa..0723fc6 100644 --- a/prompts/autoresearch.md +++ b/prompts/autoresearch.md @@ -1,5 +1,8 @@ --- description: Autonomous experiment loop — try ideas, measure results, keep what works, discard what doesn't, repeat. +args: +section: Research Workflows +topLevelCli: true --- Start an autoresearch optimization loop for: $@ diff --git a/prompts/compare.md b/prompts/compare.md index e0743c8..d015724 100644 --- a/prompts/compare.md +++ b/prompts/compare.md @@ -1,10 +1,13 @@ --- description: Compare multiple sources on a topic and produce a source-grounded matrix of agreements, disagreements, and confidence. +args: +section: Research Workflows +topLevelCli: true --- Compare sources for: $@ Requirements: -- Use the `researcher` subagent to gather source material when the comparison set is broad, and the `citation` subagent to verify sources and add inline citations to the final matrix. +- Use the `researcher` subagent to gather source material when the comparison set is broad, and the `verifier` subagent to verify sources and add inline citations to the final matrix. - Build a comparison matrix covering: source, key claim, evidence type, caveats, confidence. - Distinguish agreement, disagreement, and uncertainty clearly. - Save exactly one comparison to `outputs/` as markdown. diff --git a/prompts/deepresearch.md b/prompts/deepresearch.md index 0cc88d5..8feaffb 100644 --- a/prompts/deepresearch.md +++ b/prompts/deepresearch.md @@ -1,9 +1,12 @@ --- description: Run a thorough, source-heavy investigation on a topic and produce a durable research brief with inline citations. +args: +section: Research Workflows +topLevelCli: true --- Run a deep research workflow for: $@ -You are the Lead Researcher. You plan, delegate, evaluate, loop, write, and cite. Internal orchestration is invisible to the user unless they ask. +You are the Lead Researcher. You plan, delegate, evaluate, verify, write, and cite. Internal orchestration is invisible to the user unless they ask. ## 1. Plan @@ -12,8 +15,30 @@ Analyze the research question using extended thinking. Develop a research strate - Evidence types needed (papers, web, code, data, docs) - Sub-questions disjoint enough to parallelize - Source types and time periods that matter +- Acceptance criteria: what evidence would make the answer "sufficient" -Save the plan immediately with `memory_remember` (type: `fact`, key: `deepresearch.plan`). Context windows get truncated on long runs — the plan must survive. +Write the plan to `outputs/.plans/deepresearch-plan.md` as a self-contained artifact: + +```markdown +# Research Plan: [topic] + +## Questions +1. ... + +## Strategy +- Researcher allocations and dimensions +- Expected rounds + +## Acceptance Criteria +- [ ] All key questions answered with ≥2 independent sources +- [ ] Contradictions identified and addressed +- [ ] No single-source claims on critical findings + +## Decision Log +(Updated as the workflow progresses) +``` + +Also save the plan with `memory_remember` (type: `fact`, key: `deepresearch.plan`) so it survives context truncation. ## 2. Scale decision @@ -57,7 +82,9 @@ After researchers return, read their output files and critically assess: - Are there contradictions needing resolution? - Is any key angle missing entirely? -If gaps are significant, spawn another targeted batch of researchers. No fixed cap on rounds — iterate until evidence is sufficient or sources are exhausted. Update the stored plan with `memory_remember` as it evolves. +If gaps are significant, spawn another targeted batch of researchers. No fixed cap on rounds — iterate until evidence is sufficient or sources are exhausted. + +Update the plan artifact (`outputs/.plans/deepresearch-plan.md`) decision log after each round. Most topics need 1-2 rounds. Stop when additional rounds would not materially change conclusions. @@ -84,22 +111,51 @@ Save this draft to a temp file (e.g., `draft.md` in the chain artifacts dir or a ## 6. Cite -Spawn the `citation` agent to post-process YOUR draft. The citation agent adds inline citations, verifies every source URL, and produces the final output: +Spawn the `verifier` agent to post-process YOUR draft. The verifier agent adds inline citations, verifies every source URL, and produces the final output: ``` -{ agent: "citation", task: "Add inline citations to draft.md using the research files as source material. Verify every URL.", output: "brief.md" } +{ agent: "verifier", task: "Add inline citations to draft.md using the research files as source material. Verify every URL.", output: "brief.md" } ``` -The citation agent does not rewrite the report — it only anchors claims to sources and builds the numbered Sources section. +The verifier agent does not rewrite the report — it only anchors claims to sources and builds the numbered Sources section. -## 7. Deliver +## 7. Verify -Copy the final cited output to the appropriate folder: +Spawn the `reviewer` agent against the cited draft. The reviewer checks for: +- Unsupported claims that slipped past citation +- Logical gaps or contradictions between sections +- Single-source claims on critical findings +- Overstated confidence relative to evidence quality + +``` +{ agent: "reviewer", task: "Verify brief.md — flag any claims that lack sufficient source backing, identify logical gaps, and check that confidence levels match evidence strength. This is a verification pass, not a peer review.", output: "verification.md" } +``` + +If the reviewer flags FATAL issues, fix them in the brief before delivering. MAJOR issues get noted in the Open Questions section. MINOR issues are accepted. + +## 8. Deliver + +Copy the final cited and verified output to the appropriate folder: - Paper-style drafts → `papers/` - Everything else → `outputs/` Use a descriptive filename based on the topic. +Write a provenance record alongside the main artifact as `.provenance.md`: + +```markdown +# Provenance: [topic] + +- **Date:** [date] +- **Rounds:** [number of researcher rounds] +- **Sources consulted:** [total unique sources across all research files] +- **Sources accepted:** [sources that survived citation verification] +- **Sources rejected:** [dead links, unverifiable, or removed] +- **Verification:** [PASS / PASS WITH NOTES — summary of reviewer findings] +- **Plan:** outputs/.plans/deepresearch-plan.md +- **Research files:** [list of intermediate research-*.md files] +``` + ## Background execution If the user wants unattended execution or the sweep will clearly take a while: diff --git a/prompts/delegate.md b/prompts/delegate.md new file mode 100644 index 0000000..5b878c7 --- /dev/null +++ b/prompts/delegate.md @@ -0,0 +1,21 @@ +--- +description: Delegate a research task to a remote Agent Computer machine for cloud execution. +args: +section: Internal +--- +Delegate the following task to a remote Agent Computer machine: $@ + +## Workflow + +1. **Check CLI** — Verify `computer` or `aicomputer` is installed and authenticated. If not, install with `npm install -g aicomputer` and run `computer login`. +2. **Pick a machine** — Run `computer ls --json` and choose an appropriate machine. If none are running, tell the user to create one with `computer create`. +3. **Pick an agent** — Run `computer agent agents --json` and choose an installed agent with credentials (prefer Claude). +4. **Create a session** — Use `computer agent sessions new --agent claude --name research --json`. +5. **Send the task** — Translate the user's research task into a self-contained prompt and send it via `computer agent prompt`. The prompt must include: + - The full research objective + - Where to write outputs (default: `/workspace/outputs/`) + - What artifact to produce when done (summary file) + - Any tools or data sources to use +6. **Monitor** — Use `computer agent watch --session ` to stream progress. Report status to the user at meaningful milestones. +7. **Retrieve results** — When the remote agent finishes, pull the summary back with `computer agent prompt "cat /workspace/outputs/summary.md" --session `. Present results to the user. +8. **Clean up** — Close the session with `computer agent close --session ` unless the user wants to continue. diff --git a/prompts/draft.md b/prompts/draft.md index 419ef09..3750323 100644 --- a/prompts/draft.md +++ b/prompts/draft.md @@ -1,10 +1,13 @@ --- description: Turn research findings into a polished paper-style draft with equations, sections, and explicit claims. +args: +section: Research Workflows +topLevelCli: true --- Write a paper-style draft for: $@ Requirements: -- Use the `writer` subagent when the draft should be produced from already-collected notes, then use the `citation` subagent to add inline citations and verify sources. +- Use the `writer` subagent when the draft should be produced from already-collected notes, then use the `verifier` subagent to add inline citations and verify sources. - Include at minimum: title, abstract, problem statement, related work, method or synthesis, evidence or experiments, limitations, conclusion. - Use clean Markdown with LaTeX where equations materially help. - Save exactly one draft to `papers/` as markdown. diff --git a/prompts/jobs.md b/prompts/jobs.md index d3c9c9e..da44bd8 100644 --- a/prompts/jobs.md +++ b/prompts/jobs.md @@ -1,5 +1,7 @@ --- description: Inspect active background research work, including running processes and scheduled follow-ups. +section: Project & Session +topLevelCli: true --- Inspect active background work for this project. diff --git a/prompts/lit.md b/prompts/lit.md index 47f5641..6dc773e 100644 --- a/prompts/lit.md +++ b/prompts/lit.md @@ -1,11 +1,15 @@ --- description: Run a literature review on a topic using paper search and primary-source synthesis. +args: +section: Research Workflows +topLevelCli: true --- Investigate the following topic as a literature review: $@ -Requirements: -- Use the `researcher` subagent when the sweep is wide enough to benefit from delegated paper triage before synthesis. -- Separate consensus, disagreements, and open questions. -- When useful, propose concrete next experiments or follow-up reading. -- Save exactly one literature review to `outputs/` as markdown. -- End with a `Sources` section containing direct URLs for every source used. +## Workflow + +1. **Gather** — Use the `researcher` subagent when the sweep is wide enough to benefit from delegated paper triage before synthesis. For narrow topics, search directly. +2. **Synthesize** — Separate consensus, disagreements, and open questions. When useful, propose concrete next experiments or follow-up reading. +3. **Cite** — Spawn the `verifier` agent to add inline citations and verify every source URL in the draft. +4. **Verify** — Spawn the `reviewer` agent to check the cited draft for unsupported claims, logical gaps, and single-source critical findings. Fix FATAL issues before delivering. Note MAJOR issues in Open Questions. +5. **Deliver** — Save exactly one literature review to `outputs/` as markdown. Write a provenance record alongside it as `.provenance.md` listing: date, sources consulted vs. accepted vs. rejected, verification status, and intermediate research files used. diff --git a/prompts/log.md b/prompts/log.md index ae3a78a..1ef8925 100644 --- a/prompts/log.md +++ b/prompts/log.md @@ -1,5 +1,7 @@ --- description: Write a durable session log with completed work, findings, open questions, and next steps. +section: Project & Session +topLevelCli: true --- Write a session log for the current research work. diff --git a/prompts/replicate.md b/prompts/replicate.md index 2bcc753..e3fd3c9 100644 --- a/prompts/replicate.md +++ b/prompts/replicate.md @@ -1,12 +1,21 @@ --- description: Plan or execute a replication workflow for a paper, claim, or benchmark. +args: +section: Research Workflows +topLevelCli: true --- Design a replication plan for: $@ -Requirements: -- Use the `researcher` subagent to extract implementation details from the target paper and any linked code. -- Determine what code, datasets, metrics, and environment are needed. -- If enough information is available locally, implement and run the replication steps. -- Save notes, scripts, and results to disk in a reproducible layout. -- Be explicit about what is verified, what is inferred, and what is still missing. -- End with a `Sources` section containing paper and repository URLs. +## Workflow + +1. **Extract** — Use the `researcher` subagent to pull implementation details from the target paper and any linked code. +2. **Plan** — Determine what code, datasets, metrics, and environment are needed. Be explicit about what is verified, what is inferred, and what is still missing. +3. **Environment** — Before running anything, ask the user where to execute: + - **Local** — run in the current working directory + - **Virtual environment** — create an isolated venv/conda env first + - **Cloud** — delegate to a remote Agent Computer machine via `/delegate` + - **Plan only** — produce the replication plan without executing +4. **Execute** — If the user chose an execution environment, implement and run the replication steps there. Save notes, scripts, and results to disk in a reproducible layout. +5. **Report** — End with a `Sources` section containing paper and repository URLs. + +Do not install packages, run training, or execute experiments without confirming the execution environment first. diff --git a/prompts/review.md b/prompts/review.md index 3dfb13e..1239537 100644 --- a/prompts/review.md +++ b/prompts/review.md @@ -1,5 +1,8 @@ --- description: Simulate an AI research peer review with likely objections, severity, and a concrete revision plan. +args: +section: Research Workflows +topLevelCli: true --- Review this AI research artifact: $@ diff --git a/prompts/watch.md b/prompts/watch.md index 36ea2be..cac8267 100644 --- a/prompts/watch.md +++ b/prompts/watch.md @@ -1,5 +1,8 @@ --- description: Set up a recurring or deferred research watch on a topic, company, paper area, or product surface. +args: +section: Research Workflows +topLevelCli: true --- Create a research watch for: $@ diff --git a/scripts/patch-embedded-pi.mjs b/scripts/patch-embedded-pi.mjs index f4b7754..4bb1d1d 100644 --- a/scripts/patch-embedded-pi.mjs +++ b/scripts/patch-embedded-pi.mjs @@ -13,7 +13,7 @@ const interactiveModePath = resolve(piPackageRoot, "dist", "modes", "interactive const interactiveThemePath = resolve(piPackageRoot, "dist", "modes", "interactive", "theme", "theme.js"); const piTuiRoot = resolve(appRoot, "node_modules", "@mariozechner", "pi-tui"); const editorPath = resolve(piTuiRoot, "dist", "components", "editor.js"); -const workspaceRoot = resolve(appRoot, ".pi", "npm", "node_modules"); +const workspaceRoot = resolve(appRoot, ".feynman", "npm", "node_modules"); const webAccessPath = resolve(workspaceRoot, "pi-web-access", "index.ts"); const sessionSearchIndexerPath = resolve( workspaceRoot, @@ -23,8 +23,8 @@ const sessionSearchIndexerPath = resolve( "indexer.ts", ); const piMemoryPath = resolve(workspaceRoot, "@samfp", "pi-memory", "src", "index.ts"); -const settingsPath = resolve(appRoot, ".pi", "settings.json"); -const workspaceDir = resolve(appRoot, ".pi", "npm"); +const settingsPath = resolve(appRoot, ".feynman", "settings.json"); +const workspaceDir = resolve(appRoot, ".feynman", "npm"); const workspacePackageJsonPath = resolve(workspaceDir, "package.json"); function ensurePackageWorkspace() { @@ -69,7 +69,7 @@ function ensurePackageWorkspace() { }); if (install.status !== 0) { - console.warn("[feynman] warning: failed to preinstall default Pi packages into .pi/npm"); + console.warn("[feynman] warning: failed to preinstall default Pi packages into .feynman/npm"); } } diff --git a/skills/agentcomputer/SKILL.md b/skills/agentcomputer/SKILL.md new file mode 100644 index 0000000..72ba5e3 --- /dev/null +++ b/skills/agentcomputer/SKILL.md @@ -0,0 +1,108 @@ +--- +name: agentcomputer +description: Delegate research tasks to remote Agent Computer machines for cloud execution. Manages machine discovery, remote agent sessions, task delegation, progress monitoring, result retrieval, and ACP bridging via the aicomputer CLI. +allowed-tools: Bash(npm:*), Bash(npx aicomputer@latest:*), Bash(aicomputer:*), Bash(computer:*) +--- + +# Agent Computer + +Use Agent Computer to run Feynman research workflows on remote cloud machines when local compute is insufficient or when tasks should run unattended. + +## When to use + +- A research task needs GPU, large memory, or long-running compute +- `/autoresearch` or `/deepresearch` should run unattended in the cloud +- The user explicitly asks to delegate work to a remote machine +- An experiment loop would take hours and should not block the local session + +## Prerequisites + +The `aicomputer` CLI must be installed and authenticated: + +```bash +if command -v computer >/dev/null 2>&1; then + COMPUTER=computer +elif command -v aicomputer >/dev/null 2>&1; then + COMPUTER=aicomputer +else + npm install -g aicomputer + COMPUTER=computer +fi +$COMPUTER whoami || $COMPUTER login +``` + +## Fleet control + +### Discover machines and agents + +```bash +$COMPUTER ls --json +$COMPUTER agent agents --json +``` + +### Sessions + +Create, reuse, and manage named sessions on a machine: + +```bash +$COMPUTER agent sessions new --agent claude --name research --json +$COMPUTER agent sessions list --json +$COMPUTER agent status --session --json +``` + +### Prompting and monitoring + +```bash +$COMPUTER agent prompt "" --agent claude --name research +$COMPUTER agent watch --session +``` + +### Stopping and cleanup + +```bash +$COMPUTER agent cancel --session --json +$COMPUTER agent interrupt --session --json +$COMPUTER agent close --session +``` + +## Research delegation workflow + +1. Pick a machine: `$COMPUTER ls --json` +2. Create a session: `$COMPUTER agent sessions new --agent claude --name research --json` +3. Send a self-contained research prompt: + +```bash +$COMPUTER agent prompt \ + "Run a deep research workflow on . Write all outputs to /workspace/outputs/. When done, write a summary to /workspace/outputs/summary.md." \ + --agent claude --name research +``` + +4. Monitor: `$COMPUTER agent watch --session ` +5. Retrieve: `$COMPUTER agent prompt "cat /workspace/outputs/summary.md" --session ` +6. Clean up: `$COMPUTER agent close --session ` + +## ACP bridge + +Expose a remote machine agent as a local ACP-compatible stdio process: + +```bash +$COMPUTER acp serve --agent claude --name research +``` + +This lets local ACP clients (including Feynman's subagents) talk to a remote agent as if it were local. Keep the bridge process running; reconnect by restarting the command with the same session name. + +## Session naming + +Use short stable names that match the task: + +- `research` — general research delegation +- `experiment` — autoresearch loops +- `review` — verification passes +- `literature` — literature sweeps + +Reuse the same name when continuing the same line of work. + +## References + +- [CLI cheatsheet](references/cli-cheatsheet.md) — full command reference +- [ACP flow](references/acp-flow.md) — protocol details for the ACP bridge diff --git a/skills/agentcomputer/references/acp-flow.md b/skills/agentcomputer/references/acp-flow.md new file mode 100644 index 0000000..da626a6 --- /dev/null +++ b/skills/agentcomputer/references/acp-flow.md @@ -0,0 +1,23 @@ +# ACP Flow + +The `computer acp serve` bridge makes a remote machine agent look like a local ACP server over stdio. + +## Basic shape + +1. The local client starts `computer acp serve --agent --name `. +2. The bridge handles ACP initialization on stdin/stdout. +3. The bridge maps ACP session operations onto Agent Computer session APIs. +4. Remote session updates are streamed back as ACP `session/update` notifications. + +## Good commands + +```bash +computer acp serve my-box --agent claude --name research +computer acp serve gpu-worker --agent claude --name experiment +``` + +## Recommended client behavior + +- Reuse a stable session name when reconnecting. +- Treat the bridge as the single local command for remote-agent interaction. +- Use the normal `computer agent ...` commands outside ACP when you need manual inspection or cleanup. diff --git a/skills/agentcomputer/references/cli-cheatsheet.md b/skills/agentcomputer/references/cli-cheatsheet.md new file mode 100644 index 0000000..60d596c --- /dev/null +++ b/skills/agentcomputer/references/cli-cheatsheet.md @@ -0,0 +1,68 @@ +# CLI Cheatsheet + +## Authentication + +```bash +computer whoami +computer login +computer claude-login # install Claude credentials on a machine +computer codex-login # install Codex credentials on a machine +``` + +## Machine discovery + +```bash +computer ls --json +computer fleet status --json +``` + +## Agent discovery + +```bash +computer agent agents --json +``` + +## Sessions + +```bash +computer agent sessions list --json +computer agent sessions new --agent claude --name research --json +computer agent status --session --json +``` + +## Prompting + +```bash +computer agent prompt "run the experiment" --agent claude --name research +computer agent prompt "continue" --session +``` + +## Streaming and control + +```bash +computer agent watch --session +computer agent cancel --session --json +computer agent interrupt --session --json +computer agent close --session +``` + +## ACP bridge + +```bash +computer acp serve --agent claude --name research +``` + +## Machine lifecycle + +```bash +computer create my-box +computer open my-box +computer open my-box --terminal +computer ssh my-box +``` + +## Good defaults + +- Prefer machine handles over machine ids when both are available. +- Prefer `--name` for human-meaningful persistent sessions. +- Prefer `--json` when another program or agent needs to read the result. diff --git a/skills/autoresearch/SKILL.md b/skills/autoresearch/SKILL.md new file mode 100644 index 0000000..1cda828 --- /dev/null +++ b/skills/autoresearch/SKILL.md @@ -0,0 +1,12 @@ +--- +name: autoresearch +description: Autonomous experiment loop that tries ideas, measures results, keeps what works, and discards what doesn't. Use when the user asks to optimize a metric, run an experiment loop, improve performance iteratively, or automate benchmarking. +--- + +# Autoresearch + +Run the `/autoresearch` workflow. Read the prompt template at `prompts/autoresearch.md` for the full procedure. + +Tools used: `init_experiment`, `run_experiment`, `log_experiment` (from pi-autoresearch) + +Session files: `autoresearch.md`, `autoresearch.sh`, `autoresearch.jsonl` diff --git a/skills/deep-research/SKILL.md b/skills/deep-research/SKILL.md new file mode 100644 index 0000000..291990e --- /dev/null +++ b/skills/deep-research/SKILL.md @@ -0,0 +1,12 @@ +--- +name: deep-research +description: Run a thorough, source-heavy investigation on any topic. Use when the user asks for deep research, a comprehensive analysis, an in-depth report, or a multi-source investigation. Produces a cited research brief with provenance tracking. +--- + +# Deep Research + +Run the `/deepresearch` workflow. Read the prompt template at `prompts/deepresearch.md` for the full procedure. + +Agents used: `researcher`, `verifier`, `reviewer` + +Output: cited brief in `outputs/` with `.provenance.md` sidecar. diff --git a/skills/jobs/SKILL.md b/skills/jobs/SKILL.md new file mode 100644 index 0000000..3bdef42 --- /dev/null +++ b/skills/jobs/SKILL.md @@ -0,0 +1,10 @@ +--- +name: jobs +description: Inspect active background research work including running processes, scheduled follow-ups, and pending tasks. Use when the user asks what's running, checks on background work, or wants to see scheduled jobs. +--- + +# Jobs + +Run the `/jobs` workflow. Read the prompt template at `prompts/jobs.md` for the full procedure. + +Shows active `pi-processes`, scheduled `pi-schedule-prompt` entries, and running subagent tasks. diff --git a/skills/literature-review/SKILL.md b/skills/literature-review/SKILL.md new file mode 100644 index 0000000..b9c995b --- /dev/null +++ b/skills/literature-review/SKILL.md @@ -0,0 +1,12 @@ +--- +name: literature-review +description: Run a literature review using paper search and primary-source synthesis. Use when the user asks for a lit review, paper survey, state of the art, or academic landscape summary on a research topic. +--- + +# Literature Review + +Run the `/lit` workflow. Read the prompt template at `prompts/lit.md` for the full procedure. + +Agents used: `researcher`, `verifier`, `reviewer` + +Output: literature review in `outputs/` with `.provenance.md` sidecar. diff --git a/skills/paper-code-audit/SKILL.md b/skills/paper-code-audit/SKILL.md new file mode 100644 index 0000000..ce7ace6 --- /dev/null +++ b/skills/paper-code-audit/SKILL.md @@ -0,0 +1,12 @@ +--- +name: paper-code-audit +description: Compare a paper's claims against its public codebase. Use when the user asks to audit a paper, check code-claim consistency, verify reproducibility of a specific paper, or find mismatches between a paper and its implementation. +--- + +# Paper-Code Audit + +Run the `/audit` workflow. Read the prompt template at `prompts/audit.md` for the full procedure. + +Agents used: `researcher`, `verifier` + +Output: audit report in `outputs/`. diff --git a/skills/paper-writing/SKILL.md b/skills/paper-writing/SKILL.md new file mode 100644 index 0000000..d453a4e --- /dev/null +++ b/skills/paper-writing/SKILL.md @@ -0,0 +1,12 @@ +--- +name: paper-writing +description: Turn research findings into a polished paper-style draft with sections, equations, and citations. Use when the user asks to write a paper, draft a report, write up findings, or produce a technical document from collected research. +--- + +# Paper Writing + +Run the `/draft` workflow. Read the prompt template at `prompts/draft.md` for the full procedure. + +Agents used: `writer`, `verifier` + +Output: paper draft in `papers/`. diff --git a/skills/peer-review/SKILL.md b/skills/peer-review/SKILL.md new file mode 100644 index 0000000..c4536de --- /dev/null +++ b/skills/peer-review/SKILL.md @@ -0,0 +1,12 @@ +--- +name: peer-review +description: Simulate a tough but constructive peer review of an AI research artifact. Use when the user asks for a review, critique, feedback on a paper or draft, or wants to identify weaknesses before submission. +--- + +# Peer Review + +Run the `/review` workflow. Read the prompt template at `prompts/review.md` for the full procedure. + +Agents used: `researcher`, `reviewer` + +Output: structured review in `outputs/`. diff --git a/skills/replication/SKILL.md b/skills/replication/SKILL.md new file mode 100644 index 0000000..27925c5 --- /dev/null +++ b/skills/replication/SKILL.md @@ -0,0 +1,14 @@ +--- +name: replication +description: Plan or execute a replication of a paper, claim, or benchmark. Use when the user asks to replicate results, reproduce an experiment, verify a claim empirically, or build a replication package. +--- + +# Replication + +Run the `/replicate` workflow. Read the prompt template at `prompts/replicate.md` for the full procedure. + +Agents used: `researcher` + +Asks the user to choose an execution environment (local, virtual env, cloud, or plan-only) before running any code. + +Output: replication plan, scripts, and results saved to disk. diff --git a/skills/session-log/SKILL.md b/skills/session-log/SKILL.md new file mode 100644 index 0000000..2b4b160 --- /dev/null +++ b/skills/session-log/SKILL.md @@ -0,0 +1,10 @@ +--- +name: session-log +description: Write a durable session log capturing completed work, findings, open questions, and next steps. Use when the user asks to log progress, save session notes, write up what was done, or create a research diary entry. +--- + +# Session Log + +Run the `/log` workflow. Read the prompt template at `prompts/log.md` for the full procedure. + +Output: session log in `notes/session-logs/`. diff --git a/skills/source-comparison/SKILL.md b/skills/source-comparison/SKILL.md new file mode 100644 index 0000000..5d43a69 --- /dev/null +++ b/skills/source-comparison/SKILL.md @@ -0,0 +1,12 @@ +--- +name: source-comparison +description: Compare multiple sources on a topic and produce a grounded comparison matrix. Use when the user asks to compare papers, tools, approaches, frameworks, or claims across multiple sources. +--- + +# Source Comparison + +Run the `/compare` workflow. Read the prompt template at `prompts/compare.md` for the full procedure. + +Agents used: `researcher`, `verifier` + +Output: comparison matrix in `outputs/`. diff --git a/skills/watch/SKILL.md b/skills/watch/SKILL.md new file mode 100644 index 0000000..573418d --- /dev/null +++ b/skills/watch/SKILL.md @@ -0,0 +1,12 @@ +--- +name: watch +description: Set up a recurring research watch on a topic, company, paper area, or product surface. Use when the user asks to monitor a field, track new papers, watch for updates, or set up alerts on a research area. +--- + +# Watch + +Run the `/watch` workflow. Read the prompt template at `prompts/watch.md` for the full procedure. + +Agents used: `researcher` + +Output: baseline survey in `outputs/`, recurring checks via `pi-schedule-prompt`. diff --git a/src/bootstrap/sync.ts b/src/bootstrap/sync.ts index 3af589a..0062c4f 100644 --- a/src/bootstrap/sync.ts +++ b/src/bootstrap/sync.ts @@ -128,8 +128,8 @@ export function syncBundledAssets(appRoot: string, agentDir: string): BootstrapS skipped: [], }; - syncManagedFiles(resolve(appRoot, ".pi", "themes"), resolve(agentDir, "themes"), state, result); - syncManagedFiles(resolve(appRoot, ".pi", "agents"), resolve(agentDir, "agents"), state, result); + syncManagedFiles(resolve(appRoot, ".feynman", "themes"), resolve(agentDir, "themes"), state, result); + syncManagedFiles(resolve(appRoot, ".feynman", "agents"), resolve(agentDir, "agents"), state, result); writeBootstrapState(statePath, state); return result; diff --git a/src/cli.ts b/src/cli.ts index 5d95555..b2f06fd 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -28,23 +28,27 @@ import { runDoctor, runStatus } from "./setup/doctor.js"; import { setupPreviewDependencies } from "./setup/preview.js"; import { runSetup } from "./setup/setup.js"; import { printInfo, printPanel, printSection } from "./ui/terminal.js"; +import { + cliCommandSections, + formatCliWorkflowUsage, + legacyFlags, + readPromptSpecs, + topLevelCommandNames, +} from "../metadata/commands.mjs"; -const TOP_LEVEL_COMMANDS = new Set(["alpha", "chat", "doctor", "help", "model", "search", "setup", "status", "update"]); -const RESEARCH_WORKFLOW_COMMANDS = new Set([ - "audit", - "autoresearch", - "compare", - "deepresearch", - "draft", - "jobs", - "lit", - "log", - "replicate", - "review", - "watch", -]); +const TOP_LEVEL_COMMANDS = new Set(topLevelCommandNames); + +function printHelpLine(usage: string, description: string): void { + const width = 30; + const padding = Math.max(1, width - usage.length); + printInfo(`${usage}${" ".repeat(padding)}${description}`); +} + +function printHelp(appRoot: string): void { + const workflowCommands = readPromptSpecs(appRoot).filter( + (command) => command.section === "Research Workflows" && command.topLevelCli, + ); -function printHelp(): void { printPanel("Feynman", [ "Research-first agent shell built on Pi.", "Use `feynman setup` first if this is a new machine.", @@ -58,39 +62,21 @@ function printHelp(): void { printInfo("feynman search status"); printSection("Commands"); - printInfo("feynman chat [prompt] Start chat explicitly, optionally with an initial prompt"); - printInfo("feynman setup Run the guided setup"); - printInfo("feynman doctor Diagnose config, auth, Pi runtime, and preview deps"); - printInfo("feynman status Show the current setup summary"); - printInfo("feynman model list Show available models in auth storage"); - printInfo("feynman model login [id] Login to a Pi OAuth model provider"); - printInfo("feynman model logout [id] Logout from a Pi OAuth model provider"); - printInfo("feynman model set Set the default model"); - printInfo("feynman update [package] Update installed packages (or a specific one)"); - printInfo("feynman search status Show Pi web-access status and config path"); - printInfo("feynman alpha login|logout|status"); + for (const section of cliCommandSections) { + for (const command of section.commands) { + printHelpLine(command.usage, command.description); + } + } printSection("Research Workflows"); - printInfo("feynman deepresearch Start a thorough source-heavy investigation"); - printInfo("feynman lit Start the literature-review workflow"); - printInfo("feynman review Start the peer-review workflow"); - printInfo("feynman audit Start the paper/code audit workflow"); - printInfo("feynman replicate Start the replication workflow"); - printInfo("feynman draft Start the paper-style draft workflow"); - printInfo("feynman compare Start the source-comparison workflow"); - printInfo("feynman watch Start the recurring research watch workflow"); + for (const command of workflowCommands) { + printHelpLine(formatCliWorkflowUsage(command), command.description); + } printSection("Legacy Flags"); - printInfo('--prompt "" Run one prompt and exit'); - printInfo("--alpha-login Sign in to alphaXiv and exit"); - printInfo("--alpha-logout Clear alphaXiv auth and exit"); - printInfo("--alpha-status Show alphaXiv auth status and exit"); - printInfo("--model provider:model Force a specific model"); - printInfo("--thinking level off | minimal | low | medium | high | xhigh"); - printInfo("--cwd /path/to/workdir Working directory for tools"); - printInfo("--session-dir /path Session storage directory"); - printInfo("--doctor Alias for `feynman doctor`"); - printInfo("--setup-preview Alias for `feynman setup preview`"); + for (const flag of legacyFlags) { + printHelpLine(flag.usage, flag.description); + } printSection("REPL"); printInfo("Inside the REPL, slash workflows come from the live prompt-template and extension command set."); @@ -201,6 +187,7 @@ export function resolveInitialPrompt( command: string | undefined, rest: string[], oneShotPrompt: string | undefined, + workflowCommands: Set, ): string | undefined { if (oneShotPrompt) { return oneShotPrompt; @@ -211,7 +198,7 @@ export function resolveInitialPrompt( if (command === "chat") { return rest.length > 0 ? rest.join(" ") : undefined; } - if (RESEARCH_WORKFLOW_COMMANDS.has(command)) { + if (workflowCommands.has(command)) { return [`/${command}`, ...rest].join(" ").trim(); } if (!TOP_LEVEL_COMMANDS.has(command)) { @@ -224,7 +211,7 @@ export async function main(): Promise { const here = dirname(fileURLToPath(import.meta.url)); const appRoot = resolve(here, ".."); const feynmanVersion = loadPackageVersion(appRoot).version; - const bundledSettingsPath = resolve(appRoot, ".pi", "settings.json"); + const bundledSettingsPath = resolve(appRoot, ".feynman", "settings.json"); const feynmanHome = getFeynmanHome(); const feynmanAgentDir = getFeynmanAgentDir(feynmanHome); @@ -251,7 +238,7 @@ export async function main(): Promise { }); if (values.help) { - printHelp(); + printHelp(appRoot); return; } @@ -297,7 +284,7 @@ export async function main(): Promise { const [command, ...rest] = positionals; if (command === "help") { - printHelp(); + printHelp(appRoot); return; } @@ -374,6 +361,6 @@ export async function main(): Promise { thinkingLevel, explicitModelSpec, oneShotPrompt: values.prompt, - initialPrompt: resolveInitialPrompt(command, rest, values.prompt), + initialPrompt: resolveInitialPrompt(command, rest, values.prompt, new Set(readPromptSpecs(appRoot).filter((s) => s.topLevelCli).map((s) => s.name))), }); } diff --git a/src/pi/runtime.ts b/src/pi/runtime.ts index bc7d822..91b860f 100644 --- a/src/pi/runtime.ts +++ b/src/pi/runtime.ts @@ -27,8 +27,8 @@ export function resolvePiPaths(appRoot: string) { promisePolyfillPath: resolve(appRoot, "dist", "system", "promise-polyfill.js"), researchToolsPath: resolve(appRoot, "extensions", "research-tools.ts"), promptTemplatePath: resolve(appRoot, "prompts"), - systemPromptPath: resolve(appRoot, ".pi", "SYSTEM.md"), - piWorkspaceNodeModulesPath: resolve(appRoot, ".pi", "npm", "node_modules"), + systemPromptPath: resolve(appRoot, ".feynman", "SYSTEM.md"), + piWorkspaceNodeModulesPath: resolve(appRoot, ".feynman", "npm", "node_modules"), }; } diff --git a/src/pi/web-access.ts b/src/pi/web-access.ts index 15e7977..f413f24 100644 --- a/src/pi/web-access.ts +++ b/src/pi/web-access.ts @@ -24,7 +24,7 @@ export type PiWebAccessStatus = { }; export function getPiWebSearchConfigPath(home = process.env.HOME ?? homedir()): string { - return resolve(home, ".pi", "web-search.json"); + return resolve(home, ".feynman", "web-search.json"); } function normalizeProvider(value: unknown): PiWebSearchProvider | undefined { diff --git a/tests/bootstrap-sync.test.ts b/tests/bootstrap-sync.test.ts index 253fcd4..6e5f04f 100644 --- a/tests/bootstrap-sync.test.ts +++ b/tests/bootstrap-sync.test.ts @@ -8,10 +8,10 @@ import { syncBundledAssets } from "../src/bootstrap/sync.js"; function createAppRoot(): string { const appRoot = mkdtempSync(join(tmpdir(), "feynman-app-")); - mkdirSync(join(appRoot, ".pi", "themes"), { recursive: true }); - mkdirSync(join(appRoot, ".pi", "agents"), { recursive: true }); - writeFileSync(join(appRoot, ".pi", "themes", "feynman.json"), '{"theme":"v1"}\n', "utf8"); - writeFileSync(join(appRoot, ".pi", "agents", "researcher.md"), "# v1\n", "utf8"); + mkdirSync(join(appRoot, ".feynman", "themes"), { recursive: true }); + mkdirSync(join(appRoot, ".feynman", "agents"), { recursive: true }); + writeFileSync(join(appRoot, ".feynman", "themes", "feynman.json"), '{"theme":"v1"}\n', "utf8"); + writeFileSync(join(appRoot, ".feynman", "agents", "researcher.md"), "# v1\n", "utf8"); return appRoot; } @@ -38,8 +38,8 @@ test("syncBundledAssets preserves user-modified files and updates managed files" syncBundledAssets(appRoot, agentDir); - writeFileSync(join(appRoot, ".pi", "themes", "feynman.json"), '{"theme":"v2"}\n', "utf8"); - writeFileSync(join(appRoot, ".pi", "agents", "researcher.md"), "# v2\n", "utf8"); + writeFileSync(join(appRoot, ".feynman", "themes", "feynman.json"), '{"theme":"v2"}\n', "utf8"); + writeFileSync(join(appRoot, ".feynman", "agents", "researcher.md"), "# v2\n", "utf8"); writeFileSync(join(agentDir, "agents", "researcher.md"), "# user-custom\n", "utf8"); const result = syncBundledAssets(appRoot, agentDir); diff --git a/tests/model-harness.test.ts b/tests/model-harness.test.ts index 99a787e..26ff179 100644 --- a/tests/model-harness.test.ts +++ b/tests/model-harness.test.ts @@ -58,10 +58,11 @@ test("buildModelStatusSnapshotFromRecords flags an invalid current model and sug }); test("resolveInitialPrompt maps top-level research commands to Pi slash workflows", () => { - assert.equal(resolveInitialPrompt("lit", ["tool-using", "agents"], undefined), "/lit tool-using agents"); - assert.equal(resolveInitialPrompt("watch", ["openai"], undefined), "/watch openai"); - assert.equal(resolveInitialPrompt("jobs", [], undefined), "/jobs"); - assert.equal(resolveInitialPrompt("chat", ["hello"], undefined), "hello"); - assert.equal(resolveInitialPrompt("unknown", ["topic"], undefined), "unknown topic"); + const workflows = new Set(["lit", "watch", "jobs", "deepresearch"]); + assert.equal(resolveInitialPrompt("lit", ["tool-using", "agents"], undefined, workflows), "/lit tool-using agents"); + assert.equal(resolveInitialPrompt("watch", ["openai"], undefined, workflows), "/watch openai"); + assert.equal(resolveInitialPrompt("jobs", [], undefined, workflows), "/jobs"); + assert.equal(resolveInitialPrompt("chat", ["hello"], undefined, workflows), "hello"); + assert.equal(resolveInitialPrompt("unknown", ["topic"], undefined, workflows), "unknown topic"); }); diff --git a/tests/pi-web-access.test.ts b/tests/pi-web-access.test.ts index 3cac5f7..e20761a 100644 --- a/tests/pi-web-access.test.ts +++ b/tests/pi-web-access.test.ts @@ -21,7 +21,7 @@ test("loadPiWebAccessConfig returns empty config when Pi web config is missing", test("getPiWebAccessStatus reads Pi web-access config directly", () => { const root = mkdtempSync(join(tmpdir(), "feynman-pi-web-")); const configPath = getPiWebSearchConfigPath(root); - mkdirSync(join(root, ".pi"), { recursive: true }); + mkdirSync(join(root, ".feynman"), { recursive: true }); writeFileSync( configPath, JSON.stringify({ diff --git a/website/.astro/collections/docs.schema.json b/website/.astro/collections/docs.schema.json new file mode 100644 index 0000000..66d7eef --- /dev/null +++ b/website/.astro/collections/docs.schema.json @@ -0,0 +1,33 @@ +{ + "$ref": "#/definitions/docs", + "definitions": { + "docs": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "section": { + "type": "string" + }, + "order": { + "type": "number" + }, + "$schema": { + "type": "string" + } + }, + "required": [ + "title", + "description", + "section", + "order" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/website/.astro/content-assets.mjs b/website/.astro/content-assets.mjs new file mode 100644 index 0000000..2b8b823 --- /dev/null +++ b/website/.astro/content-assets.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/website/.astro/content-modules.mjs b/website/.astro/content-modules.mjs new file mode 100644 index 0000000..2b8b823 --- /dev/null +++ b/website/.astro/content-modules.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/website/.astro/content.d.ts b/website/.astro/content.d.ts new file mode 100644 index 0000000..c59886d --- /dev/null +++ b/website/.astro/content.d.ts @@ -0,0 +1,209 @@ +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + export type ReferenceDataEntry< + C extends CollectionKey, + E extends keyof DataEntryMap[C] = string, + > = { + collection: C; + id: E; + }; + export type ReferenceContentEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}) = string, + > = { + collection: C; + slug: E; + }; + export type ReferenceLiveEntry = { + collection: C; + id: string; + }; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getLiveCollection( + collection: C, + filter?: LiveLoaderCollectionFilterType, + ): Promise< + import('astro').LiveDataCollectionResult, LiveLoaderErrorType> + >; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + entry: ReferenceContentEntry, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + entry: ReferenceDataEntry, + ): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise | undefined + : Promise + : Promise | undefined>; + export function getLiveEntry( + collection: C, + filter: string | LiveLoaderEntryFilterType, + ): Promise, LiveLoaderErrorType>>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: ReferenceContentEntry>[], + ): Promise[]>; + export function getEntries( + entries: ReferenceDataEntry[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? ReferenceContentEntry> + : ReferenceDataEntry + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + "docs": Record; + rendered?: RenderedContent; + filePath?: string; +}>; + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + type ExtractLoaderTypes = T extends import('astro/loaders').LiveLoader< + infer TData, + infer TEntryFilter, + infer TCollectionFilter, + infer TError + > + ? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError } + : { data: never; entryFilter: never; collectionFilter: never; error: never }; + type ExtractDataType = ExtractLoaderTypes['data']; + type ExtractEntryFilterType = ExtractLoaderTypes['entryFilter']; + type ExtractCollectionFilterType = ExtractLoaderTypes['collectionFilter']; + type ExtractErrorType = ExtractLoaderTypes['error']; + + type LiveLoaderDataType = + LiveContentConfig['collections'][C]['schema'] extends undefined + ? ExtractDataType + : import('astro/zod').infer< + Exclude + >; + type LiveLoaderEntryFilterType = + ExtractEntryFilterType; + type LiveLoaderCollectionFilterType = + ExtractCollectionFilterType; + type LiveLoaderErrorType = ExtractErrorType< + LiveContentConfig['collections'][C]['loader'] + >; + + export type ContentConfig = typeof import("../src/content/config.js"); + export type LiveContentConfig = never; +} diff --git a/website/.astro/data-store.json b/website/.astro/data-store.json new file mode 100644 index 0000000..488a54c --- /dev/null +++ b/website/.astro/data-store.json @@ -0,0 +1 @@ +[["Map",1,2,9,10],"meta::meta",["Map",3,4,5,6,7,8],"astro-version","5.18.1","content-config-digest","d2da5d7c4a062d75","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"site\":\"https://feynman.companion.ai\",\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":3001,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{\"light\":\"github-light\",\"dark\":\"github-dark\"},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"actionBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false,\"failOnPrerenderConflict\":false,\"svgo\":false},\"legacy\":{\"collections\":false}}","docs",["Map",11,12,58,59,89,90,132,133,168,169,197,198,233,234,266,267,295,296,312,313,338,339,368,369,391,392,416,417,445,446,477,478,503,504,525,526,546,547,570,571,592,593,616,617,637,638,661,662],"agents/reviewer",{"id":11,"data":13,"body":18,"filePath":19,"digest":20,"rendered":21,"legacyId":57},{"title":14,"description":15,"section":16,"order":17},"Reviewer","Simulate a tough but constructive AI research peer reviewer with inline annotations.","Agents",2,"## Source\n\nGenerated from `.feynman/agents/reviewer.md`. Edit that prompt file, not this docs page.\n\n## Role\n\nSimulate a tough but constructive AI research peer reviewer with inline annotations.\n\n## Default Output\n\n`review.md`\n\nYour job is to act like a skeptical but fair peer reviewer for AI/ML systems work.\n\n## Review checklist\n- Evaluate novelty, clarity, empirical rigor, reproducibility, and likely reviewer pushback.\n- Do not praise vaguely. Every positive claim should be tied to specific evidence.\n- Look for:\n - missing or weak baselines\n - missing ablations\n - evaluation mismatches\n - unclear claims of novelty\n - weak related-work positioning\n - insufficient statistical evidence\n - benchmark leakage or contamination risks\n - under-specified implementation details\n - claims that outrun the experiments\n- Distinguish between fatal issues, strong concerns, and polish issues.\n- Preserve uncertainty. If the draft might pass depending on venue norms, say so explicitly.\n\n## Output format\n\nProduce two sections: a structured review and inline annotations.\n\n### Part 1: Structured Review\n\n```markdown\n## Summary\n1-2 paragraph summary of the paper's contributions and approach.\n\n## Strengths\n- [S1] ...\n- [S2] ...\n\n## Weaknesses\n- [W1] **FATAL:** ...\n- [W2] **MAJOR:** ...\n- [W3] **MINOR:** ...\n\n## Questions for Authors\n- [Q1] ...\n\n## Verdict\nOverall assessment and confidence score. Would this pass at [venue]?\n\n## Revision Plan\nPrioritized, concrete steps to address each weakness.\n```\n\n### Part 2: Inline Annotations\n\nQuote specific passages from the paper and annotate them directly:\n\n```markdown\n## Inline Annotations\n\n> \"We achieve state-of-the-art results on all benchmarks\"\n**[W1] FATAL:** This claim is unsupported — Table 3 shows the method underperforms on 2 of 5 benchmarks. Revise to accurately reflect results.\n\n> \"Our approach is novel in combining X with Y\"\n**[W3] MINOR:** Z et al. (2024) combined X with Y in a different domain. Acknowledge this and clarify the distinction.\n\n> \"We use a learning rate of 1e-4\"\n**[Q1]:** Was this tuned? What range was searched? This matters for reproducibility.\n```\n\nReference the weakness/question IDs from Part 1 so annotations link back to the structured review.\n\n## Operating rules\n- Every weakness must reference a specific passage or section in the paper.\n- Inline annotations must quote the exact text being critiqued.\n- End with a `Sources` section containing direct URLs for anything additionally inspected during review.\n\n## Output contract\n- Save the main artifact to `review.md`.\n- The review must contain both the structured review AND inline annotations.","src/content/docs/agents/reviewer.md","115fe4b081dd8349",{"html":22,"metadata":23},"\u003Ch2 id=\"source\">Source\u003C/h2>\n\u003Cp>Generated from \u003Ccode>.feynman/agents/reviewer.md\u003C/code>. Edit that prompt file, not this docs page.\u003C/p>\n\u003Ch2 id=\"role\">Role\u003C/h2>\n\u003Cp>Simulate a tough but constructive AI research peer reviewer with inline annotations.\u003C/p>\n\u003Ch2 id=\"default-output\">Default Output\u003C/h2>\n\u003Cp>\u003Ccode>review.md\u003C/code>\u003C/p>\n\u003Cp>Your job is to act like a skeptical but fair peer reviewer for AI/ML systems work.\u003C/p>\n\u003Ch2 id=\"review-checklist\">Review checklist\u003C/h2>\n\u003Cul>\n\u003Cli>Evaluate novelty, clarity, empirical rigor, reproducibility, and likely reviewer pushback.\u003C/li>\n\u003Cli>Do not praise vaguely. Every positive claim should be tied to specific evidence.\u003C/li>\n\u003Cli>Look for:\n\u003Cul>\n\u003Cli>missing or weak baselines\u003C/li>\n\u003Cli>missing ablations\u003C/li>\n\u003Cli>evaluation mismatches\u003C/li>\n\u003Cli>unclear claims of novelty\u003C/li>\n\u003Cli>weak related-work positioning\u003C/li>\n\u003Cli>insufficient statistical evidence\u003C/li>\n\u003Cli>benchmark leakage or contamination risks\u003C/li>\n\u003Cli>under-specified implementation details\u003C/li>\n\u003Cli>claims that outrun the experiments\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>Distinguish between fatal issues, strong concerns, and polish issues.\u003C/li>\n\u003Cli>Preserve uncertainty. If the draft might pass depending on venue norms, say so explicitly.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>Produce two sections: a structured review and inline annotations.\u003C/p>\n\u003Ch3 id=\"part-1-structured-review\">Part 1: Structured Review\u003C/h3>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"markdown\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Summary\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">1-2 paragraph summary of the paper's contributions and approach.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Strengths\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">S1\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">S2\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Weaknesses\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">W1\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">**FATAL:**\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">W2\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">**MAJOR:**\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">W3\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">**MINOR:**\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Questions for Authors\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209;--shiki-dark:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">Q1\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">] ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Verdict\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">Overall assessment and confidence score. Would this pass at [\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">venue\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">]?\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Revision Plan\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">Prioritized, concrete steps to address each weakness.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch3 id=\"part-2-inline-annotations\">Part 2: Inline Annotations\u003C/h3>\n\u003Cp>Quote specific passages from the paper and annotate them directly:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"markdown\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Inline Annotations\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#85E89D\">> \"We achieve state-of-the-art results on all benchmarks\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">**[\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">W1\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">] FATAL:**\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> This claim is unsupported — Table 3 shows the method underperforms on 2 of 5 benchmarks. Revise to accurately reflect results.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#85E89D\">> \"Our approach is novel in combining X with Y\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">**[\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">W3\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">] MINOR:**\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> Z et al. (2024) combined X with Y in a different domain. Acknowledge this and clarify the distinction.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#85E89D\">> \"We use a learning rate of 1e-4\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">**[\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline\">Q1\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-light-font-weight:bold;--shiki-dark:#E1E4E8;--shiki-dark-font-weight:bold\">]:**\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> Was this tuned? What range was searched? This matters for reproducibility.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Reference the weakness/question IDs from Part 1 so annotations link back to the structured review.\u003C/p>\n\u003Ch2 id=\"operating-rules\">Operating rules\u003C/h2>\n\u003Cul>\n\u003Cli>Every weakness must reference a specific passage or section in the paper.\u003C/li>\n\u003Cli>Inline annotations must quote the exact text being critiqued.\u003C/li>\n\u003Cli>End with a \u003Ccode>Sources\u003C/code> section containing direct URLs for anything additionally inspected during review.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"output-contract\">Output contract\u003C/h2>\n\u003Cul>\n\u003Cli>Save the main artifact to \u003Ccode>review.md\u003C/code>.\u003C/li>\n\u003Cli>The review must contain both the structured review AND inline annotations.\u003C/li>\n\u003C/ul>",{"headings":24,"localImagePaths":53,"remoteImagePaths":54,"frontmatter":55,"imagePaths":56},[25,28,31,34,37,40,44,47,50],{"depth":17,"slug":26,"text":27},"source","Source",{"depth":17,"slug":29,"text":30},"role","Role",{"depth":17,"slug":32,"text":33},"default-output","Default Output",{"depth":17,"slug":35,"text":36},"review-checklist","Review checklist",{"depth":17,"slug":38,"text":39},"output-format","Output format",{"depth":41,"slug":42,"text":43},3,"part-1-structured-review","Part 1: Structured Review",{"depth":41,"slug":45,"text":46},"part-2-inline-annotations","Part 2: Inline Annotations",{"depth":17,"slug":48,"text":49},"operating-rules","Operating rules",{"depth":17,"slug":51,"text":52},"output-contract","Output contract",[],[],{"title":14,"description":15,"section":16,"order":17},[],"agents/reviewer.md","agents/writer",{"id":58,"data":60,"body":63,"filePath":64,"digest":65,"rendered":66,"legacyId":88},{"title":61,"description":62,"section":16,"order":41},"Writer","Turn research notes into clear, structured briefs and drafts.","## Source\n\nGenerated from `.feynman/agents/writer.md`. Edit that prompt file, not this docs page.\n\n## Role\n\nTurn research notes into clear, structured briefs and drafts.\n\n## Tools\n\n`read`, `bash`, `grep`, `find`, `ls`, `write`, `edit`\n\n## Default Output\n\n`draft.md`\n\n## Integrity commandments\n1. **Write only from supplied evidence.** Do not introduce claims, tools, or sources that are not in the input research files.\n2. **Preserve caveats and disagreements.** Never smooth away uncertainty.\n3. **Be explicit about gaps.** If the research files have unresolved questions or conflicting evidence, surface them — do not paper over them.\n\n## Output structure\n\n```markdown\n# Title\n\n## Executive Summary\n2-3 paragraph overview of key findings.\n\n## Section 1: ...\nDetailed findings organized by theme or question.\n\n## Section N: ...\n...\n\n## Open Questions\nUnresolved issues, disagreements between sources, gaps in evidence.\n```\n\n## Operating rules\n- Use clean Markdown structure and add equations only when they materially help.\n- Keep the narrative readable, but never outrun the evidence.\n- Produce artifacts that are ready to review in a browser or PDF preview.\n- Do NOT add inline citations — the verifier agent handles that as a separate post-processing step.\n- Do NOT add a Sources section — the verifier agent builds that.\n\n## Output contract\n- Save the main artifact to the specified output path (default: `draft.md`).\n- Focus on clarity, structure, and evidence traceability.","src/content/docs/agents/writer.md","ef9e81fb8113db70",{"html":67,"metadata":68},"\u003Ch2 id=\"source\">Source\u003C/h2>\n\u003Cp>Generated from \u003Ccode>.feynman/agents/writer.md\u003C/code>. Edit that prompt file, not this docs page.\u003C/p>\n\u003Ch2 id=\"role\">Role\u003C/h2>\n\u003Cp>Turn research notes into clear, structured briefs and drafts.\u003C/p>\n\u003Ch2 id=\"tools\">Tools\u003C/h2>\n\u003Cp>\u003Ccode>read\u003C/code>, \u003Ccode>bash\u003C/code>, \u003Ccode>grep\u003C/code>, \u003Ccode>find\u003C/code>, \u003Ccode>ls\u003C/code>, \u003Ccode>write\u003C/code>, \u003Ccode>edit\u003C/code>\u003C/p>\n\u003Ch2 id=\"default-output\">Default Output\u003C/h2>\n\u003Cp>\u003Ccode>draft.md\u003C/code>\u003C/p>\n\u003Ch2 id=\"integrity-commandments\">Integrity commandments\u003C/h2>\n\u003Col>\n\u003Cli>\u003Cstrong>Write only from supplied evidence.\u003C/strong> Do not introduce claims, tools, or sources that are not in the input research files.\u003C/li>\n\u003Cli>\u003Cstrong>Preserve caveats and disagreements.\u003C/strong> Never smooth away uncertainty.\u003C/li>\n\u003Cli>\u003Cstrong>Be explicit about gaps.\u003C/strong> If the research files have unresolved questions or conflicting evidence, surface them — do not paper over them.\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"output-structure\">Output structure\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"markdown\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\"># Title\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Executive Summary\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">2-3 paragraph overview of key findings.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Section 1: ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">Detailed findings organized by theme or question.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Section N: ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold\">## Open Questions\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">Unresolved issues, disagreements between sources, gaps in evidence.\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"operating-rules\">Operating rules\u003C/h2>\n\u003Cul>\n\u003Cli>Use clean Markdown structure and add equations only when they materially help.\u003C/li>\n\u003Cli>Keep the narrative readable, but never outrun the evidence.\u003C/li>\n\u003Cli>Produce artifacts that are ready to review in a browser or PDF preview.\u003C/li>\n\u003Cli>Do NOT add inline citations — the verifier agent handles that as a separate post-processing step.\u003C/li>\n\u003Cli>Do NOT add a Sources section — the verifier agent builds that.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"output-contract\">Output contract\u003C/h2>\n\u003Cul>\n\u003Cli>Save the main artifact to the specified output path (default: \u003Ccode>draft.md\u003C/code>).\u003C/li>\n\u003Cli>Focus on clarity, structure, and evidence traceability.\u003C/li>\n\u003C/ul>",{"headings":69,"localImagePaths":84,"remoteImagePaths":85,"frontmatter":86,"imagePaths":87},[70,71,72,75,76,79,82,83],{"depth":17,"slug":26,"text":27},{"depth":17,"slug":29,"text":30},{"depth":17,"slug":73,"text":74},"tools","Tools",{"depth":17,"slug":32,"text":33},{"depth":17,"slug":77,"text":78},"integrity-commandments","Integrity commandments",{"depth":17,"slug":80,"text":81},"output-structure","Output structure",{"depth":17,"slug":48,"text":49},{"depth":17,"slug":51,"text":52},[],[],{"title":61,"description":62,"section":16,"order":41},[],"agents/writer.md","agents/researcher",{"id":89,"data":91,"body":95,"filePath":96,"digest":97,"rendered":98,"legacyId":131},{"title":92,"description":93,"section":16,"order":94},"Researcher","Gather primary evidence across papers, web sources, repos, docs, and local artifacts.",1,"## Source\n\nGenerated from `.feynman/agents/researcher.md`. Edit that prompt file, not this docs page.\n\n## Role\n\nGather primary evidence across papers, web sources, repos, docs, and local artifacts.\n\n## Tools\n\n`read`, `bash`, `grep`, `find`, `ls`\n\n## Default Output\n\n`research.md`\n\n## Integrity commandments\n1. **Never fabricate a source.** Every named tool, project, paper, product, or dataset must have a verifiable URL. If you cannot find a URL, do not mention it.\n2. **Never claim a project exists without checking.** Before citing a GitHub repo, search for it. Before citing a paper, find it. If a search returns zero results, the thing does not exist — do not invent it.\n3. **Never extrapolate details you haven't read.** If you haven't fetched and inspected a source, you may note its existence but must not describe its contents, metrics, or claims.\n4. **URL or it didn't happen.** Every entry in your evidence table must include a direct, checkable URL. No URL = not included.\n\n## Search strategy\n1. **Start wide.** Begin with short, broad queries to map the landscape. Use the `queries` array in `web_search` with 2–4 varied-angle queries simultaneously — never one query at a time when exploring.\n2. **Evaluate availability.** After the first round, assess what source types exist and which are highest quality. Adjust strategy accordingly.\n3. **Progressively narrow.** Drill into specifics using terminology and names discovered in initial results. Refine queries, don't repeat them.\n4. **Cross-source.** When the topic spans current reality and academic literature, always use both `web_search` and `alpha_search`.\n\nUse `recencyFilter` on `web_search` for fast-moving topics. Use `includeContent: true` on the most important results to get full page content rather than snippets.\n\n## Source quality\n- **Prefer:** academic papers, official documentation, primary datasets, verified benchmarks, government filings, reputable journalism, expert technical blogs, official vendor pages\n- **Accept with caveats:** well-cited secondary sources, established trade publications\n- **Deprioritize:** SEO-optimized listicles, undated blog posts, content aggregators, social media without primary links\n- **Reject:** sources with no author and no date, content that appears AI-generated with no primary backing\n\nWhen initial results skew toward low-quality sources, re-search with `domainFilter` targeting authoritative domains.\n\n## Output format\n\nAssign each source a stable numeric ID. Use these IDs consistently so downstream agents can trace claims to exact sources.\n\n### Evidence table\n\n| # | Source | URL | Key claim | Type | Confidence |\n|---|--------|-----|-----------|------|------------|\n| 1 | ... | ... | ... | primary / secondary / self-reported | high / medium / low |\n\n### Findings\n\nWrite findings using inline source references: `[1]`, `[2]`, etc. Every factual claim must cite at least one source by number.\n\n### Sources\n\nNumbered list matching the evidence table:\n1. Author/Title — URL\n2. Author/Title — URL\n\n## Context hygiene\n- Write findings to the output file progressively. Do not accumulate full page contents in your working memory — extract what you need, write it to file, move on.\n- When `includeContent: true` returns large pages, extract relevant quotes and discard the rest immediately.\n- If your search produces 10+ results, triage by title/snippet first. Only fetch full content for the top candidates.\n- Return a one-line summary to the parent, not full findings. The parent reads the output file.\n\n## Output contract\n- Save to the output file (default: `research.md`).\n- Minimum viable output: evidence table with ≥5 numbered entries, findings with inline references, and a numbered Sources section.\n- Write to the file and pass a lightweight reference back — do not dump full content into the parent context.","src/content/docs/agents/researcher.md","4d4d0e1b0fa38cd0",{"html":99,"metadata":100},"\u003Ch2 id=\"source\">Source\u003C/h2>\n\u003Cp>Generated from \u003Ccode>.feynman/agents/researcher.md\u003C/code>. Edit that prompt file, not this docs page.\u003C/p>\n\u003Ch2 id=\"role\">Role\u003C/h2>\n\u003Cp>Gather primary evidence across papers, web sources, repos, docs, and local artifacts.\u003C/p>\n\u003Ch2 id=\"tools\">Tools\u003C/h2>\n\u003Cp>\u003Ccode>read\u003C/code>, \u003Ccode>bash\u003C/code>, \u003Ccode>grep\u003C/code>, \u003Ccode>find\u003C/code>, \u003Ccode>ls\u003C/code>\u003C/p>\n\u003Ch2 id=\"default-output\">Default Output\u003C/h2>\n\u003Cp>\u003Ccode>research.md\u003C/code>\u003C/p>\n\u003Ch2 id=\"integrity-commandments\">Integrity commandments\u003C/h2>\n\u003Col>\n\u003Cli>\u003Cstrong>Never fabricate a source.\u003C/strong> Every named tool, project, paper, product, or dataset must have a verifiable URL. If you cannot find a URL, do not mention it.\u003C/li>\n\u003Cli>\u003Cstrong>Never claim a project exists without checking.\u003C/strong> Before citing a GitHub repo, search for it. Before citing a paper, find it. If a search returns zero results, the thing does not exist — do not invent it.\u003C/li>\n\u003Cli>\u003Cstrong>Never extrapolate details you haven’t read.\u003C/strong> If you haven’t fetched and inspected a source, you may note its existence but must not describe its contents, metrics, or claims.\u003C/li>\n\u003Cli>\u003Cstrong>URL or it didn’t happen.\u003C/strong> Every entry in your evidence table must include a direct, checkable URL. No URL = not included.\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"search-strategy\">Search strategy\u003C/h2>\n\u003Col>\n\u003Cli>\u003Cstrong>Start wide.\u003C/strong> Begin with short, broad queries to map the landscape. Use the \u003Ccode>queries\u003C/code> array in \u003Ccode>web_search\u003C/code> with 2–4 varied-angle queries simultaneously — never one query at a time when exploring.\u003C/li>\n\u003Cli>\u003Cstrong>Evaluate availability.\u003C/strong> After the first round, assess what source types exist and which are highest quality. Adjust strategy accordingly.\u003C/li>\n\u003Cli>\u003Cstrong>Progressively narrow.\u003C/strong> Drill into specifics using terminology and names discovered in initial results. Refine queries, don’t repeat them.\u003C/li>\n\u003Cli>\u003Cstrong>Cross-source.\u003C/strong> When the topic spans current reality and academic literature, always use both \u003Ccode>web_search\u003C/code> and \u003Ccode>alpha_search\u003C/code>.\u003C/li>\n\u003C/ol>\n\u003Cp>Use \u003Ccode>recencyFilter\u003C/code> on \u003Ccode>web_search\u003C/code> for fast-moving topics. Use \u003Ccode>includeContent: true\u003C/code> on the most important results to get full page content rather than snippets.\u003C/p>\n\u003Ch2 id=\"source-quality\">Source quality\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Prefer:\u003C/strong> academic papers, official documentation, primary datasets, verified benchmarks, government filings, reputable journalism, expert technical blogs, official vendor pages\u003C/li>\n\u003Cli>\u003Cstrong>Accept with caveats:\u003C/strong> well-cited secondary sources, established trade publications\u003C/li>\n\u003Cli>\u003Cstrong>Deprioritize:\u003C/strong> SEO-optimized listicles, undated blog posts, content aggregators, social media without primary links\u003C/li>\n\u003Cli>\u003Cstrong>Reject:\u003C/strong> sources with no author and no date, content that appears AI-generated with no primary backing\u003C/li>\n\u003C/ul>\n\u003Cp>When initial results skew toward low-quality sources, re-search with \u003Ccode>domainFilter\u003C/code> targeting authoritative domains.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>Assign each source a stable numeric ID. Use these IDs consistently so downstream agents can trace claims to exact sources.\u003C/p>\n\u003Ch3 id=\"evidence-table\">Evidence table\u003C/h3>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>#\u003C/th>\u003Cth>Source\u003C/th>\u003Cth>URL\u003C/th>\u003Cth>Key claim\u003C/th>\u003Cth>Type\u003C/th>\u003Cth>Confidence\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>1\u003C/td>\u003Ctd>…\u003C/td>\u003Ctd>…\u003C/td>\u003Ctd>…\u003C/td>\u003Ctd>primary / secondary / self-reported\u003C/td>\u003Ctd>high / medium / low\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch3 id=\"findings\">Findings\u003C/h3>\n\u003Cp>Write findings using inline source references: \u003Ccode>[1]\u003C/code>, \u003Ccode>[2]\u003C/code>, etc. Every factual claim must cite at least one source by number.\u003C/p>\n\u003Ch3 id=\"sources\">Sources\u003C/h3>\n\u003Cp>Numbered list matching the evidence table:\u003C/p>\n\u003Col>\n\u003Cli>Author/Title — URL\u003C/li>\n\u003Cli>Author/Title — URL\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"context-hygiene\">Context hygiene\u003C/h2>\n\u003Cul>\n\u003Cli>Write findings to the output file progressively. Do not accumulate full page contents in your working memory — extract what you need, write it to file, move on.\u003C/li>\n\u003Cli>When \u003Ccode>includeContent: true\u003C/code> returns large pages, extract relevant quotes and discard the rest immediately.\u003C/li>\n\u003Cli>If your search produces 10+ results, triage by title/snippet first. Only fetch full content for the top candidates.\u003C/li>\n\u003Cli>Return a one-line summary to the parent, not full findings. The parent reads the output file.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"output-contract\">Output contract\u003C/h2>\n\u003Cul>\n\u003Cli>Save to the output file (default: \u003Ccode>research.md\u003C/code>).\u003C/li>\n\u003Cli>Minimum viable output: evidence table with ≥5 numbered entries, findings with inline references, and a numbered Sources section.\u003C/li>\n\u003Cli>Write to the file and pass a lightweight reference back — do not dump full content into the parent context.\u003C/li>\n\u003C/ul>",{"headings":101,"localImagePaths":127,"remoteImagePaths":128,"frontmatter":129,"imagePaths":130},[102,103,104,105,106,107,110,113,114,117,120,123,126],{"depth":17,"slug":26,"text":27},{"depth":17,"slug":29,"text":30},{"depth":17,"slug":73,"text":74},{"depth":17,"slug":32,"text":33},{"depth":17,"slug":77,"text":78},{"depth":17,"slug":108,"text":109},"search-strategy","Search strategy",{"depth":17,"slug":111,"text":112},"source-quality","Source quality",{"depth":17,"slug":38,"text":39},{"depth":41,"slug":115,"text":116},"evidence-table","Evidence table",{"depth":41,"slug":118,"text":119},"findings","Findings",{"depth":41,"slug":121,"text":122},"sources","Sources",{"depth":17,"slug":124,"text":125},"context-hygiene","Context hygiene",{"depth":17,"slug":51,"text":52},[],[],{"title":92,"description":93,"section":16,"order":94},[],"agents/researcher.md","getting-started/setup",{"id":132,"data":134,"body":138,"filePath":139,"digest":140,"rendered":141,"legacyId":167},{"title":135,"description":136,"section":137,"order":41},"Setup","Detailed setup guide for Feynman","Getting Started","## Guided setup\n\n```bash\nfeynman setup\n```\n\nThis walks through four steps:\n\n### Model provider authentication\n\nFeynman uses Pi's OAuth system for model access. The setup wizard prompts you to log in to your preferred provider.\n\n```bash\nfeynman model login\n```\n\n### AlphaXiv login\n\nAlphaXiv powers Feynman's paper search and analysis tools. Sign in with:\n\n```bash\nfeynman alpha login\n```\n\nCheck status anytime:\n\n```bash\nfeynman alpha status\n```\n\n### Web search routing\n\nFeynman supports three web search backends:\n\n- **auto** — Prefer Perplexity when configured, fall back to Gemini\n- **perplexity** — Force Perplexity Sonar\n- **gemini** — Force Gemini (default, zero-config via signed-in Chromium)\n\nThe default path requires no API keys — it uses Gemini Browser via your signed-in Chromium profile.\n\n### Preview dependencies\n\nFor PDF and HTML export of generated artifacts, Feynman needs `pandoc`:\n\n```bash\nfeynman --setup-preview\n```\n\nThis installs pandoc automatically on macOS/Homebrew systems.\n\n## Diagnostics\n\nRun the doctor to check everything:\n\n```bash\nfeynman doctor\n```\n\nThis verifies model auth, alphaXiv credentials, preview dependencies, and the Pi runtime.","src/content/docs/getting-started/setup.md","49b3f67aa1ff128a",{"html":142,"metadata":143},"\u003Ch2 id=\"guided-setup\">Guided setup\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> setup\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This walks through four steps:\u003C/p>\n\u003Ch3 id=\"model-provider-authentication\">Model provider authentication\u003C/h3>\n\u003Cp>Feynman uses Pi’s OAuth system for model access. The setup wizard prompts you to log in to your preferred provider.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> model\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> login\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch3 id=\"alphaxiv-login\">AlphaXiv login\u003C/h3>\n\u003Cp>AlphaXiv powers Feynman’s paper search and analysis tools. Sign in with:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> alpha\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> login\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Check status anytime:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> alpha\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> status\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch3 id=\"web-search-routing\">Web search routing\u003C/h3>\n\u003Cp>Feynman supports three web search backends:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>auto\u003C/strong> — Prefer Perplexity when configured, fall back to Gemini\u003C/li>\n\u003Cli>\u003Cstrong>perplexity\u003C/strong> — Force Perplexity Sonar\u003C/li>\n\u003Cli>\u003Cstrong>gemini\u003C/strong> — Force Gemini (default, zero-config via signed-in Chromium)\u003C/li>\n\u003C/ul>\n\u003Cp>The default path requires no API keys — it uses Gemini Browser via your signed-in Chromium profile.\u003C/p>\n\u003Ch3 id=\"preview-dependencies\">Preview dependencies\u003C/h3>\n\u003Cp>For PDF and HTML export of generated artifacts, Feynman needs \u003Ccode>pandoc\u003C/code>:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --setup-preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This installs pandoc automatically on macOS/Homebrew systems.\u003C/p>\n\u003Ch2 id=\"diagnostics\">Diagnostics\u003C/h2>\n\u003Cp>Run the doctor to check everything:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> doctor\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This verifies model auth, alphaXiv credentials, preview dependencies, and the Pi runtime.\u003C/p>",{"headings":144,"localImagePaths":163,"remoteImagePaths":164,"frontmatter":165,"imagePaths":166},[145,148,151,154,157,160],{"depth":17,"slug":146,"text":147},"guided-setup","Guided setup",{"depth":41,"slug":149,"text":150},"model-provider-authentication","Model provider authentication",{"depth":41,"slug":152,"text":153},"alphaxiv-login","AlphaXiv login",{"depth":41,"slug":155,"text":156},"web-search-routing","Web search routing",{"depth":41,"slug":158,"text":159},"preview-dependencies","Preview dependencies",{"depth":17,"slug":161,"text":162},"diagnostics","Diagnostics",[],[],{"title":135,"description":136,"section":137,"order":41},[],"getting-started/setup.md","getting-started/quickstart",{"id":168,"data":170,"body":173,"filePath":174,"digest":175,"rendered":176,"legacyId":196},{"title":171,"description":172,"section":137,"order":17},"Quick Start","Get up and running with Feynman in 60 seconds","## First run\n\n```bash\nfeynman setup\nfeynman\n```\n\n`feynman setup` walks you through model authentication, alphaXiv login, web search configuration, and preview dependencies.\n\n## Ask naturally\n\nFeynman routes your questions into the right workflow automatically. You don't need slash commands to get started.\n\n```\n> What are the main approaches to RLHF alignment?\n```\n\nFeynman will search papers, gather web sources, and produce a structured answer with citations.\n\n## Use workflows directly\n\nFor explicit control, use slash commands inside the REPL:\n\n```\n> /deepresearch transformer scaling laws\n> /lit multimodal reasoning benchmarks\n> /review paper.pdf\n```\n\n## Output locations\n\nFeynman writes durable artifacts to canonical directories:\n\n- `outputs/` — Reviews, reading lists, summaries\n- `papers/` — Polished paper-style drafts\n- `experiments/` — Runnable code and result logs\n- `notes/` — Scratch notes and session logs","src/content/docs/getting-started/quickstart.md","0a22caade9f6c5a5",{"html":177,"metadata":178},"\u003Ch2 id=\"first-run\">First run\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> setup\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>\u003Ccode>feynman setup\u003C/code> walks you through model authentication, alphaXiv login, web search configuration, and preview dependencies.\u003C/p>\n\u003Ch2 id=\"ask-naturally\">Ask naturally\u003C/h2>\n\u003Cp>Feynman routes your questions into the right workflow automatically. You don’t need slash commands to get started.\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>> What are the main approaches to RLHF alignment?\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Feynman will search papers, gather web sources, and produce a structured answer with citations.\u003C/p>\n\u003Ch2 id=\"use-workflows-directly\">Use workflows directly\u003C/h2>\n\u003Cp>For explicit control, use slash commands inside the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>> /deepresearch transformer scaling laws\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>> /lit multimodal reasoning benchmarks\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>> /review paper.pdf\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output-locations\">Output locations\u003C/h2>\n\u003Cp>Feynman writes durable artifacts to canonical directories:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>outputs/\u003C/code> — Reviews, reading lists, summaries\u003C/li>\n\u003Cli>\u003Ccode>papers/\u003C/code> — Polished paper-style drafts\u003C/li>\n\u003Cli>\u003Ccode>experiments/\u003C/code> — Runnable code and result logs\u003C/li>\n\u003Cli>\u003Ccode>notes/\u003C/code> — Scratch notes and session logs\u003C/li>\n\u003C/ul>",{"headings":179,"localImagePaths":192,"remoteImagePaths":193,"frontmatter":194,"imagePaths":195},[180,183,186,189],{"depth":17,"slug":181,"text":182},"first-run","First run",{"depth":17,"slug":184,"text":185},"ask-naturally","Ask naturally",{"depth":17,"slug":187,"text":188},"use-workflows-directly","Use workflows directly",{"depth":17,"slug":190,"text":191},"output-locations","Output locations",[],[],{"title":171,"description":172,"section":137,"order":17},[],"getting-started/quickstart.md","getting-started/configuration",{"id":197,"data":199,"body":203,"filePath":204,"digest":205,"rendered":206,"legacyId":232},{"title":200,"description":201,"section":137,"order":202},"Configuration","Configure models, search, and runtime options",4,"## Model\n\nSet the default model:\n\n```bash\nfeynman model set \u003Cprovider:model>\n```\n\nOverride at runtime:\n\n```bash\nfeynman --model anthropic:claude-opus-4-6\n```\n\nList available models:\n\n```bash\nfeynman model list\n```\n\n## Thinking level\n\nControl the reasoning depth:\n\n```bash\nfeynman --thinking high\n```\n\nLevels: `off`, `minimal`, `low`, `medium`, `high`, `xhigh`.\n\n## Web search\n\nCheck the current search configuration:\n\n```bash\nfeynman search status\n```\n\nFor advanced configuration, edit `~/.feynman/web-search.json` directly to set Gemini API keys, Perplexity keys, or a different route.\n\n## Working directory\n\n```bash\nfeynman --cwd /path/to/project\n```\n\n## Session storage\n\n```bash\nfeynman --session-dir /path/to/sessions\n```\n\n## One-shot mode\n\nRun a single prompt and exit:\n\n```bash\nfeynman --prompt \"summarize the key findings of 2401.12345\"\n```","src/content/docs/getting-started/configuration.md","9d66eb82ad4b948a",{"html":207,"metadata":208},"\u003Ch2 id=\"model\">Model\u003C/h2>\n\u003Cp>Set the default model:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> model\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> set\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\"> <\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">provider:mode\u003C/span>\u003Cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">l\u003C/span>\u003Cspan style=\"color:#D73A49;--shiki-dark:#F97583\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Override at runtime:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --model\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> anthropic:claude-opus-4-6\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>List available models:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> model\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> list\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"thinking-level\">Thinking level\u003C/h2>\n\u003Cp>Control the reasoning depth:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --thinking\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> high\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Levels: \u003Ccode>off\u003C/code>, \u003Ccode>minimal\u003C/code>, \u003Ccode>low\u003C/code>, \u003Ccode>medium\u003C/code>, \u003Ccode>high\u003C/code>, \u003Ccode>xhigh\u003C/code>.\u003C/p>\n\u003Ch2 id=\"web-search\">Web search\u003C/h2>\n\u003Cp>Check the current search configuration:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> search\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> status\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>For advanced configuration, edit \u003Ccode>~/.feynman/web-search.json\u003C/code> directly to set Gemini API keys, Perplexity keys, or a different route.\u003C/p>\n\u003Ch2 id=\"working-directory\">Working directory\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --cwd\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> /path/to/project\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"session-storage\">Session storage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --session-dir\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> /path/to/sessions\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"one-shot-mode\">One-shot mode\u003C/h2>\n\u003Cp>Run a single prompt and exit:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --prompt\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"summarize the key findings of 2401.12345\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":209,"localImagePaths":228,"remoteImagePaths":229,"frontmatter":230,"imagePaths":231},[210,213,216,219,222,225],{"depth":17,"slug":211,"text":212},"model","Model",{"depth":17,"slug":214,"text":215},"thinking-level","Thinking level",{"depth":17,"slug":217,"text":218},"web-search","Web search",{"depth":17,"slug":220,"text":221},"working-directory","Working directory",{"depth":17,"slug":223,"text":224},"session-storage","Session storage",{"depth":17,"slug":226,"text":227},"one-shot-mode","One-shot mode",[],[],{"title":200,"description":201,"section":137,"order":202},[],"getting-started/configuration.md","reference/cli-commands",{"id":233,"data":235,"body":239,"filePath":240,"digest":241,"rendered":242,"legacyId":265},{"title":236,"description":237,"section":238,"order":94},"CLI Commands","Complete reference for Feynman CLI commands","Reference","This page covers the dedicated Feynman CLI commands and compatibility flags.\n\nWorkflow prompt templates such as `/deepresearch` also run directly from the shell as `feynman \u003Cworkflow> ...`. Those workflow entries live in the slash-command reference instead of being duplicated here.\n\n## Core\n\n| Command | Description |\n| --- | --- |\n| `feynman` | Launch the interactive REPL. |\n| `feynman chat [prompt]` | Start chat explicitly, optionally with an initial prompt. |\n| `feynman help` | Show CLI help. |\n| `feynman setup` | Run the guided setup wizard. |\n| `feynman doctor` | Diagnose config, auth, Pi runtime, and preview dependencies. |\n| `feynman status` | Show the current setup summary. |\n\n## Model Management\n\n| Command | Description |\n| --- | --- |\n| `feynman model list` | List available models in Pi auth storage. |\n| `feynman model login [id]` | Login to a Pi OAuth model provider. |\n| `feynman model logout [id]` | Logout from a Pi OAuth model provider. |\n| `feynman model set \u003Cprovider/model>` | Set the default model. |\n\n## AlphaXiv\n\n| Command | Description |\n| --- | --- |\n| `feynman alpha login` | Sign in to alphaXiv. |\n| `feynman alpha logout` | Clear alphaXiv auth. |\n| `feynman alpha status` | Check alphaXiv auth status. |\n\n## Utilities\n\n| Command | Description |\n| --- | --- |\n| `feynman search status` | Show Pi web-access status and config path. |\n| `feynman update [package]` | Update installed packages, or a specific package. |\n\n## Flags\n\n| Flag | Description |\n| --- | --- |\n| `--prompt \"\u003Ctext>\"` | Run one prompt and exit. |\n| `--alpha-login` | Sign in to alphaXiv and exit. |\n| `--alpha-logout` | Clear alphaXiv auth and exit. |\n| `--alpha-status` | Show alphaXiv auth status and exit. |\n| `--model \u003Cprovider:model>` | Force a specific model. |\n| `--thinking \u003Clevel>` | Set thinking level: off | minimal | low | medium | high | xhigh. |\n| `--cwd \u003Cpath>` | Set the working directory for tools. |\n| `--session-dir \u003Cpath>` | Set the session storage directory. |\n| `--new-session` | Start a new persisted session. |\n| `--doctor` | Alias for `feynman doctor`. |\n| `--setup-preview` | Alias for `feynman setup preview`. |","src/content/docs/reference/cli-commands.md","5ba10666ccf260a6",{"html":243,"metadata":244},"\u003Cp>This page covers the dedicated Feynman CLI commands and compatibility flags.\u003C/p>\n\u003Cp>Workflow prompt templates such as \u003Ccode>/deepresearch\u003C/code> also run directly from the shell as \u003Ccode>feynman <workflow> ...\u003C/code>. Those workflow entries live in the slash-command reference instead of being duplicated here.\u003C/p>\n\u003Ch2 id=\"core\">Core\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>feynman\u003C/code>\u003C/td>\u003Ctd>Launch the interactive REPL.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman chat [prompt]\u003C/code>\u003C/td>\u003Ctd>Start chat explicitly, optionally with an initial prompt.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman help\u003C/code>\u003C/td>\u003Ctd>Show CLI help.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman setup\u003C/code>\u003C/td>\u003Ctd>Run the guided setup wizard.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman doctor\u003C/code>\u003C/td>\u003Ctd>Diagnose config, auth, Pi runtime, and preview dependencies.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman status\u003C/code>\u003C/td>\u003Ctd>Show the current setup summary.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"model-management\">Model Management\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>feynman model list\u003C/code>\u003C/td>\u003Ctd>List available models in Pi auth storage.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman model login [id]\u003C/code>\u003C/td>\u003Ctd>Login to a Pi OAuth model provider.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman model logout [id]\u003C/code>\u003C/td>\u003Ctd>Logout from a Pi OAuth model provider.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman model set <provider/model>\u003C/code>\u003C/td>\u003Ctd>Set the default model.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"alphaxiv\">AlphaXiv\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>feynman alpha login\u003C/code>\u003C/td>\u003Ctd>Sign in to alphaXiv.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman alpha logout\u003C/code>\u003C/td>\u003Ctd>Clear alphaXiv auth.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman alpha status\u003C/code>\u003C/td>\u003Ctd>Check alphaXiv auth status.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"utilities\">Utilities\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>feynman search status\u003C/code>\u003C/td>\u003Ctd>Show Pi web-access status and config path.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman update [package]\u003C/code>\u003C/td>\u003Ctd>Update installed packages, or a specific package.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"flags\">Flags\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Flag\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>--prompt \"<text>\"\u003C/code>\u003C/td>\u003Ctd>Run one prompt and exit.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--alpha-login\u003C/code>\u003C/td>\u003Ctd>Sign in to alphaXiv and exit.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--alpha-logout\u003C/code>\u003C/td>\u003Ctd>Clear alphaXiv auth and exit.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--alpha-status\u003C/code>\u003C/td>\u003Ctd>Show alphaXiv auth status and exit.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--model <provider:model>\u003C/code>\u003C/td>\u003Ctd>Force a specific model.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--thinking <level>\u003C/code>\u003C/td>\u003Ctd>Set thinking level: off\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--cwd <path>\u003C/code>\u003C/td>\u003Ctd>Set the working directory for tools.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--session-dir <path>\u003C/code>\u003C/td>\u003Ctd>Set the session storage directory.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--new-session\u003C/code>\u003C/td>\u003Ctd>Start a new persisted session.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--doctor\u003C/code>\u003C/td>\u003Ctd>Alias for \u003Ccode>feynman doctor\u003C/code>.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--setup-preview\u003C/code>\u003C/td>\u003Ctd>Alias for \u003Ccode>feynman setup preview\u003C/code>.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>",{"headings":245,"localImagePaths":261,"remoteImagePaths":262,"frontmatter":263,"imagePaths":264},[246,249,252,255,258],{"depth":17,"slug":247,"text":248},"core","Core",{"depth":17,"slug":250,"text":251},"model-management","Model Management",{"depth":17,"slug":253,"text":254},"alphaxiv","AlphaXiv",{"depth":17,"slug":256,"text":257},"utilities","Utilities",{"depth":17,"slug":259,"text":260},"flags","Flags",[],[],{"title":236,"description":237,"section":238,"order":94},[],"reference/cli-commands.md","getting-started/installation",{"id":266,"data":268,"body":271,"filePath":272,"digest":273,"rendered":274,"legacyId":294},{"title":269,"description":270,"section":137,"order":94},"Installation","Install Feynman and get started","## Requirements\n\n- Node.js 20 or later\n- npm 9 or later\n\n## Install\n\n```bash\nnpm install -g @companion-ai/feynman\n```\n\n## Verify\n\n```bash\nfeynman --version\n```\n\n## Local Development\n\nFor contributing or local development:\n\n```bash\ngit clone https://github.com/getcompanion-ai/feynman.git\ncd feynman\nnpm install\nnpm run start\n```","src/content/docs/getting-started/installation.md","781ab0278b8c1673",{"html":275,"metadata":276},"\u003Ch2 id=\"requirements\">Requirements\u003C/h2>\n\u003Cul>\n\u003Cli>Node.js 20 or later\u003C/li>\n\u003Cli>npm 9 or later\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"install\">Install\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">npm\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> install\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -g\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> @companion-ai/feynman\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"verify\">Verify\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --version\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"local-development\">Local Development\u003C/h2>\n\u003Cp>For contributing or local development:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">git\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> clone\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> https://github.com/getcompanion-ai/feynman.git\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">cd\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> feynman\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">npm\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> install\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">npm\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> run\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> start\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":277,"localImagePaths":290,"remoteImagePaths":291,"frontmatter":292,"imagePaths":293},[278,281,284,287],{"depth":17,"slug":279,"text":280},"requirements","Requirements",{"depth":17,"slug":282,"text":283},"install","Install",{"depth":17,"slug":285,"text":286},"verify","Verify",{"depth":17,"slug":288,"text":289},"local-development","Local Development",[],[],{"title":269,"description":270,"section":137,"order":94},[],"getting-started/installation.md","reference/package-stack",{"id":295,"data":297,"body":300,"filePath":301,"digest":302,"rendered":303,"legacyId":311},{"title":298,"description":299,"section":238,"order":41},"Package Stack","Curated Pi packages bundled with Feynman","Curated Pi packages bundled with Feynman. The runtime package list lives in `.feynman/settings.json`.\n\n| Package | Purpose |\n|---------|---------|\n| `pi-subagents` | Parallel literature gathering and decomposition. |\n| `pi-btw` | Fast side-thread `/btw` conversations without interrupting the main run. |\n| `pi-docparser` | PDFs, Office docs, spreadsheets, and images. |\n| `pi-web-access` | Web, GitHub, PDF, and media access. |\n| `pi-markdown-preview` | Polished Markdown and LaTeX-heavy research writeups. |\n| `@walterra/pi-charts` | Charts and quantitative visualizations. |\n| `pi-generative-ui` | Interactive HTML-style widgets. |\n| `pi-mermaid` | Diagrams in the TUI. |\n| `@aliou/pi-processes` | Long-running experiments and log tails. |\n| `pi-zotero` | Citation-library workflows. |\n| `@kaiserlich-dev/pi-session-search` | Indexed session recall and summarize/resume UI. |\n| `pi-schedule-prompt` | Recurring and deferred research jobs. |\n| `@samfp/pi-memory` | Automatic preference and correction memory across sessions. |\n| `@tmustier/pi-ralph-wiggum` | Long-running agent loops for iterative development. |","src/content/docs/reference/package-stack.md","f8845d3da2b66045",{"html":304,"metadata":305},"\u003Cp>Curated Pi packages bundled with Feynman. The runtime package list lives in \u003Ccode>.feynman/settings.json\u003C/code>.\u003C/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Package\u003C/th>\u003Cth>Purpose\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>pi-subagents\u003C/code>\u003C/td>\u003Ctd>Parallel literature gathering and decomposition.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-btw\u003C/code>\u003C/td>\u003Ctd>Fast side-thread \u003Ccode>/btw\u003C/code> conversations without interrupting the main run.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-docparser\u003C/code>\u003C/td>\u003Ctd>PDFs, Office docs, spreadsheets, and images.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-web-access\u003C/code>\u003C/td>\u003Ctd>Web, GitHub, PDF, and media access.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-markdown-preview\u003C/code>\u003C/td>\u003Ctd>Polished Markdown and LaTeX-heavy research writeups.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@walterra/pi-charts\u003C/code>\u003C/td>\u003Ctd>Charts and quantitative visualizations.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-generative-ui\u003C/code>\u003C/td>\u003Ctd>Interactive HTML-style widgets.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-mermaid\u003C/code>\u003C/td>\u003Ctd>Diagrams in the TUI.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@aliou/pi-processes\u003C/code>\u003C/td>\u003Ctd>Long-running experiments and log tails.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-zotero\u003C/code>\u003C/td>\u003Ctd>Citation-library workflows.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@kaiserlich-dev/pi-session-search\u003C/code>\u003C/td>\u003Ctd>Indexed session recall and summarize/resume UI.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-schedule-prompt\u003C/code>\u003C/td>\u003Ctd>Recurring and deferred research jobs.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@samfp/pi-memory\u003C/code>\u003C/td>\u003Ctd>Automatic preference and correction memory across sessions.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@tmustier/pi-ralph-wiggum\u003C/code>\u003C/td>\u003Ctd>Long-running agent loops for iterative development.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>",{"headings":306,"localImagePaths":307,"remoteImagePaths":308,"frontmatter":309,"imagePaths":310},[],[],[],{"title":298,"description":299,"section":238,"order":41},[],"reference/package-stack.md","tools/session-search",{"id":312,"data":314,"body":317,"filePath":318,"digest":319,"rendered":320,"legacyId":337},{"title":315,"description":316,"section":74,"order":41},"Session Search","Search prior Feynman session transcripts","## Overview\n\nThe `session_search` tool recovers prior Feynman work from stored session transcripts. Useful for picking up previous research threads or finding past findings.\n\n## Usage\n\nInside the REPL:\n\n```\n/search\n```\n\nOr use the tool directly — Feynman will invoke `session_search` automatically when you reference prior work.\n\n## What it searches\n\n- Full session transcripts\n- Tool outputs and agent results\n- Generated artifacts and their content","src/content/docs/tools/session-search.md","7091dddc6969e581",{"html":321,"metadata":322},"\u003Ch2 id=\"overview\">Overview\u003C/h2>\n\u003Cp>The \u003Ccode>session_search\u003C/code> tool recovers prior Feynman work from stored session transcripts. Useful for picking up previous research threads or finding past findings.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>Inside the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/search\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Or use the tool directly — Feynman will invoke \u003Ccode>session_search\u003C/code> automatically when you reference prior work.\u003C/p>\n\u003Ch2 id=\"what-it-searches\">What it searches\u003C/h2>\n\u003Cul>\n\u003Cli>Full session transcripts\u003C/li>\n\u003Cli>Tool outputs and agent results\u003C/li>\n\u003Cli>Generated artifacts and their content\u003C/li>\n\u003C/ul>",{"headings":323,"localImagePaths":333,"remoteImagePaths":334,"frontmatter":335,"imagePaths":336},[324,327,330],{"depth":17,"slug":325,"text":326},"overview","Overview",{"depth":17,"slug":328,"text":329},"usage","Usage",{"depth":17,"slug":331,"text":332},"what-it-searches","What it searches",[],[],{"title":315,"description":316,"section":74,"order":41},[],"tools/session-search.md","tools/alphaxiv",{"id":338,"data":340,"body":342,"filePath":343,"digest":344,"rendered":345,"legacyId":367},{"title":254,"description":341,"section":74,"order":94},"Paper search and analysis tools","## Overview\n\nAlphaXiv powers Feynman's academic paper workflows. All tools require an alphaXiv account — sign in with `feynman alpha login`.\n\n## Tools\n\n### alpha_search\n\nPaper discovery with three search modes:\n\n- **semantic** — Meaning-based search across paper content\n- **keyword** — Traditional keyword matching\n- **agentic** — AI-powered search that interprets your intent\n\n### alpha_get_paper\n\nFetch a paper's report (structured summary) or full raw text by arXiv ID.\n\n### alpha_ask_paper\n\nAsk a targeted question about a specific paper. Returns an answer grounded in the paper's content.\n\n### alpha_annotate_paper\n\nAdd persistent local notes to a paper. Annotations are stored locally and persist across sessions.\n\n### alpha_list_annotations\n\nRecall all annotations across papers and sessions.\n\n### alpha_read_code\n\nRead source code from a paper's linked GitHub repository. Useful for auditing or replication planning.","src/content/docs/tools/alphaxiv.md","a6eeb2c5a98d3096",{"html":346,"metadata":347},"\u003Ch2 id=\"overview\">Overview\u003C/h2>\n\u003Cp>AlphaXiv powers Feynman’s academic paper workflows. All tools require an alphaXiv account — sign in with \u003Ccode>feynman alpha login\u003C/code>.\u003C/p>\n\u003Ch2 id=\"tools\">Tools\u003C/h2>\n\u003Ch3 id=\"alpha_search\">alpha_search\u003C/h3>\n\u003Cp>Paper discovery with three search modes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>semantic\u003C/strong> — Meaning-based search across paper content\u003C/li>\n\u003Cli>\u003Cstrong>keyword\u003C/strong> — Traditional keyword matching\u003C/li>\n\u003Cli>\u003Cstrong>agentic\u003C/strong> — AI-powered search that interprets your intent\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"alpha_get_paper\">alpha_get_paper\u003C/h3>\n\u003Cp>Fetch a paper’s report (structured summary) or full raw text by arXiv ID.\u003C/p>\n\u003Ch3 id=\"alpha_ask_paper\">alpha_ask_paper\u003C/h3>\n\u003Cp>Ask a targeted question about a specific paper. Returns an answer grounded in the paper’s content.\u003C/p>\n\u003Ch3 id=\"alpha_annotate_paper\">alpha_annotate_paper\u003C/h3>\n\u003Cp>Add persistent local notes to a paper. Annotations are stored locally and persist across sessions.\u003C/p>\n\u003Ch3 id=\"alpha_list_annotations\">alpha_list_annotations\u003C/h3>\n\u003Cp>Recall all annotations across papers and sessions.\u003C/p>\n\u003Ch3 id=\"alpha_read_code\">alpha_read_code\u003C/h3>\n\u003Cp>Read source code from a paper’s linked GitHub repository. Useful for auditing or replication planning.\u003C/p>",{"headings":348,"localImagePaths":363,"remoteImagePaths":364,"frontmatter":365,"imagePaths":366},[349,350,351,353,355,357,359,361],{"depth":17,"slug":325,"text":326},{"depth":17,"slug":73,"text":74},{"depth":41,"slug":352,"text":352},"alpha_search",{"depth":41,"slug":354,"text":354},"alpha_get_paper",{"depth":41,"slug":356,"text":356},"alpha_ask_paper",{"depth":41,"slug":358,"text":358},"alpha_annotate_paper",{"depth":41,"slug":360,"text":360},"alpha_list_annotations",{"depth":41,"slug":362,"text":362},"alpha_read_code",[],[],{"title":254,"description":341,"section":74,"order":94},[],"tools/alphaxiv.md","tools/preview",{"id":368,"data":370,"body":373,"filePath":374,"digest":375,"rendered":376,"legacyId":390},{"title":371,"description":372,"section":74,"order":202},"Preview","Preview generated artifacts in browser or PDF","## Overview\n\nThe `preview_file` tool opens generated artifacts in your browser or PDF viewer.\n\n## Usage\n\nInside the REPL:\n\n```\n/preview\n```\n\nOr Feynman will suggest previewing when you generate artifacts that benefit from rendered output (Markdown with LaTeX, HTML reports, etc.).\n\n## Requirements\n\nPreview requires `pandoc` for PDF/HTML rendering. Install it with:\n\n```bash\nfeynman --setup-preview\n```\n\n## Supported formats\n\n- Markdown (with LaTeX math rendering)\n- HTML\n- PDF","src/content/docs/tools/preview.md","b42137d5e0befd83",{"html":377,"metadata":378},"\u003Ch2 id=\"overview\">Overview\u003C/h2>\n\u003Cp>The \u003Ccode>preview_file\u003C/code> tool opens generated artifacts in your browser or PDF viewer.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>Inside the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Or Feynman will suggest previewing when you generate artifacts that benefit from rendered output (Markdown with LaTeX, HTML reports, etc.).\u003C/p>\n\u003Ch2 id=\"requirements\">Requirements\u003C/h2>\n\u003Cp>Preview requires \u003Ccode>pandoc\u003C/code> for PDF/HTML rendering. Install it with:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> --setup-preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"supported-formats\">Supported formats\u003C/h2>\n\u003Cul>\n\u003Cli>Markdown (with LaTeX math rendering)\u003C/li>\n\u003Cli>HTML\u003C/li>\n\u003Cli>PDF\u003C/li>\n\u003C/ul>",{"headings":379,"localImagePaths":386,"remoteImagePaths":387,"frontmatter":388,"imagePaths":389},[380,381,382,383],{"depth":17,"slug":325,"text":326},{"depth":17,"slug":328,"text":329},{"depth":17,"slug":279,"text":280},{"depth":17,"slug":384,"text":385},"supported-formats","Supported formats",[],[],{"title":371,"description":372,"section":74,"order":202},[],"tools/preview.md","reference/slash-commands",{"id":391,"data":393,"body":396,"filePath":397,"digest":398,"rendered":399,"legacyId":415},{"title":394,"description":395,"section":238,"order":17},"Slash Commands","Repo-owned REPL slash commands","This page documents the slash commands that Feynman owns in this repository: prompt templates from `prompts/` and extension commands from `extensions/research-tools/`.\n\nAdditional slash commands can appear at runtime from Pi core and bundled packages such as subagents, preview, session search, and scheduling. Use `/help` inside the REPL for the live command list instead of relying on a static copy of package-provided commands.\n\n## Research Workflows\n\n| Command | Description |\n| --- | --- |\n| `/deepresearch \u003Ctopic>` | Run a thorough, source-heavy investigation on a topic and produce a durable research brief with inline citations. |\n| `/lit \u003Ctopic>` | Run a literature review on a topic using paper search and primary-source synthesis. |\n| `/review \u003Cartifact>` | Simulate an AI research peer review with likely objections, severity, and a concrete revision plan. |\n| `/audit \u003Citem>` | Compare a paper's claims against its public codebase and identify mismatches, omissions, and reproducibility risks. |\n| `/replicate \u003Cpaper>` | Plan or execute a replication workflow for a paper, claim, or benchmark. |\n| `/compare \u003Ctopic>` | Compare multiple sources on a topic and produce a source-grounded matrix of agreements, disagreements, and confidence. |\n| `/draft \u003Ctopic>` | Turn research findings into a polished paper-style draft with equations, sections, and explicit claims. |\n| `/autoresearch \u003Cidea>` | Autonomous experiment loop — try ideas, measure results, keep what works, discard what doesn't, repeat. |\n| `/watch \u003Ctopic>` | Set up a recurring or deferred research watch on a topic, company, paper area, or product surface. |\n\n## Project & Session\n\n| Command | Description |\n| --- | --- |\n| `/log` | Write a durable session log with completed work, findings, open questions, and next steps. |\n| `/jobs` | Inspect active background research work, including running processes and scheduled follow-ups. |\n| `/help` | Show grouped Feynman commands and prefill the editor with a selected command. |\n| `/init` | Bootstrap AGENTS.md and session-log folders for a research project. |\n\n## Setup\n\n| Command | Description |\n| --- | --- |\n| `/alpha-login` | Sign in to alphaXiv from inside Feynman. |\n| `/alpha-status` | Show alphaXiv authentication status. |\n| `/alpha-logout` | Clear alphaXiv auth from inside Feynman. |","src/content/docs/reference/slash-commands.md","f548c25cfafb9aea",{"html":400,"metadata":401},"\u003Cp>This page documents the slash commands that Feynman owns in this repository: prompt templates from \u003Ccode>prompts/\u003C/code> and extension commands from \u003Ccode>extensions/research-tools/\u003C/code>.\u003C/p>\n\u003Cp>Additional slash commands can appear at runtime from Pi core and bundled packages such as subagents, preview, session search, and scheduling. Use \u003Ccode>/help\u003C/code> inside the REPL for the live command list instead of relying on a static copy of package-provided commands.\u003C/p>\n\u003Ch2 id=\"research-workflows\">Research Workflows\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>/deepresearch <topic>\u003C/code>\u003C/td>\u003Ctd>Run a thorough, source-heavy investigation on a topic and produce a durable research brief with inline citations.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/lit <topic>\u003C/code>\u003C/td>\u003Ctd>Run a literature review on a topic using paper search and primary-source synthesis.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/review <artifact>\u003C/code>\u003C/td>\u003Ctd>Simulate an AI research peer review with likely objections, severity, and a concrete revision plan.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/audit <item>\u003C/code>\u003C/td>\u003Ctd>Compare a paper’s claims against its public codebase and identify mismatches, omissions, and reproducibility risks.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/replicate <paper>\u003C/code>\u003C/td>\u003Ctd>Plan or execute a replication workflow for a paper, claim, or benchmark.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/compare <topic>\u003C/code>\u003C/td>\u003Ctd>Compare multiple sources on a topic and produce a source-grounded matrix of agreements, disagreements, and confidence.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/draft <topic>\u003C/code>\u003C/td>\u003Ctd>Turn research findings into a polished paper-style draft with equations, sections, and explicit claims.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/autoresearch <idea>\u003C/code>\u003C/td>\u003Ctd>Autonomous experiment loop — try ideas, measure results, keep what works, discard what doesn’t, repeat.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/watch <topic>\u003C/code>\u003C/td>\u003Ctd>Set up a recurring or deferred research watch on a topic, company, paper area, or product surface.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"project--session\">Project & Session\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>/log\u003C/code>\u003C/td>\u003Ctd>Write a durable session log with completed work, findings, open questions, and next steps.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/jobs\u003C/code>\u003C/td>\u003Ctd>Inspect active background research work, including running processes and scheduled follow-ups.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/help\u003C/code>\u003C/td>\u003Ctd>Show grouped Feynman commands and prefill the editor with a selected command.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/init\u003C/code>\u003C/td>\u003Ctd>Bootstrap AGENTS.md and session-log folders for a research project.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"setup\">Setup\u003C/h2>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>/alpha-login\u003C/code>\u003C/td>\u003Ctd>Sign in to alphaXiv from inside Feynman.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/alpha-status\u003C/code>\u003C/td>\u003Ctd>Show alphaXiv authentication status.\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/alpha-logout\u003C/code>\u003C/td>\u003Ctd>Clear alphaXiv auth from inside Feynman.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>",{"headings":402,"localImagePaths":411,"remoteImagePaths":412,"frontmatter":413,"imagePaths":414},[403,406,409],{"depth":17,"slug":404,"text":405},"research-workflows","Research Workflows",{"depth":17,"slug":407,"text":408},"project--session","Project & Session",{"depth":17,"slug":410,"text":135},"setup",[],[],{"title":394,"description":395,"section":238,"order":17},[],"reference/slash-commands.md","tools/web-search",{"id":416,"data":418,"body":421,"filePath":422,"digest":423,"rendered":424,"legacyId":444},{"title":419,"description":420,"section":74,"order":17},"Web Search","Web search routing and configuration","## Routing modes\n\nFeynman supports three web search backends:\n\n| Mode | Description |\n|------|-------------|\n| `auto` | Prefer Perplexity when configured, fall back to Gemini |\n| `perplexity` | Force Perplexity Sonar |\n| `gemini` | Force Gemini (default) |\n\n## Default behavior\n\nThe default path is zero-config Gemini Browser via a signed-in Chromium profile. No API keys required.\n\n## Check current config\n\n```bash\nfeynman search status\n```\n\n## Advanced configuration\n\nEdit `~/.feynman/web-search.json` directly to set:\n\n- Gemini API keys\n- Perplexity API keys\n- Custom routing preferences","src/content/docs/tools/web-search.md","b2963fe8f7ae5dce",{"html":425,"metadata":426},"\u003Ch2 id=\"routing-modes\">Routing modes\u003C/h2>\n\u003Cp>Feynman supports three web search backends:\u003C/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Mode\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>auto\u003C/code>\u003C/td>\u003Ctd>Prefer Perplexity when configured, fall back to Gemini\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>perplexity\u003C/code>\u003C/td>\u003Ctd>Force Perplexity Sonar\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>gemini\u003C/code>\u003C/td>\u003Ctd>Force Gemini (default)\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"default-behavior\">Default behavior\u003C/h2>\n\u003Cp>The default path is zero-config Gemini Browser via a signed-in Chromium profile. No API keys required.\u003C/p>\n\u003Ch2 id=\"check-current-config\">Check current config\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">feynman\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> search\u003C/span>\u003Cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> status\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"advanced-configuration\">Advanced configuration\u003C/h2>\n\u003Cp>Edit \u003Ccode>~/.feynman/web-search.json\u003C/code> directly to set:\u003C/p>\n\u003Cul>\n\u003Cli>Gemini API keys\u003C/li>\n\u003Cli>Perplexity API keys\u003C/li>\n\u003Cli>Custom routing preferences\u003C/li>\n\u003C/ul>",{"headings":427,"localImagePaths":440,"remoteImagePaths":441,"frontmatter":442,"imagePaths":443},[428,431,434,437],{"depth":17,"slug":429,"text":430},"routing-modes","Routing modes",{"depth":17,"slug":432,"text":433},"default-behavior","Default behavior",{"depth":17,"slug":435,"text":436},"check-current-config","Check current config",{"depth":17,"slug":438,"text":439},"advanced-configuration","Advanced configuration",[],[],{"title":419,"description":420,"section":74,"order":17},[],"tools/web-search.md","workflows/autoresearch",{"id":445,"data":447,"body":452,"filePath":453,"digest":454,"rendered":455,"legacyId":476},{"title":448,"description":449,"section":450,"order":451},"Autoresearch","Autonomous experiment optimization loop","Workflows",8,"## Usage\n\n```\n/autoresearch \u003Cidea>\n```\n\n## What it does\n\nRuns an autonomous experiment loop:\n\n1. **Edit** — Modify code or configuration\n2. **Commit** — Save the change\n3. **Benchmark** — Run evaluation\n4. **Evaluate** — Compare against baseline\n5. **Keep or revert** — Persist improvements, roll back regressions\n6. **Repeat** — Continue until the target is hit\n\n## Tracking\n\nMetrics are tracked in:\n\n- `autoresearch.md` — Human-readable progress log\n- `autoresearch.jsonl` — Machine-readable metrics over time\n\n## Controls\n\n```\n/autoresearch \u003Cidea> # start or resume\n/autoresearch off # stop, keep data\n/autoresearch clear # delete all state, start fresh\n```\n\n## Example\n\n```\n/autoresearch optimize the learning rate schedule for better convergence\n```","src/content/docs/workflows/autoresearch.md","94559e14e60edcad",{"html":456,"metadata":457},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/autoresearch <idea>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Runs an autonomous experiment loop:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Edit\u003C/strong> — Modify code or configuration\u003C/li>\n\u003Cli>\u003Cstrong>Commit\u003C/strong> — Save the change\u003C/li>\n\u003Cli>\u003Cstrong>Benchmark\u003C/strong> — Run evaluation\u003C/li>\n\u003Cli>\u003Cstrong>Evaluate\u003C/strong> — Compare against baseline\u003C/li>\n\u003Cli>\u003Cstrong>Keep or revert\u003C/strong> — Persist improvements, roll back regressions\u003C/li>\n\u003Cli>\u003Cstrong>Repeat\u003C/strong> — Continue until the target is hit\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"tracking\">Tracking\u003C/h2>\n\u003Cp>Metrics are tracked in:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>autoresearch.md\u003C/code> — Human-readable progress log\u003C/li>\n\u003Cli>\u003Ccode>autoresearch.jsonl\u003C/code> — Machine-readable metrics over time\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"controls\">Controls\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/autoresearch <idea> # start or resume\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>/autoresearch off # stop, keep data\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>/autoresearch clear # delete all state, start fresh\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/autoresearch optimize the learning rate schedule for better convergence\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":458,"localImagePaths":472,"remoteImagePaths":473,"frontmatter":474,"imagePaths":475},[459,460,463,466,469],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},"what-it-does","What it does",{"depth":17,"slug":464,"text":465},"tracking","Tracking",{"depth":17,"slug":467,"text":468},"controls","Controls",{"depth":17,"slug":470,"text":471},"example","Example",[],[],{"title":448,"description":449,"section":450,"order":451},[],"workflows/autoresearch.md","workflows/audit",{"id":477,"data":479,"body":482,"filePath":483,"digest":484,"rendered":485,"legacyId":502},{"title":480,"description":481,"section":450,"order":202},"Code Audit","Compare paper claims against public codebases","## Usage\n\n```\n/audit \u003Citem>\n```\n\n## What it does\n\nCompares claims made in a paper against its public codebase. Surfaces mismatches, missing experiments, and reproducibility risks.\n\n## What it checks\n\n- Do the reported hyperparameters match the code?\n- Are all claimed experiments present in the repository?\n- Does the training loop match the described methodology?\n- Are there undocumented preprocessing steps?\n- Do evaluation metrics match the paper's claims?\n\n## Example\n\n```\n/audit 2401.12345\n```\n\n## Output\n\nAn audit report with:\n\n- Claim-by-claim verification\n- Identified mismatches\n- Missing components\n- Reproducibility risk assessment","src/content/docs/workflows/audit.md","58f5516850bcd065",{"html":486,"metadata":487},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/audit <item>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Compares claims made in a paper against its public codebase. Surfaces mismatches, missing experiments, and reproducibility risks.\u003C/p>\n\u003Ch2 id=\"what-it-checks\">What it checks\u003C/h2>\n\u003Cul>\n\u003Cli>Do the reported hyperparameters match the code?\u003C/li>\n\u003Cli>Are all claimed experiments present in the repository?\u003C/li>\n\u003Cli>Does the training loop match the described methodology?\u003C/li>\n\u003Cli>Are there undocumented preprocessing steps?\u003C/li>\n\u003Cli>Do evaluation metrics match the paper’s claims?\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/audit 2401.12345\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output\">Output\u003C/h2>\n\u003Cp>An audit report with:\u003C/p>\n\u003Cul>\n\u003Cli>Claim-by-claim verification\u003C/li>\n\u003Cli>Identified mismatches\u003C/li>\n\u003Cli>Missing components\u003C/li>\n\u003Cli>Reproducibility risk assessment\u003C/li>\n\u003C/ul>",{"headings":488,"localImagePaths":498,"remoteImagePaths":499,"frontmatter":500,"imagePaths":501},[489,490,491,494,495],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":492,"text":493},"what-it-checks","What it checks",{"depth":17,"slug":470,"text":471},{"depth":17,"slug":496,"text":497},"output","Output",[],[],{"title":480,"description":481,"section":450,"order":202},[],"workflows/audit.md","workflows/compare",{"id":503,"data":505,"body":509,"filePath":510,"digest":511,"rendered":512,"legacyId":524},{"title":506,"description":507,"section":450,"order":508},"Source Comparison","Compare multiple sources with agreement/disagreement matrix",6,"## Usage\n\n```\n/compare \u003Ctopic>\n```\n\n## What it does\n\nCompares multiple sources on a topic. Builds an agreement/disagreement matrix showing where sources align and where they conflict.\n\n## Example\n\n```\n/compare approaches to constitutional AI training\n```\n\n## Output\n\n- Source-by-source breakdown\n- Agreement/disagreement matrix\n- Synthesis of key differences\n- Assessment of which positions have stronger evidence","src/content/docs/workflows/compare.md","669d1dce304b191f",{"html":513,"metadata":514},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/compare <topic>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Compares multiple sources on a topic. Builds an agreement/disagreement matrix showing where sources align and where they conflict.\u003C/p>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/compare approaches to constitutional AI training\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output\">Output\u003C/h2>\n\u003Cul>\n\u003Cli>Source-by-source breakdown\u003C/li>\n\u003Cli>Agreement/disagreement matrix\u003C/li>\n\u003Cli>Synthesis of key differences\u003C/li>\n\u003Cli>Assessment of which positions have stronger evidence\u003C/li>\n\u003C/ul>",{"headings":515,"localImagePaths":520,"remoteImagePaths":521,"frontmatter":522,"imagePaths":523},[516,517,518,519],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":470,"text":471},{"depth":17,"slug":496,"text":497},[],[],{"title":506,"description":507,"section":450,"order":508},[],"workflows/compare.md","workflows/deep-research",{"id":525,"data":527,"body":530,"filePath":531,"digest":532,"rendered":533,"legacyId":545},{"title":528,"description":529,"section":450,"order":94},"Deep Research","Thorough source-heavy investigation with parallel agents","## Usage\n\n```\n/deepresearch \u003Ctopic>\n```\n\n## What it does\n\nDeep research runs a thorough, source-heavy investigation. It plans the research scope, delegates to parallel researcher agents, synthesizes findings, and adds inline citations.\n\nThe workflow follows these steps:\n\n1. **Plan** — Clarify the research question and identify search strategy\n2. **Delegate** — Spawn parallel researcher agents to gather evidence from different source types (papers, web, repos)\n3. **Synthesize** — Merge findings, resolve contradictions, identify gaps\n4. **Cite** — Add inline citations and verify all source URLs\n5. **Deliver** — Write a durable research brief to `outputs/`\n\n## Example\n\n```\n/deepresearch transformer scaling laws and their implications for compute-optimal training\n```\n\n## Output\n\nProduces a structured research brief with:\n\n- Executive summary\n- Key findings organized by theme\n- Evidence tables with source links\n- Open questions and suggested next steps\n- Numbered sources section with direct URLs","src/content/docs/workflows/deep-research.md","5a1ed5d3fd031659",{"html":534,"metadata":535},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/deepresearch <topic>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Deep research runs a thorough, source-heavy investigation. It plans the research scope, delegates to parallel researcher agents, synthesizes findings, and adds inline citations.\u003C/p>\n\u003Cp>The workflow follows these steps:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Plan\u003C/strong> — Clarify the research question and identify search strategy\u003C/li>\n\u003Cli>\u003Cstrong>Delegate\u003C/strong> — Spawn parallel researcher agents to gather evidence from different source types (papers, web, repos)\u003C/li>\n\u003Cli>\u003Cstrong>Synthesize\u003C/strong> — Merge findings, resolve contradictions, identify gaps\u003C/li>\n\u003Cli>\u003Cstrong>Cite\u003C/strong> — Add inline citations and verify all source URLs\u003C/li>\n\u003Cli>\u003Cstrong>Deliver\u003C/strong> — Write a durable research brief to \u003Ccode>outputs/\u003C/code>\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/deepresearch transformer scaling laws and their implications for compute-optimal training\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output\">Output\u003C/h2>\n\u003Cp>Produces a structured research brief with:\u003C/p>\n\u003Cul>\n\u003Cli>Executive summary\u003C/li>\n\u003Cli>Key findings organized by theme\u003C/li>\n\u003Cli>Evidence tables with source links\u003C/li>\n\u003Cli>Open questions and suggested next steps\u003C/li>\n\u003Cli>Numbered sources section with direct URLs\u003C/li>\n\u003C/ul>",{"headings":536,"localImagePaths":541,"remoteImagePaths":542,"frontmatter":543,"imagePaths":544},[537,538,539,540],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":470,"text":471},{"depth":17,"slug":496,"text":497},[],[],{"title":528,"description":529,"section":450,"order":94},[],"workflows/deep-research.md","workflows/draft",{"id":546,"data":548,"body":552,"filePath":553,"digest":554,"rendered":555,"legacyId":569},{"title":549,"description":550,"section":450,"order":551},"Draft Writing","Paper-style draft generation from research findings",7,"## Usage\n\n```\n/draft \u003Ctopic>\n```\n\n## What it does\n\nProduces a paper-style draft with structured sections. Writes to `papers/`.\n\n## Structure\n\nThe generated draft includes:\n\n- Title\n- Abstract\n- Introduction / Background\n- Method or Approach\n- Evidence and Analysis\n- Limitations\n- Conclusion\n- Sources\n\n## Example\n\n```\n/draft survey of differentiable physics simulators\n```\n\nThe writer agent works only from supplied evidence — it never fabricates content. If evidence is insufficient, it explicitly notes the gaps.","src/content/docs/workflows/draft.md","5549e489883745ea",{"html":556,"metadata":557},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/draft <topic>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Produces a paper-style draft with structured sections. Writes to \u003Ccode>papers/\u003C/code>.\u003C/p>\n\u003Ch2 id=\"structure\">Structure\u003C/h2>\n\u003Cp>The generated draft includes:\u003C/p>\n\u003Cul>\n\u003Cli>Title\u003C/li>\n\u003Cli>Abstract\u003C/li>\n\u003Cli>Introduction / Background\u003C/li>\n\u003Cli>Method or Approach\u003C/li>\n\u003Cli>Evidence and Analysis\u003C/li>\n\u003Cli>Limitations\u003C/li>\n\u003Cli>Conclusion\u003C/li>\n\u003Cli>Sources\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/draft survey of differentiable physics simulators\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The writer agent works only from supplied evidence — it never fabricates content. If evidence is insufficient, it explicitly notes the gaps.\u003C/p>",{"headings":558,"localImagePaths":565,"remoteImagePaths":566,"frontmatter":567,"imagePaths":568},[559,560,561,564],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":562,"text":563},"structure","Structure",{"depth":17,"slug":470,"text":471},[],[],{"title":549,"description":550,"section":450,"order":551},[],"workflows/draft.md","workflows/replication",{"id":570,"data":572,"body":576,"filePath":577,"digest":578,"rendered":579,"legacyId":591},{"title":573,"description":574,"section":450,"order":575},"Replication","Plan replications of papers and claims",5,"## Usage\n\n```\n/replicate \u003Cpaper or claim>\n```\n\n## What it does\n\nExtracts key implementation details from a paper, identifies what's needed to replicate the results, and asks where to run before executing anything.\n\nBefore running code, Feynman asks you to choose an execution environment:\n\n- **Local** — run in the current working directory\n- **Virtual environment** — create an isolated venv/conda env first\n- **Cloud** — delegate to a remote Agent Computer machine\n- **Plan only** — produce the replication plan without executing\n\n## Example\n\n```\n/replicate \"chain-of-thought prompting improves math reasoning\"\n```\n\n## Output\n\nA replication plan covering:\n\n- Key claims to verify\n- Required resources (compute, data, models)\n- Implementation details extracted from the paper\n- Potential pitfalls and underspecified details\n- Step-by-step replication procedure\n- Success criteria\n\nIf an execution environment is selected, also produces runnable scripts and captured results.","src/content/docs/workflows/replication.md","462a792bf2682b87",{"html":580,"metadata":581},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/replicate <paper or claim>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Extracts key implementation details from a paper, identifies what’s needed to replicate the results, and asks where to run before executing anything.\u003C/p>\n\u003Cp>Before running code, Feynman asks you to choose an execution environment:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Local\u003C/strong> — run in the current working directory\u003C/li>\n\u003Cli>\u003Cstrong>Virtual environment\u003C/strong> — create an isolated venv/conda env first\u003C/li>\n\u003Cli>\u003Cstrong>Cloud\u003C/strong> — delegate to a remote Agent Computer machine\u003C/li>\n\u003Cli>\u003Cstrong>Plan only\u003C/strong> — produce the replication plan without executing\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/replicate \"chain-of-thought prompting improves math reasoning\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output\">Output\u003C/h2>\n\u003Cp>A replication plan covering:\u003C/p>\n\u003Cul>\n\u003Cli>Key claims to verify\u003C/li>\n\u003Cli>Required resources (compute, data, models)\u003C/li>\n\u003Cli>Implementation details extracted from the paper\u003C/li>\n\u003Cli>Potential pitfalls and underspecified details\u003C/li>\n\u003Cli>Step-by-step replication procedure\u003C/li>\n\u003Cli>Success criteria\u003C/li>\n\u003C/ul>\n\u003Cp>If an execution environment is selected, also produces runnable scripts and captured results.\u003C/p>",{"headings":582,"localImagePaths":587,"remoteImagePaths":588,"frontmatter":589,"imagePaths":590},[583,584,585,586],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":470,"text":471},{"depth":17,"slug":496,"text":497},[],[],{"title":573,"description":574,"section":450,"order":575},[],"workflows/replication.md","workflows/review",{"id":592,"data":594,"body":597,"filePath":598,"digest":599,"rendered":600,"legacyId":615},{"title":595,"description":596,"section":450,"order":41},"Peer Review","Simulated peer review with severity-graded feedback","## Usage\n\n```\n/review \u003Cartifact>\n```\n\n## What it does\n\nSimulates a tough-but-fair peer review for AI research artifacts. Evaluates novelty, empirical rigor, baselines, ablations, and reproducibility.\n\nThe reviewer agent identifies:\n\n- Weak baselines\n- Missing ablations\n- Evaluation mismatches\n- Benchmark leakage\n- Under-specified implementation details\n\n## Severity levels\n\nFeedback is graded by severity:\n\n- **FATAL** — Fundamental issues that invalidate the claims\n- **MAJOR** — Significant problems that need addressing\n- **MINOR** — Small improvements or clarifications\n\n## Example\n\n```\n/review outputs/scaling-laws-brief.md\n```\n\n## Output\n\nStructured review with:\n\n- Summary of the work\n- Strengths\n- Weaknesses (severity-graded)\n- Questions for the authors\n- Verdict (accept / revise / reject)\n- Revision plan","src/content/docs/workflows/review.md","5a1cfb4bdd03056c",{"html":601,"metadata":602},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/review <artifact>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Simulates a tough-but-fair peer review for AI research artifacts. Evaluates novelty, empirical rigor, baselines, ablations, and reproducibility.\u003C/p>\n\u003Cp>The reviewer agent identifies:\u003C/p>\n\u003Cul>\n\u003Cli>Weak baselines\u003C/li>\n\u003Cli>Missing ablations\u003C/li>\n\u003Cli>Evaluation mismatches\u003C/li>\n\u003Cli>Benchmark leakage\u003C/li>\n\u003Cli>Under-specified implementation details\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"severity-levels\">Severity levels\u003C/h2>\n\u003Cp>Feedback is graded by severity:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>FATAL\u003C/strong> — Fundamental issues that invalidate the claims\u003C/li>\n\u003Cli>\u003Cstrong>MAJOR\u003C/strong> — Significant problems that need addressing\u003C/li>\n\u003Cli>\u003Cstrong>MINOR\u003C/strong> — Small improvements or clarifications\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/review outputs/scaling-laws-brief.md\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output\">Output\u003C/h2>\n\u003Cp>Structured review with:\u003C/p>\n\u003Cul>\n\u003Cli>Summary of the work\u003C/li>\n\u003Cli>Strengths\u003C/li>\n\u003Cli>Weaknesses (severity-graded)\u003C/li>\n\u003Cli>Questions for the authors\u003C/li>\n\u003Cli>Verdict (accept / revise / reject)\u003C/li>\n\u003Cli>Revision plan\u003C/li>\n\u003C/ul>",{"headings":603,"localImagePaths":611,"remoteImagePaths":612,"frontmatter":613,"imagePaths":614},[604,605,606,609,610],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":607,"text":608},"severity-levels","Severity levels",{"depth":17,"slug":470,"text":471},{"depth":17,"slug":496,"text":497},[],[],{"title":595,"description":596,"section":450,"order":41},[],"workflows/review.md","workflows/literature-review",{"id":616,"data":618,"body":621,"filePath":622,"digest":623,"rendered":624,"legacyId":636},{"title":619,"description":620,"section":450,"order":17},"Literature Review","Map consensus, disagreements, and open questions","## Usage\n\n```\n/lit \u003Ctopic>\n```\n\n## What it does\n\nRuns a structured literature review that searches across academic papers and web sources. Explicitly separates consensus findings from disagreements and open questions.\n\n## Example\n\n```\n/lit multimodal reasoning benchmarks for large language models\n```\n\n## Output\n\nA structured review covering:\n\n- **Consensus** — What the field agrees on\n- **Disagreements** — Where sources conflict\n- **Open questions** — What remains unresolved\n- **Sources** — Direct links to all referenced papers and articles","src/content/docs/workflows/literature-review.md","7def25e86b0bdc22",{"html":625,"metadata":626},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/lit <topic>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Runs a structured literature review that searches across academic papers and web sources. Explicitly separates consensus findings from disagreements and open questions.\u003C/p>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/lit multimodal reasoning benchmarks for large language models\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"output\">Output\u003C/h2>\n\u003Cp>A structured review covering:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Consensus\u003C/strong> — What the field agrees on\u003C/li>\n\u003Cli>\u003Cstrong>Disagreements\u003C/strong> — Where sources conflict\u003C/li>\n\u003Cli>\u003Cstrong>Open questions\u003C/strong> — What remains unresolved\u003C/li>\n\u003Cli>\u003Cstrong>Sources\u003C/strong> — Direct links to all referenced papers and articles\u003C/li>\n\u003C/ul>",{"headings":627,"localImagePaths":632,"remoteImagePaths":633,"frontmatter":634,"imagePaths":635},[628,629,630,631],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":470,"text":471},{"depth":17,"slug":496,"text":497},[],[],{"title":619,"description":620,"section":450,"order":17},[],"workflows/literature-review.md","workflows/watch",{"id":637,"data":639,"body":643,"filePath":644,"digest":645,"rendered":646,"legacyId":660},{"title":640,"description":641,"section":450,"order":642},"Watch","Recurring research monitoring",9,"## Usage\n\n```\n/watch \u003Ctopic>\n```\n\n## What it does\n\nSchedules a recurring research watch. Sets a baseline of current knowledge and defines what constitutes a meaningful change worth reporting.\n\n## Example\n\n```\n/watch new papers on test-time compute scaling\n```\n\n## How it works\n\n1. Feynman establishes a baseline by surveying current sources\n2. Defines change signals (new papers, updated results, new repos)\n3. Schedules periodic checks via `pi-schedule-prompt`\n4. Reports only when meaningful changes are detected","src/content/docs/workflows/watch.md","b24ebad68d8b9736",{"html":647,"metadata":648},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/watch <topic>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>Schedules a recurring research watch. Sets a baseline of current knowledge and defines what constitutes a meaningful change worth reporting.\u003C/p>\n\u003Ch2 id=\"example\">Example\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/watch new papers on test-time compute scaling\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Col>\n\u003Cli>Feynman establishes a baseline by surveying current sources\u003C/li>\n\u003Cli>Defines change signals (new papers, updated results, new repos)\u003C/li>\n\u003Cli>Schedules periodic checks via \u003Ccode>pi-schedule-prompt\u003C/code>\u003C/li>\n\u003Cli>Reports only when meaningful changes are detected\u003C/li>\n\u003C/ol>",{"headings":649,"localImagePaths":656,"remoteImagePaths":657,"frontmatter":658,"imagePaths":659},[650,651,652,653],{"depth":17,"slug":328,"text":329},{"depth":17,"slug":461,"text":462},{"depth":17,"slug":470,"text":471},{"depth":17,"slug":654,"text":655},"how-it-works","How it works",[],[],{"title":640,"description":641,"section":450,"order":642},[],"workflows/watch.md","agents/verifier",{"id":661,"data":663,"body":666,"filePath":667,"digest":668,"rendered":669,"legacyId":688},{"title":664,"description":665,"section":16,"order":202},"Verifier","Post-process a draft to add inline citations and verify every source URL.","## Source\n\nGenerated from `.feynman/agents/verifier.md`. Edit that prompt file, not this docs page.\n\n## Role\n\nPost-process a draft to add inline citations and verify every source URL.\n\n## Tools\n\n`read`, `bash`, `grep`, `find`, `ls`, `write`, `edit`\n\n## Default Output\n\n`cited.md`\n\nYou receive a draft document and the research files it was built from. Your job is to:\n\n1. **Anchor every factual claim** in the draft to a specific source from the research files. Insert inline citations `[1]`, `[2]`, etc. directly after each claim.\n2. **Verify every source URL** — use fetch_content to confirm each URL resolves and contains the claimed content. Flag dead links.\n3. **Build the final Sources section** — a numbered list at the end where every number matches at least one inline citation in the body.\n4. **Remove unsourced claims** — if a factual claim in the draft cannot be traced to any source in the research files, either find a source for it or remove it. Do not leave unsourced factual claims.\n\n## Citation rules\n\n- Every factual claim gets at least one citation: \"Transformers achieve 94.2% on MMLU [3].\"\n- Multiple sources for one claim: \"Recent work questions benchmark validity [7, 12].\"\n- No orphan citations — every `[N]` in the body must appear in Sources.\n- No orphan sources — every entry in Sources must be cited at least once.\n- Hedged or opinion statements do not need citations.\n- When multiple research files use different numbering, merge into a single unified sequence starting from [1]. Deduplicate sources that appear in multiple files.\n\n## Source verification\n\nFor each source URL:\n- **Live:** keep as-is.\n- **Dead/404:** search for an alternative URL (archived version, mirror, updated link). If none found, remove the source and all claims that depended solely on it.\n- **Redirects to unrelated content:** treat as dead.\n\n## Output contract\n- Save to the output file (default: `cited.md`).\n- The output is the complete final document — same structure as the input draft, but with inline citations added throughout and a verified Sources section.\n- Do not change the substance or structure of the draft. Only add citations and fix dead sources.","src/content/docs/agents/verifier.md","efc12a91a847824e",{"html":670,"metadata":671},"\u003Ch2 id=\"source\">Source\u003C/h2>\n\u003Cp>Generated from \u003Ccode>.feynman/agents/verifier.md\u003C/code>. Edit that prompt file, not this docs page.\u003C/p>\n\u003Ch2 id=\"role\">Role\u003C/h2>\n\u003Cp>Post-process a draft to add inline citations and verify every source URL.\u003C/p>\n\u003Ch2 id=\"tools\">Tools\u003C/h2>\n\u003Cp>\u003Ccode>read\u003C/code>, \u003Ccode>bash\u003C/code>, \u003Ccode>grep\u003C/code>, \u003Ccode>find\u003C/code>, \u003Ccode>ls\u003C/code>, \u003Ccode>write\u003C/code>, \u003Ccode>edit\u003C/code>\u003C/p>\n\u003Ch2 id=\"default-output\">Default Output\u003C/h2>\n\u003Cp>\u003Ccode>cited.md\u003C/code>\u003C/p>\n\u003Cp>You receive a draft document and the research files it was built from. Your job is to:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Anchor every factual claim\u003C/strong> in the draft to a specific source from the research files. Insert inline citations \u003Ccode>[1]\u003C/code>, \u003Ccode>[2]\u003C/code>, etc. directly after each claim.\u003C/li>\n\u003Cli>\u003Cstrong>Verify every source URL\u003C/strong> — use fetch_content to confirm each URL resolves and contains the claimed content. Flag dead links.\u003C/li>\n\u003Cli>\u003Cstrong>Build the final Sources section\u003C/strong> — a numbered list at the end where every number matches at least one inline citation in the body.\u003C/li>\n\u003Cli>\u003Cstrong>Remove unsourced claims\u003C/strong> — if a factual claim in the draft cannot be traced to any source in the research files, either find a source for it or remove it. Do not leave unsourced factual claims.\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"citation-rules\">Citation rules\u003C/h2>\n\u003Cul>\n\u003Cli>Every factual claim gets at least one citation: “Transformers achieve 94.2% on MMLU [3].”\u003C/li>\n\u003Cli>Multiple sources for one claim: “Recent work questions benchmark validity [7, 12].”\u003C/li>\n\u003Cli>No orphan citations — every \u003Ccode>[N]\u003C/code> in the body must appear in Sources.\u003C/li>\n\u003Cli>No orphan sources — every entry in Sources must be cited at least once.\u003C/li>\n\u003Cli>Hedged or opinion statements do not need citations.\u003C/li>\n\u003Cli>When multiple research files use different numbering, merge into a single unified sequence starting from [1]. Deduplicate sources that appear in multiple files.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"source-verification\">Source verification\u003C/h2>\n\u003Cp>For each source URL:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Live:\u003C/strong> keep as-is.\u003C/li>\n\u003Cli>\u003Cstrong>Dead/404:\u003C/strong> search for an alternative URL (archived version, mirror, updated link). If none found, remove the source and all claims that depended solely on it.\u003C/li>\n\u003Cli>\u003Cstrong>Redirects to unrelated content:\u003C/strong> treat as dead.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"output-contract\">Output contract\u003C/h2>\n\u003Cul>\n\u003Cli>Save to the output file (default: \u003Ccode>cited.md\u003C/code>).\u003C/li>\n\u003Cli>The output is the complete final document — same structure as the input draft, but with inline citations added throughout and a verified Sources section.\u003C/li>\n\u003Cli>Do not change the substance or structure of the draft. Only add citations and fix dead sources.\u003C/li>\n\u003C/ul>",{"headings":672,"localImagePaths":684,"remoteImagePaths":685,"frontmatter":686,"imagePaths":687},[673,674,675,676,677,680,683],{"depth":17,"slug":26,"text":27},{"depth":17,"slug":29,"text":30},{"depth":17,"slug":73,"text":74},{"depth":17,"slug":32,"text":33},{"depth":17,"slug":678,"text":679},"citation-rules","Citation rules",{"depth":17,"slug":681,"text":682},"source-verification","Source verification",{"depth":17,"slug":51,"text":52},[],[],{"title":664,"description":665,"section":16,"order":202},[],"agents/verifier.md"] \ No newline at end of file diff --git a/website/.astro/settings.json b/website/.astro/settings.json new file mode 100644 index 0000000..184a81e --- /dev/null +++ b/website/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1774305535217 + } +} \ No newline at end of file diff --git a/website/.astro/types.d.ts b/website/.astro/types.d.ts new file mode 100644 index 0000000..03d7cc4 --- /dev/null +++ b/website/.astro/types.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/website/astro.config.mjs b/website/astro.config.mjs new file mode 100644 index 0000000..3f73ec1 --- /dev/null +++ b/website/astro.config.mjs @@ -0,0 +1,15 @@ +import { defineConfig } from 'astro/config'; +import tailwind from '@astrojs/tailwind'; + +export default defineConfig({ + integrations: [tailwind()], + site: 'https://feynman.companion.ai', + markdown: { + shikiConfig: { + themes: { + light: 'github-light', + dark: 'github-dark', + }, + }, + }, +}); diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 0000000..a09e7d7 --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,6876 @@ +{ + "name": "feynman-website", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "feynman-website", + "version": "0.0.1", + "dependencies": { + "@astrojs/tailwind": "^6.0.2", + "astro": "^5.7.0", + "sharp": "^0.33.0", + "tailwindcss": "^3.4.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.1.tgz", + "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz", + "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==", + "license": "MIT" + }, + "node_modules/@astrojs/markdown-remark": { + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz", + "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/tailwind": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-6.0.2.tgz", + "integrity": "sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.21", + "postcss": "^8.5.3", + "postcss-load-config": "^4.0.2" + }, + "peerDependencies": { + "astro": "^3.0.0 || ^4.0.0 || ^5.0.0", + "tailwindcss": "^3.0.24" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.2.0", + "debug": "^4.4.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@capsizecss/unpack": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.0.tgz", + "integrity": "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", + "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz", + "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz", + "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astro": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.1.tgz", + "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.13.0", + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/markdown-remark": "6.3.11", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^4.0.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.3.0", + "acorn": "^8.15.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.3.1", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.1.1", + "cssesc": "^3.0.0", + "debug": "^4.4.3", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.6.2", + "diff": "^8.0.3", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "es-module-lexer": "^1.7.0", + "esbuild": "^0.27.3", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "fontace": "~0.4.0", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.1", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.1", + "package-manager-detector": "^1.6.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.3", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.3", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "svgo": "^4.0.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tsconfck": "^3.1.6", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.3", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.17.4", + "vfile": "^6.0.3", + "vite": "^6.4.1", + "vitefu": "^1.1.1", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.3", + "zod": "^3.25.76", + "zod-to-json-schema": "^3.25.1", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.34.0" + } + }, + "node_modules/astro/node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/astro/node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/astro/node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", + "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.4.tgz", + "integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz", + "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.2" + } + }, + "node_modules/fontkitten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz", + "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", + "license": "MIT", + "dependencies": { + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/h3": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.10.tgz", + "integrity": "sha512-YzJeWSkDZxAhvmp8dexjRK5hxziRO7I9m0N53WhvYL5NiWfkUkzssVzY9jvGu0HBoLFW6+duYmNSn6MaZBCCtg==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.5", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.5.tgz", + "integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", + "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", + "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/shiki": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz", + "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.23.0", + "@shikijs/engine-javascript": "3.23.0", + "@shikijs/engine-oniguruma": "3.23.0", + "@shikijs/langs": "3.23.0", + "@shikijs/themes": "3.23.0", + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/smol-toml": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", + "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tsconfck": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.4.tgz", + "integrity": "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.1.0", + "ofetch": "^1.5.1", + "ohash": "^2.0.11" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", + "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.5", + "lru-cache": "^11.2.0", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/unstorage/node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/vitefu": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.2.tgz", + "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", + "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", + "license": "MIT", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000..c5ebc26 --- /dev/null +++ b/website/package.json @@ -0,0 +1,17 @@ +{ + "name": "feynman-website", + "type": "module", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview" + }, + "dependencies": { + "astro": "^5.7.0", + "@astrojs/tailwind": "^6.0.2", + "tailwindcss": "^3.4.0", + "sharp": "^0.33.0" + } +} diff --git a/website/src/components/Footer.astro b/website/src/components/Footer.astro new file mode 100644 index 0000000..4067794 --- /dev/null +++ b/website/src/components/Footer.astro @@ -0,0 +1,9 @@ +
+
+ © 2026 Companion Inc. +
+ GitHub + Docs +
+
+
diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro new file mode 100644 index 0000000..184610a --- /dev/null +++ b/website/src/components/Nav.astro @@ -0,0 +1,26 @@ +--- +import ThemeToggle from './ThemeToggle.astro'; + +interface Props { + active?: 'home' | 'docs'; +} + +const { active = 'home' } = Astro.props; +--- + + diff --git a/website/src/components/Sidebar.astro b/website/src/components/Sidebar.astro new file mode 100644 index 0000000..9e7754c --- /dev/null +++ b/website/src/components/Sidebar.astro @@ -0,0 +1,80 @@ +--- +interface Props { + currentSlug: string; +} + +const { currentSlug } = Astro.props; + +const sections = [ + { + title: 'Getting Started', + items: [ + { label: 'Installation', slug: 'getting-started/installation' }, + { label: 'Quick Start', slug: 'getting-started/quickstart' }, + { label: 'Setup', slug: 'getting-started/setup' }, + { label: 'Configuration', slug: 'getting-started/configuration' }, + ], + }, + { + title: 'Workflows', + items: [ + { label: 'Deep Research', slug: 'workflows/deep-research' }, + { label: 'Literature Review', slug: 'workflows/literature-review' }, + { label: 'Peer Review', slug: 'workflows/review' }, + { label: 'Code Audit', slug: 'workflows/audit' }, + { label: 'Replication', slug: 'workflows/replication' }, + { label: 'Source Comparison', slug: 'workflows/compare' }, + { label: 'Draft Writing', slug: 'workflows/draft' }, + { label: 'Autoresearch', slug: 'workflows/autoresearch' }, + { label: 'Watch', slug: 'workflows/watch' }, + ], + }, + { + title: 'Agents', + items: [ + { label: 'Researcher', slug: 'agents/researcher' }, + { label: 'Reviewer', slug: 'agents/reviewer' }, + { label: 'Writer', slug: 'agents/writer' }, + { label: 'Verifier', slug: 'agents/verifier' }, + ], + }, + { + title: 'Tools', + items: [ + { label: 'AlphaXiv', slug: 'tools/alphaxiv' }, + { label: 'Web Search', slug: 'tools/web-search' }, + { label: 'Session Search', slug: 'tools/session-search' }, + { label: 'Preview', slug: 'tools/preview' }, + ], + }, + { + title: 'Reference', + items: [ + { label: 'CLI Commands', slug: 'reference/cli-commands' }, + { label: 'Slash Commands', slug: 'reference/slash-commands' }, + { label: 'Package Stack', slug: 'reference/package-stack' }, + ], + }, +]; +--- + + diff --git a/website/src/components/ThemeToggle.astro b/website/src/components/ThemeToggle.astro new file mode 100644 index 0000000..bff8983 --- /dev/null +++ b/website/src/components/ThemeToggle.astro @@ -0,0 +1,33 @@ + + + diff --git a/website/src/content/config.ts b/website/src/content/config.ts new file mode 100644 index 0000000..7662eba --- /dev/null +++ b/website/src/content/config.ts @@ -0,0 +1,13 @@ +import { defineCollection, z } from 'astro:content'; + +const docs = defineCollection({ + type: 'content', + schema: z.object({ + title: z.string(), + description: z.string(), + section: z.string(), + order: z.number(), + }), +}); + +export const collections = { docs }; diff --git a/website/src/content/docs/agents/researcher.md b/website/src/content/docs/agents/researcher.md new file mode 100644 index 0000000..24b6738 --- /dev/null +++ b/website/src/content/docs/agents/researcher.md @@ -0,0 +1,75 @@ +--- +title: Researcher +description: Gather primary evidence across papers, web sources, repos, docs, and local artifacts. +section: Agents +order: 1 +--- + +## Source + +Generated from `.feynman/agents/researcher.md`. Edit that prompt file, not this docs page. + +## Role + +Gather primary evidence across papers, web sources, repos, docs, and local artifacts. + +## Tools + +`read`, `bash`, `grep`, `find`, `ls` + +## Default Output + +`research.md` + +## Integrity commandments +1. **Never fabricate a source.** Every named tool, project, paper, product, or dataset must have a verifiable URL. If you cannot find a URL, do not mention it. +2. **Never claim a project exists without checking.** Before citing a GitHub repo, search for it. Before citing a paper, find it. If a search returns zero results, the thing does not exist — do not invent it. +3. **Never extrapolate details you haven't read.** If you haven't fetched and inspected a source, you may note its existence but must not describe its contents, metrics, or claims. +4. **URL or it didn't happen.** Every entry in your evidence table must include a direct, checkable URL. No URL = not included. + +## Search strategy +1. **Start wide.** Begin with short, broad queries to map the landscape. Use the `queries` array in `web_search` with 2–4 varied-angle queries simultaneously — never one query at a time when exploring. +2. **Evaluate availability.** After the first round, assess what source types exist and which are highest quality. Adjust strategy accordingly. +3. **Progressively narrow.** Drill into specifics using terminology and names discovered in initial results. Refine queries, don't repeat them. +4. **Cross-source.** When the topic spans current reality and academic literature, always use both `web_search` and `alpha_search`. + +Use `recencyFilter` on `web_search` for fast-moving topics. Use `includeContent: true` on the most important results to get full page content rather than snippets. + +## Source quality +- **Prefer:** academic papers, official documentation, primary datasets, verified benchmarks, government filings, reputable journalism, expert technical blogs, official vendor pages +- **Accept with caveats:** well-cited secondary sources, established trade publications +- **Deprioritize:** SEO-optimized listicles, undated blog posts, content aggregators, social media without primary links +- **Reject:** sources with no author and no date, content that appears AI-generated with no primary backing + +When initial results skew toward low-quality sources, re-search with `domainFilter` targeting authoritative domains. + +## Output format + +Assign each source a stable numeric ID. Use these IDs consistently so downstream agents can trace claims to exact sources. + +### Evidence table + +| # | Source | URL | Key claim | Type | Confidence | +|---|--------|-----|-----------|------|------------| +| 1 | ... | ... | ... | primary / secondary / self-reported | high / medium / low | + +### Findings + +Write findings using inline source references: `[1]`, `[2]`, etc. Every factual claim must cite at least one source by number. + +### Sources + +Numbered list matching the evidence table: +1. Author/Title — URL +2. Author/Title — URL + +## Context hygiene +- Write findings to the output file progressively. Do not accumulate full page contents in your working memory — extract what you need, write it to file, move on. +- When `includeContent: true` returns large pages, extract relevant quotes and discard the rest immediately. +- If your search produces 10+ results, triage by title/snippet first. Only fetch full content for the top candidates. +- Return a one-line summary to the parent, not full findings. The parent reads the output file. + +## Output contract +- Save to the output file (default: `research.md`). +- Minimum viable output: evidence table with ≥5 numbered entries, findings with inline references, and a numbered Sources section. +- Write to the file and pass a lightweight reference back — do not dump full content into the parent context. diff --git a/website/src/content/docs/agents/reviewer.md b/website/src/content/docs/agents/reviewer.md new file mode 100644 index 0000000..504c374 --- /dev/null +++ b/website/src/content/docs/agents/reviewer.md @@ -0,0 +1,93 @@ +--- +title: Reviewer +description: Simulate a tough but constructive AI research peer reviewer with inline annotations. +section: Agents +order: 2 +--- + +## Source + +Generated from `.feynman/agents/reviewer.md`. Edit that prompt file, not this docs page. + +## Role + +Simulate a tough but constructive AI research peer reviewer with inline annotations. + +## Default Output + +`review.md` + +Your job is to act like a skeptical but fair peer reviewer for AI/ML systems work. + +## Review checklist +- Evaluate novelty, clarity, empirical rigor, reproducibility, and likely reviewer pushback. +- Do not praise vaguely. Every positive claim should be tied to specific evidence. +- Look for: + - missing or weak baselines + - missing ablations + - evaluation mismatches + - unclear claims of novelty + - weak related-work positioning + - insufficient statistical evidence + - benchmark leakage or contamination risks + - under-specified implementation details + - claims that outrun the experiments +- Distinguish between fatal issues, strong concerns, and polish issues. +- Preserve uncertainty. If the draft might pass depending on venue norms, say so explicitly. + +## Output format + +Produce two sections: a structured review and inline annotations. + +### Part 1: Structured Review + +```markdown +## Summary +1-2 paragraph summary of the paper's contributions and approach. + +## Strengths +- [S1] ... +- [S2] ... + +## Weaknesses +- [W1] **FATAL:** ... +- [W2] **MAJOR:** ... +- [W3] **MINOR:** ... + +## Questions for Authors +- [Q1] ... + +## Verdict +Overall assessment and confidence score. Would this pass at [venue]? + +## Revision Plan +Prioritized, concrete steps to address each weakness. +``` + +### Part 2: Inline Annotations + +Quote specific passages from the paper and annotate them directly: + +```markdown +## Inline Annotations + +> "We achieve state-of-the-art results on all benchmarks" +**[W1] FATAL:** This claim is unsupported — Table 3 shows the method underperforms on 2 of 5 benchmarks. Revise to accurately reflect results. + +> "Our approach is novel in combining X with Y" +**[W3] MINOR:** Z et al. (2024) combined X with Y in a different domain. Acknowledge this and clarify the distinction. + +> "We use a learning rate of 1e-4" +**[Q1]:** Was this tuned? What range was searched? This matters for reproducibility. +``` + +Reference the weakness/question IDs from Part 1 so annotations link back to the structured review. + +## Operating rules +- Every weakness must reference a specific passage or section in the paper. +- Inline annotations must quote the exact text being critiqued. +- End with a `Sources` section containing direct URLs for anything additionally inspected during review. + +## Output contract +- Save the main artifact to `review.md`. +- The review must contain both the structured review AND inline annotations. diff --git a/website/src/content/docs/agents/verifier.md b/website/src/content/docs/agents/verifier.md new file mode 100644 index 0000000..2ee4b96 --- /dev/null +++ b/website/src/content/docs/agents/verifier.md @@ -0,0 +1,50 @@ +--- +title: Verifier +description: Post-process a draft to add inline citations and verify every source URL. +section: Agents +order: 4 +--- + +## Source + +Generated from `.feynman/agents/verifier.md`. Edit that prompt file, not this docs page. + +## Role + +Post-process a draft to add inline citations and verify every source URL. + +## Tools + +`read`, `bash`, `grep`, `find`, `ls`, `write`, `edit` + +## Default Output + +`cited.md` + +You receive a draft document and the research files it was built from. Your job is to: + +1. **Anchor every factual claim** in the draft to a specific source from the research files. Insert inline citations `[1]`, `[2]`, etc. directly after each claim. +2. **Verify every source URL** — use fetch_content to confirm each URL resolves and contains the claimed content. Flag dead links. +3. **Build the final Sources section** — a numbered list at the end where every number matches at least one inline citation in the body. +4. **Remove unsourced claims** — if a factual claim in the draft cannot be traced to any source in the research files, either find a source for it or remove it. Do not leave unsourced factual claims. + +## Citation rules + +- Every factual claim gets at least one citation: "Transformers achieve 94.2% on MMLU [3]." +- Multiple sources for one claim: "Recent work questions benchmark validity [7, 12]." +- No orphan citations — every `[N]` in the body must appear in Sources. +- No orphan sources — every entry in Sources must be cited at least once. +- Hedged or opinion statements do not need citations. +- When multiple research files use different numbering, merge into a single unified sequence starting from [1]. Deduplicate sources that appear in multiple files. + +## Source verification + +For each source URL: +- **Live:** keep as-is. +- **Dead/404:** search for an alternative URL (archived version, mirror, updated link). If none found, remove the source and all claims that depended solely on it. +- **Redirects to unrelated content:** treat as dead. + +## Output contract +- Save to the output file (default: `cited.md`). +- The output is the complete final document — same structure as the input draft, but with inline citations added throughout and a verified Sources section. +- Do not change the substance or structure of the draft. Only add citations and fix dead sources. diff --git a/website/src/content/docs/agents/writer.md b/website/src/content/docs/agents/writer.md new file mode 100644 index 0000000..0741b93 --- /dev/null +++ b/website/src/content/docs/agents/writer.md @@ -0,0 +1,56 @@ +--- +title: Writer +description: Turn research notes into clear, structured briefs and drafts. +section: Agents +order: 3 +--- + +## Source + +Generated from `.feynman/agents/writer.md`. Edit that prompt file, not this docs page. + +## Role + +Turn research notes into clear, structured briefs and drafts. + +## Tools + +`read`, `bash`, `grep`, `find`, `ls`, `write`, `edit` + +## Default Output + +`draft.md` + +## Integrity commandments +1. **Write only from supplied evidence.** Do not introduce claims, tools, or sources that are not in the input research files. +2. **Preserve caveats and disagreements.** Never smooth away uncertainty. +3. **Be explicit about gaps.** If the research files have unresolved questions or conflicting evidence, surface them — do not paper over them. + +## Output structure + +```markdown +# Title + +## Executive Summary +2-3 paragraph overview of key findings. + +## Section 1: ... +Detailed findings organized by theme or question. + +## Section N: ... +... + +## Open Questions +Unresolved issues, disagreements between sources, gaps in evidence. +``` + +## Operating rules +- Use clean Markdown structure and add equations only when they materially help. +- Keep the narrative readable, but never outrun the evidence. +- Produce artifacts that are ready to review in a browser or PDF preview. +- Do NOT add inline citations — the verifier agent handles that as a separate post-processing step. +- Do NOT add a Sources section — the verifier agent builds that. + +## Output contract +- Save the main artifact to the specified output path (default: `draft.md`). +- Focus on clarity, structure, and evidence traceability. diff --git a/website/src/content/docs/getting-started/configuration.md b/website/src/content/docs/getting-started/configuration.md new file mode 100644 index 0000000..14959ea --- /dev/null +++ b/website/src/content/docs/getting-started/configuration.md @@ -0,0 +1,66 @@ +--- +title: Configuration +description: Configure models, search, and runtime options +section: Getting Started +order: 4 +--- + +## Model + +Set the default model: + +```bash +feynman model set +``` + +Override at runtime: + +```bash +feynman --model anthropic:claude-opus-4-6 +``` + +List available models: + +```bash +feynman model list +``` + +## Thinking level + +Control the reasoning depth: + +```bash +feynman --thinking high +``` + +Levels: `off`, `minimal`, `low`, `medium`, `high`, `xhigh`. + +## Web search + +Check the current search configuration: + +```bash +feynman search status +``` + +For advanced configuration, edit `~/.feynman/web-search.json` directly to set Gemini API keys, Perplexity keys, or a different route. + +## Working directory + +```bash +feynman --cwd /path/to/project +``` + +## Session storage + +```bash +feynman --session-dir /path/to/sessions +``` + +## One-shot mode + +Run a single prompt and exit: + +```bash +feynman --prompt "summarize the key findings of 2401.12345" +``` diff --git a/website/src/content/docs/getting-started/installation.md b/website/src/content/docs/getting-started/installation.md new file mode 100644 index 0000000..58a02b5 --- /dev/null +++ b/website/src/content/docs/getting-started/installation.md @@ -0,0 +1,34 @@ +--- +title: Installation +description: Install Feynman and get started +section: Getting Started +order: 1 +--- + +## Requirements + +- Node.js 20 or later +- npm 9 or later + +## Install + +```bash +npm install -g @companion-ai/feynman +``` + +## Verify + +```bash +feynman --version +``` + +## Local Development + +For contributing or local development: + +```bash +git clone https://github.com/getcompanion-ai/feynman.git +cd feynman +npm install +npm run start +``` diff --git a/website/src/content/docs/getting-started/quickstart.md b/website/src/content/docs/getting-started/quickstart.md new file mode 100644 index 0000000..5b0dd82 --- /dev/null +++ b/website/src/content/docs/getting-started/quickstart.md @@ -0,0 +1,44 @@ +--- +title: Quick Start +description: Get up and running with Feynman in 60 seconds +section: Getting Started +order: 2 +--- + +## First run + +```bash +feynman setup +feynman +``` + +`feynman setup` walks you through model authentication, alphaXiv login, web search configuration, and preview dependencies. + +## Ask naturally + +Feynman routes your questions into the right workflow automatically. You don't need slash commands to get started. + +``` +> What are the main approaches to RLHF alignment? +``` + +Feynman will search papers, gather web sources, and produce a structured answer with citations. + +## Use workflows directly + +For explicit control, use slash commands inside the REPL: + +``` +> /deepresearch transformer scaling laws +> /lit multimodal reasoning benchmarks +> /review paper.pdf +``` + +## Output locations + +Feynman writes durable artifacts to canonical directories: + +- `outputs/` — Reviews, reading lists, summaries +- `papers/` — Polished paper-style drafts +- `experiments/` — Runnable code and result logs +- `notes/` — Scratch notes and session logs diff --git a/website/src/content/docs/getting-started/setup.md b/website/src/content/docs/getting-started/setup.md new file mode 100644 index 0000000..e1e128c --- /dev/null +++ b/website/src/content/docs/getting-started/setup.md @@ -0,0 +1,66 @@ +--- +title: Setup +description: Detailed setup guide for Feynman +section: Getting Started +order: 3 +--- + +## Guided setup + +```bash +feynman setup +``` + +This walks through four steps: + +### Model provider authentication + +Feynman uses Pi's OAuth system for model access. The setup wizard prompts you to log in to your preferred provider. + +```bash +feynman model login +``` + +### AlphaXiv login + +AlphaXiv powers Feynman's paper search and analysis tools. Sign in with: + +```bash +feynman alpha login +``` + +Check status anytime: + +```bash +feynman alpha status +``` + +### Web search routing + +Feynman supports three web search backends: + +- **auto** — Prefer Perplexity when configured, fall back to Gemini +- **perplexity** — Force Perplexity Sonar +- **gemini** — Force Gemini (default, zero-config via signed-in Chromium) + +The default path requires no API keys — it uses Gemini Browser via your signed-in Chromium profile. + +### Preview dependencies + +For PDF and HTML export of generated artifacts, Feynman needs `pandoc`: + +```bash +feynman --setup-preview +``` + +This installs pandoc automatically on macOS/Homebrew systems. + +## Diagnostics + +Run the doctor to check everything: + +```bash +feynman doctor +``` + +This verifies model auth, alphaXiv credentials, preview dependencies, and the Pi runtime. diff --git a/website/src/content/docs/reference/cli-commands.md b/website/src/content/docs/reference/cli-commands.md new file mode 100644 index 0000000..f69617e --- /dev/null +++ b/website/src/content/docs/reference/cli-commands.md @@ -0,0 +1,61 @@ +--- +title: CLI Commands +description: Complete reference for Feynman CLI commands +section: Reference +order: 1 +--- + +This page covers the dedicated Feynman CLI commands and compatibility flags. + +Workflow prompt templates such as `/deepresearch` also run directly from the shell as `feynman ...`. Those workflow entries live in the slash-command reference instead of being duplicated here. + +## Core + +| Command | Description | +| --- | --- | +| `feynman` | Launch the interactive REPL. | +| `feynman chat [prompt]` | Start chat explicitly, optionally with an initial prompt. | +| `feynman help` | Show CLI help. | +| `feynman setup` | Run the guided setup wizard. | +| `feynman doctor` | Diagnose config, auth, Pi runtime, and preview dependencies. | +| `feynman status` | Show the current setup summary. | + +## Model Management + +| Command | Description | +| --- | --- | +| `feynman model list` | List available models in Pi auth storage. | +| `feynman model login [id]` | Login to a Pi OAuth model provider. | +| `feynman model logout [id]` | Logout from a Pi OAuth model provider. | +| `feynman model set ` | Set the default model. | + +## AlphaXiv + +| Command | Description | +| --- | --- | +| `feynman alpha login` | Sign in to alphaXiv. | +| `feynman alpha logout` | Clear alphaXiv auth. | +| `feynman alpha status` | Check alphaXiv auth status. | + +## Utilities + +| Command | Description | +| --- | --- | +| `feynman search status` | Show Pi web-access status and config path. | +| `feynman update [package]` | Update installed packages, or a specific package. | + +## Flags + +| Flag | Description | +| --- | --- | +| `--prompt ""` | Run one prompt and exit. | +| `--alpha-login` | Sign in to alphaXiv and exit. | +| `--alpha-logout` | Clear alphaXiv auth and exit. | +| `--alpha-status` | Show alphaXiv auth status and exit. | +| `--model ` | Force a specific model. | +| `--thinking ` | Set thinking level: off | minimal | low | medium | high | xhigh. | +| `--cwd ` | Set the working directory for tools. | +| `--session-dir ` | Set the session storage directory. | +| `--new-session` | Start a new persisted session. | +| `--doctor` | Alias for `feynman doctor`. | +| `--setup-preview` | Alias for `feynman setup preview`. | diff --git a/website/src/content/docs/reference/package-stack.md b/website/src/content/docs/reference/package-stack.md new file mode 100644 index 0000000..6cde10e --- /dev/null +++ b/website/src/content/docs/reference/package-stack.md @@ -0,0 +1,25 @@ +--- +title: Package Stack +description: Curated Pi packages bundled with Feynman +section: Reference +order: 3 +--- + +Curated Pi packages bundled with Feynman. The runtime package list lives in `.feynman/settings.json`. + +| Package | Purpose | +|---------|---------| +| `pi-subagents` | Parallel literature gathering and decomposition. | +| `pi-btw` | Fast side-thread `/btw` conversations without interrupting the main run. | +| `pi-docparser` | PDFs, Office docs, spreadsheets, and images. | +| `pi-web-access` | Web, GitHub, PDF, and media access. | +| `pi-markdown-preview` | Polished Markdown and LaTeX-heavy research writeups. | +| `@walterra/pi-charts` | Charts and quantitative visualizations. | +| `pi-generative-ui` | Interactive HTML-style widgets. | +| `pi-mermaid` | Diagrams in the TUI. | +| `@aliou/pi-processes` | Long-running experiments and log tails. | +| `pi-zotero` | Citation-library workflows. | +| `@kaiserlich-dev/pi-session-search` | Indexed session recall and summarize/resume UI. | +| `pi-schedule-prompt` | Recurring and deferred research jobs. | +| `@samfp/pi-memory` | Automatic preference and correction memory across sessions. | +| `@tmustier/pi-ralph-wiggum` | Long-running agent loops for iterative development. | diff --git a/website/src/content/docs/reference/slash-commands.md b/website/src/content/docs/reference/slash-commands.md new file mode 100644 index 0000000..5e66f59 --- /dev/null +++ b/website/src/content/docs/reference/slash-commands.md @@ -0,0 +1,41 @@ +--- +title: Slash Commands +description: Repo-owned REPL slash commands +section: Reference +order: 2 +--- + +This page documents the slash commands that Feynman owns in this repository: prompt templates from `prompts/` and extension commands from `extensions/research-tools/`. + +Additional slash commands can appear at runtime from Pi core and bundled packages such as subagents, preview, session search, and scheduling. Use `/help` inside the REPL for the live command list instead of relying on a static copy of package-provided commands. + +## Research Workflows + +| Command | Description | +| --- | --- | +| `/deepresearch ` | Run a thorough, source-heavy investigation on a topic and produce a durable research brief with inline citations. | +| `/lit ` | Run a literature review on a topic using paper search and primary-source synthesis. | +| `/review ` | Simulate an AI research peer review with likely objections, severity, and a concrete revision plan. | +| `/audit ` | Compare a paper's claims against its public codebase and identify mismatches, omissions, and reproducibility risks. | +| `/replicate ` | Plan or execute a replication workflow for a paper, claim, or benchmark. | +| `/compare ` | Compare multiple sources on a topic and produce a source-grounded matrix of agreements, disagreements, and confidence. | +| `/draft ` | Turn research findings into a polished paper-style draft with equations, sections, and explicit claims. | +| `/autoresearch ` | Autonomous experiment loop — try ideas, measure results, keep what works, discard what doesn't, repeat. | +| `/watch ` | Set up a recurring or deferred research watch on a topic, company, paper area, or product surface. | + +## Project & Session + +| Command | Description | +| --- | --- | +| `/log` | Write a durable session log with completed work, findings, open questions, and next steps. | +| `/jobs` | Inspect active background research work, including running processes and scheduled follow-ups. | +| `/help` | Show grouped Feynman commands and prefill the editor with a selected command. | +| `/init` | Bootstrap AGENTS.md and session-log folders for a research project. | + +## Setup + +| Command | Description | +| --- | --- | +| `/alpha-login` | Sign in to alphaXiv from inside Feynman. | +| `/alpha-status` | Show alphaXiv authentication status. | +| `/alpha-logout` | Clear alphaXiv auth from inside Feynman. | diff --git a/website/src/content/docs/tools/alphaxiv.md b/website/src/content/docs/tools/alphaxiv.md new file mode 100644 index 0000000..b590227 --- /dev/null +++ b/website/src/content/docs/tools/alphaxiv.md @@ -0,0 +1,40 @@ +--- +title: AlphaXiv +description: Paper search and analysis tools +section: Tools +order: 1 +--- + +## Overview + +AlphaXiv powers Feynman's academic paper workflows. All tools require an alphaXiv account — sign in with `feynman alpha login`. + +## Tools + +### alpha_search + +Paper discovery with three search modes: + +- **semantic** — Meaning-based search across paper content +- **keyword** — Traditional keyword matching +- **agentic** — AI-powered search that interprets your intent + +### alpha_get_paper + +Fetch a paper's report (structured summary) or full raw text by arXiv ID. + +### alpha_ask_paper + +Ask a targeted question about a specific paper. Returns an answer grounded in the paper's content. + +### alpha_annotate_paper + +Add persistent local notes to a paper. Annotations are stored locally and persist across sessions. + +### alpha_list_annotations + +Recall all annotations across papers and sessions. + +### alpha_read_code + +Read source code from a paper's linked GitHub repository. Useful for auditing or replication planning. diff --git a/website/src/content/docs/tools/preview.md b/website/src/content/docs/tools/preview.md new file mode 100644 index 0000000..e9db9a8 --- /dev/null +++ b/website/src/content/docs/tools/preview.md @@ -0,0 +1,34 @@ +--- +title: Preview +description: Preview generated artifacts in browser or PDF +section: Tools +order: 4 +--- + +## Overview + +The `preview_file` tool opens generated artifacts in your browser or PDF viewer. + +## Usage + +Inside the REPL: + +``` +/preview +``` + +Or Feynman will suggest previewing when you generate artifacts that benefit from rendered output (Markdown with LaTeX, HTML reports, etc.). + +## Requirements + +Preview requires `pandoc` for PDF/HTML rendering. Install it with: + +```bash +feynman --setup-preview +``` + +## Supported formats + +- Markdown (with LaTeX math rendering) +- HTML +- PDF diff --git a/website/src/content/docs/tools/session-search.md b/website/src/content/docs/tools/session-search.md new file mode 100644 index 0000000..2a18a5c --- /dev/null +++ b/website/src/content/docs/tools/session-search.md @@ -0,0 +1,26 @@ +--- +title: Session Search +description: Search prior Feynman session transcripts +section: Tools +order: 3 +--- + +## Overview + +The `session_search` tool recovers prior Feynman work from stored session transcripts. Useful for picking up previous research threads or finding past findings. + +## Usage + +Inside the REPL: + +``` +/search +``` + +Or use the tool directly — Feynman will invoke `session_search` automatically when you reference prior work. + +## What it searches + +- Full session transcripts +- Tool outputs and agent results +- Generated artifacts and their content diff --git a/website/src/content/docs/tools/web-search.md b/website/src/content/docs/tools/web-search.md new file mode 100644 index 0000000..fe33b1d --- /dev/null +++ b/website/src/content/docs/tools/web-search.md @@ -0,0 +1,34 @@ +--- +title: Web Search +description: Web search routing and configuration +section: Tools +order: 2 +--- + +## Routing modes + +Feynman supports three web search backends: + +| Mode | Description | +|------|-------------| +| `auto` | Prefer Perplexity when configured, fall back to Gemini | +| `perplexity` | Force Perplexity Sonar | +| `gemini` | Force Gemini (default) | + +## Default behavior + +The default path is zero-config Gemini Browser via a signed-in Chromium profile. No API keys required. + +## Check current config + +```bash +feynman search status +``` + +## Advanced configuration + +Edit `~/.feynman/web-search.json` directly to set: + +- Gemini API keys +- Perplexity API keys +- Custom routing preferences diff --git a/website/src/content/docs/workflows/audit.md b/website/src/content/docs/workflows/audit.md new file mode 100644 index 0000000..364ec19 --- /dev/null +++ b/website/src/content/docs/workflows/audit.md @@ -0,0 +1,39 @@ +--- +title: Code Audit +description: Compare paper claims against public codebases +section: Workflows +order: 4 +--- + +## Usage + +``` +/audit +``` + +## What it does + +Compares claims made in a paper against its public codebase. Surfaces mismatches, missing experiments, and reproducibility risks. + +## What it checks + +- Do the reported hyperparameters match the code? +- Are all claimed experiments present in the repository? +- Does the training loop match the described methodology? +- Are there undocumented preprocessing steps? +- Do evaluation metrics match the paper's claims? + +## Example + +``` +/audit 2401.12345 +``` + +## Output + +An audit report with: + +- Claim-by-claim verification +- Identified mismatches +- Missing components +- Reproducibility risk assessment diff --git a/website/src/content/docs/workflows/autoresearch.md b/website/src/content/docs/workflows/autoresearch.md new file mode 100644 index 0000000..57684fc --- /dev/null +++ b/website/src/content/docs/workflows/autoresearch.md @@ -0,0 +1,44 @@ +--- +title: Autoresearch +description: Autonomous experiment optimization loop +section: Workflows +order: 8 +--- + +## Usage + +``` +/autoresearch +``` + +## What it does + +Runs an autonomous experiment loop: + +1. **Edit** — Modify code or configuration +2. **Commit** — Save the change +3. **Benchmark** — Run evaluation +4. **Evaluate** — Compare against baseline +5. **Keep or revert** — Persist improvements, roll back regressions +6. **Repeat** — Continue until the target is hit + +## Tracking + +Metrics are tracked in: + +- `autoresearch.md` — Human-readable progress log +- `autoresearch.jsonl` — Machine-readable metrics over time + +## Controls + +``` +/autoresearch # start or resume +/autoresearch off # stop, keep data +/autoresearch clear # delete all state, start fresh +``` + +## Example + +``` +/autoresearch optimize the learning rate schedule for better convergence +``` diff --git a/website/src/content/docs/workflows/compare.md b/website/src/content/docs/workflows/compare.md new file mode 100644 index 0000000..b025781 --- /dev/null +++ b/website/src/content/docs/workflows/compare.md @@ -0,0 +1,29 @@ +--- +title: Source Comparison +description: Compare multiple sources with agreement/disagreement matrix +section: Workflows +order: 6 +--- + +## Usage + +``` +/compare +``` + +## What it does + +Compares multiple sources on a topic. Builds an agreement/disagreement matrix showing where sources align and where they conflict. + +## Example + +``` +/compare approaches to constitutional AI training +``` + +## Output + +- Source-by-source breakdown +- Agreement/disagreement matrix +- Synthesis of key differences +- Assessment of which positions have stronger evidence diff --git a/website/src/content/docs/workflows/deep-research.md b/website/src/content/docs/workflows/deep-research.md new file mode 100644 index 0000000..8333ba4 --- /dev/null +++ b/website/src/content/docs/workflows/deep-research.md @@ -0,0 +1,40 @@ +--- +title: Deep Research +description: Thorough source-heavy investigation with parallel agents +section: Workflows +order: 1 +--- + +## Usage + +``` +/deepresearch +``` + +## What it does + +Deep research runs a thorough, source-heavy investigation. It plans the research scope, delegates to parallel researcher agents, synthesizes findings, and adds inline citations. + +The workflow follows these steps: + +1. **Plan** — Clarify the research question and identify search strategy +2. **Delegate** — Spawn parallel researcher agents to gather evidence from different source types (papers, web, repos) +3. **Synthesize** — Merge findings, resolve contradictions, identify gaps +4. **Cite** — Add inline citations and verify all source URLs +5. **Deliver** — Write a durable research brief to `outputs/` + +## Example + +``` +/deepresearch transformer scaling laws and their implications for compute-optimal training +``` + +## Output + +Produces a structured research brief with: + +- Executive summary +- Key findings organized by theme +- Evidence tables with source links +- Open questions and suggested next steps +- Numbered sources section with direct URLs diff --git a/website/src/content/docs/workflows/draft.md b/website/src/content/docs/workflows/draft.md new file mode 100644 index 0000000..d38d1ae --- /dev/null +++ b/website/src/content/docs/workflows/draft.md @@ -0,0 +1,37 @@ +--- +title: Draft Writing +description: Paper-style draft generation from research findings +section: Workflows +order: 7 +--- + +## Usage + +``` +/draft +``` + +## What it does + +Produces a paper-style draft with structured sections. Writes to `papers/`. + +## Structure + +The generated draft includes: + +- Title +- Abstract +- Introduction / Background +- Method or Approach +- Evidence and Analysis +- Limitations +- Conclusion +- Sources + +## Example + +``` +/draft survey of differentiable physics simulators +``` + +The writer agent works only from supplied evidence — it never fabricates content. If evidence is insufficient, it explicitly notes the gaps. diff --git a/website/src/content/docs/workflows/literature-review.md b/website/src/content/docs/workflows/literature-review.md new file mode 100644 index 0000000..451959d --- /dev/null +++ b/website/src/content/docs/workflows/literature-review.md @@ -0,0 +1,31 @@ +--- +title: Literature Review +description: Map consensus, disagreements, and open questions +section: Workflows +order: 2 +--- + +## Usage + +``` +/lit +``` + +## What it does + +Runs a structured literature review that searches across academic papers and web sources. Explicitly separates consensus findings from disagreements and open questions. + +## Example + +``` +/lit multimodal reasoning benchmarks for large language models +``` + +## Output + +A structured review covering: + +- **Consensus** — What the field agrees on +- **Disagreements** — Where sources conflict +- **Open questions** — What remains unresolved +- **Sources** — Direct links to all referenced papers and articles diff --git a/website/src/content/docs/workflows/replication.md b/website/src/content/docs/workflows/replication.md new file mode 100644 index 0000000..e932f11 --- /dev/null +++ b/website/src/content/docs/workflows/replication.md @@ -0,0 +1,42 @@ +--- +title: Replication +description: Plan replications of papers and claims +section: Workflows +order: 5 +--- + +## Usage + +``` +/replicate +``` + +## What it does + +Extracts key implementation details from a paper, identifies what's needed to replicate the results, and asks where to run before executing anything. + +Before running code, Feynman asks you to choose an execution environment: + +- **Local** — run in the current working directory +- **Virtual environment** — create an isolated venv/conda env first +- **Cloud** — delegate to a remote Agent Computer machine +- **Plan only** — produce the replication plan without executing + +## Example + +``` +/replicate "chain-of-thought prompting improves math reasoning" +``` + +## Output + +A replication plan covering: + +- Key claims to verify +- Required resources (compute, data, models) +- Implementation details extracted from the paper +- Potential pitfalls and underspecified details +- Step-by-step replication procedure +- Success criteria + +If an execution environment is selected, also produces runnable scripts and captured results. diff --git a/website/src/content/docs/workflows/review.md b/website/src/content/docs/workflows/review.md new file mode 100644 index 0000000..cecf4af --- /dev/null +++ b/website/src/content/docs/workflows/review.md @@ -0,0 +1,49 @@ +--- +title: Peer Review +description: Simulated peer review with severity-graded feedback +section: Workflows +order: 3 +--- + +## Usage + +``` +/review +``` + +## What it does + +Simulates a tough-but-fair peer review for AI research artifacts. Evaluates novelty, empirical rigor, baselines, ablations, and reproducibility. + +The reviewer agent identifies: + +- Weak baselines +- Missing ablations +- Evaluation mismatches +- Benchmark leakage +- Under-specified implementation details + +## Severity levels + +Feedback is graded by severity: + +- **FATAL** — Fundamental issues that invalidate the claims +- **MAJOR** — Significant problems that need addressing +- **MINOR** — Small improvements or clarifications + +## Example + +``` +/review outputs/scaling-laws-brief.md +``` + +## Output + +Structured review with: + +- Summary of the work +- Strengths +- Weaknesses (severity-graded) +- Questions for the authors +- Verdict (accept / revise / reject) +- Revision plan diff --git a/website/src/content/docs/workflows/watch.md b/website/src/content/docs/workflows/watch.md new file mode 100644 index 0000000..3b78546 --- /dev/null +++ b/website/src/content/docs/workflows/watch.md @@ -0,0 +1,29 @@ +--- +title: Watch +description: Recurring research monitoring +section: Workflows +order: 9 +--- + +## Usage + +``` +/watch +``` + +## What it does + +Schedules a recurring research watch. Sets a baseline of current knowledge and defines what constitutes a meaningful change worth reporting. + +## Example + +``` +/watch new papers on test-time compute scaling +``` + +## How it works + +1. Feynman establishes a baseline by surveying current sources +2. Defines change signals (new papers, updated results, new repos) +3. Schedules periodic checks via `pi-schedule-prompt` +4. Reports only when meaningful changes are detected diff --git a/website/src/layouts/Base.astro b/website/src/layouts/Base.astro new file mode 100644 index 0000000..6adf47f --- /dev/null +++ b/website/src/layouts/Base.astro @@ -0,0 +1,55 @@ +--- +import { ViewTransitions } from 'astro:transitions'; +import Nav from '../components/Nav.astro'; +import Footer from '../components/Footer.astro'; +import '../styles/global.css'; + +interface Props { + title: string; + description?: string; + active?: 'home' | 'docs'; +} + +const { title, description = 'Research-first AI agent', active = 'home' } = Astro.props; +--- + + + + + + + + {title} + + + + + +